diff options
Diffstat (limited to 'minilibx_beta')
22 files changed, 0 insertions, 6972 deletions
diff --git a/minilibx_beta/Makefile b/minilibx_beta/Makefile deleted file mode 100644 index 39c36f4..0000000 --- a/minilibx_beta/Makefile +++ /dev/null @@ -1,34 +0,0 @@ - - - -MODULE_SRC= mlx_image.swift mlx_window.swift mlx_init.swift -MODULE_OBJ=$(MODULE_SRC:.swift=.swiftmodule) - -SRC= interface.swift $(MODULE_SRC) -OBJ=$(SRC:.swift=.o) - -C_SRC= mlx_xpm.c mlx_png.c mlx_string_put.c -C_OBJ=$(C_SRC:.c=.o) -CFLAGS=-O3 - -NAME=libmlx.dylib - -INC=-I. -#OPTI=-Ounchecked - -all: $(NAME) - -$(NAME): $(MODULE_OBJ) $(OBJ) $(C_OBJ) - swiftc $(OPTI) $(INC) -o $(NAME) -emit-library $(OBJ) $(C_OBJ) -lz - - - -%.o: %.swift - swiftc $(OPTI) $(INC) -parse-as-library -c $< -o $@ - -%.swiftmodule: %.swift - swiftc $(OPTI) $(INC) -parse-as-library -c $< -o $@ -emit-module -module-name $(patsubst %.swift,%,$<) -module-link-name $(patsubst %.swift,%,$<) - -clean: - rm -f $(NAME) $(OBJ) $(MODULE_OBJ) $(C_OBJ) *.swiftdoc *~ - diff --git a/minilibx_beta/font.c b/minilibx_beta/font.c deleted file mode 100644 index d4c48cc..0000000 --- a/minilibx_beta/font.c +++ /dev/null @@ -1,3526 +0,0 @@ -/* GIMP RGBA C-Source image dump (font.c) */ - -static const struct { - unsigned int width; - unsigned int height; - unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ - unsigned char pixel_data[1140 * 20 * 4 + 1]; -} font_atlas = { - 1140, 20, 4, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\214\377\377\377\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - ")\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\216\377\377\377\263\377\377\377\013\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377b\377\377\377V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\270\377\377" - "\377u\377\377\377\013\377\377\377\252\377\377\377\255\377\377\377\013\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\374\377\377" - "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377e\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\234\377\377\377" - "\267\377\377\377B\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\343\377" - "\377\377\375\377\377\377M\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\013\377\377\377\355\377\377\377\367\377\377\377\070\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\373\377\377\377\243\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377b\377\377\377\237\377\377\377\233\377\377\377Z\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377b\377\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377)\377\377\377e\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377U\377\377" - "\377c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377b\377\377\377c\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377S\377\377\377c\377\377\377\065\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\213\377\377\377\363\377\377\377\364\377\377\377\364\377\377\377\372\377" - "\377\377\225\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "u\377\377\377\371\377\377\377\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377" - "\377\372\377\377\377\364\377\377\377\364\377\377\377\363\377\377\377\224" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377U\377\377\377e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\376\377\377\377" - "s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377\377\372" - "\377\377\377\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\367\377\377" - "\377\315\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377" - "\340\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\214\377\377\377\372\377\377\377\\\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377s\377\377\377\366\377\377\377\342\377\377\377" - "%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377" - "\372\377\377\377\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\306\377\377\377\374\377" - "\377\377\370\377\377\377\370\377\377\377\304\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377" - "\377\317\377\377\377\357\377\377\377\373\377\377\377\225\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\320" - "\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\215\377\377\377\372\377\377\377\363\377" - "\377\377\333\377\377\377m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377\001\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\013\377\377\377\364\377\377\377\366\377\377\377%\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377" - "\377\361\377\377\377\377\377\377\377\254\377\377\377=\377\377\377\375\377" - "\377\377\372\377\377\377)\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\363\377\377\377%\377\377\377" - "\224\377\377\377\363\377\377\377%\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\062\377\377\377\336\377\377\377\375\377" - "\377\377x\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\262\377\377\377\372\377\377\377\370\377\377\377\246\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377=\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\377\377\377~\377\377\377\374\377\377\377\377\377\377" - "\377\376\377\377\377\224\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377V\377\377\377\375\377\377\377" - "\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\325\377\377\377\377" - "\377\377\377\271\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\355\377\377\377\033\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377v\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377" - "\315\377\377\377\367\377\377\377\373\377\377\377\334\377\377\377B\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377`\377\377\377\300\377\377\377\342\377\377\377Z\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\224\377\377" - "\377\347\377\377\377\373\377\377\377\364\377\377\377\312\377\377\377)\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - "\226\377\377\377\346\377\377\377\370\377\377\377\360\377\377\377\327\377" - "\377\377b\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377\377\377\343\377\377\377\273" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377" - "\377\377\315\377\377\377\337\377\377\377\333\377\377\377\333\377\377\377" - "\333\377\377\377\343\377\377\377\223\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\346\377\377\377" - "\370\377\377\377\364\377\377\377\320\377\377\377O\000\000\000\000\377\377\377\377" - "\377\377\377\377\377\377\377\013\377\377\377\315\377\377\377\337\377\377\377" - "\333\377\377\377\333\377\377\377\333\377\377\377\333\377\377\377\333\377" - "\377\377\323\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\377\377\377\062\377\377\377\316\377\377\377\366\377\377\377\373\377\377" - "\377\344\377\377\377\200\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377u\377\377\377\342\377\377\377\370\377\377\377" - "\364\377\377\377\305\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377)\377\377\377\065\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\371\371\377.\377\377\377V\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\013\377\377\377\321\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\271\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377Q\377" - "\377\377\273\377\377\377\332\377\377\377\322\377\377\377\206\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\070\377\377\377\367\377\377\377\376\377\377\377s\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\374\377\377\377\360\377\377" - "\377\253\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\377\377\377\013\377\377\377\304\377\377\377\375\377\377\377\377\377\377\377" - "\377\377\377\377\373\377\377\377\247\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\374\377\377\377\324\377\377\377B\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\346\377\377\377\013\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\013\377\377\377\352\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377\333\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\361\377\377\377\202\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\307\377\377\377" - "\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\352\377\377" - "\377\364\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377" - "\377\377\377\377\377\377\377\377\377\377\303\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\225" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377" - "\377\377\377\377\377\225\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\356\377" - "\377\377\376\377\377\377v\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\013\377\377\377\352\377\377\377\364\377\377\377%\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\307\377\377\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377u\377\377" - "\377\375\377\377\377\321\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\307\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\377\377" - "\377\013\377\377\377\355\377\377\377\330\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\366\377\377\377\377\377" - "\377\377\377\377\377\377\373\377\377\377\246\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\370\377\377\377\324\377" - "\377\377B\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377" - "\377\206\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\373" - "\377\377\377\240\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\364\377\377\377\312\377\377\377\033\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\204\377\377\377\365\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\342\377\377\377" - "V\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\252\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\307\377\377\377\376\377\377\377i\000\000" - "\000\000\000\000\000\000\377\377\377\013\377\377\377\352\377\377\377\364\377\377\377%" - "\377\377\377\377\377\377\377\377\377\377\377}\377\377\377\376\377\377\377" - "\332\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\262\377\377\377\377\377" - "\377\377\216\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377" - "\372\377\377\377=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377\355\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\013\377" - "\377\377\345\377\377\377\376\377\377\377~\000\000\000\000\000\000\000\000\377\377\377\070" - "\377\377\377\367\377\377\377\360\377\377\377\033\377\377\377\377\377\377\377" - "\377\377\377\377\206\377\377\377\377\377\377\377\332\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\234\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\361\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\312\377\377\377\255" - "\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377;\377\377\377\373\377\377\377\347\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377`\377\377\377\266\377\377\377\263\377\377\377\256\377\377\377\373\377" - "\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\371\377\377\377\376\377\377" - "\377_\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377" - "\377\374\377\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\224\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377K\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\334\377\377\377\377\377\377\377\346\377\377\377\272\377" - "\377\377\342\377\377\377\276\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377" - "\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\215\377\377" - "\377\377\377\377\377\377\377\377\377l\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377" - "\377\377\377\377\377\377\377\377l\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377K\377\377\377\375\377\377\377\254\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\247\377\377\377\343\377\377\377\340\377\377\377\377\377" - "\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\262\377\377\377=\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\377\377" - "\377\377\325\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371" - "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377`\377\377\377\263\377\377\377\307\377\377\377\376\377\377" - "\377\363\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\000\377\377\377\000\377\377\377\000\377\377\377\001\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\013\377\377\377\351\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\356\377" - "\377\377\377\377\377\377\243\377\377\377;\377\377\377\374\377\377\377\364" - "\377\377\377%\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\313\377\377\377\355\000\000\000\000\377\377\377\320\377\377\377" - "\346\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377\247\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\352\377\377\377S\000\000\000\000\377\377\377\377\377\377\377\377" - "\377\377\377}\377\377\377\377\377\377\377\326\377\377\377\334\377\377\377" - "\376\377\377\377l\000\000\000\000\377\377\377}\377\377\377\377\377\377\377\323\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\354\377\377" - "\377\364\377\377\377\226\377\377\377\373\377\377\377\337\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\033\377\377\377\362\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\232\377\377\377\377\377\377\377\336\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\302\377" - "\377\377\377\377\377\377\277\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377|\377\377" - "\377\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377_\377\377\377\232\377\377\377" - "\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377!\377\377\377\371\377\377\377\352\377\377\377\013\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\345\377\377" - "\377\377\377\377\377\365\377\377\377\353\377\377\377\377\377\377\377\367" - "\377\377\377\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377\313\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377" - "l\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\314\377\377\377\377\377\377\377\376\377\377\377\335\377\377\377\371" - "\377\377\377\377\377\377\377\352\377\377\377\033\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\302\377\377\377\377\377\377\377\377\377" - "\377\377\342\377\377\377\362\377\377\377\377\377\377\377\375\377\377\377" - "\\\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377U\377\377\377\374\377\377\377\377\377\377\377\333\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377" - "\361\377\377\377\377\377\377\377\373\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\251\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\377\377\377\247\377\377\377\377\377\377\377\377\377\377\377" - "\360\377\377\377\373\377\377\377\377\377\377\377\360\377\377\377\033\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\332\377\377\377\377\377\377" - "\377\376\377\377\377\374\377\377\377\374\377\377\377\376\377\377\377\377" - "\377\377\377\367\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\025\377\377\377\356\377\377\377\377\377\377\377\351\377\377\377\350" - "\377\377\377\376\377\377\377\376\377\377\377s\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377|\377\377\377\376\377\377\377\377\377\377" - "\377\345\377\377\377\356\377\377\377\377\377\377\377\355\377\377\377%\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\374\377\377\377\254\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377V\377\377\377\375\377\377\377\241\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\070\377\377\377\372\377\377\377\343\377\377\377u\377\377\377\217" - "\377\377\377\374\377\377\377\375\377\377\377M\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\377\377\377\233\377\377\377\376\377\377\377" - "\377\377\377\377\354\377\377\377\375\377\377\377\377\377\377\377\257\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\232\377\377\377\377\377\377\377\377\377\377\377\277\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377" - "\377\377\377\377\342\377\377\377\304\377\377\377\332\377\377\377\376\377" - "\377\377\377\377\377\377\227\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\377\377\377\331\377\377\377\377\377\377\377\373\377\377\377" - "\306\377\377\377\307\377\377\377\375\377\377\377\376\377\377\377Q\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\377\377\377" - "\377\330\377\377\377\310\377\377\377\370\377\377\377\377\377\377\377\375" - "\377\377\377f\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "K\377\377\377\374\377\377\377\376\377\377\377\323\377\377\377\327\377\377" - "\377\327\377\377\377\327\377\377\377\316\377\377\377\033\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377\376\377\377" - "\377\324\377\377\377\327\377\377\377\327\377\377\377\327\377\377\377\312" - "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\033\377" - "\377\377\362\377\377\377\377\377\377\377\365\377\377\377\277\377\377\377" - "\321\377\377\377\377\377\377\377\366\377\377\377\033\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000" - "\000\000\377\377\377\013\377\377\377\356\377\377\377\366\377\377\377%\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377}\377\377\377\332\377\377\377" - "\323\377\377\377\371\377\377\377\377\377\377\377\331\377\377\377\327\377" - "\377\377\266\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\013\377\377\377\302\377\377\377\323\377\377\377\322\377\377\377\322\377\377" - "\377\342\377\377\377\377\377\377\377\252\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000" - "\000\000\000\000\377\377\377\335\377\377\377\377\377\377\377\315\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377" - "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\377\377\377\377\336" - "\000\000\000\000\000\000\000\000\377\377\377\275\377\377\377\377\377\377\377\330\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312\377\377\377\377" - "\377\377\377\364\377\377\377%\000\000\000\000\377\377\377\013\377\377\377\361\377" - "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "j\377\377\377\375\377\377\377\377\377\377\377\325\377\377\377\313\377\377" - "\377\376\377\377\377\377\377\377\377\225\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\342\377\377" - "\377\310\377\377\377\322\377\377\377\366\377\377\377\377\377\377\377\355" - "\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377j\377" - "\377\377\375\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377" - "\376\377\377\377\377\377\377\377\216\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377" - "\310\377\377\377\322\377\377\377\371\377\377\377\377\377\377\377\336\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374" - "\377\377\377\377\377\377\377\330\377\377\377\271\377\377\377\351\377\377" - "\377\377\377\377\377\334\000\000\000\000\377\377\377\377\377\377\377\377\377\377" - "\377}\377\377\377\332\377\377\377\327\377\377\377\323\377\377\377\371\377" - "\377\377\377\377\377\377\331\377\377\377\326\377\377\377\332\377\377\377" - "p\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376" - "\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377" - "\366\377\377\377%\377\377\377\377\377\377\377\377\377\377\377\033\377\377" - "\377\365\377\377\377\375\377\377\377\070\000\000\000\000\000\000\000\000\377\377\377\013\377" - "\377\377\345\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377" - "\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\013\377\377\377\361\377\377\377\347\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\214\377\377\377\377\377\377\377\343\000\000\000\000" - "\000\000\000\000\377\377\377\261\377\377\377\377\377\377\377\272\000\000\000\000\377\377" - "\377\377\377\377\377\377\377\377\377\013\377\377\377\351\377\377\377\376\377" - "\377\377i\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\366\377\377\377\372" - "\377\377\377\070\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377v\377" - "\377\377\327\377\377\377\322\377\377\377\322\377\377\377\316\377\377\377" - "\351\377\377\377\377\377\377\377\360\377\377\377\033\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377" - "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\377\377\377\320\377\377\377\376\377\377\377_\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\224\377\377\377\377\377\377\377\377\377\377\377\272\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\233\377\377\377" - "\371\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377" - "\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374" - "\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\377\377\377" - "\373\377\377\377\356\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377S\377\377\377\314\377\377\377\271\377\377\377\013\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377S\377\377\377\314\377\377\377\271\377\377\377\013\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\375" - "\377\377\377\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\360" - "\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\247\377\377\377\377\377\377\377l\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377" - "\377\337\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377" - "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\372\377\377\377)\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377" - "\000\377\377\377\003\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377" - "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\377\377\377\331\377\377\377\376\377\377\377i\377\377\377K\377\377\377" - "\374\377\377\377\366\377\377\377)\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\316\377\377\377\333\000\000\000\000\377\377" - "\377\316\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\070\377\377\377\372\377\377\377\377\377\377\377\307\377" - "\377\377\237\377\377\377\364\377\377\377\377\377\377\377\244\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377\232\377\377\377\375\377\377\377" - "\062\377\377\377=\377\377\377\375\377\377\377\254\377\377\377!\377\377\377" - "\371\377\377\377\367\377\377\377\070\377\377\377\377\377\377\377\377\000\000\000" - "\000\377\377\377;\377\377\377\372\377\377\377\346\377\377\377\013\377\377\377" - "\371\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\375" - "\377\377\377\\\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\376\377" - "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\372\377\377\377\375\377\377\377" - "\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\327\377\377\377\343\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\320\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377" - "\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\204\377\377\377\377\377\377\377\353\377\377\377\013\000\000\000" - "\000\377\377\377\320\377\377\377\377\377\377\377\260\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\205\377\377\377\322\377\377" - "\377\353\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\325\377\377\377\375\377\377\377" - "M\000\000\000\000\377\377\377\033\377\377\377\356\377\377\377\376\377\377\377l\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377\377" - "\375\377\377\377Z\000\000\000\000\000\000\000\000\377\377\377\325\377\377\377\377\377\377" - "\377\257\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\025\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377" - "\326\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "K\377\377\377\374\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377!\377\377\377" - "\371\377\377\377\377\377\377\377\216\000\000\000\000\000\000\000\000\377\377\377\302\377" - "\377\377\224\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\302\377\377\377\377\377\377\377" - "\252\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377V\377\377" - "\377\375\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\377" - "\377\377\377\260\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\330\377\377\377\377\377\377\377\251\000\000\000\000\377\377\377\013\377\377\377" - "\336\377\377\377\377\377\377\377\227\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\250\377\377\377\276\377" - "\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\250\377\377\377\276\377\377\377\033" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\276\377\377\377\377\377\377\377\377" - "\377\377\377\225\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377I\377\377\377\373\377\377\377" - "\377\377\377\377\325\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377)\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\306\377\377\377\376\377\377\377l\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\375\377" - "\377\377q\000\000\000\000\377\377\377\033\377\377\377\362\377\377\377\366\377\377" - "\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\334\377\377\377\377\377\377\377\376\377\377\377\360\377\377\377\033\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377" - "\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377\223\377\377\377\377" - "\377\377\377\327\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377s\377\377\377\376\377\377\377\375\377\377\377_\000\000\000\000\000\000\000\000\377\377" - "\377z\377\377\377\257\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\313\377\377\377\376\377\377\377U\000\000\000\000\377\377\377\033\377\377" - "\377\353\377\377\377\377\377\377\377\333\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\326\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377\033\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\377\377\377\247\377\377\377\377\377\377\377\364\377\377\377)\000\000\000\000\000" - "\000\000\000\377\377\377\246\377\377\377\213\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000" - "\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377" - "\377\377\363\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\213" - "\377\377\377\377\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000\377\377" - "\377\270\377\377\377\377\377\377\377\355\377\377\377\033\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366" - "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377\375\377" - "\377\377\070\377\377\377\013\377\377\377\352\377\377\377\377\377\377\377\327" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\307\377\377" - "\377\377\377\377\377\377\377\377\377\251\000\000\000\000\377\377\377\013\377\377\377" - "\361\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\313\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\377\377\377" - "\253\377\377\377\377\377\377\377\346\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\243\000\000\000\000\000\000" - "\000\000\377\377\377\025\377\377\377\356\377\377\377\376\377\377\377l\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\377\377\377" - "\377\310\000\000\000\000\000\000\000\000\377\377\377\253\377\377\377\377\377\377\377\342" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377" - "\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\371\377" - "\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\232\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\302\377\377\377z\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377\377\377\363\377\377\377\013\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313" - "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377" - "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\312\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\377\377" - "\377K\377\377\377\374\377\377\377\347\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377\247\377\377\377\377\377\377\377\206\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\333\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\376\377\377" - "\377v\377\377\377\033\377\377\377\366\377\377\377\367\377\377\377)\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377\377\377" - "\377\377\377\316\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377\377" - "\377\264\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\356\377\377\377\376\377\377\377" - "v\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\377" - "\377\377\377\277\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377" - "\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\370\377\377\377" - "\353\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377)\377\377\377" - "V\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377b\000\000\000\000\377\377\377" - "S\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377S\377\377\377I\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377S\377\377\377\065\377\377\377;\377\377\377\374\377\377" - "\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377)\377\377\377V\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377" - "\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377" - "\377E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\224\377\377\377\376\377\377\377b\000\000\000\000\377\377\377E\377" - "\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377K\377\377\377\375\377\377\377\252\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377)\377\377\377X\000\000\000\000\000\000\000\000\377\377\377V\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377E\377\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377K\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377S\377\377\377\065\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377S\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377)\377\377\377U\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377U\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\313\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\006\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377" - "\377\376\377\377\377l\377\377\377\033\377\377\377\364\377\377\377\352\377" - "\377\377\013\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\062" - "\377\377\377\274\377\377\377\361\377\377\377\375\377\377\377\265\377\377" - "\377\367\377\377\377\372\377\377\377\221\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377V\377\377\377\374\377\377\377\336\000\000\000\000\000\000" - "\000\000\377\377\377\065\377\377\377\261\377\377\377\013\000\000\000\000\377\377\377\377" - "\377\377\377\377\377\377\377\232\377\377\377\371\377\377\377\033\377\377\377" - ";\377\377\377\374\377\377\377\217\377\377\377\335\377\377\377\375\377\377" - "\377\\\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\033\377" - "\377\377\371\377\377\377\333\377\377\377e\377\377\377\374\377\377\377\326" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\364\377\377\377%\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377b\377\377\377\375\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\266\377\377\377\377\377\377\377\227\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\316\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377" - "\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\375\377\377\377=\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\306\377\377" - "\377\377\377\377\377\225\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\375\377" - "\377\377\346\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\213\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\062\377\377\377" - "f\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\253\377\377\377\376\377\377\377i\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\231\377\377\377\377\377\377\377\257\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377" - "\377\377\377\377\377\377\356\377\377\377\374\377\377\377\332\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374" - "\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377" - "\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377" - "\377\377\375\377\377\377\347\377\377\377\013\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377U\377\377\377\375\377\377\377\266\000\000\000\000\000\000" - "\000\000\377\377\377;\377\377\377\374\377\377\377\236\000\000\000\000\377\377\377\377" - "\377\377\377\377\377\377\377\025\377\377\377\361\377\377\377\367\377\377\377" - ")\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\376\377\377\377\322\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377" - "\377\377\377\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377" - "\377\377\377\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377G\377\377" - "\377\350\377\377\377\377\377\377\377\367\377\377\377y\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\207\377\377\377\307\377" - "\377\377\304\377\377\377\304\377\377\377\304\377\377\377\304\377\377\377" - "\304\377\377\377\243\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\377\377\377S\377\377\377\351\377\377\377\377\377\377\377\365\377\377" - "\377n\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\345\377\377\377\376" - "\377\377\377_\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\273\377\377\377\377\377\377\377\234\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\232\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\344\377\377\377\317\377" - "\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000" - "\377\377\377X\377\377\377\375\377\377\377\327\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\300\377\377\377\377\377\377\377\277\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000" - "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377Q\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\332\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377)" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\342\377\377\377\377\377\377\377\225\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\313\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\377\377\377" - "\013\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377" - "\366\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377" - "\377\377\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\224\377\377\377\377\377\377\377\237\377\377\377\203\377\377" - "\377\377\377\377\377\375\377\377\377Q\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377" - "\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377" - "\217\377\377\377X\377\377\377\375\377\377\377\373\377\377\377\332\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\373" - "\377\377\377\371\377\377\377\366\377\377\377%\377\377\377\013\377\377\377" - "\361\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377" - "\033\377\377\377\362\377\377\377\375\377\377\377\\\000\000\000\000\000\000\000\000\377\377" - "\377\033\377\377\377\366\377\377\377\375\377\377\377Q\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\306\377\377\377\375\377\377\377\\\377\377" - "\377\377\377\377\377\377\377\377\377\033\377\377\377\362\377\377\377\375\377" - "\377\377Q\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\371\377\377\377\375\377" - "\377\377M\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377" - "\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\370\377" - "\377\377\364\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\232\377\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377)\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377" - "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355" - "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\204\377\377\377\377\377\377\377\311\000\000\000\000\000\000\000\000\377\377\377" - "\224\377\377\377\377\377\377\377\260\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377\222\377\377\377\377\377\377\377\252\000\000\000\000\377\377\377" - "\307\377\377\377\355\377\377\377%\377\377\377K\377\377\377\374\377\377\377" - "\260\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377l\377\377" - "\377\376\377\377\377\333\377\377\377\243\377\377\377\377\377\377\377\244" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377" - "\377\377\345\377\377\377\375\377\377\377M\377\377\377\013\377\377\377\351" - "\377\377\377\372\377\377\377)\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\377\377" - "\377\377\277\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377" - "\377\025\377\377\377\362\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377U\377\377\377" - "\374\377\377\377\316\377\377\377\247\377\377\377\377\377\377\377\206\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377\216\377\377\377\345\377\377\377\377\377\377\377\377\377\377\377" - "\376\377\377\377\275\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\224\377\377\377\376\377\377\377\271\377\377\377\364\377" - "\377\377\377\377\377\377\377\377\377\377\313\377\377\377\013\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\272\377" - "\377\377\371\377\377\377\377\377\377\377\377\377\377\377\355\377\377\377" - "\200\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - "}\377\377\377\361\377\377\377\377\377\377\377\377\377\377\377\325\377\377" - "\377\377\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\377\377\377\065\377\377\377\327\377\377\377\377\377\377\377\377\377" - "\377\377\376\377\377\377\267\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\205\377\377\377\361\377\377\377\363\377\377\377" - "\377\377\377\377\374\377\377\377\364\377\377\377\367\377\377\377\354\377" - "\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377b\377" - "\377\377\350\377\377\377\377\377\377\377\377\377\377\377\360\377\377\377" - "\360\377\377\377\375\377\377\377\243\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\224\377\377\377\376\377\377\377\215\377\377\377\350\377" - "\377\377\377\377\377\377\377\377\377\377\346\377\377\377\062\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\301\377\377\377\370\377\377" - "\377\364\377\377\377\364\377\377\377\360\377\377\377\350\377\377\377%\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\301\377" - "\377\377\370\377\377\377\364\377\377\377\364\377\377\377\360\377\377\377" - "\350\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377K\377\377\377\375\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377" - "S\377\377\377\354\377\377\377\363\377\377\377I\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377" - "\377\013\377\377\377\342\377\377\377\332\377\377\377\374\377\377\377\377\377" - "\377\377\276\377\377\377\353\377\377\377\377\377\377\377\352\377\377\377" - ")\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377\377\371" - "\377\377\377\212\377\377\377\350\377\377\377\377\377\377\377\377\377\377" - "\377\346\377\377\377\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\377\377\377u\377\377\377\351\377\377\377\377\377\377\377\377\377\377" - "\377\364\377\377\377\222\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\213\377\377\377\371\377\377\377\262\377\377\377\365" - "\377\377\377\377\377\377\377\377\377\377\377\313\377\377\377\013\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\361" - "\377\377\377\377\377\377\377\377\377\377\377\310\377\377\377\347\377\377" - "\377\315\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377" - "\377\301\377\377\377\351\377\377\377)\377\377\377\326\377\377\377\377\377" - "\377\377\377\377\377\377\372\377\377\377M\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\365\377\377\377\377\377\377" - "\377\377\377\377\377\373\377\377\377\300\377\377\377=\000\000\000\000\377\377\377" - "\377\377\377\377\377\377\377\377\013\377\377\377\332\377\377\377\360\377\377" - "\377\373\377\377\377\377\377\377\377\376\377\377\377\364\377\377\377\367" - "\377\377\377\354\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\301\377\377\377\354\377\377\377\062\000\000\000\000\000\000\000\000\377\377\377I" - "\377\377\377\364\377\377\377\275\000\000\000\000\377\377\377\377\377\377\377\377" - "\377\377\377I\377\377\377\364\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\267\377\377\377\367\377\377\377\\\377\377\377\377\377\377" - "\377\377\377\377\377\335\377\377\377\360\377\377\377\070\000\000\000\000\377\377\377" - "~\377\377\377\224\000\000\000\000\377\377\377\013\377\377\377\332\377\377\377\342" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\275\377\377\377\373" - "\377\377\377\255\000\000\000\000\000\000\000\000\377\377\377r\377\377\377\370\377\377\377" - "\315\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377I\377\377\377\364" - "\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\254\377\377" - "\377\367\377\377\377\\\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "K\377\377\377\365\377\377\377\364\377\377\377\364\377\377\377\364\377\377" - "\377\360\377\377\377\360\377\377\377\354\377\377\377%\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377" - "\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377" - "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377" - "\000\377\377\377\007\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\372\377\377" - "\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\377\377\377\306\377\377\377\375\377\377\377\070\377\377\377\013\377\377" - "\377\364\377\377\377\334\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377K\377\377\377\364\377\377\377\376\377\377\377\370\377" - "\377\377\364\377\377\377\376\377\377\377\374\377\377\377\320\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\377\377\377\372\377\377" - "\377\376\377\377\377\307\377\377\377O\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377\223\377\377\377\377\377\377\377" - "\234\377\377\377\243\377\377\377\376\377\377\377\217\377\377\377\373\377" - "\377\377v\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\377\377\377\331\377\377\377\377\377\377\377\377\377\377\377\367\377\377" - "\377\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\323\377\377\377\374\377\377\377)\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\245\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377V\377\377\377\375\377\377\377\322\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\260\377\377\377\354\377" - "\377\377\236\377\377\377\326\377\377\377\361\377\377\377\224\377\377\377" - "\341\377\377\377\314\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377" - "\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\325\377\377\377\374\377\377\377\062\377\377" - "\377\215\377\377\377\241\377\377\377\013\377\377\377\361\377\377\377\367\377" - "\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\307\377\377\377\376\377\377\377l\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\200" - "\377\377\377\363\377\377\377\376\377\377\377s\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\377\377\377\240\377\377\377\377\377\377\377" - "\363\377\377\377V\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377" - "\333\377\377\377\274\377\377\377\310\377\377\377\251\377\377\377=\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\314\377\377" - "\377\376\377\377\377l\377\377\377j\377\377\377\237\377\377\377\223\377\377" - "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\376\377\377\377i\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\377\377\377" - "\372\377\377\377\376\377\377\377\237\000\000\000\000\377\377\377\254\377\377\377" - "\377\377\377\377\243\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377" - "\025\377\377\377\361\377\377\377\366\377\377\377\033\000\000\000\000\000\000\000\000\377\377" - "\377\033\377\377\377\366\377\377\377\355\377\377\377\033\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377" - "\377\377\377\377\377\377\323\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377" - "\377\377\377\377\377\377\323\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\374\377\377\377" - "\377\377\377\377\314\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\274\377\377\377\377\377\377\377\370" - "\377\377\377\370\377\377\377\370\377\377\377\370\377\377\377\373\377\377" - "\377\321\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\264\377\377\377\377\377\377\377\377\377\377\377\262" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\013\377\377\377\337\377\377\377\377\377\377\377\271\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\025\377\377\377" - "\361\377\377\377\352\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377U\377\377\377\237" - "\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\377\377\377\232\377\377\377\377\377\377\377\266\377\377\377\213\377" - "\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\265\377\377\377" - "E\377\377\377y\377\377\377\337\377\377\377\377\377\377\377\227\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\352\377\377\377\375" - "\377\377\377Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377" - "i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\324\377\377\377\376\377\377\377l\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377" - "\377\337\377\377\377Z\377\377\377p\377\377\377p\377\377\377f\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355" - "\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377\065\377\377\377\371\377\377\377\367" - "\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377" - "\224\377\377\377m\377\377\377v\377\377\377h\377\377\377\362\377\377\377\366" - "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377" - "\377\377\377\300\377\377\377\372\377\377\377\377\377\377\377\236\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377" - "\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377" - "\377\370\377\377\377\366\377\377\377\317\377\377\377\243\377\377\377\376" - "\377\377\377\372\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\313\377\377\377\367\377\377\377\304\377\377\377\377" - "\377\377\377\251\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\343" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\314\377\377\377\376\377\377" - "\377i\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377" - "\377\377\377\377\243\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377" - "\376\377\377\377l\377\377\377\377\377\377\377\377\377\377\377U\377\377\377" - "\374\377\377\377\336\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377" - "\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\224\377\377\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377`\377" - "\377\377\373\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377`\377\377\377\374\377\377\377\377\377\377\377\336\377" - "\377\377\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366" - "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377" - "\377\013\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\033\377\377\377\371\377\377\377\360\377\377" - "\377\033\000\000\000\000\377\377\377\320\377\377\377\376\377\377\377_\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377U\377\377\377\375\377\377\377\277" - "\377\377\377\033\377\377\377\366\377\377\377\376\377\377\377m\377\377\377" - "\213\377\377\377\377\377\377\377\243\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\324\377\377\377\377\377\377\377\377\377" - "\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\204\377\377\377\377\377\377\377\304\377\377" - "\377\204\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377\377" - "\377\377\377\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377" - "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\206" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377\266\377\377\377\377\377\377\377\207\377\377\377K\377\377\377\374" - "\377\377\377\327\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377}\377\377\377\377\377\377\377\373\377\377\377\313\377" - "\377\377\303\377\377\377\374\377\377\377\377\377\377\377\252\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377" - "\377\377\377\377\377\377\351\377\377\377\300\377\377\377\365\377\377\377" - "\377\377\377\377\316\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\013\377\377\377\346\377\377\377\377\377\377\377\365\377\377\377\305" - "\377\377\377\315\377\377\377\376\377\377\377\366\377\377\377\033\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\377" - "\377\377\377\325\377\377\377\321\377\377\377\376\377\377\377\377\377\377" - "\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\377" - "\377\377\371\377\377\377\377\377\377\377\335\377\377\377\263\377\377\377" - "\351\377\377\377\377\377\377\377\304\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377S\377\377\377\330\377\377\377\343\377\377\377\377" - "\377\377\377\364\377\377\377\327\377\377\377\333\377\377\377\322\377\377" - "\377\033\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\377\377\377" - "\372\377\377\377\376\377\377\377\275\377\377\377\307\377\377\377\376\377" - "\377\377\377\377\377\377\324\377\377\377y\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\370" - "\377\377\377\306\377\377\377\356\377\377\377\377\377\377\377\322\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\336" - "\377\377\377\333\377\377\377\327\377\377\377\377\377\377\377\366\377\377" - "\377)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\224\377\377\377\336\377\377\377\333\377\377\377\327\377\377\377\377\377" - "\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377K\377\377\377\375\377\377\377\252\000\000\000\000\377\377\377" - "`\377\377\377\373\377\377\377\377\377\377\377\242\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377" - "\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377\013\377\377\377\355\377\377\377\377\377\377\377\346\377\377" - "\377\362\377\377\377\377\377\377\377\362\377\377\377\347\377\377\377\377" - "\377\377\377\215\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224" - "\377\377\377\377\377\377\377\377\377\377\377\370\377\377\377\306\377\377" - "\377\356\377\377\377\377\377\377\377\322\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377u\377\377\377\376\377\377\377\377\377\377\377" - "\321\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\243\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377" - "\377\377\377\377\377\377\377\377\352\377\377\377\300\377\377\377\365\377" - "\377\377\377\377\377\377\316\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377}\377\377\377\376\377\377\377\377\377\377\377\325\377\377" - "\377\321\377\377\377\376\377\377\377\377\377\377\377\332\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376" - "\377\377\377\366\377\377\377\377\377\377\377\335\377\377\377\322\377\377" - "\377\343\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "u\377\377\377\377\377\377\377\370\377\377\377\277\377\377\377\262\377\377" - "\377\346\377\377\377\377\377\377\377\231\000\000\000\000\377\377\377\377\377\377" - "\377\377\377\377\377\013\377\377\377\315\377\377\377\330\377\377\377\370\377" - "\377\377\377\377\377\377\335\377\377\377\327\377\377\377\333\377\377\377" - "\322\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313" - "\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374" - "\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\341\377\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\377\377\377!\377\377" - "\377\371\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\377" - "\377\377\313\377\377\377\377\377\377\377\205\377\377\377\013\377\377\377\364" - "\377\377\377\376\377\377\377Q\377\377\377!\377\377\377\371\377\377\377\352" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377I\377\377\377\372\377" - "\377\377\376\377\377\377v\377\377\377\033\377\377\377\362\377\377\377\376" - "\377\377\377}\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\335\377\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\377\377\377\033\377\377" - "\377\364\377\377\377\372\377\377\377\062\377\377\377\377\377\377\377\377\000" - "\000\000\000\377\377\377\065\377\377\377\323\377\377\377\333\377\377\377\333\377" - "\377\377\327\377\377\377\377\377\377\377\377\377\377\377\326\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\320\377\377\377\355\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377" - "\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377" - "\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\000\000\000\000\377\377\377}\377\377\377\313\377\377\377\257\377\377\377\013\000" - "\000\000\000\377\377\377\223\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\316\377\377\377\352\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377z\377" - "\377\377\325\377\377\377\033\377\377\377\013\377\377\377\314\377\377\377\267" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377" - "\377!\377\377\377\373\377\377\377\211\377\377\377!\377\377\377\374\377\377" - "\377\200\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\377\377\377\205\377\377\377\370\377\377\377\377\377\377\377\377\377\377" - "\377\345\377\377\377\200\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\377\377\377\013\377\377\377\333\377\377\377\377\377\377\377\377\377\377\377" - "\321\000\000\000\000\377\377\377r\377\377\377z\377\377\377%\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\025\377\377\377\337\377\377\377\377\377" - "\377\377\375\377\377\377\070\000\000\000\000\377\377\377U\377\377\377\365\377\377" - "\377\256\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\255\377\377\377\275\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\314\377\377" - "\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\371" - "\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377~\377\377\377\347\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\361\377\377\377\227\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\322\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\322\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\261\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\377\377\377\025\377\377\377\361\377\377\377\363\377\377" - "\377E\377\377\377\375\377\377\377\377\377\377\377V\377\377\377\324\377\377" - "\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377j\377\377\377\375\377\377\377\361\377\377\377%\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\215\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377b\377\377\377" - "\374\377\377\377\375\377\377\377Q\377\377\377K\377\377\377\374\377\377\377" - "\332\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "K\377\377\377\375\377\377\377\377\377\377\377\374\377\377\377\376\377\377" - "\377\377\377\377\377\375\377\377\377s\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\312\377\377\377\377\377\377\377\360\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\213\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377}\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\333\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\321\377\377" - "\377\377\377\377\377\315\377\377\377q\377\377\377\221\377\377\377\363\377" - "\377\377\377\377\377\377\364\377\377\377)\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377G\377\377\377\330\377\377\377\343\377" - "\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377G\377\377\377\330\377\377\377\343\377\377\377" - "c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377V\377\377\377\375\377\377\377\376\377\377\377\214\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "U\377\377\377\374\377\377\377\377\377\377\377m\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\330\377\377\377" - "\377\377\377\377\271\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377U\377\377\377\375\377\377\377\252\000\000\000\000\377\377\377\233" - "\377\377\377\366\377\377\377\377\377\377\377\377\377\377\377\376\377\377" - "\377i\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\334\377" - "\377\377\376\377\377\377U\377\377\377!\377\377\377\371\377\377\377\363\377" - "\377\377%\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\371\377\377\377)\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\313\377\377\377\376\377\377\377i\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\375\377\377\377)\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\376\377\377\377l\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377K\377" - "\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\247\377\377\377" - "\327\377\377\377\322\377\377\377\300\377\377\377\013\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\312\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\364" - "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377" - "\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377" - "\377\363\377\377\377\301\377\377\377\373\377\377\377\356\377\377\377\333" - "\377\377\377\352\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377w\377\377\377\371\377" - "\377\377\366\377\377\377!\377\377\377\360\377\377\377\333\000\000\000\000\377\377" - "\377\377\377\377\377\377\377\377\377K\377\377\377\374\377\377\377\327\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\312\377\377\377\377\377\377\377" - "\251\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377" - "\377\377\377\377\326\377\377\377\247\377\377\377\262\377\377\377\351\377" - "\377\377\377\377\377\377\355\377\377\377\033\377\377\377\377\377\377\377\377" - "\377\377\377K\377\377\377\374\377\377\377\343\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\313\377\377\377\376\377\377\377i\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\356\377\377" - "\377\340\377\377\377\343\377\377\377\376\377\377\377\377\377\377\377\304" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377}\377" - "\377\377\365\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377" - "\247\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313" - "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377" - "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\377\377\377\321\377\377\377\376\377\377\377i\377\377\377\033\377" - "\377\377\365\377\377\377\355\377\377\377\013\000\000\000\000\377\377\377\377\377\377" - "\377\377\377\377\377\070\377\377\377\372\377\377\377\327\377\377\377c\377" - "\377\377\377\377\377\377\377\377\377\377\271\377\377\377\205\377\377\377" - "\376\377\377\377i\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377l\377\377\377\377\377\377\377\377\377\377\377\226\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\344\377\377\377\376\377\377\377\372\377\377\377\367\377\377\377" - ")\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377!\377\377\377\371\377\377\377\376\377\377\377i\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377V\377\377" - "\377\375\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377" - "\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\033\377\377\377\364\377\377\377\363\377\377\377%" - "\000\000\000\000\377\377\377\335\377\377\377\375\377\377\377M\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\177\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\205\377\377\377\376\377\377\377\333\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377" - "\377\377\257\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\372" - "\377\377\377\070\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\247\377" - "\377\377\377\377\377\377\345\377\377\377\033\000\000\000\000\000\000\000\000\377\377\377O" - "\377\377\377X\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377" - "\377\377\351\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377" - "b\377\377\377\375\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\306\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\344\377\377\377\372\377\377\377)\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377%\377\377\377\374\377\377" - "\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\264\000\000\000\000\000\000\000\000" - "\377\377\377\335\377\377\377\376\377\377\377Q\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\325\377" - "\377\377\013\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\363\377\377" - "\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\354\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\354\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377K\377\377\377\375\377\377\377\237\377\377" - "\377j\377\377\377\374\377\377\377\376\377\377\377\214\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377\361\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\377\377\377\013\377\377\377\361\377\377\377\352\000\000\000\000\377" - "\377\377\306\377\377\377\375\377\377\377=\377\377\377\211\377\377\377\377" - "\377\377\377\252\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224" - "\377\377\377\377\377\377\377\325\377\377\377\013\000\000\000\000\377\377\377;\377" - "\377\377\373\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377" - "\377\377\377\013\377\377\377\351\377\377\377\377\377\377\377\243\000\000\000\000\000" - "\000\000\000\377\377\377r\377\377\377\375\377\377\377\363\377\377\377%\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377" - "\377\257\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\372\377" - "\377\377\070\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\351" - "\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377b\377\377\377" - "\375\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\377\377\377\312\377\377\377\377\377\377\377\372\377\377\377f\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\224\377\377\377\377\377\377\377\333\377\377\377\013\000\000\000\000\000\000\000\000\377" - "\377\377S\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\306\377\377\377\376\377\377\377U\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377" - "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374\377" - "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\204\377\377\377\377\377\377\377\322\000\000\000\000\000\000\000\000\377\377\377\241\377" - "\377\377\377\377\377\377\264\000\000\000\000\377\377\377\377\377\377\377\377\377" - "\377\377\224\377\377\377\377\377\377\377\266\377\377\377;\377\377\377\374" - "\377\377\377\377\377\377\377\226\377\377\377l\377\377\377\377\377\377\377" - "\300\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377u\377\377" - "\377\376\377\377\377\361\377\377\377\325\377\377\377\377\377\377\377\252" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377s\377" - "\377\377\377\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377" - "\377\377\377\377\277\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\314\377\377\377\377\377\377\377" - "\333\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377E\377\377\377\217\377\377\377\373\377\377\377\343\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\313\377\377\377\376\377\377\377\247\377\377\377I\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377\245\377\377" - "\377\372\377\377\377\355\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\324\377\377\377\343\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\205\377\377\377\271\377\377\377\376\377\377\377\303\377" - "\377\377\262\377\377\377\377\377\377\377\315\377\377\377l\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\220" - "\377\377\377\341\377\377\377\377\377\377\377\377\377\377\377\233\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377" - "\257\377\377\377)\377\377\377\313\377\377\377\377\377\377\377\377\377\377" - "\377\375\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377\013\377" - "\377\377\342\377\377\377\377\377\377\377\373\377\377\377\377\377\377\377" - "\265\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\215\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\013\377\377\377\360\377\377\377\333\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\261\377\377\377\377\377\377\377\377\377\377\377\332\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377`\377\377\377\262" - "\377\377\377\251\377\377\377\354\377\377\377\373\377\377\377\261\377\377" - "\377\262\377\377\377\224\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377v\377\377\377\263\377" - "\377\377\255\377\377\377\255\377\377\377\255\377\377\377\255\377\377\377" - "\263\377\377\377\224\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377\356\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\377\377\377\013\377\377\377\356\377\377\377\363\371\371" - "\377.\377\377\377\362\377\377\377\375\377\377\377B\377\377\377\335\377\377" - "\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377U\377\377\377\373\377\377\377\376\377\377\377s\000\000\000\000\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\205" - "\377\377\377\271\377\377\377\332\377\377\377\377\377\377\377\373\377\377" - "\377r\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\033\377\377\377" - "\362\377\377\377\377\377\377\377\242\377\377\377E\377\377\377x\377\377\377" - "\374\377\377\377\336\377\377\377K\377\377\377\013\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\377\377\377\216\377\377\377]\000\000\000\000\000\000\000\000\377" - "\377\377\251\377\377\377\377\377\377\377\333\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\312\377\377\377\377\377\377\377\356\377" - "\377\377v\000\000\000\000\377\377\377\220\377\377\377\374\377\377\377\363\377\377" - "\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\324\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377j\377\377\377\374\377\377\377" - "\367\377\377\377\260\377\377\377\342\377\377\377\377\377\377\377\376\377" - "\377\377\224\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\065\377\377\377\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\343\377\377\377\374\377\377\377\360\377\377\377%\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\025\377\377\377\337\377\377\377\377" - "\377\377\377\361\377\377\377\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377b\377\377\377\232\377\377\377" - "\232\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377\232\377" - "\377\377}\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377_\377\377\377\345\377\377\377\377\377\377\377\361\377" - "\377\377\070\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377V\377\377\377\376\377\377\377\344\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377\377" - "\377\245\377\377\377l\377\377\377\377\377\377\377\344\377\377\377v\377\377" - "\377;\377\377\377\375\377\377\377l\377\377\377\377\377\377\377\377\000\000\000" - "\000\377\377\377;\377\377\377\373\377\377\377\376\377\377\377\301\377\377\377" - "\271\377\377\377\374\377\377\377\376\377\377\377v\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\304" - "\377\377\377e\377\377\377x\377\377\377\300\377\377\377\376\377\377\377\367" - "\377\377\377)\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377" - "\361\377\377\377\367\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377" - "\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377" - "\376\377\377\377i\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377" - "\377\377\374\377\377\377\343\377\377\377|\377\377\377\202\377\377\377\211" - "\377\377\377\202\377\377\377\013\000\000\000\000\377\377\377\377\377\377\377\377\000" - "\000\000\000\377\377\377\013\377\377\377\355\377\377\377\373\377\377\377\300\377" - "\377\377\276\377\377\377\276\377\377\377\302\377\377\377G\000\000\000\000\377\377" - "\377\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\352\377" - "\377\377\013\000\000\000\000\377\377\377\307\377\377\377\374\377\377\377\377\377\377" - "\377\372\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\313\377\377\377\376\377\377\377\240\377\377\377\200\377\377\377\210\377" - "\377\377\202\377\377\377\371\377\377\377\366\377\377\377%\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377" - "\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224" - "\377\377\377\377\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\311" - "\377\377\377\343\377\377\377\377\377\377\377\225\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377" - "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\366\377\377\377]\377" - "\377\377\375\377\377\377\377\377\377\377\211\377\377\377\354\377\377\377" - "\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377" - "\377\377\376\377\377\377V\377\377\377\252\377\377\377\377\377\377\377\244" - "\377\377\377\354\377\377\377\334\000\000\000\000\377\377\377\377\377\377\377\377" - "\377\377\377U\377\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\307\377\377\377\376\377\377\377\177\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\374\377\377\377\324\377\377\377" - ")\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377U\377\377\377\374\377" - "\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377" - "\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224" - "\377\377\377\377\377\377\377\365\377\377\377\357\377\377\377\377\377\377" - "\377\377\377\377\377\224\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\210\377\377\377\335\377\377" - "\377\377\377\377\377\377\377\377\377\315\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377" - "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377" - "\377\377\013\377\377\377\355\377\377\377\366\377\377\377)\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\377\377\377" - "\377\254\377\377\377c\377\377\377\377\377\377\377\273\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\361\377\377\377\340" - "\377\377\377\277\377\377\377\367\377\377\377\351\377\377\377\352\377\377" - "\377\300\377\377\377\375\377\377\377I\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377\377\377" - "\377\377\335\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\377\377\377" - "\377\252\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\325\377\377\377\377\377\377\377\264\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\342\377\377\377\375\377\377\377\070\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377I\377\377\377\340\377\377\377\240" - "\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\341\377\377\377Z\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377Q\377\377\377" - "\306\377\377\377\366\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\224\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\320" - "\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\317\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377" - "\356\377\377\377\372\377\377\377)\000\000\000\000\000\000\000\000\377\377\377K\377\377\377" - "\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377" - "\013\377\377\377\351\377\377\377\377\377\377\377\361\377\377\377\354\377\377" - "\377\354\377\377\377\354\377\377\377\376\377\377\377\376\377\377\377l\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377" - "\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\215\377\377\377\377\377\377\377\311" - "\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\376\377\377\377i\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377" - "\377\377_\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366" - "\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374" - "\377\377\377\333\377\377\377\374\377\377\377\377\377\377\377\311\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\361\377" - "\377\377\333\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\377\377" - "\377\224\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377_\000\000\000\000\000\000\000\000\377" - "\377\377\013\377\377\377\355\377\377\377\366\377\377\377)\377\377\377\377" - "\377\377\377\377\377\377\377\013\377\377\377\356\377\377\377\372\377\377\377" - ")\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\345\377\377\377\376\377\377\377i\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377" - "\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\321\377\377\377\376\377\377" - "\377l\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\356\377" - "\377\377\372\377\377\377)\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374\377" - "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377\313\377\377\377\377\377\377\377\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377" - "\377\333\377\377\377\377\377\377\377\377\377\377\377\354\377\377\377\300" - "\377\377\377\\\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313" - "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374" - "\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\013\377\377\377\355\377\377\377\375\377\377\377M\377\377\377\013\377\377" - "\377\355\377\377\377\375\377\377\377=\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377U\377\377\377\374\377\377\377\333\377\377\377\217\377\377" - "\377\373\377\377\377\361\377\377\377\312\377\377\377\241\377\377\377\377" - "\377\377\377\215\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\253\377\377\377\377\377\377\377\377\377\377\377\315\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377" - "\377\335\377\377\377\376\377\377\377i\000\000\000\000\377\377\377\342\377\377\377" - "\375\377\377\377Q\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\315\377\377\377\377\377\377\377\342\377\377" - "\377\013\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "V\377\377\377\375\377\377\377\377\377\377\377\377\377\377\377\252\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377c\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377l\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377" - "\377\377\360\377\377\377\033\377\377\377\205\377\377\377\365\377\377\377\377" - "\377\377\377\364\377\377\377\\\000\000\000\000\377\377\377\377\377\377\377\377\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377|\377\377\377\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\370\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\244\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\205\377\377\377\376\377\377\377\336\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\302\377\377\377\377\377" - "\377\377\242\377\377\377\374\377\377\377\264\377\377\377\033\377\377\377\371" - "\377\377\377\316\377\377\377\377\377\377\377\377\377\377\377b\377\377\377" - "\376\377\377\377\326\377\377\377\025\377\377\377\362\377\377\377\377\377\377" - "\377\304\377\377\377\372\377\377\377\360\377\377\377\033\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\317\377\377\377\376\377\377\377_\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\013\377\377\377\361\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\374" - "\377\377\377\343\377\377\377\313\377\377\377\377\377\377\377\215\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\306\377\377\377\371\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377s\377\377\377\377\377\377\377\304" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\320\377\377\377\375\377\377\377=\000\000\000\000\000\000\000\000\377\377\377" - "\025\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376" - "\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377l\377\377\377\373\377\377\377\376\377\377" - "\377\214\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\204\377\377\377\377" - "\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\224" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377m\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\033\377\377\377\366\377\377\377\367\377\377\377)\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\317\377\377\377\376\377\377" - "\377e\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\330\377\377\377\371\377\377\377" - ")\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\033" - "\377\377\377\365\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\351\377\377\377\375" - "\377\377\377=\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\374\377\377\377\366" - "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377U\377\377\377p\377\377\377M\377\377\377!\377\377\377\373\377\377" - "\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\234\377\377\377\374\377\377\377\377\377\377\377\320" - "\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\320\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\337\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\271\377\377\377" - "\377\377\377\377\377\377\377\377\267\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\251" - "\377\377\377V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377K\377\377\377\374\377\377\377\245\377\377\377|\377\377\377" - "\377\377\377\377y\000\000\000\000\377\377\377\247\377\377\377\376\377\377\377l\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\240\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377" - "\377\377\377\377\304\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\224\377\377\377\377\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\313\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\334\377\377\377\377\377\377\377\205\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377" - "\013\377\377\377\355\377\377\377\376\377\377\377i\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\327\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377\033\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377" - "\377\025\377\377\377\362\377\377\377\375\377\377\377=\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\313\377\377\377\371\377\377\377%\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377b\000\000\000\000\000\000" - "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377" - "\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\224\377\377\377\377\377\377\377\257\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\331\000\000\000\000" - "\377\377\377j\377\377\377\376\377\377\377\366\377\377\377)\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377" - "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377\033\377" - "\377\377\351\377\377\377\371\377\377\377!\377\377\377\360\377\377\377\333" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377" - "\377\376\377\377\377i\377\377\377\033\377\377\377\365\377\377\377\365\377" - "\377\377\361\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377" - "\377\377K\377\377\377\374\377\377\377\364\377\377\377%\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\340\377\377\377\376\377\377\377l\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\257\000\000\000\000" - "\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377I\377\377\377\373\377\377\377\363\377\377\377%\000\000\000\000\000" - "\000\000\000\377\377\377\013\377\377\377\345\377\377\377\376\377\377\377i\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377" - "\377\243\000\000\000\000\377\377\377\330\377\377\377\377\377\377\377\257\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377l\377\377\377\373\377\377\377\375\377\377\377" - "M\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013" - "\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377" - "\377\377b\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\355" - "\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - "!\377\377\377\372\377\377\377\337\377\377\377\257\377\377\377\376\377\377" - "\377l\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\324\377\377\377\370\377\377\377\360\377\377\377\323\377\377\377\255\377" - "\377\377\375\377\377\377\333\377\377\377\371\377\377\377%\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377l\377\377\377\376\377\377\377" - "\337\377\377\377\326\377\377\377\377\377\377\377\234\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377\356\377\377\377\372\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377" - "\377\377\346\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377" - "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377\377" - "\377\244\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377\377\376\377" - "\377\377\376\377\377\377\313\377\377\377\224\377\377\377\202\377\377\377" - "\374\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\324\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\314\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377" - "\377\377\355\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\377\377\377K\377" - "\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377" - "\377\377\013\377\377\377\352\377\377\377\377\377\377\377\321\377\377\377\321" - "\377\377\377\316\377\377\377\322\377\377\377\316\377\377\377\315\377\377" - "\377G\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "K\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377" - "\377\377\377\377\362\377\377\377\366\377\377\377\377\377\377\377\326\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377" - "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355" - "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377" - "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377" - "\377\377\374\377\377\377\377\377\377\377\370\377\377\377\366\377\377\377" - "\376\377\377\377\214\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013" - "\377\377\377\361\377\377\377\333\000\000\000\000\377\377\377\313\377\377\377\371" - "\377\377\377%\377\377\377\223\377\377\377\377\377\377\377\252\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377" - "i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377" - "\377%\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\355\377" - "\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377" - "\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\324" - "\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\377\377\377" - "\013\377\377\377\355\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\377\377" - "\377K\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377u\377\377\377\302\377\377\377\357\377\377\377" - "\377\377\377\377\377\377\377\377\276\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377" - "i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377" - ";\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\240\377\377\377\377\377\377\377\266\377\377" - "\377s\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\377\377\377\025\377\377\377\361\377\377\377\361\377\377\377\320" - "\377\377\377\344\377\377\377\303\377\377\377\356\377\377\377\316\377\377" - "\377\375\377\377\377M\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\275\377\377\377\377\377\377\377\377\377\377\377\314\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377v\377\377\377\377\377\377\377\321\377\377\377M\377\377\377\375\377" - "\377\377\327\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377\346\377\377\377" - "\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\377\377\377b\377\377\377\237\377\377\377\374\377\377\377\336\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\313\377\377\377\376\377\377\377\263\377\377\377f\377\377\377" - "\013\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\371\371\377." - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377B\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000" - "\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\304\377\377" - "\377\322\377\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - "\214\377\377\377\374\377\377\377\033\377\377\377\222\377\377\377\374\377\377" - "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\247\377\377\377\377\377\377\377\302\377\377\377\\\377\377\377\062\377\377" - "\377\264\377\377\377\377\377\377\377\326\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\315\377\377\377\377\377\377\377\257\377\377" - "\377;\377\377\377\375\377\377\377b\377\377\377\013\377\377\377\360\377\377" - "\377\337\377\377\377\377\377\377\377\377\377\377\377\204\377\377\377\377" - "\377\377\377\322\000\000\000\000\377\377\377\033\377\377\377\356\377\377\377\377\377" - "\377\377\377\377\377\377\217\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\247\377\377\377\377\377\377\377\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "V\377\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\374\377\377" - "\377\070\377\377\377\013\377\377\377\351\377\377\377\366\377\377\377\033\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\324\377\377\377\374\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377" - "\347\377\377\377\367\377\377\377\232\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377_\377\377\377\355\377\377\377\367\377\377\377}\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\261\377\377" - "\377\377\377\377\377\257\000\000\000\000\000\000\000\000\377\377\377\204\377\377\377\377" - "\377\377\377\322\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\213\377\377\377\376\377\377\377U\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - "\224\377\377\377\375\377\377\377\373\377\377\377s\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377" - "\377}\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\376\377\377\377\333" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377~\377\377\377" - "\202\377\377\377\202\377\377\377\201\377\377\377\231\377\377\377\377\377" - "\377\377\343\377\377\377z\377\377\377\033\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\205\377\377\377j\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "}\377\377\377\376\377\377\377\343\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\255\377\377\377\377\377\377\377\264\000\000\000\000\000\000\000\000" - "\377\377\377\025\377\377\377\356\377\377\377\372\377\377\377)\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374" - "\377\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\377\377\377\013\377\377\377\356\377\377\377\375\377\377\377)\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377\377\377\367\377\377\377)\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\065\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\313\377\377\377\377\377\377\377\257\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377_\377\377\377\355" - "\377\377\377\367\377\377\377}\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377\347\377\377" - "\377\367\377\377\377\232\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\062\377\377\377\327\377" - "\377\377\377\377\377\377\375\377\377\377z\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\065\377" - "\377\377\362\377\377\377\377\377\377\377\346\377\377\377V\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377S\377\377\377\320\377\377\377\305\377\377\377%\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377" - "\377\377\252\377\377\377K\377\377\377\374\377\377\377\376\377\377\377\363" - "\377\377\377\377\377\377\377\377\377\377\377l\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\335\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000" - "\377\377\377;\377\377\377\373\377\377\377\363\377\377\377%\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\243" - "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\343\377\377\377\376\377\377\377" - "l\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\232\377\377\377\377" - "\377\377\377\356\377\377\377)\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377" - "\260\377\377\377\013\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313" - "\377\377\377\376\377\377\377U\000\000\000\000\000\000\000\000\377\377\377\276\377\377\377" - "\377\377\377\377\346\377\377\377\013\377\377\377\377\377\377\377\377\000\000\000" - "\000\377\377\377K\377\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312" - "\377\377\377\377\377\377\377\321\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313" - "\377\377\377\371\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013" - "\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377\377\377\366\377" - "\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\377\377\377j\377\377\377\330\377\377\377%\000\000\000\000\000\000\000\000\377\377\377" - "\312\377\377\377\377\377\377\377\206\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\244\000\000\000\000\000\000" - "\000\000\377\377\377\313\377\377\377\377\377\377\377\277\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366" - "\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\377\377" - "\377]\377\377\377f\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376" - "\377\377\377i\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\377\377" - "\377\377\327\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\334\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377}\377\377" - "\377\376\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\332\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\377\377\377" - "\214\377\377\377\377\377\377\377\355\377\377\377\013\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000" - "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377Q\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\205\377\377\377\304\377\377" - "\377\013\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\362\377\377\377\375\377" - "\377\377Q\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312\377\377\377" - "\377\377\377\377\264\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377" - "\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\330\377\377\377\376\377\377\377\372\377\377\377\360\377\377" - "\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\305\377\377\377\377\377\377\377\377\377\377\377\237\377\377\377l\377\377" - "\377\376\377\377\377\377\377\377\377\336\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\376\377\377\377" - "l\377\377\377K\377\377\377\374\377\377\377\372\377\377\377\062\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\372" - "\377\377\377=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377" - "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\372\377\377\377" - "\347\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377" - "\377b\000\000\000\000\000\000\000\000\377\377\377b\377\377\377\375\377\377\377\332\000\000\000" - "\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377" - "\377\377\377~\000\000\000\000\000\000\000\000\377\377\377U\377\377\377\374\377\377\377\366" - "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\266\377" - "\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377e\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377" - "\355\377\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\377\377\377s\377\377\377" - "\376\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\317\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377K\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377j\377\377\377" - "\375\377\377\377\326\377\377\377\302\377\377\377\304\377\377\377\206\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377" - "\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366" - "\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377" - "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "K\377\377\377\374\377\377\377\361\377\377\377=\377\377\377V\377\377\377\374" - "\377\377\377\375\377\377\377M\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\355\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013" - "\377\377\377\361\377\377\377\333\000\000\000\000\377\377\377\313\377\377\377\371" - "\377\377\377%\377\377\377\223\377\377\377\377\377\377\377\252\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377" - "i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377" - "\377%\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\355\377" - "\377\377\376\377\377\377\215\000\000\000\000\000\000\000\000\377\377\377V\377\377\377\374" - "\377\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\224\377\377\377\377\377\377\377~\000\000\000\000\000\000\000\000\377\377\377K\377" - "\377\377\374\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377" - "\377\377\377\013\377\377\377\355\377\377\377\376\377\377\377v\000\000\000\000\000\000" - "\000\000\377\377\377s\377\377\377\375\377\377\377\332\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377" - "\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\062\377\377\377n\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377`\377\377\377\373\377\377\377\366\377\377\377)\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\376\377\377" - "\377v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\314\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\377\377" - "\377\254\377\377\377\377\377\377\377\332\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\366\377\377\377\361\377" - "\377\377\331\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\320\377\377\377\377\377\377\377\377" - "\377\377\377\273\377\377\377\205\377\377\377\377\377\377\377\376\377\377" - "\377\355\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377\224\377\377\377\377\377\377\377\336\377\377\377\330\377\377\377" - "\377\377\377\377\256\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\375\377\377\377\326\377" - "\377\377\376\377\377\377~\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\275\377\377\377\377\377\377\377\345\377\377" - "\377\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\323\377\377\377\360\377\377\377" - "\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\313\377\377\377\371\377\377\377\033\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\001\377\377\377\000\377\377\377\000\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\377\377\377\377\377\377\377" - "\377\260\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377" - "\377\360\377\377\377\013\377\377\377\316\377\377\377\352\377\377\377\013\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\205\377" - "\377\377\365\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\356\377\377\377\070\000\000\000\000\377\377\377\377\377\377\377\377" - "\377\377\377\224\377\377\377\377\377\377\377\311\000\000\000\000\377\377\377K\377" - "\377\377\374\377\377\377\316\377\377\377y\377\377\377\374\377\377\377\273" - "\377\377\377\377\377\377\377\377\377\377\377!\377\377\377\371\377\377\377" - "\377\377\377\377\315\377\377\377\242\377\377\377\360\377\377\377\377\377" - "\377\377\377\377\377\377\370\377\377\377\237\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377`\377\377\377\375\377\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\266\377\377\377\377\377\377\377\217\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\371\371\377.\377\377\377M\000\000\000" - "\000\000\000\000\000\371\371\377.\377\377\377M\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377|\377\377\377s\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377" - "\343\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377" - "\377\377\377\377\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\371" - "\377\377\377\352\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\070\377\377\377\372\377\377\377\377" - "\377\377\377\275\377\377\377\253\377\377\377\374\377\377\377\376\377\377" - "\377s\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377r\377\377" - "\377\314\377\377\377\304\377\377\377\332\377\377\377\377\377\377\377\321" - "\377\377\377\307\377\377\377\271\377\377\377\013\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\263\377\377\377\377\377\377\377\377\377\377\377" - "\350\377\377\377\307\377\377\377\322\377\377\377\321\377\377\377\310\377" - "\377\377\033\377\377\377\377\377\377\377\377\377\377\377\070\377\377\377\373" - "\377\377\377\377\377\377\377\325\377\377\377\242\377\377\377\275\377\377" - "\377\371\377\377\377\377\377\377\377\272\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377" - "\374\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377" - "\377\377\070\377\377\377\373\377\377\377\377\377\377\377\321\377\377\377\250" - "\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\234\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\033\377\377\377\362\377" - "\377\377\377\377\377\377\313\377\377\377\214\377\377\377\345\377\377\377" - "\377\377\377\377\322\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\326\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\302" - "\377\377\377\377\377\377\377\346\377\377\377\226\377\377\377\201\377\377" - "\377\320\377\377\377\377\377\377\377\347\377\377\377\013\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\307\377" - "\377\377\250\377\377\377\335\377\377\377\377\377\377\377\356\377\377\377" - "\033\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\232\377\377\377\377\377\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\232\377\377\377\377\377\377\377\377\377\377\377\343\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\207\377\377\377\374\377\377\377\266\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377V\377\377\377\375\377\377\377\247\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\306\377\377\377\377\377\377\377\376\377\377\377" - "l\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013" - "\377\377\377\355\377\377\377\352\000\000\000\000\377\377\377s\377\377\377\314\377" - "\377\377\315\377\377\377v\377\377\377\245\377\377\377%\377\377\377\377\377" - "\377\377\377\377\377\377K\377\377\377\373\377\377\377\360\377\377\377\033" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\376\377\377\377~\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377" - "\377\377\335\377\377\377\275\377\377\377\310\377\377\377\366\377\377\377" - "\377\377\377\377\346\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000" - "\000\377\377\377\013\377\377\377\342\377\377\377\377\377\377\377\370\377\377" - "\377\300\377\377\377\276\377\377\377\371\377\377\377\377\377\377\377\227" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312\377\377\377\377" - "\377\377\377\325\377\377\377\303\377\377\377\361\377\377\377\377\377\377" - "\377\375\377\377\377f\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377K\377\377\377\374\377\377\377\362\377\377\377\316\377\377\377\316" - "\377\377\377\316\377\377\377\322\377\377\377\273\377\377\377\013\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377\366" - "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\070\377\377\377\371\377\377\377\377\377\377" - "\377\352\377\377\377\271\377\377\377\321\377\377\377\375\377\377\377\372" - "\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377" - "\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355" - "\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377u\377\377\377\325\377\377\377\316\377\377\377\371\377\377\377\373" - "\377\377\377\320\377\377\377\322\377\377\377\207\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\302\377\377\377\377\377\377\377\365" - "\377\377\377\266\377\377\377\324\377\377\377\377\377\377\377\375\377\377" - "\377=\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377" - "\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\070\377\377\377\372" - "\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\013\377\377\377\356\377\377\377\376\377\377\377\320\377\377\377\316" - "\377\377\377\316\377\377\377\316\377\377\377\322\377\377\377V\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377" - "%\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376" - "\377\377\377l\000\000\000\000\377\377\377\013\377\377\377\352\377\377\377\377\377" - "\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "j\377\377\377\375\377\377\377\377\377\377\377\321\377\377\377\302\377\377" - "\377\375\377\377\377\377\377\377\377\234\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377j\377\377\377\375\377\377\377\377\377\377\377\320\377" - "\377\377\307\377\377\377\375\377\377\377\377\377\377\377\216\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377" - "\377\377\252\000\000\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377" - "\336\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\351" - "\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\264\377\377" - "\377\351\377\377\377\377\377\377\377\343\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377" - "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377b\377\377\377\375\377\377\377\377\377\377\377\325\377" - "\377\377\307\377\377\377\374\377\377\377\377\377\377\377\227\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377" - "\377\377\377\377\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377" - "\377\377\375\377\377\377_\377\377\377\033\377\377\377\365\377\377\377\377" - "\377\377\377\322\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\253\377\377\377\377\377\377\377\322\000\000\000\000\000\000\000\000\377\377\377\275" - "\377\377\377\377\377\377\377\315\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377\366\377" - "\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\334\377\377\377\377\377\377\377\372\377\377\377\310\377\377" - "\377\316\377\377\377\316\377\377\377\321\377\377\377\310\377\377\377%\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377" - "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317" - "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377" - "\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\307\377\377" - "\377\377\377\377\377\336\377\377\377\233\377\377\377\305\377\377\377\376" - "\377\377\377\377\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\376\377\377\377\307" - "\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377\272\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377!\377\377\377\366\377" - "\377\377\377\377\377\377\346\377\377\377\271\377\377\377\270\377\377\377" - "\365\377\377\377\375\377\377\377M\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377\257\377\377" - "\377\302\377\377\377\376\377\377\377\377\377\377\377\332\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377`\377\377\377\374\377\377\377" - "\377\377\377\377\332\377\377\377\233\377\377\377\260\377\377\377\367\377" - "\377\377\316\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377U\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377" - "\377\377\377\377\377\342\377\377\377\242\377\377\377\237\377\377\377\246" - "\377\377\377\247\377\377\377X\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377" - "\377\013\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356" - "\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377" - "\377\366\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377K\377\377\377\375\377\377\377\245\000\000\000\000\000\000\000\000\377\377" - "\377\233\377\377\377\377\377\377\377\356\377\377\377%\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377" - "\377\376\377\377\377\302\377\377\377\262\377\377\377\322\377\377\377\033\377" - "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\361\377\377\377\333" - "\000\000\000\000\377\377\377\320\377\377\377\371\377\377\377%\377\377\377\223\377" - "\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013" - "\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\214\377\377\377\377\377\377\377\376\377\377\377" - "\274\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377\265\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377" - "\377\377\377\377\376\377\377\377\307\377\377\377\255\377\377\377\370\377" - "\377\377\377\377\377\377\272\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377\257\377" - "\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377" - "\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\341\377\377\377\377\377\377\377\335" - "\377\377\377\233\377\377\377\213\377\377\377\306\377\377\377\377\377\377" - "\377\352\377\377\377\013\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\241\377\377\377\377\377\377\377\365\377\377\377\245\377" - "\377\377\255\377\377\377\325\377\377\377\062\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\275\377\377\377\377\377\377\377\361\377\377\377\252" - "\377\377\377\331\377\377\377\377\377\377\377\377\377\377\377\332\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\266" - "\377\377\377\377\377\377\377\377\377\377\377\336\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\240\377\377\377\377" - "\377\377\377\377\377\377\377\207\377\377\377K\377\377\377\374\377\377\377" - "\377\377\377\377\315\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377U\377\377\377\374\377\377\377\372\377\377\377\070\377\377\377!\377" - "\377\377\366\377\377\377\376\377\377\377\177\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\377\377\377" - "\377\377\377\377\377\352\377\377\377\013\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\267\377\377\377\377\377\377\377\377\377" - "\377\377\311\377\377\377\302\377\377\377\304\377\377\377\304\377\377\377" - "\271\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\013\377\377\377\361\377\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377b\377\377\377\374\377\377\377\377\377\377\377\225\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\377\377\377\316\377\377\377\333\000\000\000\000\377" - "\377\377\316\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377w\377\377\377\343\377\377" - "\377\375\377\377\377\201\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\377\377\377\013\377\377\377\244\377\377\377\013\000\000\000\000\000\000\000\000\377" - "\377\377\302\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377" - "Z\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377~\377\377\377\370\377" - "\377\377\377\377\377\377\377\377\377\377\376\377\377\377\275\377\377\377" - "\266\377\377\377\376\377\377\377\323\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\335\377\377\377\376\377\377\377~\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377" - "\373\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\377\377\377" - "\357\377\377\377\377\377\377\377\364\377\377\377)\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\377\377\377\377" - "\244\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\377\377\377\232\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377l\377\377\377\367\377\377\377\377\377\377\377\377\377\377\377\376" - "\377\377\377\223\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377)\377" - "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\355\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\360\377\377\377\033\377\377\377\377\377\377\377\377\000" - "\000\000\000\377\377\377j\377\377\377\350\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\376\377\377\377\302\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377" - "\377\377\372\377\377\377\316\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377u\377\377\377\351\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\373\377\377\377\254\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377S\377\377\377\354\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\377\377\377" - "\033\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\214\377\377\377\377\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\315\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\342\377\377\377\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\177\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\342\377\377\377\062\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\377" - "\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\377\377\377\357\377\377\377\377\377" - "\377\377\364\377\377\377)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377" - "\377\377M\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\375\377\377\377\\\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "\255\377\377\377\377\377\377\377\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377" - "\377\377\377\377\276\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\240\377" - "\377\377\377\377\377\377\266\377\377\377\377\377\377\377\377\000\000\000\000\377" - "\377\377\215\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\370\377\377\377\312\377\377\377%\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\316\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\255\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\305\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\330\377" - "\377\377V\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377K\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\372\377\377\377)\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\366\377" - "\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\377\377\377I\377\377\377\345\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\370\377\377\377\241\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\375\377" - "\377\377\\\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\355" - "\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\336\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\013\377\377\377\316\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\373\377\377\377\213\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377" - "\377\252\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\247\377\377\377\377\377\377" - "\377\326\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377" - "\351\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\376\377\377\377_\377\377\377\377\377\377\377\377" - "\000\000\000\000\377\377\377\313\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\344\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\307\377\377\377\375\377\377\377Q\000\000\000\000\000\000\000\000" - "\377\377\377\204\377\377\377\377\377\377\377\327\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\371\377\377" - "\377\377\377\377\377\377\377\377\377\376\377\377\377\240\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377\377\377" - "\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\370" - "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\241\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377" - "\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\356\377" - "\377\377\376\377\377\377v\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377\025\377\377\377\316\377\377\377\376\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\335\377\377\377)\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377" - "\364\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\233\377\377\377\375\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\276\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\372\377" - "\377\377\376\377\377\377|\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377u\377\377\377\375\377\377\377\355\377\377\377" - "\033\000\000\000\000\377\377\377\320\377\377\377\377\377\377\377\244\000\000\000\000\377\377" - "\377\377\377\377\377\377\377\377\377\033\377\377\377\366\377\377\377\372\377" - "\377\377=\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\362\377\377\377\376" - "\377\377\377_\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\013\377\377\377\351\377\377\377\364\377\377\377%\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\356\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\376\377\377\377l\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377" - "\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\377\377\377" - "\377\277\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\377\377\377\065\377\377\377\347\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\303\377\377\377\362\377\377" - "\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224" - "\377\377\377\377\377\377\377\345\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\307\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377I\377\377\377\345\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\373\377\377\377\260\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\310\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\326\377\377\377\367\377\377\377" - "\315\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - "l\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\370\377\377\377\231\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\322\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377" - "I\377\377\377\373\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\216\377\377\377\377" - "\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000" - "\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\355\377\377\377\033" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\013\377\377\377\351\377\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\013\377\377\377\355\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377" - "\252\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377" - "\304\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\223\377\377\377\375\377\377\377\377\377\377\377\377\377\377\377" - "\372\377\377\377M\377\377\377\377\377\377\377\377\377\377\377\013\377\377" - "\377\361\377\377\377\333\000\000\000\000\377\377\377\275\377\377\377\371\377\377" - "\377%\377\377\377\223\377\377\377\377\377\377\377\252\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000" - "\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\355\377\377\377\033\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\240\377\377\377" - "\374\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\275\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377" - "\377\377\377\377\377\377\352\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\307\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\377\377\377\310\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\337\377\377\377\377\377\377\377\332\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377\375\377" - "\377\377_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377c\377\377\377\330\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\354\377\377\377Z\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377" - "\377\377\333\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\375\377\377\377_\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\033" - "\377\377\377\350\377\377\377\377\377\377\377\377\377\377\377\376\377\377" - "\377\255\377\377\377\362\377\377\377\323\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\372\377\377\377" - "\376\377\377\377\206\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377b\377\377\377\374\377\377\377\372\377\377\377I\377" - "\377\377\013\377\377\377\355\377\377\377\377\377\377\377\243\000\000\000\000\377\377" - "\377\377\377\377\377\377\377\377\377\013\377\377\377\345\377\377\377\376\377" - "\377\377\214\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\374\377\377\377\363" - "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\335\377\377\377\377\377\377\377\236\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\355\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\372\377\377\377)\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\360\377\377\377\333" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377Q\377\377\377n\377\377\377\013\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377\377e\377\377" - "\377\033\000\000\000\000\000\000\000\000\371\371\377.\377\377\377\065\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377V\377\377\377\374\377\377\377\364\377\377\377\062\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377" - "\013\377\377\377\343\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\033\377\377\377\371\377\377\377\334\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377X\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377" - "\377\377\341\377\377\377\375\377\377\377=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377e\377\377\377l\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377" - "\377\377X\377\377\377S\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377@\377\377\377e\377\377\377c\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377S\377\377\377K\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377)\377\377\377e\377\377\377n\377\377\377\070\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377_\377\377\377p\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377E\377\377\377X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\371" - "\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377`\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377\033\377\377\377\362\377\377\377" - "\376\377\377\377\255\377\377\377\065\377\377\377V\377\377\377\322\377\377" - "\377\255\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377)\377\377\377X\377\377\377V\377\377\377\013\000" - "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377" - "\377m\377\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\371\371\377.\377\377\377m\377\377\377c\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377\377c\377\377\377" - "\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\320" - "\377\377\377\377\377\377\377\333\377\377\377\033\377\377\377E\377\377\377" - "\013\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377e\377\377\377e\377\377" - "\377\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "e\377\377\377n\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377U\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\361\377\377\377\366\377" - "\377\377%\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\216\377\377\377\233\377\377\377\232\377\377\377" - "\232\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377\237\377" - "\377\377=\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377U\377\377\377n\377\377\377\065" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377n\377\377\377\070\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377@\377\377\377m\377\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377@\377\377" - "\377p\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377Q\377\377\377p\377\377" - "\377X\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\324\377\377\377\376\377" - "\377\377|\377\377\377S\377\377\377V\377\377\377K\377\377\377\263\377\377" - "\377\377\377\377\377\252\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\362\377\377\377\360\377" - "\377\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377)\377\377\377p\377\377\377c\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377\377f\377" - "\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\377\377\377\224\377\377\377\376\377\377\377U\377\377\377@\377\377\377" - "e\377\377\377\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377@\377\377\377p\377\377\377I\377\377\377" - ";\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\013\377\377\377e\377\377\377e\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377O\377\377\377X\377\377\377U\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377j\377\377\377n\377\377\377\033" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\033\377\377\377\362\377\377\377\367\377\377\377)\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\356" - "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377" - "%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\372\377\377\377)\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\267\377\377\377\345\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\237\377\377\377\377\377\377" - "\377\361\377\377\377\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\377\377\377\331\377\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\062\377\377\377\337\377\377\377\377\377\377\377\236" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\377\377\377b\377\377\377\376\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\062\377\377\377\337\377\377\377\377\377\377\377\236" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377\344\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\270\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377\362" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\210\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377" - "\377\377\377\377\377\370\377\377\377\364\377\377\377\372\377\377\377\243" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\225\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\205\377\377\377\371" - "\377\377\377\364\377\377\377\364\377\377\377\377\377\377\377\260\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\377\377\377\013\377\377\377\370\377\377\377\377\377\377\377" - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\377m\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377" - "\345\377\377\377\375\377\377\377f\000\000\000\000\000\000\000\000\377\377\377\062\377\377" - "\377\326\377\377\377\377\377\377\377\245\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377\234\377\377\377\205\377\377\377I\377\377\377" - "\272\377\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374\377" - "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377i\377\377" - "\377\203\377\377\377\337\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\275\377\377" - "\377\377\377\377\377\377\377\377\377\373\377\377\377\243\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313" - "\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\377\377\377\177\377\377\377\372\377\377\377\376\377" - "\377\377\377\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\253\377\377\377\340\377\377\377%\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\377\377\377\310\377\377\377\307\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\377\377\377\377" - "\276\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377u\377\377\377\325\377\377\377w\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\377\377\377\377\276" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\213\377" - "\377\377\203\377\377\377\070\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\251\377\377\377" - "\322\377\377\377\316\377\377\377m\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\263\377\377\377\263\377\377\377" - "\263\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377G\377\377\377" - "\317\377\377\377w\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377" - "\377i\377\377\377\266\377\377\377\263\377\377\377\263\377\377\377\262\377" - "\377\377_\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377`\377\377\377y\377\377" - "\377y\377\377\377y\377\377\377y\377\377\377y\377\377\377y\377\377\377x\377" - "\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\237\377\377\377\377" - "\377\377\377\377\377\377\377\370\377\377\377\370\377\377\377\377\377\377" - "\377\377\377\377\377\325\377\377\377\033\377\377\377\377\377\377\377\377\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\377\377\377;\377\377\377\374\377\377\377\377\377\377\377\377\377\377" - "\377\377\377\377\377\376\377\377\377z\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\377\377\377\233\377\377\377\377\377\377\377l\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377V\377\377\377\376\377" - "\377\377\327\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\361" - "\377\377\377\377\377\377\377\377\377\377\377\325\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377v\377" - "\377\377\246\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\372" - "\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\377\377\377i\377\377\377\266\377\377\377\255\377\377\377\214\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377s\377\377\377|\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377s\377\377\377|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\000\000\000\000\377\377\377_\377\377\377\266\377\377\377\321\377" - "\377\377\316\377\377\377\271\377\377\377q\000\000\000\000\000\000\000\000\377\377\377\377" - "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\377\377\377`\377\377\377\245\377\377\377" - "\267\377\377\377\247\377\377\377=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377" - "\377\377\000\000\000\000\377\377\377E\377\377\377\212\377\377\377%\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\211" - "\377\377\377=\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377" - "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377v\377\377" - "\377\232\377\377\377q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377" - "\377\377\313\377\377\377\363\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\377\377\377\377\377", -}; - diff --git a/minilibx_beta/interface.swift b/minilibx_beta/interface.swift deleted file mode 100644 index 97d6b81..0000000 --- a/minilibx_beta/interface.swift +++ /dev/null @@ -1,292 +0,0 @@ - -import Cocoa - -import mlx_window -import mlx_image -import mlx_init - - - -func _mlx_bridge<T : AnyObject>(obj : T) -> UnsafeRawPointer { - return UnsafeRawPointer(Unmanaged.passUnretained(obj).toOpaque()) -} - -func _mlx_bridge_retained<T : AnyObject>(obj : T) -> UnsafeRawPointer { - return UnsafeRawPointer(Unmanaged.passRetained(obj).toOpaque()) -} - -func _mlx_bridge<T : AnyObject>(ptr : UnsafeRawPointer) -> T { - return Unmanaged<T>.fromOpaque(ptr).takeUnretainedValue() -} - -func _mlx_bridge_transfer<T : AnyObject>(ptr : UnsafeRawPointer) -> T { - return Unmanaged<T>.fromOpaque(ptr).takeRetainedValue() -} - - -let MLX_SYNC_IMAGE_WRITABLE = Int32(1) -let MLX_SYNC_WIN_FLUSH_CMD = Int32(2) -let MLX_SYNC_WIN_CMD_COMPLETED = Int32(3) - - - -/// C decl - - -@_cdecl("mlx_init") -public func mlx_init_swift() -> UnsafeRawPointer -{ - let mm = MlxMain() - return (_mlx_bridge_retained(obj:mm)) -} - - -@_cdecl("mlx_loop") -public func mlx_loop_swift(_ mlxptr:UnsafeRawPointer) -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - mlx.inLoop = true - NSApp.run() -} - - -@_cdecl("mlx_new_window") -public func mlx_new_window_swift(_ mlxptr:UnsafeRawPointer, Width w:UInt32, Height h:UInt32, Title t:UnsafePointer<CChar>) -> UnsafeRawPointer -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - let mw = MlxWin(device: mlx.device, width: Int(w), height: Int(h), title: String(cString: t)) - mw.setNotifs() - mw.initMetal() - mlx.addWinToList(mw) - return (_mlx_bridge_retained(obj:mw)) -} - - - -@_cdecl("mlx_key_hook") -public func mlx_key_hook_swift(_ winptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - win.addHook(index: 3, fct: fctptr, param: paramptr) - return (Int32(0)); -} - - -@_cdecl("mlx_mouse_hook") -public func mlx_mouse_hook_swift(_ winptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - win.addHook(index: 4, fct: fctptr, param: paramptr) - return (Int32(0)); -} - - -@_cdecl("mlx_hook") -public func mlx_hook_swift(_ winptr:UnsafeRawPointer, _ xevent:Int32, _ xmask:Int32, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - win.addHook(index: Int(xevent), fct: fctptr, param: paramptr) - return (Int32(0)); -} - - -@_cdecl("mlx_expose_hook") -public func mlx_expose_hook_swift(_ winptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - win.addHook(index: 12, fct: fctptr, param: paramptr) - return (Int32(0)); -} - -@_cdecl("mlx_loop_hook") -public func mlx_loop_hook_swift(_ mlxptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32 -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - mlx.addLoopHook(fctptr, paramptr) - return (Int32(0)); -} - - -@_cdecl("mlx_do_key_autorepeatoff") -public func mlx_do_key_autorepeatoff_swift(_ mlxptr:UnsafeRawPointer) -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - mlx.winList.forEach{ $0.setKeyRepeat(0) } -} - - -@_cdecl("mlx_do_key_autorepeaton") -public func mlx_do_key_autorepeatoon_swift(_ mlxptr:UnsafeRawPointer) -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - mlx.winList.forEach{ $0.setKeyRepeat(1) } -} - - -@_cdecl("mlx_clear_window") -public func mlx_clear_window_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer) -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - win.clearWin() -} - - -@_cdecl("mlx_pixel_put") -public func mlx_pixel_put_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer, _ x:Int32, _ y:Int32, _ color:UInt32) -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - win.pixelPut(x, y, color) -} - - -@_cdecl("mlx_get_color_value") -public func mlx_get_color_value(_ mlxptr:UnsafeRawPointer, _ color:UInt32) -> UInt32 -{ - return color -} - - -@_cdecl("mlx_new_image") -public func mlx_new_image(_ mlxptr:UnsafeRawPointer, _ width:Int32, _ height:Int32) -> UnsafeRawPointer -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - let img = MlxImg(d:mlx.device, w:Int(width), h:Int(height)) - mlx.addImgToList(img) -/// print(CFGetRetainCount(img)) - return (_mlx_bridge_retained(obj:img)) - -} - -@_cdecl("mlx_get_data_addr") -public func mlx_get_data_addr_swift(_ imgptr:UnsafeRawPointer, _ bpp:UnsafeMutablePointer<Int32>, _ sizeline:UnsafeMutablePointer<Int32>, _ endian:UnsafeMutablePointer<Int32>) -> UnsafeMutablePointer<UInt32> -{ - let img:MlxImg = _mlx_bridge(ptr:imgptr) - bpp.pointee = 32 - sizeline.pointee = Int32(img.texture_sizeline) - endian.pointee = Int32(0) - return img.texture_data -} - -@_cdecl("mlx_put_image_to_window") -public func mlx_put_image_to_window_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer, _ imgptr:UnsafeRawPointer, _ x:Int32, _ y:Int32) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - let img:MlxImg = _mlx_bridge(ptr:imgptr) - win.putImage(image:img, x:x, y:y) - return Int32(0) -} - -@_cdecl("mlx_put_image_to_window_scale") -public func mlx_put_image_to_window_scale_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer, _ imgptr:UnsafeRawPointer, _ sx:Int32, _ sy:Int32, _ sw:Int32, _ sh:Int32, _ dx:Int32, _ dy:Int32, _ dw:Int32, _ dh:Int32, _ color:UInt32) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - let img:MlxImg = _mlx_bridge(ptr:imgptr) - win.putImageScale(image:img, sx:sx, sy:sy, sw:sw, sh:sh, dx:dx, dy:dy, dw:dw, dh:dh, c:color) - return Int32(0) -} - -@_cdecl("mlx_do_sync") -public func mlx_do_sync_swift(_ mlxptr:UnsafeRawPointer) -> Int32 -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - mlx.winList.forEach { $0.flushImages() } - mlx.winList.forEach { $0.waitForGPU() } - return Int32(0) -} - -@_cdecl("mlx_sync") -public func mlx_sync_swift(_ what:Int32, _ param:UnsafeRawPointer) -> Int32 -{ - switch what - { - case MLX_SYNC_IMAGE_WRITABLE: - let img:MlxImg = _mlx_bridge(ptr:param); while img.onGPU > 0 {} - case MLX_SYNC_WIN_FLUSH_CMD: - let win:MlxWin = _mlx_bridge(ptr:param); win.flushImages() - case MLX_SYNC_WIN_CMD_COMPLETED: - let win:MlxWin = _mlx_bridge(ptr:param); win.flushImages(); win.waitForGPU() - default: - break - } - return Int32(0) -} - -@_cdecl("mlx_destroy_window") -public func mlx_destroy_window_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer) -> Int32 -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - /// bridge_transfer to get the retain, at end of this func should release the MlxWin object, because no ref anymore. - let win:MlxWin = _mlx_bridge_transfer(ptr:winptr) - win.delNotifs() - win.flushImages() - win.waitForGPU() - win.destroyWinE() - mlx.winList.removeAll(where: { $0 === win} ) - return Int32(0) -} - -@_cdecl("mlx_destroy_image") -public func mlx_destroy_image_swift(_ mlxptr:UnsafeRawPointer, _ imgptr:UnsafeRawPointer) -> Int32 -{ - let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - /// bridge_transfer to get the retain, at end of this func should release the MlxImg object, because no ref anymore. - let img:MlxImg = _mlx_bridge_transfer(ptr:imgptr) - mlx.winList.forEach { $0.flushImages() } - while img.onGPU > 0 {} - mlx.imgList.removeAll(where: { $0 === img} ) - return Int32(0) -} - - -@_cdecl("mlx_get_screen_size") -public func mlx_get_screen_size_swift(_ mlxptr:UnsafeRawPointer, _ sizex:UnsafeMutablePointer<Int32>, _ sizey:UnsafeMutablePointer<Int32>) -> Int32 -{ - /// let mlx:MlxMain = _mlx_bridge(ptr:mlxptr) - sizex.pointee = Int32(NSScreen.main!.frame.size.width) - sizey.pointee = Int32(NSScreen.main!.frame.size.height) - return Int32(0) -} - - -@_cdecl("mlx_mouse_hide") -public func mlx_mouse_hide_swift() -> Int32 -{ - NSCursor.hide() - return Int32(0) -} - -@_cdecl("mlx_mouse_show") -public func mlx_mouse_show_swift() -> Int32 -{ - NSCursor.unhide() - return Int32(0) -} - - -@_cdecl("mlx_mouse_move") -public func mlx_mouse_move_swift(_ winptr:UnsafeRawPointer, _ x:Int32, _ y:Int32) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - let frame = win.getWinEFrame() -/// let sframe = win.getScreenFrame() - var pt = CGPoint() - pt.x = frame.origin.x + CGFloat(x) -/// pt.y = sframe.size.y - frame.size.y - frame.origin.y + 1 + y - pt.y = frame.origin.y + frame.size.height - 1.0 - CGFloat(y) - CGWarpMouseCursorPosition(pt) - CGAssociateMouseAndMouseCursorPosition(UInt32(1)) - return Int32(0); -} - - - -@_cdecl("mlx_mouse_get_pos") -public func mlx_mouse_get_pos_swift(_ winptr:UnsafeRawPointer, _ x:UnsafeMutablePointer<Int32>, _ y:UnsafeMutablePointer<Int32>) -> Int32 -{ - let win:MlxWin = _mlx_bridge(ptr:winptr) - let frame = win.getWinEFrame() - let point = win.getMouseLoc() - x.pointee = Int32(point.x) - y.pointee = Int32(frame.size.height - 1.0 - point.y) - return Int32(0) -} diff --git a/minilibx_beta/man/man3/mlx.3 b/minilibx_beta/man/man3/mlx.3 deleted file mode 100644 index 4c7e29b..0000000 --- a/minilibx_beta/man/man3/mlx.3 +++ /dev/null @@ -1,110 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Simple Window Interface Library for students -.SH SYNOPSYS -#include <mlx.h> - -.nf -.I void * -.fi -.B mlx_init -(); - -.SH DESCRIPTION -MiniLibX is an easy way to create graphical software, -without any X-Window/X11 programming knowledge under Unix/Linux, nor -any AppKit programming knowledge under MacOS. It provides -simple window creation, a drawing tool, image and basic events -management. - -.SH Unix/Linux: X-WINDOW CONCEPT - -X-Window is a network-oriented graphical system for Unix. -It is based on two main parts: -.br -On one side, your software wants to draw something on the screen and/or -get keyboard & mouse entries. -.br -On the other side, the X-Server manages the screen, keyboard and mouse -(It is often refered to as a "display"). -.br -A network connection must be established between these two entities to send -drawing orders (from the software to the X-Server), and keyboard/mouse -events (from the X-Server to the software). -.br -Nowadays, most of the time, both run on the same computer. - -.SH MacOS: WINDOW SERVER AND GPU - -Your software interacts directly with the Window server who handles the -cohabitation on the screen with other software and the event system, -and interacts with the GPU to handle all drawing stuff. - -.SH INCLUDE FILE -.B mlx.h -should be included for a correct use of the MiniLibX API. -It only contains function prototypes, no structure is needed. - -.SH LIBRARY FUNCTIONS -.P -First of all, you need to initialize the connection -between your software and the display. -Once this connection is established, you'll be able to -use other MiniLibX functions to send and receive the messages from -the display, like "I want to draw a yellow pixel in this window" or -"did the user hit a key?". -.P -The -.B mlx_init -function will create this connection. No parameters are needed, ant it will -return a -.I "void *" -identifier, used for further calls to the library routines. -.P -All other MiniLibX functions are described in the following man pages: - -.TP 20 -.B mlx_new_window -: manage windows -.TP 20 -.B mlx_pixel_put -: draw inside window -.TP 20 -.B mlx_new_image -: manipulate images -.TP 20 -.B mlx_loop -: handle keyboard or mouse events - -.SH LINKING MiniLibX -To use MiniLibX functions, you may need to link -your software with several libraries, including the MiniLibX library itself. -On Unix/Linux, simply add the following arguments at linking time: - -.B -lmlx -lXext -lX11 - -On MacOS, the dynamic Metal library will find on its own the missing components: - -.B -lmlx - -and still on MacOS, the static OpenGL version will need: - -.B -lmlx -framework OpenGL -framework AppKit -lz - -You may also need to specify the path to these libraries, using -the -.B -L -flag. - - -.SH RETURN VALUES -If -.B mlx_init() -fails to set up the connection to the display, it will return NULL, otherwise -a non-null pointer is returned as a connection identifier. - -.SH SEE ALSO -mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2019 - Olivier Crouzet diff --git a/minilibx_beta/man/man3/mlx_loop.3 b/minilibx_beta/man/man3/mlx_loop.3 deleted file mode 100644 index ab3798c..0000000 --- a/minilibx_beta/man/man3/mlx_loop.3 +++ /dev/null @@ -1,144 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Handle events -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_loop -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_key_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_mouse_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_expose_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_loop_hook -( -.I void *mlx_ptr, int (*funct_ptr)(), void *param -); - -.SH EVENTS - -The graphical system is bi-directionnal. On one hand, the program sends orders to -the screen to display pixels, images, and so on. On the other hand, -it can get information from the keyboard and mouse associated to -the screen. To do so, the program receives "events" from the keyboard or the -mouse. - -.SH DESCRIPTION - -To receive events, you must use -.B mlx_loop -(). This function never returns. It is an infinite loop that waits for -an event, and then calls a user-defined function associated with this event. -A single parameter is needed, the connection identifier -.I mlx_ptr -(see the -.B mlx manual). - -You can assign different functions to the three following events: -.br -- A key is pressed -.br -- The mouse button is pressed -.br -- A part of the window should be re-drawn -(this is called an "expose" event, and it is your program's job to handle it in the -Unix/Linux X11 environment, but at the opposite it never happens on MacOS). -.br - -Each window can define a different function for the same event. - -The three functions -.B mlx_key_hook -(), -.B mlx_mouse_hook -() and -.B mlx_expose_hook -() work exactly the same way. -.I funct_ptr -is a pointer to the function you want to be called -when an event occurs. This assignment is specific to the window defined by the -.I win_ptr -identifier. The -.I param -adress will be passed to the function everytime it is called, and should be -used to store the parameters it might need. - -The syntax for the -.B mlx_loop_hook -() function is identical to the previous ones, but the given function will be -called when no event occurs. - -When it catches an event, the MiniLibX calls the corresponding function -with fixed parameters: -.nf - - expose_hook(void *param); - key_hook(int keycode, void *param); - mouse_hook(int button, int x, int y, void *param); - loop_hook(void *param); - -.fi -These function names are arbitrary. They here are used to distinguish -parameters according to the event. These functions are NOT part of the -MiniLibX. - -.I param -is the address specified in the mlx_*_hook calls. This address is never -used nor modified by the MiniLibX. On key and mouse events, additional -information is passed: -.I keycode -tells you which key is pressed (with X11, look for the include file "keysymdef.h", -with MacOS, just try :) ), -( -.I x -, -.I y -) are the coordinates of the mouse click in the window, and -.I button -tells you which mouse button was pressed. - -.SH GOING FURTHER WITH EVENTS -The MiniLibX provides a much generic access to other available events. The -.I mlx.h -include define -.B mlx_hook() -in the same manner mlx_*_hook functions work. The event and mask values -will be taken from the X11 include file "X.h". Some MacOS events are mapped -to these values, when it makes sense, and the mask is not used in MacOS. - -See source code of the MiniLibX to find out how it will -call your own function for a specific event. - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3) - -.SH AUTHOR -Copyright ol@ - 2002-2019 - Olivier Crouzet diff --git a/minilibx_beta/man/man3/mlx_new_image.3 b/minilibx_beta/man/man3/mlx_new_image.3 deleted file mode 100644 index ecea0ee..0000000 --- a/minilibx_beta/man/man3/mlx_new_image.3 +++ /dev/null @@ -1,206 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Manipulating images -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_image -( -.I void *mlx_ptr, int width, int height -); - -.nf -.I char * -.fi -.B mlx_get_data_addr -( -.I void *img_ptr, int *bits_per_pixel, int *size_line, int *endian -); - -.nf -.I int -.fi -.B mlx_put_image_to_window -( -.I void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y -); - -.nf -.I unsigned int -.fi -.B mlx_get_color_value -( -.I void *mlx_ptr, int color -); - -.nf -.I void * -.fi -.B mlx_xpm_to_image -( -.I void *mlx_ptr, char **xpm_data, int *width, int *height -); - -.nf -.I void * -.fi -.B mlx_xpm_file_to_image -( -.I void *mlx_ptr, char *filename, int *width, int *height -); - -.nf -.I void * -.fi -.B mlx_png_file_to_image -( -.I void *mlx_ptr, char *filename, int *width, int *height -); - -.nf -.I int -.fi -.B mlx_destroy_image -( -.I void *mlx_ptr, void *img_ptr -); - - -.SH DESCRIPTION - -.B mlx_new_image -() creates a new image in memory. It returns a -.I void * -identifier needed to manipulate this image later. It only needs -the size of the image to be created, using the -.I width -and -.I height -parameters, and the -.I mlx_ptr -connection identifier (see the -.B mlx -manual). - -The user can draw inside the image (see below), and -can dump the image inside a specified window at any time to -display it on the screen. This is done using -.B mlx_put_image_to_window -(). Three identifiers are needed here, for the connection to the -display, the window to use, and the image (respectively -.I mlx_ptr -, -.I win_ptr -and -.I img_ptr -). The ( -.I x -, -.I y -) coordinates define where the image should be placed in the window. - -.B mlx_get_data_addr -() returns information about the created image, allowing a user -to modify it later. The -.I img_ptr -parameter specifies the image to use. The three next parameters should -be the addresses of three different valid integers. -.I bits_per_pixel -will be filled with the number of bits needed to represent a pixel color -(also called the depth of the image). -.I size_line -is the number of bytes used to store one line of the image in memory. -This information is needed to move from one line to another in the image. -.I endian -tells you wether the pixel color in the image needs to be stored in -little endian ( -.I endian -== 0), or big endian ( -.I endian -== 1). - -.B mlx_get_data_addr -returns a -.I char * -address that represents the begining of the memory area where the image -is stored. From this adress, the first -.I bits_per_pixel -bits represent the color of the first pixel in the first line of -the image. The second group of -.I bits_per_pixel -bits represent the second pixel of the first line, and so on. -Add -.I size_line -to the adress to get the begining of the second line. You can reach any -pixels of the image that way. - -.B mlx_destroy_image -destroys the given image ( -.I img_ptr -). - -.SH STORING COLOR INSIDE IMAGES - -Depending on the display, the number of bits used to store a pixel color -can change. The user usually represents a color in RGB mode, using -one byte for each component (see -.B mlx_pixel_put -manual). This must be translated to fit the -.I bits_per_pixel -requirement of the image, and make the color understandable to the display. -That is the purpose of the -.B mlx_get_color_value -() function. It takes a standard RGB -.I color -parameter, and returns an -.I unsigned int -value. -The -.I bits_per_pixel -least significant bits of this value can be stored in the image. You can -avoid using this function if there is no conversion needed (eg. in case of -24 bits depth, or 32 bits depth). - -Keep in mind that the least significant bits position depends on the local -computer's endian. If the endian of the image differs from the local endian -(which shoud only occurs in a X11 network environment), then the value should -be transformed before being used. - -.SH XPM AND PNG IMAGES - -The -.B mlx_xpm_to_image -() , -.B mlx_xpm_file_to_image -() and -.B mlx_png_file_to_image -() functions will create a new image the same way. -They will fill it using the specified -.I xpm_data -or -.I filename -, depending on which function is used. -Note that MiniLibX does not use the standard -Xpm and png libraries to deal with xpm and png images. You may not be able to -read all types of xpm and png images. It however handles transparency. - -.SH RETURN VALUES -The four functions that create images, -.B mlx_new_image() -, -.B mlx_xpm_to_image() -, -.B mlx_xpm_file_to_image() -and -.B mlx_png_file_to_image() -, will return NULL if an error occurs. Otherwise they return a non-null pointer -as an image identifier. - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2019 - Olivier Crouzet diff --git a/minilibx_beta/man/man3/mlx_new_window.3 b/minilibx_beta/man/man3/mlx_new_window.3 deleted file mode 100644 index cdfc098..0000000 --- a/minilibx_beta/man/man3/mlx_new_window.3 +++ /dev/null @@ -1,79 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Managing windows -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_window -( -.I void *mlx_ptr, int size_x, int size_y, char *title -); - -.nf -.I int -.fi -.B mlx_clear_window -( -.I void *mlx_ptr, void *win_ptr -); - -.nf -.I int -.fi -.B mlx_destroy_window -( -.I void *mlx_ptr, void *win_ptr -); - - -.SH DESCRIPTION -The -.B mlx_new_window -() function creates a new window on the screen, using the -.I size_x -and -.I size_y -parameters to determine its size, and -.I title -as the text that should be displayed in the window's title bar. -The -.I mlx_ptr -parameter is the connection identifier returned by -.B mlx_init -() (see the -.B mlx -man page). -.B mlx_new_window -() returns a -.I void * -window identifier that can be used by other MiniLibX calls. -Note that the MiniLibX -can handle an arbitrary number of separate windows. - -.B mlx_clear_window -() and -.B mlx_destroy_window -() respectively clear (in black) and destroy the given window. They both have -the same parameters: -.I mlx_ptr -is the screen connection identifier, and -.I win_ptr -is a window identifier. - -.SH RETURN VALUES -If -.B mlx_new_window() -fails to create a new window (for wathever reason), it will return NULL, -otherwise a non-null pointer is returned as a window identifier. -.B mlx_clear_window -and -.B mlx_destroy_window -right now return nothing. - -.SH SEE ALSO -mlx(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2019 - Olivier Crouzet diff --git a/minilibx_beta/man/man3/mlx_pixel_put.3 b/minilibx_beta/man/man3/mlx_pixel_put.3 deleted file mode 100644 index 52670a6..0000000 --- a/minilibx_beta/man/man3/mlx_pixel_put.3 +++ /dev/null @@ -1,85 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Drawing inside windows -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_pixel_put -( -.I void *mlx_ptr, void *win_ptr, int x, int y, int color -); - -.nf -.I int -.fi -.B mlx_string_put -( -.I void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string -); - - -.SH DESCRIPTION -The -.B mlx_pixel_put -() function draws a defined pixel in the window -.I win_ptr -using the ( -.I x -, -.I y -) coordinates, and the specified -.I color -\&. The origin (0,0) is the upper left corner of the window, the x and y axis -respectively pointing right and down. The connection -identifier, -.I mlx_ptr -, is needed (see the -.B mlx -man page). - -Parameters for -.B mlx_string_put -() have the same meaning. Instead of a simple pixel, the specified -.I string -will be displayed at ( -.I x -, -.I y -). - -Both functions will discard any display outside the window. This makes -.B mlx_pixel_put -slow. Consider using images instead. - -.SH COLOR MANAGEMENT -The -.I color -parameter has an integer type. The displayed color needs to be encoded -in this integer, following a defined scheme. All displayable colors -can be split in 3 basic colors: red, green and blue. Three associated -values, in the 0-255 range, represent how much of each color is mixed up -to create the original color. Theses three values must be set inside the -integer to display the right color. The three least significant bytes of -this integer are filled as shown in the picture below: - -.nf - | 0 | R | G | B | color integer - +---+---+---+---+ -.fi - - -While filling the integer, make sure you avoid endian problems. Remember -that the "blue" byte should always be the least significant one. - -Depending on hardware capabilities, the most significant bit can handle -transparency. Beware, at the opposite of the OpenGL classics, it does -not represent opacity. - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_new_image(3), mlx_loop(3) - - -.SH AUTHOR -Copyright ol@ - 2002-2019 - Olivier Crouzet diff --git a/minilibx_beta/mlx.h b/minilibx_beta/mlx.h deleted file mode 100644 index f24a7f7..0000000 --- a/minilibx_beta/mlx.h +++ /dev/null @@ -1,157 +0,0 @@ -/* -** mlx.h for MinilibX in -** -** Made by Charlie Root -** Login <ol@42.fr> -** -** Started on Mon Jul 31 16:37:50 2000 Charlie Root -** Last update Tue Oct 14 16:23:28 2019 Olivier Crouzet -*/ - -/* -** MinilibX - Please report bugs -*/ - - -/* -** -** This library is a simple framework to help 42 students -** create simple graphical apps. -** It only provides the minimum functions, it's students' job -** to create the missing pieces for their own project :) -** -** The MinilibX can load XPM and PNG images. -** Please note that both image loaders are incomplete, some -** image may not load. -** -** For historical reasons, the alpha byte represent transparency -** instead of opacity. -** Also, for compatibility reasons, prototypes may show inconsistant -** types. -** -** Only the dynamic library is available. It must be placed in an appropriate path. -** ./ is one of them. You can also use DYLD_LIBRARY_PATH -** -*/ - - -#ifndef MLX_H - -#define MLX_H - - -void *mlx_init(); -/* -** needed before everything else. -** return (void *)0 if failed -*/ - - -/* -** Basic actions -*/ - -void *mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title); -/* -** return void *0 if failed -*/ -int mlx_clear_window(void *mlx_ptr, void *win_ptr); -int mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color); -/* -** origin for x & y is top left corner of the window -** y down is positive -** color is 0xAARRGGBB format -** x and y must fit into the size of the window, no control is done on the values -*/ - - -/* -** Image stuff -*/ - -void *mlx_new_image(void *mlx_ptr,int width,int height); -/* -** return void *0 if failed -*/ -char *mlx_get_data_addr(void *img_ptr, int *bits_per_pixel, - int *size_line, int *endian); -/* -** endian : 0 = graphical sever is little endian, 1 = big endian -** usefull in a network environment where graphical app show on a remote monitor that can have a different endian -*/ -int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, - int x, int y); -unsigned int mlx_get_color_value(void *mlx_ptr, int color); - - -/* -** dealing with Events -*/ - -int mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param); -int mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param); -int mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param); - -int mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param); -int mlx_loop (void *mlx_ptr); - - -/* -** hook funct are called as follow : -** -** expose_hook(void *param); -** key_hook(int keycode, void *param); -** mouse_hook(int button, int x,int y, void *param); -** loop_hook(void *param); -** -*/ - - -/* -** Usually asked... -** mlx_string_put display may vary in size between OS and between mlx implementations -*/ - -int mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color, - char *string); -void *mlx_xpm_to_image(void *mlx_ptr, char **xpm_data, - int *width, int *height); -void *mlx_xpm_file_to_image(void *mlx_ptr, char *filename, - int *width, int *height); -void *mlx_png_file_to_image(void *mlx_ptr, char *file, int *width, int *height); - -int mlx_destroy_window(void *mlx_ptr, void *win_ptr); - -int mlx_destroy_image(void *mlx_ptr, void *img_ptr); - -/* -** generic hook system for all events, and minilibX functions that -** can be hooked. Some macro and defines from X11/X.h are needed here. -*/ - -int mlx_hook(void *win_ptr, int x_event, int x_mask, - int (*funct)(), void *param); - -int mlx_mouse_hide(); -int mlx_mouse_show(); -int mlx_mouse_move(void *win_ptr, int x, int y); -int mlx_mouse_get_pos(void *win_ptr, int *x, int *y); - -int mlx_do_key_autorepeatoff(void *mlx_ptr); -int mlx_do_key_autorepeaton(void *mlx_ptr); -int mlx_do_sync(void *mlx_ptr); - -#define MLX_SYNC_IMAGE_WRITABLE 1 -#define MLX_SYNC_WIN_FLUSH_CMD 2 -#define MLX_SYNC_WIN_CMD_COMPLETED 3 -int mlx_sync(int cmd, void *param); -/* -** image_writable can loop forever if no flush occurred. Flush is always done by mlx_loop. -** cmd_completed first flush then wait for completion. -** mlx_do_sync equals cmd_completed for all windows. -** cmd is one of the define, param will be img_ptr or win_ptr accordingly -*/ - -int mlx_get_screen_size(void *mlx_ptr, int *sizex, int *sizey); - -#endif /* MLX_H */ diff --git a/minilibx_beta/mlx_image.swift b/minilibx_beta/mlx_image.swift deleted file mode 100644 index 7c1fa9b..0000000 --- a/minilibx_beta/mlx_image.swift +++ /dev/null @@ -1,48 +0,0 @@ - - -import Metal - - -public class MlxImg -{ - public var texture: MTLTexture -/// var texture_buff: MTLBuffer - - public var texture_sizeline: Int - public var texture_data: UnsafeMutablePointer<UInt32> - public var texture_width: Int - public var texture_height: Int - - public var onGPU = 0 - - convenience public init(d device:MTLDevice, w width:Int, h height:Int) - { - self.init(d:device, w:width, h:height, t:0) - } - - public init(d device:MTLDevice, w width:Int, h height:Int, t target:Int) - { - texture_width = width - texture_height = height - texture_sizeline = width * 4 - texture_sizeline = 256 * (texture_sizeline / 256 + (texture_sizeline%256 >= 1 ? 1 : 0) ) - - let textureDesc = MTLTextureDescriptor() - textureDesc.width = texture_width - textureDesc.height = texture_height - textureDesc.usage = .shaderRead - if (target == 1) - { - textureDesc.usage = .renderTarget - textureDesc.storageMode = .private - } - textureDesc.pixelFormat = MTLPixelFormat.bgra8Unorm - let texture_buff = device.makeBuffer(length: texture_sizeline * height)! - texture = texture_buff.makeTexture(descriptor:textureDesc, offset:0, bytesPerRow:texture_sizeline)! - - let tmpptr = texture_buff.contents() - texture_data = tmpptr.assumingMemoryBound(to:UInt32.self) - } - - -}
\ No newline at end of file diff --git a/minilibx_beta/mlx_image.swiftdoc b/minilibx_beta/mlx_image.swiftdoc Binary files differdeleted file mode 100644 index f13ee3f..0000000 --- a/minilibx_beta/mlx_image.swiftdoc +++ /dev/null diff --git a/minilibx_beta/mlx_image.swiftmodule b/minilibx_beta/mlx_image.swiftmodule Binary files differdeleted file mode 100644 index 4d4ce55..0000000 --- a/minilibx_beta/mlx_image.swiftmodule +++ /dev/null diff --git a/minilibx_beta/mlx_init.swift b/minilibx_beta/mlx_init.swift deleted file mode 100644 index de6edf2..0000000 --- a/minilibx_beta/mlx_init.swift +++ /dev/null @@ -1,100 +0,0 @@ - -import Cocoa -import Metal -import mlx_window -import mlx_image - - -func _mlx_bridge<T : AnyObject>(obj : T) -> UnsafeMutableRawPointer? { - return UnsafeMutableRawPointer(Unmanaged.passUnretained(obj).toOpaque()) -} - -func _mlx_bridge<T : AnyObject>(ptr : UnsafeRawPointer) -> T { - return Unmanaged<T>.fromOpaque(ptr).takeUnretainedValue() -} - - - -public class MlxMain { - - public var winList = [MlxWin]() - public var imgList = [MlxImg]() - var myMlxApp:NSApplication? - public var device:MTLDevice! - var loopHook:UnsafeMutableRawPointer? - var loopParam:UnsafeMutableRawPointer - var loopHookTimer:CFRunLoopTimer? - public var inLoop = false - - public init(_ flag:Int = 0) - { - /// make app with top menubar - myMlxApp = NSApplication.shared - if (flag == 1) - { - NSApp.setActivationPolicy(NSApplication.ActivationPolicy.prohibited) /// for non clickable win, no top menu - } - else - { - NSApp.setActivationPolicy(NSApplication.ActivationPolicy.regular) - } - - device = MTLCreateSystemDefaultDevice()! - loopParam = UnsafeMutableRawPointer(&inLoop) /// dummy addr init - - /// Add observer anyway to flush pixels every loop. If loop_hook exists, call it. - var ocontext = CFRunLoopObserverContext(version:0, info:_mlx_bridge(obj:self), retain:nil, release:nil, copyDescription:nil) - let observer = CFRunLoopObserverCreate(kCFAllocatorDefault, CFRunLoopActivity.beforeWaiting.rawValue, true, 0, createOCallback(), &ocontext) - CFRunLoopAddObserver(CFRunLoopGetMain(), observer, CFRunLoopMode.commonModes) - - } - - public func addWinToList(_ win:MlxWin) - { winList.append(win) } - public func addImgToList(_ img:MlxImg) - { imgList.append(img) } - - - func doCallLoopHook() - { -/// if (loopHook != nil) -/// { - _ = (unsafeBitCast(loopHook!,to:(@convention(c)(UnsafeRawPointer)->Void).self))(loopParam) -/// } - } - - func createOCallback() -> CFRunLoopObserverCallBack - { - return { (cfRunloopObserver, cfrunloopactivity, info) -> Void in - let mlx:MlxMain = _mlx_bridge(ptr:info!) - mlx.winList.forEach { $0.flushImages() } -/// mlx.doCallLoopHook() - } - } - - func createTCallback() -> CFRunLoopTimerCallBack - { - return { (cfRunloopTimer, info) -> Void in - let mlx:MlxMain = _mlx_bridge(ptr:info!) - mlx.doCallLoopHook() - } - } - - public func addLoopHook(_ f:UnsafeMutableRawPointer?, _ p:UnsafeMutableRawPointer) - { - var tcontext = CFRunLoopTimerContext(version:0, info:_mlx_bridge(obj:self), retain:nil, release:nil, copyDescription:nil) - if (loopHook != nil) - { - CFRunLoopTimerInvalidate(loopHookTimer) - } - - loopHook = f - loopParam = p - if (loopHook != nil) - { - loopHookTimer = CFRunLoopTimerCreate(kCFAllocatorDefault, 0.0, 0.0001, 0, 0, createTCallback(), &tcontext) - CFRunLoopAddTimer(CFRunLoopGetMain(), loopHookTimer, CFRunLoopMode.commonModes) - } - } - -} diff --git a/minilibx_beta/mlx_init.swiftdoc b/minilibx_beta/mlx_init.swiftdoc Binary files differdeleted file mode 100644 index 922e521..0000000 --- a/minilibx_beta/mlx_init.swiftdoc +++ /dev/null diff --git a/minilibx_beta/mlx_init.swiftmodule b/minilibx_beta/mlx_init.swiftmodule Binary files differdeleted file mode 100644 index 9565cfc..0000000 --- a/minilibx_beta/mlx_init.swiftmodule +++ /dev/null diff --git a/minilibx_beta/mlx_png.c b/minilibx_beta/mlx_png.c deleted file mode 100644 index 48e82de..0000000 --- a/minilibx_beta/mlx_png.c +++ /dev/null @@ -1,431 +0,0 @@ - - -#include <stdlib.h> -#include <stdio.h> -#include <sys/mman.h> -#include <unistd.h> -#include <fcntl.h> -#include <err.h> -#include <string.h> -#include <arpa/inet.h> - -#include "zlib.h" - -#include "mlx.h" - -#define UNIQ_BPP 4 - -#define PNG_MAGIC_SIZE 8 -unsigned char magic[PNG_MAGIC_SIZE] = {137, 80, 78, 71, 13, 10, 26, 10}; -#define PNG_HDR_SIZE 13 - -#define Z_CHUNK 32768 - -#define ERR_MAGIC_SIZE 1 -#define ERR_MAGIC_WRONG 2 -#define ERR_STRUCT_INCOMPLETE 3 -#define ERR_STRUCT_HDR 4 -#define ERR_STRUCT_END 5 -#define ERR_STRUCT_CRC 6 -#define ERR_STRUCT_INCIMPL 7 -#define ERR_STRUCT_DAT 8 -#define ERR_STRUCT_MISSCHK 9 -#define ERR_ZLIB 10 -#define ERR_DATA_MISMATCH 11 -#define ERR_DATA_FILTER 12 -#define ERR_MALLOC 13 -char *(mipng_err[]) = -{ - "No error", - "Not enough size for magic", - "Wrong magic", - "Incomplete chunk structure", - "Duplicate or incorrect header", - "Duplicate or incorrect end", - "Invalid CRC in chunk", - "Incorrect header or configuration not implemented", - "Non consecutive dat chunks", - "Missing header/dat/end chunk(s)", - "Zlib inflate error", - "Inflated data size mismatch", - "Unknown scanline filter", - "Can't malloc" -}; - -typedef struct png_info_s -{ - unsigned int width; - unsigned int height; - int depth; - int color; - int interlace; - int bpp; -} png_info_t; - - -int mipng_is_type(unsigned char *ptr, char *type) -{ - if (ptr[4] == type[0] && ptr[5] == type[1] && ptr[6] == type[2] && ptr[7] == type[3]) - return (1); - return (0); -} - - -unsigned char mipng_defilter_none(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]); } -unsigned char mipng_defilter_sub(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]+(unsigned int)a); } -unsigned char mipng_defilter_up(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]+(unsigned int)b); } -unsigned char mipng_defilter_average(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]+((unsigned int)a+(unsigned int)b)/2); } -unsigned char mipng_defilter_paeth(unsigned char *buff, int pos, int a, int b, int c) -{ - int p; - int result; - - p = a + b - c; - if (abs(b - c) <= abs(a - c) && abs(b - c) <= abs(a + b - c - c)) - result = a; - else - if (abs(a - c) <= abs(a + b - c - c)) - result = b; - else - result = c; - return (buff[pos]+result); -} - - - -unsigned char (*(mipng_defilter[]))(unsigned char *buff, int pos, int a, int b, int c) = -{ - mipng_defilter_none, - mipng_defilter_sub, - mipng_defilter_up, - mipng_defilter_average, - mipng_defilter_paeth -}; - -// only work for mlx mac or img 32bpp -int mipng_fill_img(void *img, unsigned char *buf, png_info_t *pi) -{ - unsigned int current_filter; - int ipos; - int bpos; - int ilen; - int iline; - int blen; - int bpp; - int endian; - unsigned char tmp; - unsigned char *ibuf; - - ibuf = (unsigned char *)mlx_get_data_addr(img, &bpp, &iline, &endian); - // iline = img->width * UNIQ_BPP; - // ilen = img->width * img->height * UNIQ_BPP; - ilen = iline*pi->height; - ipos = 0; - blen = pi->width * pi->height * pi->bpp + pi->height; // ??? why + pi->height ?? - bpos = 0; - while (ipos < ilen && bpos < blen) - { - if (ipos % iline == 0) - { - // printf("ipos %d iline %d pi->width %d bpos %d\n", ipos, iline, pi->width, bpos); - if ((current_filter = buf[bpos++]) > 4) - { - return (ERR_DATA_FILTER); - } - } - ibuf[ipos] = mipng_defilter[current_filter](buf, bpos, - ipos%iline>3?ibuf[ipos-UNIQ_BPP]:0, - (ipos>=iline)?ibuf[ipos-iline]:0, - (ipos>=iline && ipos%iline>3)?ibuf[ipos-iline-UNIQ_BPP]:0); - ipos ++; - bpos ++; - if (pi->depth == 16) - bpos ++; - if (ipos % 4 == 3 && pi->color == 2) // no alpha - ibuf[ipos++] = 0xFF; - if (ipos % iline == pi->width * 4) - ipos += iline-pi->width*4; - } - if (ipos != ilen || bpos != blen) - { - // printf("fill err ipos %d vs %d, bpos %d vs %d\n", ipos, ilen, bpos, blen); - return (ERR_DATA_MISMATCH); - } - ipos = 0; - while (ipos < ilen) - { - tmp = ibuf[ipos]; - ibuf[ipos] = ibuf[ipos+2]; - ibuf[ipos+2] = tmp; - ibuf[ipos+3] = 0xFF - ibuf[ipos+3]; - ipos += UNIQ_BPP; - } - return (0); -} - - -int mipng_data(void *img, unsigned char *dat, png_info_t *pi) -{ - unsigned int len; - int b_pos; - unsigned char *buffer; - int ret; - int z_ret; - unsigned z_have; - z_stream z_strm; - unsigned char z_out[Z_CHUNK]; - - b_pos = 0; - if (!(buffer = malloc((long long)pi->width*(long long)pi->height*(long long)pi->bpp + pi->height))) - return (ERR_MALLOC); - z_strm.zalloc = Z_NULL; - z_strm.zfree = Z_NULL; - z_strm.opaque = Z_NULL; - z_strm.avail_in = 0; - z_strm.next_in = Z_NULL; - z_ret = inflateInit(&z_strm); - if (z_ret != Z_OK) - { - free(buffer); - return (ERR_ZLIB); - } - - while (mipng_is_type(dat, "IDAT")) - { - len = *((unsigned int *)dat); - len = ntohl(len); - z_strm.avail_in = len; - z_strm.next_in = dat + 8; - z_strm.avail_out = 0; - while (z_strm.avail_out == 0) - { - z_strm.avail_out = Z_CHUNK; - z_strm.next_out = z_out; - z_ret = inflate(&z_strm, Z_NO_FLUSH); - // printf("inflate ret %d avail_out %d\n", z_ret, z_strm.avail_out); - if (z_ret != Z_OK && z_ret != Z_STREAM_END) - { - inflateEnd(&z_strm); - free(buffer); - return (ERR_ZLIB); - } - if (b_pos + Z_CHUNK - z_strm.avail_out > pi->width*pi->height*pi->bpp+pi->height) - { - inflateEnd(&z_strm); - free(buffer); - return (ERR_DATA_MISMATCH); - } - bcopy(z_out, buffer+b_pos, Z_CHUNK - z_strm.avail_out); - b_pos += Z_CHUNK - z_strm.avail_out; - } - dat += len + 4 + 4 + 4; - } - inflateEnd(&z_strm); - if (b_pos != pi->width*pi->height*pi->bpp+pi->height) - { - // printf("pb : bpos %d vs expected %d\n", b_pos, img->width*img->height*pi->bpp+img->height); - free(buffer); - return (ERR_DATA_MISMATCH); - } - ret = mipng_fill_img(img, buffer, pi); - free(buffer); - return (ret); -} - - - -int mipng_magic(unsigned char *ptr, int size) -{ - int i; - - if (size < PNG_MAGIC_SIZE) - return (ERR_MAGIC_SIZE); - i = 0; - while (i < PNG_MAGIC_SIZE) - if (*(ptr++) != magic[i++]) - return (ERR_MAGIC_WRONG); - return (0); -} - - -unsigned long crc_table[256] = { 0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; - -// From http://www.w3.org/TR/PNG/#D-CRCAppendix -int mipng_crc(unsigned char *ptr, int len) -{ - unsigned int file_crc; - unsigned long crc; - int i; - - file_crc = *((unsigned int *)(ptr+4+4+len)); - file_crc = ntohl(file_crc); - - crc = 0xffffffffL; - i = 0; - while (i < len+4) - crc = crc_table[(crc ^ ptr[(i++)+4]) & 0xff] ^ (crc >> 8); - crc ^= 0xffffffffL; - - if (file_crc != crc) - return (1); - return (0); -} - - -int mipng_structure(unsigned char *ptr, int size, unsigned char **hdr, unsigned char **dat) -{ - unsigned int len; - int dat_state; - int end; - - dat_state = 0; - *hdr = NULL; - *dat = NULL; - end = 0; - while (size) - { - if (size >= 4) // length present - { - len = *((unsigned int *)ptr); - len = ntohl(len); - if (size < 4 + 4 + 4 + len) - return (ERR_STRUCT_INCOMPLETE); - if (mipng_crc(ptr, len)) - return (ERR_STRUCT_CRC); - // printf("found chunk len %d type %c%c%c%c\n", len, *(ptr+4), *(ptr+5), *(ptr+6), *(ptr+7)); - if (mipng_is_type(ptr, "IHDR")) - { - if (*hdr || len != PNG_HDR_SIZE) - return (ERR_STRUCT_HDR); - *hdr = ptr; - } - if (mipng_is_type(ptr, "IEND")) - { - if (len != 0 || size != 4+4+4) - return (ERR_STRUCT_END); - end = 1; - } - if (mipng_is_type(ptr, "IDAT")) - { - if (dat_state == 0) - { - dat_state = 1; - *dat = ptr; - } - if (dat_state == 2) - return (ERR_STRUCT_DAT); - } - else - if (dat_state == 1) - dat_state = 2; - size -= 4+4+4+len; - ptr += 4+4+4+len; - } - else - return (ERR_STRUCT_INCOMPLETE); - } - if (*hdr == 0 || *dat == 0 || end == 0) - return (ERR_STRUCT_MISSCHK); - return (0); -} - - -int mipng_verif_hdr(unsigned char *hdr, png_info_t *pi) -{ - unsigned int compress; - unsigned int filter; - - hdr += 8; - pi->width = ntohl(*((unsigned long *)hdr)); - pi->height = ntohl(*((unsigned long *)(hdr+4))); - pi->depth = *(hdr+8); - pi->color = *(hdr+9); - compress = *(hdr+10); - filter = *(hdr+11); - pi->interlace = *(hdr+12); - if (pi->width <= 0 || pi->height <= 0 || (pi->depth != 8 && pi->depth != 16) - || (pi->color != 2 && pi->color != 6) || compress != 0 || filter != 0 || pi->interlace != 0) - return (ERR_STRUCT_INCIMPL); - pi->bpp = pi->depth / 8; - if (pi->color == 2) - pi->bpp *= 3; - if (pi->color == 6) - pi->bpp *= 4; - // printf("hdr info : %d x %d, depth %d, col type %d, comp %d, filter %d, interlace %d\nbpp is %d\n", - // pi->width, pi->height, pi->depth, pi->color, compress, filter, pi->interlace, pi->bpp); - return (0); -} - - -void *mlx_int_parse_png(void *xvar, unsigned char *fptr, int size, int *width, int *height) -{ - int err; - unsigned char *hdr; - unsigned char *dat; - png_info_t pi; - void *img; - - if ((err = mipng_magic(fptr, size))) - { - warnx("mlx PNG error : %s", mipng_err[err]); - return ((void *)0); - } - fptr += PNG_MAGIC_SIZE; - size -= PNG_MAGIC_SIZE; - if ((err = mipng_structure(fptr, size, &hdr, &dat))) - { - warnx("mlx PNG error : %s", mipng_err[err]); - return ((void *)0); - } - if ((err = mipng_verif_hdr(hdr, &pi))) - { - warnx("mlx PNG error : %s", mipng_err[err]); - return ((void *)0); - } - if (!(img = mlx_new_image(xvar, pi.width, pi.height))) - { - warnx("mlx PNG error : Can't create mlx image"); - return ((void *)0); - } - *width = pi.width; - *height = pi.height; - if ((err = mipng_data(img, dat, &pi))) - { - mlx_destroy_image(xvar, img); - warnx("mlx PNG error : %s", mipng_err[err]); - return ((void *)0); - } - return (img); -} - - - - -void *mlx_png_file_to_image(void *xvar, char *file, int *width, int *height) -{ - int fd; - int size; - unsigned char *ptr; - void *img; - - if ((fd = open(file, O_RDONLY)) == -1 || (size = lseek(fd, 0, SEEK_END)) == -1 || - (ptr = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)MAP_FAILED) - { - if (fd >= 0) - close(fd); - warnx("Can't map png file '%s'", file); - return ((void *)0); - } - if (!(img = mlx_int_parse_png(xvar, ptr, size, width, height))) - { - *width = 0; - *height = 0; - } - munmap(ptr,size); - close(fd); - return (img); -} diff --git a/minilibx_beta/mlx_rgb.c b/minilibx_beta/mlx_rgb.c deleted file mode 100644 index 3f98717..0000000 --- a/minilibx_beta/mlx_rgb.c +++ /dev/null @@ -1,763 +0,0 @@ -/* -** This is a generated file with rgb2c.pl and rgb.txt from -** the XFree86 distribution. -*/ - - -struct s_col_name mlx_col_name[] = -{ - { "snow" , 0xfffafa }, - { "ghost white" , 0xf8f8ff }, - { "ghostwhite" , 0xf8f8ff }, - { "white smoke" , 0xf5f5f5 }, - { "whitesmoke" , 0xf5f5f5 }, - { "gainsboro" , 0xdcdcdc }, - { "floral white" , 0xfffaf0 }, - { "floralwhite" , 0xfffaf0 }, - { "old lace" , 0xfdf5e6 }, - { "oldlace" , 0xfdf5e6 }, - { "linen" , 0xfaf0e6 }, - { "antique white" , 0xfaebd7 }, - { "antiquewhite" , 0xfaebd7 }, - { "papaya whip" , 0xffefd5 }, - { "papayawhip" , 0xffefd5 }, - { "blanched almond" , 0xffebcd }, - { "blanchedalmond" , 0xffebcd }, - { "bisque" , 0xffe4c4 }, - { "peach puff" , 0xffdab9 }, - { "peachpuff" , 0xffdab9 }, - { "navajo white" , 0xffdead }, - { "navajowhite" , 0xffdead }, - { "moccasin" , 0xffe4b5 }, - { "cornsilk" , 0xfff8dc }, - { "ivory" , 0xfffff0 }, - { "lemon chiffon" , 0xfffacd }, - { "lemonchiffon" , 0xfffacd }, - { "seashell" , 0xfff5ee }, - { "honeydew" , 0xf0fff0 }, - { "mint cream" , 0xf5fffa }, - { "mintcream" , 0xf5fffa }, - { "azure" , 0xf0ffff }, - { "alice blue" , 0xf0f8ff }, - { "aliceblue" , 0xf0f8ff }, - { "lavender" , 0xe6e6fa }, - { "lavender blush" , 0xfff0f5 }, - { "lavenderblush" , 0xfff0f5 }, - { "misty rose" , 0xffe4e1 }, - { "mistyrose" , 0xffe4e1 }, - { "white" , 0xffffff }, - { "black" , 0x0 }, - { "dark slate" , 0x2f4f4f }, - { "darkslategray" , 0x2f4f4f }, - { "dark slate" , 0x2f4f4f }, - { "darkslategrey" , 0x2f4f4f }, - { "dim gray" , 0x696969 }, - { "dimgray" , 0x696969 }, - { "dim grey" , 0x696969 }, - { "dimgrey" , 0x696969 }, - { "slate gray" , 0x708090 }, - { "slategray" , 0x708090 }, - { "slate grey" , 0x708090 }, - { "slategrey" , 0x708090 }, - { "light slate" , 0x778899 }, - { "lightslategray" , 0x778899 }, - { "light slate" , 0x778899 }, - { "lightslategrey" , 0x778899 }, - { "gray" , 0xbebebe }, - { "grey" , 0xbebebe }, - { "light grey" , 0xd3d3d3 }, - { "lightgrey" , 0xd3d3d3 }, - { "light gray" , 0xd3d3d3 }, - { "lightgray" , 0xd3d3d3 }, - { "midnight blue" , 0x191970 }, - { "midnightblue" , 0x191970 }, - { "navy" , 0x80 }, - { "navy blue" , 0x80 }, - { "navyblue" , 0x80 }, - { "cornflower blue" , 0x6495ed }, - { "cornflowerblue" , 0x6495ed }, - { "dark slate" , 0x483d8b }, - { "darkslateblue" , 0x483d8b }, - { "slate blue" , 0x6a5acd }, - { "slateblue" , 0x6a5acd }, - { "medium slate" , 0x7b68ee }, - { "mediumslateblue" , 0x7b68ee }, - { "light slate" , 0x8470ff }, - { "lightslateblue" , 0x8470ff }, - { "medium blue" , 0xcd }, - { "mediumblue" , 0xcd }, - { "royal blue" , 0x4169e1 }, - { "royalblue" , 0x4169e1 }, - { "blue" , 0xff }, - { "dodger blue" , 0x1e90ff }, - { "dodgerblue" , 0x1e90ff }, - { "deep sky" , 0xbfff }, - { "deepskyblue" , 0xbfff }, - { "sky blue" , 0x87ceeb }, - { "skyblue" , 0x87ceeb }, - { "light sky" , 0x87cefa }, - { "lightskyblue" , 0x87cefa }, - { "steel blue" , 0x4682b4 }, - { "steelblue" , 0x4682b4 }, - { "light steel" , 0xb0c4de }, - { "lightsteelblue" , 0xb0c4de }, - { "light blue" , 0xadd8e6 }, - { "lightblue" , 0xadd8e6 }, - { "powder blue" , 0xb0e0e6 }, - { "powderblue" , 0xb0e0e6 }, - { "pale turquoise" , 0xafeeee }, - { "paleturquoise" , 0xafeeee }, - { "dark turquoise" , 0xced1 }, - { "darkturquoise" , 0xced1 }, - { "medium turquoise" , 0x48d1cc }, - { "mediumturquoise" , 0x48d1cc }, - { "turquoise" , 0x40e0d0 }, - { "cyan" , 0xffff }, - { "light cyan" , 0xe0ffff }, - { "lightcyan" , 0xe0ffff }, - { "cadet blue" , 0x5f9ea0 }, - { "cadetblue" , 0x5f9ea0 }, - { "medium aquamarine" , 0x66cdaa }, - { "mediumaquamarine" , 0x66cdaa }, - { "aquamarine" , 0x7fffd4 }, - { "dark green" , 0x6400 }, - { "darkgreen" , 0x6400 }, - { "dark olive" , 0x556b2f }, - { "darkolivegreen" , 0x556b2f }, - { "dark sea" , 0x8fbc8f }, - { "darkseagreen" , 0x8fbc8f }, - { "sea green" , 0x2e8b57 }, - { "seagreen" , 0x2e8b57 }, - { "medium sea" , 0x3cb371 }, - { "mediumseagreen" , 0x3cb371 }, - { "light sea" , 0x20b2aa }, - { "lightseagreen" , 0x20b2aa }, - { "pale green" , 0x98fb98 }, - { "palegreen" , 0x98fb98 }, - { "spring green" , 0xff7f }, - { "springgreen" , 0xff7f }, - { "lawn green" , 0x7cfc00 }, - { "lawngreen" , 0x7cfc00 }, - { "green" , 0xff00 }, - { "chartreuse" , 0x7fff00 }, - { "medium spring" , 0xfa9a }, - { "mediumspringgreen" , 0xfa9a }, - { "green yellow" , 0xadff2f }, - { "greenyellow" , 0xadff2f }, - { "lime green" , 0x32cd32 }, - { "limegreen" , 0x32cd32 }, - { "yellow green" , 0x9acd32 }, - { "yellowgreen" , 0x9acd32 }, - { "forest green" , 0x228b22 }, - { "forestgreen" , 0x228b22 }, - { "olive drab" , 0x6b8e23 }, - { "olivedrab" , 0x6b8e23 }, - { "dark khaki" , 0xbdb76b }, - { "darkkhaki" , 0xbdb76b }, - { "khaki" , 0xf0e68c }, - { "pale goldenrod" , 0xeee8aa }, - { "palegoldenrod" , 0xeee8aa }, - { "light goldenrod" , 0xfafad2 }, - { "lightgoldenrodyellow" , 0xfafad2 }, - { "light yellow" , 0xffffe0 }, - { "lightyellow" , 0xffffe0 }, - { "yellow" , 0xffff00 }, - { "gold" , 0xffd700 }, - { "light goldenrod" , 0xeedd82 }, - { "lightgoldenrod" , 0xeedd82 }, - { "goldenrod" , 0xdaa520 }, - { "dark goldenrod" , 0xb8860b }, - { "darkgoldenrod" , 0xb8860b }, - { "rosy brown" , 0xbc8f8f }, - { "rosybrown" , 0xbc8f8f }, - { "indian red" , 0xcd5c5c }, - { "indianred" , 0xcd5c5c }, - { "saddle brown" , 0x8b4513 }, - { "saddlebrown" , 0x8b4513 }, - { "sienna" , 0xa0522d }, - { "peru" , 0xcd853f }, - { "burlywood" , 0xdeb887 }, - { "beige" , 0xf5f5dc }, - { "wheat" , 0xf5deb3 }, - { "sandy brown" , 0xf4a460 }, - { "sandybrown" , 0xf4a460 }, - { "tan" , 0xd2b48c }, - { "chocolate" , 0xd2691e }, - { "firebrick" , 0xb22222 }, - { "brown" , 0xa52a2a }, - { "dark salmon" , 0xe9967a }, - { "darksalmon" , 0xe9967a }, - { "salmon" , 0xfa8072 }, - { "light salmon" , 0xffa07a }, - { "lightsalmon" , 0xffa07a }, - { "orange" , 0xffa500 }, - { "dark orange" , 0xff8c00 }, - { "darkorange" , 0xff8c00 }, - { "coral" , 0xff7f50 }, - { "light coral" , 0xf08080 }, - { "lightcoral" , 0xf08080 }, - { "tomato" , 0xff6347 }, - { "orange red" , 0xff4500 }, - { "orangered" , 0xff4500 }, - { "red" , 0xff0000 }, - { "hot pink" , 0xff69b4 }, - { "hotpink" , 0xff69b4 }, - { "deep pink" , 0xff1493 }, - { "deeppink" , 0xff1493 }, - { "pink" , 0xffc0cb }, - { "light pink" , 0xffb6c1 }, - { "lightpink" , 0xffb6c1 }, - { "pale violet" , 0xdb7093 }, - { "palevioletred" , 0xdb7093 }, - { "maroon" , 0xb03060 }, - { "medium violet" , 0xc71585 }, - { "mediumvioletred" , 0xc71585 }, - { "violet red" , 0xd02090 }, - { "violetred" , 0xd02090 }, - { "magenta" , 0xff00ff }, - { "violet" , 0xee82ee }, - { "plum" , 0xdda0dd }, - { "orchid" , 0xda70d6 }, - { "medium orchid" , 0xba55d3 }, - { "mediumorchid" , 0xba55d3 }, - { "dark orchid" , 0x9932cc }, - { "darkorchid" , 0x9932cc }, - { "dark violet" , 0x9400d3 }, - { "darkviolet" , 0x9400d3 }, - { "blue violet" , 0x8a2be2 }, - { "blueviolet" , 0x8a2be2 }, - { "purple" , 0xa020f0 }, - { "medium purple" , 0x9370db }, - { "mediumpurple" , 0x9370db }, - { "thistle" , 0xd8bfd8 }, - { "snow1" , 0xfffafa }, - { "snow2" , 0xeee9e9 }, - { "snow3" , 0xcdc9c9 }, - { "snow4" , 0x8b8989 }, - { "seashell1" , 0xfff5ee }, - { "seashell2" , 0xeee5de }, - { "seashell3" , 0xcdc5bf }, - { "seashell4" , 0x8b8682 }, - { "antiquewhite1" , 0xffefdb }, - { "antiquewhite2" , 0xeedfcc }, - { "antiquewhite3" , 0xcdc0b0 }, - { "antiquewhite4" , 0x8b8378 }, - { "bisque1" , 0xffe4c4 }, - { "bisque2" , 0xeed5b7 }, - { "bisque3" , 0xcdb79e }, - { "bisque4" , 0x8b7d6b }, - { "peachpuff1" , 0xffdab9 }, - { "peachpuff2" , 0xeecbad }, - { "peachpuff3" , 0xcdaf95 }, - { "peachpuff4" , 0x8b7765 }, - { "navajowhite1" , 0xffdead }, - { "navajowhite2" , 0xeecfa1 }, - { "navajowhite3" , 0xcdb38b }, - { "navajowhite4" , 0x8b795e }, - { "lemonchiffon1" , 0xfffacd }, - { "lemonchiffon2" , 0xeee9bf }, - { "lemonchiffon3" , 0xcdc9a5 }, - { "lemonchiffon4" , 0x8b8970 }, - { "cornsilk1" , 0xfff8dc }, - { "cornsilk2" , 0xeee8cd }, - { "cornsilk3" , 0xcdc8b1 }, - { "cornsilk4" , 0x8b8878 }, - { "ivory1" , 0xfffff0 }, - { "ivory2" , 0xeeeee0 }, - { "ivory3" , 0xcdcdc1 }, - { "ivory4" , 0x8b8b83 }, - { "honeydew1" , 0xf0fff0 }, - { "honeydew2" , 0xe0eee0 }, - { "honeydew3" , 0xc1cdc1 }, - { "honeydew4" , 0x838b83 }, - { "lavenderblush1" , 0xfff0f5 }, - { "lavenderblush2" , 0xeee0e5 }, - { "lavenderblush3" , 0xcdc1c5 }, - { "lavenderblush4" , 0x8b8386 }, - { "mistyrose1" , 0xffe4e1 }, - { "mistyrose2" , 0xeed5d2 }, - { "mistyrose3" , 0xcdb7b5 }, - { "mistyrose4" , 0x8b7d7b }, - { "azure1" , 0xf0ffff }, - { "azure2" , 0xe0eeee }, - { "azure3" , 0xc1cdcd }, - { "azure4" , 0x838b8b }, - { "slateblue1" , 0x836fff }, - { "slateblue2" , 0x7a67ee }, - { "slateblue3" , 0x6959cd }, - { "slateblue4" , 0x473c8b }, - { "royalblue1" , 0x4876ff }, - { "royalblue2" , 0x436eee }, - { "royalblue3" , 0x3a5fcd }, - { "royalblue4" , 0x27408b }, - { "blue1" , 0xff }, - { "blue2" , 0xee }, - { "blue3" , 0xcd }, - { "blue4" , 0x8b }, - { "dodgerblue1" , 0x1e90ff }, - { "dodgerblue2" , 0x1c86ee }, - { "dodgerblue3" , 0x1874cd }, - { "dodgerblue4" , 0x104e8b }, - { "steelblue1" , 0x63b8ff }, - { "steelblue2" , 0x5cacee }, - { "steelblue3" , 0x4f94cd }, - { "steelblue4" , 0x36648b }, - { "deepskyblue1" , 0xbfff }, - { "deepskyblue2" , 0xb2ee }, - { "deepskyblue3" , 0x9acd }, - { "deepskyblue4" , 0x688b }, - { "skyblue1" , 0x87ceff }, - { "skyblue2" , 0x7ec0ee }, - { "skyblue3" , 0x6ca6cd }, - { "skyblue4" , 0x4a708b }, - { "lightskyblue1" , 0xb0e2ff }, - { "lightskyblue2" , 0xa4d3ee }, - { "lightskyblue3" , 0x8db6cd }, - { "lightskyblue4" , 0x607b8b }, - { "slategray1" , 0xc6e2ff }, - { "slategray2" , 0xb9d3ee }, - { "slategray3" , 0x9fb6cd }, - { "slategray4" , 0x6c7b8b }, - { "lightsteelblue1" , 0xcae1ff }, - { "lightsteelblue2" , 0xbcd2ee }, - { "lightsteelblue3" , 0xa2b5cd }, - { "lightsteelblue4" , 0x6e7b8b }, - { "lightblue1" , 0xbfefff }, - { "lightblue2" , 0xb2dfee }, - { "lightblue3" , 0x9ac0cd }, - { "lightblue4" , 0x68838b }, - { "lightcyan1" , 0xe0ffff }, - { "lightcyan2" , 0xd1eeee }, - { "lightcyan3" , 0xb4cdcd }, - { "lightcyan4" , 0x7a8b8b }, - { "paleturquoise1" , 0xbbffff }, - { "paleturquoise2" , 0xaeeeee }, - { "paleturquoise3" , 0x96cdcd }, - { "paleturquoise4" , 0x668b8b }, - { "cadetblue1" , 0x98f5ff }, - { "cadetblue2" , 0x8ee5ee }, - { "cadetblue3" , 0x7ac5cd }, - { "cadetblue4" , 0x53868b }, - { "turquoise1" , 0xf5ff }, - { "turquoise2" , 0xe5ee }, - { "turquoise3" , 0xc5cd }, - { "turquoise4" , 0x868b }, - { "cyan1" , 0xffff }, - { "cyan2" , 0xeeee }, - { "cyan3" , 0xcdcd }, - { "cyan4" , 0x8b8b }, - { "darkslategray1" , 0x97ffff }, - { "darkslategray2" , 0x8deeee }, - { "darkslategray3" , 0x79cdcd }, - { "darkslategray4" , 0x528b8b }, - { "aquamarine1" , 0x7fffd4 }, - { "aquamarine2" , 0x76eec6 }, - { "aquamarine3" , 0x66cdaa }, - { "aquamarine4" , 0x458b74 }, - { "darkseagreen1" , 0xc1ffc1 }, - { "darkseagreen2" , 0xb4eeb4 }, - { "darkseagreen3" , 0x9bcd9b }, - { "darkseagreen4" , 0x698b69 }, - { "seagreen1" , 0x54ff9f }, - { "seagreen2" , 0x4eee94 }, - { "seagreen3" , 0x43cd80 }, - { "seagreen4" , 0x2e8b57 }, - { "palegreen1" , 0x9aff9a }, - { "palegreen2" , 0x90ee90 }, - { "palegreen3" , 0x7ccd7c }, - { "palegreen4" , 0x548b54 }, - { "springgreen1" , 0xff7f }, - { "springgreen2" , 0xee76 }, - { "springgreen3" , 0xcd66 }, - { "springgreen4" , 0x8b45 }, - { "green1" , 0xff00 }, - { "green2" , 0xee00 }, - { "green3" , 0xcd00 }, - { "green4" , 0x8b00 }, - { "chartreuse1" , 0x7fff00 }, - { "chartreuse2" , 0x76ee00 }, - { "chartreuse3" , 0x66cd00 }, - { "chartreuse4" , 0x458b00 }, - { "olivedrab1" , 0xc0ff3e }, - { "olivedrab2" , 0xb3ee3a }, - { "olivedrab3" , 0x9acd32 }, - { "olivedrab4" , 0x698b22 }, - { "darkolivegreen1" , 0xcaff70 }, - { "darkolivegreen2" , 0xbcee68 }, - { "darkolivegreen3" , 0xa2cd5a }, - { "darkolivegreen4" , 0x6e8b3d }, - { "khaki1" , 0xfff68f }, - { "khaki2" , 0xeee685 }, - { "khaki3" , 0xcdc673 }, - { "khaki4" , 0x8b864e }, - { "lightgoldenrod1" , 0xffec8b }, - { "lightgoldenrod2" , 0xeedc82 }, - { "lightgoldenrod3" , 0xcdbe70 }, - { "lightgoldenrod4" , 0x8b814c }, - { "lightyellow1" , 0xffffe0 }, - { "lightyellow2" , 0xeeeed1 }, - { "lightyellow3" , 0xcdcdb4 }, - { "lightyellow4" , 0x8b8b7a }, - { "yellow1" , 0xffff00 }, - { "yellow2" , 0xeeee00 }, - { "yellow3" , 0xcdcd00 }, - { "yellow4" , 0x8b8b00 }, - { "gold1" , 0xffd700 }, - { "gold2" , 0xeec900 }, - { "gold3" , 0xcdad00 }, - { "gold4" , 0x8b7500 }, - { "goldenrod1" , 0xffc125 }, - { "goldenrod2" , 0xeeb422 }, - { "goldenrod3" , 0xcd9b1d }, - { "goldenrod4" , 0x8b6914 }, - { "darkgoldenrod1" , 0xffb90f }, - { "darkgoldenrod2" , 0xeead0e }, - { "darkgoldenrod3" , 0xcd950c }, - { "darkgoldenrod4" , 0x8b6508 }, - { "rosybrown1" , 0xffc1c1 }, - { "rosybrown2" , 0xeeb4b4 }, - { "rosybrown3" , 0xcd9b9b }, - { "rosybrown4" , 0x8b6969 }, - { "indianred1" , 0xff6a6a }, - { "indianred2" , 0xee6363 }, - { "indianred3" , 0xcd5555 }, - { "indianred4" , 0x8b3a3a }, - { "sienna1" , 0xff8247 }, - { "sienna2" , 0xee7942 }, - { "sienna3" , 0xcd6839 }, - { "sienna4" , 0x8b4726 }, - { "burlywood1" , 0xffd39b }, - { "burlywood2" , 0xeec591 }, - { "burlywood3" , 0xcdaa7d }, - { "burlywood4" , 0x8b7355 }, - { "wheat1" , 0xffe7ba }, - { "wheat2" , 0xeed8ae }, - { "wheat3" , 0xcdba96 }, - { "wheat4" , 0x8b7e66 }, - { "tan1" , 0xffa54f }, - { "tan2" , 0xee9a49 }, - { "tan3" , 0xcd853f }, - { "tan4" , 0x8b5a2b }, - { "chocolate1" , 0xff7f24 }, - { "chocolate2" , 0xee7621 }, - { "chocolate3" , 0xcd661d }, - { "chocolate4" , 0x8b4513 }, - { "firebrick1" , 0xff3030 }, - { "firebrick2" , 0xee2c2c }, - { "firebrick3" , 0xcd2626 }, - { "firebrick4" , 0x8b1a1a }, - { "brown1" , 0xff4040 }, - { "brown2" , 0xee3b3b }, - { "brown3" , 0xcd3333 }, - { "brown4" , 0x8b2323 }, - { "salmon1" , 0xff8c69 }, - { "salmon2" , 0xee8262 }, - { "salmon3" , 0xcd7054 }, - { "salmon4" , 0x8b4c39 }, - { "lightsalmon1" , 0xffa07a }, - { "lightsalmon2" , 0xee9572 }, - { "lightsalmon3" , 0xcd8162 }, - { "lightsalmon4" , 0x8b5742 }, - { "orange1" , 0xffa500 }, - { "orange2" , 0xee9a00 }, - { "orange3" , 0xcd8500 }, - { "orange4" , 0x8b5a00 }, - { "darkorange1" , 0xff7f00 }, - { "darkorange2" , 0xee7600 }, - { "darkorange3" , 0xcd6600 }, - { "darkorange4" , 0x8b4500 }, - { "coral1" , 0xff7256 }, - { "coral2" , 0xee6a50 }, - { "coral3" , 0xcd5b45 }, - { "coral4" , 0x8b3e2f }, - { "tomato1" , 0xff6347 }, - { "tomato2" , 0xee5c42 }, - { "tomato3" , 0xcd4f39 }, - { "tomato4" , 0x8b3626 }, - { "orangered1" , 0xff4500 }, - { "orangered2" , 0xee4000 }, - { "orangered3" , 0xcd3700 }, - { "orangered4" , 0x8b2500 }, - { "red1" , 0xff0000 }, - { "red2" , 0xee0000 }, - { "red3" , 0xcd0000 }, - { "red4" , 0x8b0000 }, - { "deeppink1" , 0xff1493 }, - { "deeppink2" , 0xee1289 }, - { "deeppink3" , 0xcd1076 }, - { "deeppink4" , 0x8b0a50 }, - { "hotpink1" , 0xff6eb4 }, - { "hotpink2" , 0xee6aa7 }, - { "hotpink3" , 0xcd6090 }, - { "hotpink4" , 0x8b3a62 }, - { "pink1" , 0xffb5c5 }, - { "pink2" , 0xeea9b8 }, - { "pink3" , 0xcd919e }, - { "pink4" , 0x8b636c }, - { "lightpink1" , 0xffaeb9 }, - { "lightpink2" , 0xeea2ad }, - { "lightpink3" , 0xcd8c95 }, - { "lightpink4" , 0x8b5f65 }, - { "palevioletred1" , 0xff82ab }, - { "palevioletred2" , 0xee799f }, - { "palevioletred3" , 0xcd6889 }, - { "palevioletred4" , 0x8b475d }, - { "maroon1" , 0xff34b3 }, - { "maroon2" , 0xee30a7 }, - { "maroon3" , 0xcd2990 }, - { "maroon4" , 0x8b1c62 }, - { "violetred1" , 0xff3e96 }, - { "violetred2" , 0xee3a8c }, - { "violetred3" , 0xcd3278 }, - { "violetred4" , 0x8b2252 }, - { "magenta1" , 0xff00ff }, - { "magenta2" , 0xee00ee }, - { "magenta3" , 0xcd00cd }, - { "magenta4" , 0x8b008b }, - { "orchid1" , 0xff83fa }, - { "orchid2" , 0xee7ae9 }, - { "orchid3" , 0xcd69c9 }, - { "orchid4" , 0x8b4789 }, - { "plum1" , 0xffbbff }, - { "plum2" , 0xeeaeee }, - { "plum3" , 0xcd96cd }, - { "plum4" , 0x8b668b }, - { "mediumorchid1" , 0xe066ff }, - { "mediumorchid2" , 0xd15fee }, - { "mediumorchid3" , 0xb452cd }, - { "mediumorchid4" , 0x7a378b }, - { "darkorchid1" , 0xbf3eff }, - { "darkorchid2" , 0xb23aee }, - { "darkorchid3" , 0x9a32cd }, - { "darkorchid4" , 0x68228b }, - { "purple1" , 0x9b30ff }, - { "purple2" , 0x912cee }, - { "purple3" , 0x7d26cd }, - { "purple4" , 0x551a8b }, - { "mediumpurple1" , 0xab82ff }, - { "mediumpurple2" , 0x9f79ee }, - { "mediumpurple3" , 0x8968cd }, - { "mediumpurple4" , 0x5d478b }, - { "thistle1" , 0xffe1ff }, - { "thistle2" , 0xeed2ee }, - { "thistle3" , 0xcdb5cd }, - { "thistle4" , 0x8b7b8b }, - { "gray0" , 0x0 }, - { "grey0" , 0x0 }, - { "gray1" , 0x30303 }, - { "grey1" , 0x30303 }, - { "gray2" , 0x50505 }, - { "grey2" , 0x50505 }, - { "gray3" , 0x80808 }, - { "grey3" , 0x80808 }, - { "gray4" , 0xa0a0a }, - { "grey4" , 0xa0a0a }, - { "gray5" , 0xd0d0d }, - { "grey5" , 0xd0d0d }, - { "gray6" , 0xf0f0f }, - { "grey6" , 0xf0f0f }, - { "gray7" , 0x121212 }, - { "grey7" , 0x121212 }, - { "gray8" , 0x141414 }, - { "grey8" , 0x141414 }, - { "gray9" , 0x171717 }, - { "grey9" , 0x171717 }, - { "gray10" , 0x1a1a1a }, - { "grey10" , 0x1a1a1a }, - { "gray11" , 0x1c1c1c }, - { "grey11" , 0x1c1c1c }, - { "gray12" , 0x1f1f1f }, - { "grey12" , 0x1f1f1f }, - { "gray13" , 0x212121 }, - { "grey13" , 0x212121 }, - { "gray14" , 0x242424 }, - { "grey14" , 0x242424 }, - { "gray15" , 0x262626 }, - { "grey15" , 0x262626 }, - { "gray16" , 0x292929 }, - { "grey16" , 0x292929 }, - { "gray17" , 0x2b2b2b }, - { "grey17" , 0x2b2b2b }, - { "gray18" , 0x2e2e2e }, - { "grey18" , 0x2e2e2e }, - { "gray19" , 0x303030 }, - { "grey19" , 0x303030 }, - { "gray20" , 0x333333 }, - { "grey20" , 0x333333 }, - { "gray21" , 0x363636 }, - { "grey21" , 0x363636 }, - { "gray22" , 0x383838 }, - { "grey22" , 0x383838 }, - { "gray23" , 0x3b3b3b }, - { "grey23" , 0x3b3b3b }, - { "gray24" , 0x3d3d3d }, - { "grey24" , 0x3d3d3d }, - { "gray25" , 0x404040 }, - { "grey25" , 0x404040 }, - { "gray26" , 0x424242 }, - { "grey26" , 0x424242 }, - { "gray27" , 0x454545 }, - { "grey27" , 0x454545 }, - { "gray28" , 0x474747 }, - { "grey28" , 0x474747 }, - { "gray29" , 0x4a4a4a }, - { "grey29" , 0x4a4a4a }, - { "gray30" , 0x4d4d4d }, - { "grey30" , 0x4d4d4d }, - { "gray31" , 0x4f4f4f }, - { "grey31" , 0x4f4f4f }, - { "gray32" , 0x525252 }, - { "grey32" , 0x525252 }, - { "gray33" , 0x545454 }, - { "grey33" , 0x545454 }, - { "gray34" , 0x575757 }, - { "grey34" , 0x575757 }, - { "gray35" , 0x595959 }, - { "grey35" , 0x595959 }, - { "gray36" , 0x5c5c5c }, - { "grey36" , 0x5c5c5c }, - { "gray37" , 0x5e5e5e }, - { "grey37" , 0x5e5e5e }, - { "gray38" , 0x616161 }, - { "grey38" , 0x616161 }, - { "gray39" , 0x636363 }, - { "grey39" , 0x636363 }, - { "gray40" , 0x666666 }, - { "grey40" , 0x666666 }, - { "gray41" , 0x696969 }, - { "grey41" , 0x696969 }, - { "gray42" , 0x6b6b6b }, - { "grey42" , 0x6b6b6b }, - { "gray43" , 0x6e6e6e }, - { "grey43" , 0x6e6e6e }, - { "gray44" , 0x707070 }, - { "grey44" , 0x707070 }, - { "gray45" , 0x737373 }, - { "grey45" , 0x737373 }, - { "gray46" , 0x757575 }, - { "grey46" , 0x757575 }, - { "gray47" , 0x787878 }, - { "grey47" , 0x787878 }, - { "gray48" , 0x7a7a7a }, - { "grey48" , 0x7a7a7a }, - { "gray49" , 0x7d7d7d }, - { "grey49" , 0x7d7d7d }, - { "gray50" , 0x7f7f7f }, - { "grey50" , 0x7f7f7f }, - { "gray51" , 0x828282 }, - { "grey51" , 0x828282 }, - { "gray52" , 0x858585 }, - { "grey52" , 0x858585 }, - { "gray53" , 0x878787 }, - { "grey53" , 0x878787 }, - { "gray54" , 0x8a8a8a }, - { "grey54" , 0x8a8a8a }, - { "gray55" , 0x8c8c8c }, - { "grey55" , 0x8c8c8c }, - { "gray56" , 0x8f8f8f }, - { "grey56" , 0x8f8f8f }, - { "gray57" , 0x919191 }, - { "grey57" , 0x919191 }, - { "gray58" , 0x949494 }, - { "grey58" , 0x949494 }, - { "gray59" , 0x969696 }, - { "grey59" , 0x969696 }, - { "gray60" , 0x999999 }, - { "grey60" , 0x999999 }, - { "gray61" , 0x9c9c9c }, - { "grey61" , 0x9c9c9c }, - { "gray62" , 0x9e9e9e }, - { "grey62" , 0x9e9e9e }, - { "gray63" , 0xa1a1a1 }, - { "grey63" , 0xa1a1a1 }, - { "gray64" , 0xa3a3a3 }, - { "grey64" , 0xa3a3a3 }, - { "gray65" , 0xa6a6a6 }, - { "grey65" , 0xa6a6a6 }, - { "gray66" , 0xa8a8a8 }, - { "grey66" , 0xa8a8a8 }, - { "gray67" , 0xababab }, - { "grey67" , 0xababab }, - { "gray68" , 0xadadad }, - { "grey68" , 0xadadad }, - { "gray69" , 0xb0b0b0 }, - { "grey69" , 0xb0b0b0 }, - { "gray70" , 0xb3b3b3 }, - { "grey70" , 0xb3b3b3 }, - { "gray71" , 0xb5b5b5 }, - { "grey71" , 0xb5b5b5 }, - { "gray72" , 0xb8b8b8 }, - { "grey72" , 0xb8b8b8 }, - { "gray73" , 0xbababa }, - { "grey73" , 0xbababa }, - { "gray74" , 0xbdbdbd }, - { "grey74" , 0xbdbdbd }, - { "gray75" , 0xbfbfbf }, - { "grey75" , 0xbfbfbf }, - { "gray76" , 0xc2c2c2 }, - { "grey76" , 0xc2c2c2 }, - { "gray77" , 0xc4c4c4 }, - { "grey77" , 0xc4c4c4 }, - { "gray78" , 0xc7c7c7 }, - { "grey78" , 0xc7c7c7 }, - { "gray79" , 0xc9c9c9 }, - { "grey79" , 0xc9c9c9 }, - { "gray80" , 0xcccccc }, - { "grey80" , 0xcccccc }, - { "gray81" , 0xcfcfcf }, - { "grey81" , 0xcfcfcf }, - { "gray82" , 0xd1d1d1 }, - { "grey82" , 0xd1d1d1 }, - { "gray83" , 0xd4d4d4 }, - { "grey83" , 0xd4d4d4 }, - { "gray84" , 0xd6d6d6 }, - { "grey84" , 0xd6d6d6 }, - { "gray85" , 0xd9d9d9 }, - { "grey85" , 0xd9d9d9 }, - { "gray86" , 0xdbdbdb }, - { "grey86" , 0xdbdbdb }, - { "gray87" , 0xdedede }, - { "grey87" , 0xdedede }, - { "gray88" , 0xe0e0e0 }, - { "grey88" , 0xe0e0e0 }, - { "gray89" , 0xe3e3e3 }, - { "grey89" , 0xe3e3e3 }, - { "gray90" , 0xe5e5e5 }, - { "grey90" , 0xe5e5e5 }, - { "gray91" , 0xe8e8e8 }, - { "grey91" , 0xe8e8e8 }, - { "gray92" , 0xebebeb }, - { "grey92" , 0xebebeb }, - { "gray93" , 0xededed }, - { "grey93" , 0xededed }, - { "gray94" , 0xf0f0f0 }, - { "grey94" , 0xf0f0f0 }, - { "gray95" , 0xf2f2f2 }, - { "grey95" , 0xf2f2f2 }, - { "gray96" , 0xf5f5f5 }, - { "grey96" , 0xf5f5f5 }, - { "gray97" , 0xf7f7f7 }, - { "grey97" , 0xf7f7f7 }, - { "gray98" , 0xfafafa }, - { "grey98" , 0xfafafa }, - { "gray99" , 0xfcfcfc }, - { "grey99" , 0xfcfcfc }, - { "gray100" , 0xffffff }, - { "grey100" , 0xffffff }, - { "dark grey" , 0xa9a9a9 }, - { "darkgrey" , 0xa9a9a9 }, - { "dark gray" , 0xa9a9a9 }, - { "darkgray" , 0xa9a9a9 }, - { "dark blue" , 0x8b }, - { "darkblue" , 0x8b }, - { "dark cyan" , 0x8b8b }, - { "darkcyan" , 0x8b8b }, - { "dark magenta" , 0x8b008b }, - { "darkmagenta" , 0x8b008b }, - { "dark red" , 0x8b0000 }, - { "darkred" , 0x8b0000 }, - { "light green" , 0x90ee90 }, - { "lightgreen" , 0x90ee90 }, - { "none", -1 }, - { 0, 0 } -}; diff --git a/minilibx_beta/mlx_string_put.c b/minilibx_beta/mlx_string_put.c deleted file mode 100644 index 435493c..0000000 --- a/minilibx_beta/mlx_string_put.c +++ /dev/null @@ -1,72 +0,0 @@ - -#include "mlx.h" - -#include "font.c" - -#define ATLAS_NB_CHAR 95 - -#define FONT_WIDTH ((font_atlas.width/(ATLAS_NB_CHAR))-2) - - -int mlx_put_image_to_window_scale(void *mlx_ptr, void *win_ptr, void *img_ptr, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, unsigned int color); - -void mlx_int_fill(unsigned char *data, int sl) -{ - int i, j; - j = 0; - while (j < font_atlas.height) - { - i = 0; - while (i < font_atlas.width) - { - data[j*sl+i*4] = font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4+2]; - data[j*sl+i*4+1] = font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4+1]; - data[j*sl+i*4+2] = font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4]; - data[j*sl+i*4+3] = 0xFF - font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4+3]; - i ++; - } - j ++; - } - -} - -int mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string) -{ - static void *font = (void *)0; - static unsigned char *data = (void *)0; - static int size_line = 0; - int bpp; - int endian; - int pos; - int val; - int dest_w; - int dest_h; - - if (font == (void *)0) - { - font = mlx_new_image(mlx_ptr, font_atlas.width, font_atlas.height); - data = (unsigned char *)mlx_get_data_addr(font, &bpp, &size_line, &endian); - mlx_int_fill(data, size_line); - } - - color = (color&0xFFFFFF)|0xFF000000; - - // dest_w = (FONT_WIDTH*5)/7; /// ratio with X11 standard mlx_string_put - // dest_h = (font_atlas.height*5)/7; - dest_w = FONT_WIDTH; - dest_h = font_atlas.height; - y = y - (dest_h*3)/4; - - pos = 0; - while (*string) - { - if (*string >= 32 && *string <= 127) - val = *string - 32; - else - val = 31; - mlx_put_image_to_window_scale(mlx_ptr, win_ptr, font, val*(FONT_WIDTH+2), 0, FONT_WIDTH, font_atlas.height, x+pos*dest_w, y, dest_w, dest_h, color); - pos ++; - string ++; - } - return (0); -} diff --git a/minilibx_beta/mlx_window.swift b/minilibx_beta/mlx_window.swift deleted file mode 100644 index 0b578d8..0000000 --- a/minilibx_beta/mlx_window.swift +++ /dev/null @@ -1,541 +0,0 @@ - -import Cocoa -import Metal -import MetalKit -import Darwin - -import mlx_image - - -class WinEvent: NSWindow -{ - var eventFuncts = [UnsafeMutableRawPointer?]() - var eventParams = [UnsafeMutableRawPointer]() - - var keyrepeat = 1 - var keyflag:UInt32 = 0 - - var size_y:Int - - init(frame rect:CGRect) - { - for _ in 0...31 - { - eventFuncts.append(Optional.none) - eventParams.append(UnsafeMutableRawPointer(&keyrepeat)) /// dummy address here, null not needed - } - - let wsm = NSWindow.StyleMask(rawValue: NSWindow.StyleMask.titled.rawValue|NSWindow.StyleMask.closable.rawValue|NSWindow.StyleMask.miniaturizable.rawValue) - let bck = NSWindow.BackingStoreType.buffered - size_y = Int(rect.size.height) - super.init(contentRect: rect, styleMask: wsm, backing: bck, defer: false) - } - - func setNotifs() - { - NotificationCenter.default.addObserver(self, selector: #selector(exposeNotification(_:)), name: NSWindow.didBecomeKeyNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(deminiaturizeNotification(_:)), name: NSWindow.didDeminiaturizeNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(closeNotification(_:)), name: NSWindow.willCloseNotification, object: nil) - -/*** - [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidBecomeKeyNotification" object:win]; - [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(deminiaturizeNotification:) name:@"NSWindowDidDeminiaturizeNotification" object:win]; - [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(closeNotification:) name:@"NSWindowWillCloseNotification" object:win]; -***/ - - } - - func delNotifs() - { - NotificationCenter.default.removeObserver(self, name: NSWindow.willCloseNotification, object: nil) - } - - public func setKeyRepeat(_ mode:Int) - { - keyrepeat = mode; - } - - - func addHook(index idx:Int, fct fptr:UnsafeMutableRawPointer?, param pptr:UnsafeMutableRawPointer) - { - eventFuncts[idx] = fptr; - eventParams[idx] = pptr; - if (idx == 6 || idx == 32) - { - if (fptr != nil) /// == nullptr) - { self.acceptsMouseMovedEvents = true } - else { self.acceptsMouseMovedEvents = false } - } - } - - - override func keyDown(with event: NSEvent) - { - /// print("got keydown with code: \(event.keyCode) ") - if (event.isARepeat && keyrepeat == 0) - { return } - if (eventFuncts[2] != nil) - { - _ = unsafeBitCast(eventFuncts[2],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(Int32(event.keyCode), eventParams[2]) - } - } - - - override func keyUp(with event: NSEvent) - { - /// print("got keyup with code: \(event.keyCode) and calling key hook") - if (event.isARepeat && keyrepeat == 0) - { return } - if (eventFuncts[3] != nil) - { - _ = unsafeBitCast(eventFuncts[3],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(Int32(event.keyCode), eventParams[3]) - } - } - - - func get_mouse_button(with ev:NSEvent) -> Int - { - switch (ev.type) { - case NSEvent.EventType.leftMouseDown, - NSEvent.EventType.leftMouseUp, - NSEvent.EventType.leftMouseDragged: - return 1; - case NSEvent.EventType.rightMouseDown, - NSEvent.EventType.rightMouseUp, - NSEvent.EventType.rightMouseDragged: - return 2; - case NSEvent.EventType.otherMouseDown, - NSEvent.EventType.otherMouseUp, - NSEvent.EventType.otherMouseDragged: - return 3; - default: - return 0; - } - } - - - - func mouse(with event: NSEvent, index idx:Int, type t:Int) - { - var thepoint:NSPoint - var button:Int - - thepoint = event.locationInWindow - button = get_mouse_button(with:event) - /// button = event.buttonNumber - /// print(" mouse down button \(event.buttonNumber) at location \(thepoint.x) x \(thepoint.y)") - if (eventFuncts[idx] != nil) - { - if (t == 0) - { _ = unsafeBitCast(eventFuncts[idx],to:(@convention(c)(Int32, Int32, Int32, UnsafeRawPointer)->Int32).self)(Int32(button), Int32(thepoint.x), Int32(size_y-1-Int(thepoint.y)), eventParams[idx]) } - if (t == 1) - { _ = unsafeBitCast(eventFuncts[idx],to:(@convention(c)(Int32, Int32, UnsafeRawPointer)->Int32).self)(Int32(thepoint.x), Int32(size_y-1-Int(thepoint.y)), eventParams[idx]) } - } - } - - override func mouseDown(with event: NSEvent) { mouse(with:event, index:4, type:0) } - override func rightMouseDown(with event: NSEvent) { mouse(with:event, index:4, type:0) } - override func otherMouseDown(with event: NSEvent) { mouse(with:event, index:4, type:0) } - - override func mouseUp(with event: NSEvent) { mouse(with:event, index:5, type:0) } - override func rightMouseUp(with event: NSEvent) { mouse(with:event, index:5, type:0) } - override func otherMouseUp(with event: NSEvent) { mouse(with:event, index:5, type:0) } - - override func mouseMoved(with event: NSEvent) { mouse(with:event, index:6, type:1) } - override func mouseDragged(with event: NSEvent) { mouse(with:event, index:6, type:1) } - override func rightMouseDragged(with event: NSEvent) { mouse(with:event, index:6, type:1) } - override func otherMouseDragged(with event: NSEvent) { mouse(with:event, index:6, type:1) } - - - override func scrollWheel(with event: NSEvent) - { - var thepoint:NSPoint - var button = 0; - - thepoint = event.locationInWindow - if (event.deltaY > 0.2) { button = 4; } - if (event.deltaY < -0.2) { button = 5; } - if (event.deltaX > 0.2) { button = 6; } - if (event.deltaX < -0.2) { button = 7; } - if (button != 0 && eventFuncts[4] != nil) - { - _ = unsafeBitCast(eventFuncts[4],to:(@convention(c)(Int32, Int32, Int32, UnsafeRawPointer)->Int32).self)(Int32(button), Int32(thepoint.x), Int32(thepoint.y), eventParams[4]) - } - } - - - override func flagsChanged(with event: NSEvent) - { - var flag:UInt32 - var the_key:Int32 - var val:UInt32 - - flag = UInt32(event.modifierFlags.rawValue) - val = (keyflag|flag)&(~(keyflag&flag)) - if (val == 0) - { return } /// no change - can happen when loosing focus on special key pressed, then re-pressed later - the_key = 1 - while (((val >> (the_key-1)) & 0x01)==0) - { the_key += 1 } - if (flag > keyflag && eventFuncts[2] != nil) - { _ = unsafeBitCast(eventFuncts[2],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(0xFF+the_key, eventParams[2]) } - if (flag < keyflag && eventFuncts[3] != nil) - { _ = unsafeBitCast(eventFuncts[3],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(0xFF+the_key, eventParams[3]) } - keyflag = flag - } - - - @objc func exposeNotification(_ notification:Notification) - { - if (eventFuncts[12] != nil) - { - _ = unsafeBitCast(eventFuncts[12],to:(@convention(c)(UnsafeRawPointer)->Int32).self)(eventParams[12]) - } - } - - @objc func closeNotification(_ notification:Notification) - { - if (eventFuncts[17] != nil) - { - _ = unsafeBitCast(eventFuncts[17],to:(@convention(c)(UnsafeRawPointer)->Int32).self)(eventParams[17]) - } - } - - @objc func deminiaturizeNotification(_ notification:Notification) - { - exposeNotification(notification) - } - -} - - - - - -struct textureList -{ - var uniformBuffer: MTLBuffer! - var uniform_data:UnsafeMutablePointer<Float> - unowned var image:MlxImg -} - - -public class MlxWin -{ - let vrect: CGRect - var winE: WinEvent - var mlayer: CAMetalLayer - - unowned var device: MTLDevice - var commandQueue: MTLCommandQueue! - var pipelineState: MTLRenderPipelineState! - var vertexBuffer: MTLBuffer! - - var texture_list: Array<textureList> = Array() - var texture_list_count = 0 - - var pixel_image:MlxImg - var pixel_count:Int - - var drawable_image: MlxImg - var uniq_renderPassDescriptor: MTLRenderPassDescriptor - var mtl_origin_null : MTLOrigin - var mtl_size_all : MTLSize - var doClear = false - var GPUbatch = 0 - - - public init(device d:MTLDevice, width w:Int, height h:Int, title t:String) - { - vrect = CGRect(x: 100, y: 100, width: w, height: h) - winE = WinEvent(frame: vrect) - - device = d - mlayer = CAMetalLayer() - mlayer.device = device - mlayer.pixelFormat = .bgra8Unorm - mlayer.framebufferOnly = true - mlayer.contentsScale = 1.0 /// winE.screen!.backingScaleFactor - mlayer.frame = vrect - winE.contentView! = NSView(frame: vrect) - winE.contentView!.wantsLayer = true - winE.contentView!.layer = mlayer - winE.title = t - winE.isReleasedWhenClosed = false - winE.makeKeyAndOrderFront(nil) - - - /// drawable_image = MlxImg(d: device, w:Int(CGFloat(vrect.size.width)*winE.screen!.backingScaleFactor), h:Int(CGFloat(vrect.size.height)*winE.screen!.backingScaleFactor), t:1) - drawable_image = MlxImg(d: device, w:Int(vrect.size.width), h:Int(vrect.size.height), t:1) - pixel_image = MlxImg(d: device, w:Int(vrect.size.width), h:Int(vrect.size.height)) - for i in 0...(pixel_image.texture_height*pixel_image.texture_sizeline/4-1) - { pixel_image.texture_data[i] = UInt32(0xFF000000) } - pixel_count = 0 - - mtl_origin_null = MTLOriginMake(0,0,0) - mtl_size_all = MTLSizeMake(drawable_image.texture.width, drawable_image.texture.height, 1) - - uniq_renderPassDescriptor = MTLRenderPassDescriptor() - uniq_renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColor(red: 0.0, green: 0.0, blue: 0.0, alpha:0.0) - uniq_renderPassDescriptor.colorAttachments[0].texture = drawable_image.texture - uniq_renderPassDescriptor.colorAttachments[0].storeAction = .store - uniq_renderPassDescriptor.colorAttachments[0].loadAction = .load - } - - -/// winEvent calls - public func getWinEFrame() -> NSRect { return winE.frame } - public func getScreenFrame() -> NSRect { return winE.screen!.frame } - public func getMouseLoc() -> NSPoint { return winE.mouseLocationOutsideOfEventStream } - public func addHook(index idx:Int, fct fptr:UnsafeMutableRawPointer, param pptr:UnsafeMutableRawPointer) - { winE.addHook(index: idx, fct: fptr, param: pptr) } - public func setKeyRepeat(_ mode:Int) { winE.setKeyRepeat(mode) } - public func destroyWinE() { winE.close() } - public func setNotifs() { winE.setNotifs() } - public func delNotifs() { winE.delNotifs() } - - - public func initMetal() - { - commandQueue = device.makeCommandQueue()! - - /// vertex buffer & shaders stay the always the same. - let lib = try! device.makeLibrary(source: shaders, options: nil) - let vertexFunction = lib.makeFunction(name: "basic_vertex_function") - let fragmentFunction = lib.makeFunction(name: "basic_fragment_function") - let pipelineDesc = MTLRenderPipelineDescriptor() - pipelineDesc.colorAttachments[0].pixelFormat = .bgra8Unorm - pipelineDesc.colorAttachments[0].isBlendingEnabled = true - pipelineDesc.colorAttachments[0].rgbBlendOperation = .add - pipelineDesc.colorAttachments[0].alphaBlendOperation = .add - pipelineDesc.colorAttachments[0].sourceRGBBlendFactor = .oneMinusSourceAlpha - pipelineDesc.colorAttachments[0].sourceAlphaBlendFactor = .oneMinusSourceAlpha - pipelineDesc.colorAttachments[0].destinationRGBBlendFactor = .sourceAlpha - pipelineDesc.colorAttachments[0].destinationAlphaBlendFactor = .sourceAlpha - pipelineDesc.vertexFunction = vertexFunction - pipelineDesc.fragmentFunction = fragmentFunction - pipelineState = try! device.makeRenderPipelineState(descriptor: pipelineDesc) - - let vertexData: [Float] = [ - -1.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, - -1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, - 1.0, -1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, - 1.0, -1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, - -1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0 ] - var dataSize = vertexData.count * MemoryLayout.size(ofValue: vertexData[0]) - vertexBuffer = device.makeBuffer(bytes: vertexData, length: dataSize, options: []) - - let uniformData: [Float] = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Float(vrect.size.width), Float(vrect.size.height), 0.0, 0.0, 0.0, 0.0, - 1.0, 1.0, 1.0, 1.0 ] - dataSize = uniformData.count * MemoryLayout.size(ofValue: uniformData[0]) - for _ in 0...255 - { - let uniformBuffer = device.makeBuffer(bytes: uniformData, length: dataSize, options: [])! - let uniform_data = (uniformBuffer.contents()).assumingMemoryBound(to:Float.self) - texture_list.append(textureList(uniformBuffer:uniformBuffer, uniform_data:uniform_data, image:pixel_image)) - } - - self.clearWin(); - } - - - public func clearWin() - { - /// discard previous put_images, doClear become first operation in next render pass. - var i = 0 - while i < texture_list_count - { - texture_list[i].image.onGPU -= 1 - i += 1 - } - texture_list_count = 0 - doClear = true - /// next flush images should call draw(), even if there is no image to put - } - - func flushPixels() - { - if (pixel_count > 0) - { - pixel_count = 0 - self.putImage(image:pixel_image, x:0, y:0) - } - } - - public func flushImages() - { - flushPixels() - if (texture_list_count > 0 || doClear) - { - self.draw() - } - } - - public func waitForGPU() - { - while (GPUbatch > 0) { } - } - - - public func pixelPut(_ x:Int32, _ y:Int32, _ color:UInt32) - { - if (pixel_count == 0) - { - while (pixel_image.onGPU > 0) - { - if (GPUbatch > 0) { waitForGPU() } - else { flushImages() } - } - for i in 0...pixel_image.texture_height*pixel_image.texture_sizeline/4-1 - { pixel_image.texture_data[i] = UInt32(0xFF000000) } - } - let t = (x&(Int32(vrect.size.width-1)-x))&(y&(Int32(vrect.size.height-1)-y)) - if t >= 0 - { - pixel_image.texture_data[Int(y)*pixel_image.texture_sizeline/4+Int(x)] = color - pixel_count += 1 - } - } - - public func putImage(image img:MlxImg, x posx:Int32, y posy:Int32) - { - flushPixels() - putImageScale(image:img, sx:0, sy:0, sw:Int32(img.texture_width), sh:Int32(img.texture_height), - dx:posx, dy:posy, dw:Int32(img.texture_width), dh:Int32(img.texture_height), - c:UInt32(0xFFFFFFFF)) - } - - public func putImageScale(image img:MlxImg, sx src_x:Int32, sy src_y:Int32, sw src_w:Int32, sh src_h:Int32, dx dest_x:Int32, dy dest_y:Int32, dw dest_w:Int32, dh dest_h:Int32, c color:UInt32) - { - flushPixels() - if (texture_list_count == 0) /// means I just draw - { - waitForGPU() /// to be able to write again in uniforms - } - texture_list[texture_list_count].uniform_data[0] = Float(img.texture_width) - texture_list[texture_list_count].uniform_data[1] = Float(img.texture_height) - texture_list[texture_list_count].uniform_data[2] = Float(src_x) - texture_list[texture_list_count].uniform_data[3] = Float(src_y) - texture_list[texture_list_count].uniform_data[4] = Float(src_w) - texture_list[texture_list_count].uniform_data[5] = Float(src_h) - - texture_list[texture_list_count].uniform_data[8] = Float(dest_x) - texture_list[texture_list_count].uniform_data[9] = Float(dest_y) - texture_list[texture_list_count].uniform_data[10] = Float(dest_w) - texture_list[texture_list_count].uniform_data[11] = Float(dest_h) - - texture_list[texture_list_count].uniform_data[12] = Float((color>>16)&0xFF)/255.0; - texture_list[texture_list_count].uniform_data[13] = Float((color>>8)&0xFF)/255.0; - texture_list[texture_list_count].uniform_data[14] = Float((color>>0)&0xFF)/255.0; - texture_list[texture_list_count].uniform_data[15] = Float((color>>24)&0xFF)/255.0; - - texture_list[texture_list_count].image = img - img.onGPU += 1 - - texture_list_count += 1 - if (texture_list_count == 255) /// keep 1 slot for put_pixels image - { - flushImages() - } - } - - - func draw() - { - var commandBuffer = commandQueue.makeCommandBuffer()! - -/// clear if asked - if (doClear) - { - uniq_renderPassDescriptor.colorAttachments[0].loadAction = .clear - let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: uniq_renderPassDescriptor)! - commandEncoder.endEncoding() - uniq_renderPassDescriptor.colorAttachments[0].loadAction = .load - doClear = false - } - -/// then draw the images if any. - var i = 0 - while i < texture_list_count - { - let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: uniq_renderPassDescriptor)! - commandEncoder.setRenderPipelineState(pipelineState) - commandEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0) - commandEncoder.setVertexBuffer(texture_list[i].uniformBuffer, offset: 0, index: 1) - commandEncoder.setFragmentTexture(texture_list[i].image.texture, index: 0) - commandEncoder.drawPrimitives(type: .triangleStrip, vertexStart: 0, vertexCount: 6, instanceCount:2) - commandEncoder.endEncoding() - ({ j in - commandBuffer.addCompletedHandler { cb in self.texture_list[j].image.onGPU -= 1 } - })(i) - i += 1 - } - texture_list_count = 0 - commandBuffer.addCompletedHandler { cb in self.GPUbatch -= 1 } - commandBuffer.commit() - GPUbatch += 1 - -/// finally copy to MTLdrawable to present, using a new commandqueue - commandBuffer = commandQueue.makeCommandBuffer()! - let curdraw = mlayer.nextDrawable()! - - let commandBEncoder = commandBuffer.makeBlitCommandEncoder()! - commandBEncoder.copy(from:drawable_image.texture, sourceSlice:0, sourceLevel:0, sourceOrigin: mtl_origin_null, sourceSize: mtl_size_all, to:curdraw.texture, destinationSlice:0, destinationLevel:0, destinationOrigin: mtl_origin_null) - commandBEncoder.endEncoding() - - commandBuffer.addCompletedHandler { cb in self.GPUbatch -= 1 } - commandBuffer.present(curdraw) - commandBuffer.commit() - GPUbatch += 1 - } - - -} - - - - -let shaders = """ -#include <metal_stdlib> -using namespace metal; - -struct VertexIn { - float4 position; - float4 UV; -}; -struct VertexOut { - float4 position [[ position ]]; - float4 color; - float2 UV; -}; -struct uniforms { - packed_float2 origin_size; - packed_float2 origin_pos; - packed_float2 origin_sub; - packed_float2 dest_size; - packed_float2 dest_pos; - packed_float2 dest_sub; - packed_float4 color; -}; -vertex VertexOut basic_vertex_function(const device VertexIn *vertices [[ buffer(0) ]], constant uniforms& uni [[ buffer(1) ]], -uint vertexID [[ vertex_id ]]) -{ - VertexOut vOut; - float4 start = float4((2.0*uni.dest_pos.x)/(uni.dest_size.x-1.0) - 1.0, 1.0 - (2.0*uni.dest_pos.y)/(uni.dest_size.y-1.0) - (uni.dest_sub.y*2.0)/uni.dest_size.y, 0.0, 0.0); - /* vOut.position = (start + (vertices[vertexID].position + 1.0) * float4(uni.dest_sub, 0.0, 0.0))/float4(uni.dest_size, 1.0, 1.0); */ - - vOut.position = float4(start.x+((vertices[vertexID].position.x + 1.0)*uni.dest_sub.x)/(uni.dest_size.x), - start.y+((vertices[vertexID].position.y + 1.0)*uni.dest_sub.y)/(uni.dest_size.y), 0.0, 1.0); - - vOut.UV = (uni.origin_pos + float2(vertices[vertexID].UV.x, vertices[vertexID].UV.y)*(uni.origin_sub-1.0))/(uni.origin_size-1.0); - vOut.color = uni.color; - return vOut; -} -fragment float4 basic_fragment_function(VertexOut vIn [[ stage_in ]], texture2d<float> texture [[ texture(0) ]]) -{ - constexpr sampler textureSampler(address::clamp_to_edge); - return vIn.color*texture.sample(textureSampler, vIn.UV); -} -""" - diff --git a/minilibx_beta/mlx_window.swiftdoc b/minilibx_beta/mlx_window.swiftdoc Binary files differdeleted file mode 100644 index 71bb8c8..0000000 --- a/minilibx_beta/mlx_window.swiftdoc +++ /dev/null diff --git a/minilibx_beta/mlx_window.swiftmodule b/minilibx_beta/mlx_window.swiftmodule Binary files differdeleted file mode 100644 index 8f3f8a3..0000000 --- a/minilibx_beta/mlx_window.swiftmodule +++ /dev/null diff --git a/minilibx_beta/mlx_xpm.c b/minilibx_beta/mlx_xpm.c deleted file mode 100644 index 25fdafe..0000000 --- a/minilibx_beta/mlx_xpm.c +++ /dev/null @@ -1,384 +0,0 @@ -// mlx xpm -// by ol - -#include <stdlib.h> -#include <stdio.h> -#include <sys/mman.h> -#include <unistd.h> -#include <fcntl.h> -#include <string.h> - -#include "mlx.h" - -typedef struct s_xpm_col -{ - int name; - int col; -} t_xpm_col; - - -struct s_col_name -{ - char *name; - int color; -}; - -//extern struct s_col_name mlx_col_name[]; -#include "mlx_rgb.c" - - -#define RETURN { if (colors) free(colors); if (tab) free(tab); \ - if (colors_direct) free(colors_direct); \ - if (img) mlx_destroy_image(xvar, img); \ - return ((void *)0); } - - - - -// -// str 2 wordtab & co - -int mlx_int_str_str(char *str,char *find,int len) -{ - int len_f; - int pos; - char *s; - char *f; - - len_f = strlen(find); - if (len_f>len) - return (-1); - pos = 0; - while (*(str+len_f-1)) - { - s = str; - f = find; - while (*(f++) == *(s++)) - if (!*f) - return (pos); - str ++; - pos ++; - } - return (-1); -} - - - -int mlx_int_str_str_cote(char *str,char *find,int len) -{ - int len_f; - int pos; - char *s; - char *f; - int cote; - - len_f = strlen(find); - if (len_f>len) - return (-1); - cote = 0; - pos = 0; - while (*(str+len_f-1)) - { - if (*str=='"') - cote = 1-cote; - if (!cote) - { - s = str; - f = find; - while (*(f++) == *(s++)) - if (!*f) - return (pos); - } - str ++; - pos ++; - } - return (-1); -} - - -char **mlx_int_str_to_wordtab(char *str) -{ - char **tab; - int pos; - int nb_word; - int len; - - len = strlen(str); - nb_word = 0; - pos = 0; - while (pos<len) - { - while (*(str+pos)==' ' || *(str+pos)=='\t') - pos ++; - if (*(str+pos)) - nb_word ++; - while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t') - pos ++; - } - if (!(tab = malloc((1+nb_word)*sizeof(*tab)))) - return ((char **)0); - nb_word = 0; - pos = 0; - while (pos<len) - { - while (*(str+pos)==' ' || *(str+pos)=='\t') - { - *(str+pos) = 0; - pos ++; - } - if (*(str+pos)) - { - tab[nb_word] = str+pos; - nb_word ++; - } - while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t') - pos ++; - } - tab[nb_word] = 0; - return (tab); -} - - -// back to mlx_xpm - - - -char *mlx_int_get_line(char *ptr,int *pos,int size) -{ - int pos2; - int pos3; - int pos4; - - if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1) - return ((char *)0); - if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1) - return ((char *)0); - *(ptr+*pos+pos2) = 0; - *(ptr+*pos+pos2+1+pos3) = 0; - pos4 = *pos+pos2+1; - *pos += pos2+pos3+2; - return (ptr+pos4); -} - - - -char *mlx_int_static_line(char **xpm_data,int *pos,int size) -{ - static char *copy = 0; - static int len = 0; - int len2; - char *str; - - str = xpm_data[(*pos)++]; - if ((len2 = strlen(str))>len) - { - if (copy) - free(copy); - if (!(copy = malloc(len2+1))) - return ((char *)0); - len = len2; - } - /* strcpy(copy,str); */ - strlcpy(copy, str, len2+1); - return (copy); -} - - -int mlx_int_get_col_name(char *str,int size) -{ - int result; - - result = 0; - while (size--) - result = (result<<8)+*(str++); - return (result); -} - -int mlx_int_get_text_rgb(char *name, char *end) -{ - int i; - char buff[64]; - - if (*name == '#') - return (strtol(name+1,0,16)); - if (end) - { - snprintf(buff, 64, "%s %s", name, end); - name = buff; - } - i = 0; - while (mlx_col_name[i].name) - { - if (!strcasecmp(mlx_col_name[i].name, name)) - return (mlx_col_name[i].color); - i ++; - } - return (0); -} - - -void mlx_int_xpm_set_pixel(char *data, int opp, int col, int x) -{ - *((unsigned int *)(data+4*x)) = col; -} - - -void *mlx_int_parse_xpm(void *xvar,void *info,int info_size,char *(*f)(), int *width, int *height) -{ - int pos; - char *line; - char **tab; - char *data; - char *clip_data; - int nc; - int opp; - int sl; - int endian; - int cpp; - int col; - int rgb_col; - int col_name; - int method; - int x; - int i; - int j; - void *img; - t_xpm_col *colors; - int *colors_direct; - - colors = 0; - colors_direct = 0; - img = 0; - tab = 0; - pos = 0; - if (!(line = f(info,&pos,info_size)) || - !(tab = mlx_int_str_to_wordtab(line)) || !(*width = atoi(tab[0])) || - !(*height = atoi(tab[1])) || !(nc = atoi(tab[2])) || - !(cpp = atoi(tab[3])) ) - RETURN; - free(tab); - tab = 0; - - method = 0; - if (cpp<=2) - { - method = 1; - if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int)))) - RETURN; - } - else - if (!(colors = malloc(nc*sizeof(*colors)))) - RETURN; - - clip_data = 0; - - i = nc; - while (i--) - { - if (!(line = f(info,&pos,info_size)) || - !(tab = mlx_int_str_to_wordtab(line+cpp)) ) - RETURN; - j = 0; - while (tab[j] && strcmp(tab[j++],"c")); - - if (!tab[j]) - RETURN; - - rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]); - if (method) - colors_direct[mlx_int_get_col_name(line,cpp)] = rgb_col; - else - { - colors[i].name = mlx_int_get_col_name(line,cpp); - colors[i].col = rgb_col; - } - free(tab); - tab = 0; - } - - if (!(img = mlx_new_image(xvar,*width,*height))) - RETURN; - data = mlx_get_data_addr(img, &opp, &sl, &endian); - opp = 4; - - i = *height; - while (i--) - { - if (!(line = f(info,&pos,info_size))) - RETURN; - x = 0; - while (x<*width) - { - col = 0; - col_name = mlx_int_get_col_name(line+cpp*x,cpp); - if (method) - col = colors_direct[col_name]; - else - { - j = nc; - while (j--) - if (colors[j].name==col_name) - { - col = colors[j].col; - j = 0; - } - } - if (col==-1) - col = 0xFF000000; - mlx_int_xpm_set_pixel(data, opp, col, x); - x ++; - } - data += sl; //img->width*4; - } - if (colors) - free(colors); - if (colors_direct) - free(colors_direct); - return (img); -} - - -void mlx_int_file_get_rid_comment(char *ptr, int size) -{ - int com_begin; - int com_end; - - while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1) - { - com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2); - memset(ptr+com_begin,' ',com_end+4); - } - while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1) - { - com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2); - memset(ptr+com_begin,' ',com_end+3); - } -} - - -void *mlx_xpm_file_to_image(void *xvar,char *file,int *width,int *height) -{ - int fd; - int size; - char *ptr; - void *img; - - if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 || - (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))== - (void *)MAP_FAILED) - { - if (fd>=0) - close(fd); - return ((void *)0); - } - mlx_int_file_get_rid_comment(ptr, size); - img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line, width, height); - munmap(ptr,size); - close(fd); - return (img); -} - -void *mlx_xpm_to_image(void *xvar,char **xpm_data,int *width,int *height) -{ - return (mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line, width, height)); -} |