diff options
76 files changed, 0 insertions, 20536 deletions
diff --git a/engines/sci/Makefile.am b/engines/sci/Makefile.am deleted file mode 100644 index ad50a7e20e..0000000000 --- a/engines/sci/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -SUBDIRS = scicore engine include gfx sfx tools menu win32 -EXTRA_DIST = README yywrap.c config.l sciv dc/3dutils.c dc/Makefile \ - dc/bkg.c dc/config.h.in dc/dc.h dc/dc_save.c dc/gamemenu.c dc/gp.h \ - dc/keyboard.c dc/keyboard.h dc/mouse1.h dc/options.h \ - dc/selectgame.c dc/selectgame.h dc/sintab.h dc/texture.c dc/aica.h \ - dc/aica_cmd_iface.h dc/aica_crt0.s dc/aica_main.c dc/aica_sup.c \ - dc/snd_stream.c dc/stream.h -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -AM_CFLAGS = $(SDL_CFLAGS) -LDADD = engine/libsciengine.a gfx/libscigraphics.a \ - gfx/resource/libsciresources.a gfx/drivers/libscidrivers.a \ - sfx/libscisound.a scicore/libscicore.a \ - sfx/player/libsciplayer.a \ - sfx/seq/libsciseq.a sfx/timer/libscitimer.a \ - sfx/pcm_device/libscipcm.a sfx/mixer/libscimixer.a \ - sfx/softseq/libscisoftseq.a \ - sfx/libscisoundlib.a \ - sfx/device/libscisounddevice.a \ - win32/libsciwin32.a \ - menu/libscimenu.a \ - @ac_readline@ @ac_curses_libraries@ @ac_png_libraries@ @LIB_M@ @SDL_LIBS@ -bin_PROGRAMS = freesci -freesci_SOURCES = config.l main.c -freesci_LDFLAGS = @SCIV_LDFLAGS@ diff --git a/engines/sci/config.c b/engines/sci/config.c deleted file mode 100644 index 35c0a4596c..0000000000 --- a/engines/sci/config.c +++ /dev/null @@ -1,3439 +0,0 @@ - -#line 3 "config.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 33 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <stdlib.h> - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ - -#if __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include <inttypes.h> -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; - -typedef int yy_state_type; - -extern int yylineno; - -int yylineno = 1; - -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 13 -#define YY_END_OF_BUFFER 14 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[315] = - { 0, - 12, 12, 14, 12, 11, 11, 12, 12, 12, 12, - 6, 12, 12, 12, 12, 12, 12, 12, 11, 11, - 6, 12, 12, 12, 12, 12, 12, 6, 6, 6, - 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, - 10, 12, 12, 12, 6, 6, 6, 6, 6, 6, - 6, 1, 12, 12, 12, 12, 12, 12, 12, 12, - 6, 6, 6, 0, 12, 12, 6, 6, 12, 12, - 12, 12, 0, 12, 12, 12, 6, 12, 12, 12, - 12, 12, 0, 6, 0, 12, 12, 6, 12, 12, - 0, 12, 0, 12, 8, 6, 6, 6, 6, 12, - - 12, 12, 12, 5, 12, 0, 12, 12, 0, 0, - 6, 0, 12, 12, 6, 12, 0, 8, 12, 0, - 12, 12, 8, 6, 12, 12, 12, 5, 5, 5, - 5, 5, 12, 0, 12, 0, 12, 12, 0, 0, - 6, 12, 0, 0, 0, 8, 12, 12, 12, 12, - 5, 5, 5, 5, 5, 6, 5, 12, 0, 12, - 12, 0, 0, 6, 7, 12, 12, 12, 6, 12, - 12, 5, 5, 5, 12, 12, 5, 6, 5, 12, - 0, 12, 12, 6, 6, 12, 9, 12, 5, 12, - 12, 5, 12, 12, 6, 12, 12, 12, 5, 12, - - 12, 5, 12, 6, 12, 6, 12, 12, 12, 12, - 5, 4, 4, 4, 4, 4, 4, 4, 12, 6, - 12, 12, 12, 5, 4, 4, 4, 4, 4, 4, - 4, 4, 12, 6, 6, 12, 4, 4, 4, 4, - 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, - 6, 4, 4, 4, 4, 4, 3, 3, 3, 3, - 3, 3, 3, 3, 6, 4, 4, 4, 4, 4, - 4, 4, 3, 3, 3, 3, 3, 3, 3, 6, - 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, - 2, 4, 4, 4, 4, 3, 3, 3, 3, 3, - - 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 5, 6, 1, 7, 1, 1, 8, - 1, 1, 1, 9, 10, 11, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 10, 14, 15, - 16, 17, 1, 1, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 19, 20, 21, 1, 22, 1, 18, 23, 24, 25, - - 26, 18, 27, 18, 28, 18, 18, 29, 30, 31, - 32, 33, 18, 34, 35, 18, 36, 37, 38, 18, - 18, 18, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[39] = - { 0, - 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 4, 1, 1, 1, 1, 4, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4 - } ; - -static yyconst flex_int16_t yy_base[337] = - { 0, - 0, 0, 966, 0, 37, 39, 53, 0, 932, 74, - 112, 150, 918, 922, 915, 916, 17, 0, 47, 44, - 0, 42, 188, 929, 900, 197, 0, 0, 235, 273, - 293, 46, 306, 909, 886, 896, 894, 877, 877, 884, - 2229, 878, 885, 890, 196, 876, 344, 874, 381, 394, - 843, 0, 804, 793, 432, 791, 783, 779, 778, 453, - 209, 0, 384, 490, 493, 497, 505, 0, 769, 764, - 518, 50, 782, 537, 551, 560, 598, 753, 755, 746, - 197, 618, 626, 543, 630, 642, 646, 654, 741, 752, - 50, 659, 270, 663, 0, 0, 677, 510, 698, 688, - - 684, 686, 281, 719, 756, 760, 763, 775, 768, 783, - 795, 791, 807, 811, 823, 673, 816, 2229, 828, 272, - 692, 832, 687, 674, 648, 639, 628, 0, 846, 884, - 669, 214, 904, 912, 924, 920, 936, 948, 932, 960, - 640, 610, 941, 633, 953, 623, 577, 283, 566, 575, - 298, 536, 973, 498, 1010, 1023, 503, 1013, 1060, 1063, - 1075, 1068, 1087, 299, 2229, 479, 434, 289, 204, 435, - 376, 511, 0, 1099, 1103, 1115, 1120, 539, 390, 432, - 564, 365, 322, 562, 838, 292, 0, 1132, 1144, 1148, - 1160, 1165, 515, 274, 1080, 1177, 1181, 1193, 1205, 1209, - - 1221, 1233, 534, 1246, 262, 1081, 1283, 1226, 1295, 1307, - 225, 0, 0, 1320, 1358, 1108, 574, 1379, 609, 1125, - 1300, 1416, 1428, 635, 213, 636, 199, 1441, 187, 1478, - 1491, 191, 659, 1529, 1423, 569, 800, 0, 1481, 1566, - 1570, 1578, 0, 0, 0, 1591, 1629, 1153, 801, 1650, - 1186, 1687, 1699, 1703, 1715, 1720, 186, 839, 140, 1733, - 102, 1723, 1771, 75, 1187, 1808, 1812, 1824, 1836, 1840, - 1852, 1864, 892, 0, 1857, 1876, 1880, 1888, 0, 1214, - 1900, 1912, 1916, 1928, 58, 1940, 1952, 1956, 1968, 1973, - 1288, 1985, 1989, 2001, 966, 2013, 2017, 2029, 2041, 2045, - - 2057, 2069, 611, 2081, 2062, 2093, 2105, 52, 2098, 2117, - 2129, 1093, 647, 2229, 2142, 2146, 2150, 2154, 2158, 2162, - 2164, 2168, 2172, 2176, 2180, 2184, 2188, 2192, 2196, 2200, - 2204, 2208, 2212, 2216, 2220, 2224 - } ; - -static yyconst flex_int16_t yy_def[337] = - { 0, - 314, 1, 314, 315, 315, 314, 316, 317, 315, 314, - 314, 314, 10, 10, 10, 10, 10, 315, 315, 314, - 11, 315, 316, 317, 315, 23, 10, 11, 314, 318, - 11, 11, 314, 12, 10, 10, 10, 10, 10, 10, - 314, 315, 26, 319, 319, 29, 314, 29, 29, 314, - 315, 315, 10, 10, 10, 10, 10, 10, 315, 314, - 319, 47, 319, 314, 319, 319, 29, 50, 10, 10, - 315, 71, 320, 321, 23, 75, 11, 10, 10, 315, - 60, 319, 314, 319, 314, 319, 319, 29, 10, 10, - 322, 321, 322, 323, 315, 77, 318, 77, 33, 10, - - 10, 315, 315, 314, 319, 314, 319, 319, 314, 314, - 319, 314, 319, 319, 29, 23, 324, 314, 323, 322, - 325, 323, 325, 71, 10, 10, 315, 104, 314, 326, - 104, 104, 319, 314, 319, 314, 319, 319, 314, 314, - 29, 23, 324, 327, 324, 327, 10, 10, 328, 329, - 329, 129, 314, 129, 129, 314, 315, 319, 314, 319, - 319, 314, 314, 319, 314, 23, 10, 315, 11, 328, - 330, 329, 153, 329, 329, 329, 129, 329, 156, 319, - 314, 23, 23, 11, 11, 330, 315, 329, 329, 329, - 329, 129, 23, 23, 11, 329, 329, 329, 329, 329, - - 329, 129, 315, 314, 23, 11, 329, 329, 329, 329, - 129, 331, 204, 314, 332, 204, 204, 314, 23, 11, - 329, 329, 329, 329, 333, 333, 214, 314, 214, 214, - 314, 331, 315, 314, 11, 329, 333, 228, 333, 333, - 333, 214, 231, 334, 234, 314, 335, 234, 234, 314, - 11, 333, 333, 333, 333, 214, 336, 336, 246, 314, - 246, 246, 314, 334, 11, 333, 333, 333, 333, 333, - 333, 214, 336, 260, 336, 336, 336, 246, 263, 11, - 333, 333, 333, 333, 214, 336, 336, 336, 336, 246, - 11, 333, 333, 333, 333, 336, 336, 336, 336, 336, - - 336, 246, 333, 336, 336, 336, 336, 246, 336, 336, - 336, 336, 336, 0, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314 - } ; - -static yyconst flex_int16_t yy_nxt[2268] = - { 0, - 4, 5, 6, 4, 7, 8, 9, 4, 4, 7, - 7, 7, 10, 4, 4, 11, 4, 10, 12, 4, - 4, 7, 10, 13, 14, 10, 10, 10, 10, 10, - 10, 10, 15, 16, 10, 10, 17, 10, 19, 20, - 20, 20, 39, 22, 40, 20, 20, 51, 19, 20, - 31, 72, 21, 18, 22, 117, 18, 21, 18, 18, - 18, 18, 21, 118, 261, 77, 18, 18, 21, 18, - 229, 18, 18, 18, 18, 22, 264, 18, 23, 18, - 18, 18, 18, 23, 26, 23, 27, 18, 18, 21, - 18, 27, 18, 18, 18, 23, 27, 27, 27, 27, - - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 18, 28, 261, 18, 29, 18, 18, 18, - 18, 30, 31, 31, 32, 18, 18, 18, 18, 31, - 18, 33, 18, 30, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 18, 18, 261, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 34, 18, 18, 18, 18, 34, 18, 18, - 18, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 18, 22, - 273, 18, 232, 18, 18, 18, 18, 45, 103, 229, - - 61, 18, 18, 21, 18, 184, 18, 18, 18, 43, - 45, 229, 104, 61, 43, 157, 185, 237, 131, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 44, 45, 154, 44, 46, - 44, 44, 44, 44, 47, 48, 48, 49, 44, 44, - 44, 44, 48, 44, 50, 44, 47, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 18, 51, 117, 18, 117, 18, 18, - 18, 18, 103, 118, 168, 118, 18, 18, 18, 18, - 168, 18, 18, 18, 51, 219, 104, 31, 169, 151, - - 45, 205, 172, 61, 169, 31, 18, 51, 187, 18, - 33, 18, 18, 18, 18, 18, 33, 33, 33, 18, - 18, 18, 18, 33, 18, 33, 18, 18, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 44, 45, 194, 44, 62, 44, - 44, 44, 44, 47, 47, 47, 47, 44, 44, 44, - 44, 47, 44, 44, 44, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 63, 64, 65, 63, 64, 65, 61, 66, - 193, 151, 187, 67, 44, 45, 82, 44, 68, 44, - - 44, 44, 44, 44, 50, 50, 50, 44, 44, 44, - 44, 50, 44, 50, 44, 44, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 71, 72, 73, 71, 164, 71, 71, 74, - 71, 75, 76, 75, 180, 71, 71, 77, 71, 171, - 71, 71, 71, 18, 22, 183, 18, 23, 18, 18, - 18, 18, 23, 23, 23, 81, 18, 18, 21, 18, - 81, 18, 18, 18, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 64, 64, 64, 65, 64, 65, 61, 65, 64, - - 65, 61, 83, 182, 157, 82, 84, 85, 86, 82, - 154, 124, 151, 87, 31, 172, 203, 88, 71, 71, - 73, 71, 31, 71, 71, 74, 71, 71, 71, 71, - 204, 71, 71, 71, 71, 203, 71, 71, 71, 93, - 178, 18, 94, 172, 84, 85, 86, 61, 154, 204, - 95, 71, 72, 73, 71, 108, 71, 71, 74, 71, - 75, 75, 75, 184, 71, 71, 77, 71, 165, 71, - 71, 71, 43, 224, 185, 232, 181, 43, 216, 172, - 171, 236, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 71, 96, - - 73, 71, 167, 71, 71, 74, 71, 97, 98, 98, - 233, 71, 71, 71, 71, 295, 71, 99, 71, 105, - 106, 105, 61, 303, 234, 93, 107, 106, 106, 106, - 108, 85, 85, 85, 109, 93, 151, 226, 110, 172, - 237, 166, 110, 86, 85, 86, 61, 86, 85, 86, - 61, 312, 48, 149, 108, 111, 112, 113, 108, 313, - 233, 93, 114, 18, 94, 120, 115, 121, 122, 148, - 157, 147, 95, 131, 234, 124, 123, 71, 124, 73, - 71, 131, 71, 71, 74, 71, 97, 97, 97, 93, - 71, 71, 71, 71, 93, 71, 71, 71, 71, 124, - - 73, 71, 142, 71, 71, 74, 71, 71, 99, 99, - 127, 71, 71, 71, 71, 126, 71, 99, 71, 18, - 128, 125, 18, 129, 18, 18, 18, 18, 130, 131, - 131, 132, 18, 18, 18, 18, 131, 18, 33, 18, - 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 105, 106, 105, - 61, 106, 106, 106, 105, 106, 105, 61, 133, 106, - 106, 106, 134, 116, 55, 133, 135, 136, 135, 61, - 134, 102, 101, 137, 136, 136, 136, 138, 100, 91, - 90, 139, 112, 112, 112, 140, 111, 112, 113, 61, - - 89, 226, 264, 140, 237, 248, 80, 138, 113, 112, - 113, 61, 113, 112, 113, 61, 55, 79, 120, 138, - 144, 145, 78, 138, 111, 112, 113, 141, 70, 146, - 120, 114, 121, 122, 120, 115, 121, 122, 69, 51, - 258, 123, 31, 273, 51, 123, 150, 151, 195, 150, - 152, 150, 150, 150, 150, 153, 154, 154, 155, 150, - 150, 150, 150, 154, 150, 156, 150, 153, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 18, 157, 48, 18, 48, 18, - 18, 18, 18, 258, 61, 60, 273, 18, 18, 18, - - 18, 59, 18, 18, 18, 158, 159, 158, 61, 58, - 57, 56, 160, 159, 159, 159, 161, 55, 54, 53, - 162, 136, 136, 136, 163, 135, 136, 135, 61, 52, - 42, 41, 163, 136, 136, 136, 161, 135, 136, 135, - 61, 38, 37, 120, 163, 144, 145, 36, 161, 135, - 136, 135, 164, 35, 146, 120, 137, 144, 145, 25, - 138, 136, 136, 136, 165, 314, 146, 226, 139, 314, - 237, 314, 140, 150, 151, 314, 150, 173, 150, 150, - 150, 150, 153, 153, 153, 153, 150, 150, 150, 150, - 153, 150, 150, 150, 153, 153, 153, 153, 153, 153, - - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 174, 64, 175, 158, 159, 158, 61, 176, 314, - 314, 314, 177, 150, 178, 180, 150, 179, 150, 150, - 150, 150, 150, 156, 156, 156, 150, 150, 150, 150, - 156, 150, 156, 150, 150, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 159, 159, 159, 158, 159, 158, 61, 314, 159, - 159, 159, 181, 314, 314, 180, 158, 159, 158, 164, - 181, 51, 51, 160, 31, 31, 314, 161, 159, 159, - 159, 165, 206, 220, 258, 162, 314, 273, 314, 163, - - 174, 64, 175, 172, 175, 64, 175, 172, 314, 232, - 314, 188, 216, 314, 314, 188, 175, 64, 175, 172, - 216, 189, 85, 190, 314, 314, 51, 188, 191, 31, - 314, 314, 192, 196, 106, 196, 172, 235, 314, 314, - 197, 314, 314, 314, 198, 189, 85, 190, 172, 190, - 85, 190, 172, 314, 264, 314, 198, 248, 314, 314, - 198, 190, 85, 190, 172, 248, 199, 112, 200, 314, - 314, 314, 198, 201, 314, 314, 314, 202, 196, 106, - 196, 172, 196, 106, 196, 172, 314, 51, 51, 207, - 31, 31, 314, 207, 208, 136, 208, 172, 265, 280, - - 314, 209, 314, 314, 314, 210, 199, 112, 200, 172, - 200, 112, 200, 172, 314, 51, 314, 210, 31, 314, - 314, 210, 200, 112, 200, 172, 291, 208, 136, 208, - 172, 314, 314, 210, 199, 112, 200, 211, 223, 314, - 314, 201, 314, 314, 314, 202, 212, 213, 314, 212, - 214, 212, 212, 212, 212, 215, 216, 216, 217, 212, - 212, 212, 212, 216, 212, 218, 212, 215, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 221, 159, 221, 172, 314, 51, - 314, 222, 31, 314, 314, 223, 208, 136, 208, 172, - - 31, 221, 159, 221, 172, 314, 314, 223, 208, 136, - 208, 224, 236, 314, 314, 209, 314, 314, 314, 210, - 225, 226, 314, 225, 227, 225, 225, 225, 225, 228, - 229, 229, 230, 225, 225, 225, 225, 229, 225, 231, - 225, 228, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 212, 232, - 314, 212, 314, 212, 212, 212, 212, 314, 314, 314, - 314, 212, 212, 212, 212, 314, 212, 212, 212, 212, - 232, 314, 212, 218, 212, 212, 212, 212, 212, 218, - 218, 218, 212, 212, 212, 212, 218, 212, 218, 212, - - 212, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 221, 159, 221, - 172, 314, 314, 314, 51, 314, 314, 31, 236, 221, - 159, 221, 224, 251, 314, 31, 222, 314, 314, 314, - 223, 225, 226, 314, 225, 238, 225, 225, 225, 225, - 228, 228, 228, 228, 225, 225, 225, 225, 228, 225, - 225, 225, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 239, - 64, 240, 239, 64, 240, 237, 241, 314, 314, 314, - 242, 225, 226, 252, 225, 243, 225, 225, 225, 225, - - 225, 231, 231, 231, 225, 225, 225, 225, 231, 225, - 231, 225, 225, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 244, - 245, 314, 244, 246, 244, 244, 244, 244, 247, 248, - 248, 249, 244, 244, 244, 244, 248, 244, 250, 244, - 247, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 240, 64, 240, - 237, 240, 64, 240, 237, 314, 314, 314, 252, 253, - 85, 254, 252, 314, 314, 314, 255, 314, 314, 314, - 256, 257, 258, 314, 257, 259, 257, 257, 257, 257, - - 260, 261, 261, 262, 257, 257, 257, 257, 261, 257, - 263, 257, 260, 261, 261, 261, 261, 261, 261, 261, - 261, 261, 261, 261, 261, 261, 261, 261, 261, 244, - 264, 314, 244, 314, 244, 244, 244, 244, 314, 314, - 314, 314, 244, 244, 244, 244, 314, 244, 244, 244, - 244, 264, 314, 244, 250, 244, 244, 244, 244, 244, - 250, 250, 250, 244, 244, 244, 244, 250, 244, 250, - 244, 244, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 266, 106, - 266, 237, 314, 314, 314, 267, 314, 314, 314, 268, - - 253, 85, 254, 237, 254, 85, 254, 237, 314, 314, - 314, 268, 314, 314, 314, 268, 254, 85, 254, 237, - 314, 269, 112, 270, 275, 64, 276, 268, 271, 314, - 314, 277, 272, 257, 258, 278, 257, 274, 257, 257, - 257, 257, 260, 260, 260, 260, 257, 257, 257, 257, - 260, 257, 257, 257, 260, 260, 260, 260, 260, 260, - 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, - 260, 257, 258, 314, 257, 279, 257, 257, 257, 257, - 257, 263, 263, 263, 257, 257, 257, 257, 263, 257, - 263, 257, 257, 263, 263, 263, 263, 263, 263, 263, - - 263, 263, 263, 263, 263, 263, 263, 263, 263, 266, - 106, 266, 237, 266, 106, 266, 237, 314, 314, 314, - 281, 314, 314, 314, 281, 282, 136, 282, 237, 314, - 314, 314, 283, 314, 314, 314, 284, 269, 112, 270, - 237, 270, 112, 270, 237, 314, 314, 314, 284, 314, - 314, 314, 284, 270, 112, 270, 237, 314, 275, 64, - 276, 273, 314, 314, 284, 269, 112, 270, 285, 286, - 314, 314, 271, 314, 314, 314, 272, 276, 64, 276, - 273, 276, 64, 276, 273, 314, 314, 314, 286, 287, - 85, 288, 286, 314, 314, 314, 289, 314, 314, 314, - - 290, 292, 159, 292, 237, 314, 314, 314, 293, 314, - 314, 314, 294, 282, 136, 282, 237, 282, 136, 282, - 237, 314, 314, 314, 294, 314, 314, 314, 294, 282, - 136, 282, 295, 314, 314, 314, 283, 314, 314, 314, - 284, 296, 106, 296, 273, 314, 314, 314, 297, 314, - 314, 314, 298, 287, 85, 288, 273, 288, 85, 288, - 273, 314, 314, 314, 298, 314, 314, 314, 298, 288, - 85, 288, 273, 314, 299, 112, 300, 314, 314, 314, - 298, 301, 314, 314, 314, 302, 292, 159, 292, 237, - 292, 159, 292, 237, 314, 314, 314, 303, 314, 314, - - 314, 303, 292, 159, 292, 295, 314, 314, 314, 293, - 314, 314, 314, 294, 296, 106, 296, 273, 296, 106, - 296, 273, 314, 314, 314, 304, 314, 314, 314, 304, - 305, 136, 305, 273, 314, 314, 314, 306, 314, 314, - 314, 307, 299, 112, 300, 273, 300, 112, 300, 273, - 314, 314, 314, 307, 314, 314, 314, 307, 300, 112, - 300, 273, 314, 305, 136, 305, 273, 314, 314, 307, - 299, 112, 300, 308, 311, 314, 314, 301, 314, 314, - 314, 302, 309, 159, 309, 273, 314, 314, 314, 310, - 314, 314, 314, 311, 305, 136, 305, 273, 314, 309, - - 159, 309, 273, 314, 314, 311, 305, 136, 305, 312, - 313, 314, 314, 306, 314, 314, 314, 307, 309, 159, - 309, 273, 314, 314, 314, 314, 314, 314, 314, 313, - 309, 159, 309, 312, 314, 314, 314, 310, 314, 314, - 314, 311, 18, 314, 18, 18, 23, 314, 23, 23, - 24, 314, 24, 24, 30, 314, 30, 30, 44, 314, - 44, 44, 73, 73, 92, 92, 92, 92, 93, 93, - 314, 93, 119, 119, 119, 119, 143, 143, 143, 143, - 121, 121, 121, 121, 130, 314, 130, 130, 144, 144, - 144, 144, 170, 314, 170, 170, 150, 314, 150, 150, - - 186, 314, 186, 186, 212, 314, 212, 212, 215, 314, - 215, 215, 225, 314, 225, 225, 244, 314, 244, 244, - 247, 314, 247, 247, 257, 314, 257, 257, 3, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314 - } ; - -static yyconst flex_int16_t yy_chk[2268] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, - 6, 6, 17, 22, 17, 20, 20, 32, 19, 19, - 32, 72, 5, 7, 7, 91, 7, 22, 7, 7, - 7, 7, 19, 91, 308, 72, 7, 7, 7, 7, - 285, 7, 7, 7, 10, 10, 264, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 11, 11, 261, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 12, 12, 259, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 23, 23, - 257, 23, 232, 23, 23, 23, 23, 45, 81, 229, - - 45, 23, 23, 23, 23, 169, 23, 23, 23, 26, - 61, 227, 81, 61, 26, 132, 169, 225, 132, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 29, 29, 211, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 30, 30, 93, 30, 120, 30, 30, - 30, 30, 103, 93, 148, 120, 30, 30, 30, 30, - 168, 30, 30, 30, 31, 205, 103, 31, 148, 151, - - 164, 194, 151, 164, 168, 31, 33, 33, 186, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 47, 47, 183, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 49, 49, 49, 63, 63, 63, 63, 49, - 182, 179, 171, 49, 50, 50, 63, 50, 50, 50, - - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 55, 55, 55, 55, 180, 55, 55, 55, - 55, 55, 55, 55, 180, 55, 55, 55, 55, 170, - 55, 55, 55, 60, 60, 167, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 64, 64, 64, 65, 65, 65, 65, 66, 66, - - 66, 66, 64, 166, 157, 65, 67, 67, 67, 66, - 154, 98, 172, 67, 98, 172, 193, 67, 71, 71, - 71, 71, 98, 71, 71, 71, 71, 71, 71, 71, - 193, 71, 71, 71, 71, 203, 71, 71, 71, 74, - 178, 74, 74, 178, 84, 84, 84, 84, 152, 203, - 74, 75, 75, 75, 75, 84, 75, 75, 75, 75, - 75, 75, 75, 184, 75, 75, 75, 75, 181, 75, - 75, 75, 76, 236, 184, 217, 181, 76, 217, 150, - 149, 236, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, - - 77, 77, 147, 77, 77, 77, 77, 77, 77, 77, - 219, 77, 77, 77, 77, 303, 77, 77, 77, 82, - 82, 82, 82, 303, 219, 146, 82, 83, 83, 83, - 82, 85, 85, 85, 83, 144, 224, 226, 83, 224, - 226, 142, 85, 86, 86, 86, 86, 87, 87, 87, - 87, 313, 141, 127, 86, 88, 88, 88, 87, 313, - 233, 92, 88, 92, 92, 94, 88, 94, 94, 126, - 131, 125, 92, 131, 233, 124, 94, 97, 97, 97, - 97, 131, 97, 97, 97, 97, 97, 97, 97, 123, - 97, 97, 97, 97, 121, 97, 97, 97, 99, 99, - - 99, 99, 116, 99, 99, 99, 99, 99, 99, 99, - 102, 99, 99, 99, 99, 101, 99, 99, 99, 104, - 104, 100, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, - 105, 106, 106, 106, 107, 107, 107, 107, 105, 109, - 109, 109, 106, 90, 89, 107, 108, 108, 108, 108, - 109, 80, 79, 108, 110, 110, 110, 108, 78, 73, - 70, 110, 112, 112, 112, 110, 111, 111, 111, 111, - - 69, 237, 249, 112, 237, 249, 59, 111, 113, 113, - 113, 113, 114, 114, 114, 114, 58, 57, 117, 113, - 117, 117, 56, 114, 115, 115, 115, 115, 54, 117, - 119, 115, 119, 119, 122, 115, 122, 122, 53, 185, - 258, 119, 185, 258, 51, 122, 129, 129, 185, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 130, 130, 48, 130, 46, 130, - 130, 130, 130, 273, 44, 43, 273, 130, 130, 130, - - 130, 42, 130, 130, 130, 133, 133, 133, 133, 40, - 39, 38, 133, 134, 134, 134, 133, 37, 36, 35, - 134, 136, 136, 136, 134, 135, 135, 135, 135, 34, - 25, 24, 136, 139, 139, 139, 135, 137, 137, 137, - 137, 16, 15, 143, 139, 143, 143, 14, 137, 138, - 138, 138, 138, 13, 143, 145, 138, 145, 145, 9, - 138, 140, 140, 140, 140, 3, 145, 295, 140, 0, - 295, 0, 140, 153, 153, 0, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 155, 155, 155, 158, 158, 158, 158, 155, 0, - 0, 0, 155, 156, 156, 158, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 159, 159, 159, 160, 160, 160, 160, 0, 162, - 162, 162, 159, 0, 0, 160, 161, 161, 161, 161, - 162, 195, 206, 161, 195, 206, 0, 161, 163, 163, - 163, 163, 195, 206, 312, 163, 0, 312, 0, 163, - - 174, 174, 174, 174, 175, 175, 175, 175, 0, 216, - 0, 174, 216, 0, 0, 175, 176, 176, 176, 176, - 216, 177, 177, 177, 0, 0, 220, 176, 177, 220, - 0, 0, 177, 188, 188, 188, 188, 220, 0, 0, - 188, 0, 0, 0, 188, 189, 189, 189, 189, 190, - 190, 190, 190, 0, 248, 0, 189, 248, 0, 0, - 190, 191, 191, 191, 191, 248, 192, 192, 192, 0, - 0, 0, 191, 192, 0, 0, 0, 192, 196, 196, - 196, 196, 197, 197, 197, 197, 0, 251, 265, 196, - 251, 265, 0, 197, 198, 198, 198, 198, 251, 265, - - 0, 198, 0, 0, 0, 198, 199, 199, 199, 199, - 200, 200, 200, 200, 0, 280, 0, 199, 280, 0, - 0, 200, 201, 201, 201, 201, 280, 208, 208, 208, - 208, 0, 0, 201, 202, 202, 202, 202, 208, 0, - 0, 202, 0, 0, 0, 202, 204, 204, 0, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 207, 207, 207, 207, 0, 291, - 0, 207, 291, 0, 0, 207, 209, 209, 209, 209, - - 291, 221, 221, 221, 221, 0, 0, 209, 210, 210, - 210, 210, 221, 0, 0, 210, 0, 0, 0, 210, - 214, 214, 0, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 215, 215, - 0, 215, 0, 215, 215, 215, 215, 0, 0, 0, - 0, 215, 215, 215, 215, 0, 215, 215, 215, 218, - 218, 0, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 222, 222, 222, - 222, 0, 0, 0, 235, 0, 0, 235, 222, 223, - 223, 223, 223, 235, 0, 235, 223, 0, 0, 0, - 223, 228, 228, 0, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 230, - 230, 230, 239, 239, 239, 239, 230, 0, 0, 0, - 230, 231, 231, 239, 231, 231, 231, 231, 231, 231, - - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 234, - 234, 0, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 240, 240, 240, - 240, 241, 241, 241, 241, 0, 0, 0, 240, 242, - 242, 242, 241, 0, 0, 0, 242, 0, 0, 0, - 242, 246, 246, 0, 246, 246, 246, 246, 246, 246, - - 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, - 247, 0, 247, 0, 247, 247, 247, 247, 0, 0, - 0, 0, 247, 247, 247, 247, 0, 247, 247, 247, - 250, 250, 0, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 252, 252, - 252, 252, 0, 0, 0, 252, 0, 0, 0, 252, - - 253, 253, 253, 253, 254, 254, 254, 254, 0, 0, - 0, 253, 0, 0, 0, 254, 255, 255, 255, 255, - 0, 256, 256, 256, 262, 262, 262, 255, 256, 0, - 0, 262, 256, 260, 260, 262, 260, 260, 260, 260, - 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, - 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, - 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, - 260, 263, 263, 0, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - - 263, 263, 263, 263, 263, 263, 263, 263, 263, 266, - 266, 266, 266, 267, 267, 267, 267, 0, 0, 0, - 266, 0, 0, 0, 267, 268, 268, 268, 268, 0, - 0, 0, 268, 0, 0, 0, 268, 269, 269, 269, - 269, 270, 270, 270, 270, 0, 0, 0, 269, 0, - 0, 0, 270, 271, 271, 271, 271, 0, 275, 275, - 275, 275, 0, 0, 271, 272, 272, 272, 272, 275, - 0, 0, 272, 0, 0, 0, 272, 276, 276, 276, - 276, 277, 277, 277, 277, 0, 0, 0, 276, 278, - 278, 278, 277, 0, 0, 0, 278, 0, 0, 0, - - 278, 281, 281, 281, 281, 0, 0, 0, 281, 0, - 0, 0, 281, 282, 282, 282, 282, 283, 283, 283, - 283, 0, 0, 0, 282, 0, 0, 0, 283, 284, - 284, 284, 284, 0, 0, 0, 284, 0, 0, 0, - 284, 286, 286, 286, 286, 0, 0, 0, 286, 0, - 0, 0, 286, 287, 287, 287, 287, 288, 288, 288, - 288, 0, 0, 0, 287, 0, 0, 0, 288, 289, - 289, 289, 289, 0, 290, 290, 290, 0, 0, 0, - 289, 290, 0, 0, 0, 290, 292, 292, 292, 292, - 293, 293, 293, 293, 0, 0, 0, 292, 0, 0, - - 0, 293, 294, 294, 294, 294, 0, 0, 0, 294, - 0, 0, 0, 294, 296, 296, 296, 296, 297, 297, - 297, 297, 0, 0, 0, 296, 0, 0, 0, 297, - 298, 298, 298, 298, 0, 0, 0, 298, 0, 0, - 0, 298, 299, 299, 299, 299, 300, 300, 300, 300, - 0, 0, 0, 299, 0, 0, 0, 300, 301, 301, - 301, 301, 0, 305, 305, 305, 305, 0, 0, 301, - 302, 302, 302, 302, 305, 0, 0, 302, 0, 0, - 0, 302, 304, 304, 304, 304, 0, 0, 0, 304, - 0, 0, 0, 304, 306, 306, 306, 306, 0, 309, - - 309, 309, 309, 0, 0, 306, 307, 307, 307, 307, - 309, 0, 0, 307, 0, 0, 0, 307, 310, 310, - 310, 310, 0, 0, 0, 0, 0, 0, 0, 310, - 311, 311, 311, 311, 0, 0, 0, 311, 0, 0, - 0, 311, 315, 0, 315, 315, 316, 0, 316, 316, - 317, 0, 317, 317, 318, 0, 318, 318, 319, 0, - 319, 319, 320, 320, 321, 321, 321, 321, 322, 322, - 0, 322, 323, 323, 323, 323, 324, 324, 324, 324, - 325, 325, 325, 325, 326, 0, 326, 326, 327, 327, - 327, 327, 328, 0, 328, 328, 329, 0, 329, 329, - - 330, 0, 330, 330, 331, 0, 331, 331, 332, 0, - 332, 332, 333, 0, 333, 333, 334, 0, 334, 334, - 335, 0, 335, 335, 336, 0, 336, 336, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "config.l" -/*************************************************************************** - config.l (C) 1999 Christoph Reichenbach - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Christoph Reichenbach (CJR) [jameson@linuxgames.com] - -***************************************************************************/ -#line 29 "config.l" -#include <engine.h> -#include <gfx_system.h> -#include <gfx_tools.h> -#include <gfx_resource.h> -#include <sci_conf.h> -#include <stddef.h> - -/* unistd override for GNU flex for non-UNIX systems */ -#ifndef HAVE_UNISTD_H -# define YY_NO_UNISTD_H -#endif - -#ifdef _MSC_VER -# include <ctype.h> -# include <direct.h> -#endif - -config_entry_t *conf; -int cur_section=0; /* Size-1 and current section in conf */ -char *exported_conf_path; /* Path which the config file was found in */ -int dospath; /* Use dos-style paths? */ - -typedef struct { - const char *name; - int value; -} name_value_pair; - - -struct { - const char *name; - void *(*check_driver)(char *name); -} freesci_subsystems[FREESCI_DRIVER_SUBSYSTEMS_NR] = { - {"gfx", NULL}, -#ifdef __GNUC__ -#warning "sound" -#endif -#if 0 - {"pcm", parse_pcmout_driver}, - {"midiout", parse_midiout_driver} -#endif -}; - - -typedef struct _file_stack { - char *name; - YY_BUFFER_STATE handle; - struct _file_stack *next; -} file_stack_t; - -static file_stack_t *file_stack = NULL; -static char *yy_filename = NULL; -static YY_BUFFER_STATE yy_fsci_active_buffer; - -static int -push_file(char *name); - -static int -pop_file(void); - -FILE *initial_file; - -static void -set_config_parameter(config_entry_t *conf, char *subsystem_name, char *driver_name, - char *option, char *value); - - -static int -parse_name(char *name, name_value_pair* nvps, const char *what, int oldval); /* Parses a string with a name value pair */ - -static void -copy_subsystem_options(config_entry_t *dest, config_entry_t *src); -/* Copies all subsystem options -** Parameters: (config_entry_t *) dest: The destination config struct -** (config_entry_t *) src: Source struct -** Returns : (void) -*/ - - -static name_value_pair valid_modes[] = { - {"default", GFXR_DITHER_MODE_D16}, - {"dither", GFXR_DITHER_MODE_D16}, - {"dither16", GFXR_DITHER_MODE_D16}, - {"dither_16", GFXR_DITHER_MODE_D16}, - {"dither-16", GFXR_DITHER_MODE_D16}, - {"d16", GFXR_DITHER_MODE_D16}, - {"flat", GFXR_DITHER_MODE_F256}, - {"interpol", GFXR_DITHER_MODE_F256}, - {"interpolate", GFXR_DITHER_MODE_F256}, - {"dither256", GFXR_DITHER_MODE_D256}, - {"dither_256", GFXR_DITHER_MODE_D256}, - {"d256", GFXR_DITHER_MODE_D256}, - {0, 0} /* Terminator */ -}; - -static name_value_pair yesno[] = { - {"yes", 1}, - {"no", 0}, - {"true", 1}, - {"false", 0}, - {"1", 1}, - {"0", 0}, - {"ok", 1}, - {"enable", 1}, - {"disable", 0}, - {"activate", 1}, - {"deactivate", 0}, - {"+", 1}, - {"-", 0}, - {"on", 1}, - {"off", 0}, - {0, 0} -}; - -static name_value_pair dither_pattern[] = { - {"scaled", GFXR_DITHER_PATTERN_SCALED}, - {"unscaled", GFXR_DITHER_PATTERN_1}, - {"one", GFXR_DITHER_PATTERN_1}, - {"1", GFXR_DITHER_PATTERN_1}, - {0, 0} -}; - -static name_value_pair dirty_strategy[] = { - {"1", GFXOP_DIRTY_FRAMES_ONE}, - {"one", GFXOP_DIRTY_FRAMES_ONE}, - {"cluster", GFXOP_DIRTY_FRAMES_CLUSTERS}, - {"clusters", GFXOP_DIRTY_FRAMES_CLUSTERS}, - {0, 0} -}; - -static name_value_pair brush_mode[] = { - {"scaled", GFX_BRUSH_MODE_SCALED}, - {"ellipse", GFX_BRUSH_MODE_ELLIPSES}, - {"ellipses", GFX_BRUSH_MODE_ELLIPSES}, - {"rnd_ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"rnd-ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"random_ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"random-ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"morerandom", GFX_BRUSH_MODE_MORERANDOM}, - {"more-random", GFX_BRUSH_MODE_MORERANDOM}, - {"more_random", GFX_BRUSH_MODE_MORERANDOM}, - {0, 0} -}; - -static name_value_pair filter_mode[] = { - {"none", GFX_XLATE_FILTER_NONE}, - {"linear", GFX_XLATE_FILTER_LINEAR}, - {"bilinear", GFX_XLATE_FILTER_LINEAR}, - {"bi-linear", GFX_XLATE_FILTER_LINEAR}, - {"trilinear", GFX_XLATE_FILTER_TRILINEAR}, - {"tri-linear", GFX_XLATE_FILTER_TRILINEAR}, - {0, 0} -}; - -static name_value_pair antialiasing_modes[] = { - {"none", GFXR_ANTIALIASING_NONE}, - {"0", GFXR_ANTIALIASING_NONE}, - {"off", GFXR_ANTIALIASING_NONE}, - {"on", GFXR_ANTIALIASING_SIMPLE}, - {"basic", GFXR_ANTIALIASING_SIMPLE}, - {"simple", GFXR_ANTIALIASING_SIMPLE} -}; - -static name_value_pair line_mode[] = { - {"correct", GFX_LINE_MODE_CORRECT}, - {"normal", GFX_LINE_MODE_CORRECT}, - {"fast", GFX_LINE_MODE_FAST}, - {"half", GFX_LINE_MODE_FAST}, - {"fine", GFX_LINE_MODE_FINE}, - {"thin", GFX_LINE_MODE_FINE}, - {0, 0} -}; - -#define BAD_INT_VALUE -33333333 - -/* Types of options */ -#define OPTION_TYPE_NONE 0 -#define OPTION_TYPE_INT 1 -#define OPTION_TYPE_NVP 2 -#define OPTION_TYPE_INVERSE_NVP 3 -#define OPTION_TYPE_STATICREF 4 -#define OPTION_TYPE_STRING 5 -#define OPTION_TYPE_RECT 6 - -typedef struct { - int type; - const char *name; - int min; - int max; - name_value_pair *nvp; - void * (*parse_funct)(char *); - int varoffset; -} standard_option; - -#define OPT_END {OPTION_TYPE_NONE, NULL, 0, 0, NULL, 0} -/* Terminates */ - -#define OPT_INT(NAME, VARNAME, MIN, MAX) {OPTION_TYPE_INT, NAME, MIN, MAX, NULL, NULL, offsetof (config_entry_t, VARNAME)} -/* Read INT from the interval [MIN, MAX] */ - -#define OPT_STRING(NAME, VARNAME) {OPTION_TYPE_STRING, NAME, 0, 0, NULL, NULL, offsetof (config_entry_t, VARNAME)} -/* Read a string */ - -#define OPT_NVP(NAME, VARNAME, NVP) {OPTION_TYPE_NVP, NAME, 0, 0, NVP, NULL, offsetof (config_entry_t, VARNAME)} -/* Read (name,value) pair from NVP */ - -#define OPT_INVERSE_NVP(NAME, VARNAME, NVP) {OPTION_TYPE_INVERSE_NVP, NAME, 0, 0, NVP, NULL, offsetof (config_entry_t, VARNAME)} -/* Read NVP and negate result */ - -#define OPT_STATICREF(NAME, VARNAME, FUNCTN) {OPTION_TYPE_STATICREF, NAME, 0, 0, NULL, FUNCTN, offsetof (config_entry_t, VARNAME)} -/* Call FUNCTN() with the specified value, store resulting NULL* */ - -#define OPT_RECT(NAME, VARNAME) {OPTION_TYPE_RECT, NAME, 0, 0, NULL, NULL, offsetof (config_entry_t, VARNAME)} -/* Read a rectangle */ - - -standard_option standard_options[] = { - OPT_RECT("pic_port_bounds", gfx_options.pic_port_bounds), - OPT_NVP("pic0_dither_mode", gfx_options.pic0_dither_mode, valid_modes), - OPT_NVP("color_mode", gfx_options.pic0_dither_mode, valid_modes), - OPT_NVP("pic0_dither_pattern", gfx_options.pic0_dither_pattern, dither_pattern), - OPT_NVP("pic0_brush_mode", gfx_options.pic0_brush_mode, brush_mode), - OPT_NVP("pic0_line_mode", gfx_options.pic0_line_mode, line_mode), - OPT_NVP("dirty_strategy", gfx_options.dirty_frames, dirty_strategy), - OPT_INVERSE_NVP("pic0_scaled", gfx_options.pic0_unscaled, yesno), - OPT_NVP("pic_filter", gfx_options.pic_xlate_filter, filter_mode), - OPT_NVP("pic_antialiasing", gfx_options.pic0_antialiasing, antialiasing_modes), - OPT_NVP("text_filter", gfx_options.text_xlate_filter, filter_mode), - OPT_NVP("view_filter", gfx_options.view_xlate_filter, filter_mode), - OPT_NVP("cursor_filter", gfx_options.cursor_xlate_filter, filter_mode), - OPT_NVP("mouse", mouse, yesno), - OPT_NVP("reverse_stereo", reverse_stereo, yesno), - OPT_INT("pic_buffer_size", gfx_options.buffer_pics_nr, 0, 4096), - OPT_INT("alpha_threshold", alpha_threshold, 0, 255), - OPT_INT("animation_delay", animation_delay, 0, 1000000), - OPT_INT("animation_granularity", animation_granularity, 1, 160), -#ifdef __GNUC__ -#warning "Re-enable sound server config" -#endif -#if 0 - OPT_STATICREF("midiout_driver", midiout_driver, parse_midiout_driver), - OPT_STATICREF("midi_device", midi_device, parse_midi_device), - OPT_STATICREF("sound_server", sound_server, parse_sound_server), - OPT_STATICREF("pcmout_driver", pcmout_driver, parse_pcmout_driver), - OPT_INT("pcmout_rate", pcmout_rate, 11025, 48000), - OPT_INT("pcmout_stereo", pcmout_stereo, 0, 1), -#endif - OPT_STRING("console_log", console_log), - OPT_STRING("module_path", module_path), - OPT_STRING("menu_dir", menu_dir), - OPT_STRING("gfx_driver", gfx_driver_name), - OPT_INT("scale_x", x_scale, 1, 256), - OPT_INT("scale_y", y_scale, 1, 256), - OPT_INT("scale", scale, 1, 256), - OPT_INT("resource_version", res_version, 0, 6), - OPT_INT("color_depth", color_depth, 8, 32), - OPT_END -}; - - -static void -parse_option(char *option, int optlen, char *value); - -char * -crop_value(char *yytext); - -char * -purge_comments(char *comments); - -#line 1353 "config.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include <unistd.h> -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap (void ); -#else -extern int yywrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 310 "config.l" - - -#line 1509 "config.c" - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 315 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 2229 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 312 "config.l" -{ - char *cleanup; - ++yytext; /* Get over opening bracket */ - - ++cur_section; /* Start new section */ - - /* Create new entry... */ - conf = (config_entry_t *) sci_realloc(conf, sizeof(config_entry_t) * (cur_section + 1)); - - /* ...and initialize it */ - memcpy(&(conf[cur_section]), &(conf[0]), sizeof(config_entry_t)); - if (conf[0].console_log) - conf[cur_section].console_log = sci_strdup (conf[0].console_log); - - /* Copy the subsystem init strings */ - copy_subsystem_options(conf + cur_section, conf); - - while (isspace(*yytext)) - yytext++; - - cleanup = strchr(yytext, ']'); - - do { - *cleanup-- = 0; - } while (isblank(*cleanup)); - - conf[cur_section].name = sci_strdup(yytext); - - conf[cur_section].resource_dir = sci_strdup("."); - -} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 345 "config.l" -{ - - yytext = strchr(yytext, '=') + 1; - - while (isspace(*yytext)) - yytext++; - - version_parse(yytext, &conf[cur_section].version); -} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 355 "config.l" -if (cur_section) { - yytext = strchr(yytext, '=') + 1; - while (isspace(*yytext)) - yytext++; - - sci_free(conf[cur_section].resource_dir); - - conf[cur_section].resource_dir = sci_strdup(yytext); -} - YY_BREAK -case 4: -YY_RULE_SETUP -#line 365 "config.l" -{ - yytext = strchr(yytext, '=') + 1; - - while (isspace(*yytext)) - yytext++; - - strcpy (conf[cur_section].debug_mode, yytext); -} - YY_BREAK -case 5: -YY_RULE_SETUP -#line 374 "config.l" -{ -/* driver parameters */ - char *subsys_name = yytext; - char *driver_name; - char *option, *value; - char *p2; - - yytext = strchr(yytext, '.'); - *yytext++ = 0; - driver_name = yytext; - yytext = strchr(yytext, '.'); - *yytext++ = 0; - - - option = yytext; - yytext = strchr(yytext, '='); - *yytext++ = 0; - - p2 = yytext-2; /* trim right spaces */ - while (p2 > option && isspace (*p2)) - *p2-- = 0; - - value = crop_value(yytext); /* Get config value */ - - set_config_parameter(conf + cur_section, subsys_name, - driver_name, option, value); - -} - YY_BREAK -case 6: -YY_RULE_SETUP -#line 404 "config.l" -{ /* Normal config option */ - char *option_str = yytext; - char *value_str = yytext; - int option_str_len; - - while (isalnum(*value_str) || *value_str == '_') - ++value_str; - - option_str_len = value_str - option_str; - - while (!(isalnum(*value_str) || *value_str == '_' || *value_str == '"' || *value_str == '/' || *value_str == '\\')) - ++value_str; - - value_str = crop_value(value_str); - - parse_option(option_str, option_str_len, value_str); -} - YY_BREAK -case 7: -/* rule 7 can match eol */ -YY_RULE_SETUP -#line 422 "config.l" -{ /* Normal config option */ - char *option_str = yytext; - char *value_str = yytext; - int option_str_len; - - while (isalnum(*value_str) || *value_str == '_') - ++value_str; - - option_str_len = value_str - option_str; - - while (!(isdigit(*value_str)||(*value_str == '"'))) - ++value_str; - - value_str = crop_value(value_str); - - parse_option(option_str, option_str_len, value_str); -} - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -#line 441 "config.l" -{ - gfx_update_conf(&(conf[cur_section].gfx_options), purge_comments(yytext)); -} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 445 "config.l" -{ - char *filename = strchr(yytext, '<'); - char *end = strchr(filename, '>'); - - *end-- = 0; - while (isblank(*end)) - *end-- = 0; - - filename++; - while (*filename && isblank(*filename)) - filename++; - - push_file(filename); - YY_NEW_FILE; -} - YY_BREAK -case 10: -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 462 "config.l" -/* Ignore comments */ - YY_BREAK -case 11: -/* rule 11 can match eol */ -YY_RULE_SETUP -#line 464 "config.l" -/* Eat whitespace */ - YY_BREAK -case YY_STATE_EOF(INITIAL): -#line 466 "config.l" -{ - yy_delete_buffer(YY_CURRENT_BUFFER ); - yyterminate(); -} - YY_BREAK -case 12: -YY_RULE_SETUP -#line 471 "config.l" -printf("Unrecognized option: '%s'\n", yytext); - YY_BREAK -case 13: -YY_RULE_SETUP -#line 473 "config.l" -ECHO; - YY_BREAK -#line 1798 "config.c" - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 315 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 315 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 314); - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart(yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); - - yyfree((void *) b ); -} - -#ifndef _UNISTD_H /* assume unistd.h has isatty() for us */ -#ifdef __cplusplus -extern "C" { -#endif -#ifdef __THROW /* this is a gnuism */ -extern int isatty (int ) __THROW; -#else -extern int isatty (int ); -#endif -#ifdef __cplusplus -} -#endif -#endif - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) -{ - - return yy_scan_bytes(yystr,strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) yyalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param line_number - * - */ -void yyset_lineno (int line_number ) -{ - - yylineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * in_str ) -{ - yyin = in_str ; -} - -void yyset_out (FILE * out_str ) -{ - yyout = out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int bdebug ) -{ - yy_flex_debug = bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 473 "config.l" - - - -int -yywrap(void) -{ - return pop_file(); /* no further input */ -} - -static int -push_file(char *name) -{ - file_stack_t *newfs; - file_stack_t *s; - FILE *newfile; - - if (yy_filename && !strcmp(name, yy_filename)) { - fprintf(stderr, "[conf] Warning: Attempted immediate circular inclusion of config file '%s'\n", - name); - return 1; - } - - s = file_stack; - while (s) { - if (!strcmp(name, s->name)) { - fprintf(stderr, "[conf] Warning: Attempted circular inclusion of config file '%s'\n", - name); - return 1; - } - s = s->next; - } - - if (!(newfile = fopen(name, "r"))) { - fprintf(stderr, "[conf] Warning: Could not open configuration file '%s'\n", name); - return 1; - } - - if (yyin) { - newfs = (struct _file_stack *) malloc(sizeof(struct _file_stack)); - newfs->handle = yy_fsci_active_buffer; - newfs->name = yy_filename; - - newfs->next = file_stack; - file_stack = newfs; - } - - yy_filename = strdup(name); - yy_fsci_active_buffer = yy_create_buffer(newfile,YY_BUF_SIZE); - yy_switch_to_buffer(yy_fsci_active_buffer); - - return 0; -} - -static int -pop_file(void) -{ - if (file_stack) { - void *goner = file_stack; - yy_delete_buffer(yy_fsci_active_buffer); - fclose(yyin); - yy_fsci_active_buffer = file_stack->handle; - yy_switch_to_buffer(yy_fsci_active_buffer); - - free(yy_filename); - yy_filename = file_stack->name; - file_stack = file_stack->next; - - free(goner); - return 0; - } else { - if (yy_filename) { - free(yy_filename); - yy_filename = NULL; - } - if (yyin) { - yy_delete_buffer(yy_fsci_active_buffer); - fclose(yyin); - yyin = NULL; - } - return 1; /* Done */ - } -} - - -char * -crop_value(char *yytext) -{ - char *retval; - - while (isspace(*yytext)) - ++yytext; - - retval = yytext; - if (*yytext == '"') { /* Magic Quote Mode */ - ++retval; - ++yytext; - while (*yytext && (*yytext != '"')) - ++yytext; - *yytext = 0; /* Terminate */ - } else { - while (*yytext && !isspace(*yytext)) - ++yytext; - *yytext = 0; /* Terminate */ - } - - return retval; -} - - -int -config_init(config_entry_t **_conf, char *conffile) -{ - char *homedir = sci_get_homedir(); - char *conf_path; - int i; - - conf = (config_entry_t *) sci_malloc(sizeof(config_entry_t)); -#ifdef SATISFY_PURIFY - memset(conf, 0, sizeof(config_entry_t)); -#endif - -/**** Default config: */ - conf->gfx_options.workarounds = 0; - conf->gfx_options.buffer_pics_nr = 0; - conf->gfx_options.correct_rendering = 1; - conf->gfx_options.pic0_unscaled = 1; - conf->gfx_options.pic0_dither_mode = GFXR_DITHER_MODE_D256; - conf->gfx_options.pic0_dither_pattern = GFXR_DITHER_PATTERN_SCALED; - conf->gfx_options.pic0_brush_mode = GFX_BRUSH_MODE_RANDOM_ELLIPSES; - conf->gfx_options.pic0_line_mode = GFX_LINE_MODE_CORRECT; - conf->gfx_options.cursor_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.view_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.pic_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.text_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.dirty_frames = GFXOP_DIRTY_FRAMES_CLUSTERS; - conf->gfx_options.pic0_antialiasing = GFXR_ANTIALIASING_NONE; - conf->gfx_options.pic_port_bounds = gfx_rect(0,10,320,190); - for (i = 0; i < GFX_RESOURCE_TYPES_NR; i++) { - conf->gfx_options.res_conf.assign[i] = NULL; - conf->gfx_options.res_conf.mod[i] = NULL; - } - - conf->gfx_driver_name = NULL; - -#ifdef __GNUC__ -#warning "Re-enable sound stuff" -#endif -#if 0 - conf->pcmout_driver = pcmout_find_driver(NULL); - conf->pcmout_rate = 22050; - conf->pcmout_stereo = 1; - conf->midiout_driver = midiout_find_driver(NULL); - conf->midi_device = midi_find_device(NULL); - conf->sound_server = sound_server_find_driver(NULL); -#endif - - conf->x_scale = 0; - conf->y_scale = 0; - conf->scale = 0; - conf->color_depth = 0; - - conf->mouse = 1; - conf->reverse_stereo = 0; - - conf->version = 0; - - conf->alpha_threshold = 0x90; - conf->animation_delay = 5; - conf->animation_granularity = 4; - conf->console_log = NULL; - conf->debug_mode [0] = '\0'; - conf->name = NULL; - conf->resource_dir = NULL; - conf->module_path = sci_strdup(SCI_DEFAULT_MODULE_PATH); - conf->res_version = SCI_VERSION_AUTODETECT; - - if (homedir) { - conf->menu_dir = (char*)sci_malloc(strlen(homedir) + strlen(FREESCI_GAMEDIR) - + strlen(FREESCI_GAMES_DIR) + 2 * strlen(G_DIR_SEPARATOR_S) + 1); - strcpy(conf->menu_dir, homedir); - strcat(conf->menu_dir, G_DIR_SEPARATOR_S); - strcat(conf->menu_dir, FREESCI_GAMEDIR); - strcat(conf->menu_dir, G_DIR_SEPARATOR_S); - strcat(conf->menu_dir, FREESCI_GAMES_DIR); - } - else - conf->menu_dir = NULL; - - for (i = 0; i < FREESCI_DRIVER_SUBSYSTEMS_NR; i++) - conf->driver_options[i] = NULL; -/**** Default config ends */ - - - if (conffile) { - exported_conf_path = (char *) sci_malloc(PATH_MAX + 1); - getcwd(exported_conf_path, PATH_MAX+1); - - conf_path = sci_strdup(conffile); /* Use config file if supplied */ - } else { - if (!homedir) { /* We're probably not under UNIX if this happens */ - - conf_path = sci_strdup(FREESCI_CONFFILE_DOS); /* Use DOS config style */ - - exported_conf_path = (char *) sci_malloc(PATH_MAX + 1); - getcwd(exported_conf_path, PATH_MAX+1); - - dospath = 1; /* Use DOS-style paths */ - - } else { - - /* So we've got a home directory */ - if (chdir(homedir)) { - fprintf(stderr,"Warning: Could not enter home directory: %s\n", homedir); - *_conf = conf; /* Set the result variable */ - return 1; - } - - if (chdir(FREESCI_GAMEDIR)) - if (scimkdir(FREESCI_GAMEDIR, 0700)) { - - fprintf(stderr,"Warning: Could not enter/create ~/"FREESCI_GAMEDIR"\n"); - *_conf = conf; /* Set the result variable */ - return 1; - } - - conf_path = (char *) sci_malloc(strlen(homedir) + 3 + strlen(FREESCI_GAMEDIR) + strlen(FREESCI_CONFFILE)); - strcpy(conf_path, homedir); - strcat(conf_path, "/"); - strcat(conf_path, FREESCI_GAMEDIR); - - exported_conf_path = sci_strdup(conf_path); - - strcat(conf_path, "/"); - strcat(conf_path, FREESCI_CONFFILE); - - dospath = 0; /* Use UN*X-style paths */ - } - } /* !conffile */ - - - if ((push_file(conf_path))) { - printf("No configuration file found; using defaults.\n"); - *_conf = conf; /* Set the result variable */ - sci_free(conf_path); - sci_free(exported_conf_path); - return 1; - } - - printf("Reading configuration...\n"); - - yylex(); /* Parse the file */ - - while (!pop_file()); /* Ignore error conditions- might be lex implementation dependant */ - sci_free(conf_path); - sci_free(exported_conf_path); - - *_conf = conf; /* Store the result */ - return cur_section + 1; -} - - -static void -config_free_driver_options(driver_option_t *option) -{ - if (option) { - sci_free(option->option); - sci_free(option->value); - - config_free_driver_options(option->next); - sci_free(option); - } -} - -static void -config_free_driver_subsystem(subsystem_options_t *subsys) -{ - if (subsys) { - sci_free(subsys->name); - - config_free_driver_options(subsys->options); - - config_free_driver_subsystem(subsys->next); - sci_free(subsys); - } -} - - -void -config_free(config_entry_t **conf, int entries) -{ - int i; - - if ((*conf)->console_log) - sci_free((*conf)->console_log); - - if ((*conf)->module_path) - sci_free((*conf)->module_path); - - if ((*conf)->menu_dir) - sci_free((*conf)->menu_dir); - - for (i = 0; i < entries; i++) { - int j; - - if (i >= 1) { - sci_free((*conf)[i].name); - if ((*conf)[i].resource_dir) - sci_free((*conf)[i].resource_dir); - if ((*conf)[i].console_log) - sci_free((*conf)[i].console_log); - } - - for (j = 0; j < FREESCI_DRIVER_SUBSYSTEMS_NR; j++) { - if ((*conf)[i].driver_options[j]) - config_free_driver_subsystem((*conf)[i].driver_options[j]); - } - } - - sci_free(*conf); -} - - -static int -parse_name(char *name, name_value_pair *nvps, const char *what, int oldval) -{ - int i = 0; - - while (nvps[i].name) { - if (0 == strcasecmp(name, nvps[i].name)) - return nvps[i].value; - - i++; - } - - printf("Invalid %s mode %s\n", what, name); - - return oldval; -} - - -#ifdef __GNUC__ -#warning "Re-enable sound stuff" -#endif -#if 0 -void * -parse_sound_server(char *driver_name) -{ - sound_server_t *retval = sound_server_find_driver(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown sound server %s\n", driver_name); - return (void *) conf->sound_server; -} - -void * -parse_midiout_driver(char *driver_name) -{ - midiout_driver_t *retval = midiout_find_driver(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown midiout driver %s\n", driver_name); - return (void *) conf->midiout_driver; -} - - -void * -parse_midi_device(char *driver_name) -{ - midi_device_t *retval = midi_find_device(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown MIDI device %s\n", driver_name); - return (void *) conf->midi_device; -} - -void * -parse_pcmout_driver(char *driver_name) -{ - pcmout_driver_t *retval = pcmout_find_driver(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown pcmout driver %s\n", driver_name); - return (void *) conf->pcmout_driver; -} -#endif - -static void -parse_option(char *option, int optlen, char *value) -{ - int optindex = 0; - standard_option *opt = NULL; - - while (!opt && standard_options[optindex].type) - if (optlen == strlen(standard_options[optindex].name) - && !strncmp(standard_options[optindex].name, option, optlen)) - opt = &(standard_options[optindex]); - else - optindex++; - - if (!opt) { - fprintf(stderr,"Invalid option '%s'\n", option); - return; - } - - switch (opt->type) { - - case OPTION_TYPE_INT: { - char *foo; - int int_value = strtol(value, &foo, 0); - - if (*foo) { - fprintf(stderr, "Option '%s' expects numeric value; encountered '%s'\n", - opt->name, value); - return; - } - - if (int_value < opt->min) { - fprintf(stderr, "Option '%s' expects value >= %d; encountered '%s'\n", opt->name, opt->min, value); - return; - } - - if (int_value > opt->max) { - fprintf(stderr, "Option '%s' expects value <= %d; encountered '%s'\n", opt->name, opt->max, value); - return; - } - - *((int *)(((char *)&(conf[cur_section])) + opt->varoffset)) = int_value; /* Store value */ - - break; - } - - case OPTION_TYPE_STRING: { - char **stringref = ((char **)(((char *)&(conf[cur_section])) + opt->varoffset)); - if (*stringref) - sci_free(*stringref); - *stringref = sci_strdup(value); /* Store value */ - break; - } - - case OPTION_TYPE_INVERSE_NVP: - case OPTION_TYPE_NVP: { - int int_value = parse_name(value, opt->nvp, opt->name, BAD_INT_VALUE); - - if (int_value != BAD_INT_VALUE) { - - if (opt->type == OPTION_TYPE_INVERSE_NVP) - int_value = !int_value; - -/* FUCKED HERE: cur_section = 0, opt->varoffset = 205 */ - *((int *)(((char*)&(conf[cur_section])) + opt->varoffset)) = int_value; /* Store value */ - } - break; - } - - - case OPTION_TYPE_RECT: { - char *seeker = value; - - /* A rect_t is four integers */ - int *result = (int *) ((char *) &(conf[cur_section]) + opt->varoffset); - int i; - - for (i=0;i<4;i++) - { - *(result++) = strtol(seeker, &seeker, 10); - if (i < 3) - { - while (((*seeker == ',') || (*seeker == ' ')) && - (*seeker != 0)) - seeker++; - if ((*seeker < '0') || (*seeker > '9')) - { - fprintf(stderr, "Option '%s' expects a rectangle\n", opt->name); - return; - } - } - } - - break; - } - - - case OPTION_TYPE_STATICREF: { - *((void **)(((char *)&(conf[cur_section])) + opt->varoffset)) = opt->parse_funct(value); - break; - } - - default: - fprintf(stderr, "INTERNAL ERROR in %s, parse_option(), line %d\n", __FILE__, __LINE__); - } -} - - -driver_option_t * -get_driver_options(config_entry_t *config, int subsystem, const char *name) -{ - subsystem_options_t *options; - - if (subsystem < 0 || subsystem >= FREESCI_DRIVER_SUBSYSTEMS_NR) { - fprintf(stderr, "Attempt to get options from invalid subsystem #%d!\n", subsystem); - return NULL; - } - - if (!config) - return NULL; - - - options = config->driver_options[subsystem]; - - while (options && strcasecmp(options->name, name)) - options = options->next; - - if (options) - return options->options; - - return NULL; -} - -static driver_option_t * -clone_driver_options(driver_option_t *options) -{ - driver_option_t *retval; - - if (!options) - return NULL; - - retval = (driver_option_t *) sci_malloc(sizeof(driver_option_t)); - retval->option = sci_strdup(options->option); - retval->value = sci_strdup(options->value); - retval->next = clone_driver_options(options->next); - - return retval; -} - -static subsystem_options_t * -clone_subsystem_options(subsystem_options_t *options) -{ - subsystem_options_t *retval; - - if (!options) - return NULL; - - retval = (subsystem_options_t *) sci_malloc(sizeof(subsystem_options_t)); - retval->name = sci_strdup(options->name); - retval->options = clone_driver_options(options->options); - retval->next = clone_subsystem_options(options->next); - - return retval; -} - -static void -copy_subsystem_options(config_entry_t *dest, config_entry_t *src) -{ - int i; - for (i = 0; i < FREESCI_DRIVER_SUBSYSTEMS_NR; i++) - dest->driver_options[i] = clone_subsystem_options(src->driver_options[i]); -} - - -char * -purge_comments(char *comments) -{ - char *c = comments; - int overwrite = 0; - char ch; - - /* Tear out all comments */ - while ((ch = *c)) { - if (ch == '#') - overwrite = 1; - if (ch == '\n') - overwrite = 0; - if (overwrite) - *c = ' '; - - c++; - } - - return comments; -} - -static void -set_config_parameter(config_entry_t *conf, char *subsystem_name, char *driver_name, - char *option, char *value) -{ - subsystem_options_t **subsys_optionsp; - driver_option_t **driver_optionsp; - int subsystem_nr = -1; - int i = 0; - - while (subsystem_nr == -1 && i < FREESCI_DRIVER_SUBSYSTEMS_NR) { - if (!strcasecmp(subsystem_name, freesci_subsystems[i].name)) - subsystem_nr = i; - i++; - } - - if (subsystem_nr == -1) { - sciprintf("config file: There is no subsystem named '%s'\n", subsystem_name); - return; - } - -#if 0 - if (!(freesci_subsystems[subsystem_nr].check_driver(driver_name))) { - sciprintf("config file: There is no %s driver called '%s'\n", subsystem_name, driver_name); - return; - } -#endif - - subsys_optionsp = &(conf->driver_options[subsystem_nr]); - - while (*subsys_optionsp && strcasecmp((*subsys_optionsp)->name, driver_name)) - subsys_optionsp = &((*subsys_optionsp)->next); - - if (!*subsys_optionsp) { - *subsys_optionsp = (subsystem_options_t *) sci_malloc(sizeof(subsystem_options_t)); - (*subsys_optionsp)->name = sci_strdup(driver_name); - (*subsys_optionsp)->next = NULL; - (*subsys_optionsp)->options = NULL; - } - - driver_optionsp = &((*subsys_optionsp)->options); - - while (*driver_optionsp && strcasecmp((*driver_optionsp)->option, option)) - driver_optionsp = &((*driver_optionsp)->next); - - if (*driver_optionsp) { - sci_free((*driver_optionsp)->value); - } else { - *driver_optionsp = (driver_option_t *) sci_malloc(sizeof(driver_option_t)); - (*driver_optionsp)->option = sci_strdup(option); - (*driver_optionsp)->next = NULL; - } - - (*driver_optionsp)->value = sci_strdup(value); -} - diff --git a/engines/sci/config.l b/engines/sci/config.l deleted file mode 100644 index 7d05e43768..0000000000 --- a/engines/sci/config.l +++ /dev/null @@ -1,1116 +0,0 @@ -/*************************************************************************** - config.l (C) 1999 Christoph Reichenbach - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Christoph Reichenbach (CJR) [jameson@linuxgames.com] - -***************************************************************************/ - -%{ -#include <engine.h> -#include <gfx_resource.h> -#include <sci_conf.h> -#include <stddef.h> - -/* unistd override for GNU flex for non-UNIX systems */ -#ifndef HAVE_UNISTD_H -# define YY_NO_UNISTD_H -#endif - -#ifdef _MSC_VER -# include <ctype.h> -# include <direct.h> -#endif - -config_entry_t *conf; -int cur_section=0; /* Size-1 and current section in conf */ -char *exported_conf_path; /* Path which the config file was found in */ -int dospath; /* Use dos-style paths? */ - -typedef struct { - const char *name; - int value; -} name_value_pair; - - -struct { - const char *name; - void *(*check_driver)(char *name); -} freesci_subsystems[FREESCI_DRIVER_SUBSYSTEMS_NR] = { - {"gfx", NULL}, -#ifdef __GNUC__ -#warning "sound" -#endif -#if 0 - {"pcm", parse_pcmout_driver}, - {"midiout", parse_midiout_driver} -#endif -}; - - -typedef struct _file_stack { - char *name; - YY_BUFFER_STATE handle; - struct _file_stack *next; -} file_stack_t; - -static file_stack_t *file_stack = NULL; -static char *yy_filename = NULL; -static YY_BUFFER_STATE yy_fsci_active_buffer; - -static int -push_file(char *name); - -static int -pop_file(void); - -FILE *initial_file; - -static void -set_config_parameter(config_entry_t *conf, char *subsystem_name, char *driver_name, - char *option, char *value); - - -static int -parse_name(char *name, name_value_pair* nvps, const char *what, int oldval); /* Parses a string with a name value pair */ - -static void -copy_subsystem_options(config_entry_t *dest, config_entry_t *src); -/* Copies all subsystem options -** Parameters: (config_entry_t *) dest: The destination config struct -** (config_entry_t *) src: Source struct -** Returns : (void) -*/ - - -static name_value_pair valid_modes[] = { - {"default", GFXR_DITHER_MODE_D16}, - {"dither", GFXR_DITHER_MODE_D16}, - {"dither16", GFXR_DITHER_MODE_D16}, - {"dither_16", GFXR_DITHER_MODE_D16}, - {"dither-16", GFXR_DITHER_MODE_D16}, - {"d16", GFXR_DITHER_MODE_D16}, - {"flat", GFXR_DITHER_MODE_F256}, - {"interpol", GFXR_DITHER_MODE_F256}, - {"interpolate", GFXR_DITHER_MODE_F256}, - {"dither256", GFXR_DITHER_MODE_D256}, - {"dither_256", GFXR_DITHER_MODE_D256}, - {"d256", GFXR_DITHER_MODE_D256}, - {0, 0} /* Terminator */ -}; - -static name_value_pair yesno[] = { - {"yes", 1}, - {"no", 0}, - {"true", 1}, - {"false", 0}, - {"1", 1}, - {"0", 0}, - {"ok", 1}, - {"enable", 1}, - {"disable", 0}, - {"activate", 1}, - {"deactivate", 0}, - {"+", 1}, - {"-", 0}, - {"on", 1}, - {"off", 0}, - {0, 0} -}; - -static name_value_pair dither_pattern[] = { - {"scaled", GFXR_DITHER_PATTERN_SCALED}, - {"unscaled", GFXR_DITHER_PATTERN_1}, - {"one", GFXR_DITHER_PATTERN_1}, - {"1", GFXR_DITHER_PATTERN_1}, - {0, 0} -}; - -static name_value_pair dirty_strategy[] = { - {"1", GFXOP_DIRTY_FRAMES_ONE}, - {"one", GFXOP_DIRTY_FRAMES_ONE}, - {"cluster", GFXOP_DIRTY_FRAMES_CLUSTERS}, - {"clusters", GFXOP_DIRTY_FRAMES_CLUSTERS}, - {0, 0} -}; - -static name_value_pair brush_mode[] = { - {"scaled", GFX_BRUSH_MODE_SCALED}, - {"ellipse", GFX_BRUSH_MODE_ELLIPSES}, - {"ellipses", GFX_BRUSH_MODE_ELLIPSES}, - {"rnd_ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"rnd-ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"random_ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"random-ellipses", GFX_BRUSH_MODE_RANDOM_ELLIPSES}, - {"morerandom", GFX_BRUSH_MODE_MORERANDOM}, - {"more-random", GFX_BRUSH_MODE_MORERANDOM}, - {"more_random", GFX_BRUSH_MODE_MORERANDOM}, - {0, 0} -}; - -static name_value_pair filter_mode[] = { - {"none", GFX_XLATE_FILTER_NONE}, - {"linear", GFX_XLATE_FILTER_LINEAR}, - {"bilinear", GFX_XLATE_FILTER_LINEAR}, - {"bi-linear", GFX_XLATE_FILTER_LINEAR}, - {"trilinear", GFX_XLATE_FILTER_TRILINEAR}, - {"tri-linear", GFX_XLATE_FILTER_TRILINEAR}, - {0, 0} -}; - -static name_value_pair antialiasing_modes[] = { - {"none", GFXR_ANTIALIASING_NONE}, - {"0", GFXR_ANTIALIASING_NONE}, - {"off", GFXR_ANTIALIASING_NONE}, - {"on", GFXR_ANTIALIASING_SIMPLE}, - {"basic", GFXR_ANTIALIASING_SIMPLE}, - {"simple", GFXR_ANTIALIASING_SIMPLE} -}; - -static name_value_pair line_mode[] = { - {"correct", GFX_LINE_MODE_CORRECT}, - {"normal", GFX_LINE_MODE_CORRECT}, - {"fast", GFX_LINE_MODE_FAST}, - {"half", GFX_LINE_MODE_FAST}, - {"fine", GFX_LINE_MODE_FINE}, - {"thin", GFX_LINE_MODE_FINE}, - {0, 0} -}; - -#define BAD_INT_VALUE -33333333 - -/* Types of options */ -#define OPTION_TYPE_NONE 0 -#define OPTION_TYPE_INT 1 -#define OPTION_TYPE_NVP 2 -#define OPTION_TYPE_INVERSE_NVP 3 -#define OPTION_TYPE_STATICREF 4 -#define OPTION_TYPE_STRING 5 -#define OPTION_TYPE_RECT 6 - -typedef struct { - int type; - const char *name; - int min; - int max; - name_value_pair *nvp; - void * (*parse_funct)(char *); - int varoffset; -} standard_option; - -#define OPT_END {OPTION_TYPE_NONE, NULL, 0, 0, NULL, 0} -/* Terminates */ - -#define OPT_INT(NAME, VARNAME, MIN, MAX) {OPTION_TYPE_INT, NAME, MIN, MAX, NULL, NULL, offsetof (config_entry_t, VARNAME)} -/* Read INT from the interval [MIN, MAX] */ - -#define OPT_STRING(NAME, VARNAME) {OPTION_TYPE_STRING, NAME, 0, 0, NULL, NULL, offsetof (config_entry_t, VARNAME)} -/* Read a string */ - -#define OPT_NVP(NAME, VARNAME, NVP) {OPTION_TYPE_NVP, NAME, 0, 0, NVP, NULL, offsetof (config_entry_t, VARNAME)} -/* Read (name,value) pair from NVP */ - -#define OPT_INVERSE_NVP(NAME, VARNAME, NVP) {OPTION_TYPE_INVERSE_NVP, NAME, 0, 0, NVP, NULL, offsetof (config_entry_t, VARNAME)} -/* Read NVP and negate result */ - -#define OPT_STATICREF(NAME, VARNAME, FUNCTN) {OPTION_TYPE_STATICREF, NAME, 0, 0, NULL, FUNCTN, offsetof (config_entry_t, VARNAME)} -/* Call FUNCTN() with the specified value, store resulting NULL* */ - -#define OPT_RECT(NAME, VARNAME) {OPTION_TYPE_RECT, NAME, 0, 0, NULL, NULL, offsetof (config_entry_t, VARNAME)} -/* Read a rectangle */ - - -standard_option standard_options[] = { - OPT_RECT("pic_port_bounds", gfx_options.pic_port_bounds), - OPT_NVP("pic0_dither_mode", gfx_options.pic0_dither_mode, valid_modes), - OPT_NVP("color_mode", gfx_options.pic0_dither_mode, valid_modes), - OPT_NVP("pic0_dither_pattern", gfx_options.pic0_dither_pattern, dither_pattern), - OPT_NVP("pic0_brush_mode", gfx_options.pic0_brush_mode, brush_mode), - OPT_NVP("pic0_line_mode", gfx_options.pic0_line_mode, line_mode), - OPT_NVP("dirty_strategy", gfx_options.dirty_frames, dirty_strategy), - OPT_INVERSE_NVP("pic0_scaled", gfx_options.pic0_unscaled, yesno), - OPT_NVP("pic_filter", gfx_options.pic_xlate_filter, filter_mode), - OPT_NVP("pic_antialiasing", gfx_options.pic0_antialiasing, antialiasing_modes), - OPT_NVP("text_filter", gfx_options.text_xlate_filter, filter_mode), - OPT_NVP("view_filter", gfx_options.view_xlate_filter, filter_mode), - OPT_NVP("cursor_filter", gfx_options.cursor_xlate_filter, filter_mode), - OPT_NVP("mouse", mouse, yesno), - OPT_NVP("reverse_stereo", reverse_stereo, yesno), - OPT_INT("pic_buffer_size", gfx_options.buffer_pics_nr, 0, 4096), - OPT_INT("alpha_threshold", alpha_threshold, 0, 255), - OPT_INT("animation_delay", animation_delay, 0, 1000000), - OPT_INT("animation_granularity", animation_granularity, 1, 160), -#ifdef __GNUC__ -#warning "Re-enable sound server config" -#endif -#if 0 - OPT_STATICREF("midiout_driver", midiout_driver, parse_midiout_driver), - OPT_STATICREF("midi_device", midi_device, parse_midi_device), - OPT_STATICREF("sound_server", sound_server, parse_sound_server), - OPT_STATICREF("pcmout_driver", pcmout_driver, parse_pcmout_driver), - OPT_INT("pcmout_rate", pcmout_rate, 11025, 48000), - OPT_INT("pcmout_stereo", pcmout_stereo, 0, 1), -#endif - OPT_STRING("console_log", console_log), - OPT_STRING("module_path", module_path), - OPT_STRING("menu_dir", menu_dir), - OPT_STRING("gfx_driver", gfx_driver_name), - OPT_INT("scale_x", x_scale, 1, 256), - OPT_INT("scale_y", y_scale, 1, 256), - OPT_INT("scale", scale, 1, 256), - OPT_INT("resource_version", res_version, 0, 6), - OPT_INT("color_depth", color_depth, 8, 32), - OPT_END -}; - - -static void -parse_option(char *option, int optlen, char *value); - -char * -crop_value(char *yytext); - -char * -purge_comments(char *comments); - -%} - -DIGIT [0-9] -PARAMTOKEN [[:alnum:]"."_\:\/-]* -SCIVERSION {DIGIT}"."{DIGIT}{3}"."{DIGIT}{3} -NUMTOKEN {DIGIT}+ -COORDTOKEN {NUMTOKEN},?[[:space:]]* -RECTTOKEN {COORDTOKEN}{3}{NUMTOKEN} -NUMPARAMTOKEN {NUMTOKEN}|{PARAMTOKEN} -PATHTOKEN [[:alnum:]"/""\\""."]* -NUMPATHPARAMTOKEN {NUMPARAMTOKEN}|{PATHTOKEN} -QUOTED_NUMPARAMTOKEN "\"".*"\"" - -%% - -"["[_[:alnum:]]+"]" { - char *cleanup; - ++yytext; /* Get over opening bracket */ - - ++cur_section; /* Start new section */ - - /* Create new entry... */ - conf = (config_entry_t *) sci_realloc(conf, sizeof(config_entry_t) * (cur_section + 1)); - - /* ...and initialize it */ - memcpy(&(conf[cur_section]), &(conf[0]), sizeof(config_entry_t)); - if (conf[0].console_log) - conf[cur_section].console_log = sci_strdup (conf[0].console_log); - - /* Copy the subsystem init strings */ - copy_subsystem_options(conf + cur_section, conf); - - while (isspace(*yytext)) - yytext++; - - cleanup = strchr(yytext, ']'); - - do { - *cleanup-- = 0; - } while (isblank(*cleanup)); - - conf[cur_section].name = sci_strdup(yytext); - - conf[cur_section].resource_dir = sci_strdup("."); - -} - - -version[[:blank:]]*"="[[:blank:]]*{SCIVERSION} { - - yytext = strchr(yytext, '=') + 1; - - while (isspace(*yytext)) - yytext++; - - version_parse(yytext, &conf[cur_section].version); -} - -resource_dir[[:blank:]]*"="[[:blank:]]*.+ if (cur_section) { - yytext = strchr(yytext, '=') + 1; - while (isspace(*yytext)) - yytext++; - - sci_free(conf[cur_section].resource_dir); - - conf[cur_section].resource_dir = sci_strdup(yytext); -} - -debug_mode[[:blank:]]*"="[[:blank:]]*.+ { - yytext = strchr(yytext, '=') + 1; - - while (isspace(*yytext)) - yytext++; - - strcpy (conf[cur_section].debug_mode, yytext); -} - -[[:alnum:]]+"."[[:alnum:]]+"."[[:alnum:]_]+[[:blank:]]*"="[[:blank:]]*({NUMPARAMTOKEN}|{QUOTED_NUMPARAMTOKEN})[[:blank:]]* { -/* driver parameters */ - char *subsys_name = yytext; - char *driver_name; - char *option, *value; - char *p2; - - yytext = strchr(yytext, '.'); - *yytext++ = 0; - driver_name = yytext; - yytext = strchr(yytext, '.'); - *yytext++ = 0; - - - option = yytext; - yytext = strchr(yytext, '='); - *yytext++ = 0; - - p2 = yytext-2; /* trim right spaces */ - while (p2 > option && isspace (*p2)) - *p2-- = 0; - - value = crop_value(yytext); /* Get config value */ - - set_config_parameter(conf + cur_section, subsys_name, - driver_name, option, value); - -} - - -{PARAMTOKEN}[[:blank:]]*"="[[:blank:]]*({NUMPATHPARAMTOKEN}|{QUOTED_NUMPARAMTOKEN})[[:blank:]]* { /* Normal config option */ - char *option_str = yytext; - char *value_str = yytext; - int option_str_len; - - while (isalnum(*value_str) || *value_str == '_') - ++value_str; - - option_str_len = value_str - option_str; - - while (!(isalnum(*value_str) || *value_str == '_' || *value_str == '"' || *value_str == '/' || *value_str == '\\')) - ++value_str; - - value_str = crop_value(value_str); - - parse_option(option_str, option_str_len, value_str); -} - -{PARAMTOKEN}[[:blank:]]*"="[[:blank:]]*\"{RECTTOKEN}\" { /* Normal config option */ - char *option_str = yytext; - char *value_str = yytext; - int option_str_len; - - while (isalnum(*value_str) || *value_str == '_') - ++value_str; - - option_str_len = value_str - option_str; - - while (!(isdigit(*value_str)||(*value_str == '"'))) - ++value_str; - - value_str = crop_value(value_str); - - parse_option(option_str, option_str_len, value_str); -} - - -(view|pic|cursor)[^_A-Za-z0-9"("]*"("([^";"]|"#"[^\n]*\n)*";" { - gfx_update_conf(&(conf[cur_section].gfx_options), purge_comments(yytext)); -} - -"%include"[^<\n]*<[^>\n]*> { - char *filename = strchr(yytext, '<'); - char *end = strchr(filename, '>'); - - *end-- = 0; - while (isblank(*end)) - *end-- = 0; - - filename++; - while (*filename && isblank(*filename)) - filename++; - - push_file(filename); - YY_NEW_FILE; -} - - -"#".+$ /* Ignore comments */ - -[[:blank:]\n]+ /* Eat whitespace */ - -<<EOF>> { - yy_delete_buffer( YY_CURRENT_BUFFER ); - yyterminate(); -} - -.* printf("Unrecognized option: '%s'\n", yytext); - -%% - -int -yywrap(void) -{ - return pop_file(); /* no further input */ -} - -static int -push_file(char *name) -{ - file_stack_t *newfs; - file_stack_t *s; - FILE *newfile; - - if (yy_filename && !strcmp(name, yy_filename)) { - fprintf(stderr, "[conf] Warning: Attempted immediate circular inclusion of config file '%s'\n", - name); - return 1; - } - - s = file_stack; - while (s) { - if (!strcmp(name, s->name)) { - fprintf(stderr, "[conf] Warning: Attempted circular inclusion of config file '%s'\n", - name); - return 1; - } - s = s->next; - } - - if (!(newfile = fopen(name, "r"))) { - fprintf(stderr, "[conf] Warning: Could not open configuration file '%s'\n", name); - return 1; - } - - if (yyin) { - newfs = (struct _file_stack *) malloc(sizeof(struct _file_stack)); - newfs->handle = yy_fsci_active_buffer; - newfs->name = yy_filename; - - newfs->next = file_stack; - file_stack = newfs; - } - - yy_filename = strdup(name); - yy_fsci_active_buffer = yy_create_buffer(newfile, YY_BUF_SIZE); - yy_switch_to_buffer(yy_fsci_active_buffer); - - return 0; -} - -static int -pop_file(void) -{ - if (file_stack) { - void *goner = file_stack; - yy_delete_buffer(yy_fsci_active_buffer); - fclose(yyin); - yy_fsci_active_buffer = file_stack->handle; - yy_switch_to_buffer(yy_fsci_active_buffer); - - free(yy_filename); - yy_filename = file_stack->name; - file_stack = file_stack->next; - - free(goner); - return 0; - } else { - if (yy_filename) { - free(yy_filename); - yy_filename = NULL; - } - if (yyin) { - yy_delete_buffer(yy_fsci_active_buffer); - fclose(yyin); - yyin = NULL; - } - return 1; /* Done */ - } -} - - -char * -crop_value(char *yytext) -{ - char *retval; - - while (isspace(*yytext)) - ++yytext; - - retval = yytext; - if (*yytext == '"') { /* Magic Quote Mode */ - ++retval; - ++yytext; - while (*yytext && (*yytext != '"')) - ++yytext; - *yytext = 0; /* Terminate */ - } else { - while (*yytext && !isspace(*yytext)) - ++yytext; - *yytext = 0; /* Terminate */ - } - - return retval; -} - - -int -config_init(config_entry_t **_conf, char *conffile) -{ - char *homedir = sci_get_homedir(); - char *conf_path; - int i; - - conf = (config_entry_t *) sci_malloc(sizeof(config_entry_t)); -#ifdef SATISFY_PURIFY - memset(conf, 0, sizeof(config_entry_t)); -#endif - -/**** Default config: */ - conf->gfx_options.workarounds = 0; - conf->gfx_options.buffer_pics_nr = 0; - conf->gfx_options.correct_rendering = 1; - conf->gfx_options.pic0_unscaled = 1; - conf->gfx_options.pic0_dither_mode = GFXR_DITHER_MODE_D256; - conf->gfx_options.pic0_dither_pattern = GFXR_DITHER_PATTERN_SCALED; - conf->gfx_options.pic0_brush_mode = GFX_BRUSH_MODE_RANDOM_ELLIPSES; - conf->gfx_options.pic0_line_mode = GFX_LINE_MODE_CORRECT; - conf->gfx_options.cursor_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.view_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.pic_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.text_xlate_filter = GFX_XLATE_FILTER_NONE; - conf->gfx_options.dirty_frames = GFXOP_DIRTY_FRAMES_CLUSTERS; - conf->gfx_options.pic0_antialiasing = GFXR_ANTIALIASING_NONE; - conf->gfx_options.pic_port_bounds = gfx_rect(0,10,320,190); - for (i = 0; i < GFX_RESOURCE_TYPES_NR; i++) { - conf->gfx_options.res_conf.assign[i] = NULL; - conf->gfx_options.res_conf.mod[i] = NULL; - } - - conf->gfx_driver_name = NULL; - -#ifdef __GNUC__ -#warning "Re-enable sound stuff" -#endif -#if 0 - conf->pcmout_driver = pcmout_find_driver(NULL); - conf->pcmout_rate = 22050; - conf->pcmout_stereo = 1; - conf->midiout_driver = midiout_find_driver(NULL); - conf->midi_device = midi_find_device(NULL); - conf->sound_server = sound_server_find_driver(NULL); -#endif - - conf->x_scale = 0; - conf->y_scale = 0; - conf->scale = 0; - conf->color_depth = 0; - - conf->mouse = 1; - conf->reverse_stereo = 0; - - conf->version = 0; - - conf->alpha_threshold = 0x90; - conf->animation_delay = 5; - conf->animation_granularity = 4; - conf->console_log = NULL; - conf->debug_mode [0] = '\0'; - conf->name = NULL; - conf->resource_dir = NULL; - conf->module_path = sci_strdup(SCI_DEFAULT_MODULE_PATH); - conf->res_version = SCI_VERSION_AUTODETECT; - - if (homedir) { - conf->menu_dir = (char*)sci_malloc(strlen(homedir) + strlen(FREESCI_GAMEDIR) - + strlen(FREESCI_GAMES_DIR) + 2 * strlen(G_DIR_SEPARATOR_S) + 1); - strcpy(conf->menu_dir, homedir); - strcat(conf->menu_dir, G_DIR_SEPARATOR_S); - strcat(conf->menu_dir, FREESCI_GAMEDIR); - strcat(conf->menu_dir, G_DIR_SEPARATOR_S); - strcat(conf->menu_dir, FREESCI_GAMES_DIR); - } - else - conf->menu_dir = NULL; - - for (i = 0; i < FREESCI_DRIVER_SUBSYSTEMS_NR; i++) - conf->driver_options[i] = NULL; -/**** Default config ends */ - - - if (conffile) { - exported_conf_path = (char *) sci_malloc(PATH_MAX + 1); - getcwd(exported_conf_path, PATH_MAX+1); - - conf_path = sci_strdup(conffile); /* Use config file if supplied */ - } else { - if (!homedir) { /* We're probably not under UNIX if this happens */ - - conf_path = sci_strdup(FREESCI_CONFFILE_DOS); /* Use DOS config style */ - - exported_conf_path = (char *) sci_malloc(PATH_MAX + 1); - getcwd(exported_conf_path, PATH_MAX+1); - - dospath = 1; /* Use DOS-style paths */ - - } else { - - /* So we've got a home directory */ - if (chdir(homedir)) { - fprintf(stderr,"Warning: Could not enter home directory: %s\n", homedir); - *_conf = conf; /* Set the result variable */ - return 1; - } - - if (chdir(FREESCI_GAMEDIR)) - if (scimkdir(FREESCI_GAMEDIR, 0700)) { - - fprintf(stderr,"Warning: Could not enter/create ~/"FREESCI_GAMEDIR"\n"); - *_conf = conf; /* Set the result variable */ - return 1; - } - - conf_path = (char *) sci_malloc(strlen(homedir) + 3 + strlen(FREESCI_GAMEDIR) + strlen(FREESCI_CONFFILE)); - strcpy(conf_path, homedir); - strcat(conf_path, "/"); - strcat(conf_path, FREESCI_GAMEDIR); - - exported_conf_path = sci_strdup(conf_path); - - strcat(conf_path, "/"); - strcat(conf_path, FREESCI_CONFFILE); - - dospath = 0; /* Use UN*X-style paths */ - } - } /* !conffile */ - - - if ((push_file(conf_path))) { - printf("No configuration file found; using defaults.\n"); - *_conf = conf; /* Set the result variable */ - sci_free(conf_path); - sci_free(exported_conf_path); - return 1; - } - - printf("Reading configuration...\n"); - - yylex(); /* Parse the file */ - - while (!pop_file()); /* Ignore error conditions- might be lex implementation dependant */ - sci_free(conf_path); - sci_free(exported_conf_path); - - *_conf = conf; /* Store the result */ - return cur_section + 1; -} - - -static void -config_free_driver_options(driver_option_t *option) -{ - if (option) { - sci_free(option->option); - sci_free(option->value); - - config_free_driver_options(option->next); - sci_free(option); - } -} - -static void -config_free_driver_subsystem(subsystem_options_t *subsys) -{ - if (subsys) { - sci_free(subsys->name); - - config_free_driver_options(subsys->options); - - config_free_driver_subsystem(subsys->next); - sci_free(subsys); - } -} - - -void -config_free(config_entry_t **conf, int entries) -{ - int i; - - if ((*conf)->console_log) - sci_free((*conf)->console_log); - - if ((*conf)->module_path) - sci_free((*conf)->module_path); - - if ((*conf)->menu_dir) - sci_free((*conf)->menu_dir); - - for (i = 0; i < entries; i++) { - int j; - - if (i >= 1) { - sci_free((*conf)[i].name); - if ((*conf)[i].resource_dir) - sci_free((*conf)[i].resource_dir); - if ((*conf)[i].console_log) - sci_free((*conf)[i].console_log); - } - - for (j = 0; j < FREESCI_DRIVER_SUBSYSTEMS_NR; j++) { - if ((*conf)[i].driver_options[j]) - config_free_driver_subsystem((*conf)[i].driver_options[j]); - } - } - - sci_free(*conf); -} - - -static int -parse_name(char *name, name_value_pair *nvps, const char *what, int oldval) -{ - int i = 0; - - while (nvps[i].name) { - if (0 == strcasecmp(name, nvps[i].name)) - return nvps[i].value; - - i++; - } - - printf("Invalid %s mode %s\n", what, name); - - return oldval; -} - - -#ifdef __GNUC__ -#warning "Re-enable sound stuff" -#endif -#if 0 -void * -parse_sound_server(char *driver_name) -{ - sound_server_t *retval = sound_server_find_driver(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown sound server %s\n", driver_name); - return (void *) conf->sound_server; -} - -void * -parse_midiout_driver(char *driver_name) -{ - midiout_driver_t *retval = midiout_find_driver(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown midiout driver %s\n", driver_name); - return (void *) conf->midiout_driver; -} - - -void * -parse_midi_device(char *driver_name) -{ - midi_device_t *retval = midi_find_device(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown MIDI device %s\n", driver_name); - return (void *) conf->midi_device; -} - -void * -parse_pcmout_driver(char *driver_name) -{ - pcmout_driver_t *retval = pcmout_find_driver(driver_name); - - if (retval) - return (void *) retval; - /* not found - return default */ - - printf ("Unknown pcmout driver %s\n", driver_name); - return (void *) conf->pcmout_driver; -} -#endif - -static void -parse_option(char *option, int optlen, char *value) -{ - int optindex = 0; - standard_option *opt = NULL; - - while (!opt && standard_options[optindex].type) - if (optlen == strlen(standard_options[optindex].name) - && !strncmp(standard_options[optindex].name, option, optlen)) - opt = &(standard_options[optindex]); - else - optindex++; - - if (!opt) { - fprintf(stderr,"Invalid option '%s'\n", option); - return; - } - - switch (opt->type) { - - case OPTION_TYPE_INT: { - char *foo; - int int_value = strtol(value, &foo, 0); - - if (*foo) { - fprintf(stderr, "Option '%s' expects numeric value; encountered '%s'\n", - opt->name, value); - return; - } - - if (int_value < opt->min) { - fprintf(stderr, "Option '%s' expects value >= %d; encountered '%s'\n", opt->name, opt->min, value); - return; - } - - if (int_value > opt->max) { - fprintf(stderr, "Option '%s' expects value <= %d; encountered '%s'\n", opt->name, opt->max, value); - return; - } - - *((int *)(((char *)&(conf[cur_section])) + opt->varoffset)) = int_value; /* Store value */ - - break; - } - - case OPTION_TYPE_STRING: { - char **stringref = ((char **)(((char *)&(conf[cur_section])) + opt->varoffset)); - if (*stringref) - sci_free(*stringref); - *stringref = sci_strdup(value); /* Store value */ - break; - } - - case OPTION_TYPE_INVERSE_NVP: - case OPTION_TYPE_NVP: { - int int_value = parse_name(value, opt->nvp, opt->name, BAD_INT_VALUE); - - if (int_value != BAD_INT_VALUE) { - - if (opt->type == OPTION_TYPE_INVERSE_NVP) - int_value = !int_value; - -/* FUCKED HERE: cur_section = 0, opt->varoffset = 205 */ - *((int *)(((char*)&(conf[cur_section])) + opt->varoffset)) = int_value; /* Store value */ - } - break; - } - - - case OPTION_TYPE_RECT: { - char *seeker = value; - - /* A rect_t is four integers */ - int *result = (int *) ((char *) &(conf[cur_section]) + opt->varoffset); - int i; - - for (i=0;i<4;i++) - { - *(result++) = strtol(seeker, &seeker, 10); - if (i < 3) - { - while (((*seeker == ',') || (*seeker == ' ')) && - (*seeker != 0)) - seeker++; - if ((*seeker < '0') || (*seeker > '9')) - { - fprintf(stderr, "Option '%s' expects a rectangle\n", opt->name); - return; - } - } - } - - break; - } - - - case OPTION_TYPE_STATICREF: { - *((void **)(((char *)&(conf[cur_section])) + opt->varoffset)) = opt->parse_funct(value); - break; - } - - default: - fprintf(stderr, "INTERNAL ERROR in %s, parse_option(), line %d\n", __FILE__, __LINE__); - } -} - - -driver_option_t * -get_driver_options(config_entry_t *config, int subsystem, const char *name) -{ - subsystem_options_t *options; - - if (subsystem < 0 || subsystem >= FREESCI_DRIVER_SUBSYSTEMS_NR) { - fprintf(stderr, "Attempt to get options from invalid subsystem #%d!\n", subsystem); - return NULL; - } - - if (!config) - return NULL; - - - options = config->driver_options[subsystem]; - - while (options && strcasecmp(options->name, name)) - options = options->next; - - if (options) - return options->options; - - return NULL; -} - -static driver_option_t * -clone_driver_options(driver_option_t *options) -{ - driver_option_t *retval; - - if (!options) - return NULL; - - retval = (driver_option_t *) sci_malloc(sizeof(driver_option_t)); - retval->option = sci_strdup(options->option); - retval->value = sci_strdup(options->value); - retval->next = clone_driver_options(options->next); - - return retval; -} - -static subsystem_options_t * -clone_subsystem_options(subsystem_options_t *options) -{ - subsystem_options_t *retval; - - if (!options) - return NULL; - - retval = (subsystem_options_t *) sci_malloc(sizeof(subsystem_options_t)); - retval->name = sci_strdup(options->name); - retval->options = clone_driver_options(options->options); - retval->next = clone_subsystem_options(options->next); - - return retval; -} - -static void -copy_subsystem_options(config_entry_t *dest, config_entry_t *src) -{ - int i; - for (i = 0; i < FREESCI_DRIVER_SUBSYSTEMS_NR; i++) - dest->driver_options[i] = clone_subsystem_options(src->driver_options[i]); -} - - -char * -purge_comments(char *comments) -{ - char *c = comments; - int overwrite = 0; - char ch; - - /* Tear out all comments */ - while ((ch = *c)) { - if (ch == '#') - overwrite = 1; - if (ch == '\n') - overwrite = 0; - if (overwrite) - *c = ' '; - - c++; - } - - return comments; -} - -static void -set_config_parameter(config_entry_t *conf, char *subsystem_name, char *driver_name, - char *option, char *value) -{ - subsystem_options_t **subsys_optionsp; - driver_option_t **driver_optionsp; - int subsystem_nr = -1; - int i = 0; - - while (subsystem_nr == -1 && i < FREESCI_DRIVER_SUBSYSTEMS_NR) { - if (!strcasecmp(subsystem_name, freesci_subsystems[i].name)) - subsystem_nr = i; - i++; - } - - if (subsystem_nr == -1) { - sciprintf("config file: There is no subsystem named '%s'\n", subsystem_name); - return; - } - -#if 0 - if (!(freesci_subsystems[subsystem_nr].check_driver(driver_name))) { - sciprintf("config file: There is no %s driver called '%s'\n", subsystem_name, driver_name); - return; - } -#endif - - subsys_optionsp = &(conf->driver_options[subsystem_nr]); - - while (*subsys_optionsp && strcasecmp((*subsys_optionsp)->name, driver_name)) - subsys_optionsp = &((*subsys_optionsp)->next); - - if (!*subsys_optionsp) { - *subsys_optionsp = (subsystem_options_t *) sci_malloc(sizeof(subsystem_options_t)); - (*subsys_optionsp)->name = sci_strdup(driver_name); - (*subsys_optionsp)->next = NULL; - (*subsys_optionsp)->options = NULL; - } - - driver_optionsp = &((*subsys_optionsp)->options); - - while (*driver_optionsp && strcasecmp((*driver_optionsp)->option, option)) - driver_optionsp = &((*driver_optionsp)->next); - - if (*driver_optionsp) { - sci_free((*driver_optionsp)->value); - } else { - *driver_optionsp = (driver_option_t *) sci_malloc(sizeof(driver_option_t)); - (*driver_optionsp)->option = sci_strdup(option); - (*driver_optionsp)->next = NULL; - } - - (*driver_optionsp)->value = sci_strdup(value); -} diff --git a/engines/sci/config/Makefile.am b/engines/sci/config/Makefile.am deleted file mode 100644 index 6659da6000..0000000000 --- a/engines/sci/config/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -INCLUDES = -I$(top_srcdir)/src/include - -noinst_LIBRARIES = libsciconfig.a -libsciconfig_a_SOURCES = config.l extension.c -EXTRA_DIST = lsl2.scifx sq3.scifx config.test - -check_PROGRAMS = test-parse -test_parse_LDADD = libsciconfig.a ../scicore/libscicore.a -test_parse_SOURCES = test-parse.c - -check-parse.sh : test-parse - -TESTS = check-parse.sh
\ No newline at end of file diff --git a/engines/sci/config/config.l b/engines/sci/config/config.l deleted file mode 100644 index 54890da43d..0000000000 --- a/engines/sci/config/config.l +++ /dev/null @@ -1,702 +0,0 @@ -/*************************************************************************** - config.l (C) 1999 Christoph Reichenbach - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Christoph Reichenbach (CJR) [jameson@linuxgames.com] - -***************************************************************************/ - -%{ -#include <stdio.h> -#include <stddef.h> -#include "conf_parse.h" -#include "conf_extension.h" -#include "sci_memory.h" -#include <assert.h> -#include <ctype.h> - - -/* unistd override for GNU flex for non-UNIX systems */ -#ifndef HAVE_UNISTD_H -# define YY_NO_UNISTD_H -#endif - -#ifdef _MSC_VER -# include <ctype.h> -# include <direct.h> - -# define strcasecmp stricmp - -#endif - -char * cur_section = NULL; /* dynamically allocated */ - -typedef struct _file_stack { - char *name; - int line_nr; /* Which line were we included _from_? */ - conf_parse_t *input_spec; /* The config_parse_t that included this file */ - YY_BUFFER_STATE handle; - struct _file_stack *next; -} file_stack_t; - -static file_stack_t *file_stack = NULL; -static char *yy_filename = NULL; -static YY_BUFFER_STATE yy_fsci_active_buffer; - -static int -push_file(char *name); - -static int -pop_file(void); - -FILE *initial_file; - -static const char * -skip_while(const char *start, int (*predicate)(int)); -/* Returns the first character after ``start'' which is 0 or for which ``predicate'' fails -** Parameters: (char *) start: Start position for the search -** (int -> int) predicate: Termination predicate -** Returns : (char *) The first character which is 0 or for which ``prediate'' fails -*/ - -static const char * -skip_until(const char *start, int (*predicate)(int)); -/* Returns the first character after ``start'' which is 0 or for which ``predicate'' succeeds -** Parameters: (char *) start: Start position for the search -** (int -> int) predicate: Termination predicate -** Returns : (char *) The first character which is 0 or for which ``prediate'' succeeds -*/ - -static char * -string_between (const char *start, const char *end); -/* Allocates a copy of the string between ``start'' and ``end'' (exluding ``end'') -** Parameters: (char *) start: Start position for copying -** (char *) end: End position for copying -*/ - -static int -is_separator_or_alnum(int character); -/* Determines whether ``character'' is an underscore, dash, period, or alphanumeric character -** Parameters: (int) character: The char to test -** Returns : (int) nonzero iff isalnum(character) or character equals '-' or '_' or ':' or '.' -*/ - -static int -is_double_quote(int character); -/* Determines whether ``character'' is '"' -** Parameters: (int) character: The char to test -** Returns : (int) nonzero iff character = '"' -*/ - -static int -is_period(int character); -/* Determines whether ``character'' is '.' -** Parameters: (int) character: The char to test -** Returns : (int) nonzero iff character = '.' -*/ - -static conf_parse_t * -next_conf_parse(int type); -/* Allocates a new conf_parse_t, tagged as being next in the input record -** Parameters: (int) type: The type of this section -** Returns : (conf_parse_t *) An appropriate conf parse entry -** Note that the subsection is implicitly chained in with the present subsection. -*/ - -static void -record_whitespace(const char *yytext); -/* Records an instance of whitespace -** Parameters: (char *) yytext: The whitespace to copy and represent -** Returns : (void) -*/ - -conf_extension_t * -conf_extension_alloc(int type); -/* Allocates a new chunk of configuration extension memory -** Parameters: (int) type: The type to pre-set -** Returns : (conf_extension_t *) : Fresh memory, with only the type initialised -*/ - - -static int -pop_file(void); - - -static conf_parse_t *current_confparse = NULL; -static conf_parse_t **current_confparse_start = NULL; /* Non-NULL if we request a pointer to the next current_confparse to be set; used for include files */ -static int conf_line_nr = 1; - -#define BAD_INT_VALUE -33333333 - -%} - -DIGIT [0-9] -PARAMTOKEN [[:alnum:]_\:\/-]* -SCIVERSION {DIGIT}"."{DIGIT}{3}"."{DIGIT}{3} -NUMTOKEN {DIGIT}+ -COORDTOKEN {NUMTOKEN},?[[:space:]]* -RECTTOKEN {COORDTOKEN}{3}{NUMTOKEN} -QUOTED_RECTTOKEN "\""{RECTTOKEN}"\"" -NUMPARAMTOKEN {NUMTOKEN}|{PARAMTOKEN} -PATHTOKEN [[:alnum:]"/""\\""."]* -NUMPATHPARAMTOKEN {NUMPARAMTOKEN}|{PATHTOKEN} -QUOTED_NUMPARAMTOKEN "\"".*"\"" - -%% - -"["[_[:alnum:]-]+"]" { - const char *start = yytext; - const char *textstart = skip_until(start+1, is_separator_or_alnum); - const char *textend = skip_while(textstart+1, is_separator_or_alnum); - - char *pre_pad = string_between(start, textstart); - char *section_name = string_between(textstart, textend); - char *post_pad = sci_strdup(textend); - - conf_parse_t *confdata = next_conf_parse(CONF_PARSE_TYPE_SUBSECTION); - confdata->data.subsection.pre_whitespace = pre_pad; - confdata->data.subsection.name = section_name; - confdata->data.subsection.post_whitespace = post_pad; -} - - -({PARAMTOKEN}|.)+[[:blank:]]*"="[[:blank:]]*({NUMPATHPARAMTOKEN}|{QUOTED_NUMPARAMTOKEN}|{RECTTOKEN}|{QUOTED_RECTTOKEN})[[:blank:]]* { - const char *name_start = yytext; - const char *name_end = skip_while(name_start + 1, is_separator_or_alnum); - - const char *name_interperiod_2 = NULL; - const char *name_interperiod_1 = skip_until(name_start + 1, is_period); - - if (*name_interperiod_1 == 0 - || name_interperiod_1 > name_end) - name_interperiod_1 = NULL; /* No separator */ - else { - name_interperiod_2 = skip_until(name_interperiod_1 + 1, is_period); - if (*name_interperiod_2 == 0) - name_interperiod_2 = NULL; /* No separator */ - } - - const char *value_start = skip_until(name_end + 1, is_separator_or_alnum); /* Note that '=' is not a separator or alnum */ - const char *value_end = is_double_quote(*(value_start - 1)) - ? skip_until(value_start + 1, is_double_quote) /* double quote: Look for terminator */ - : skip_while(value_start + 1, is_separator_or_alnum); /* no double quote: Look for end of ``identifier'' like thing */ - - char *subsystem_name = NULL; - char *driver_name = NULL; - char *option_name = NULL; - - if (name_interperiod_2) { - subsystem_name = string_between(name_start, name_interperiod_1); - driver_name = string_between(name_interperiod_1 + 1, name_interperiod_2); - option_name = string_between(name_interperiod_2 + 1, name_end); - } else if (name_interperiod_1) { - subsystem_name = string_between(name_start, name_interperiod_1); - option_name = string_between(name_interperiod_1 + 1, name_end); - } else - option_name = string_between(name_start, name_end); - - char *whitespace = string_between(name_end, value_start); - char *value = string_between(value_start, value_end); - fprintf(stderr, "value_end = %p\n", value_end); - char *terminal_whitespace = sci_strdup(value_end); - - conf_parse_t *confdata = next_conf_parse(CONF_PARSE_TYPE_OPTION); - confdata->data.assignment.subsystem = subsystem_name; - confdata->data.assignment.driver = driver_name; - confdata->data.assignment.option = option_name; - confdata->data.assignment.centre_whitespace = whitespace; - confdata->data.assignment.value = value; - confdata->data.assignment.terminal_whitespace = terminal_whitespace; -} - - -(view|pic|cursor)[^_A-Za-z0-9"("]*"("([^";"]|"#"[^\n]*\n)*";" { - - conf_parse_t *confdata = next_conf_parse(CONF_PARSE_TYPE_EXTENSION); - conf_extension_t *ext = conf_extension_alloc(CONF_EXT_TYPE_GFX); - ext->data = sci_strdup(yytext); - confdata->data.extension = ext; -} - -"%include"[^<\n]*<[^>\n]*> { - const char *file_start = strchr(yytext, '<') + 1; - const char *file_end = strchr(file_start, '>'); - - conf_parse_t *confdata = next_conf_parse(CONF_PARSE_TYPE_INCLUDE); - char *include_file = string_between(file_start, file_end); - confdata->data.include.include_prefix = string_between(yytext, file_start); - confdata->data.include.include_suffix = sci_strdup(file_end); - confdata->data.include.filename = include_file; - confdata->data.include.modifiable = 0; - - if (push_file(include_file)) { - YY_NEW_FILE; - } -} - - -"#".+$ {/* Ignore comments */ - record_whitespace(yytext); -} - -[[:blank:]\n]+ { /* Eat whitespace */ - record_whitespace(yytext); - char *ypos = yytext - 1; - while ((ypos = strchr(ypos + 1, '\n'))) - ++conf_line_nr; -} - -<<EOF>> { - yy_delete_buffer( YY_CURRENT_BUFFER ); - yyterminate(); -} - -.* { - char *text = sci_strdup(yytext); - conf_parse_t *parse = next_conf_parse(CONF_PARSE_TYPE_LEXERROR); - parse->data.whitespace = text; -} - -%% - -static const char * -skip_while(const char *start, int (*predicate)(int)) -{ - const char *pos = start; - - while (*pos && predicate(*pos)) - ++pos; - - return pos; -} - -static const char * -skip_until(const char *start, int (*predicate)(int)) -{ - const char *pos = start; - - while (*pos && (!predicate(*pos))) - ++pos; - - return pos; -} - -static char * -string_between(const char *start, const char *end) -{ - int length = end - start; - assert(length >= 0); - char * result = sci_malloc(length + 1); - memcpy(result, start, length); - result[length] = 0; /* terminate */ - - return result; -} - -static int -is_separator_or_alnum(int character) -{ - return isalnum(character) - || (character == '.') - || (character == '_') - || (character == '-'); -} - -static int -is_double_quote(int character) -{ - return character == '"'; -} - -static int -is_period(int character) -{ - return character == '.'; -} - -int -yywrap(void) -{ - return pop_file(); /* no further input */ -} - -static int -push_file(char *name) -{ - file_stack_t *newfs; - file_stack_t *s; - FILE *newfile; - - if (yy_filename && !strcmp(name, yy_filename)) { - fprintf(stderr, "[conf] Warning: Attempted immediate circular inclusion of config file '%s'\n", - name); - return 1; - } - - s = file_stack; - while (s) { - if (!strcmp(name, s->name)) { - fprintf(stderr, "[conf] Warning: Attempted circular inclusion of config file '%s'\n", - name); - return 1; - } - s = s->next; - } - - if (!(newfile = fopen(name, "r"))) { - fprintf(stderr, "[conf] Warning: Could not open configuration file '%s'\n", name); - return 1; - } - - if (yyin) { - newfs = malloc(sizeof(struct _file_stack)); - newfs->handle = yy_fsci_active_buffer; - newfs->name = yy_filename; - - newfs->next = file_stack; - newfs->line_nr = conf_line_nr; - newfs->input_spec = current_confparse; - current_confparse = NULL; - assert(newfs->input_spec->type == CONF_PARSE_TYPE_INCLUDE); - current_confparse_start = &(newfs->input_spec->data.include.options_head); - - file_stack = newfs; - } - - yy_filename = sci_strdup(name); - yy_fsci_active_buffer = yy_create_buffer(newfile, YY_BUF_SIZE); - yy_switch_to_buffer(yy_fsci_active_buffer); - - return 0; -} - -static int -pop_file(void) -{ - if (file_stack) { - void *goner = file_stack; - yy_delete_buffer(yy_fsci_active_buffer); - fclose(yyin); - yy_fsci_active_buffer = file_stack->handle; - yy_switch_to_buffer(yy_fsci_active_buffer); - - free(yy_filename); - yy_filename = file_stack->name; - conf_line_nr = file_stack->line_nr; - - /* Recover confparse */ - assert(file_stack->input_spec->type == CONF_PARSE_TYPE_INCLUDE); - file_stack->input_spec->data.include.options_end = current_confparse; - current_confparse = file_stack->input_spec; - current_confparse_start = NULL; - - file_stack = file_stack->next; - - free(goner); - return 0; - } else { - if (yy_filename) { - free(yy_filename); - yy_filename = NULL; - } - if (yyin) { - yy_delete_buffer(yy_fsci_active_buffer); - fclose(yyin); - yyin = NULL; - } - return 1; /* Done */ - } -} - - -static void -record_whitespace(const char *yytext) -{ - char *text = sci_strdup(yytext); - conf_parse_t *parse = next_conf_parse(CONF_PARSE_TYPE_WHITESPACE); - parse->data.whitespace = text; -} - - -static conf_parse_t * -next_conf_parse (int type) -{ - conf_parse_t *result; - - fprintf(stderr, "Allocing entry...\n"); - result = sci_malloc(sizeof(conf_parse_t)); - fprintf(stderr, "Done...\n"); - - if (!type) { - BREAKPOINT(); - } - - result->type = type; - result->line_nr = conf_line_nr; - result->next = NULL; - result->overridden = NULL; - - if (current_confparse) { - current_confparse->next = result; - result->prev = current_confparse; - } else { - result->prev = NULL; - } - - if (current_confparse_start) { - *current_confparse_start = result; - current_confparse_start = NULL; - } - - current_confparse = result; - - fprintf(stderr, "Final...\n"); - return result; -} - -/* -------------- */ -/* API operations */ -/* -------------- */ - -conf_parse_t * -conf_read_file(char *config_file_name, int modifiable, conf_parse_t *previous) -{ - char *conf_path = sci_strdup(config_file_name); - - conf_parse_t *confdata = next_conf_parse(CONF_PARSE_TYPE_INCLUDE); - confdata->data.include.include_prefix = NULL; - confdata->data.include.include_suffix = NULL; - confdata->data.include.filename = conf_path; - confdata->data.include.modifiable = modifiable; - - if (previous) { - /* Make sure to hook confdata in after previous */ - conf_parse_t **termp = &previous; - - while ((*termp)->next) - termp = &((*termp)->next); - - (*termp)->next = confdata; /* Hook into the final pointer */ - } - - if ((push_file(conf_path))) { - sci_free(conf_path); - return NULL; - } - - - current_confparse_start = &confdata->data.include.options_head; - yylex(); /* Parse the file */ - confdata->data.include.options_end = current_confparse; - confdata->next = NULL; - - while (!pop_file()); /* Ignore error conditions- might be lex implementation dependant */ - - if (previous) - return previous; - else - return confdata; -} - -#define XFREE(x) if (x) sci_free(x); - -void -conf_free_parse(conf_parse_t *raw_config) -{ - while (raw_config) { - switch (raw_config->type) { - - case CONF_PARSE_TYPE_WHITESPACE: - sci_free(raw_config->data.whitespace); - break; - - case CONF_PARSE_TYPE_SUBSECTION: - sci_free(raw_config->data.subsection.pre_whitespace); - sci_free(raw_config->data.subsection.name); - sci_free(raw_config->data.subsection.post_whitespace); - break; - - case CONF_PARSE_TYPE_OPTION: - XFREE(raw_config->data.assignment.subsystem); - XFREE(raw_config->data.assignment.driver); - sci_free(raw_config->data.assignment.option); - sci_free(raw_config->data.assignment.centre_whitespace); - sci_free(raw_config->data.assignment.value); - sci_free(raw_config->data.assignment.terminal_whitespace); - break; - - case CONF_PARSE_TYPE_INCLUDE: - XFREE(raw_config->data.include.include_prefix); - XFREE(raw_config->data.include.include_suffix); - sci_free(raw_config->data.include.filename); - conf_free_parse(raw_config->data.include.options_head); /* recurse */ - break; - - case CONF_PARSE_TYPE_EXTENSION: - conf_extension_free(raw_config->data.extension); - raw_config->data.extension = NULL; - break; - - case CONF_PARSE_TYPE_LEXERROR: - sci_free(raw_config->data.whitespace); - break; - - default: - fprintf(stderr, "[conf] INTERNAL ERROR: Trying to free config segment of invalid type %d\n", raw_config->type); - BREAKPOINT(); - } - - raw_config->type = -1; - conf_parse_t *next = raw_config->next; - sci_free(raw_config); - raw_config = next; - } -} - -#undef DEBUG_CONF_PRINTING - -#ifdef DEBUG_CONF_PRINTING -#define fputs(data, file) my_fputs(data, file) -#define fopen(filename, mode) my_fopen(filename, mode) -#define fclose(file) my_fclose(file) - -FILE * -my_fopen(const char *filename, const char *mode) -{ - printf(">>> Opening ``%s'' for [%s]\n", filename, mode); - return (FILE *) filename; -} - -int -my_fputs(const char *data, const FILE *file) -{ - return puts(data); -} - -int -fclose(const FILE *file) -{ - printf(">>> Closing ``%s''\n", file); - return 0; -} -#endif - -static void -conf_write_parse_file(conf_parse_t *confparse, FILE *file) -{ - while (confparse) { - switch (confparse->type) { - - case CONF_PARSE_TYPE_LEXERROR: - case CONF_PARSE_TYPE_WHITESPACE: - fputs(confparse->data.whitespace, file); - break; - - case CONF_PARSE_TYPE_SUBSECTION: - fputs(confparse->data.subsection.pre_whitespace, file); - fputs(confparse->data.subsection.name, file); - fputs(confparse->data.subsection.post_whitespace, file); - break; - - case CONF_PARSE_TYPE_OPTION: - if (confparse->data.assignment.subsystem) { - fputs(confparse->data.assignment.subsystem, file); - fputs(".", file); - } - if (confparse->data.assignment.driver) { - fputs(confparse->data.assignment.driver, file); - fputs(".", file); - } - fputs(confparse->data.assignment.option, file); - fputs(confparse->data.assignment.centre_whitespace, file); - fputs(confparse->data.assignment.value, file); - fputs(confparse->data.assignment.terminal_whitespace, file); - break; - - case CONF_PARSE_TYPE_INCLUDE: - if (confparse->data.include.include_prefix) { - fputs(confparse->data.include.include_prefix, file); - fputs(confparse->data.include.filename, file); - fputs(confparse->data.include.include_suffix, file); - } - conf_write_parse(confparse); /* Recurse indirectly */ - break; - - case CONF_PARSE_TYPE_EXTENSION: - conf_extension_print(file, confparse->data.extension); - break; - - default: - fprintf(stderr, "[conf] INTERNAL ERROR: Trying to print config segment of invalid type %d\n", confparse->type); - BREAKPOINT(); - } - - confparse = confparse->next; - } -} - -void -conf_write_parse(conf_parse_t *raw_config) -{ - while (raw_config) { - switch (raw_config->type) { - - case CONF_PARSE_TYPE_WHITESPACE: - case CONF_PARSE_TYPE_SUBSECTION: - case CONF_PARSE_TYPE_OPTION: - case CONF_PARSE_TYPE_EXTENSION: - case CONF_PARSE_TYPE_LEXERROR: - break; - - case CONF_PARSE_TYPE_INCLUDE: - if (raw_config->data.include.modifiable) { - const char *filename = raw_config->data.include.filename; - FILE *file = fopen(filename, "w"); - if (!file) { - fprintf(stderr, "[conf] Could not write back to file ``%s'': ", filename); - perror(NULL); - } else { - conf_write_parse_file(raw_config->data.include.options_head, file); - fclose(file); - } - } -#ifdef DEBUG_CONF_PRINTING - else printf(">>> Skipping file ``%s'' for output since it's tagged read-only\n", raw_config->data.include.filename); -#endif - break; - - default: - fprintf(stderr, "[conf] INTERNAL ERROR: Trying to print config segment of invalid type %d (on top-level)\n", raw_config->type); - BREAKPOINT(); - } - - raw_config = raw_config->next; - } -} - -conf_extension_t * -conf_extension_alloc(int type) -{ - conf_extension_t *retval = sci_malloc(sizeof(conf_extension_t)); - retval->type = type; - return retval; -} diff --git a/engines/sci/config/config.test b/engines/sci/config/config.test deleted file mode 100644 index cb843a84c5..0000000000 --- a/engines/sci/config/config.test +++ /dev/null @@ -1,48 +0,0 @@ -pic0_dither_mode = dither256 -pic0_brush_mode = random_ellipses -pic0_scaled = yes -view_filter = trilinear -pic_filter = linear -cursor_filter = bilinear -text_filter = linear -#pic_antialiasing = simple -midiout.alsaraw.card = 0 -debugflags = +a - -[qg1] - -resource_dir = /home/creichen/work/port/sci/qg1 - -[sq1] - -resource_dir = /home/creichen/work/port/sci/sq1 - -[sq4] - -resource_dir = /home/creichen/work/port/sci/sq4 - -[qg2] - -pic(*) *= (0.7, 0.7, 0.7); -resource_dir = /home/creichen/work/port/sci/qg2 -version = 1.000.120 - -[cb1] - -resource_dir = /home/creichen/work/port/sci/rei/cb1 - -[lb1] - -resource_dir = /home/creichen/work/port/sci/amiga/cb1 - - -[lsl1] - -resource_dir = /home/creichen/work/port/sci/lsl1 -version = 1.000.577 -pic0_scaled = false - -[lsl2] - -resource_dir = /home/creichen/work/port/sci/lsl2 -%include<lsl2.scifx>
\ No newline at end of file diff --git a/engines/sci/config/dynlink.c b/engines/sci/config/dynlink.c deleted file mode 100644 index a1877dcd64..0000000000 --- a/engines/sci/config/dynlink.c +++ /dev/null @@ -1,69 +0,0 @@ -/*************************************************************************** - Copyright (C) 2008 Christoph Reichenbach - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantability, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Christoph Reichenbach (CR) <jameson@linuxgames.com> - -***************************************************************************/ - -#include <dynlink.h> -#ifdef HAVE_DYNAMIC_LINKING -#include <dlfcn.h> - -void * -dynlink_open(const char *filename) -{ - void *retval = dlopen(filename, RTLD_NOW /* Quick error handling */ -#ifdef RTLD_DEEPBIND - | RTLD_DEEPBIND /* Enforce deep binding, if possible */ -#endif - ); - if (retval == NULL) - fprintf(stderr, "[dynlink] %s: %s\n", filename, dlerror()); - - return retval; -} - -void * -dynlink_resolve(void *handle, const char *symname) -{ - return dlsym(handle, symname); -} - -void -dynlink_close(void *handle) -{ - if (dlclose(handle)) - fprintf(stderr, "[dynlink] When unloading module: %s\n", filename, dlerror()); -} - -char *default_paths[] = { - NULL -}; - -char ** -dynlink_paths(void) -{ - return default_paths; -} - -#endif /* !defined(HAVE_DLFCN_H_) */ diff --git a/engines/sci/config/extension.c b/engines/sci/config/extension.c deleted file mode 100644 index 531b083f5a..0000000000 --- a/engines/sci/config/extension.c +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************** - Copyright (C) 2008 Christoph Reichenbach - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantability, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Christoph Reichenbach (CR) <jameson@linuxgames.com> - -***************************************************************************/ -#include "conf_extension.h" -#include "sci_memory.h" - -int -conf_extension_supercedes(conf_extension_t *a, conf_extension_t *b) -{ - return 0; -} - -void -conf_extension_print(FILE *file, conf_extension_t *a) -{ - switch (a->type) { - - case CONF_EXT_TYPE_GFX: - fputs(a->data, file); - break; - - default: - fprintf(stderr, "[conf] Unknown config extension type %d", a->type); - } -} - -void -conf_extension_free(conf_extension_t *a) -{ - switch (a->type) { - - case CONF_EXT_TYPE_GFX: - sci_free(a->data); - break; - - default: - fprintf(stderr, "[conf] Unknown config extension type %d", a->type); - } - - a->type = CONF_EXT_TYPE_INVALID; - a->data = NULL; - sci_free(a); -} diff --git a/engines/sci/config/lsl2.scifx b/engines/sci/config/lsl2.scifx deleted file mode 100644 index 7dccd2fb56..0000000000 --- a/engines/sci/config/lsl2.scifx +++ /dev/null @@ -1,43 +0,0 @@ -# LSL2 per-resource palette configuration -# Copyright (C) 2006 Matt Hargett - -#ego -view(507,155,161,163,170,197,198,431,432,145..159,131..141,191,104,244,215,217,219,100,101,110,111,112,113,192,193,604,704..706,717,718,818,819,822,823,824,831,832,833,834,835) *= 1.25; -pic(28,99) *= 1.25; -view(218)(3) *= 1.25; -view(218)(0..2) *= 0.9; -view(820)(0,1) *= 0.9; -view(227,224,206,208,209,220) *= 0.9; -view(221,254,252) *= 0.7; -view(820)(2..4) *= 1.2; -view(816)(5)(0) *= 1.2; -view(516,509,501..504,401..403,408,409,411,413,414,417,418,419,430,310,302,303,120..124,232,223,208,710,716,714) *=1.1; -view(434..438,311,313,316,319,321,323,324,306..309,248,245,246,233..235,237,226,229,222,203,204,205,600,525,524,523,522,520,602,605,608,707..708) *=1.2; -view(305)(4) *= 1.1; -view(305)(0..3) *= 0.6; -view(661)(0,1,3..5) *= 1.2; -view(661)(2) *= 0.7; -view(711,712,713,60) *= (0.9, 1.0, 1.0); -view(816)(0..4) *= 0.9; -view(506,508,500,252,803,804,433) *= 0.6; -view(513)(0..5) *= 0.5; -view(240..243,701,722) *= 0.8; -view(700)(1) *= (0.6, 0.9, 1.0); -view(610,611) *= (0.9, 1.0, 1.1); -view(607)(1) *= 0.8; -view(253,228,247,300,326) *= 0.8; -view(412) *= 1.3; -pic(96) *= 1.1; - -pic(92,93,18,20..26,134,40,50,76..82,181) *= 0.9; -pic(114..118,125,11..17,19,43,70..74,44,86,101..104,32,33,35,36,95) *= 0.85; -#titles -view(800,801) *= 1.5; -pic(10,90,91) *= 0.4; - -#misc effects -view(702) *= (1.1, 1.0, 1.0) -view(519) *= 0.8; - -view(200)(0) *= 0.7; -view(201,202) *= 0.8; diff --git a/engines/sci/config/option-test.conf b/engines/sci/config/option-test.conf deleted file mode 100644 index c556a763cc..0000000000 --- a/engines/sci/config/option-test.conf +++ /dev/null @@ -1 +0,0 @@ -# Fill me in! diff --git a/engines/sci/config/sq3.scifx b/engines/sci/config/sq3.scifx deleted file mode 100644 index 8e1e9afd28..0000000000 --- a/engines/sci/config/sq3.scifx +++ /dev/null @@ -1,81 +0,0 @@ -# SQ3 per-resource palette configuration -# Copyright (C) 2006 Matt Hargett - -# ego -view(0,8,11,12,14,68,17,22..26,32,35, 751, 289, 288, 261, 260, 257, 213, 199, 193, 192, 138, 137, 134, 109, 110, 113, 114, 117, 122, 123,100, 99, 97, 95, 89, 88, 87, 85, 84, 82, 76, 68, 63, 104 ) *= 1.25 ; -view(136) *= 1.15; -view(106)(4,5,9) *= 1.25; -view(105)(0,1) *= 1.25; -# ego on garbage lifter -- lighten but not so as to make the lifter be obviously weird -view(13)(0)(2) *= 1.15 ; -view(31) *= 1.15; -view(15)(3)(0) *= 1.25 ; -view(16,19)(0) *= 1.25; -view(57)(5..6) *= 1.25 ; -view(21)(1) *= 1.25 ; -# ego's shadow -view(7,18) *= 0.5; -view(6..8,18) *= 0.9; -view(901) *= 1.25; -view(751) *= 1.25; -view(750)(1) *= 1.25; -view(92)(4) *= 1.25; -view(83)(0) *= 1.25; -view(83)(1)(2) *=1.15; -view(83)(2)(2) *=1.15; -view(78)(3) *= 1.25; -view(64)(2,3) *= 1.25; -# ego's hands controlling robot -pic(96) *= 1.15; -# peeking at scumsoft -pic(81,82) *= 1.15; -#lifted by robot -pic(430) *= 1.15; - -# computer controls -view(40,41,42,149,146,141,151,152) *= 0.8; -view(70,2) *= 0.9; -pic(17,18,162..164,170,180,191,300) *= 0.75; - -# title screen -view(900) *= 0.9; -pic(1) *= 0.9 ; -pic(926) *= 0.9; - -# humans(?) -view(593,93,103,131..133,210,130,115) *= 1.2; -pic(117) *=1.15; -view(116)(1..2) *= 1.2; - -#ships, planets, and robots -view(39) *= 0.9; -view(1) *= 0.75; -pic(205..209,112..115) *= 0.9; -pic(60..72) *= 0.9; -pic(153) *= 0.8; -view(96) *= 0.9; -pic(690) *= 0.9; -view(77)(0..2) *= 0.7; -view(259) *= 1.15; - - -# in the garbage scow -pic(1..20) *= 0.75 ; -pic(157) *= 0.6; -view(20)(0) *= 0.5; -# rats -view(15)(0,1) *= 0.6; -view(34) *= 0.6; - -# guys from andromeda -view(128) *= 0.9; -view(601, 602) *= 0.9; - -# misc text bubbles, effects, etc -view(94) *= 1.1; -view(91, 73) *= 1.5; -view(57)(3,4) *= 1.5; -view(15)(4) *= 1.5; -view(64)(0) *= 1.5; -view(71)(8) *= 1.5; -view(10)(6) *= 1.5; diff --git a/engines/sci/config/test-options.c b/engines/sci/config/test-options.c deleted file mode 100644 index d4a44cc928..0000000000 --- a/engines/sci/config/test-options.c +++ /dev/null @@ -1,91 +0,0 @@ -/*************************************************************************** - Copyright (C) 2008 Christoph Reichenbach - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantability, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Christoph Reichenbach (CR) <jameson@linuxgames.com> - -***************************************************************************/ - -#include "conf_parse.h" -#include "conf_subsystems.h" - - -int error_count = 0; - -#define ASSERT(x) if (!(x)) { ++error_count; fprintf(stderr, "[error] Assertion failed at line %d: " #x "\n", __LINE__);} - -char ** dynamic_driver_locations = { - NULL -}; - -char *fsci_driver_magic = CONF_DRIVER_MAGIC; - -static conf_main_t main_drv = { - .header = { - .magic = CONF_DRIVER_MAGIC; - .freesci_version = CONF_DRIVER_VERSION; - .subsystem_id = 0; - .subsystem_version = 0; - .name = "config-test"; - .version = "1.0"; - .dependencies = CONF_DRIVER_DEPENDENCY_GFX; /* Get SFX dependency transitively from GFX */ - .options = main_options; - .set_option = - }; - .subsystems = { &sub_gfx, &sub_sound, - &sub_ignore, &sub_ignore, &sub_ignore, - &sub_ignore, &sub_ignore }; - .dynamic_driver_locations = dynamic_driver_locations; - .init = init_main; - .exit = exit_main; -}; - -void -test_validation(conf_parse_t *parse) -{ - ASSERT (NULL == conf_validate (&main_drv, parse)); -} - -void -test_ - -int -main(int argc, char **argv) -{ - int i; - - conf_parse_t *conf = = conf_read_file("option-test.conf", 1, conf); - - printf (">>> Parsing complete.\n"); - ASSERT(conf != NULL); - if (!conf) - return 1; - conf_write_parse(conf); - - test_validation(parse); - test_setting(pase); - - printf (">>> Cleanup...\n"); - conf_free_parse(conf); - - return error_count != 0; -} diff --git a/engines/sci/config/test-parse.c b/engines/sci/config/test-parse.c deleted file mode 100644 index 548bc8780b..0000000000 --- a/engines/sci/config/test-parse.c +++ /dev/null @@ -1,59 +0,0 @@ -/*************************************************************************** - Copyright (C) 2007 Christoph Reichenbach - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Christoph Reichenbach (CR) <jameson@linuxgames.com> - -***************************************************************************/ - -#include <stdio.h> -#include "conf_parse.h" - -int -main(int argc, char **argv) -{ - int i; - - if (argc < 2) { - printf("Usage: %s <conf-filename>+\n", argv[0]); - return 1; - } - - conf_parse_t *conf = NULL; - - for (i = 1; i < argc; i++) { - conf_parse_t *newconf = conf_read_file(argv[i], 1, conf); - if (newconf == NULL) { - fprintf(stderr, "Couldn't parse ``%s''\n", argv[i]); - conf_free_parse(conf); - return 1; - } else - conf = newconf; - } - - printf (">>> Parsing complete. Re-emitting parsed files...\n"); - conf_write_parse(conf); - printf (">>> Cleanup...\n"); - conf_free_parse(conf); - - return 0; -} diff --git a/engines/sci/dc/3dutils.c b/engines/sci/dc/3dutils.c deleted file mode 100644 index b60334c841..0000000000 --- a/engines/sci/dc/3dutils.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* Modified by Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> */ - -#include <stdarg.h> -#include <stdio.h> -#include "gp.h" - -#include "sintab.h" - -/* Some misc 3D utils */ - -/* Rotate a 3-pair of coordinates by the given angle 0..255 */ -void rotate(int zang, int xang, int yang, float *x, float *y, float *z) { - float tx, ty, tz; - - tx = (mcos(zang)* *x - msin(zang)* *y); - ty = (mcos(zang)* *y + msin(zang)* *x); - *x = tx; *y = ty; - - tz = (mcos(xang)* *z - msin(xang)* *y); - ty = (mcos(xang)* *y + msin(xang)* *z); - *y = ty; *z = tz; - - tx = (mcos(yang)* *x - msin(yang)* *z); - tz = (mcos(yang)* *z + msin(yang)* *x); - *x = tx; *z = tz; -} - -/* Draw the mouse cursor at the given location */ -void draw_poly_mouse(int ptrx, int ptry, float alpha) { - pvr_vertex_t vert; - - /* Start a textured polygon set (with the font texture) */ - pvr_prim(&util_txr_hdr, sizeof(util_txr_hdr)); - - vert.flags = PVR_CMD_VERTEX; - vert.x = ptrx; - vert.y = ptry + 16.0f; - vert.z = 512.0f + alpha; - vert.u = 0.0f; - vert.v = 16.0f / 256.0f; - vert.argb = PVR_PACK_COLOR(0.80f * alpha, 1.0f, 1.0f, 1.0f); - vert.oargb = 0; - pvr_prim(&vert, sizeof(vert)); - - vert.x = ptrx; - vert.y = ptry; - vert.u = 0.0f; - vert.v = 0.0f; - pvr_prim(&vert, sizeof(vert)); - - vert.x = ptrx + 10.0f; - vert.y = ptry + 16.0f; - vert.u = 10.0f / 256.0f; - vert.v = 16.0f / 256.0f; - pvr_prim(&vert, sizeof(vert)); - - vert.flags = PVR_CMD_VERTEX_EOL; - vert.x = ptrx + 10.0f; - vert.y = ptry; - vert.u = 10.0f / 256.0f; - vert.v = 0.0f; - pvr_prim(&vert, sizeof(vert)); -} - -/* Draw one font character (12x24); assumes polygon header already sent */ -void draw_poly_char(float x1, float y1, float z1, float a, float r, float g, float b, int c) { - pvr_vertex_t vert; - int ix = (c % 16) * 16; - int iy = (c / 16) * 24; - float u1 = ix * 1.0f / 256.0f; - float v1 = iy * 1.0f / 256.0f; - float u2 = (ix+12) * 1.0f / 256.0f; - float v2 = (iy+24) * 1.0f / 256.0f; - - vert.flags = PVR_CMD_VERTEX; - vert.x = x1; - vert.y = y1 + 24.0f; - vert.z = z1; - vert.u = u1; - vert.v = v2; - vert.argb = PVR_PACK_COLOR(a,r,g,b); - vert.oargb = 0; - pvr_prim(&vert, sizeof(vert)); - - vert.x = x1; - vert.y = y1; - vert.u = u1; - vert.v = v1; - pvr_prim(&vert, sizeof(vert)); - - vert.x = x1 + 12.0f; - vert.y = y1 + 24.0f; - vert.u = u2; - vert.v = v2; - pvr_prim(&vert, sizeof(vert)); - - vert.flags = PVR_CMD_VERTEX_EOL; - vert.x = x1 + 12.0f; - vert.y = y1; - vert.u = u2; - vert.v = v1; - pvr_prim(&vert, sizeof(vert)); -} - -/* Draw a set of textured polygons at the given depth and color that - represent a string of text. */ -static char strbuf[1024]; -void draw_poly_strf(float x1, float y1, float z1, float a, float r, - float g, float b, char *fmt, ...) { - va_list args; - char *s; - - va_start(args, fmt); - vsprintf(strbuf, fmt, args); - va_end(args); - - pvr_prim(&util_txr_hdr, sizeof(util_txr_hdr)); - s = strbuf; - while (*s) { - if (*s == ' ') { - x1 += 12.0f; s++; - } else { - draw_poly_char(x1+=12.0f, y1, z1, a, r, g, b, *s++); - } - } -} - -/* Draw a horizontally centered set of textured polygons at the given depth - and color that represent a string of text. Only for video mode 640x480. */ -void draw_poly_strf_ctr(float y1, float z1, float a, float r, float g, float b, - char *fmt, ...) { - float x1; - va_list args; - char *s; - - va_start(args, fmt); - vsnprintf(strbuf, 1024, fmt, args); - va_end(args); - - x1 = 320.0f - strlen(strbuf) * 6.0f; - - pvr_prim(&util_txr_hdr, sizeof(util_txr_hdr)); - s = strbuf; - while (*s) { - if (*s == ' ') { - x1 += 12.0f; s++; - } else { - draw_poly_char(x1+=12.0f, y1, z1, a, r, g, b, *s++); - } - } -} - -/* Draw a polygon for a shaded box; wow, a nasty looking func =) */ -void draw_poly_box(float x1, float y1, float x2, float y2, float z, - float a1, float r1, float g1, float b1, - float a2, float r2, float g2, float b2) { - pvr_poly_cxt_t cxt; - pvr_poly_hdr_t poly; - pvr_vertex_t vert; - - pvr_poly_cxt_col(&cxt, PVR_LIST_TR_POLY); - pvr_poly_compile(&poly, &cxt); - pvr_prim(&poly, sizeof(poly)); - - vert.flags = PVR_CMD_VERTEX; - vert.x = x1; vert.y = y2; vert.z = z; - vert.argb = PVR_PACK_COLOR( - (a1+a2)/2, - (r1+r2)/2, - (g1+g2)/2, - (b1+b2)/2); - vert.oargb = 0; - pvr_prim(&vert, sizeof(vert)); - - vert.y = y1; - vert.argb = PVR_PACK_COLOR(a1, r1, g1, b1); - pvr_prim(&vert, sizeof(vert)); - - vert.x = x2; vert.y = y2; - vert.argb = PVR_PACK_COLOR(a2, r2, g2, b2); - pvr_prim(&vert, sizeof(vert)); - - vert.flags = PVR_CMD_VERTEX_EOL; - vert.y = y1; - vert.argb = PVR_PACK_COLOR( - (a1+a2)/2, - (r1+r2)/2, - (g1+g2)/2, - (b1+b2)/2); - pvr_prim(&vert, sizeof(vert)); -} diff --git a/engines/sci/dc/Makefile b/engines/sci/dc/Makefile deleted file mode 100644 index f8e5227e34..0000000000 --- a/engines/sci/dc/Makefile +++ /dev/null @@ -1,168 +0,0 @@ -BIN_TARGET = freesci.bin -ELF_TARGET = freesci.elf - -FSCI_BASE = ../.. - -OBJS = \ - $(FSCI_BASE)/src/config.o \ - 3dutils.o \ - aica_drv.o \ - bkg.o \ - dc_save.o \ - gamemenu.o \ - keyboard.o \ - selectgame.o \ - snd_stream.o \ - texture.o \ - $(FSCI_BASE)/src/engine/game.o \ - $(FSCI_BASE)/src/engine/gc.o \ - $(FSCI_BASE)/src/engine/grammar.o \ - $(FSCI_BASE)/src/engine/kernel.o \ - $(FSCI_BASE)/src/engine/kevent.o \ - $(FSCI_BASE)/src/engine/kfile.o \ - $(FSCI_BASE)/src/engine/kgraphics.o \ - $(FSCI_BASE)/src/engine/klists.o \ - $(FSCI_BASE)/src/engine/kmath.o \ - $(FSCI_BASE)/src/engine/kmenu.o \ - $(FSCI_BASE)/src/engine/kmovement.o \ - $(FSCI_BASE)/src/engine/kpathing.o \ - $(FSCI_BASE)/src/engine/kscripts.o \ - $(FSCI_BASE)/src/engine/ksound.o \ - $(FSCI_BASE)/src/engine/kstring.o \ - $(FSCI_BASE)/src/engine/said.o \ - $(FSCI_BASE)/src/engine/savegame.o \ - $(FSCI_BASE)/src/engine/scriptconsole.o \ - $(FSCI_BASE)/src/engine/scriptdebug.o \ - $(FSCI_BASE)/src/engine/seg_manager.o \ - $(FSCI_BASE)/src/engine/sys_strings.o \ - $(FSCI_BASE)/src/engine/vm.o \ - $(FSCI_BASE)/src/gfx/antialias.o \ - $(FSCI_BASE)/src/gfx/drivers/dc_driver.o \ - $(FSCI_BASE)/src/gfx/drivers/gfx_drivers.o \ - $(FSCI_BASE)/src/gfx/drivers/null_driver.o \ - $(FSCI_BASE)/src/gfx/font.o \ - $(FSCI_BASE)/src/gfx/font-5x8.o\ - $(FSCI_BASE)/src/gfx/font-6x10.o\ - $(FSCI_BASE)/src/gfx/gfx_console.o \ - $(FSCI_BASE)/src/gfx/gfx_resource.o \ - $(FSCI_BASE)/src/gfx/gfx_res_options.o \ - $(FSCI_BASE)/src/gfx/gfx_support.o \ - $(FSCI_BASE)/src/gfx/gfx_tools.o \ - $(FSCI_BASE)/src/gfx/menubar.o \ - $(FSCI_BASE)/src/gfx/operations.o \ - $(FSCI_BASE)/src/gfx/resmgr.o \ - $(FSCI_BASE)/src/gfx/resource/sci_cursor_0.o \ - $(FSCI_BASE)/src/gfx/resource/sci_font.o \ - $(FSCI_BASE)/src/gfx/resource/sci_pal_1.o \ - $(FSCI_BASE)/src/gfx/resource/sci_pic_0.o \ - $(FSCI_BASE)/src/gfx/resource/sci_resmgr.o \ - $(FSCI_BASE)/src/gfx/resource/sci_view_0.o \ - $(FSCI_BASE)/src/gfx/resource/sci_view_1.o \ - $(FSCI_BASE)/src/gfx/sbtree.o \ - $(FSCI_BASE)/src/gfx/sci_widgets.o \ - $(FSCI_BASE)/src/gfx/widgets.o \ - $(FSCI_BASE)/src/main.o \ - $(FSCI_BASE)/src/menu/game_select_init.o \ - $(FSCI_BASE)/src/menu/game_select_screen.o \ - $(FSCI_BASE)/src/scicore/aatree.o \ - $(FSCI_BASE)/src/scicore/console.o \ - $(FSCI_BASE)/src/scicore/decompress0.o \ - $(FSCI_BASE)/src/scicore/decompress01.o \ - $(FSCI_BASE)/src/scicore/decompress1.o \ - $(FSCI_BASE)/src/scicore/decompress11.o \ - $(FSCI_BASE)/src/scicore/exe.o \ - $(FSCI_BASE)/src/scicore/exe_lzexe.o \ - $(FSCI_BASE)/src/scicore/exe_raw.o \ - $(FSCI_BASE)/src/scicore/fnmatch.o \ - $(FSCI_BASE)/src/scicore/int_hashmap.o \ - $(FSCI_BASE)/src/scicore/modules.o \ - $(FSCI_BASE)/src/scicore/old_objects.o \ - $(FSCI_BASE)/src/scicore/reg_t_hashmap.o \ - $(FSCI_BASE)/src/scicore/resource.o \ - $(FSCI_BASE)/src/scicore/resource_map.o \ - $(FSCI_BASE)/src/scicore/resource_patch.o \ - $(FSCI_BASE)/src/scicore/sci_memory.o \ - $(FSCI_BASE)/src/scicore/script.o \ - $(FSCI_BASE)/src/scicore/tools.o \ - $(FSCI_BASE)/src/scicore/versions.o \ - $(FSCI_BASE)/src/scicore/vocab.o \ - $(FSCI_BASE)/src/scicore/vocab_debug.o \ - $(FSCI_BASE)/src/sfx/iterator.o \ - $(FSCI_BASE)/src/sfx/songlib.o \ - $(FSCI_BASE)/src/sfx/core.o \ - $(FSCI_BASE)/src/sfx/adlib.o \ - $(FSCI_BASE)/src/sfx/pcm-iterator.o \ - $(FSCI_BASE)/src/sfx/time.o \ - $(FSCI_BASE)/src/sfx/player/players.o \ - $(FSCI_BASE)/src/sfx/player/realtime.o \ - $(FSCI_BASE)/src/sfx/player/polled.o \ - $(FSCI_BASE)/src/sfx/device/devices.o \ - $(FSCI_BASE)/src/sfx/timer/timers.o \ - $(FSCI_BASE)/src/sfx/timer/pthread.o \ - $(FSCI_BASE)/src/sfx/seq/sequencers.o \ - $(FSCI_BASE)/src/sfx/mixer/mixers.o \ - $(FSCI_BASE)/src/sfx/mixer/soft.o \ - $(FSCI_BASE)/src/sfx/mixer/dc.o \ - $(FSCI_BASE)/src/sfx/pcm_device/pcm_devices.o \ - $(FSCI_BASE)/src/sfx/pcm_device/audiobuf.o \ - $(FSCI_BASE)/src/sfx/seq/mt32.o \ - $(FSCI_BASE)/src/sfx/seq/gm.o \ - $(FSCI_BASE)/src/sfx/seq/instrument-map.o \ - $(FSCI_BASE)/src/sfx/softseq/softsequencers.o \ - $(FSCI_BASE)/src/sfx/softseq/SN76496.o \ - $(FSCI_BASE)/src/sfx/softseq/amiga.o \ - $(FSCI_BASE)/src/sfx/softseq/fmopl.o \ - $(FSCI_BASE)/src/sfx/softseq/opl2.o \ - $(FSCI_BASE)/src/sfx/softseq/pcspeaker.o - -AICA_OBJS = \ - $(FSCI_BASE)/src/dc/aica_crt0.o \ - $(FSCI_BASE)/src/dc/aica_main.o \ - $(FSCI_BASE)/src/dc/aica_sup.o - -all: $(BIN_TARGET) - -aica_%.o: aica_%.c - $(DC_ARM_CC) $(DC_ARM_CFLAGS) $(DC_ARM_INCS) -c $< -o $@ - -aica_%.o: aica_%.s - $(DC_ARM_AS) $(DC_ARM_AFLAGS) $< -o $@ - -%.o: %.c config.h - $(KOS_CC) $(KOS_CFLAGS) $(KOS_LOCAL_CFLAGS) -D_arch_$(KOS_ARCH) $(KOS_ALL_INCS) -c $< -o $@ - -aica.drv: aica.elf - $(DC_ARM_OBJCOPY) -O binary $< $@ - -aica.elf: $(AICA_OBJS) - $(DC_ARM_CC) -Wl,-Ttext,0x00000000 -nostartfiles -nostdlib -e reset -o $@ $(AICA_OBJS) -lgcc - -aica_drv.o: aica.drv - $(KOS_BASE)/utils/bin2o/bin2o $< snd_stream_drv $@ - -KOS_LOCAL_CFLAGS := -I$(FSCI_BASE)/src/include -I$(FSCI_BASE)/src/dc \ - -I$(FSCI_BASE)/src/include/beos -D_DREAMCAST -DHAVE_CONFIG_H \ - -DWANT_CONSOLE -DYY_NEVER_INTERACTIVE - -clean: rm-elf rm-bin - -rm -f $(OBJS) config.h - -rm-elf: - -rm -f $(ELF_TARGET) - -rm-bin: - -rm -f $(BIN_TARGET) - -config.h: config.h.in ../../configure.ac - cp config.h.in config.h - sed -n -e 's/AM_INIT_AUTOMAKE(.*,[[:blank:]]*\([[:graph:]]*\)[[:blank:]]*)/#define VERSION "\1"/p' ../../configure.ac >> config.h - -$(ELF_TARGET): $(OBJS) - $(KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -o $(ELF_TARGET) $(KOS_START) \ - $(OBJS) $(OBJEXTRA) -lm -lz $(KOS_LIBS) - -$(BIN_TARGET): $(ELF_TARGET) - $(KOS_OBJCOPY) -R .stack -O binary $(ELF_TARGET) $(BIN_TARGET) - -run: $(BIN_TARGET) - $(KOS_LOADER) $(BIN_TARGET) diff --git a/engines/sci/dc/aica.h b/engines/sci/dc/aica.h deleted file mode 100644 index 84ac2baed0..0000000000 --- a/engines/sci/dc/aica.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef __AICA_H -#define __AICA_H - -/* volatile unsigned char *dc_snd_base = (unsigned char *)0x00800000; */ -#define dc_snd_base ((volatile unsigned char *)0x00800000) - -/* Some convienence macros */ -#define SNDREG32A(x) ((volatile unsigned long *)(dc_snd_base + (x))) -#define SNDREG32(x) (*SNDREG32A(x)) -#define SNDREG8A(x) (dc_snd_base + (x)) -#define SNDREG8(x) (*SNDREG8A(x)) -#define CHNREG32A(chn, x) SNDREG32A(0x80*(chn) + (x)) -#define CHNREG32(chn, x) (*CHNREG32A(chn, x)) -#define CHNREG8A(chn, x) SNDREG8A(0x80*(chn) + (x)) -#define CHNREG8(chn, x) (*CHNREG8A(chn, x)) - -void aica_init(); -void aica_play(int ch, int delay); -void aica_sync_play(uint32 chmap); -void aica_stop(int ch); -void aica_vol(int ch); -void aica_pan(int ch); -void aica_freq(int ch); -int aica_get_pos(int ch); - -#endif /* __AICA_H */ diff --git a/engines/sci/dc/aica_cmd_iface.h b/engines/sci/dc/aica_cmd_iface.h deleted file mode 100644 index 115ece64b0..0000000000 --- a/engines/sci/dc/aica_cmd_iface.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef __ARM_AICA_CMD_IFACE_H -#define __ARM_AICA_CMD_IFACE_H - -/* $Id: aica_cmd_iface.h 1486 2005-11-10 13:03:57Z waltervn $ */ - -#ifndef __ARCH_TYPES_H -typedef unsigned long uint8; -typedef unsigned long uint32; -#endif - -/* Command queue; one of these for passing data from the SH-4 to the - AICA, and another for the other direction. If a command is written - to the queue and it is longer than the amount of space between the - head point and the queue size, the command will wrap around to - the beginning (i.e., queue commands _can_ be split up). */ -typedef struct aica_queue { - uint32 head; /* Insertion point offset (in bytes) */ - uint32 tail; /* Removal point offset (in bytes) */ - uint32 size; /* Queue size (in bytes) */ - uint32 valid; /* 1 if the queue structs are valid */ - uint32 process_ok; /* 1 if it's ok to process the data */ - uint32 data; /* Pointer to queue data buffer */ -} aica_queue_t; - -/* Command queue struct for commanding the AICA from the SH-4 */ -typedef struct aica_cmd { - uint32 size; /* Command data size in dwords */ - uint32 cmd; /* Command ID */ - uint32 timestamp; /* When to execute the command (0 == now) */ - uint32 cmd_id; /* Command ID, for cmd/response pairs, or channel id */ - uint32 misc[4]; /* Misc Parameters / Padding */ - uint8 cmd_data[0]; /* Command data */ -} aica_cmd_t; - -/* Maximum command size -- 256 dwords */ -#define AICA_CMD_MAX_SIZE 256 - -/* This is the cmd_data for AICA_CMD_CHAN. Make this 16 dwords long - for two aica bus queues. */ -typedef struct aica_channel { - uint32 cmd; /* Command ID */ - uint32 base; /* Sample base in RAM */ - uint32 type; /* (8/16bit/ADPCM) */ - uint32 length; /* Sample length */ - uint32 loop; /* Sample looping */ - uint32 loopstart; /* Sample loop start */ - uint32 loopend; /* Sample loop end */ - uint32 freq; /* Frequency */ - uint32 vol; /* Volume 0-255 */ - uint32 pan; /* Pan 0-255 */ - uint32 pos; /* Sample playback pos */ - uint32 pad[5]; /* Padding */ -} aica_channel_t; - -/* Declare an aica_cmd_t big enough to hold an aica_channel_t - using temp name T, aica_cmd_t name CMDR, and aica_channel_t name CHANR */ -#define AICA_CMDSTR_CHANNEL(T, CMDR, CHANR) \ - uint8 T[sizeof(aica_cmd_t) + sizeof(aica_channel_t)]; \ - aica_cmd_t * CMDR = (aica_cmd_t *)T; \ - aica_channel_t * CHANR = (aica_channel_t *)(CMDR->cmd_data); -#define AICA_CMDSTR_CHANNEL_SIZE ((sizeof(aica_cmd_t) + sizeof(aica_channel_t))/4) - -/* Command values (for aica_cmd_t) */ -#define AICA_CMD_NONE 0x00000000 /* No command (dummy packet) */ -#define AICA_CMD_PING 0x00000001 /* Check for signs of life */ -#define AICA_CMD_CHAN 0x00000002 /* Perform a wavetable action */ -#define AICA_CMD_SYNC_CLOCK 0x00000003 /* Reset the millisecond clock */ - -/* Response values (for aica_cmd_t) */ -#define AICA_RESP_NONE 0x00000000 -#define AICA_RESP_PONG 0x00000001 /* Response to CMD_PING */ -#define AICA_RESP_DBGPRINT 0x00000002 /* Entire payload is a null-terminated string */ - -/* Command values (for aica_channel_t commands) */ -#define AICA_CH_CMD_MASK 0x0000000f - -#define AICA_CH_CMD_NONE 0x00000000 -#define AICA_CH_CMD_START 0x00000001 -#define AICA_CH_CMD_STOP 0x00000002 -#define AICA_CH_CMD_UPDATE 0x00000003 - -/* Start values */ -#define AICA_CH_START_MASK 0x00300000 - -#define AICA_CH_START_DELAY 0x00100000 /* Set params, but delay key-on */ -#define AICA_CH_START_SYNC 0x00200000 /* Set key-on for all selected channels */ - -/* Update values */ -#define AICA_CH_UPDATE_MASK 0x000ff000 - -#define AICA_CH_UPDATE_SET_FREQ 0x00001000 /* frequency */ -#define AICA_CH_UPDATE_SET_VOL 0x00002000 /* volume */ -#define AICA_CH_UPDATE_SET_PAN 0x00004000 /* panning */ - -/* Sample types */ -#define AICA_SM_8BIT 1 -#define AICA_SM_16BIT 0 -#define AICA_SM_ADPCM 2 - - -/* This is where our SH-4/AICA comm variables go... */ - -/* 0x000000 - 0x010000 are reserved for the program */ - -/* Location of the SH-4 to AICA queue; commands from here will be - periodically processed by the AICA and then removed from the queue. */ -#define AICA_MEM_CMD_QUEUE 0x010000 /* 32K */ - -/* Location of the AICA to SH-4 queue; commands from here will be - periodically processed by the SH-4 and then removed from the queue. */ -#define AICA_MEM_RESP_QUEUE 0x018000 /* 32K */ - -/* This is the channel base, which holds status structs for all the - channels. This is READ-ONLY from the SH-4 side. */ -#define AICA_MEM_CHANNELS 0x020000 /* 64 * 16*4 = 4K */ - -/* The clock value (in milliseconds) */ -#define AICA_MEM_CLOCK 0x021000 /* 4 bytes */ - -/* 0x021004 - 0x030000 are reserved for future expansion */ - -/* Open ram for sample data */ -#define AICA_RAM_START 0x030000 -#define AICA_RAM_END 0x200000 - -/* Quick access to the AICA channels */ -#define AICA_CHANNEL(x) (AICA_MEM_CHANNELS + (x) * sizeof(aica_channel_t)) - -#endif /* __ARM_AICA_CMD_IFACE_H */ diff --git a/engines/sci/dc/aica_crt0.s b/engines/sci/dc/aica_crt0.s deleted file mode 100644 index 12415c0391..0000000000 --- a/engines/sci/dc/aica_crt0.s +++ /dev/null @@ -1,149 +0,0 @@ -# -# Copyright 2000, 2001, 2002 -# Dan Potter. All rights reserved. -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of Cryptic Allusion nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# - -.text -.globl arm_main -.globl jps - -# Meaningless but makes the linker shut up -.globl reset -reset: - -# Exception vectors - b start - b undef - b softint - b pref_abort - b data_abort - b rsrvd - b irq - - -# FIQ code adapted from the Marcus AICA example -fiq: - # Save regs - #stmdb sp!, {r0-r14} - - # Grab interrupt type (store as parameter) - ldr r8,intreq - ldr r9,[r8] - and r9,r9,#7 - - # Timer interupt? - cmp r9,#2 - beq fiq_timer - - # Bus request? - cmp r9,#5 - beq fiq_busreq - - # Dunno -- ack and skip - b fiq_done - -fiq_busreq: - # Type 5 is bus request. Wait until the INTBusRequest register - # goes back from 0x100. - ldr r8,busreq_control -fiq_busreq_loop: - # This could probably be done more efficiently, but I'm - # no ARM assembly expert... - ldr r9,[r8] - and r9,r9,#0x100 - cmp r9,#0 - bne fiq_busreq_loop - - b fiq_done - -fiq_timer: - # Type 2 is timer interrupt. Increment timer variable. - # Update the next line to AICA_MEM_CLOCK if you change AICA_CMD_IFACE - mov r8,#0x21000 - ldr r9,[r8] - add r9,r9,#1 - str r9,[r8] - - # Request a new timer interrupt. We'll calculate the number - # put in here based on the "jps" (jiffies per second). - ldr r8, timer_control - mov r9,#256-(44100/4410) -# ldr r9,jps - str r9,[r8,#0x10] - mov r9,#0x40 - str r9,[r8,#0x24] -# b fiq_done - - # Return from interrupt -fiq_done: - - # Clear interrupt - ldr r8,intclr - mov r9,#1 - str r9,[r8] - str r9,[r8] - str r9,[r8] - str r9,[r8] - - # Restore regs and return - #ldmdb sp!, {r0-r14} - subs pc,r14,#4 - -intreq: - .long 0x00802d00 -intclr: - .long 0x00802d04 -timer_control: - .long 0x00802880 -busreq_control: - .long 0x00802808 -jps: - # 1000 jiffies per second - .long 256-(44100/1000) - - -start: - # Setup a basic stack, disable IRQ, enable FIQ - mov sp,#0xb000 - mrs r10,CPSR - orr r10,r10,#0x80 - bic r10,r10,#0x40 - msr CPSR_all,r10 - - # Call the main for the SPU - bl arm_main - - # Loop infinitely if we get here -here: b here - - -# Handlers we don't bother to catch -undef: -softint: - mov pc,r14 -pref_abort: -data_abort: -irq: -rsrvd: - sub pc,r14,#4 diff --git a/engines/sci/dc/aica_main.c b/engines/sci/dc/aica_main.c deleted file mode 100644 index f42904f0a2..0000000000 --- a/engines/sci/dc/aica_main.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* 2005-11-09 Modified by Walter van Niftrik. */ - -#include "aica_cmd_iface.h" -#include "aica.h" - -/****************** Timer *******************************************/ - -#define timer (*((volatile uint32 *)AICA_MEM_CLOCK)) - -void timer_wait(int jiffies) { - int fin = timer + jiffies; - while (timer <= fin) - ; -} - -/****************** Tiny Libc ***************************************/ - -#include <stddef.h> - -void * memcpy(void *dest, const void *src, size_t count) { - unsigned char *tmp = (unsigned char *) dest; - unsigned char *s = (unsigned char *) src; - - while (count--) - *tmp++ = *s++; - - return dest; -} - -/****************** Main Program ************************************/ - -/* Our SH-4 interface (statically placed memory structures) */ -volatile aica_queue_t *q_cmd = (volatile aica_queue_t *)AICA_MEM_CMD_QUEUE; -volatile aica_queue_t *q_resp = (volatile aica_queue_t *)AICA_MEM_RESP_QUEUE; -volatile aica_channel_t *chans = (volatile aica_channel_t *)AICA_MEM_CHANNELS; - -/* Process a CHAN command */ -void process_chn(uint32 chn, aica_channel_t *chndat) { - switch(chndat->cmd & AICA_CH_CMD_MASK) { - case AICA_CH_CMD_NONE: - break; - case AICA_CH_CMD_START: - if (chndat->cmd & AICA_CH_START_SYNC) { - aica_sync_play(chn); - } else { - memcpy((void*)(chans+chn), chndat, sizeof(aica_channel_t)); - chans[chn].pos = 0; - aica_play(chn, chndat->cmd & AICA_CH_START_DELAY); - } - break; - case AICA_CH_CMD_STOP: - aica_stop(chn); - break; - case AICA_CH_CMD_UPDATE: - if (chndat->cmd & AICA_CH_UPDATE_SET_FREQ) { - chans[chn].freq = chndat->freq; - aica_freq(chn); - } - if (chndat->cmd & AICA_CH_UPDATE_SET_VOL) { - chans[chn].vol = chndat->vol; - aica_vol(chn); - } - if (chndat->cmd & AICA_CH_UPDATE_SET_PAN) { - chans[chn].pan = chndat->pan; - aica_pan(chn); - } - break; - default: - /* error */ - break; - } -} - -/* Process one packet of queue data */ -uint32 process_one(uint32 tail) { - uint32 pktdata[AICA_CMD_MAX_SIZE], *pdptr, size, i; - volatile uint32 * src; - aica_cmd_t * pkt; - - src = (volatile uint32 *)(q_cmd->data + tail); - pkt = (aica_cmd_t *)pktdata; - pdptr = pktdata; - - /* Get the size field */ - size = *src; - if (size > AICA_CMD_MAX_SIZE) - size = AICA_CMD_MAX_SIZE; - - /* Copy out the packet data */ - for (i=0; i<size; i++) { - *pdptr++ = *src++; - if ((uint32)src >= (q_cmd->data + q_cmd->size)) - src = (volatile uint32 *)q_cmd->data; - } - - /* Figure out what type of packet it is */ - switch (pkt->cmd) { - case AICA_CMD_NONE: - break; - case AICA_CMD_PING: - /* Not implemented yet */ - break; - case AICA_CMD_CHAN: - process_chn(pkt->cmd_id, (aica_channel_t *)pkt->cmd_data); - break; - case AICA_CMD_SYNC_CLOCK: - /* Reset our timer clock to zero */ - timer = 0; - break; - default: - /* error */ - break; - } - - return size; -} - -/* Look for an available request in the command queue; if one is there - then process it and move the tail pointer. */ -void process_cmd_queue() { - uint32 head, tail, tsloc, ts; - - /* Grab these values up front in case SH-4 changes head */ - head = q_cmd->head; - tail = q_cmd->tail; - - /* Do we have anything to process? */ - while (head != tail) { - /* Look at the next packet. If our clock isn't there yet, then - we won't process anything yet either. */ - tsloc = tail + offsetof(aica_cmd_t, timestamp); - if (tsloc >= q_cmd->size) - tsloc -= q_cmd->size; - ts = *((volatile uint32*)(q_cmd->data + tsloc)); - if (ts > 0 && ts >= timer) - return; - - /* Process it */ - ts = process_one(tail); - - /* Ok, skip over the packet */ - tail += ts * 4; - if (tail >= q_cmd->size) - tail -= q_cmd->size; - q_cmd->tail = tail; - } -} - -int arm_main() { - int i; - - /* Setup our queues */ - q_cmd->head = q_cmd->tail = 0; - q_cmd->data = AICA_MEM_CMD_QUEUE + sizeof(aica_queue_t); - q_cmd->size = AICA_MEM_RESP_QUEUE - q_cmd->data; - q_cmd->process_ok = 1; - q_cmd->valid = 1; - - q_resp->head = q_resp->tail = 0; - q_resp->data = AICA_MEM_RESP_QUEUE + sizeof(aica_queue_t); - q_resp->size = AICA_MEM_CHANNELS - q_resp->data; - q_resp->process_ok = 1; - q_resp->valid = 1; - - /* Initialize the AICA part of the SPU */ - aica_init(); - - /* Wait for a command */ - for( ; ; ) { - /* Update channel position counters */ - for (i=0; i<64; i++) - aica_get_pos(i); - - /* Check for a command */ - if (q_cmd->process_ok) - process_cmd_queue(); - - /* Little delay to prevent memory lock */ - timer_wait(10); - } -} diff --git a/engines/sci/dc/aica_sup.c b/engines/sci/dc/aica_sup.c deleted file mode 100644 index f99179702c..0000000000 --- a/engines/sci/dc/aica_sup.c +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* 2005-11-09 Modified by Walter van Niftrik. */ - -#include "aica_cmd_iface.h" -#include "aica.h" - -extern volatile aica_channel_t *chans; - -void aica_init() { - int i, j; - - /* Initialize AICA channels */ - SNDREG32(0x2800) = 0x0000; - - for (i=0; i<64; i++) { - CHNREG32(i,0) = 0x8000; - for (j=4; j<0x80; j+=4) - CHNREG32(i, j) = 0; - CHNREG32(i,20) = 0x1f; - } - - SNDREG32(0x2800) = 0x000f; -} - -/* Translates a volume from linear form to logarithmic form (required by - the AICA chip */ -static int logs[] = { - 0, 15, 22, 27, 31, 35, 39, 42, 45, 47, 50, 52, 55, 57, 59, 61, - 63, 65, 67, 69, 71, 73, 74, 76, 78, 79, 81, 82, 84, 85, 87, 88, - 90, 91, 92, 94, 95, 96, 98, 99, 100, 102, 103, 104, 105, 106, - 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 146, 147, 148, 149, 150, 151, 152, 152, 153, 154, 155, 156, 156, - 157, 158, 159, 160, 160, 161, 162, 163, 164, 164, 165, 166, 167, - 167, 168, 169, 170, 170, 171, 172, 173, 173, 174, 175, 176, 176, - 177, 178, 178, 179, 180, 181, 181, 182, 183, 183, 184, 185, 185, - 186, 187, 187, 188, 189, 189, 190, 191, 191, 192, 193, 193, 194, - 195, 195, 196, 197, 197, 198, 199, 199, 200, 200, 201, 202, 202, - 203, 204, 204, 205, 205, 206, 207, 207, 208, 209, 209, 210, 210, - 211, 212, 212, 213, 213, 214, 215, 215, 216, 216, 217, 217, 218, - 219, 219, 220, 220, 221, 221, 222, 223, 223, 224, 224, 225, 225, - 226, 227, 227, 228, 228, 229, 229, 230, 230, 231, 232, 232, 233, - 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 239, 239, 240, - 240, 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, - 247, 247, 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 254, 255 -}; - -static inline int calc_aica_vol(int x) { - return 0xff - logs[x & 0xff]; -} - -static inline int calc_aica_pan(int x) { - if (x == 0x80) - return 0; - else if (x < 0x80) { - return 0x10 | ((0x7f - x) >> 3); - } else { - return (x - 0x80) >> 3; - } -} - -/* Sets up a sound channel completely. This is generally good if you want - a quick and dirty way to play notes. If you want a more comprehensive - set of routines (more like PC wavetable cards) see below. - - ch is the channel to play on (0 - 63) - smpptr is the pointer to the sound data; if you're running off the - SH4, then this ought to be (ptr - 0xa0800000); otherwise it's just - ptr. Basically, it's an offset into sound ram. - mode is one of the mode constants (16 bit, 8 bit, ADPCM) - nsamp is the number of samples to play (not number of bytes!) - freq is the sampling rate of the sound - vol is the volume, 0 to 0xff (0xff is louder) - pan is a panning constant -- 0 is left, 128 is center, 255 is right. - - This routine (and the similar ones) owe a lot to Marcus' sound example -- - I hadn't gotten quite this far into dissecting the individual regs yet. */ -void aica_play(int ch, int delay) { - unsigned long smpptr = chans[ch].base; - int mode = chans[ch].type; - int loopst = chans[ch].loopstart; - int loopend = chans[ch].loopend; - int freq = chans[ch].freq; - int vol = chans[ch].vol; - int pan = chans[ch].pan; - int loopflag = chans[ch].loop; - unsigned long freq_lo, freq_base = 5644800; - int freq_hi = 7; - int i; - uint32 playCont; - - /* Stop the channel (if it's already playing) */ - aica_stop(ch); - - /* Need to convert frequency to floating point format - (freq_hi is exponent, freq_lo is mantissa) - Formula is freq = 44100*2^freq_hi*(1+freq_lo/1024) */ - while (freq < freq_base && freq_hi > -8) { - freq_base >>= 1; - --freq_hi; - } - freq_lo = (freq<<10) / freq_base; - - /* Envelope setup. The first of these is the loop point, - e.g., where the sample starts over when it loops. The second - is the loop end. This is the full length of the sample when - you are not looping, or the loop end point when you are (though - storing more than that is a waste of memory if you're not doing - volume enveloping). */ - CHNREG32(ch, 8) = loopst & 0xffff; - CHNREG32(ch, 12) = loopend & 0xffff; - - /* Write resulting values */ - CHNREG32(ch, 24) = (freq_hi << 11) | (freq_lo & 1023); - - /* Set volume, pan */ - CHNREG8(ch, 36) = calc_aica_pan(pan); - CHNREG8(ch, 37) = 0xf; - /* turn off Low Pass Filter (LPF) */ - CHNREG8(ch, 40) = 0x24; - /* Convert the incoming volume and pan into hardware values */ - /* Vol starts at zero so we can ramp */ - CHNREG8(ch, 41) = 0xff; - - /* If we supported volume envelopes (which we don't yet) then - this value would set that up. The top 4 bits determine the - envelope speed. f is the fastest, 1 is the slowest, and 0 - seems to be an invalid value and does weird things). The - default (below) sets it into normal mode (play and terminate/loop). - CHNREG32(ch, 16) = 0xf010; - */ - CHNREG32(ch, 16) = 0x1f; /* No volume envelope */ - - - /* Set sample format, buffer address, and looping control. If - 0x0200 mask is set on reg 0, the sample loops infinitely. If - it's not set, the sample plays once and terminates. We'll - also set the bits to start playback here. */ - CHNREG32(ch, 4) = smpptr & 0xffff; - playCont = (mode<<7) | (smpptr >> 16); - vol = calc_aica_vol(vol); - - if (loopflag) - playCont |= 0x0200; - - if (delay) { - CHNREG32(ch, 0) = playCont; /* key off */ - CHNREG8(ch, 41) = vol; - } else { - CHNREG32(ch, 0) = 0xc000 | playCont; /* key on */ - - /* ramp up the volume */ - for (i=0xff; i>=vol; i--) - CHNREG8(ch, 41) = i; - } -} - -/* Start sound on all channels specified by chmap bitmap */ -void aica_sync_play(uint32 chmap) { - int i = 0; - while (chmap) { - if (chmap & 0x1) - CHNREG32(i, 0) = CHNREG32(i, 0) | 0xc000; - i++; - chmap >>= 1; - } -} - -/* Stop the sound on a given channel */ -void aica_stop(int ch) { - CHNREG32(ch, 0) = (CHNREG32(ch, 0) & ~0x4000) | 0x8000; -} - - -/* The rest of these routines can change the channel in mid-stride so you - can do things like vibrato and panning effects. */ - -/* Set channel volume */ -void aica_vol(int ch) { - CHNREG8(ch, 41) = calc_aica_vol(chans[ch].vol); -} - -/* Set channel pan */ -void aica_pan(int ch) { - CHNREG8(ch, 36) = calc_aica_pan(chans[ch].pan); -} - -/* Set channel frequency */ -void aica_freq(int ch) { - int freq = chans[ch].freq; - unsigned long freq_lo, freq_base = 5644800; - int freq_hi = 7; - - while (freq < freq_base && freq_hi > -8) { - freq_base >>= 1; - freq_hi--; - } - freq_lo = (freq<<10) / freq_base; - CHNREG32(ch, 24) = (freq_hi << 11) | (freq_lo & 1023); -} - -/* Get channel position */ -int aica_get_pos(int ch) { - int i; - - /* Observe channel ch */ - SNDREG8(0x280d) = ch; - - /* Wait a while */ - for (i = 0; i < 20; i++); - - /* Update position counters */ - chans[ch].pos = SNDREG32(0x2814) & 0xffff; - - return chans[ch].pos; -} diff --git a/engines/sci/dc/bkg.c b/engines/sci/dc/bkg.c deleted file mode 100644 index 66af9b78ab..0000000000 --- a/engines/sci/dc/bkg.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "gp.h" - - -/* This module will manage the spiffy background effects */ - -static int ang = 0; -static pvr_ptr_t chktexture; -static float horizon = 340.0f; - -/* Make a nice (now familiar =) XOR pattern texture */ -void bkg_setup() { - int x, y; - uint16 *texture; - - chktexture = pvr_mem_malloc(64*64*2); - texture = (uint16*)chktexture; - for (y=0; y<64; y++) - for (x=0; x<64; x++) { - int v = ((x*4)^(y*4)) & 255; - *texture++ = ((v >> 3) << 11) - | ((v >> 2) << 5) - | ((v >> 3) << 0); - } -} - -/* Draws the floor polygon */ -static void draw_floor_poly() { - pvr_vertex_t vert; - float u2 = 0.374f, j = 0.0f; - - vert.flags = PVR_CMD_VERTEX; - vert.x = 0.0f; vert.y = 480.0f; vert.z = 64.0f; - vert.u = u2 - 0.5f; vert.v = 1.0f - 0.5f; - rotate(ang, 0, 0, &vert.u, &vert.v, &j); - vert.u += 0.5f; vert.v += 0.5f; - vert.argb = PVR_PACK_COLOR(1.0f, 0.2f, 1.0f, 1.0f); - vert.oargb = 0; - pvr_prim(&vert, sizeof(vert)); - - vert.x = 0.0f; vert.y = horizon; vert.z = 16.0f; - vert.u = 0.0f - 0.5f; vert.v = 0.0f - 0.5f; - rotate(ang, 0, 0, &vert.u, &vert.v, &j); - vert.u += 0.5f; vert.v += 0.5f; - vert.argb = PVR_PACK_COLOR(1.0f, 0.5f, 0.3f, 1.0f); - pvr_prim(&vert, sizeof(vert)); - - vert.x = 640.0f; vert.y = 480.0f; vert.z = 64.0f; - vert.u = (1.0f - u2) - 0.5f; vert.v = 1.0f - 0.5f; - rotate(ang, 0, 0, &vert.u, &vert.v, &j); - vert.u += 0.5f; vert.v += 0.5f; - vert.argb = PVR_PACK_COLOR(1.0f, 0.2f, 1.0f, 1.0f); - pvr_prim(&vert, sizeof(vert)); - - vert.flags = PVR_CMD_VERTEX_EOL; - vert.x = 640.0f; vert.y = horizon; vert.z = 16.0f; - vert.u = 1.0f - 0.5f; vert.v = 0.0f - 0.5f; - rotate(ang, 0, 0, &vert.u, &vert.v, &j); - vert.u += 0.5f; vert.v += 0.5f; - vert.argb = PVR_PACK_COLOR(1.0f, 0.5f, 0.3f, 1.0f); - pvr_prim(&vert, sizeof(vert)); -} - -/* Draws the "wall" polygon */ -static void draw_wall_poly() { - pvr_vertex_t vertc; - - vertc.flags = PVR_CMD_VERTEX; - vertc.x = 0.0f; vertc.y = horizon; vertc.z = 64.0f; - vertc.argb = PVR_PACK_COLOR(1.0f, 0.5f, 0.3f, 1.0f); - vertc.oargb = 0; - pvr_prim(&vertc, sizeof(vertc)); - - vertc.x = 0.0f; vertc.y = 0.0f; vertc.z = 64.0f; - vertc.argb = PVR_PACK_COLOR(1.0f, 0.0f, 0.0f, 0.0f); - pvr_prim(&vertc, sizeof(vertc)); - - vertc.x = 640.0f; vertc.y = horizon; vertc.z = 64.0f; - vertc.argb = PVR_PACK_COLOR(1.0f, 0.5f, 0.3f, 1.0f); - pvr_prim(&vertc, sizeof(vertc)); - - vertc.flags = PVR_CMD_VERTEX_EOL; - vertc.x = 640.0f; vertc.y = 0.0f; vertc.z = 64.0f; - vertc.argb = PVR_PACK_COLOR(1.0f, 0.0f, 0.0f, 0.0f); - pvr_prim(&vertc, sizeof(vertc)); -} - -void bkg_render() { - pvr_poly_cxt_t cxt; - pvr_poly_hdr_t poly; - - /* "floor" polygon */ - pvr_poly_cxt_txr(&cxt, PVR_LIST_OP_POLY, PVR_TXRFMT_RGB565 | PVR_TXRFMT_NONTWIDDLED, - 64, 64, chktexture, PVR_FILTER_BILINEAR); - pvr_poly_compile(&poly, &cxt); - pvr_prim(&poly, sizeof(poly)); - - draw_floor_poly(); - - /* "wall" polygon */ - pvr_poly_cxt_col(&cxt, PVR_LIST_OP_POLY); - pvr_poly_compile(&poly, &cxt); - pvr_prim(&poly, sizeof(poly)); - - draw_wall_poly(); - - ang = (ang-1) & 255; -} diff --git a/engines/sci/dc/config.h.in b/engines/sci/dc/config.h.in deleted file mode 100644 index 9baad96096..0000000000 --- a/engines/sci/dc/config.h.in +++ /dev/null @@ -1,174 +0,0 @@ -/* Define to 1 if you have the <dirent.h> header file. */ -#define HAVE_DIRENT_H 1 - -/* Define to 1 if you have the <dmedia/audio.h> header file. */ -/* #undef HAVE_DMEDIA_AUDIO_H */ - -/* Define to 1 if you have the <dmedia/midi.h> header file. */ -/* #undef HAVE_DMEDIA_MIDI_H */ - -/* Define to 1 if you have the <errno.h> header file. */ -#define HAVE_ERRNO_H 1 - -/* Define to 1 if you have the `ffs' function. */ -/* #undef HAVE_FFS */ - -/* Define to 1 if you have the `fnmatch' function. */ -/* #undef HAVE_FNMATCH */ - -/* Define to 1 if you have the <fnmatch.h> header file. */ -#define HAVE_FNMATCH_H 1 - -/* Define to 1 if you have the `fork' function. */ -/* #undef HAVE_FORK */ - -/* Define to 1 if you have the <getopt.h> header file. */ -/* #undef HAVE_GETOPT_H */ - -/* Define to 1 if you have the `getopt_long' function. */ -/* #undef HAVE_GETOPT_LONG */ - -/* Define to 1 if you have the <inttypes.h> header file. */ -/* #undef HAVE_INTTYPES_H */ - -/* Define to 1 if you have the `isblank' function. */ -#define HAVE_ISBLANK 1 - -/* Define to 1 if you have the `asound' library (-lasound). */ -/* #undef HAVE_LIBASOUND */ - -/* Define to 1 if you have the `cygwin' library (-lcygwin). */ -/* #undef HAVE_LIBCYGWIN */ - -/* Define to 1 if you have the <limits.h> header file. */ -#define HAVE_LIMITS_H 1 - -/* Define to 1 if you have the `memchr' function. */ -#define HAVE_MEMCHR 1 - -/* Define to 1 if you have the `memfrob' function. */ -/* #undef HAVE_MEMFROB */ - -/* Define to 1 if you have the <memory.h> header file. */ -/* #undef HAVE_MEMORY_H */ - -/* Define to 1 if you have the <obstack.h> header file. */ -/* #undef HAVE_OBSTACK_H */ - -/* Define to 1 if you have the `pipe' function. */ -/* #undef HAVE_PIPE */ - -/* Define to 1 if you have the <readline/history.h> header file. */ -/* #undef HAVE_READLINE_HISTORY_H */ - -/* Define to 1 if you have the <readline/readline.h> header file. */ -/* #undef HAVE_READLINE_READLINE_H */ - -/* Define to 1 if you have the `sched_yield' function. */ -/* #undef HAVE_SCHED_YIELD */ - -/* Define to 1 if you have the `socketpair' function. */ -/* #undef HAVE_SOCKETPAIR */ - -/* Define to 1 if you have the <stdint.h> header file. */ -/* #undef HAVE_STDINT_H */ - -/* Define to 1 if you have the <stdlib.h> header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the <strings.h> header file. */ -/* #undef HAVE_STRINGS_H */ - -/* Define to 1 if you have the <string.h> header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the <sys/soundcard.h> header file. */ -/* #undef HAVE_SYS_SOUNDCARD_H */ - -/* Define to 1 if you have the <sys/stat.h> header file. */ -/* #undef HAVE_SYS_STAT_H */ - -/* Define to 1 if you have the <sys/time.h> header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the <sys/types.h> header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the <sys/uio.h> header file. */ -/* #undef HAVE_SYS_UIO_H */ - -/* Define to 1 if you have the <unistd.h> header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to 1 if you have the `usleep' function. */ -#define HAVE_USLEEP 1 - -/* Define to 1 if you have the <X11/extensions/Xrender.h> header file. */ -/* #undef HAVE_X11_EXTENSIONS_XRENDER_H */ - -/* Define to 1 if you have the <X11/Xft/Xft.h> header file. */ -/* #undef HAVE_X11_XFT_XFT_H */ - -/* Define to 1 if you have the <Xm/MwmUtil.h> header file. */ -/* #undef HAVE_XM_MWMUTIL_H */ - -/* Define if want to output debug info for every memory allocation */ -/* #undef MALLOC_DEBUG */ - -/* Defined if not compiling a sound server */ -/* #define NO_SOUND 1 */ - -/* Name of package */ -#define PACKAGE "freesci" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "" - -/* The size of a `int', as computed by sizeof. */ -#define SIZEOF_INT 4 - -/* The size of a `long', as computed by sizeof. */ -#define SIZEOF_LONG 4 - -/* The size of a `short', as computed by sizeof. */ -#define SIZEOF_SHORT 2 - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Defined if not checking memory allocations */ -/* #undef UNCHECKED_MALLOCS */ - -/* Define if using the dmalloc debugging malloc package */ -/* #undef WITH_DMALLOC */ - -/* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). */ -/* #undef WORDS_BIGENDIAN */ - -/* Define to 1 if the X Window System is missing or not being used. */ -#define X_DISPLAY_MISSING 1 - -/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a - `char[]'. */ -#define YYTEXT_POINTER 1 - -/* Define as `__inline' if that's what the C compiler calls it, or to nothing - if it is not supported. */ -/* #undef inline */ - -#define HAVE_UNLINK 1 -#define HAVE_RMDIR 1 -#define HAVE_GETTIMEOFDAY 1 diff --git a/engines/sci/dc/dc.h b/engines/sci/dc/dc.h deleted file mode 100644 index d80aee0f00..0000000000 --- a/engines/sci/dc/dc.h +++ /dev/null @@ -1,88 +0,0 @@ -/*************************************************************************** - dc.h Copyright (C) 2002,2003 Walter van Niftrik - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> - -***************************************************************************/ - -#ifndef __DC_H -#define __DC_H - -#include <stdio.h> - -/* Functions implemented in dc_save.c */ - -/* Returns a string with the VFS path to the first VMU. -** Parameters: void. -** Returns : Pointer to VFS path string on success, NULL on error. -*/ -char *dc_get_first_vmu(); - -/* Constructs the save game filename as it'll go on the VMU. -** Parameters: (char *) game_name: Game id of the current game. -** (int) nr: The current save game number. -** Returns : Pointer to save game name. -*/ -char *dc_get_cat_name(char *game_name, int nr); - -/* Deletes all save game files from a directory. -** Parameters: (char *) dir: Path of the directory to delete the save game -** files from. -** Returns : void. -*/ -void dc_delete_save_files(char *dir); - -/* Deletes the temporary file which is used for constructing the save files. -** Parameters: void. -** Returns : void. -*/ -int dc_delete_temp_file(); - -/* Retrieves a save game from the first VMU and puts it on the ram disk. -** Parameters: (char *) game_name: Game id of the current game. -** (int) nr: The number of the save game to retrieve. -** Returns : 0 on success, -1 on error. -*/ -int dc_retrieve_savegame(char *game_name, int nr); - -/* Stores a save game from the ram disk on the first VMU. -** Parameters: (char *) game_name: Game id of the current game. -** (char *) desc: Description of the save game. -** (int) nr: The number of the save game to store. -** Returns : 0 on success, -1 on error. -*/ -int dc_store_savegame(char *game_name, char *desc, int nr); - -/* Retrieves the mirrored files from the first VMU to the ram disk. -** Parameters: (char *) game_name: Game id of the current game. -** Returns : 0 on success, -1 on error. -*/ -int dc_retrieve_mirrored(char *game_name); - -/* Stores the mirrored files from the ram disk on the first VMU. -** Parameters: (char *) game_name: Game id of the current game. -** Returns : 0 on success, -1 on error. -*/ -int dc_store_mirrored(char *game_name); - -#endif /* __DC_H */ diff --git a/engines/sci/dc/dc_save.c b/engines/sci/dc/dc_save.c deleted file mode 100644 index 6982c5e39c..0000000000 --- a/engines/sci/dc/dc_save.c +++ /dev/null @@ -1,548 +0,0 @@ -/*************************************************************************** - dc_save.c Copyright (C) 2003 Walter van Niftrik - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> - -***************************************************************************/ - -#include <beos/fnmatch.h> -#include <stdio.h> -#include <zlib/zlib.h> -#include <sci_memory.h> -#include <dc/vmu_pkg.h> - -#define DC_TEMP_FILE "/ram/freesci.tmp" - -/* The file header that is put before each file during the concatenation */ -struct file_hdr_t { - char filename[32]; - int filesize; -}; - -int dc_delete_temp_file() { - if (fs_unlink(DC_TEMP_FILE)) { - sciprintf("%s, L%d: fs_unlink(\"" DC_TEMP_FILE "\") failed!\n", __FILE__, __LINE__); - return -1; - } - return 0; -} - -static int dc_cat_write(gzFile outf, char *infname) -/* Adds a fileheader and a file's data to a compressed file at the current -** file position. -** Parameters: (gzFile) outf: The compressed file to write to. -** (char *) infname: The path and name of the file to add. -** Returns : 0 on success, -1 on error. -*/ -{ - file_t inf; - char *buf, *name; - struct file_hdr_t file_hdr; - int rd; - - /* Determine file name */ - name = strrchr(infname, '/'); - if (name) name++; - else name = infname; - - if (strlen(name) > 31) { - sciprintf("%s, L%d: Filename `%s' too long!\n", __FILE__, __LINE__, name); - return -1; - } - - if (!(inf = fs_open(infname, O_RDONLY))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_RDONLY) failed!\n", __FILE__, __LINE__, infname); - return -1; - } - - strcpy(file_hdr.filename, name); - file_hdr.filesize = fs_total(inf); - - if (gzwrite(outf, &file_hdr, sizeof(struct file_hdr_t)) < sizeof(struct file_hdr_t)) { - sciprintf("%s, L%d: gzwrite() failed!\n", __FILE__, __LINE__); - fs_close(inf); - return -1; - } - - buf = sci_malloc(1024); - - while ((rd = fs_read(inf, buf, 1024)) > 0) { - if (!(gzwrite(outf, buf, rd))) { - sciprintf("%s, L%d: gzwrite() failed!\n", __FILE__, __LINE__); - fs_close(inf); - sci_free(buf); - return -1; - } - } - - if (rd == -1) { - sciprintf("%s, L%d: fs_read() failed!\n", __FILE__, __LINE__); - fs_close(inf); - sci_free(buf); - return -1; - } - - fs_close(inf); - sci_free(buf); - - return 0; -} - -static int dc_cat_read(gzFile inf, char *outfdir) -/* Extracts a file from a concatenated compressed file. The current file -** position must point to a file header. -** Parameters: (gzFile) inf: The compressed file to read from. -** (char *) outfdir: The directory path where the file should be -** written. -** Returns : 0 on success, -1 on error. -*/ -{ - file_t outf; - char *buf, *outfname; - struct file_hdr_t file_hdr; - int rd; - - if (gzread(inf, &file_hdr, sizeof(struct file_hdr_t)) < sizeof(struct file_hdr_t)) { - sciprintf("%s, L%d: gzread() failed!\n", __FILE__, __LINE__); - return -1; - } - - /* Construct output filename */ - outfname = sci_malloc(strlen(file_hdr.filename)+strlen(outfdir)+2); - strcpy(outfname, outfdir); - strcat(outfname, "/"); - strcat(outfname, file_hdr.filename); - - if (!(outf = fs_open(outfname, O_WRONLY | O_TRUNC))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_WRONLY | O_TRUNC) failed!\n", __FILE__, __LINE__, outfname); - sci_free(outfname); - return -1; - } - - sci_free(outfname); - buf = sci_malloc(1024); - - while (file_hdr.filesize > 0) { - rd = file_hdr.filesize; - if (rd > 1024) rd = 1024; - if (gzread(inf, buf, rd) < rd) { - sciprintf("%s, L%d: gzread() failed!\n", __FILE__, __LINE__); - fs_close(outf); - sci_free(buf); - return -1; - } - if (!(fs_write(outf, buf, rd))) { - sciprintf("%s, L%d: fs_write() failed!\n", __FILE__, __LINE__); - fs_close(outf); - sci_free(buf); - return -1; - } - file_hdr.filesize -= rd; - } - - fs_close(outf); - sci_free(buf); - - return 0; -} - -static int dc_is_save_file(char *fn) -/* Determines whether a filename is one of FreeSCI's filenames that are used -** for save ganes. -** Parameters: (char *) fn: The filename to consider. -** Returns : 1 when the filename is used for save games, 0 otherwise. -*/ -{ - return !fnmatch("state", fn, 0) || !fnmatch("heap", fn, 0) || - !fnmatch("hunk*", fn, 0) || !fnmatch("song.*", fn, 0) || - !fnmatch("sound", fn, 0) || !fnmatch("*.id", fn, 0); -} - -static int dc_package(char *infname, char *outdir, char *outname, char* desc) -/* Packages a file with a VMU header and stores it. -** Parameters: (char *) infname: The filename of the file to package. -** (char *) outdir: The directory path to write the packaged file. -** (char *) outname: The filename the packaged file should get. -** (char *) desc: The description of the file to put in the -** header. -** Returns : 0 on success, -1 on error. -*/ -{ - file_t inf, outf; - uint8 *data, *pkg_out; - vmu_pkg_t pkg; - int pkg_size; - sci_dir_t dirent; - char *olddir, *outfname; - - if (!(inf = fs_open(infname, O_RDONLY))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_RDONLY) failed!\n", __FILE__, __LINE__, infname); - return -1; - } - if (!(data = fs_mmap(inf))) { - sciprintf("%s, L%d: fs_mmap() failed!\n", __FILE__, __LINE__); - fs_close(inf); - return -1; - } - strcpy(pkg.desc_short, "FreeSCI"); - strncpy(pkg.desc_long, desc, 31); - pkg.desc_long[31] = 0; - strcpy(pkg.app_id, "FreeSCI"); - pkg.icon_cnt = 0; - pkg.icon_anim_speed = 0; - pkg.eyecatch_type = VMUPKG_EC_NONE; - pkg.data = data; - pkg.data_len = fs_total(inf); - if (vmu_pkg_build(&pkg, &pkg_out, &pkg_size) < 0) { - sciprintf("%s, L%d: vmu_pkg_build() failed!\n", __FILE__, __LINE__); - fs_close(inf); - return -1; - } - - outfname = sci_malloc(strlen(outdir) + strlen(outname) + 2); - strcpy(outfname, outdir); - strcat(outfname, "/"); - strcat(outfname, outname); - - if (!(outf = fs_open(outfname, O_WRONLY | O_TRUNC))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_WRONLY | O_TRUNC) failed!\n", __FILE__, __LINE__, outfname); - fs_close(inf); - free(outfname); - return -1; - } - free(outfname); - if (fs_write(outf, pkg_out, pkg_size) < pkg_size) { - sciprintf("%s, L%d: fs_write() failed!\n", __FILE__, __LINE__); - fs_close(inf); - fs_close(outf); - return -1; - } - fs_close(inf); - fs_close(outf); - - /* Check whether the save is actually written */ - - olddir = strdup(fs_getwd()); - fs_chdir(outdir); - sci_init_dir(&dirent); - if (!sci_find_first(&dirent, outname)) { - sciprintf("%s, L%d: Write to VMU failed!\n", __FILE__, __LINE__); - sci_finish_find(&dirent); - fs_chdir(olddir); - sci_free(olddir); - return -1; - } - sci_finish_find(&dirent); - fs_chdir(olddir); - sci_free(olddir); - return 0; -} - -static int dc_depackage(char *infname, char *outfname) -/* Depackages a file with a VMU header and stores it. -** Parameters: (char *) infname: The full path and filename of the file to -** depackage. -** (char *) outfname: The full path and filename of where to -** write the depackaged file. -** Returns : 0 on success, -1 on error. -*/ -{ - file_t inf, outf; - uint8 *data; - vmu_pkg_t pkg; - if (!(inf = fs_open(infname, O_RDONLY))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_RDONLY) failed!\n", __FILE__, __LINE__, infname); - return -1; - } - if (!(data = fs_mmap(inf))) { - sciprintf("%s, L%d: fs_mmap() failed!\n", __FILE__, __LINE__); - fs_close(inf); - return -1; - } - if (vmu_pkg_parse(data, &pkg) == -1) { - sciprintf("%s, L%d: vmu_pkg_parse() failed!\n", __FILE__, __LINE__); - fs_close(inf); - return -1; - } - if (!(outf = fs_open(outfname, O_WRONLY | O_TRUNC))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_WRONLY | O_TRUNC) failed!\n", __FILE__, __LINE__, outfname); - fs_close(inf); - return -1; - } - if (fs_write(outf, pkg.data, pkg.data_len) < pkg.data_len) { - sciprintf("%s, L%d: fs_write() failed!\n", __FILE__, __LINE__); - fs_close(inf); - fs_close(outf); - return -1; - } - fs_close(inf); - fs_close(outf); - return 0; -} - -static int store_files(char *src_dir, char *tar_dir, char *tar_name, char *desc, int mode) -/* Concatenates files from a directory and creates a package that can be put -** on a VMU. -** Parameters: (char *) src_dir: The full path of the directory that contains -** the files that should be stored. -** (char *) tar_dir: The full path of the directory where the -** resulting file should be placed. -** (char *) tar_name: The file name that the resulting file should -** get. -** (char *) desc: The description to use for the VMU header. -** (int) mode: 0: all files will be stored; 1: only FreeSCI save -** files will be stored. -** Returns : 0 on success, -1 on error. -*/ -{ - gzFile outf; - file_t d; - dirent_t *entry; - - if (!(d = fs_open(src_dir, O_RDONLY | O_DIR))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_RDONLY | O_DIR) failed!\n", __FILE__, __LINE__, src_dir); - return -1; - } - - if (!(outf = gzopen(DC_TEMP_FILE, "w"))) { - sciprintf("%s, L%d: gzopen(\"" DC_TEMP_FILE "\", \"w\") failed!\n", __FILE__, __LINE__); - return -1; - } - - while ((entry = fs_readdir(d))) { - if ((mode == 1) && !dc_is_save_file(entry->name)) continue; - char *fn = sci_malloc(strlen(src_dir)+strlen(entry->name)+2); - strcpy(fn, src_dir); - strcat(fn, "/"); - strcat(fn, entry->name); - if (dc_cat_write(outf, fn)) { - sciprintf("%s, L%d: dc_cat_write() failed!\n", __FILE__, __LINE__); - sci_free(fn); - fs_close(d); - gzclose(outf); - dc_delete_temp_file(); - return -1; - } - sci_free(fn); - } - - fs_close(d); - - if (gzclose(outf) < 0) { - sciprintf("%s, L%d: gzclose() failed!\n", __FILE__, __LINE__); - return -1; - } - - if (dc_package(DC_TEMP_FILE, tar_dir, tar_name, desc)) { - sciprintf("%s, L%d: dc_package(\"" DC_TEMP_FILE "\", \"%s\", \"%s\", \"%s\") failed!\n", __FILE__, __LINE__, tar_dir, tar_name, desc); - return -1; - } - - return dc_delete_temp_file(); -} - -static int retrieve_files(char *fname, char *dir) -/* Extracts all files from a packaged concatenated file. -** Parameters: (char *) fname: The full path and filename of the concatenated -** packaged file. -** (char *) dir: The full path of the directory where the -** resulting files should be placed. -** Returns : 0 on success, -1 on error. -*/ -{ - gzFile inf; - if (dc_depackage(fname, DC_TEMP_FILE)) { - sciprintf("%s, L%d: dc_depackage(\"%s\", \"" DC_TEMP_FILE "\") failed!\n", __FILE__, __LINE__, fname); - return -1; - } - if (!(inf = gzopen(DC_TEMP_FILE, "r"))) { - sciprintf("%s, L%d: gzopen(\"" DC_TEMP_FILE "\", \"r\") failed!\n", __FILE__, __LINE__); - return -1; - } - while(!gzeof(inf)) dc_cat_read(inf, dir); - if (gzclose(inf) < 0) { - sciprintf("%s, L%d: gzclose() failed!\n", __FILE__, __LINE__); - return -1; - } - return dc_delete_temp_file(); -} - -void dc_delete_save_files(char *dir) { - file_t d; - dirent_t *entry; - - if (!(d = fs_open(dir, O_RDONLY | O_DIR))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_RDONLY | O_DIR) failed!\n", __FILE__, __LINE__, dir); - return; - } - - while ((entry = fs_readdir(d))) { - char *fn = sci_malloc(strlen(dir)+strlen(entry->name)+2); - strcpy(fn, dir); - strcat(fn, "/"); - strcat(fn, entry->name); - if ((dc_is_save_file(entry->name)) && (fs_unlink(fn) < 0)) - sciprintf("%s, L%d: fs_unlink(\"%s\") failed!\n", __FILE__, __LINE__, fn); - sci_free(fn); - } - - fs_close(d); -} - -char *dc_get_cat_name(char *game_name, int nr) { - char suffices[] = "0123456789abcdefghijklmnopqrstuvwxyz"; - char *save_name = sci_malloc(strlen(game_name) + 3); - strcpy(save_name, game_name); - save_name[strlen(game_name)] = '.'; - save_name[strlen(game_name) + 1] = suffices[nr]; - save_name[strlen(game_name) + 2] = 0; - return save_name; -} - -char *dc_get_first_vmu() { - sci_dir_t dirent; - char *olddir = strdup(fs_getwd()); - char *vmu; - char *retval = NULL; - fs_chdir("/vmu"); - sci_init_dir(&dirent); - vmu = sci_find_first(&dirent, "*"); - if (vmu) { - retval = sci_malloc(5 + strlen(vmu) + 1); - strcpy(retval, "/vmu/"); - strcat(retval, vmu); - } - sci_finish_find(&dirent); - fs_chdir(olddir); - sci_free(olddir); - return retval; -} - -int dc_retrieve_savegame(char *game_name, int nr) { - int retval = 0; - char *name, *fname, *vmu; - - dc_delete_save_files("/ram"); - - if (!(vmu = dc_get_first_vmu())) { - sciprintf("%s, L%d: No VMU found!\n", __FILE__, __LINE__); - return -1; - } - name = dc_get_cat_name(game_name, nr); - fname = sci_malloc(strlen(vmu) + strlen(name) + 2); - - strcpy(fname, vmu); - strcat(fname, "/"); - strcat(fname, name); - sci_free(name); - sci_free(vmu); - if (retrieve_files(fname, "/ram") < 0) { - sciprintf("%s, L%d: retrieve_files(\"%s\", \"/ram\") failed!\n", __FILE__, __LINE__, fname); - retval = -1; - } - sci_free(fname); - return retval; -} - -int dc_store_savegame(char *game_name, char *desc, int nr) { - char *vmu, *name; - int retval = 0; - - if (!(vmu = dc_get_first_vmu())) { - sciprintf("%s, L%d: No VMU found!\n", __FILE__, __LINE__); - return -1; - } - - name = dc_get_cat_name(game_name, nr); - - if (store_files("/ram", vmu, name, desc, 1) < 0) { - sciprintf("%s, L%d: store_files(\"/ram\", \"%s\", \"%s\", \"%s\") failed!\n", __FILE__, __LINE__, vmu, name, desc); - retval = -1; - } - - dc_delete_save_files("/ram"); - - sci_free(name); - sci_free(vmu); - - return retval; -} - -int dc_retrieve_mirrored(char *game_name) { - int retval = 0; - char *vmu, *fname; - - if (!(vmu = dc_get_first_vmu())) { - sciprintf("%s, L%d: No VMU found!\n", __FILE__, __LINE__); - return -1; - } - - fname = sci_malloc(strlen(vmu) + strlen(game_name) + 2); - - strcpy(fname, vmu); - strcat(fname, "/"); - strcat(fname, game_name); - sci_free(vmu); - if (retrieve_files(fname, "/ram") < 0) { - sciprintf("%s, L%d: retrieve_files(\"%s\", \"/ram\") failed!\n", __FILE__, __LINE__, fname); - retval = -1; - } - sci_free(fname); - return retval; -} - -int dc_store_mirrored(char *game_name) { - int retval = 0; - char *vmu; - sci_dir_t dirent; - char *olddir = strdup(fs_getwd()); - - fs_chdir("/ram"); - - sci_init_dir(&dirent); - if (!sci_find_first(&dirent, "*")) { - sciprintf("%s, L%d: No mirrored files found!\n", __FILE__, __LINE__); - sci_finish_find(&dirent); - fs_chdir(olddir); - sci_free(olddir); - return 0; - } - - sci_finish_find(&dirent); - fs_chdir(olddir); - sci_free(olddir); - - if (!(vmu = dc_get_first_vmu())) { - sciprintf("%s, L%d: No VMU found!\n", __FILE__, __LINE__); - return -1; - } - - if (store_files("/ram", vmu, game_name, "Configuration", 0) < 0) { - sciprintf("%s, L%d: store_files(\"/ram\", \"%s\", \"%s\", \"Configuration\") failed!\n", __FILE__, __LINE__, vmu, game_name); - retval = -1; - } - - sci_free(vmu); - - return retval; -} diff --git a/engines/sci/dc/gamemenu.c b/engines/sci/dc/gamemenu.c deleted file mode 100644 index ca96c6804f..0000000000 --- a/engines/sci/dc/gamemenu.c +++ /dev/null @@ -1,702 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* Modified by Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> */ - -#include <string.h> -#include <resource.h> -#include <sci_memory.h> -#include "gp.h" -#include "options.h" -#include "dc.h" - -#define info_y 120.0f - -/* Game entries */ -typedef struct { - char fn[256]; /* Game name */ - char dir[256]; /* Full directory path */ -} game; - -char *freq_select[] = {"50Hz", "60Hz", "Test"}; - -/* Used to count the number of queued scenes. This is done to make sure that the -** image on the screen is current before calling a function which will block -** further scene rendering for a significant amount of time. -*/ -static int load_queued = 0; -/* Holds pointers to text strings describing the selected value of each option */ -static char* options_str[NUM_DC_OPTIONS]; -/* The index of the currently selected value of each option */ -static char options_nr[NUM_DC_OPTIONS]; -/* Array of games that were found */ -static game games[200]; -/* Number of games that were found */ -static int num_games = 0; -/* games array index of the currently selected game */ -static int sel_game = 0; -/* games array index of the game which is currently displayed first on the -** screen. -*/ -static int top_game = 0; -/* Number of options */ -static int num_options; -/* options_nr array index of the currently selected option */ -static int sel_option = 0; -/* options_nr array index of the game which is currently displayed first on the -** screen. -*/ -static int top_option = 0; -/* frequency selector index of the currently selected option */ -static int sel_freq = 1; -/* Number of frequency selector options. Always 3. */ -static int num_freq = 3; -/* freq_select array index of the option which is currently displayed first on -** the screen. Always 0. -*/ -static int top_freq = 0; - -/* Pointers to properties of the currently displayed data, either games list or -** options list. -*/ -static int *num_entries; -static int *selected; -static int *top; - -/* Counts frames. Used for delay purposes in the controller code */ -static int framecnt = 0; -/* Controls the color changes of the highlighting bar */ -static float throb = 0.2f, dthrob = 0.01f; - -/* Current state of menu: -** 0: Drive lid open. -** 1: Searching the CD for SCI games -** 2: Displaying game list -** 3: Running selected game -** 4: Displaying option list -** 5: Saving options to VMU -** 6: Waiting for CD lid to open -** 7: Waiting for Dreamcast to finish scanning the disc -** 8: Drive empty. -** 9: 50Hz/60Hz selector for PAL console -** 10: Testing 60Hz mode for 5 seconds -** -** State changes: 0->{7}, 1->{2,6}, 2->{0,3,4}, 4->{2,5}, 5->{2}, 6->{0} -** 7->{0,1,8}, 8->{0}, 9->{0,1,10}, 10->{9} -*/ -static int menu_state; - -/* Flag which indicates whether the options have been altered */ -static int save_flag = 0; - -static void menu_restart() -{ - int status; - - cdrom_get_status(&status, NULL); - - if ((status == CD_STATUS_PAUSED) || (status == CD_STATUS_STANDBY)) - menu_state = 1; - else - menu_state = 0; - - num_entries = &num_games; - top = &top_game; - selected = &sel_game; -} - -void init_menu_state() -{ - /* On PAL consoles without a VGA box, display the 50Hz/60Hz selector */ - if ((flashrom_get_region() == FLASHROM_REGION_EUROPE) && - vid_check_cable()) { - num_entries = &num_freq; - top = &top_freq; - selected = &sel_freq; - menu_state = 9; - return; - } - else menu_restart(); -} - -static int load_options(char *infname, char *options) -/* Loads the options from an option file and stores them in an array. -** Parameters: (char *) infname: Full path and filename of the option file. -** (char *) options: Pointer to the option array. -** Returns : 0 on success, -1 on error. -*/ -{ - file_t inf; - uint8 *data; - vmu_pkg_t pkg; - int j; - if (!(inf = fs_open(infname, O_RDONLY))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_RDONLY) failed!\n", __FILE__, __LINE__, infname); - return -1; - } - if (!(data = fs_mmap(inf))) { - sciprintf("%s, L%d: fs_mmap() failed!\n", __FILE__, __LINE__); - fs_close(inf); - return -1; - } - if (vmu_pkg_parse(data, &pkg) == -1) { - sciprintf("%s, L%d: vmu_pkg_parse() failed!\n", __FILE__, __LINE__); - fs_close(inf); - return -1; - } - if ((pkg.data_len != NUM_DC_OPTIONS+2) || - (pkg.data[0] != DC_OPTIONS_TAG_MAJOR) || - (pkg.data[1] != DC_OPTIONS_TAG_MINOR)) { - sciprintf("%s, L%d: Option file version doesn't match!\n", - __FILE__, __LINE__); - fs_close(inf); - return -1; - } - for (j = 0; j < NUM_DC_OPTIONS; j++) - options[j] = pkg.data[j+2]; - - fs_close(inf); - return 0; -} - -static int save_options(char *outfile, char *options) -/* Saves the options from an array to an option file. -** Parameters: (char *) outfname: Full path and filename of the option file. -** (char *) options: Pointer to the option array. -** Returns : 0 on success, -1 on error. -*/ -{ - file_t outf; - uint8 *pkg_out; - vmu_pkg_t pkg; - int pkg_size; - uint8 data[NUM_DC_OPTIONS+2]; - - strcpy(pkg.desc_short, "FreeSCI"); - strcpy(pkg.desc_long, "Configuration"); - strcpy(pkg.app_id, "FreeSCI"); - data[0] = DC_OPTIONS_TAG_MAJOR; - data[1] = DC_OPTIONS_TAG_MINOR; - memcpy(data+2, options_nr, NUM_DC_OPTIONS); - pkg.icon_cnt = 0; - pkg.icon_anim_speed = 0; - pkg.eyecatch_type = VMUPKG_EC_NONE; - pkg.data = data; - pkg.data_len = NUM_DC_OPTIONS+2; - if (vmu_pkg_build(&pkg, &pkg_out, &pkg_size) < 0) { - sciprintf("%s, L%d: vmu_pkg_build() failed!\n", __FILE__, __LINE__); - return -1; - } - if (!(outf = fs_open(outfile, O_WRONLY | O_TRUNC))) { - sciprintf("%s, L%d: fs_open(\"%s\", O_WRONLY | O_TRUNC) failed!\n", __FILE__, __LINE__, outfile); - return -1; - } - if (fs_write(outf, pkg_out, pkg_size) < pkg_size) { - sciprintf("%s, L%d: fs_write() failed!\n", __FILE__, __LINE__); - fs_close(outf); - return -1; - } - fs_close(outf); - return 0; -} - -void load_option_list() { - int i; - char *vmu; - - /* Load defaults */ - for (i = 0; i < NUM_DC_OPTIONS; i++) - options_nr[i] = 0; - - /* Overwrite with data from option file */ - if ((vmu = dc_get_first_vmu())) { - char *fn = sci_malloc(strlen(vmu) + 9); - strcpy(fn, vmu); - strcat(fn, "/freesci"); - if (load_options(fn, &options_nr[0])) - sciprintf("%s, L%d: Loading options from VMU failed!\n", __FILE__, __LINE__); - sci_free(fn); - sci_free(vmu); - } - else sciprintf("%s, L%d: No VMU found!\n", __FILE__, __LINE__); - - /* Calculate strings */ - for (i = 0; i < NUM_DC_OPTIONS; i++) { - int j; - options_str[i] = dc_options[i].values; - for (j = 0; j < options_nr[i]; j++) - options_str[i] += strlen(options_str[i]) + 1; - } - - num_options = NUM_DC_OPTIONS; -} - -static void load_game_list(char *dir) -/* Scans a directory and it's subdirectories for SCI games and stores the name -** and directory of each game. -** Parameters: (char *) dir: Path of the directory tree to scan. -** Returns : void. -*/ -{ - file_t d; - - d = fs_open(dir, O_RDONLY | O_DIR); - if (!d) return; - { - dirent_t *de; - while ((de = fs_readdir(d)) && num_games < 200) { - if (!stricmp(de->name, "resource.map")) { - strncpy(games[num_games].fn, dir, 256); - strncpy(games[num_games].dir, dir, 256); - num_games++; - } - else if (de->size < 0) { - char *new_dir; - new_dir = malloc(strlen(dir)+strlen(de->name)+2); - strcpy(new_dir, dir); - strcat(new_dir, "/"); - strcat(new_dir, de->name); - load_game_list(new_dir); - free(new_dir); - } - } - } - fs_close(d); -} - -static void draw_options() -/* Draws the options and their current values on the screen. -** Parameters: void. -** Returns : void. -*/ -{ - float y = 92.0f + 28.0f; - int i, esel; - - draw_poly_strf_ctr(y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, "Options"); - - y += 2*24.0f; - - /* Draw all the options */ - for (i=0; i<7 && (top_option+i)<NUM_DC_OPTIONS; i++) { - draw_poly_strf(32.0f, y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "%-20s %s", dc_options[top_option+i].name, - options_str[top_option+i]); - y += 24.0f; - } - - /* Put a highlight bar under one of them */ - esel = (sel_option - top_option); - draw_poly_box(31.0f, 92.0f+28.0f+2*24.0f+esel*24.0f - 1.0f, - 609.0f, 92.0f+28.0f+2*24.0f+esel*24.0f + 25.0f, 95.0f, - throb, throb, 0.2f, 0.2f, throb, throb, 0.2f, 0.2f); -} - -static void draw_listing() -/* Draws the game list on the screen. -** Parameters: void. -** Returns : void. -*/ -{ - float y = 92.0 + 28.0f; - int i, esel; - - draw_poly_strf_ctr(y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, "Games"); - - y += 2*24.0f; - - /* Draw all the game titles */ - for (i=0; i<7 && (top_game+i)<num_games; i++) { - draw_poly_strf(32.0f, y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - games[top_game+i].fn); - y += 24.0f; - } - - /* Put a highlight bar under one of them */ - esel = (sel_game - top_game); - draw_poly_box(31.0f, 92.0f+28.0f+2*24.0f+esel*24.0f - 1.0f, - 609.0f, 92.0f+28.0f+2*24.0f+esel*24.0f + 25.0f, 95.0f, - throb, throb, 0.2f, 0.2f, throb, throb, 0.2f, 0.2f); -} - -static void draw_selector() -/* Draws the 50Hz/60Hz selector on the screen. -** Parameters: void. -** Returns : void. -*/ -{ - float y = 92.0 + 28.0f; - int i; - - draw_poly_strf_ctr(y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, "Display Mode"); - - y += 48.0f; - - /* Draw all frequency options */ - for (i=0; i<num_freq; i++) { - draw_poly_strf_ctr(y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - freq_select[i]); - y += 24.0f; - } - - /* Put a highlight bar under one of them */ - draw_poly_box(31.0f, 92.0f+28.0f+48.0f+sel_freq*24.0f - 1.0f, - 609.0f, 92.0f+28.0f+48.0f+sel_freq*24.0f + 25.0f, 95.0f, - throb, throb, 0.2f, 0.2f, throb, throb, 0.2f, 0.2f); -} - -static void check_controller() -/* Checks controller input and changes menu state accordingly. -** Parameters: void. -** Returns : void. -*/ -{ - static int up_moved = 0, down_moved = 0, a_pressed = 0, b_pressed = 0; - static uint8 mcont = 0; - cont_cond_t cond; - - if (!mcont) { - mcont = maple_first_controller(); - if (!mcont) { return; } - } - if (cont_get_cond(mcont, &cond)) { return; } - - if (!(cond.buttons & CONT_DPAD_UP)) { - if ((framecnt - up_moved) > 10) { - if (*selected > 0) { - (*selected)--; - if (*selected < *top) { - *top = *selected; - } - } - up_moved = framecnt; - } - } - if (!(cond.buttons & CONT_DPAD_DOWN)) { - if ((framecnt - down_moved) > 10) { - if (*selected < (*num_entries - 1)) { - (*selected)++; - if (*selected >= (*top+7)) { - (*top)++; - } - } - down_moved = framecnt; - } - } - if (cond.ltrig > 0) { - if ((framecnt - up_moved) > 10) { - *selected -= 7; - - if (*selected < 0) *selected = 0; - if (*selected < *top) *top = *selected; - up_moved = framecnt; - } - } - if (cond.rtrig > 0) { - if ((framecnt - down_moved) > 10) { - *selected += 7; - if (*selected > (*num_entries - 1)) - *selected = *num_entries - 1; - if (*selected >= (*top+7)) - *top = *selected; - down_moved = framecnt; - } - } - - if (!(cond.buttons & CONT_A)) { - if ((framecnt - a_pressed) > 5) - { - if (menu_state == 2) - { - fs_chdir(games[*selected].dir); - menu_state = 3; - } - else if (menu_state == 4) - { - options_str[sel_option] += strlen(options_str[sel_option]) + 1; - if (*options_str[sel_option] == '\0') { - options_str[sel_option] = dc_options[sel_option].values; - options_nr[sel_option] = 0; - } - else options_nr[sel_option]++; - save_flag = 1; - } - else if (menu_state == 9) - { - if (sel_freq == 0) menu_restart(); - else if (sel_freq == 1) { - vid_set_mode(DM_640x480, PM_RGB565); - menu_restart(); - } - else if (sel_freq == 2) { - menu_state = 10; - } - } - } - a_pressed = framecnt; - } - - if (!(cond.buttons & CONT_B)) { - if ((framecnt - b_pressed) > 5) { - if (menu_state == 4) { - num_entries = &num_games; - top = &top_game; - selected = &sel_game; - if (save_flag) - menu_state = 5; - else menu_state = 2; - } - else if (menu_state != 9) { - num_entries = &num_options; - top = &top_option; - selected = &sel_option; - menu_state = 4; - } - } - b_pressed = framecnt; - } - return; -} - -void render_button_info() { - draw_poly_box(20.0f, 440.0f-96.0f+4, 640.0f-20.0f, 440.0f, 90.0, - 0.3f, 0.2f, 0.5f, 0.0f, 0.5f, 0.1f, 0.8f, 0.2f); - if ((menu_state != 4) && (menu_state != 5)) { - draw_poly_strf(30.0f,440.0f-96.0f+6+10.0f,100.0f,1.0f,1.0f,1.0f,1.0f,"D-PAD : Select game L : Page up"); - draw_poly_strf(30.0f,440.0f-96.0f+6+24.0f+10.0f,100.0f,1.0f,1.0f,1.0f,1.0f," A : Start game R : Page down"); - draw_poly_strf(30.0f,440.0f-96.0f+6+48.0f+10.0f,100.0f,1.0f,1.0f,1.0f,1.0f," B : Options"); - } - else { - draw_poly_strf(30.0f,440.0f-96.0f+6+10.0f,100.0f,1.0f,1.0f,1.0f,1.0f,"D-PAD : Select option L : Page up"); - draw_poly_strf(30.0f,440.0f-96.0f+6+24.0f+10.0f,100.0f,1.0f,1.0f,1.0f,1.0f," A : Change option R : Page down"); - draw_poly_strf(30.0f,440.0f-96.0f+6+48.0f+10.0f,100.0f,1.0f,1.0f,1.0f,1.0f," B : Back"); - } -} - -void render_scroll(float speed, float y, float z, float a, float r, float g, float b, char *s) -/* Renders a scrolling text. -** Parameters: void. -** Returns : void. -*/ -{ - static float coord = 640.0f; - draw_poly_strf(coord, y, z, a , r, g ,b, s); - coord -= speed; - if (coord < strlen(s)*-12.0f) - coord = 640.0f; -} - -int game_menu_render() { - /* Draw a background box */ - draw_poly_box(30.0f, 80.0f+28.0f, 610.0f, 440.0f-96.0f, 90.0f, - 0.2f, 0.8f, 0.5f, 0.0f, 0.2f, 0.8f, 0.8f, 0.2f); - - if (menu_state == 0) { - int status; - draw_poly_strf(32.0f, info_y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "The drive lid is open."); - draw_poly_strf(32.0f, info_y+24.0f, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Please insert a game cd."); - cdrom_get_status(&status, NULL); - if (status == CD_STATUS_BUSY) menu_state = 7; - return 0; - } - - else if (menu_state == 1) { - if (load_queued < 4) { - draw_poly_strf(32.0f, info_y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Searching cd for SCI games..."); - load_queued++; - return 0; - } else { - load_game_list("/cd"); - load_queued = 0; - if (num_games == 0) menu_state = 6; - else menu_state = 2; - return 0; - } - } - - else if (menu_state == 3) { - draw_poly_strf(32.0f, info_y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Starting game, please wait..."); - if (load_queued < 4) { - load_queued++; - return 0; - } else { - return 1; - } - } - - else if (menu_state == 4) { - /* Draw option menu */ - draw_options(); - } - - else if (menu_state == 2) { - int status; - - cdrom_get_status(&status, NULL); - if (status == CD_STATUS_OPEN) { - *num_entries = 0; - *selected = 0; - menu_state = 0; - return 0; - } - - /* Draw the game listing */ - draw_listing(); - } - - else if (menu_state == 5) { - if (load_queued < 4) { - draw_poly_strf(32.0f, info_y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Saving options, please wait..."); - load_queued++; - } - else { - char *vmu; - if ((vmu = dc_get_first_vmu())) { - char *fn = sci_malloc(strlen(vmu) + 9); - strcpy(fn, vmu); - strcat(fn, "/freesci"); - if (save_options(fn, &options_nr[0])) - sciprintf("%s, L%d: Saving options to VMU failed!\n", __FILE__, __LINE__); - sci_free(fn); - sci_free(vmu); - } - else sciprintf("%s, L%d: No VMU found!\n", __FILE__, __LINE__); - save_flag = 0; - load_queued = 0; - menu_state = 2; - } - return 0; - } - - else if (menu_state == 6) { - int status; - draw_poly_strf(32.0f, info_y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "No SCI games found!"); - draw_poly_strf(32.0f, info_y + 24.0f, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Please insert a game cd."); - cdrom_get_status(&status, NULL); - if (status == CD_STATUS_OPEN) menu_state = 0; - return 0; - } - - else if (menu_state == 7) { - int status; - draw_poly_strf(32.0f, info_y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Scanning cd..."); - cdrom_get_status(&status, NULL); - if (status == CD_STATUS_PAUSED) menu_state = 1; - else if (status == CD_STATUS_NO_DISC) menu_state = 8; - else if (status == CD_STATUS_OPEN) menu_state = 0; - return 0; - } - - else if (menu_state == 8) { - int status; - draw_poly_strf(32.0f, info_y, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "The drive is empty!"); - draw_poly_strf(32.0f, info_y + 24.0f, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Please insert a game cd."); - cdrom_get_status(&status, NULL); - if (status == CD_STATUS_OPEN) menu_state = 0; - return 0; - } - else if (menu_state == 9) { - /* Draw frequency selector */ - draw_selector(); - } - else if (menu_state == 10) { - static int cnt = 60*5; - if (cnt == 60*5) vid_set_mode(DM_640x480, PM_RGB565); - if (--cnt) { - draw_poly_strf_ctr(info_y+3*24.0, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "Testing 60Hz Display Mode"); - draw_poly_strf_ctr(info_y+5*24.0f, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "%i", cnt/60+1); - } - else { - vid_set_mode(DM_640x480_PAL_IL, PM_RGB565); - cnt = 60*5; - menu_state = 9; - } - } - - /* Adjust the throbber */ - throb += dthrob; - if (throb < 0.2f || throb > 0.8f) { - dthrob = -dthrob; - throb += dthrob; - } - - /* Check controller input */ - check_controller(); - - framecnt++; - - return 0; -} - -int dc_write_config_file(char *fn) { - FILE *cfile; - if ((cfile = fopen(fn, "w"))) { - fprintf(cfile, "[game]\n"); - fprintf(cfile, "resource_dir = %s\n", games[*selected].dir); - fprintf(cfile, "gfx.dc.render_mode = %s\n", options_nr[0]? "pvr" : "vram"); - fprintf(cfile, "gfx.dc.refresh_rate = %s\n", sel_freq? "60Hz" : "50Hz"); - fprintf(cfile, "pic0_dither_mode = "); - switch (options_nr[1]) { - case 0: - fprintf(cfile, "dither256\n"); - break; - case 1: - fprintf(cfile, "flat\n"); - break; - case 2: - fprintf(cfile, "dither\n"); - } - - if (options_nr[2]) - fprintf(cfile, "pic_antialiasing = simple"); - - if (options_nr[3]) - fprintf(cfile, "version = %s\n", options_str[3]); - - if (options_nr[4]) - fprintf(cfile, "resource_version = %s\n", options_str[4]); - - if (options_nr[5]) - fprintf(cfile, "pic_port_bounds = \"0, 0, 320, 200\"\n"); - - fclose(cfile); - return 0; - } - sciprintf("%s, L%d: fopen(\"%s\", \"w\") failed!\n", __FILE__, __LINE__, fn); - return -1; -} diff --git a/engines/sci/dc/gp.h b/engines/sci/dc/gp.h deleted file mode 100644 index 8734df11fd..0000000000 --- a/engines/sci/dc/gp.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* Modified by Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> */ - -#ifndef __GP_H -#define __GP_H - -#include <kos.h> -#include <math.h> - -/* Floating-point Sin/Cos; 256 angles, -1.0 to 1.0 */ -#define msin(angle) fsin((angle) * 2 * M_PI / 256) -#define mcos(angle) fcos((angle) * 2 * M_PI / 256) - -/* bkg.c */ -void bkg_setup(); -void bkg_render(); - -/* texture.c */ -extern pvr_ptr_t util_texture; -extern pvr_poly_hdr_t util_txr_hdr; -void setup_util_texture(); - -/* 3dutils.c */ -void rotate(int zang, int xang, int yang, float *x, float *y, float *z); -void draw_poly_mouse(int ptrx, int ptry, float alpha); -void draw_poly_char(float x1, float y1, float z1, float a, float r, float g, float b, int c); -void draw_poly_strf(float x1, float y1, float z1, float a, float r, float g, float b, char *fmt, ...); -void draw_poly_strf_ctr(float y1, float z1, float a, float r, float g, float b, char *fmt, ...); -void draw_poly_box(float x1, float y1, float x2, float y2, float z, - float a1, float r1, float g1, float b1, - float a2, float r2, float g2, float b2); - -/* gamemenu.c */ -/* Renders the interface and handles controller input. -** Parameters: void. -** Returns : 1 when the user has chosen a game, 0 otherwise. -*/ -int game_menu_render(); - -/* Renders the currently applicable button info. -** Parameters: void. -** Returns : void. -*/ -void render_button_info(); - -/* Fills the option list with the defaults, and then overwrites -** them (possible partially) when an option file is found. -** Parameters: void. -** Returns : void. -*/ -void load_option_list(); - -/* Saves the currently set options to a file on the first VMU. -** Parameters: void. -** Returns : 0 on success, -1 on error. -*/ -int dc_write_config_file(); - -/* Initializes the menu state based on the current cdrom drive status. -** Parameters: void. -** Returns : void. -*/ -void init_menu_state(); - -#endif /* __GP_H */ diff --git a/engines/sci/dc/keyboard.c b/engines/sci/dc/keyboard.c deleted file mode 100644 index deb346c4a7..0000000000 --- a/engines/sci/dc/keyboard.c +++ /dev/null @@ -1,5077 +0,0 @@ -/*************************************************************************** - keyboard.c Copyright (C) 2004 Walter van Niftrik - 2004 Ismail Khatib - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> - -***************************************************************************/ - -#include <sys/types.h> -#include <gfx_tools.h> -#include "keyboard.h" - -#define CTRL (1<<0) -#define ALT (1<<1) - -/* RGB565 colour used to mark keys. */ -#define MARK_COLOUR 0xff00 - -/* Pointer to buffer where keyboard is to be drawn. */ -static guint16 *ptr; -/* Buffer line pitch in bytes. */ -static int pitch; - -/* Current position of cursor, keyboard map displayed and buckybits. */ -static int cursor_row, cursor_col, kbd, bucky; - -/* Number of keys in each row. */ -static int max_key[] = {23, 23, 17}; - -/* Key bounds. key_bounds[y][x] is the starting pixel column of the xth key on -** row y. key_bounds[y][x+1]-1 is the ending pixel column of that key. -*/ -static int key_bounds[3][25] = { - {1, 16, 34, 47, 60, 73, 86, 99, 112, 125, 138, 151, - 164, 177, 190, 203, 216, 229, 242, 255, 268, 281, 294, 307, 320}, - {1, 19, 37, 50, 63, 76, 89, 102, 115, 128, 141, 154, - 167, 180, 193, 203, 216, 229, 242, 255, 268, 281, 294, 307, 320}, - {1, 19, 35, 48, 61, 74, 87, 100, 113, 126, 139, 152, - 165, 178, 203, 281, 294, 307, 320} - }; - -/* Keyboard map. */ -static int key_map[3][3][25] = { - {{SCI_K_ESC, 9, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', - '[', ']', SCI_K_BACKSPACE, '1', '2', '3', '4', '5', '-', - SCI_K_HOME, SCI_K_UP, SCI_K_PGUP}, - {0, 0, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', - '`', 0, '6', '7', '8', '9', '0', '=', SCI_K_LEFT, - SCI_K_CENTER, SCI_K_RIGHT}, - {0, 0, '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', - SCI_K_ENTER, ' ', SCI_K_END, SCI_K_DOWN, SCI_K_PGDOWN}}, - - {{SCI_K_ESC, 0, SCI_K_F1, SCI_K_F2, SCI_K_F3, SCI_K_F4, SCI_K_F5, - SCI_K_F6, SCI_K_F7, SCI_K_F8, SCI_K_F9, SCI_K_F10, 0, 0, - SCI_K_BACKSPACE, 0, SCI_K_INSERT, SCI_K_HOME, SCI_K_PGUP, - 0, 0, SCI_K_HOME, SCI_K_UP, SCI_K_PGUP}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, SCI_K_DELETE, - SCI_K_END, SCI_K_PGDOWN, 0, 0, SCI_K_LEFT, SCI_K_CENTER, - SCI_K_RIGHT}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, SCI_K_ENTER, ' ', - SCI_K_END, SCI_K_DOWN, SCI_K_PGDOWN}}, - - {{SCI_K_ESC, 9, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', - '[', ']', SCI_K_BACKSPACE, '1', '2', '3', '4', '5', '-', - SCI_K_HOME, SCI_K_UP, SCI_K_PGUP}, - {0, 0, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', - '`', 0, '6', '7', '8', '9', '0', '=', SCI_K_LEFT, - SCI_K_CENTER, SCI_K_RIGHT}, - {0, 0, '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', - SCI_K_ENTER, ' ', SCI_K_END, SCI_K_DOWN, SCI_K_PGDOWN}}, - }; - -/* RGB565 palette used for keyboard images. */ -static guint16 kbd_pal[256] = {0xFFFF, 0x0000, 0x0000}; - -/* Keyboard images in 256-colour indexed mode. Based on images by -** Ismail Khatib -*/ -static unsigned char kbd_img[3][320*40] = { - {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, - - { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, - - { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02} -}; - -static void colour_key(int row, int column, guint16 bgcol, guint16 fgcol) -/* Changes the colouring of a key (palette colours 0 and 1). -** Parameters: (int) row: row number of key to colour. -** (int) column: column number of key to colour. -** (guint16) bgcol: colour by which to replace palette colour 0. -** (guint16) fgcol: colour by which to replace palette colour 1. -** Returns : (void) -*/ -{ - int x, y; - - for (y = row * 13 + 1; y < (row + 1) * 13 + 1; y++) - for (x = key_bounds[row][column]; x < key_bounds[row][column+1]; x++) - if (kbd_img[kbd][y * 320 + x] == 0) - *(ptr + y * pitch + x) = bgcol; - else if (kbd_img[kbd][y * 320 + x] == 1) - *(ptr + y * pitch + x) = fgcol; -} - -static void mark_key(int row, int column) -/* Marks a key -** Parameters: (int) row: row number of key to mark. -** (int) column: column number of key to mark. -** Returns : (void) -*/ -{ - if (((row == 1) && (column == 0) && (bucky & CTRL)) - || ((row == 2) && (column == 1) && (bucky & ALT)) - || ((row == 1) && (column == 1) && (kbd == 1)) - || ((row == 2) && (column == 0) && (kbd == 2))) - colour_key(row, column, kbd_pal[1], MARK_COLOUR); - else - colour_key(row, column, MARK_COLOUR, kbd_pal[1]); - if ((row == 2) && (column == 13)) - colour_key(1, 14, MARK_COLOUR, kbd_pal[1]); -} - -static void unmark_key(int row, int column) -/* Unmarks a key -** Parameters: (int) row: row number of key to unmark. -** (int) column: column number of key to unmark. -** Returns : (void) -*/ -{ - if (((row == 1) && (column == 0) && (bucky & CTRL)) - || ((row == 2) && (column == 1) && (bucky & ALT)) - || ((row == 1) && (column == 1) && (kbd == 1)) - || ((row == 2) && (column == 0) && (kbd == 2))) - colour_key(row, column, kbd_pal[1], kbd_pal[0]); - else - colour_key(row, column, kbd_pal[0], kbd_pal[1]); - if ((row == 2) && (column == 13)) - colour_key(1, 14, kbd_pal[0], kbd_pal[1]); -} - -void vkbd_handle_input(int input) -{ - unmark_key(cursor_row, cursor_col); - - switch (input) { - case KBD_LEFT: - if (cursor_col > 0) - cursor_col--; - else - cursor_col = max_key[cursor_row]; - break; - case KBD_RIGHT: - if (cursor_col < max_key[cursor_row]) - cursor_col++; - else - cursor_col = 0; - break; - case KBD_DOWN: - cursor_row = (cursor_row + 1) % 3; - switch (cursor_row) { - case 2: - if ((cursor_col >= 15) && (cursor_col <= 20)) - cursor_col = 14; - else if (cursor_col >= 21) - cursor_col -= 6; - break; - case 0: - if (cursor_col == 14) - cursor_col = 17; - else if (cursor_col >= 15) - cursor_col += 6; - } - break; - case KBD_UP: - cursor_row = (cursor_row + 2) % 3; - switch (cursor_row) { - case 2: - if ((cursor_col >= 15) && (cursor_col <= 20)) - cursor_col = 14; - else if (cursor_col >= 21) - cursor_col -= 6; - break; - case 1: - if (cursor_col == 14) - cursor_col = 17; - else if (cursor_col >= 15) - cursor_col += 6; - } - } - if ((cursor_row == 1) && (cursor_col == 14)) { - cursor_col = 13; - cursor_row = 2; - } - mark_key(cursor_row, cursor_col); -} - -int vkbd_get_key(int *data, int *buckyb) -{ - static int prev_kbd; - if ((cursor_row == 2) && (cursor_col == 0)) { - if (kbd == 0) { - kbd = 2; - vkbd_draw(); - } - else if (kbd == 2) { - kbd = 0; - vkbd_draw(); - } - } - else if ((cursor_row == 1) && (cursor_col == 1)) { - if ((kbd == 0) || (kbd == 2)) { - prev_kbd = kbd; - kbd = 1; - vkbd_draw(); - } - else if (kbd == 1) { - kbd = prev_kbd; - vkbd_draw(); - } - } - else if ((cursor_row == 1) && (cursor_col == 0)) { - bucky ^= CTRL; - mark_key(1, 0); - } - else if ((cursor_row == 2) && (cursor_col == 1)) { - bucky ^= ALT; - mark_key(2, 1); - } - if ((cursor_row > 0) && (cursor_col < 2)) - return 0; - *data = key_map[kbd][cursor_row][cursor_col]; - *buckyb = (kbd == 2 ? SCI_EVM_LSHIFT : 0) - | (bucky & CTRL ? SCI_EVM_CTRL : 0) - | (bucky & ALT ? SCI_EVM_ALT : 0); - return 1; -} - -void vkbd_init(guint16 *p, int line_pitch) -{ - ptr = p; - pitch = line_pitch; -} - -void vkbd_draw() -{ - int i, j; - for (i = 0; i < 40; i++) - for (j = 0; j < 320; j++) - *(ptr + i * pitch + j) = kbd_pal[kbd_img[kbd][i*320+j]]; - if (bucky & CTRL) - unmark_key(1, 0); - if (bucky & ALT) - unmark_key(2, 1); - if (kbd == 1) - unmark_key(1, 1); - else if (kbd == 2) - unmark_key(2, 0); - mark_key(cursor_row, cursor_col); -} diff --git a/engines/sci/dc/keyboard.h b/engines/sci/dc/keyboard.h deleted file mode 100644 index 568a50a731..0000000000 --- a/engines/sci/dc/keyboard.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************** - keyboard.c Copyright (C) 2004 Walter van Niftrik - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> - -***************************************************************************/ - -#ifndef __KEYBOARD_H -#define __KEYBOARD_H - -/* Virtual keyboard. Currently only 320x40, 16-bit colour. */ - -#include <sys/types.h> - -#define KBD_RIGHT 0 -#define KBD_LEFT 1 -#define KBD_UP 2 -#define KBD_DOWN 3 - -void vkbd_init(guint16 *ptr, int line_pitch); -/* Initialises the virtual keyboard -** Parameters: (guint16 *) ptr: buffer where the keyboard is to be drawn. -** (int) line_pitch: line pitch of buffer in bytes. -** Returns : (void) -*/ - -void vkbd_draw(void); -/* Draws the virtual keyboard in its current state. -** Parameters: (void) -** Returns : (void) -*/ - -void vkbd_handle_input(int input); -/* Handle cursor moves. Keyboard display is automatically updated. -** Parameters: (int) input: cursor move to handle (see #defines above). -** Returns : (void) -*/ - -int vkbd_get_key(int *data, int *buckyb); -/* Get keycode of currently selected key and buckstate. If a special key is -** selected (e.g. the shift key), it will be dealt with appropriately. -** Parameters: (int *) data: pointer to where keycode will be stored. -** (int *) bucky: pointer to where buckystate will be stored. -** Returns : (int) 1 when new data and bucky are available, 0 otherwise. -*/ - -#endif /* __KEYBOARD_H */ diff --git a/engines/sci/dc/mouse1.h b/engines/sci/dc/mouse1.h deleted file mode 100644 index 6267da7be7..0000000000 --- a/engines/sci/dc/mouse1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* XPM: 10x16 */ -static char * mouse1_xpm = -" . " -".+. " -".++. " -".+++. " -".++++. " -".+++++. " -".++++++. " -".+++++++. " -".++++++++." -".+++++... " -".++.++. " -".+. .++. " -" . .++. " -" .++. " -" .++. " -" .. "; diff --git a/engines/sci/dc/options.h b/engines/sci/dc/options.h deleted file mode 100644 index eabdcbaf2c..0000000000 --- a/engines/sci/dc/options.h +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - options.h Copyright (C) 2003-2004 Walter van Niftrik - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> - -***************************************************************************/ - -#ifndef __OPTIONS_H -#define __OPTIONS_H - -struct dc_option_t { - char *name; /* Option name */ - char *values; /* Option values, each followed by `\0' */ -}; - -/* 0 = stable, 1 = glutton */ -#define DC_OPTIONS_TAG_MAJOR 1 -/* Increase after every modification to the dc_options struct. */ -#define DC_OPTIONS_TAG_MINOR 1 -#define NUM_DC_OPTIONS 6 - -struct dc_option_t dc_options[NUM_DC_OPTIONS] = { -/* 0 */ { "Video Mode", "Letterboxed\0Full-Screen\0" }, -/* 1 */ { "Dithering", "256 Color Dithering\0Interpolate\00016 Color Dithering\0" }, -/* 2 */ { "Antialiasing", "Off\0On\0" }, -/* 3 */ { "SCI Version", "Autodetect\0001.000.000\0001.000.200\0001.000.510\0" }, -/* 4 */ { "Resource Version", "Autodetect\0001\0002\0003\0004\0005\0006\0" }, -/* 5 */ { "Pic Port Bounds", "Default\0\"0, 0, 320, 200\"\0" } -}; - -#endif /* __OPTIONS_H */ diff --git a/engines/sci/dc/selectgame.c b/engines/sci/dc/selectgame.c deleted file mode 100644 index 42d9e4efee..0000000000 --- a/engines/sci/dc/selectgame.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter, Thorsten Titze. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* Modified by Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> */ - -#include <stdio.h> -#include "gp.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -static char copyright[] = "FreeSCI " VERSION " Copyright (C) 1999, 2000-2003" - " Alex Angas, Rainer Canavan, Ruediger Hanke, Matt Hargett," - " Dmitry Jemerov, Christopher T. Lansdown, Sergey Lapin, Rickard Lind," - " Carl Muckenhoupt, Walter van Niftrik, Solomon Peachy," - " Christoph Reichenbach, Magnus Reftel, Lars Skovlund, Rink Springer" - " and Petr Vyhnak." - " This program is free software. You can copy and/or modify it freely" - " according to the terms of the GNU general public license, v2.0" - " or any later version, at your option." - " It comes with ABSOLUTELY NO WARRANTY."; - -static int mx = 320, my = 240; -static int lmx[5] = {320, 320, 320, 320, 320}, - lmy[5] = {240, 240, 240, 240, 240}; -static void mouse_render() -/* Renders the mouse pointer. -** Parameters: void. -** Returns : void. -*/ -{ - int i; - int atall = 0; - - MAPLE_FOREACH_BEGIN(MAPLE_FUNC_MOUSE, mouse_state_t, st) - atall = 1; - if (st->dx || st->dy) { - - mx += st->dx; - my += st->dy; - - if (mx < 0) mx = 0; - if (mx > 640) mx = 640; - if (my < 0) my = 0; - if (my > 480) my = 480; - - lmx[0] = mx; - lmy[0] = my; - } - MAPLE_FOREACH_END() - - if (atall) { - for (i=4; i>0; i--) { - lmx[i] = lmx[i-1]; - lmy[i] = lmy[i-1]; - } - - draw_poly_mouse(mx, my, 1.0f); - for (i=1; i<5; i++) - draw_poly_mouse(lmx[i], lmy[i], 0.8f * (5-i) / 6.0f); - } -} - -void choose_game() { - int fexit = 0; - - /* On PAL consoles without a VGA box, default to 50hz */ - if ((flashrom_get_region() == FLASHROM_REGION_EUROPE) && - vid_check_cable()) { - vid_set_mode(DM_640x480_PAL_IL, PM_RGB565); - } - - /* Do basic setup */ - pvr_init_defaults(); - - /* Setup the mouse/font texture */ - setup_util_texture(); - - /* Setup background display */ - bkg_setup(); - - init_menu_state(); - - load_option_list(); - - while (!fexit) { - pvr_wait_ready(); - pvr_scene_begin(); - pvr_list_begin(PVR_LIST_OP_POLY); - - /* Opaque list *************************************/ - bkg_render(); - - /* End of opaque list */ - pvr_list_finish(); - pvr_list_begin(PVR_LIST_TR_POLY); - - /* Translucent list ********************************/ - - /* Top Banner */ - draw_poly_box(0.0f, 10.0f, 640.0f, 20.0f+(24.0f*2.0f)+10.0f+28.0f, 90.0f, - 0.3f, 0.2f, 0.5f, 0.0f, 0.5f, 0.1f, 0.8f, 0.2f); - draw_poly_strf(308.0f - (8+sizeof(VERSION)-1)/2.0f*12.0f, 20.0f, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "FreeSCI " VERSION); - draw_poly_strf(308.0f - 18.0f/2.0f*12.0f, 48.0f, 100.0f, 1.0f, 1.0f, 1.0f, 1.0f, - "http://freesci.org"); - - /* Game menu */ - fexit = game_menu_render(); - - /* Button info */ - render_button_info(); - - /* Copyright scroll */ - render_scroll(2.0f, 76.0f, 100.0f, 1.0f, 0.7f, 0.7f, 1.0f, copyright); - - /* Render the mouse if they move it.. it doesn't do anything - but it's cool looking ^_^ */ - mouse_render(); - - /* End of translucent list */ - pvr_list_finish(); - - /* Finish the frame *******************************/ - pvr_scene_finish(); - - } - - dc_write_config_file("/ram/config"); - - return; -} diff --git a/engines/sci/dc/selectgame.h b/engines/sci/dc/selectgame.h deleted file mode 100644 index 0b4053010f..0000000000 --- a/engines/sci/dc/selectgame.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************** - selectgame.h Copyright (C) 2002,2003 Walter van Niftrik - - - This program may be modified and copied freely according to the terms of - the GNU general public license (GPL), as long as the above copyright - notice and the licensing information contained herein are preserved. - - Please refer to www.gnu.org for licensing details. - - This work is provided AS IS, without warranty of any kind, expressed or - implied, including but not limited to the warranties of merchantibility, - noninfringement, and fitness for a specific purpose. The author will not - be held liable for any damage caused by this work or derivatives of it. - - By using this source code, you agree to the licensing terms as stated - above. - - - Please contact the maintainer for bug reports or inquiries. - - Current Maintainer: - - Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl> - -***************************************************************************/ - -#ifndef __SELECTGAME_H -#define __SELECTGAME_H - -/* This function changes to the directory of the game that the user wants to -** run. Currently implemented by a Dreamcast-specific graphical interface based -** on Daniel Potter's GhettoPlay interface. It also creates a config file on -** the ram disk, based on options the user has set in the interface. -** Parameters: void. -** Returns : void. -*/ -void choose_game(void); - -#endif /* __SELECTGAME_H */ diff --git a/engines/sci/dc/sintab.h b/engines/sci/dc/sintab.h deleted file mode 100644 index aaaf3fc505..0000000000 --- a/engines/sci/dc/sintab.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef __SINTAB_H -#define __SINTAB_H - -float sintab[] = { -0.000000, 0.024541, 0.049068, 0.073565, 0.098017, 0.122411, 0.146730, -0.170962, 0.195090, 0.219101, 0.242980, 0.266713, 0.290285, 0.313682, -0.336890, 0.359895, 0.382683, 0.405241, 0.427555, 0.449611, 0.471397, -0.492898, 0.514103, 0.534998, 0.555570, 0.575808, 0.595699, 0.615232, -0.634393, 0.653173, 0.671559, 0.689541, 0.707107, 0.724247, 0.740951, -0.757209, 0.773010, 0.788346, 0.803208, 0.817585, 0.831470, 0.844854, -0.857729, 0.870087, 0.881921, 0.893224, 0.903989, 0.914210, 0.923880, -0.932993, 0.941544, 0.949528, 0.956940, 0.963776, 0.970031, 0.975702, -0.980785, 0.985278, 0.989177, 0.992480, 0.995185, 0.997290, 0.998795, -0.999699, 1.000000, 0.999699, 0.998795, 0.997290, 0.995185, 0.992480, -0.989177, 0.985278, 0.980785, 0.975702, 0.970031, 0.963776, 0.956940, -0.949528, 0.941544, 0.932993, 0.923880, 0.914210, 0.903989, 0.893224, -0.881921, 0.870087, 0.857729, 0.844854, 0.831470, 0.817585, 0.803208, -0.788346, 0.773010, 0.757209, 0.740951, 0.724247, 0.707107, 0.689541, -0.671559, 0.653173, 0.634393, 0.615232, 0.595699, 0.575808, 0.555570, -0.534998, 0.514103, 0.492898, 0.471397, 0.449611, 0.427555, 0.405241, -0.382683, 0.359895, 0.336890, 0.313682, 0.290285, 0.266713, 0.242980, -0.219101, 0.195090, 0.170962, 0.146730, 0.122411, 0.098017, 0.073565, -0.049068, 0.024541, 0.000000, -0.024541, -0.049068, -0.073565, -0.098017, --0.122411, -0.146730, -0.170962, -0.195090, -0.219101, -0.242980, --0.266713, -0.290285, -0.313682, -0.336890, -0.359895, -0.382683, --0.405241, -0.427555, -0.449611, -0.471397, -0.492898, -0.514103, --0.534998, -0.555570, -0.575808, -0.595699, -0.615232, -0.634393, --0.653173, -0.671559, -0.689541, -0.707107, -0.724247, -0.740951, --0.757209, -0.773010, -0.788346, -0.803208, -0.817585, -0.831470, --0.844854, -0.857729, -0.870087, -0.881921, -0.893224, -0.903989, --0.914210, -0.923880, -0.932993, -0.941544, -0.949528, -0.956940, --0.963776, -0.970031, -0.975702, -0.980785, -0.985278, -0.989177, --0.992480, -0.995185, -0.997290, -0.998795, -0.999699, -1.000000, --0.999699, -0.998795, -0.997290, -0.995185, -0.992480, -0.989177, --0.985278, -0.980785, -0.975702, -0.970031, -0.963776, -0.956940, --0.949528, -0.941544, -0.932993, -0.923880, -0.914210, -0.903989, --0.893224, -0.881921, -0.870087, -0.857729, -0.844854, -0.831470, --0.817585, -0.803208, -0.788346, -0.773010, -0.757209, -0.740951, --0.724247, -0.707107, -0.689541, -0.671559, -0.653173, -0.634393, --0.615232, -0.595699, -0.575808, -0.555570, -0.534998, -0.514103, --0.492898, -0.471397, -0.449611, -0.427555, -0.405241, -0.382683, --0.359895, -0.336890, -0.313682, -0.290285, -0.266713, -0.242980, --0.219101, -0.195090, -0.170962, -0.146730, -0.122411, -0.098017, --0.073565, -0.049068, -0.024541 }; - - -#endif /* __SINTAB_H */ diff --git a/engines/sci/dc/snd_stream.c b/engines/sci/dc/snd_stream.c deleted file mode 100644 index fcff141c2e..0000000000 --- a/engines/sci/dc/snd_stream.c +++ /dev/null @@ -1,537 +0,0 @@ -/* - * Copyright 2000, 2001, 2002, 2003, 2004 - * Dan Potter, Florian Schulze. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* 2005-11-09 Modified by Walter van Niftrik. */ - -#include <assert.h> -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <sys/queue.h> - -#include <arch/timer.h> -#include <dc/g2bus.h> -#include <dc/spu.h> -#include <dc/sound/sound.h> -#include <stream.h> -#include <dc/sound/sfxmgr.h> - -#include <../sound/arm/aica_cmd_iface.h> - -#include <resource.h> - -/* - -This module uses a nice circularly queued data stream in SPU RAM, which is -looped by a program running in the SPU itself. - -Basically the poll routine checks to see if a certain minimum amount of -data is available to the SPU to be played, and if not, we ask the user -routine for more sound data and load it up. That's about it. - -This version is capable of playing back N streams at once, with the limit -being available CPU time and channels. - -*/ - -typedef struct filter { - TAILQ_ENTRY(filter) lent; - snd_stream_filter_t func; - void * data; -} filter_t; - -/* Each of these represents an active streaming channel */ -typedef struct strchan { - // Which AICA channels are we using? - int ch[2]; - - // The last write position in the playing buffer - int last_write_pos; // = 0 - - // The buffer size allocated for this stream. - int buffer_size; // = 0x10000 - - // Stream data location in AICA RAM - uint32 spu_ram_sch[2]; - - // "Get data" callback; we'll call this any time we want to get - // another buffer of output data. - snd_stream_callback_t get_data; - - // Our list of filter callback functions for this stream - TAILQ_HEAD(filterlist, filter) filters; - - // Stereo/mono flag - int stereo; - - // Playback frequency - int frequency; - - /* Stream queueing is where we get everything ready to go but don't - actually start it playing until the signal (for music sync, etc) */ - int queueing; - - /* Have we been initialized yet? (and reserved a buffer, etc) */ - volatile int initted; -} strchan_t; - -// Our stream structs -static strchan_t streams[SND_STREAM_MAX] = { { { 0 } } }; - -// Separation buffers (for stereo) -int16 * sep_buffer[2] = { NULL, NULL }; - -/* the address of the sound ram from the SH4 side */ -#define SPU_RAM_BASE 0xa0800000 - -// Check an incoming handle -#define CHECK_HND(x) do { \ - assert( (x) >= 0 && (x) < SND_STREAM_MAX ); \ - assert( streams[(x)].initted ); \ -} while(0) - -/* Set "get data" callback */ -void snd_stream_set_callback(snd_stream_hnd_t hnd, snd_stream_callback_t cb) { - CHECK_HND(hnd); - streams[hnd].get_data = cb; -} - -void snd_stream_filter_add(snd_stream_hnd_t hnd, snd_stream_filter_t filtfunc, void * obj) { - filter_t * f; - - CHECK_HND(hnd); - - f = malloc(sizeof(filter_t)); - f->func = filtfunc; - f->data = obj; - TAILQ_INSERT_TAIL(&streams[hnd].filters, f, lent); -} - -void snd_stream_filter_remove(snd_stream_hnd_t hnd, snd_stream_filter_t filtfunc, void * obj) { - filter_t * f; - - CHECK_HND(hnd); - - TAILQ_FOREACH(f, &streams[hnd].filters, lent) { - if (f->func == filtfunc && f->data == obj) { - TAILQ_REMOVE(&streams[hnd].filters, f, lent); - free(f); - return; - } - } -} - -static void process_filters(snd_stream_hnd_t hnd, void **buffer, int *samplecnt) { - filter_t * f; - - TAILQ_FOREACH(f, &streams[hnd].filters, lent) { - f->func(hnd, f->data, streams[hnd].frequency, streams[hnd].stereo ? 2 : 1, buffer, samplecnt); - } -} - - -/* Performs stereo seperation for the two channels; this routine - has been optimized for the SH-4. */ -static void sep_data(void *buffer, int len, int stereo) { - register int16 *bufsrc, *bufdst; - register int x, y, cnt; - - if (stereo) { - bufsrc = (int16*)buffer; - bufdst = sep_buffer[0]; - x = 0; y = 0; cnt = len / 2; - do { - *bufdst = *bufsrc; - bufdst++; bufsrc+=2; cnt--; - } while (cnt > 0); - - bufsrc = (int16*)buffer; bufsrc++; - bufdst = sep_buffer[1]; - x = 1; y = 0; cnt = len / 2; - do { - *bufdst = *bufsrc; - bufdst++; bufsrc+=2; cnt--; - x+=2; y++; - } while (cnt > 0); - } else { - memcpy(sep_buffer[0], buffer, len); - memcpy(sep_buffer[1], buffer, len); - } -} - -/* Prefill buffers -- do this before calling start() */ -void snd_stream_prefill(snd_stream_hnd_t hnd) { - void *buf; - int got; - long secs, usecs; - sfx_timestamp_t timestamp; - - CHECK_HND(hnd); - - if (!streams[hnd].get_data) return; - - sci_gettime(&secs, &usecs); - timestamp = sfx_new_timestamp(secs, usecs, streams[hnd].frequency); - - /* Load first buffer */ - /* XXX Note: This will not work if the full data size is less than - buffer_size or buffer_size/2. */ - if (streams[hnd].stereo) - buf = streams[hnd].get_data(hnd, timestamp, streams[hnd].buffer_size*2, &got); - else - buf = streams[hnd].get_data(hnd, timestamp, streams[hnd].buffer_size, &got); - process_filters(hnd, &buf, &got); - sep_data(buf, streams[hnd].buffer_size, streams[hnd].stereo); - spu_memload( - streams[hnd].spu_ram_sch[0], (uint8*)sep_buffer[0], - streams[hnd].buffer_size); - spu_memload( - streams[hnd].spu_ram_sch[1], (uint8*)sep_buffer[1], - streams[hnd].buffer_size); - - streams[hnd].last_write_pos = 0; -} - -/* Initialize stream system */ -int snd_stream_init() { - /* Create stereo seperation buffers */ - if (!sep_buffer[0]) { - sep_buffer[0] = memalign(32, (SND_STREAM_BUFFER_MAX/2)); - sep_buffer[1] = memalign(32, (SND_STREAM_BUFFER_MAX/2)); - } - - /* Finish loading the stream driver */ - if (snd_init() < 0) { - dbglog(DBG_ERROR, "snd_stream_init(): snd_init() failed, giving up\n"); - return -1; - } - - return 0; -} - -snd_stream_hnd_t snd_stream_alloc(snd_stream_callback_t cb, int bufsize) { - int i, old; - snd_stream_hnd_t hnd; - - // Get an unused handle - hnd = -1; - old = irq_disable(); - for (i=0; i<SND_STREAM_MAX; i++) { - if (!streams[i].initted) { - hnd = i; - break; - } - } - if (hnd != -1) - streams[hnd].initted = 1; - irq_restore(old); - if (hnd == -1) - return SND_STREAM_INVALID; - - // Default this for now - streams[hnd].buffer_size = bufsize; - - /* Start off with queueing disabled */ - streams[hnd].queueing = 0; - - /* Setup the callback */ - snd_stream_set_callback(hnd, cb); - - /* Initialize our filter chain list */ - TAILQ_INIT(&streams[hnd].filters); - - // Allocate stream buffers - streams[hnd].spu_ram_sch[0] = snd_mem_malloc(streams[hnd].buffer_size*2); - streams[hnd].spu_ram_sch[1] = streams[hnd].spu_ram_sch[0] + streams[hnd].buffer_size; - - // And channels - streams[hnd].ch[0] = snd_sfx_chn_alloc(); - streams[hnd].ch[1] = snd_sfx_chn_alloc(); - printf("snd_stream: alloc'd channels %d/%d\n", streams[hnd].ch[0], streams[hnd].ch[1]); - - return hnd; -} - -int snd_stream_reinit(snd_stream_hnd_t hnd, snd_stream_callback_t cb) { - CHECK_HND(hnd); - - /* Start off with queueing disabled */ - streams[hnd].queueing = 0; - - /* Setup the callback */ - snd_stream_set_callback(hnd, cb); - - return hnd; -} - -void snd_stream_destroy(snd_stream_hnd_t hnd) { - filter_t * c, * n; - - CHECK_HND(hnd); - - if (!streams[hnd].initted) - return; - - snd_sfx_chn_free(streams[hnd].ch[0]); - snd_sfx_chn_free(streams[hnd].ch[1]); - - c = TAILQ_FIRST(&streams[hnd].filters); - while (c) { - n = TAILQ_NEXT(c, lent); - free(c); - c = n; - } - TAILQ_INIT(&streams[hnd].filters); - - snd_stream_stop(hnd); - snd_mem_free(streams[hnd].spu_ram_sch[0]); - memset(streams+hnd, 0, sizeof(streams[0])); -} - -/* Shut everything down and free mem */ -void snd_stream_shutdown() { - /* Stop and destroy all active stream */ - int i; - for (i=0; i<SND_STREAM_MAX; i++) { - if (streams[i].initted) - snd_stream_destroy(i); - } - - /* Free global buffers */ - if (sep_buffer[0]) { - free(sep_buffer[0]); sep_buffer[0] = NULL; - free(sep_buffer[1]); sep_buffer[1] = NULL; - } -} - -/* Enable / disable stream queueing */ -void snd_stream_queue_enable(snd_stream_hnd_t hnd) { - CHECK_HND(hnd); - streams[hnd].queueing = 1; -} - -void snd_stream_queue_disable(snd_stream_hnd_t hnd) { - CHECK_HND(hnd); - streams[hnd].queueing = 0; -} - -/* Start streaming (or if queueing is enabled, just get ready) */ -void snd_stream_start(snd_stream_hnd_t hnd, uint32 freq, int st) { - AICA_CMDSTR_CHANNEL(tmp, cmd, chan); - - CHECK_HND(hnd); - - if (!streams[hnd].get_data) return; - - streams[hnd].stereo = st; - streams[hnd].frequency = freq; - - /* Make sure these are sync'd (and/or delayed) */ - snd_sh4_to_aica_stop(); - - /* Prefill buffers */ - snd_stream_prefill(hnd); - - /* Channel 0 */ - cmd->cmd = AICA_CMD_CHAN; - cmd->timestamp = 0; - cmd->size = AICA_CMDSTR_CHANNEL_SIZE; - cmd->cmd_id = streams[hnd].ch[0]; - chan->cmd = AICA_CH_CMD_START | AICA_CH_START_DELAY; - chan->base = streams[hnd].spu_ram_sch[0]; - chan->type = AICA_SM_16BIT; - chan->length = (streams[hnd].buffer_size/2); - chan->loop = 1; - chan->loopstart = 0; - chan->loopend = (streams[hnd].buffer_size/2); - chan->freq = freq; - chan->vol = 255; - chan->pan = 0; - snd_sh4_to_aica(tmp, cmd->size); - - /* Channel 1 */ - cmd->cmd_id = streams[hnd].ch[1]; - chan->base = streams[hnd].spu_ram_sch[1]; - chan->pan = 255; - snd_sh4_to_aica(tmp, cmd->size); - - /* Start both channels simultaneously */ - cmd->cmd_id = (1 << streams[hnd].ch[0]) | - (1 << streams[hnd].ch[1]); - chan->cmd = AICA_CH_CMD_START | AICA_CH_START_SYNC; - snd_sh4_to_aica(tmp, cmd->size); - - /* Process the changes */ - if (!streams[hnd].queueing) - snd_sh4_to_aica_start(); -} - -/* Actually make it go (in queued mode) */ -void snd_stream_queue_go(snd_stream_hnd_t hnd) { - CHECK_HND(hnd); - snd_sh4_to_aica_start(); -} - -/* Stop streaming */ -void snd_stream_stop(snd_stream_hnd_t hnd) { - AICA_CMDSTR_CHANNEL(tmp, cmd, chan); - - CHECK_HND(hnd); - - if (!streams[hnd].get_data) return; - - /* Stop stream */ - /* Channel 0 */ - cmd->cmd = AICA_CMD_CHAN; - cmd->timestamp = 0; - cmd->size = AICA_CMDSTR_CHANNEL_SIZE; - cmd->cmd_id = streams[hnd].ch[0]; - chan->cmd = AICA_CH_CMD_STOP; - snd_sh4_to_aica(tmp, cmd->size); - - /* Channel 1 */ - cmd->cmd_id = streams[hnd].ch[1]; - snd_sh4_to_aica(tmp, AICA_CMDSTR_CHANNEL_SIZE); -} - -/* The DMA will chain to this to start the second DMA. */ -/* static uint32 dmadest, dmacnt; -static void dma_chain(ptr_t data) { - spu_dma_transfer(sep_buffer[1], dmadest, dmacnt, 0, NULL, 0); -} */ - -/* Poll streamer to load more data if neccessary */ -int snd_stream_poll(snd_stream_hnd_t hnd) { - uint32 ch0pos, ch1pos; - long secs, usecs; - sfx_timestamp_t timestamp; - int realbuffer; - int current_play_pos; - int needed_samples; - int distance; - int got_samples; - int old; - void *data; - - CHECK_HND(hnd); - - if (!streams[hnd].get_data) return -1; - - /* Get "real" buffer */ - ch0pos = g2_read_32(SPU_RAM_BASE + AICA_CHANNEL(streams[hnd].ch[0]) + offsetof(aica_channel_t, pos)); - ch1pos = g2_read_32(SPU_RAM_BASE + AICA_CHANNEL(streams[hnd].ch[1]) + offsetof(aica_channel_t, pos)); - - if (ch0pos >= (streams[hnd].buffer_size/2)) { - dbglog(DBG_ERROR, "snd_stream_poll: chan0(%d).pos = %ld (%08lx)\n", streams[hnd].ch[0], ch0pos, ch0pos); - return -1; - } - - realbuffer = !((ch0pos < (streams[hnd].buffer_size/4)) && (ch1pos < (streams[hnd].buffer_size/4))); - - current_play_pos = (ch0pos < ch1pos)?(ch0pos):(ch1pos); - - /* count just till the end of the buffer, so we don't have to - handle buffer wraps */ - old = irq_disable(); - if (streams[hnd].last_write_pos <= current_play_pos) { - needed_samples = current_play_pos - streams[hnd].last_write_pos; - distance = streams[hnd].buffer_size/2 - current_play_pos + streams[hnd].last_write_pos; - } else { - needed_samples = (streams[hnd].buffer_size/2) - streams[hnd].last_write_pos; - distance = streams[hnd].last_write_pos - current_play_pos; - } - - sci_gettime(&secs, &usecs); - irq_restore(old); - - timestamp = sfx_new_timestamp(secs, usecs, streams[hnd].frequency); - timestamp = sfx_timestamp_add(timestamp, distance); - - /* round it a little bit */ - needed_samples &= ~0x7ff; - /* printf("last_write_pos %6i, current_play_pos %6i, needed_samples %6i\n",last_write_pos,current_play_pos,needed_samples); */ - - if (needed_samples > 0) { - if (streams[hnd].stereo) { - data = streams[hnd].get_data(hnd, timestamp, needed_samples * 4, &got_samples); - process_filters(hnd, &data, &got_samples); - if (got_samples < needed_samples * 4) { - needed_samples = got_samples / 4; - if (needed_samples & 3) - needed_samples = (needed_samples + 4) & ~3; - } - } else { - data = streams[hnd].get_data(hnd, timestamp, needed_samples * 2, &got_samples); - process_filters(hnd, &data, &got_samples); - if (got_samples < needed_samples * 2) { - needed_samples = got_samples / 2; - if (needed_samples & 1) - needed_samples = (needed_samples + 2) & ~1; - } - } - if (data == NULL) { - /* Fill the "other" buffer with zeros */ - spu_memset(streams[hnd].spu_ram_sch[0] + (streams[hnd].last_write_pos * 2), 0, needed_samples * 2); - spu_memset(streams[hnd].spu_ram_sch[1] + (streams[hnd].last_write_pos * 2), 0, needed_samples * 2); - return -3; - } - - sep_data(data, needed_samples * 2, streams[hnd].stereo); - spu_memload(streams[hnd].spu_ram_sch[0] + (streams[hnd].last_write_pos * 2), (uint8*)sep_buffer[0], needed_samples * 2); - spu_memload(streams[hnd].spu_ram_sch[1] + (streams[hnd].last_write_pos * 2), (uint8*)sep_buffer[1], needed_samples * 2); - - // Second DMA will get started by the chain handler - /* dcache_flush_range(sep_buffer[0], needed_samples*2); - dcache_flush_range(sep_buffer[1], needed_samples*2); - dmadest = spu_ram_sch2 + (last_write_pos * 2); - dmacnt = needed_samples * 2; - spu_dma_transfer(sep_buffer[0], spu_ram_sch1 + (last_write_pos * 2), needed_samples * 2, - 0, dma_chain, 0); */ - - streams[hnd].last_write_pos += needed_samples; - if (streams[hnd].last_write_pos >= (streams[hnd].buffer_size/2)) - streams[hnd].last_write_pos -= (streams[hnd].buffer_size/2); - } - return 0; -} - -/* Set the volume on the streaming channels */ -void snd_stream_volume(snd_stream_hnd_t hnd, int vol) { - AICA_CMDSTR_CHANNEL(tmp, cmd, chan); - - CHECK_HND(hnd); - - cmd->cmd = AICA_CMD_CHAN; - cmd->timestamp = 0; - cmd->size = AICA_CMDSTR_CHANNEL_SIZE; - cmd->cmd_id = streams[hnd].ch[0]; - chan->cmd = AICA_CH_CMD_UPDATE | AICA_CH_UPDATE_SET_VOL; - chan->vol = vol; - snd_sh4_to_aica(tmp, cmd->size); - - cmd->cmd_id = streams[hnd].ch[1]; - snd_sh4_to_aica(tmp, cmd->size); -} diff --git a/engines/sci/dc/stream.h b/engines/sci/dc/stream.h deleted file mode 100644 index e0e9871c70..0000000000 --- a/engines/sci/dc/stream.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2002, 2004 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* 2005-11-09 Modified by Walter van Niftrik. */ - -#ifndef __DC_SOUND_STREAM_H -#define __DC_SOUND_STREAM_H - -#include <sys/cdefs.h> -__BEGIN_DECLS - -#include <arch/types.h> -#include <sfx_time.h> - -/* The maximum number of streams which can be allocated at once */ -#define SND_STREAM_MAX 4 - -/* The maximum buffer size for a stream */ -#define SND_STREAM_BUFFER_MAX 0x10000 - -/* A stream handle */ -typedef int snd_stream_hnd_t; - -/* An invalid stream handle */ -#define SND_STREAM_INVALID -1 - -/* Set "get data" callback */ -typedef void* (*snd_stream_callback_t)(snd_stream_hnd_t hnd, sfx_timestamp_t timestamp, int smp_req, int * smp_recv); -void snd_stream_set_callback(snd_stream_hnd_t hnd, snd_stream_callback_t cb); - -/* Add an effect filter to the sound stream chain. When the stream - buffer filler needs more data, it starts out by calling the initial - callback (set above). It then calls each function in the effect - filter chain, which can modify the buffer and the amount of data - available as well. Filters persist across multiple calls to _init() - but will be emptied by _shutdown(). */ -typedef void (*snd_stream_filter_t)(snd_stream_hnd_t hnd, void * obj, int hz, int channels, void **buffer, int *samplecnt); -void snd_stream_filter_add(snd_stream_hnd_t hnd, snd_stream_filter_t filtfunc, void * obj); - -/* Remove a filter added with the above function */ -void snd_stream_filter_remove(snd_stream_hnd_t hnd, snd_stream_filter_t filtfunc, void * obj); - -/* Prefill buffers -- do this before calling start() */ -void snd_stream_prefill(snd_stream_hnd_t hnd); - -/* Initialize stream system */ -int snd_stream_init(); - -/* Shut everything down and free mem */ -void snd_stream_shutdown(); - -/* Allocate and init a stream channel */ -snd_stream_hnd_t snd_stream_alloc(snd_stream_callback_t cb, int bufsize); - -/* Re-init a stream channel */ -int snd_stream_reinit(snd_stream_hnd_t hnd, snd_stream_callback_t cb); - -/* Destroy a stream channel */ -void snd_stream_destroy(snd_stream_hnd_t hnd); - -/* Enable / disable stream queueing */ -void snd_stream_queue_enable(snd_stream_hnd_t hnd); -void snd_stream_queue_disable(snd_stream_hnd_t hnd); - -/* Actually make it go (in queued mode) */ -void snd_stream_queue_go(snd_stream_hnd_t hnd); - -/* Start streaming */ -void snd_stream_start(snd_stream_hnd_t hnd, uint32 freq, int st); - -/* Stop streaming */ -void snd_stream_stop(snd_stream_hnd_t hnd); - -/* Poll streamer to load more data if neccessary */ -int snd_stream_poll(snd_stream_hnd_t hnd); - -/* Set the volume on the streaming channels */ -void snd_stream_volume(snd_stream_hnd_t hnd, int vol); - -__END_DECLS - -#endif /* __DC_SOUND_STREAM_H */ - diff --git a/engines/sci/dc/texture.c b/engines/sci/dc/texture.c deleted file mode 100644 index 35363bc02b..0000000000 --- a/engines/sci/dc/texture.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2000, 2001, 2002 - * Dan Potter. All rights reserved. - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Cryptic Allusion nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "gp.h" - -/* Creates the utility texture used for the font and mouse cursor. The - resulting texture will be 256x256. */ -#include "mouse1.h" -pvr_ptr_t util_texture; -pvr_poly_hdr_t util_txr_hdr; -void setup_util_texture() { - uint16 *vram; - int x, y; - pvr_poly_cxt_t cxt; - - util_texture = pvr_mem_malloc(256*256*2); - printf("util_texture at %08x\n", util_texture); - vram = (uint16 *)util_texture; - - /* First dump in the mouse cursor */ - for (y=0; y<16; y++) { - for (x=0; x<10; x++) { - if (mouse1_xpm[y*10+x] == '.') - *vram = 0xffff; - else if (mouse1_xpm[y*10+x] == '+') - *vram = 0xf000; - else - *vram = 0x0000; - vram++; - } - vram += 256 - 10; - } - - /* Now add the rest as ASCII characters */ - vram = (uint16 *)util_texture; - for (y=0; y<8; y++) { - for (x=0; x<16; x++) { - /* Skip the first (it's a mouse pointer) */ - if (x != 0 || y != 0) - bfont_draw(vram, 256, 0, y*16+x); - vram += 16; - } - vram += 23*256; - } - - /* Setup a polygon header for the util texture */ - pvr_poly_cxt_txr(&cxt, PVR_LIST_TR_POLY, PVR_TXRFMT_ARGB4444 | PVR_TXRFMT_NONTWIDDLED, - 256, 256, util_texture, PVR_FILTER_NONE); - pvr_poly_compile(&util_txr_hdr, &cxt); -} diff --git a/engines/sci/engine/Makefile.am b/engines/sci/engine/Makefile.am deleted file mode 100644 index 682f11efa2..0000000000 --- a/engines/sci/engine/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -EXTRA_DIST = cfsml.pl savegame.cfsml gc.h heap.h kernel_compat.h \ - kernel_types.h sci_graphics.h -noinst_LIBRARIES = libsciengine.a -libsciengine_a_SOURCES = savegame.c kernel.c kscripts.c klists.c scriptconsole.c \ - kfile.c kgraphics.c kmath.c kevent.c kstring.c kmenu.c \ - kmovement.c kpathing.c ksound.c vm.c game.c scriptdebug.c \ - said.y grammar.c seg_manager.c sys_strings.c gc.c message.c - -savegame.c: savegame.cfsml - cat savegame.cfsml | ./cfsml.pl -l @CFSML_FLAGS@ -f savegame.cfsml > savegame.c diff --git a/engines/sci/gfx/Makefile.am b/engines/sci/gfx/Makefile.am deleted file mode 100644 index 599d04aba5..0000000000 --- a/engines/sci/gfx/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -SUBDIRS = resource drivers -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -EXTRA_DIST = gfx_line.c gfx_crossblit.c gfx_pixmap_scale.c alpha_mvi_crossblit.c - -noinst_LIBRARIES = libscigraphics.a -libscigraphics_a_LIBADD = alpha_mvi_crossblit_32.o alpha_mvi_crossblit_32_P.o drivers/libscidrivers.a resource/libsciresources.a -EXTRA_libscigraphics_a_SOURCES = gfx_crossblit.c gfx_pixmap_scale.c -libscigraphics_a_SOURCES = font.c gfx_resource.c gfx_support.c gfx_tools.c operations.c resmgr.c sbtree.c widgets.c menubar.c sci_widgets.c antialias.c gfx_console.c gfx_res_options.c font-5x8.c font-6x10.c - -check_PROGRAMS = gfx_test -gfx_test_LDADD = libscigraphics.a drivers/libscidrivers.a @X_LIBS@ @ac_glx_libraries@ @ac_ggi_libraries@ @ac_readline@ @ac_curses_libraries@ @ac_png_libraries@ -lm @SDL_LIBS@ -gfx_test_SOURCES = gfx_test.c - -alpha_mvi_crossblit_32.o: - $(COMPILE) @ev6_cpu@ -I../.. -I../include -DHAVE_CONFIG_H -DFUNCT_NAME=alpha_mvi_crossblit_32 -c $(top_srcdir)/src/gfx/alpha_mvi_crossblit.c -o $(top_builddir)/src/gfx/alpha_mvi_crossblit_32.o - -alpha_mvi_crossblit_32_P.o: - $(COMPILE) @ev6_cpu@ -I../.. -I../include -DHAVE_CONFIG_H -DPRIORITY=1 -DFUNCT_NAME=alpha_mvi_crossblit_32_P -c $(top_srcdir)/src/gfx/alpha_mvi_crossblit.c -o $(top_builddir)/src/gfx/alpha_mvi_crossblit_32_P.o - - diff --git a/engines/sci/gfx/drivers/Makefile.am b/engines/sci/gfx/drivers/Makefile.am deleted file mode 100644 index c5dbbe0e9f..0000000000 --- a/engines/sci/gfx/drivers/Makefile.am +++ /dev/null @@ -1,32 +0,0 @@ -EXTRA_DIST = dc_driver.c dd_driver.cpp dd_driver.h dd_driver_line.cpp dx_driver.cpp dx_driver.h -INCLUDES = -I$(top_srcdir)/src/include @ac_ggi_includes@ @ac_png_includes@ @X_CFLAGS@ @EXTRA_INCLUDES@ -AM_CFLAGS = $(SDL_CFLAGS) -LDADD = $(LDADD_ALL) - -gfxdriverdir = $(libdir)/freesci/gfx - -#EXTRA_LTLIBRARIES = xlib_driver.la ggi_driver.la sdl_driver.la -#gfxdriver_LTLIBRARIES = @fsci_xlib_dl@ @fsci_ggi_dl@ @fsci_sdl_dl@ - -noinst_LIBRARIES = libscidrivers.a -libscidrivers_a_SOURCES = gfx_drivers.c xlib_driver.c ggi_driver.c sdl_driver.c directfb_driver.c \ - null_driver.c -#libscidrivers_a_OBJECTS = gfx_drivers.o @fsci_xlib_st@ @fsci_ggi_st@ @fsci_sdl_st@ - - -#xlib_driver_la_LDFLAGS = -rpath $(gfxdriverdir) -module -no-undefined \ -# -export-symbols $(srcdir)/EXPORTS_xlib -#xlib_driver_la_LIBADD = @X_LIBS@ -#xlib_driver_la_SOURCES = xlib_driver.c - -#ggi_driver_la_LDFLAGS = -rpath $(gfxdriverdir) -module -no-undefined \ -# -export-symbols $(srcdir)/EXPORTS_ggi -#ggi_driver_la_LIBADD = @X_LIBS@ @ac_ggi_libraries@ -#ggi_driver_la_SOURCES = ggi_driver.c - -#sdl_driver_la_LDFLAGS = -rpath $(gfxdriverdir) -module -no-undefined \ -# -export-symbols $(srcdir)/EXPORTS_sdl -#sdl_driver_la_LIBADD = @SDL_LIBS@ -#3sdl_driver_la_SOURCES = sdl_driver.c - - diff --git a/engines/sci/gfx/resource/Makefile.am b/engines/sci/gfx/resource/Makefile.am deleted file mode 100644 index 4a943e67f0..0000000000 --- a/engines/sci/gfx/resource/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -LDADD = $(LDADD_ALL) -EXTRA_DIST = sci_picfill.c sci_picfill_aux.c - -noinst_LIBRARIES = libsciresources.a -libsciresources_a_SOURCES = sci_font.c sci_resmgr.c sci_pic_0.c sci_view_0.c sci_cursor_0.c sci_pal_1.c \ - sci_view_1.c diff --git a/engines/sci/include/Makefile.am b/engines/sci/include/Makefile.am deleted file mode 100644 index 316690244c..0000000000 --- a/engines/sci/include/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -SUBDIRS = win32 beos -EXTRA_DIST = old_objects.h kernel.h event.h \ - kdebug.h sci_conf.h resource.h script.h \ - vocabulary.h uinput.h console.h script.h vm.h \ - engine.h util.h menubar.h versions.h sci_dos.h \ - gfx_driver.h gfx_operations.h gfx_options.h \ - gfx_resmgr.h gfx_resource.h gfx_widgets.h \ - gfx_state_internal.h gfx_system.h gfx_tools.h \ - sci_widgets.h scitypes.h sbtree.h \ - sciresource.h modules.h sci_memory.h \ - hashmap.h int_hashmap.h sys_strings.h heapmgr.h \ - sfx_iterator.h sfx_songlib.h \ - sfx_engine.h vm_types.h seg_manager.h \ - sfx_timer.h sfx_player.h gfx_res_options.h \ - sfx_time.h sci_midi.h \ - sfx_core.h sfx_pcm.h listener.h \ - sfx_iterator_internal.h game_select.h \ - reg_t_hashmap.h list.h aatree.h - diff --git a/engines/sci/include/beos/Makefile.am b/engines/sci/include/beos/Makefile.am deleted file mode 100644 index d449e08e0a..0000000000 --- a/engines/sci/include/beos/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -EXTRA_DIST = collsyms.h fnmatch.h
\ No newline at end of file diff --git a/engines/sci/include/beos/collsyms.h b/engines/sci/include/beos/collsyms.h deleted file mode 100644 index 7ef0906879..0000000000 --- a/engines/sci/include/beos/collsyms.h +++ /dev/null @@ -1,129 +0,0 @@ -/* collsyms.h -- collating symbol names and their corresponding characters - (in ascii) as given by POSIX.2 in table 2.8. */ - -/* Copyright (C) 1997 Free Software Foundation, Inc. - - This file is part of GNU Bash, the Bourne Again SHell. - - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. - - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ - -#ifndef _COLLSYMS_H_ -# define _COLLSYSMS_H_ - -/* The upper-case letters, lower-case letters, and digits are omitted from - this table. The digits are not included in the table in the POSIX.2 - spec. The upper and lower case letters are translated by the code - in fnmatch.c:collsym(). */ - -typedef struct _collsym { - char *name; - char code; -} COLLSYM; - -static COLLSYM posix_collsyms[] = -{ - "NUL", '\0', - "SOH", '\001', - "STX", '\002', - "ETX", '\003', - "EOT", '\004', - "ENQ", '\005', - "ACK", '\006', -#ifdef __STDC__ - "alert", '\a', -#else - "alert", '\007', -#endif - "backspace", '\b', - "tab", '\t', - "newline", '\n', - "vertical-tab", '\v', - "form-feed", '\f', - "carriage-return", '\r', - "SO", '\016', - "SI", '\017', - "DLE", '\020', - "DC1", '\021', - "DC2", '\022', - "DC3", '\023', - "DC4", '\024', - "NAK", '\025', - "SYN", '\026', - "ETB", '\027', - "CAN", '\030', - "EM", '\031', - "SUB", '\032', - "ESC", '\033', - "IS4", '\034', - "IS3", '\035', - "IS2", '\036', - "IS1", '\037', - "space", ' ', - "exclamation-mark", '!', - "quotation-mark", '"', - "number-sign", '#', - "dollar-sign", '$', - "percent-sign", '%', - "ampersand", '&', - "apostrophe", '\'', - "left-parenthesis", '(', - "right-parenthesis", ')', - "asterisk", '*', - "plus-sign", '+', - "comma", ',', - "hyphen", '-', - "minus", '-', /* extension from POSIX.2 */ - "dash", '-', /* extension from POSIX.2 */ - "period", '.', - "slash", '/', - "solidus", '/', /* extension from POSIX.2 */ - "zero", '0', - "one", '1', - "two", '2', - "three", '3', - "four", '4', - "five", '5', - "six", '6', - "seven", '7', - "eight", '8', - "nine", '9', - "colon", ':', - "semicolon", ';', - "less-than-sign", '<', - "equals-sign", '=', - "greater-than-sign", '>', - "question-mark", '?', - "commercial-at", '@', - /* upper-case letters omitted */ - "left-square-bracket",'[', - "backslash", '\\', - "reverse-solidus", '\\', - "right-square-bracket", ']', - "circumflex", '^', - "circumflex-accent", '^', /* extension from POSIX.2 */ - "underscore", '_', - "grave-accent", '`', - /* lower-case letters omitted */ - "left-brace", '{', /* extension from POSIX.2 */ - "left-curly-bracket", '{', - "vertical-line", '|', - "right-brace", '}', /* extension from POSIX.2 */ - "right-curly-bracket", '}', - "tilde", '~', - "DEL", '\177', - 0, 0, -}; - -#endif diff --git a/engines/sci/include/beos/fnmatch.h b/engines/sci/include/beos/fnmatch.h deleted file mode 100644 index 7aa1164236..0000000000 --- a/engines/sci/include/beos/fnmatch.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111 USA. */ - -#ifndef _FNMATCH_H -#define _FNMATCH_H 1 - -/* #include "stdc.h" */ - -/* We #undef these before defining them because some losing systems - (HP-UX A.08.07 for example) define these in <unistd.h>. */ -#undef FNM_PATHNAME -#undef FNM_NOESCAPE -#undef FNM_PERIOD - -/* Bits set in the FLAGS argument to `fnmatch'. */ -/* standard flags */ -#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ -#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ -#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ - -/* extended flags */ -#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ -#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ -#define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */ - -/* Value returned by `fnmatch' if STRING does not match PATTERN. */ -#define FNM_NOMATCH 1 - -/* Match STRING against the filename pattern PATTERN, - returning zero if it matches, FNM_NOMATCH if not. */ -/* extern int fnmatch __P((char *, char *, int)); */ -extern int fnmatch (char *, char *, int); - -#endif /* _FNMATCH_H */ diff --git a/engines/sci/include/win32/Makefile.am b/engines/sci/include/win32/Makefile.am deleted file mode 100644 index 89551871e5..0000000000 --- a/engines/sci/include/win32/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -EXTRA_DIST = getopt.h sci_win32.h usleep.h diff --git a/engines/sci/include/win32/getopt.h b/engines/sci/include/win32/getopt.h deleted file mode 100644 index 0abce6e921..0000000000 --- a/engines/sci/include/win32/getopt.h +++ /dev/null @@ -1,127 +0,0 @@ -/* Declarations for getopt. - Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef _GETOPT_H -#define _GETOPT_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* For communication from `getopt' to the caller. - When `getopt' finds an option that takes an argument, - the argument value is returned here. - Also, when `ordering' is RETURN_IN_ORDER, - each non-option ARGV-element is returned here. */ - -extern char *optarg; - -/* Index in ARGV of the next element to be scanned. - This is used for communication to and from the caller - and for communication between successive calls to `getopt'. - - On entry to `getopt', zero means this is the first call; initialize. - - When `getopt' returns EOF, this is the index of the first of the - non-option elements that the caller should itself scan. - - Otherwise, `optind' communicates from one call to the next - how much of ARGV has been scanned so far. */ - -extern int optind; - -/* Callers store zero here to inhibit the error message `getopt' prints - for unrecognized options. */ - -extern int opterr; - -/* Set to an option character which was unrecognized. */ - -extern int optopt; - -/* Describe the long-named options requested by the application. - The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector - of `struct option' terminated by an element containing a name which is - zero. - - The field `has_arg' is: - no_argument (or 0) if the option does not take an argument, - required_argument (or 1) if the option requires an argument, - optional_argument (or 2) if the option takes an optional argument. - - If the field `flag' is not NULL, it points to a variable that is set - to the value given in the field `val' when the option is found, but - left unchanged if the option is not found. - - To have a long-named option do something other than set an `int' to - a compiled-in constant, such as set a value from `optarg', set the - option's `flag' field to zero and its `val' field to a nonzero - value (the equivalent single-letter option character, if there is - one). For long options that have a zero `flag' field, `getopt' - returns the contents of the `val' field. */ - -struct option -{ -#if __STDC__ - const char *name; -#else - char *name; -#endif - /* has_arg can't be an enum because some compilers complain about - type mismatches in all the code that assumes it is an int. */ - int has_arg; - int *flag; - int val; -}; - -/* Names for the values of the `has_arg' field of `struct option'. */ - -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 - -#if __STDC__ || defined(PROTO) -#if defined(__GNU_LIBRARY__) -/* Many other libraries have conflicting prototypes for getopt, with - differences in the consts, in stdlib.h. To avoid compilation - errors, only prototype getopt for the GNU C library. */ -extern int getopt (int argc, char *const *argv, const char *shortopts); -#endif /* not __GNU_LIBRARY__ */ -extern int getopt_long (int argc, char *const *argv, const char *shortopts, - const struct option *longopts, int *longind); -extern int getopt_long_only (int argc, char *const *argv, - const char *shortopts, - const struct option *longopts, int *longind); - -/* Internal only. Users should not call this directly. */ -extern int _getopt_internal (int argc, char *const *argv, - const char *shortopts, - const struct option *longopts, int *longind, - int long_only); -#else /* not __STDC__ */ -extern int getopt (); -extern int getopt_long (); -extern int getopt_long_only (); - -extern int _getopt_internal (); -#endif /* not __STDC__ */ - -#ifdef __cplusplus -} -#endif - -#endif /* _GETOPT_H */ diff --git a/engines/sci/include/win32/sci_win32.h b/engines/sci/include/win32/sci_win32.h deleted file mode 100644 index 5174fd101c..0000000000 --- a/engines/sci/include/win32/sci_win32.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifdef _MSC_VER -// inline keyword only supported in C++ -# undef inline /* just to be sure it is not defined */ -# define inline __inline -# define strcasecmp _stricmp -# define strncasecmp _strnicmp -# define snprintf _snprintf - -# if _MSC_VER < 1500 -# define vsnprintf _vsnprintf -# endif -#endif - -#ifdef _WIN32 - -# ifdef sleep -# undef sleep -# endif - -# define sleep(x) \ - do { \ - if (x == 0) { \ - Sleep(0); \ - } else { \ - if (timeBeginPeriod(1) != TIMERR_NOERROR) \ - fprintf(stderr, "timeBeginPeriod(1) failed\n"); \ - Sleep(x); \ - if (timeEndPeriod(1) != TIMERR_NOERROR) \ - fprintf(stderr, "timeEndPeriod(1) failed\n"); \ - } \ - } while (0); - -# define RECT_T_TO_RECT(rect_t) \ - { (rect_t).x, (rect_t).y, (rect_t).x + (rect_t).xl, (rect_t).y + (rect_t).yl } - -#endif - diff --git a/engines/sci/include/win32/usleep.h b/engines/sci/include/win32/usleep.h deleted file mode 100644 index dd85d3cd87..0000000000 --- a/engines/sci/include/win32/usleep.h +++ /dev/null @@ -1,2 +0,0 @@ -void -usleep (long usec); diff --git a/engines/sci/makefile.dos b/engines/sci/makefile.dos deleted file mode 100644 index 6bfbb3fcf9..0000000000 --- a/engines/sci/makefile.dos +++ /dev/null @@ -1,20 +0,0 @@ -# -# FreeSCI/DOS Makefile -# -# 19991220 rink created this file -# -# -TARGET : freesci.exe - -FILES = main.o config.o -LIBS = engine/libsciengine.a graphics/scigraphics.a scicore/scicore.a \ - sound/scisound.a - -CC = gcc -CFLAGS = -g -c -Iinclude -I../.. -D_DOS -DHAVE_LIBPNG -DHAVE_DGFX - -clean: - del *.o *.a - -freesci.exe: ${FILES} ${LIBS} - gcc -g -o freesci.exe ${FILES} ${LIBS} -lpng -lz diff --git a/engines/sci/menu/Makefile.am b/engines/sci/menu/Makefile.am deleted file mode 100644 index 6c8f0b53de..0000000000 --- a/engines/sci/menu/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -AM_CFLAGS = $(SDL_CFLAGS) -LDADD = -lc -noinst_LIBRARIES = libscimenu.a -libscimenu_a_SOURCES = game_select_init.c game_select_screen.c diff --git a/engines/sci/scicore/Makefile.am b/engines/sci/scicore/Makefile.am deleted file mode 100644 index dfc61adbaa..0000000000 --- a/engines/sci/scicore/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -EXTRA_DIST = sci_dos.c treedef.1 treedef.2 treedef.3 hufftree.1 \ - hufftree.2 hufftree.3 huffmake.pl \ - hashmap.c exe.h exe_dec.h games.h -noinst_LIBRARIES = libscicore.a -libscicore_a_SOURCES = aatree.c tools.c resource.c decompress0.c \ - versions.c decompress01.c decompress1.c decompress11.c \ - script.c vocab.c vocab_debug.c old_objects.c modules.c \ - sci_memory.c resource_map.c resource_patch.c \ - fnmatch.c int_hashmap.c console.c exe.c exe_lzexe.c \ - exe_raw.c reg_t_hashmap.c diff --git a/engines/sci/sciv b/engines/sci/sciv deleted file mode 100644 index 0a33725ce0..0000000000 --- a/engines/sci/sciv +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -echo -------------------------[Depreciation warning]-------------------------------- -echo Using \'sciv\' to start FreeSCI is deprecated and will not be supported in future -echo versions of FreeSCI. Instead, use the \'freesci\' binary. -echo ------------------------------------------------------------------------------- -sleep 3 - -freesci $@ - -echo -------------------------[Depreciation warning]-------------------------------- -echo Using \'sciv\' to start FreeSCI is deprecated and will not be supported in future -echo versions of FreeSCI. Instead, use the \'freesci\' binary. -echo ------------------------------------------------------------------------------- - diff --git a/engines/sci/sfx/Makefile.am b/engines/sci/sfx/Makefile.am deleted file mode 100644 index b085a7c917..0000000000 --- a/engines/sci/sfx/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -SUBDIRS = seq timer player device mixer pcm_device softseq -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -EXTRA_DIST = timetest.c adlib.h device.h mixer.h sequencer.h softseq.h -noinst_LIBRARIES = libscisound.a libscisoundlib.a -libscisound_a_SOURCES = iterator.c songlib.c core.c pcm-iterator.c -libscisoundlib_a_SOURCES = time.c adlib.c - -bin_PROGRAMS = test-iterator -test_iterator_SOURCE = test-iterator.c -test_iterator_LDFLAGS = @SCIV_LDFLAGS@ -LDADD = \ - libscisound.a \ - player/libsciplayer.a \ - seq/libsciseq.a \ - timer/libscitimer.a \ - pcm_device/libscipcm.a \ - mixer/libscimixer.a \ - softseq/libscisoftseq.a \ - libscisoundlib.a \ - device/libscisounddevice.a \ - ../scicore/libscicore.a \ - @LIB_M@ - - -TESTS = test-iterator - - diff --git a/engines/sci/sfx/device/Makefile.am b/engines/sci/sfx/device/Makefile.am deleted file mode 100644 index 4a4f023251..0000000000 --- a/engines/sci/sfx/device/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -noinst_LIBRARIES = libscisounddevice.a -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -libscisounddevice_a_SOURCES = devices.c alsa-midi.c unixraw-midi.c camd-midi.c diff --git a/engines/sci/sfx/mixer/Makefile.am b/engines/sci/sfx/mixer/Makefile.am deleted file mode 100644 index 684d40a4ba..0000000000 --- a/engines/sci/sfx/mixer/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -EXTRA_DIST = dc.c -noinst_LIBRARIES = libscimixer.a -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -libscimixer_a_SOURCES = mixers.c soft.c -test_LDADD = libscimixer.a ../../scicore/libscicore.a -check_PROGRAMS = test diff --git a/engines/sci/sfx/pcm_device/Makefile.am b/engines/sci/sfx/pcm_device/Makefile.am deleted file mode 100644 index b13a3aab0b..0000000000 --- a/engines/sci/sfx/pcm_device/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -noinst_LIBRARIES = libscipcm.a -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -AM_CFLAGS = $(SDL_CFLAGS) -EXTRA_DIST = audiobuf.h -libscipcm_a_SOURCES = audiobuf.c pcm_devices.c sdl.c alsa.c -audbuf_test_LDADD = libscipcm.a ../../scicore/libscicore.a -check_PROGRAMS = audbuf_test diff --git a/engines/sci/sfx/player/Makefile.am b/engines/sci/sfx/player/Makefile.am deleted file mode 100644 index 34ae8e8427..0000000000 --- a/engines/sci/sfx/player/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -noinst_LIBRARIES = libsciplayer.a -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -libsciplayer_a_SOURCES = players.c realtime.c polled.c diff --git a/engines/sci/sfx/seq/Makefile.am b/engines/sci/sfx/seq/Makefile.am deleted file mode 100644 index 74fb4fda3f..0000000000 --- a/engines/sci/sfx/seq/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -noinst_LIBRARIES = libsciseq.a -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -EXTRA_DIST = instrument-map.h -libsciseq_a_SOURCES = sequencers.c oss-adlib.c mt32.c gm.c instrument-map.c \ - map-mt32-to-gm.c diff --git a/engines/sci/sfx/softseq/Makefile.am b/engines/sci/sfx/softseq/Makefile.am deleted file mode 100644 index af7f8ca2c9..0000000000 --- a/engines/sci/sfx/softseq/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -noinst_LIBRARIES = libscisoftseq.a -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -libscisoftseq_a_SOURCES = softsequencers.c pcspeaker.c SN76496.c fmopl.c opl2.c amiga.c \ - fluidsynth.c -EXTRA_DIST = fmopl.h diff --git a/engines/sci/sfx/softseq/mt32/Makefile.am b/engines/sci/sfx/softseq/mt32/Makefile.am deleted file mode 100644 index 5d2ffa31c8..0000000000 --- a/engines/sci/sfx/softseq/mt32/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -noinst_HEADERS = freeverb.h mt32emu.h part.h partialManager.h synth.h \ -i386.h mt32_file.h partial.h structures.h tables.h -noinst_LIBRARIES = libmt32emu.a -libmt32emu_a_SOURCES = freeverb.cpp mt32_file.cpp partial.cpp synth.cpp \ -i386.cpp part.cpp partialManager.cpp tables.cpp diff --git a/engines/sci/sfx/timer/Makefile.am b/engines/sci/sfx/timer/Makefile.am deleted file mode 100644 index 74f3bee426..0000000000 --- a/engines/sci/sfx/timer/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -EXTRA_DIST = pthread.c -noinst_LIBRARIES = libscitimer.a -INCLUDES = -I$(top_srcdir)/src/include @EXTRA_INCLUDES@ -libscitimer_a_SOURCES = timers.c sigalrm.c diff --git a/engines/sci/tools/Makefile.am b/engines/sci/tools/Makefile.am deleted file mode 100644 index 715a438251..0000000000 --- a/engines/sci/tools/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -INCLUDES = -I$(top_srcdir)/src/include @ac_png_includes@ @EXTRA_INCLUDES@ -LDADD = ../scicore/libscicore.a -EXTRA_DIST = sciunpack.h bdf.h bdfP.h -bin_PROGRAMS = sciunpack scidisasm scipack bdftofont fonttoc scimusicplayer -sciunpack_SOURCES = sciunpack.c listwords.c scriptdump.c vocabdump.c -sciunpack_LDADD = ../scicore/libscicore.a @ac_glx_libraries@ @ac_glx_libraries@ @ac_png_libraries@ -scidisasm_SOURCES = scidisasm.c -scipack_LDADD = ../scicore/libscicore.a -scipack_SOURCES = scipack.c -scimusicplayer_LDADD = ../sfx/libscisound.a ../scicore/libscicore.a \ - ../sfx/player/libsciplayer.a \ - ../sfx/seq/libsciseq.a ../sfx/timer/libscitimer.a \ - ../sfx/pcm_device/libscipcm.a ../sfx/mixer/libscimixer.a \ - ../sfx/softseq/libscisoftseq.a \ - ../sfx/libscisoundlib.a \ - ../sfx/device/libscisounddevice.a @LIB_M@ -scimusicplayer_SOURCES = musicplayer.c -bdftofont_SOURCES = bdf.c bdfgrid.c bdfgname.c bdftofont.c -fonttoc_SOURCES = fonttoc.c diff --git a/engines/sci/win32/Makefile.am b/engines/sci/win32/Makefile.am deleted file mode 100644 index 701c376d1f..0000000000 --- a/engines/sci/win32/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -EXTRA_DIST = freesci.def getopt.c \ - msvc71-2003/freesci.sln msvc71-2003/fsci_dll/fsci_dll.vcproj msvc71-2003/sciv/sciv.vcproj \ - msvc80-2005/freesci.sln msvc80-2005/fsci_dll/fsci_dll.vcproj msvc80-2005/sciv/sciv.vcproj \ - msvc90-2008/freesci.sln msvc90-2008/fsci_dll/fsci_dll.vcproj msvc90-2008/sciv/sciv.vcproj -noinst_LIBRARIES = libsciwin32.a -libsciwin32_a_SOURCES = usleep.c diff --git a/engines/sci/win32/freesci.def b/engines/sci/win32/freesci.def deleted file mode 100644 index 5a849571a3..0000000000 --- a/engines/sci/win32/freesci.def +++ /dev/null @@ -1,103 +0,0 @@ -LIBRARY -EXPORTS - -_debug_get_input DATA -_debug_seeking DATA -_debug_step_running DATA -_debugstate_valid DATA -_SCI_CALLOC -_SCI_FREE -_SCI_MALLOC -_SCI_MEMDUP -_SCI_REALLOC -_SCI_STRDUP -class_names DATA -close_console_file -con_gfx_init -con_gfx_read -con_gfx_show -con_hook_command -con_hook_int -con_init -con_parse -con_passthrough DATA -formats DATA -game_exit -game_init -game_init_graphics -game_init_sound -game_restore -game_run -gfx_alloc_color -gfx_crossblit_alpha_threshold DATA -gfx_find_driver -gfx_free_pixmap -gfx_get_driver_name -gfx_new_pixmap -gfx_pixmap_alloc_data -gfx_pixmap_alloc_index_data -gfx_update_conf -gfx_xlate_pixmap -gfxop_exit -gfxop_init -gfxop_init_default -gfxop_set_clip_zone -gfxr_draw_font -gfxr_font_calculate_size -gfxr_free_font -gfxr_get_font -gfxr_interpreter_get_static_palette -gfxr_read_font -loadObjects -memtest -open_console_file -printObject -sci_error_types DATA -sci_fd_size -sci_ffs -sci_find_first -sci_find_next -sci_finish_find -sci_get_homedir -sci_getcwd -sci_gettime -sci_hexdump -sci_init_dir -sci_open -sci_resource_type_suffixes -sci_resource_types -sci_sched_yield -sci_version_types DATA -sci0_palette -sci0_read_resource_map -sci01_priority_table_flags -sciprintf -scir_find_resource -scir_free_resource_manager -scir_new_resource_manager -script_abort_flag DATA -script_adjust_opcode_formats -script_debug_flag DATA -script_dissect -script_free_breakpoints -script_free_engine -script_init_engine -script_set_gamestate_save_dir -script_set_gamestate_save_dir -set_debug_mode -test_savegame -usleep -version_detect_from_executable -version_guess_from_hashcode -version_parse -vocab_free_words -vocab_get_any_group_word -vocab_get_words -vocabulary_free_knames -vocabulary_free_opcodes -vocabulary_free_snames -vocabulary_get_class_count -vocabulary_get_classes -vocabulary_get_knames -vocabulary_get_opcodes -vocabulary_get_snames diff --git a/engines/sci/win32/getopt.c b/engines/sci/win32/getopt.c deleted file mode 100644 index eff0777946..0000000000 --- a/engines/sci/win32/getopt.c +++ /dev/null @@ -1,755 +0,0 @@ -/* Getopt for GNU. - NOTE: getopt is now part of the C library, so if you don't know what - "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu - before changing it! - - Copyright (C) 1987, 88, 89, 90, 91, 92, 1993 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef __STDC__ -# ifndef const -# define const -# endif -#endif - -/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>. */ -#ifndef _NO_PROTO -#define _NO_PROTO -#endif - -#include <stdio.h> -#include <string.h> - -/* Comment out all this code if we are using the GNU C Library, and are not - actually compiling the library itself. This code is part of the GNU C - Library, but also included in many other GNU distributions. Compiling - and linking in this code is a waste when using the GNU C library - (especially if it is a shared library). Rather than having every GNU - program understand `configure --with-gnu-libc' and omit the object files, - it is simpler to just do this in the source for each such file. */ - -#if defined (_LIBC) || !defined (__GNU_LIBRARY__) - - -/* This needs to come after some library #include - to get __GNU_LIBRARY__ defined. */ -#ifdef __GNU_LIBRARY__ -/* Don't include stdlib.h for non-GNU C libraries because some of them - contain conflicting prototypes for getopt. */ -#include <stdlib.h> -#endif /* GNU C library. */ - -/* If GETOPT_COMPAT is defined, `+' as well as `--' can introduce a - long-named option. Because this is not POSIX.2 compliant, it is - being phased out. */ -/* #define GETOPT_COMPAT */ - -/* This version of `getopt' appears to the caller like standard Unix `getopt' - but it behaves differently for the user, since it allows the user - to intersperse the options with the other arguments. - - As `getopt' works, it permutes the elements of ARGV so that, - when it is done, all the options precede everything else. Thus - all application programs are extended to handle flexible argument order. - - Setting the environment variable POSIXLY_CORRECT disables permutation. - Then the behavior is completely standard. - - GNU application programs can use a third alternative mode in which - they can distinguish the relative order of options and other arguments. */ - -#include <win32/getopt.h> - -/* For communication from `getopt' to the caller. - When `getopt' finds an option that takes an argument, - the argument value is returned here. - Also, when `ordering' is RETURN_IN_ORDER, - each non-option ARGV-element is returned here. */ - -char *optarg = 0; - -/* Index in ARGV of the next element to be scanned. - This is used for communication to and from the caller - and for communication between successive calls to `getopt'. - - On entry to `getopt', zero means this is the first call; initialize. - - When `getopt' returns EOF, this is the index of the first of the - non-option elements that the caller should itself scan. - - Otherwise, `optind' communicates from one call to the next - how much of ARGV has been scanned so far. */ - -/* XXX 1003.2 says this must be 1 before any call. */ -int optind = 0; - -/* The next char to be scanned in the option-element - in which the last option character we returned was found. - This allows us to pick up the scan where we left off. - - If this is zero, or a null string, it means resume the scan - by advancing to the next ARGV-element. */ - -static char *nextchar; - -/* Callers store zero here to inhibit the error message - for unrecognized options. */ - -int opterr = 1; - -/* Set to an option character which was unrecognized. - This must be initialized on some systems to avoid linking in the - system's own getopt implementation. */ - -#define BAD_OPTION '\0' -int optopt = BAD_OPTION; - -/* Describe how to deal with options that follow non-option ARGV-elements. - - If the caller did not specify anything, - the default is REQUIRE_ORDER if the environment variable - POSIXLY_CORRECT is defined, PERMUTE otherwise. - - REQUIRE_ORDER means don't recognize them as options; - stop option processing when the first non-option is seen. - This is what Unix does. - This mode of operation is selected by either setting the environment - variable POSIXLY_CORRECT, or using `+' as the first character - of the list of option characters. - - PERMUTE is the default. We permute the contents of ARGV as we scan, - so that eventually all the non-options are at the end. This allows options - to be given in any order, even with programs that were not written to - expect this. - - RETURN_IN_ORDER is an option available to programs that were written - to expect options and other ARGV-elements in any order and that care about - the ordering of the two. We describe each non-option ARGV-element - as if it were the argument of an option with character code 1. - Using `-' as the first character of the list of option characters - selects this mode of operation. - - The special argument `--' forces an end of option-scanning regardless - of the value of `ordering'. In the case of RETURN_IN_ORDER, only - `--' can cause `getopt' to return EOF with `optind' != ARGC. */ - -static enum -{ - REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER -} ordering; - -#ifdef __GNU_LIBRARY__ -/* We want to avoid inclusion of string.h with non-GNU libraries - because there are many ways it can cause trouble. - On some systems, it contains special magic macros that don't work - in GCC. */ -#include <string.h> -#define my_index strchr -#define my_strlen strlen -#else - -/* Avoid depending on library functions or files - whose names are inconsistent. */ - -#if __STDC__ || defined(PROTO) -extern char *getenv(const char *name); -extern int strcmp (const char *s1, const char *s2); -extern int strncmp(const char *s1, const char *s2, int n); - -static int my_strlen(const char *s); -static char *my_index (const char *str, int chr); -#else -extern char *getenv (); -#endif - -static int -my_strlen (str) - const char *str; -{ - int n = 0; - while (*str++) - n++; - return n; -} - -static char * -my_index (str, chr) - const char *str; - int chr; -{ - while (*str) - { - if (*str == chr) - return (char *) str; - str++; - } - return 0; -} - -#endif /* GNU C library. */ - -/* Handle permutation of arguments. */ - -/* Describe the part of ARGV that contains non-options that have - been skipped. `first_nonopt' is the index in ARGV of the first of them; - `last_nonopt' is the index after the last of them. */ - -static int first_nonopt; -static int last_nonopt; - -/* Exchange two adjacent subsequences of ARGV. - One subsequence is elements [first_nonopt,last_nonopt) - which contains all the non-options that have been skipped so far. - The other is elements [last_nonopt,optind), which contains all - the options processed since those non-options were skipped. - - `first_nonopt' and `last_nonopt' are relocated so that they describe - the new indices of the non-options in ARGV after they are moved. - - To perform the swap, we first reverse the order of all elements. So - all options now come before all non options, but they are in the - wrong order. So we put back the options and non options in original - order by reversing them again. For example: - original input: a b c -x -y - reverse all: -y -x c b a - reverse options: -x -y c b a - reverse non options: -x -y a b c -*/ - -#if __STDC__ || defined(PROTO) -static void exchange (char **argv); -#endif - -static void -exchange (argv) - char **argv; -{ - char *temp, **first, **last; - - /* Reverse all the elements [first_nonopt, optind) */ - first = &argv[first_nonopt]; - last = &argv[optind-1]; - while (first < last) { - temp = *first; *first = *last; *last = temp; first++; last--; - } - /* Put back the options in order */ - first = &argv[first_nonopt]; - first_nonopt += (optind - last_nonopt); - last = &argv[first_nonopt - 1]; - while (first < last) { - temp = *first; *first = *last; *last = temp; first++; last--; - } - - /* Put back the non options in order */ - first = &argv[first_nonopt]; - last_nonopt = optind; - last = &argv[last_nonopt-1]; - while (first < last) { - temp = *first; *first = *last; *last = temp; first++; last--; - } -} - -/* Scan elements of ARGV (whose length is ARGC) for option characters - given in OPTSTRING. - - If an element of ARGV starts with '-', and is not exactly "-" or "--", - then it is an option element. The characters of this element - (aside from the initial '-') are option characters. If `getopt' - is called repeatedly, it returns successively each of the option characters - from each of the option elements. - - If `getopt' finds another option character, it returns that character, - updating `optind' and `nextchar' so that the next call to `getopt' can - resume the scan with the following option character or ARGV-element. - - If there are no more option characters, `getopt' returns `EOF'. - Then `optind' is the index in ARGV of the first ARGV-element - that is not an option. (The ARGV-elements have been permuted - so that those that are not options now come last.) - - OPTSTRING is a string containing the legitimate option characters. - If an option character is seen that is not listed in OPTSTRING, - return BAD_OPTION after printing an error message. If you set `opterr' to - zero, the error message is suppressed but we still return BAD_OPTION. - - If a char in OPTSTRING is followed by a colon, that means it wants an arg, - so the following text in the same ARGV-element, or the text of the following - ARGV-element, is returned in `optarg'. Two colons mean an option that - wants an optional arg; if there is text in the current ARGV-element, - it is returned in `optarg', otherwise `optarg' is set to zero. - - If OPTSTRING starts with `-' or `+', it requests different methods of - handling the non-option ARGV-elements. - See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. - - Long-named options begin with `--' instead of `-'. - Their names may be abbreviated as long as the abbreviation is unique - or is an exact match for some defined option. If they have an - argument, it follows the option name in the same ARGV-element, separated - from the option name by a `=', or else the in next ARGV-element. - When `getopt' finds a long-named option, it returns 0 if that option's - `flag' field is nonzero, the value of the option's `val' field - if the `flag' field is zero. - - The elements of ARGV aren't really const, because we permute them. - But we pretend they're const in the prototype to be compatible - with other systems. - - LONGOPTS is a vector of `struct option' terminated by an - element containing a name which is zero. - - LONGIND returns the index in LONGOPT of the long-named option found. - It is only valid when a long-named option has been found by the most - recent call. - - If LONG_ONLY is nonzero, '-' as well as '--' can introduce - long-named options. */ - -int -_getopt_internal (argc, argv, optstring, longopts, longind, long_only) - int argc; - char *const *argv; - const char *optstring; - const struct option *longopts; - int *longind; - int long_only; -{ - int option_index; - - optarg = 0; - - /* Initialize the internal data when the first call is made. - Start processing options with ARGV-element 1 (since ARGV-element 0 - is the program name); the sequence of previously skipped - non-option ARGV-elements is empty. */ - - if (optind == 0) - { - first_nonopt = last_nonopt = optind = 1; - - nextchar = NULL; - - /* Determine how to handle the ordering of options and nonoptions. */ - - if (optstring[0] == '-') - { - ordering = RETURN_IN_ORDER; - ++optstring; - } - else if (optstring[0] == '+') - { - ordering = REQUIRE_ORDER; - ++optstring; - } - else if (getenv ("POSIXLY_CORRECT") != NULL) - ordering = REQUIRE_ORDER; - else - ordering = PERMUTE; - } - - if (nextchar == NULL || *nextchar == '\0') - { - if (ordering == PERMUTE) - { - /* If we have just processed some options following some non-options, - exchange them so that the options come first. */ - - if (first_nonopt != last_nonopt && last_nonopt != optind) - exchange ((char **) argv); - else if (last_nonopt != optind) - first_nonopt = optind; - - /* Now skip any additional non-options - and extend the range of non-options previously skipped. */ - - while (optind < argc - && (argv[optind][0] != '-' || argv[optind][1] == '\0') -#ifdef GETOPT_COMPAT - && (longopts == NULL - || argv[optind][0] != '+' || argv[optind][1] == '\0') -#endif /* GETOPT_COMPAT */ - ) - optind++; - last_nonopt = optind; - } - - /* Special ARGV-element `--' means premature end of options. - Skip it like a null option, - then exchange with previous non-options as if it were an option, - then skip everything else like a non-option. */ - - if (optind != argc && !strcmp (argv[optind], "--")) - { - optind++; - - if (first_nonopt != last_nonopt && last_nonopt != optind) - exchange ((char **) argv); - else if (first_nonopt == last_nonopt) - first_nonopt = optind; - last_nonopt = argc; - - optind = argc; - } - - /* If we have done all the ARGV-elements, stop the scan - and back over any non-options that we skipped and permuted. */ - - if (optind == argc) - { - /* Set the next-arg-index to point at the non-options - that we previously skipped, so the caller will digest them. */ - if (first_nonopt != last_nonopt) - optind = first_nonopt; - return EOF; - } - - /* If we have come to a non-option and did not permute it, - either stop the scan or describe it to the caller and pass it by. */ - - if ((argv[optind][0] != '-' || argv[optind][1] == '\0') -#ifdef GETOPT_COMPAT - && (longopts == NULL - || argv[optind][0] != '+' || argv[optind][1] == '\0') -#endif /* GETOPT_COMPAT */ - ) - { - if (ordering == REQUIRE_ORDER) - return EOF; - optarg = argv[optind++]; - return 1; - } - - /* We have found another option-ARGV-element. - Start decoding its characters. */ - - nextchar = (argv[optind] + 1 - + (longopts != NULL && argv[optind][1] == '-')); - } - - if (longopts != NULL - && ((argv[optind][0] == '-' - && (argv[optind][1] == '-' || long_only)) -#ifdef GETOPT_COMPAT - || argv[optind][0] == '+' -#endif /* GETOPT_COMPAT */ - )) - { - const struct option *p; - char *s = nextchar; - int exact = 0; - int ambig = 0; - const struct option *pfound = NULL; - int indfound = 0; - - while (*s && *s != '=') - s++; - - /* Test all options for either exact match or abbreviated matches. */ - for (p = longopts, option_index = 0; p->name; - p++, option_index++) - if (!strncmp (p->name, nextchar, s - nextchar)) - { - if (s - nextchar == my_strlen (p->name)) - { - /* Exact match found. */ - pfound = p; - indfound = option_index; - exact = 1; - break; - } - else if (pfound == NULL) - { - /* First nonexact match found. */ - pfound = p; - indfound = option_index; - } - else - /* Second nonexact match found. */ - ambig = 1; - } - - if (ambig && !exact) - { - if (opterr) - fprintf (stderr, "%s: option `%s' is ambiguous\n", - argv[0], argv[optind]); - nextchar += my_strlen (nextchar); - optind++; - return BAD_OPTION; - } - - if (pfound != NULL) - { - option_index = indfound; - optind++; - if (*s) - { - /* Don't test has_arg with >, because some C compilers don't - allow it to be used on enums. */ - if (pfound->has_arg) - optarg = s + 1; - else - { - if (opterr) - { - if (argv[optind - 1][1] == '-') - /* --option */ - fprintf (stderr, - "%s: option `--%s' doesn't allow an argument\n", - argv[0], pfound->name); - else - /* +option or -option */ - fprintf (stderr, - "%s: option `%c%s' doesn't allow an argument\n", - argv[0], argv[optind - 1][0], pfound->name); - } - nextchar += my_strlen (nextchar); - return BAD_OPTION; - } - } - else if (pfound->has_arg == 1) - { - if (optind < argc) - optarg = argv[optind++]; - else - { - if (opterr) - fprintf (stderr, "%s: option `%s' requires an argument\n", - argv[0], argv[optind - 1]); - nextchar += my_strlen (nextchar); - return optstring[0] == ':' ? ':' : BAD_OPTION; - } - } - nextchar += my_strlen (nextchar); - if (longind != NULL) - *longind = option_index; - if (pfound->flag) - { - *(pfound->flag) = pfound->val; - return 0; - } - return pfound->val; - } - /* Can't find it as a long option. If this is not getopt_long_only, - or the option starts with '--' or is not a valid short - option, then it's an error. - Otherwise interpret it as a short option. */ - if (!long_only || argv[optind][1] == '-' -#ifdef GETOPT_COMPAT - || argv[optind][0] == '+' -#endif /* GETOPT_COMPAT */ - || my_index (optstring, *nextchar) == NULL) - { - if (opterr) - { - if (argv[optind][1] == '-') - /* --option */ - fprintf (stderr, "%s: unrecognized option `--%s'\n", - argv[0], nextchar); - else - /* +option or -option */ - fprintf (stderr, "%s: unrecognized option `%c%s'\n", - argv[0], argv[optind][0], nextchar); - } - nextchar = (char *) ""; - optind++; - return BAD_OPTION; - } - } - - /* Look at and handle the next option-character. */ - - { - char c = *nextchar++; - char *temp = my_index (optstring, c); - - /* Increment `optind' when we start to process its last character. */ - if (*nextchar == '\0') - ++optind; - - if (temp == NULL || c == ':') - { - if (opterr) - { -#if 0 - if (c < 040 || c >= 0177) - fprintf (stderr, "%s: unrecognized option, character code 0%o\n", - argv[0], c); - else - fprintf (stderr, "%s: unrecognized option `-%c'\n", argv[0], c); -#else - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, "%s: illegal option -- %c\n", argv[0], c); -#endif - } - optopt = c; - return BAD_OPTION; - } - if (temp[1] == ':') - { - if (temp[2] == ':') - { - /* This is an option that accepts an argument optionally. */ - if (*nextchar != '\0') - { - optarg = nextchar; - optind++; - } - else - optarg = 0; - nextchar = NULL; - } - else - { - /* This is an option that requires an argument. */ - if (*nextchar != '\0') - { - optarg = nextchar; - /* If we end this ARGV-element by taking the rest as an arg, - we must advance to the next element now. */ - optind++; - } - else if (optind == argc) - { - if (opterr) - { -#if 0 - fprintf (stderr, "%s: option `-%c' requires an argument\n", - argv[0], c); -#else - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, "%s: option requires an argument -- %c\n", - argv[0], c); -#endif - } - optopt = c; - if (optstring[0] == ':') - c = ':'; - else - c = BAD_OPTION; - } - else - /* We already incremented `optind' once; - increment it again when taking next ARGV-elt as argument. */ - optarg = argv[optind++]; - nextchar = NULL; - } - } - return c; - } -} - -int -getopt (argc, argv, optstring) - int argc; - char *const *argv; - const char *optstring; -{ - return _getopt_internal (argc, argv, optstring, - (const struct option *) 0, - (int *) 0, - 0); -} - -int -getopt_long (argc, argv, options, long_options, opt_index) - int argc; - char *const *argv; - const char *options; - const struct option *long_options; - int *opt_index; -{ - return _getopt_internal (argc, argv, options, long_options, opt_index, 0); -} - -#endif /* _LIBC or not __GNU_LIBRARY__. */ - -#ifdef TEST - -/* Compile with -DTEST to make an executable for use in testing - the above definition of `getopt'. */ - -int -main (argc, argv) - int argc; - char **argv; -{ - int c; - int digit_optind = 0; - - while (1) - { - int this_option_optind = optind ? optind : 1; - - c = getopt (argc, argv, "abc:d:0123456789"); - if (c == EOF) - break; - - switch (c) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (digit_optind != 0 && digit_optind != this_option_optind) - printf ("digits occur in two different argv-elements.\n"); - digit_optind = this_option_optind; - printf ("option %c\n", c); - break; - - case 'a': - printf ("option a\n"); - break; - - case 'b': - printf ("option b\n"); - break; - - case 'c': - printf ("option c with value `%s'\n", optarg); - break; - - case BAD_OPTION: - break; - - default: - printf ("?? getopt returned character code 0%o ??\n", c); - } - } - - if (optind < argc) - { - printf ("non-option ARGV-elements: "); - while (optind < argc) - printf ("%s ", argv[optind++]); - printf ("\n"); - } - - exit (0); -} - -#endif /* TEST */ diff --git a/engines/sci/win32/msvc71-2003/freesci.sln b/engines/sci/win32/msvc71-2003/freesci.sln deleted file mode 100644 index 0863329a64..0000000000 --- a/engines/sci/win32/msvc71-2003/freesci.sln +++ /dev/null @@ -1,34 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsci_dll", "fsci_dll\fsci_dll.vcproj", "{B605B919-02BD-4E2D-B043-08A21736B01A}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sciv", "sciv\sciv.vcproj", "{6BF71632-BD06-4D48-AE7C-21C6EB76CACA}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {B605B919-02BD-4E2D-B043-08A21736B01A}.Debug.ActiveCfg = Debug|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Debug.Build.0 = Debug|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Release.ActiveCfg = Release|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Release.Build.0 = Release|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Debug.ActiveCfg = Debug|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Debug.Build.0 = Debug|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Release.ActiveCfg = Release|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection -EndGlobal diff --git a/engines/sci/win32/msvc71-2003/fsci_dll/fsci_dll.vcproj b/engines/sci/win32/msvc71-2003/fsci_dll/fsci_dll.vcproj deleted file mode 100644 index f37dfd7258..0000000000 --- a/engines/sci/win32/msvc71-2003/fsci_dll/fsci_dll.vcproj +++ /dev/null @@ -1,932 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="fsci_dll" - ProjectGUID="{B605B919-02BD-4E2D-B043-08A21736B01A}" - RootNamespace="fsci_dll" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - OptimizeForProcessor="3" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VERSION=\"0.6.3-dev\";PACKAGE=\"FreeSCI\";FREESCI_EXPORTS;X_DISPLAY_MISSING;HAVE_SDL;HAVE_DIRECTX;HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - StringPooling="TRUE" - RuntimeLibrary="2" - BufferSecurityCheck="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="SDL.lib d3d8.lib d3dx8.lib dxerr8.lib winmm.lib" - OutputFile="$(OutDir)/fsci.dll" - LinkIncremental="1" - SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories=""$(SolutionDir)..\..\..\..\SDL\lib"" - IgnoreDefaultLibraryNames="libci.lib" - ModuleDefinitionFile="$(SolutionDir)..\freesci.def" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - ImportLibrary="$(TargetDir)$(TargetName).lib" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool" - MkTypLibCompatible="TRUE" - SuppressStartupBanner="TRUE" - TargetEnvironment="1" - TypeLibraryName=".\Release/fsci_dll.tlb" - HeaderFileName=""/> - <Tool - Name="VCPostBuildEventTool" - CommandLine="echo Copying SDL.dll to $(OutDir)\ -copy /y $(SolutionDir)..\..\..\..\SDL\lib\sdl.dll $(OutDir)\ -"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;VERSION=__TIMESTAMP__;PACKAGE=\"FreeSCI\";FREESCI_EXPORTS;X_DISPLAY_MISSING;HAVE_SDL;HAVE_DIRECTX;HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - RuntimeLibrary="3" - BufferSecurityCheck="FALSE" - RuntimeTypeInfo="TRUE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="SDL.lib d3d8.lib d3dx8.lib dxerr8.lib winmm.lib" - OutputFile="$(OutDir)/fsci.dll" - LinkIncremental="1" - SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories=""$(SolutionDir)..\..\..\..\SDL\lib"" - IgnoreDefaultLibraryNames="libci.lib" - ModuleDefinitionFile="$(SolutionDir)..\freesci.def" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - ImportLibrary="$(TargetDir)$(TargetName).lib" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="TRUE" - SuppressStartupBanner="TRUE" - TargetEnvironment="1" - TypeLibraryName=".\Debug/fsci_dll.tlb" - HeaderFileName=""/> - <Tool - Name="VCPostBuildEventTool" - CommandLine="echo Copying SDL.dll to $(OutDir)\ -copy /y $(SolutionDir)..\..\..\..\SDL\lib\sdl.dll $(OutDir)\ -"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> - <File - RelativePath="..\..\..\..\BUGS-IN-GAMES"> - </File> - <File - RelativePath="..\..\..\..\ChangeLog"> - </File> - <File - RelativePath="..\..\freesci.def"> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="TRUE"> - <Tool - Name="VCCustomBuildTool"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\..\NEWS"> - </File> - <File - RelativePath="..\..\..\..\README"> - </File> - <File - RelativePath="..\..\..\..\README.Win32"> - </File> - <File - RelativePath="..\..\..\..\TODO"> - </File> - <Filter - Name="engine" - Filter=""> - <File - RelativePath="..\..\..\engine\cfsml.pl"> - </File> - <File - RelativePath="..\..\..\engine\game.c"> - </File> - <File - RelativePath="..\..\..\engine\gc.c"> - </File> - <File - RelativePath="..\..\..\engine\grammar.c"> - </File> - <File - RelativePath="..\..\..\engine\kernel.c"> - </File> - <File - RelativePath="..\..\..\engine\kevent.c"> - </File> - <File - RelativePath="..\..\..\engine\kfile.c"> - </File> - <File - RelativePath="..\..\..\engine\kgraphics.c"> - </File> - <File - RelativePath="..\..\..\engine\klists.c"> - </File> - <File - RelativePath="..\..\..\engine\kmath.c"> - </File> - <File - RelativePath="..\..\..\engine\kmenu.c"> - </File> - <File - RelativePath="..\..\..\engine\kmovement.c"> - </File> - <File - RelativePath="..\..\..\engine\kpathing.c"> - </File> - <File - RelativePath="..\..\..\engine\kscripts.c"> - </File> - <File - RelativePath="..\..\..\engine\ksound.c"> - </File> - <File - RelativePath="..\..\..\engine\kstring.c"> - </File> - <File - RelativePath="..\..\..\engine\said.c"> - </File> - <File - RelativePath="..\..\..\engine\said.y"> - </File> - <File - RelativePath="..\..\..\engine\savegame.c"> - </File> - <File - RelativePath="..\..\..\engine\savegame.cfsml"> - </File> - <File - RelativePath="..\..\..\engine\scriptconsole.c"> - </File> - <File - RelativePath="..\..\..\engine\scriptdebug.c"> - </File> - <File - RelativePath="..\..\..\engine\seg_manager.c"> - </File> - <File - RelativePath="..\..\..\engine\sys_strings.c"> - </File> - <File - RelativePath="..\..\..\engine\vm.c"> - </File> - </Filter> - <Filter - Name="gfx" - Filter=""> - <File - RelativePath="..\..\..\gfx\antialias.c"> - </File> - <File - RelativePath="..\..\..\gfx\font-5x8.c"> - </File> - <File - RelativePath="..\..\..\gfx\font-6x10.c"> - </File> - <File - RelativePath="..\..\..\gfx\font.c"> - </File> - <File - RelativePath="..\..\..\gfx\gfx_console.c"> - </File> - <File - RelativePath="..\..\..\gfx\gfx_res_options.c"> - </File> - <File - RelativePath="..\..\..\gfx\gfx_resource.c"> - </File> - <File - RelativePath="..\..\..\gfx\gfx_support.c"> - </File> - <File - RelativePath="..\..\..\gfx\gfx_tools.c"> - </File> - <File - RelativePath="..\..\..\gfx\menubar.c"> - </File> - <File - RelativePath="..\..\..\gfx\operations.c"> - </File> - <File - RelativePath="..\..\..\gfx\resmgr.c"> - </File> - <File - RelativePath="..\..\..\gfx\sbtree.c"> - </File> - <File - RelativePath="..\..\..\gfx\sci_widgets.c"> - </File> - <File - RelativePath="..\..\..\gfx\widgets.c"> - </File> - <Filter - Name="drivers" - Filter=""> - <File - RelativePath="..\..\..\gfx\drivers\dx_driver.cpp"> - </File> - <File - RelativePath="..\..\..\gfx\drivers\gfx_drivers.c"> - </File> - <File - RelativePath="..\..\..\gfx\drivers\null_driver.c"> - </File> - <File - RelativePath="..\..\..\gfx\drivers\sdl_driver.c"> - </File> - </Filter> - <Filter - Name="resource" - Filter=""> - <File - RelativePath="..\..\..\gfx\resource\sci_cursor_0.c"> - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_font.c"> - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_pal_1.c"> - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_pic_0.c"> - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_resmgr.c"> - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_view_0.c"> - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_view_1.c"> - </File> - </Filter> - </Filter> - <Filter - Name="scicore" - Filter=""> - <File - RelativePath="..\..\..\scicore\aatree.c"> - </File> - <File - RelativePath="..\..\..\scicore\console.c"> - </File> - <File - RelativePath="..\..\..\scicore\decompress0.c"> - </File> - <File - RelativePath="..\..\..\scicore\decompress01.c"> - </File> - <File - RelativePath="..\..\..\scicore\decompress1.c"> - </File> - <File - RelativePath="..\..\..\scicore\decompress11.c"> - </File> - <File - RelativePath="..\..\..\scicore\exe.c"> - </File> - <File - RelativePath="..\..\..\scicore\exe_lzexe.c"> - </File> - <File - RelativePath="..\..\..\scicore\exe_raw.c"> - </File> - <File - RelativePath="..\..\..\scicore\fnmatch.c"> - </File> - <File - RelativePath="..\..\..\scicore\huffmake.pl"> - </File> - <File - RelativePath="..\..\..\scicore\hufftree.1"> - </File> - <File - RelativePath="..\..\..\scicore\hufftree.2"> - </File> - <File - RelativePath="..\..\..\scicore\hufftree.3"> - </File> - <File - RelativePath="..\..\..\scicore\int_hashmap.c"> - </File> - <File - RelativePath="..\..\..\scicore\modules.c"> - </File> - <File - RelativePath="..\..\..\scicore\old_objects.c"> - </File> - <File - RelativePath="..\..\..\scicore\reg_t_hashmap.c"> - </File> - <File - RelativePath="..\..\..\scicore\resource.c"> - </File> - <File - RelativePath="..\..\..\scicore\resource_map.c"> - </File> - <File - RelativePath="..\..\..\scicore\resource_patch.c"> - </File> - <File - RelativePath="..\..\..\scicore\sci_memory.c"> - </File> - <File - RelativePath="..\..\..\scicore\script.c"> - </File> - <File - RelativePath="..\..\..\scicore\tools.c"> - </File> - <File - RelativePath="..\..\..\scicore\treedef.1"> - </File> - <File - RelativePath="..\..\..\scicore\treedef.2"> - </File> - <File - RelativePath="..\..\..\scicore\treedef.3"> - </File> - <File - RelativePath="..\..\..\scicore\versions.c"> - </File> - <File - RelativePath="..\..\..\scicore\vocab.c"> - </File> - <File - RelativePath="..\..\..\scicore\vocab_debug.c"> - </File> - </Filter> - <Filter - Name="sfx" - Filter=""> - <File - RelativePath="..\..\..\sfx\adlib.c"> - </File> - <File - RelativePath="..\..\..\sfx\core.c"> - </File> - <File - RelativePath="..\..\..\sfx\iterator.c"> - </File> - <File - RelativePath="..\..\..\sfx\pcm-iterator.c"> - </File> - <File - RelativePath="..\..\..\sfx\songlib.c"> - </File> - <File - RelativePath="..\..\..\sfx\time.c"> - </File> - <Filter - Name="seq" - Filter=""> - <File - RelativePath="..\..\..\sfx\seq\gm.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\instrument-map.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\mt32.c"> - </File> - <File - RelativePath="..\..\..\sfx\seq\sequencers.c"> - </File> - </Filter> - <Filter - Name="timer" - Filter=""> - <File - RelativePath="..\..\..\sfx\timer\sigalrm.c"> - </File> - <File - RelativePath="..\..\..\sfx\timer\timers.c"> - </File> - </Filter> - <Filter - Name="player" - Filter=""> - <File - RelativePath="..\..\..\sfx\player\players.c"> - </File> - <File - RelativePath="..\..\..\sfx\player\polled.c"> - </File> - <File - RelativePath="..\..\..\sfx\player\realtime.c"> - </File> - </Filter> - <Filter - Name="device" - Filter=""> - <File - RelativePath="..\..\..\sfx\device\devices.c"> - </File> - </Filter> - <Filter - Name="mixer" - Filter=""> - <File - RelativePath="..\..\..\sfx\mixer\mixers.c"> - </File> - <File - RelativePath="..\..\..\sfx\mixer\soft.c"> - </File> - </Filter> - <Filter - Name="pcm_device" - Filter=""> - <File - RelativePath="..\..\..\sfx\pcm_device\audiobuf.c"> - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\pcm_devices.c"> - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\sdl.c"> - </File> - </Filter> - <Filter - Name="softseq" - Filter=""> - <File - RelativePath="..\..\..\sfx\softseq\amiga.c"> - </File> - <File - RelativePath="..\..\..\sfx\softseq\fmopl.c"> - </File> - <File - RelativePath="..\..\..\sfx\softseq\mt32.cpp" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\opl2.c"> - </File> - <File - RelativePath="..\..\..\sfx\softseq\pcspeaker.c"> - </File> - <File - RelativePath="..\..\..\sfx\softseq\SN76496.c"> - </File> - <File - RelativePath="..\..\..\sfx\softseq\softsequencers.c"> - </File> - </Filter> - </Filter> - <Filter - Name="win32" - Filter=""> - <File - RelativePath="..\..\usleep.c"> - </File> - </Filter> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl"> - <File - RelativePath="..\..\..\include\aatree.h"> - </File> - <File - RelativePath="..\..\..\include\console.h"> - </File> - <File - RelativePath="..\..\..\include\engine.h"> - </File> - <File - RelativePath="..\..\..\include\event.h"> - </File> - <File - RelativePath="..\..\..\scicore\exe.h"> - </File> - <File - RelativePath="..\..\..\scicore\exe_dec.h"> - </File> - <File - RelativePath="..\..\..\include\game_select.h"> - </File> - <File - RelativePath="..\..\..\scicore\games.h"> - </File> - <File - RelativePath="..\..\..\engine\gc.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_driver.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_operations.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_options.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_res_options.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_resmgr.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_resource.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_state_internal.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_system.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_tools.h"> - </File> - <File - RelativePath="..\..\..\include\gfx_widgets.h"> - </File> - <File - RelativePath="..\..\..\gfx\drivers\dx_driver.h"> - </File> - <File - RelativePath="..\..\..\include\hashmap.h"> - </File> - <File - RelativePath="..\..\..\engine\heap.h"> - </File> - <File - RelativePath="..\..\..\include\heapmgr.h"> - </File> - <File - RelativePath="..\..\..\include\int_hashmap.h"> - </File> - <File - RelativePath="..\..\..\include\kdebug.h"> - </File> - <File - RelativePath="..\..\..\include\kernel.h"> - </File> - <File - RelativePath="..\..\..\engine\kernel_compat.h"> - </File> - <File - RelativePath="..\..\..\engine\kernel_types.h"> - </File> - <File - RelativePath="..\..\..\include\list.h"> - </File> - <File - RelativePath="..\..\..\include\listener.h"> - </File> - <File - RelativePath="..\..\..\include\menubar.h"> - </File> - <File - RelativePath="..\..\..\include\modules.h"> - </File> - <File - RelativePath="..\..\..\include\old_objects.h"> - </File> - <File - RelativePath="..\..\..\include\reg_t_hashmap.h"> - </File> - <File - RelativePath="..\..\..\include\resource.h"> - </File> - <File - RelativePath="..\..\..\include\sbtree.h"> - </File> - <File - RelativePath="..\..\..\include\sci_conf.h"> - </File> - <File - RelativePath="..\..\..\engine\sci_graphics.h"> - </File> - <File - RelativePath="..\..\..\include\sci_memory.h"> - </File> - <File - RelativePath="..\..\..\include\sci_midi.h"> - </File> - <File - RelativePath="..\..\..\include\sci_widgets.h"> - </File> - <File - RelativePath="..\..\..\include\sciresource.h"> - </File> - <File - RelativePath="..\..\..\include\scitypes.h"> - </File> - <File - RelativePath="..\..\..\include\script.h"> - </File> - <File - RelativePath="..\..\..\include\seg_manager.h"> - </File> - <File - RelativePath="..\..\..\sfx\seq\instrument-map.h" - > - </File> - <File - RelativePath="..\..\..\sfx\adlib.h"> - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\audiobuf.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_core.h"> - </File> - <File - RelativePath="..\..\..\sfx\device.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_engine.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_iterator.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_iterator_internal.h"> - </File> - <File - RelativePath="..\..\..\sfx\mixer.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_pcm.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_player.h"> - </File> - <File - RelativePath="..\..\..\sfx\sequencer.h"> - </File> - <File - RelativePath="..\..\..\sfx\softseq.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_songlib.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_time.h"> - </File> - <File - RelativePath="..\..\..\include\sfx_timer.h"> - </File> - <File - RelativePath="..\..\..\include\sys_strings.h"> - </File> - <File - RelativePath="..\..\..\include\uinput.h"> - </File> - <File - RelativePath="..\..\..\include\util.h"> - </File> - <File - RelativePath="..\..\..\include\versions.h"> - </File> - <File - RelativePath="..\..\..\include\vm.h"> - </File> - <File - RelativePath="..\..\..\include\vm_types.h"> - </File> - <File - RelativePath="..\..\..\include\vocabulary.h"> - </File> - <Filter - Name="win32" - Filter=""> - <File - RelativePath="..\..\..\include\win32\sci_win32.h"> - </File> - </Filter> - <Filter - Name="SDL" - Filter=""> - <File - RelativePath="..\..\..\..\..\SDL\include\begin_code.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\close_code.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_active.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_audio.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_byteorder.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_cdrom.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_amiga.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_dreamcast.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_macos.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_macosx.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_minimal.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_nds.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_os2.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_symbian.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_win32.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_copying.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_cpuinfo.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_endian.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_error.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_events.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_getenv.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_joystick.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_keyboard.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_keysym.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_loadso.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_main.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_mouse.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_mutex.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_name.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_opengl.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_platform.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_quit.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_rwops.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_stdinc.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_syswm.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_thread.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_timer.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_types.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_version.h"> - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_video.h"> - </File> - </Filter> - <Filter - Name="softseq" - Filter=""> - <File - RelativePath="..\..\..\sfx\softseq\fmopl.h"> - </File> - </Filter> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/engines/sci/win32/msvc71-2003/sciv/sciv.vcproj b/engines/sci/win32/msvc71-2003/sciv/sciv.vcproj deleted file mode 100644 index 4f837bb0ef..0000000000 --- a/engines/sci/win32/msvc71-2003/sciv/sciv.vcproj +++ /dev/null @@ -1,187 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="sciv" - ProjectGUID="{6BF71632-BD06-4D48-AE7C-21C6EB76CACA}" - RootNamespace="sciv" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - OptimizeForProcessor="3" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;VERSION=\"0.6.3-dev\";PACKAGE=\"FreeSCI\";HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - StringPooling="TRUE" - RuntimeLibrary="2" - BufferSecurityCheck="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="$(OutDir)\fsci.lib" - OutputFile="$(OutDir)\FreeSCI.exe" - LinkIncremental="1" - SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories="" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool" - TypeLibraryName=".\Release/sciv.tlb" - HeaderFileName=""/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;VERSION=__TIMESTAMP__;PACKAGE=\"FreeSCI\";HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - RuntimeLibrary="3" - BufferSecurityCheck="FALSE" - RuntimeTypeInfo="TRUE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="$(OutDir)\fsci.lib" - OutputFile="$(OutDir)\FreeSCI.exe" - LinkIncremental="1" - SuppressStartupBanner="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool" - TypeLibraryName=".\Debug/sciv.tlb" - HeaderFileName=""/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> - <File - RelativePath="..\..\..\config.c"> - </File> - <File - RelativePath="..\..\..\config.l"> - </File> - <File - RelativePath="..\..\..\main.c"> - </File> - <Filter - Name="win32" - Filter=""> - <File - RelativePath="..\..\getopt.c"> - </File> - </Filter> - <Filter - Name="menu" - Filter=""> - <File - RelativePath="..\..\..\menu\game_select_init.c"> - </File> - <File - RelativePath="..\..\..\menu\game_select_screen.c"> - </File> - </Filter> - </Filter> - <Filter - Name="Header Files" - Filter=""> - <Filter - Name="win32" - Filter=""> - <File - RelativePath="..\..\..\include\win32\getopt.h"> - </File> - <File - RelativePath="..\..\..\include\win32\sci_win32.h"> - </File> - </Filter> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/engines/sci/win32/msvc80-2005/freesci.sln b/engines/sci/win32/msvc80-2005/freesci.sln deleted file mode 100644 index 6388360066..0000000000 --- a/engines/sci/win32/msvc80-2005/freesci.sln +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsci_dll", "fsci_dll\fsci_dll.vcproj", "{B605B919-02BD-4E2D-B043-08A21736B01A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sciv", "sciv\sciv.vcproj", "{6BF71632-BD06-4D48-AE7C-21C6EB76CACA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B605B919-02BD-4E2D-B043-08A21736B01A}.Debug|Win32.ActiveCfg = Debug|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Debug|Win32.Build.0 = Debug|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Release|Win32.ActiveCfg = Release|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Release|Win32.Build.0 = Release|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Debug|Win32.ActiveCfg = Debug|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Debug|Win32.Build.0 = Debug|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Release|Win32.ActiveCfg = Release|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection -EndGlobal diff --git a/engines/sci/win32/msvc80-2005/fsci_dll/fsci_dll.vcproj b/engines/sci/win32/msvc80-2005/fsci_dll/fsci_dll.vcproj deleted file mode 100644 index 1e37611f2f..0000000000 --- a/engines/sci/win32/msvc80-2005/fsci_dll/fsci_dll.vcproj +++ /dev/null @@ -1,1218 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="fsci_dll" - ProjectGUID="{B605B919-02BD-4E2D-B043-08A21736B01A}" - RootNamespace="fsci_dll" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName=".\Release/fsci_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=\"0.6.3-dev\";PACKAGE=\"FreeSCI\";FREESCI_EXPORTS;X_DISPLAY_MISSING;HAVE_SDL;HAVE_DIRECTX;HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - StringPooling="true" - RuntimeLibrary="2" - BufferSecurityCheck="false" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="SDL.lib d3d8.lib d3dx8.lib dxerr8.lib winmm.lib" - OutputFile="$(OutDir)/fsci.dll" - LinkIncremental="1" - AdditionalLibraryDirectories=""$(SolutionDir)..\..\..\..\SDL\lib"" - IgnoreDefaultLibraryNames="" - ModuleDefinitionFile="$(SolutionDir)..\freesci.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - ImportLibrary="$(TargetDir)$(TargetName).lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="echo Copying SDL.dll to $(OutDir)\
copy /y $(SolutionDir)..\..\..\..\SDL\lib\sdl.dll $(OutDir)\
" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName=".\Debug/fsci_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - Optimization="0" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=__TIMESTAMP__;PACKAGE=\"FreeSCI\";FREESCI_EXPORTS;X_DISPLAY_MISSING;HAVE_SDL;HAVE_DIRECTX;HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - RuntimeLibrary="3" - BufferSecurityCheck="false" - RuntimeTypeInfo="true" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="SDL.lib d3d8.lib d3dx8.lib dxerr8.lib winmm.lib" - OutputFile="$(OutDir)/fsci.dll" - LinkIncremental="1" - AdditionalLibraryDirectories=""$(SolutionDir)..\..\..\..\SDL\lib"" - IgnoreDefaultLibraryNames="" - ModuleDefinitionFile="$(SolutionDir)..\freesci.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - ImportLibrary="$(TargetDir)$(TargetName).lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="echo Copying SDL.dll to $(OutDir)\
copy /y $(SolutionDir)..\..\..\..\SDL\lib\sdl.dll $(OutDir)\
" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" - > - <File - RelativePath="..\..\..\..\BUGS-IN-GAMES" - > - </File> - <File - RelativePath="..\..\..\..\ChangeLog" - > - </File> - <File - RelativePath="..\..\freesci.def" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\..\NEWS" - > - </File> - <File - RelativePath="..\..\..\..\README" - > - </File> - <File - RelativePath="..\..\..\..\README.Win32" - > - </File> - <File - RelativePath="..\..\..\..\TODO" - > - </File> - <Filter - Name="engine" - > - <File - RelativePath="..\..\..\engine\cfsml.pl" - > - </File> - <File - RelativePath="..\..\..\engine\game.c" - > - </File> - <File - RelativePath="..\..\..\engine\gc.c" - > - </File> - <File - RelativePath="..\..\..\engine\grammar.c" - > - </File> - <File - RelativePath="..\..\..\engine\kernel.c" - > - </File> - <File - RelativePath="..\..\..\engine\kevent.c" - > - </File> - <File - RelativePath="..\..\..\engine\kfile.c" - > - </File> - <File - RelativePath="..\..\..\engine\kgraphics.c" - > - </File> - <File - RelativePath="..\..\..\engine\klists.c" - > - </File> - <File - RelativePath="..\..\..\engine\kmath.c" - > - </File> - <File - RelativePath="..\..\..\engine\kmenu.c" - > - </File> - <File - RelativePath="..\..\..\engine\kmovement.c" - > - </File> - <File - RelativePath="..\..\..\engine\kpathing.c" - > - </File> - <File - RelativePath="..\..\..\engine\kscripts.c" - > - </File> - <File - RelativePath="..\..\..\engine\ksound.c" - > - </File> - <File - RelativePath="..\..\..\engine\kstring.c" - > - </File> - <File - RelativePath="..\..\..\engine\said.c" - > - </File> - <File - RelativePath="..\..\..\engine\said.y" - > - </File> - <File - RelativePath="..\..\..\engine\savegame.c" - > - </File> - <File - RelativePath="..\..\..\engine\savegame.cfsml" - > - </File> - <File - RelativePath="..\..\..\engine\scriptconsole.c" - > - </File> - <File - RelativePath="..\..\..\engine\scriptdebug.c" - > - </File> - <File - RelativePath="..\..\..\engine\seg_manager.c" - > - </File> - <File - RelativePath="..\..\..\engine\sys_strings.c" - > - </File> - <File - RelativePath="..\..\..\engine\vm.c" - > - </File> - </Filter> - <Filter - Name="gfx" - > - <File - RelativePath="..\..\..\gfx\antialias.c" - > - </File> - <File - RelativePath="..\..\..\gfx\font-5x8.c" - > - </File> - <File - RelativePath="..\..\..\gfx\font-6x10.c" - > - </File> - <File - RelativePath="..\..\..\gfx\font.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_console.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_res_options.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_resource.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_support.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_tools.c" - > - </File> - <File - RelativePath="..\..\..\gfx\menubar.c" - > - </File> - <File - RelativePath="..\..\..\gfx\operations.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resmgr.c" - > - </File> - <File - RelativePath="..\..\..\gfx\sbtree.c" - > - </File> - <File - RelativePath="..\..\..\gfx\sci_widgets.c" - > - </File> - <File - RelativePath="..\..\..\gfx\widgets.c" - > - </File> - <Filter - Name="drivers" - > - <File - RelativePath="..\..\..\gfx\drivers\dx_driver.cpp" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\gfx_drivers.c" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\null_driver.c" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\sdl_driver.c" - > - </File> - </Filter> - <Filter - Name="resource" - > - <File - RelativePath="..\..\..\gfx\resource\sci_cursor_0.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_font.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_pal_1.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_pic_0.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_resmgr.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_view_0.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_view_1.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="scicore" - > - <File - RelativePath="..\..\..\scicore\aatree.c" - > - </File> - <File - RelativePath="..\..\..\scicore\console.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress0.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress01.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress1.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress11.c" - > - </File> - <File - RelativePath="..\..\..\scicore\exe.c" - > - </File> - <File - RelativePath="..\..\..\scicore\exe_lzexe.c" - > - </File> - <File - RelativePath="..\..\..\scicore\exe_raw.c" - > - </File> - <File - RelativePath="..\..\..\scicore\fnmatch.c" - > - </File> - <File - RelativePath="..\..\..\scicore\huffmake.pl" - > - </File> - <File - RelativePath="..\..\..\scicore\hufftree.1" - > - </File> - <File - RelativePath="..\..\..\scicore\hufftree.2" - > - </File> - <File - RelativePath="..\..\..\scicore\hufftree.3" - > - </File> - <File - RelativePath="..\..\..\scicore\int_hashmap.c" - > - </File> - <File - RelativePath="..\..\..\scicore\modules.c" - > - </File> - <File - RelativePath="..\..\..\scicore\old_objects.c" - > - </File> - <File - RelativePath="..\..\..\scicore\reg_t_hashmap.c" - > - </File> - <File - RelativePath="..\..\..\scicore\resource.c" - > - </File> - <File - RelativePath="..\..\..\scicore\resource_map.c" - > - </File> - <File - RelativePath="..\..\..\scicore\resource_patch.c" - > - </File> - <File - RelativePath="..\..\..\scicore\sci_memory.c" - > - </File> - <File - RelativePath="..\..\..\scicore\script.c" - > - </File> - <File - RelativePath="..\..\..\scicore\tools.c" - > - </File> - <File - RelativePath="..\..\..\scicore\treedef.1" - > - </File> - <File - RelativePath="..\..\..\scicore\treedef.2" - > - </File> - <File - RelativePath="..\..\..\scicore\treedef.3" - > - </File> - <File - RelativePath="..\..\..\scicore\versions.c" - > - </File> - <File - RelativePath="..\..\..\scicore\vocab.c" - > - </File> - <File - RelativePath="..\..\..\scicore\vocab_debug.c" - > - </File> - </Filter> - <Filter - Name="sfx" - > - <File - RelativePath="..\..\..\sfx\adlib.c" - > - </File> - <File - RelativePath="..\..\..\sfx\core.c" - > - </File> - <File - RelativePath="..\..\..\sfx\iterator.c" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm-iterator.c" - > - </File> - <File - RelativePath="..\..\..\sfx\songlib.c" - > - </File> - <File - RelativePath="..\..\..\sfx\time.c" - > - </File> - <Filter - Name="seq" - > - <File - RelativePath="..\..\..\sfx\seq\gm.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\instrument-map.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\mt32.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\sequencers.c" - > - </File> - </Filter> - <Filter - Name="timer" - > - <File - RelativePath="..\..\..\sfx\timer\sigalrm.c" - > - </File> - <File - RelativePath="..\..\..\sfx\timer\timers.c" - > - </File> - </Filter> - <Filter - Name="player" - > - <File - RelativePath="..\..\..\sfx\player\players.c" - > - </File> - <File - RelativePath="..\..\..\sfx\player\polled.c" - > - </File> - <File - RelativePath="..\..\..\sfx\player\realtime.c" - > - </File> - </Filter> - <Filter - Name="device" - > - <File - RelativePath="..\..\..\sfx\device\devices.c" - > - </File> - </Filter> - <Filter - Name="mixer" - > - <File - RelativePath="..\..\..\sfx\mixer\mixers.c" - > - </File> - <File - RelativePath="..\..\..\sfx\mixer\soft.c" - > - </File> - </Filter> - <Filter - Name="pcm_device" - > - <File - RelativePath="..\..\..\sfx\pcm_device\audiobuf.c" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\pcm_devices.c" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\sdl.c" - > - </File> - </Filter> - <Filter - Name="softseq" - > - <File - RelativePath="..\..\..\sfx\softseq\amiga.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\fmopl.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\mt32.cpp" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\opl2.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\pcspeaker.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\SN76496.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\softsequencers.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="win32" - > - <File - RelativePath="..\..\usleep.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl" - > - <File - RelativePath="..\..\..\include\aatree.h" - > - </File> - <File - RelativePath="..\..\..\include\console.h" - > - </File> - <File - RelativePath="..\..\..\include\engine.h" - > - </File> - <File - RelativePath="..\..\..\include\event.h" - > - </File> - <File - RelativePath="..\..\..\scicore\exe.h" - > - </File> - <File - RelativePath="..\..\..\scicore\exe_dec.h" - > - </File> - <File - RelativePath="..\..\..\include\game_select.h" - > - </File> - <File - RelativePath="..\..\..\scicore\games.h" - > - </File> - <File - RelativePath="..\..\..\engine\gc.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_driver.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_operations.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_options.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_res_options.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_resmgr.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_resource.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_state_internal.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_system.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_tools.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_widgets.h" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\dx_driver.h" - > - </File> - <File - RelativePath="..\..\..\include\hashmap.h" - > - </File> - <File - RelativePath="..\..\..\engine\heap.h" - > - </File> - <File - RelativePath="..\..\..\include\heapmgr.h" - > - </File> - <File - RelativePath="..\..\..\include\int_hashmap.h" - > - </File> - <File - RelativePath="..\..\..\include\kdebug.h" - > - </File> - <File - RelativePath="..\..\..\include\kernel.h" - > - </File> - <File - RelativePath="..\..\..\engine\kernel_compat.h" - > - </File> - <File - RelativePath="..\..\..\engine\kernel_types.h" - > - </File> - <File - RelativePath="..\..\..\include\list.h" - > - </File> - <File - RelativePath="..\..\..\include\listener.h" - > - </File> - <File - RelativePath="..\..\..\include\menubar.h" - > - </File> - <File - RelativePath="..\..\..\include\modules.h" - > - </File> - <File - RelativePath="..\..\..\include\old_objects.h" - > - </File> - <File - RelativePath="..\..\..\include\reg_t_hashmap.h" - > - </File> - <File - RelativePath="..\..\..\include\resource.h" - > - </File> - <File - RelativePath="..\..\..\include\sbtree.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_conf.h" - > - </File> - <File - RelativePath="..\..\..\engine\sci_graphics.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_memory.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_midi.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_widgets.h" - > - </File> - <File - RelativePath="..\..\..\include\sciresource.h" - > - </File> - <File - RelativePath="..\..\..\include\scitypes.h" - > - </File> - <File - RelativePath="..\..\..\include\script.h" - > - </File> - <File - RelativePath="..\..\..\include\seg_manager.h" - > - </File> - <File - RelativePath="..\..\..\sfx\adlib.h" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\audiobuf.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_core.h" - > - </File> - <File - RelativePath="..\..\..\sfx\device.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_engine.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_iterator.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_iterator_internal.h" - > - </File> - <File - RelativePath="..\..\..\sfx\mixer.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_pcm.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_player.h" - > - </File> - <File - RelativePath="..\..\..\sfx\sequencer.h" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_songlib.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_time.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_timer.h" - > - </File> - <File - RelativePath="..\..\..\include\sys_strings.h" - > - </File> - <File - RelativePath="..\..\..\include\uinput.h" - > - </File> - <File - RelativePath="..\..\..\include\util.h" - > - </File> - <File - RelativePath="..\..\..\include\versions.h" - > - </File> - <File - RelativePath="..\..\..\include\vm.h" - > - </File> - <File - RelativePath="..\..\..\include\vm_types.h" - > - </File> - <File - RelativePath="..\..\..\include\vocabulary.h" - > - </File> - <Filter - Name="win32" - > - <File - RelativePath="..\..\..\include\win32\sci_win32.h" - > - </File> - </Filter> - <Filter - Name="SDL" - > - <File - RelativePath="..\..\..\..\..\SDL\include\begin_code.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\close_code.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_active.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_audio.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_byteorder.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_cdrom.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_amiga.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_dreamcast.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_macos.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_macosx.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_minimal.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_nds.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_os2.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_symbian.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_win32.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_copying.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_cpuinfo.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_endian.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_error.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_events.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_getenv.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_joystick.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_keyboard.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_keysym.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_loadso.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_main.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_mouse.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_mutex.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_name.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_opengl.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_platform.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_quit.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_rwops.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_stdinc.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_syswm.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_thread.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_timer.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_types.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_version.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_video.h" - > - </File> - </Filter> - <Filter - Name="softseq" - > - <File - RelativePath="..\..\..\sfx\softseq\fmopl.h" - > - </File> - </Filter> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/engines/sci/win32/msvc80-2005/sciv/sciv.vcproj b/engines/sci/win32/msvc80-2005/sciv/sciv.vcproj deleted file mode 100644 index 1c0a302c4e..0000000000 --- a/engines/sci/win32/msvc80-2005/sciv/sciv.vcproj +++ /dev/null @@ -1,260 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="sciv" - ProjectGUID="{6BF71632-BD06-4D48-AE7C-21C6EB76CACA}" - RootNamespace="sciv" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName=".\Release/sciv.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=\"0.6.3-dev\";PACKAGE=\"FreeSCI\";HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - StringPooling="true" - RuntimeLibrary="2" - BufferSecurityCheck="false" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="$(OutDir)\fsci.lib" - OutputFile="$(OutDir)\FreeSCI.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName=".\Debug/sciv.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - Optimization="0" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=__TIMESTAMP__;PACKAGE=\"FreeSCI\";HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - RuntimeLibrary="3" - BufferSecurityCheck="false" - RuntimeTypeInfo="true" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="$(OutDir)\fsci.lib" - OutputFile="$(OutDir)\FreeSCI.exe" - LinkIncremental="1" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" - > - <File - RelativePath="..\..\..\config.c" - > - </File> - <File - RelativePath="..\..\..\config.l" - > - </File> - <File - RelativePath="..\..\..\main.c" - > - </File> - <Filter - Name="win32" - > - <File - RelativePath="..\..\getopt.c" - > - </File> - </Filter> - <Filter - Name="menu" - > - <File - RelativePath="..\..\..\menu\game_select_init.c" - > - </File> - <File - RelativePath="..\..\..\menu\game_select_screen.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="Header Files" - > - <Filter - Name="win32" - > - <File - RelativePath="..\..\..\include\win32\getopt.h" - > - </File> - <File - RelativePath="..\..\..\include\win32\sci_win32.h" - > - </File> - </Filter> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/engines/sci/win32/msvc90-2008/freesci.sln b/engines/sci/win32/msvc90-2008/freesci.sln deleted file mode 100644 index 7a3e60c904..0000000000 --- a/engines/sci/win32/msvc90-2008/freesci.sln +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsci_dll", "fsci_dll\fsci_dll.vcproj", "{B605B919-02BD-4E2D-B043-08A21736B01A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sciv", "sciv\sciv.vcproj", "{6BF71632-BD06-4D48-AE7C-21C6EB76CACA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B605B919-02BD-4E2D-B043-08A21736B01A}.Debug|Win32.ActiveCfg = Debug|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Debug|Win32.Build.0 = Debug|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Release|Win32.ActiveCfg = Release|Win32 - {B605B919-02BD-4E2D-B043-08A21736B01A}.Release|Win32.Build.0 = Release|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Debug|Win32.ActiveCfg = Debug|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Debug|Win32.Build.0 = Debug|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Release|Win32.ActiveCfg = Release|Win32 - {6BF71632-BD06-4D48-AE7C-21C6EB76CACA}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection -EndGlobal diff --git a/engines/sci/win32/msvc90-2008/fsci_dll/fsci_dll.vcproj b/engines/sci/win32/msvc90-2008/fsci_dll/fsci_dll.vcproj deleted file mode 100644 index f7e98c3a39..0000000000 --- a/engines/sci/win32/msvc90-2008/fsci_dll/fsci_dll.vcproj +++ /dev/null @@ -1,1223 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="fsci_dll" - ProjectGUID="{B605B919-02BD-4E2D-B043-08A21736B01A}" - RootNamespace="fsci_dll" - Keyword="Win32Proj" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName=".\Release/fsci_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=\"0.6.3-dev\";PACKAGE=\"FreeSCI\";FREESCI_EXPORTS;X_DISPLAY_MISSING;HAVE_SDL;HAVE_DIRECTX;HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - StringPooling="true" - RuntimeLibrary="2" - BufferSecurityCheck="false" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="SDL.lib d3d8.lib d3dx8.lib dxerr8.lib winmm.lib" - OutputFile="$(OutDir)/fsci.dll" - LinkIncremental="1" - AdditionalLibraryDirectories=""$(SolutionDir)..\..\..\..\SDL\lib"" - IgnoreDefaultLibraryNames="" - ModuleDefinitionFile="$(SolutionDir)..\freesci.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - ImportLibrary="$(TargetDir)$(TargetName).lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="echo Copying SDL.dll to $(OutDir)\
copy /y $(SolutionDir)..\..\..\..\SDL\lib\sdl.dll $(OutDir)\
" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName=".\Debug/fsci_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - Optimization="0" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=__TIMESTAMP__;PACKAGE=\"FreeSCI\";FREESCI_EXPORTS;X_DISPLAY_MISSING;HAVE_SDL;HAVE_DIRECTX;HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - RuntimeLibrary="3" - BasicRuntimeChecks="3" - BufferSecurityCheck="false" - RuntimeTypeInfo="true" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="SDL.lib d3d8.lib d3dx8.lib dxerr8.lib winmm.lib" - OutputFile="$(OutDir)/fsci.dll" - LinkIncremental="1" - AdditionalLibraryDirectories=""$(SolutionDir)..\..\..\..\SDL\lib"" - GenerateManifest="true" - IgnoreDefaultLibraryNames="libci.lib" - ModuleDefinitionFile="$(SolutionDir)..\freesci.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - RandomizedBaseAddress="0" - DataExecutionPrevention="0" - ImportLibrary="$(TargetDir)$(TargetName).lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - EmbedManifest="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="echo Copying SDL.dll to $(OutDir)\
copy /y $(SolutionDir)..\..\..\..\SDL\lib\sdl.dll $(OutDir)\
" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" - > - <File - RelativePath="..\..\..\..\BUGS-IN-GAMES" - > - </File> - <File - RelativePath="..\..\..\..\ChangeLog" - > - </File> - <File - RelativePath="..\..\freesci.def" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\..\NEWS" - > - </File> - <File - RelativePath="..\..\..\..\README" - > - </File> - <File - RelativePath="..\..\..\..\README.Win32" - > - </File> - <File - RelativePath="..\..\..\..\TODO" - > - </File> - <Filter - Name="engine" - > - <File - RelativePath="..\..\..\engine\cfsml.pl" - > - </File> - <File - RelativePath="..\..\..\engine\game.c" - > - </File> - <File - RelativePath="..\..\..\engine\gc.c" - > - </File> - <File - RelativePath="..\..\..\engine\grammar.c" - > - </File> - <File - RelativePath="..\..\..\engine\kernel.c" - > - </File> - <File - RelativePath="..\..\..\engine\kevent.c" - > - </File> - <File - RelativePath="..\..\..\engine\kfile.c" - > - </File> - <File - RelativePath="..\..\..\engine\kgraphics.c" - > - </File> - <File - RelativePath="..\..\..\engine\klists.c" - > - </File> - <File - RelativePath="..\..\..\engine\kmath.c" - > - </File> - <File - RelativePath="..\..\..\engine\kmenu.c" - > - </File> - <File - RelativePath="..\..\..\engine\kmovement.c" - > - </File> - <File - RelativePath="..\..\..\engine\kpathing.c" - > - </File> - <File - RelativePath="..\..\..\engine\kscripts.c" - > - </File> - <File - RelativePath="..\..\..\engine\ksound.c" - > - </File> - <File - RelativePath="..\..\..\engine\kstring.c" - > - </File> - <File - RelativePath="..\..\..\engine\said.c" - > - </File> - <File - RelativePath="..\..\..\engine\said.y" - > - </File> - <File - RelativePath="..\..\..\engine\savegame.c" - > - </File> - <File - RelativePath="..\..\..\engine\savegame.cfsml" - > - </File> - <File - RelativePath="..\..\..\engine\scriptconsole.c" - > - </File> - <File - RelativePath="..\..\..\engine\scriptdebug.c" - > - </File> - <File - RelativePath="..\..\..\engine\seg_manager.c" - > - </File> - <File - RelativePath="..\..\..\engine\sys_strings.c" - > - </File> - <File - RelativePath="..\..\..\engine\vm.c" - > - </File> - </Filter> - <Filter - Name="gfx" - > - <File - RelativePath="..\..\..\gfx\antialias.c" - > - </File> - <File - RelativePath="..\..\..\gfx\font-5x8.c" - > - </File> - <File - RelativePath="..\..\..\gfx\font-6x10.c" - > - </File> - <File - RelativePath="..\..\..\gfx\font.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_console.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_res_options.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_resource.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_support.c" - > - </File> - <File - RelativePath="..\..\..\gfx\gfx_tools.c" - > - </File> - <File - RelativePath="..\..\..\gfx\menubar.c" - > - </File> - <File - RelativePath="..\..\..\gfx\operations.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resmgr.c" - > - </File> - <File - RelativePath="..\..\..\gfx\sbtree.c" - > - </File> - <File - RelativePath="..\..\..\gfx\sci_widgets.c" - > - </File> - <File - RelativePath="..\..\..\gfx\widgets.c" - > - </File> - <Filter - Name="drivers" - > - <File - RelativePath="..\..\..\gfx\drivers\dx_driver.cpp" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\gfx_drivers.c" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\null_driver.c" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\sdl_driver.c" - > - </File> - </Filter> - <Filter - Name="resource" - > - <File - RelativePath="..\..\..\gfx\resource\sci_cursor_0.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_font.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_pal_1.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_pic_0.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_resmgr.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_view_0.c" - > - </File> - <File - RelativePath="..\..\..\gfx\resource\sci_view_1.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="scicore" - > - <File - RelativePath="..\..\..\scicore\aatree.c" - > - </File> - <File - RelativePath="..\..\..\scicore\console.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress0.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress01.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress1.c" - > - </File> - <File - RelativePath="..\..\..\scicore\decompress11.c" - > - </File> - <File - RelativePath="..\..\..\scicore\exe.c" - > - </File> - <File - RelativePath="..\..\..\scicore\exe_lzexe.c" - > - </File> - <File - RelativePath="..\..\..\scicore\exe_raw.c" - > - </File> - <File - RelativePath="..\..\..\scicore\fnmatch.c" - > - </File> - <File - RelativePath="..\..\..\scicore\huffmake.pl" - > - </File> - <File - RelativePath="..\..\..\scicore\hufftree.1" - > - </File> - <File - RelativePath="..\..\..\scicore\hufftree.2" - > - </File> - <File - RelativePath="..\..\..\scicore\hufftree.3" - > - </File> - <File - RelativePath="..\..\..\scicore\int_hashmap.c" - > - </File> - <File - RelativePath="..\..\..\scicore\modules.c" - > - </File> - <File - RelativePath="..\..\..\scicore\old_objects.c" - > - </File> - <File - RelativePath="..\..\..\scicore\reg_t_hashmap.c" - > - </File> - <File - RelativePath="..\..\..\scicore\resource.c" - > - </File> - <File - RelativePath="..\..\..\scicore\resource_map.c" - > - </File> - <File - RelativePath="..\..\..\scicore\resource_patch.c" - > - </File> - <File - RelativePath="..\..\..\scicore\sci_memory.c" - > - </File> - <File - RelativePath="..\..\..\scicore\script.c" - > - </File> - <File - RelativePath="..\..\..\scicore\tools.c" - > - </File> - <File - RelativePath="..\..\..\scicore\treedef.1" - > - </File> - <File - RelativePath="..\..\..\scicore\treedef.2" - > - </File> - <File - RelativePath="..\..\..\scicore\treedef.3" - > - </File> - <File - RelativePath="..\..\..\scicore\versions.c" - > - </File> - <File - RelativePath="..\..\..\scicore\vocab.c" - > - </File> - <File - RelativePath="..\..\..\scicore\vocab_debug.c" - > - </File> - </Filter> - <Filter - Name="sfx" - > - <File - RelativePath="..\..\..\sfx\adlib.c" - > - </File> - <File - RelativePath="..\..\..\sfx\core.c" - > - </File> - <File - RelativePath="..\..\..\sfx\iterator.c" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm-iterator.c" - > - </File> - <File - RelativePath="..\..\..\sfx\songlib.c" - > - </File> - <File - RelativePath="..\..\..\sfx\time.c" - > - </File> - <Filter - Name="seq" - > - <File - RelativePath="..\..\..\sfx\seq\gm.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\instrument-map.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\mt32.c" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\sequencers.c" - > - </File> - </Filter> - <Filter - Name="timer" - > - <File - RelativePath="..\..\..\sfx\timer\sigalrm.c" - > - </File> - <File - RelativePath="..\..\..\sfx\timer\timers.c" - > - </File> - </Filter> - <Filter - Name="player" - > - <File - RelativePath="..\..\..\sfx\player\players.c" - > - </File> - <File - RelativePath="..\..\..\sfx\player\polled.c" - > - </File> - <File - RelativePath="..\..\..\sfx\player\realtime.c" - > - </File> - </Filter> - <Filter - Name="device" - > - <File - RelativePath="..\..\..\sfx\device\devices.c" - > - </File> - </Filter> - <Filter - Name="mixer" - > - <File - RelativePath="..\..\..\sfx\mixer\mixers.c" - > - </File> - <File - RelativePath="..\..\..\sfx\mixer\soft.c" - > - </File> - </Filter> - <Filter - Name="pcm_device" - > - <File - RelativePath="..\..\..\sfx\pcm_device\audiobuf.c" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\pcm_devices.c" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\sdl.c" - > - </File> - </Filter> - <Filter - Name="softseq" - > - <File - RelativePath="..\..\..\sfx\softseq\amiga.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\fmopl.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\mt32.cpp" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\opl2.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\pcspeaker.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\SN76496.c" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq\softsequencers.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="win32" - > - <File - RelativePath="..\..\usleep.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl" - > - <File - RelativePath="..\..\..\include\aatree.h" - > - </File> - <File - RelativePath="..\..\..\include\console.h" - > - </File> - <File - RelativePath="..\..\..\include\engine.h" - > - </File> - <File - RelativePath="..\..\..\include\event.h" - > - </File> - <File - RelativePath="..\..\..\scicore\exe.h" - > - </File> - <File - RelativePath="..\..\..\scicore\exe_dec.h" - > - </File> - <File - RelativePath="..\..\..\include\game_select.h" - > - </File> - <File - RelativePath="..\..\..\scicore\games.h" - > - </File> - <File - RelativePath="..\..\..\engine\gc.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_driver.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_operations.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_options.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_res_options.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_resmgr.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_resource.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_state_internal.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_system.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_tools.h" - > - </File> - <File - RelativePath="..\..\..\include\gfx_widgets.h" - > - </File> - <File - RelativePath="..\..\..\gfx\drivers\dx_driver.h" - > - </File> - <File - RelativePath="..\..\..\include\hashmap.h" - > - </File> - <File - RelativePath="..\..\..\engine\heap.h" - > - </File> - <File - RelativePath="..\..\..\include\heapmgr.h" - > - </File> - <File - RelativePath="..\..\..\include\int_hashmap.h" - > - </File> - <File - RelativePath="..\..\..\include\kdebug.h" - > - </File> - <File - RelativePath="..\..\..\include\kernel.h" - > - </File> - <File - RelativePath="..\..\..\engine\kernel_compat.h" - > - </File> - <File - RelativePath="..\..\..\engine\kernel_types.h" - > - </File> - <File - RelativePath="..\..\..\include\list.h" - > - </File> - <File - RelativePath="..\..\..\include\listener.h" - > - </File> - <File - RelativePath="..\..\..\include\menubar.h" - > - </File> - <File - RelativePath="..\..\..\include\modules.h" - > - </File> - <File - RelativePath="..\..\..\include\old_objects.h" - > - </File> - <File - RelativePath="..\..\..\include\reg_t_hashmap.h" - > - </File> - <File - RelativePath="..\..\..\include\resource.h" - > - </File> - <File - RelativePath="..\..\..\include\sbtree.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_conf.h" - > - </File> - <File - RelativePath="..\..\..\engine\sci_graphics.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_memory.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_midi.h" - > - </File> - <File - RelativePath="..\..\..\include\sci_widgets.h" - > - </File> - <File - RelativePath="..\..\..\include\sciresource.h" - > - </File> - <File - RelativePath="..\..\..\include\scitypes.h" - > - </File> - <File - RelativePath="..\..\..\include\script.h" - > - </File> - <File - RelativePath="..\..\..\include\seg_manager.h" - > - </File> - <File - RelativePath="..\..\..\sfx\seq\instrument-map.h" - > - </File> - <File - RelativePath="..\..\..\sfx\adlib.h" - > - </File> - <File - RelativePath="..\..\..\sfx\pcm_device\audiobuf.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_core.h" - > - </File> - <File - RelativePath="..\..\..\sfx\device.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_engine.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_iterator.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_iterator_internal.h" - > - </File> - <File - RelativePath="..\..\..\sfx\mixer.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_pcm.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_player.h" - > - </File> - <File - RelativePath="..\..\..\sfx\sequencer.h" - > - </File> - <File - RelativePath="..\..\..\sfx\softseq.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_songlib.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_time.h" - > - </File> - <File - RelativePath="..\..\..\include\sfx_timer.h" - > - </File> - <File - RelativePath="..\..\..\include\sys_strings.h" - > - </File> - <File - RelativePath="..\..\..\include\uinput.h" - > - </File> - <File - RelativePath="..\..\..\include\util.h" - > - </File> - <File - RelativePath="..\..\..\include\versions.h" - > - </File> - <File - RelativePath="..\..\..\include\vm.h" - > - </File> - <File - RelativePath="..\..\..\include\vm_types.h" - > - </File> - <File - RelativePath="..\..\..\include\vocabulary.h" - > - </File> - <Filter - Name="win32" - > - <File - RelativePath="..\..\..\include\win32\sci_win32.h" - > - </File> - </Filter> - <Filter - Name="SDL" - > - <File - RelativePath="..\..\..\..\..\SDL\include\begin_code.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\close_code.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_active.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_audio.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_byteorder.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_cdrom.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_amiga.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_dreamcast.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_macos.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_macosx.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_minimal.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_nds.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_os2.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_symbian.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_config_win32.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_copying.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_cpuinfo.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_endian.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_error.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_events.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_getenv.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_joystick.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_keyboard.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_keysym.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_loadso.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_main.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_mouse.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_mutex.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_name.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_opengl.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_platform.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_quit.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_rwops.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_stdinc.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_syswm.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_thread.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_timer.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_types.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_version.h" - > - </File> - <File - RelativePath="..\..\..\..\..\SDL\include\SDL_video.h" - > - </File> - </Filter> - <Filter - Name="softseq" - > - <File - RelativePath="..\..\..\sfx\softseq\fmopl.h" - > - </File> - </Filter> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/engines/sci/win32/msvc90-2008/sciv/sciv.vcproj b/engines/sci/win32/msvc90-2008/sciv/sciv.vcproj deleted file mode 100644 index c00d525f75..0000000000 --- a/engines/sci/win32/msvc90-2008/sciv/sciv.vcproj +++ /dev/null @@ -1,262 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="sciv" - ProjectGUID="{6BF71632-BD06-4D48-AE7C-21C6EB76CACA}" - RootNamespace="sciv" - Keyword="Win32Proj" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName=".\Release/sciv.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=\"0.6.3-dev\";PACKAGE=\"FreeSCI\";HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - StringPooling="true" - RuntimeLibrary="2" - BufferSecurityCheck="false" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="$(OutDir)\fsci.lib" - OutputFile="$(OutDir)\FreeSCI.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName=".\Debug/sciv.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - Optimization="0" - AdditionalIncludeDirectories=""$(SolutionDir)..\..\..\..\SDL\include";"$(SolutionDir)..\..\include";"$(SolutionDir)..\..\include\win32"" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;VERSION=__TIMESTAMP__;PACKAGE=\"FreeSCI\";HAVE_MEMCHR;HAVE_SYS_STAT_H;HAVE_FCNTL_H;HAVE_STRING_H;HAVE_UNLINK;HAVE_RMDIR;WANT_CONSOLE" - RuntimeLibrary="3" - BasicRuntimeChecks="3" - BufferSecurityCheck="false" - RuntimeTypeInfo="true" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseUnicodeResponseFiles="false" - AdditionalDependencies="$(OutDir)\fsci.lib" - OutputFile="$(OutDir)\FreeSCI.exe" - LinkIncremental="1" - GenerateDebugInformation="true" - GenerateManifest="true" - IgnoreDefaultLibraryNames="libci.lib" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - RandomizedBaseAddress="0" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - UseUnicodeResponseFiles="false" - EmbedManifest="false" - /> - <Tool - Name="VCXDCMakeTool" - UseUnicodeResponseFiles="false" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" - > - <File - RelativePath="..\..\..\config.c" - > - </File> - <File - RelativePath="..\..\..\config.l" - > - </File> - <File - RelativePath="..\..\..\main.c" - > - </File> - <Filter - Name="win32" - > - <File - RelativePath="..\..\getopt.c" - > - </File> - </Filter> - <Filter - Name="menu" - > - <File - RelativePath="..\..\..\menu\game_select_init.c" - > - </File> - <File - RelativePath="..\..\..\menu\game_select_screen.c" - > - </File> - </Filter> - </Filter> - <Filter - Name="Header Files" - > - <Filter - Name="win32" - > - <File - RelativePath="..\..\..\include\win32\getopt.h" - > - </File> - <File - RelativePath="..\..\..\include\win32\sci_win32.h" - > - </File> - </Filter> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/engines/sci/win32/usleep.c b/engines/sci/win32/usleep.c deleted file mode 100644 index b175a2b4e2..0000000000 --- a/engines/sci/win32/usleep.c +++ /dev/null @@ -1,25 +0,0 @@ -#ifdef _WIN32 - -#include <windows.h> - -extern void -usleep (long usec) -{ - LARGE_INTEGER lFrequency; - LARGE_INTEGER lEndTime; - LARGE_INTEGER lCurTime; - - QueryPerformanceFrequency (&lFrequency); - if (lFrequency.QuadPart) - { - QueryPerformanceCounter (&lEndTime); - lEndTime.QuadPart += (LONGLONG) usec * lFrequency.QuadPart / 1000000; - do - { - QueryPerformanceCounter (&lCurTime); - Sleep(0); - } while (lCurTime.QuadPart < lEndTime.QuadPart); - } -} - -#endif diff --git a/engines/sci/yywrap.c b/engines/sci/yywrap.c deleted file mode 100644 index 9bc119b735..0000000000 --- a/engines/sci/yywrap.c +++ /dev/null @@ -1,4 +0,0 @@ -int yywrap() -{ - return 1; -} |