#line 3 "lex.yy.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 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yyget_lval #define yyget_lval_ALREADY_DEFINED #else #define yyget_lval yyget_lval #endif #ifdef yyset_lval #define yyset_lval_ALREADY_DEFINED #else #define yyset_lval yyset_lval #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __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 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; /* 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 #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* 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 yyg->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 ((yyg->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 , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #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 #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* 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 = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->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, yyg->yytext_ptr , yyscanner ) #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. */ int 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 */ /* 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 ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->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 yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef flex_uint8_t YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); static int yy_get_next_buffer ( yyscan_t yyscanner ); static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 173 #define YY_END_OF_BUFFER 174 /* 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 const flex_int16_t yy_acclist[1801] = { 0, 65, 65, 65, 65, 65, 65, 65, 65, 142, 142, 142, 142, 155, 155, 170, 170, 174, 117, 173, 118, 173, 118, 173, 116, 173, 120, 173, 117, 173, 117, 173, 117, 173, 120, 173, 101, 102, 173, 65, 101, 102, 173, 87, 173, 87, 101, 102, 173, 66, 101, 102, 173, 101, 102, 173, 58, 101, 102, 173, 64, 101, 102, 173, 101, 102, 173, 92, 101, 102, 173, 88, 101, 102, 173, 1, 2, 21, 101, 102, 173, 16402, 100, 101, 102, 173, 86, 101, 102, 173, 21, 101, 102, 173,16402, 58, 101, 102, 173, 101, 102, 173, 70, 101, 102, 173, 57, 101, 102, 173, 64, 101, 102, 173, 102, 173, 102, 173, 102, 173, 102, 173, 65, 101, 102, 173, 22, 101, 102, 173,16403, 75, 101, 102, 173, 61, 101, 102, 173, 22, 101, 102, 173,16403, 61, 101, 102, 173, 92, 101, 102, 173, 1, 2, 22, 101, 102, 173,16403, 22, 101, 102, 173,16403, 59, 101, 102, 173, 22, 101, 102, 173,16403, 62, 101, 102, 173, 102, 173, 102, 173, 102, 173, 65, 101, 102, 173, 23, 101, 102, 173, 16404, 75, 101, 102, 173, 23, 101, 102, 173,16404, 92, 101, 102, 173, 1, 2, 23, 101, 102, 173, 16404, 23, 101, 102, 173,16404, 59, 101, 102, 173, 23, 101, 102, 173,16404, 102, 173, 102, 173, 102, 173, 114, 115, 173, 114, 115, 173, 108, 173, 108, 114, 115, 173, 110, 114, 115, 173, 103, 110, 114, 115, 173, 113, 114, 115, 173, 115, 173, 115, 173, 115, 173, 115, 173, 109, 173, 109, 114, 115, 173, 150, 158, 173, 150, 158, 173, 135, 173, 135, 150, 158, 173, 123, 150, 158, 173, 150, 158, 173, 158, 173, 158, 173, 158, 173, 158, 173, 134, 150, 158, 173, 136, 173, 136, 150, 158, 173, 133, 134, 150, 158, 173, 133, 134, 150, 158, 173, 133, 134, 150, 158, 173, 134, 158, 173, 134, 158, 173, 134, 158, 173, 134, 158, 173, 137, 173, 137, 150, 158, 173, 141, 150, 158, 173,16523, 150, 158, 173, 124, 150, 158, 173, 65, 101, 102, 173, 101, 102, 173, 101, 102, 173, 92, 101, 102, 173, 1, 2, 12, 21, 101, 102, 173,16402, 59, 101, 102, 173, 101, 102, 173, 142, 150, 158, 173, 138, 173, 138, 150, 158, 173, 150, 158, 173, 150, 158, 173, 157, 173, 155, 157, 173, 156, 173, 156, 157, 173, 154, 157, 173, 151, 157, 173, 152, 157, 173, 153, 157, 173, 163, 171, 173, 170, 171, 173, 169, 173, 169, 171, 173, 164, 168, 171, 173, 163, 171, 173, 165, 168, 171, 173, 168, 171, 173, 163, 171, 173, 159, 163, 171, 173, 159, 163, 171, 173, 100, 163, 171, 173, 163, 171, 173, 163, 171, 173, 163, 171, 173, 167, 168, 171, 173, 149, 173, 149, 150, 158, 173, 143, 150, 158, 173, 150, 158, 173, 172, 173, 173, 117, 117, 117, 117, 118, 116, 122, 119, 117, 117, 117, 122, 65, 91, 87, 71, 69, 67, 73, 1, 2, 90, 5, 6, 93, 1, 2, 21,16402, 21,16402, 21, 16402, 100, 99, 95, 95, 99, 96, 99, 97, 99, 98, 99, 101, 65, 91, 22, 24,16403, 22,16403, 22, 24,16403, 22,16403, 22,16403, 82, 76, 81, 79, 78, 77, 80, 1, 2, 22, 24,16403, 60, 5, 6, 1, 2, 22, 24,16403, 22, 24,16403, 22, 24,16403, 22,16403, 24, 22,16403, 22,16403, 22,16403, 11, 22,16403, 95, 22, 101,16403, 65, 91, 23, 25,16404, 23,16404, 23, 25,16404, 23, 16404, 23,16404, 1, 2, 23, 25,16404, 85, 5, 6, 1, 2, 23, 25,16404, 23, 25,16404, 23, 25,16404, 23,16404, 25, 23,16404, 23,16404, 23, 16404, 11, 23,16404, 23, 101,16404, 108, 112, 107, 107, 112, 104, 112, 111, 112, 105, 112, 106, 112, 112, 114, 109, 135, 131, 127, 128, 127, 128, 131, 125, 131, 129, 131, 130, 131, 150, 136, 133, 132, 133, 132, 133, 137, 8331, 11, 8331, 8331, 140, 126, 131, 65, 91, 1, 2, 12, 1, 2, 12, 21, 16402, 142, 138, 128, 128, 131, 155, 156, 163, 170, 169, 163, 159, 163, 159, 163, 163, 163, 159, 163, 100, 163, 163, 163, 163, 166, 149, 148, 144, 148, 147, 148, 122, 117, 122, 121, 121, 122, 89, 94, 72, 74, 68, 3, 3, 3, 63, 1, 2, 5, 6, 7, 7, 7, 93, 2, 10, 5, 6, 7, 10, 8210, 7, 10, 7, 10, 5, 6, 21,16402, 8210, 95, 97, 97, 97, 22, 24,16403, 22, 24, 16403, 22, 24,16403, 22, 24,16403, 8211, 22, 24, 16403, 22, 24,16403, 22, 24,16403, 24, 24, 84, 83, 22, 24,16403, 22,16403, 22,16403, 5, 6, 8211, 1, 2, 22, 24,16403, 22, 24,16403, 8, 5, 6, 8, 8, 8, 2, 8, 10, 10, 5, 6, 8, 10, 8211, 8, 10, 10, 8, 10, 10, 10, 10, 22, 24,16403, 5, 6, 22, 24,16403, 22, 24,16403, 22, 24,16403, 24, 22, 24,16403, 24, 22, 24,16403, 22,16403, 22,16403, 11, 22, 24,16403, 23, 25,16404, 23, 25,16404, 23, 25, 16404, 23, 25,16404, 8212, 23, 25,16404, 23, 25, 16404, 23, 25,16404, 25, 25, 23, 25,16404, 23, 16404, 23,16404, 5, 6, 8212, 1, 2, 23, 25, 16404, 23, 25,16404, 9, 5, 6, 9, 9, 9, 2, 9, 10, 10, 5, 6, 9, 10, 8212, 9, 10, 10, 9, 10, 10, 10, 10, 23, 25,16404, 5, 6, 23, 25,16404, 23, 25,16404, 23, 25, 16404, 25, 23, 25,16404, 25, 23, 25,16404, 23, 16404, 23,16404, 11, 23, 25,16404, 107, 107, 105, 105, 105, 127, 128, 127, 128, 129, 129, 129, 11, 3, 16, 3, 14, 1, 2, 12, 2, 10, 8210, 128, 128, 84, 163, 83, 163, 159, 163, 163, 159, 163, 163, 163, 163, 121, 5, 6, 7, 7, 5, 6, 3, 4, 4, 3, 4, 3, 4, 54, 54, 54, 54, 54, 54, 35, 5, 6, 7, 10, 6, 5, 6, 7, 2, 5, 6, 7, 8210, 5, 6, 7, 5, 6, 7, 21,16402, 7, 21,16402, 5, 6, 8, 8, 5, 6, 22, 24,16403, 22, 24, 16403, 22, 24,16403, 22, 24,16403, 22, 24,16403, 22, 24,16403, 24, 24, 24, 24, 22, 24,16403, 22, 24,16403, 22, 24,16403, 5, 6, 8, 8211, 8, 8, 8, 6, 8, 8, 5, 6, 8, 8, 8, 8, 8, 8, 5, 6, 8, 2, 5, 6, 8, 8211, 8, 5, 6, 8, 8, 22, 24,16403, 22, 24,16403, 5, 6, 8, 22, 24,16403, 8, 22, 24,16403, 24, 22, 24,16403, 22, 24,16403, 22, 24,16403, 11, 22, 24,16403, 5, 6, 9, 9, 5, 6, 23, 25,16404, 23, 25,16404, 23, 25,16404, 23, 25,16404, 23, 25,16404, 23, 25, 16404, 25, 25, 25, 25, 23, 25,16404, 23, 25, 16404, 23, 25,16404, 5, 6, 9, 8212, 9, 9, 9, 6, 9, 9, 5, 6, 9, 9, 9, 9, 9, 9, 5, 6, 9, 2, 5, 6, 9, 8212, 9, 5, 6, 9, 9, 23, 25,16404, 23, 25, 16404, 5, 6, 9, 23, 25,16404, 9, 23, 25, 16404, 25, 23, 25,16404, 23, 25,16404, 23, 25, 16404, 17, 15, 13, 11, 23, 25,16404,16523, 3, 4, 16, 3, 4, 14, 2, 163, 163, 163, 3, 3, 3, 26, 34, 36, 48, 48, 48, 48, 48, 48, 43, 43, 43, 43, 43, 43, 51, 6, 7, 7, 5, 6, 6, 7, 10, 7, 10, 6, 7, 8210, 5, 6, 8, 22, 24,16403, 22, 24,16403, 22, 24,16403, 24, 8, 8, 6, 8, 8, 8, 8, 8, 5, 6, 8, 6, 8, 10, 8, 10, 6, 5, 6, 8, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 8211, 8, 22, 24,16403, 8, 22, 24,16403, 5, 6, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 24, 8, 24, 5, 6, 9, 23, 25,16404, 23, 25,16404, 23, 25,16404, 25, 9, 9, 6, 9, 9, 9, 9, 9, 5, 6, 9, 6, 9, 10, 9, 10, 6, 5, 6, 9, 9, 23, 25,16404, 9, 23, 25, 16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 8212, 9, 23, 25,16404, 9, 23, 25,16404, 5, 6, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25, 16404, 9, 23, 25,16404, 9, 25, 9, 25, 163, 162, 160, 6, 7, 7, 38, 38, 38, 38, 38, 38, 55, 55, 55, 55, 55, 55, 56, 46, 46, 46, 46, 46, 46, 28, 42, 42, 42, 42, 42, 42, 27, 27, 27, 27, 27, 27, 6, 7, 6, 7, 6, 8, 8, 6, 8, 8, 8, 6, 8, 8, 6, 8, 6, 8, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24, 16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 8211, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24, 16403, 8, 22, 24,16403, 8, 24, 8, 24, 8, 24, 8, 24, 6, 9, 9, 6, 9, 9, 9, 6, 9, 9, 6, 9, 6, 9, 9, 23, 25, 16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25, 16404, 9, 8212, 9, 23, 25,16404, 9, 23, 25, 16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 25, 9, 25, 9, 25, 9, 25, 161, 146, 146, 31, 31, 31, 31, 31, 31, 30, 52, 52, 52, 52, 52, 52, 47, 45, 29, 39, 39, 39, 39, 39, 39, 6, 6, 8, 6, 8, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24, 16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24,16403, 8, 22, 24, 16403, 8, 24, 6, 9, 6, 9, 9, 23, 25, 16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25, 16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 23, 25,16404, 9, 25, 32, 32, 32, 32, 32, 32, 50, 50, 50, 50, 50, 50, 33, 33, 33, 33, 33, 33, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 44, 37, 37, 37, 37, 37, 37, 53, 49, 49, 49, 49, 49, 49, 145 } ; static const flex_int16_t yy_accept[1778] = { 0, 1, 1, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 39, 43, 45, 49, 53, 56, 60, 64, 67, 71, 75, 82, 86, 90, 95, 99, 102, 106, 110, 114, 116, 118, 120, 122, 126, 131, 135, 139, 144, 148, 152, 159, 164, 168, 173, 177, 179, 181, 183, 187, 192, 196, 201, 205, 212, 217, 221, 226, 228, 230, 232, 235, 238, 240, 244, 248, 253, 257, 259, 261, 263, 265, 267, 271, 274, 277, 279, 283, 287, 290, 292, 294, 296, 298, 302, 304, 308, 313, 318, 323, 326, 329, 332, 335, 337, 341, 346, 349, 353, 357, 360, 363, 367, 375, 379, 382, 386, 388, 392, 395, 398, 400, 403, 405, 408, 411, 414, 417, 420, 423, 426, 428, 431, 435, 438, 442, 445, 448, 452, 456, 460, 463, 466, 469, 473, 475, 479, 483, 486, 488, 489, 490, 491, 492, 493, 494, 495, 495, 496, 497, 498, 499, 500, 500, 501, 502, 502, 503, 503, 504, 505, 505, 506, 507, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 510, 511, 513, 514, 514, 514, 518, 520, 522, 523, 523, 524, 525, 527, 529, 531, 533, 534, 534, 534, 535, 535, 536, 536, 539, 541, 541, 544, 544, 546, 546, 546, 546, 546, 548, 549, 550, 551, 552, 553, 554, 555, 555, 560, 561, 563, 563, 563, 568, 571, 574, 576, 577, 579, 579, 579, 579, 581, 581, 583, 586, 586, 586, 586, 587, 590, 590, 590, 591, 591, 592, 592, 595, 597, 597, 600, 600, 602, 602, 602, 602, 604, 604, 609, 610, 612, 612, 612, 617, 620, 623, 625, 626, 628, 628, 628, 628, 630, 630, 632, 635, 635, 635, 635, 638, 638, 638, 638, 638, 639, 640, 641, 643, 645, 647, 649, 651, 652, 653, 653, 653, 654, 654, 654, 655, 656, 658, 661, 663, 665, 667, 668, 668, 668, 669, 670, 672, 674, 675, 675, 676, 676, 678, 679, 680, 682, 683, 684, 684, 684, 687, 687, 687, 692, 692, 693, 693, 694, 695, 697, 698, 699, 700, 701, 702, 703, 705, 707, 708, 709, 711, 713, 714, 715, 716, 717, 718, 719, 721, 723, 724, 725, 726, 727, 729, 730, 731, 731, 731, 731, 731, 732, 733, 734, 734, 735, 735, 736, 736, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, 738, 738, 740, 740, 740, 743, 744, 745, 746, 747, 748, 753, 755, 757, 757, 761, 762, 763, 764, 765, 766, 766, 766, 766, 766, 766, 766, 769, 772, 775, 778, 778, 778, 778, 779, 782, 785, 788, 788, 788, 788, 789, 789, 790, 790, 790, 790, 790, 790, 791, 792, 795, 797, 799, 799, 799, 799, 802, 807, 810, 811, 811, 811, 811, 814, 815, 815, 816, 816, 816, 816, 817, 819, 820, 825, 827, 828, 830, 831, 832, 833, 836, 841, 844, 847, 848, 851, 851, 851, 851, 852, 852, 852, 852, 852, 852, 855, 857, 859, 859, 859, 859, 863, 863, 863, 863, 863, 863, 863, 863, 863, 866, 869, 872, 875, 875, 875, 875, 876, 879, 882, 885, 885, 885, 885, 886, 886, 887, 887, 887, 887, 887, 887, 890, 892, 894, 894, 894, 894, 897, 902, 905, 906, 906, 906, 906, 909, 910, 910, 911, 911, 911, 911, 912, 914, 915, 920, 922, 923, 925, 926, 927, 928, 931, 936, 939, 942, 943, 946, 946, 946, 946, 947, 947, 947, 947, 947, 947, 950, 952, 954, 954, 954, 954, 954, 954, 954, 958, 958, 958, 958, 959, 960, 961, 962, 963, 963, 965, 967, 968, 969, 970, 970, 971, 971, 971, 971, 971, 971, 973, 973, 975, 975, 978, 979, 981, 982, 983, 985, 987, 989, 990, 992, 993, 994, 995, 995, 995, 996, 996, 999, 1000, 1002, 1002, 1004, 1005, 1005, 1007, 1007, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1015, 1015, 1015, 1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1020, 1021, 1021, 1024, 1024, 1025, 1025, 1029, 1032, 1032, 1037, 1040, 1040, 1043, 1044, 1044, 1046, 1049, 1052, 1055, 1055, 1055, 1055, 1055, 1055, 1058, 1061, 1064, 1064, 1064, 1064, 1064, 1064, 1065, 1066, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1071, 1074, 1077, 1077, 1077, 1077, 1077, 1077, 1081, 1082, 1083, 1083, 1083, 1083, 1084, 1085, 1086, 1087, 1090, 1091, 1092, 1092, 1092, 1092, 1093, 1093, 1093, 1093, 1094, 1094, 1094, 1094, 1095, 1098, 1098, 1098, 1098, 1099, 1099, 1103, 1104, 1107, 1111, 1114, 1114, 1120, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1128, 1131, 1134, 1134, 1134, 1134, 1134, 1134, 1138, 1138, 1138, 1141, 1142, 1142, 1144, 1147, 1150, 1153, 1153, 1153, 1153, 1153, 1153, 1156, 1159, 1162, 1162, 1162, 1162, 1162, 1162, 1163, 1164, 1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1169, 1172, 1175, 1175, 1175, 1175, 1175, 1175, 1179, 1180, 1181, 1181, 1181, 1181, 1182, 1183, 1184, 1185, 1188, 1189, 1190, 1190, 1190, 1190, 1191, 1191, 1191, 1191, 1192, 1192, 1192, 1192, 1193, 1196, 1196, 1196, 1196, 1197, 1197, 1201, 1202, 1205, 1209, 1212, 1212, 1218, 1222, 1222, 1222, 1222, 1222, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1226, 1229, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1233, 1233, 1234, 1234, 1235, 1239, 1239, 1239, 1239, 1239, 1240, 1243, 1246, 1247, 1248, 1249, 1250, 1250, 1250, 1250, 1250, 1251, 1252, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1254, 1254, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1256, 1256, 1256, 1256, 1256, 1256, 1257, 1258, 1259, 1259, 1260, 1261, 1262, 1262, 1262, 1262, 1263, 1264, 1265, 1265, 1266, 1267, 1268, 1268, 1268, 1268, 1269, 1269, 1271, 1272, 1274, 1277, 1279, 1279, 1280, 1282, 1282, 1282, 1285, 1288, 1291, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1296, 1296, 1296, 1296, 1296, 1296, 1297, 1297, 1297, 1297, 1299, 1300, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1302, 1303, 1303, 1303, 1303, 1303, 1303, 1306, 1306, 1309, 1311, 1311, 1312, 1315, 1319, 1323, 1327, 1331, 1331, 1331, 1331, 1335, 1337, 1341, 1345, 1351, 1355, 1355, 1355, 1355, 1359, 1363, 1367, 1367, 1367, 1367, 1369, 1369, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1374, 1377, 1380, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1385, 1385, 1385, 1385, 1385, 1385, 1386, 1386, 1386, 1386, 1388, 1389, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1391, 1392, 1392, 1392, 1392, 1392, 1392, 1395, 1395, 1398, 1400, 1400, 1401, 1404, 1408, 1412, 1416, 1420, 1420, 1420, 1420, 1424, 1426, 1430, 1434, 1440, 1444, 1444, 1444, 1444, 1448, 1452, 1456, 1456, 1456, 1456, 1458, 1458, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1461, 1462, 1463, 1463, 1463, 1465, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1467, 1468, 1469, 1469, 1470, 1471, 1472, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1478, 1479, 1479, 1479, 1479, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1485, 1485, 1485, 1486, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1492, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1498, 1498, 1500, 1502, 1504, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1507, 1508, 1509, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1512, 1514, 1516, 1520, 1524, 1528, 1528, 1528, 1528, 1528, 1528, 1532, 1536, 1540, 1540, 1540, 1540, 1542, 1546, 1550, 1554, 1554, 1554, 1554, 1554, 1554, 1558, 1562, 1566, 1566, 1566, 1566, 1566, 1566, 1568, 1570, 1572, 1572, 1572, 1572, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1576, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1579, 1580, 1581, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1584, 1586, 1588, 1592, 1596, 1600, 1600, 1600, 1600, 1600, 1600, 1604, 1608, 1612, 1612, 1612, 1612, 1614, 1618, 1622, 1626, 1626, 1626, 1626, 1626, 1626, 1630, 1634, 1638, 1638, 1638, 1638, 1638, 1638, 1640, 1642, 1644, 1644, 1644, 1644, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1647, 1648, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1662, 1662, 1662, 1662, 1663, 1663, 1663, 1664, 1664, 1664, 1665, 1665, 1665, 1665, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1672, 1672, 1672, 1672, 1674, 1674, 1674, 1676, 1680, 1684, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1692, 1696, 1700, 1700, 1700, 1700, 1700, 1700, 1704, 1708, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1716, 1716, 1716, 1718, 1722, 1726, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1734, 1738, 1742, 1742, 1742, 1742, 1742, 1742, 1746, 1750, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1786, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1801, 1801 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 6, 9, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 22, 22, 23, 24, 25, 26, 25, 27, 28, 29, 29, 30, 31, 32, 30, 33, 34, 33, 35, 33, 33, 33, 36, 33, 33, 33, 37, 38, 39, 33, 33, 40, 41, 33, 33, 42, 43, 44, 45, 33, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 33, 56, 57, 58, 59, 60, 61, 33, 62, 63, 64, 65, 66, 40, 67, 68, 33, 69, 9, 70, 71, 1, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73 } ; static const YY_CHAR yy_meta[77] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 6, 9, 9, 2, 10, 11, 12, 11, 13, 14, 15, 15, 15, 15, 16, 17, 18, 6, 6, 19, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 9, 6, 7, 23, 1, 15, 15, 20, 15, 24, 15, 21, 21, 22, 21, 25, 21, 21, 22, 22, 21, 22, 21, 21, 21, 22, 21, 9, 7, 26, 1, 1, 27, 27, 27 } ; static const flex_int16_t yy_base[2047] = { 0, 0, 3, 79, 0, 155, 0, 231, 0, 306, 381, 6, 8, 357, 363, 457, 0, 532, 607, 682, 0, 369, 541, 726, 801, 876, 927, 978, 1048, 546, 551, 6149, 6147, 6143, 238,14165, 6139, 6136, 11, 253, 260, 265, 12,14165, 24,14165, 6133,14165, 585, 1118, 6118, 30, 37,14165, 396, 0,14165, 6,14165, 1192,14165, 14165,14165,14165, 6059, 6058, 6053, 560, 631, 1253,14165, 1313, 6110, 41, 551, 641, 718, 50,14165, 6043, 6028, 6023, 731, 738, 6069, 1382, 754, 765, 809, 837, 653, 6017, 6010, 6002,14165, 25,14165, 6059,14165,14165, 1458, 14165, 5988, 5987, 5986,14165, 6052,14165, 353,14165, 6051, 14165, 1532,14165, 5975, 5974, 5956,14165,14165, 6021, 0, 13, 1581,14165, 5943, 5926, 5921,14165, 5989, 1626, 1695, 14165, 340, 1068, 332, 342, 621, 5978, 62, 405,14165, 5979, 398, 327,14165, 13,14165, 5976,14165,14165,14165, 14165, 0, 341,14165, 5960,14165, 400,14165,14165, 519, 535, 692, 1761, 5901, 5881, 5883, 5930,14165, 5939,14165, 944,14165,14165, 313, 521, 591, 646,14165, 5928, 755, 0,14165, 329, 735, 746, 822, 446, 847, 819, 914, 995,14165,14165, 368,14165,14165,14165, 675, 873, 543, 0, 796, 1786, 1020, 825, 1187, 891, 1141, 895, 1205, 1013, 1208, 1263, 1242, 1280, 1008, 1034, 1288, 1285, 1219, 5860, 5858, 5847, 769, 1013, 1186, 583, 1360, 585, 1082, 1851, 1397, 584, 1205, 0, 1019,14165, 627, 762,14165, 919, 0,14165, 5841, 5821, 1418, 1305, 1285, 1526, 1368, 1542, 1248, 1598, 1277, 1636, 5810, 5808, 5802, 1541, 1659, 14165,14165,14165,14165,14165,14165,14165, 1346, 1920,14165, 1989, 1430, 2065, 0, 1669, 1722, 1741, 586, 1939, 5794, 5786, 5778, 1953, 5825, 2134, 0, 5773, 5770, 5765, 950, 1960, 5764, 5761, 1552, 1352, 1773, 2144, 2152, 2160, 1387, 2170, 1581, 2173, 5757, 5744, 5743, 2194, 1603, 2263,14165, 2332, 1706, 2408, 0, 2241, 2282, 2296, 828, 2303, 5742, 5740, 5731, 2477, 1591, 2546, 0, 5729, 5724, 5719, 2481, 5718, 5716, 1002, 560,14165,14165, 632, 958,14165,14165, 1005,14165, 0,14165, 5714, 5704,14165, 1120, 643,14165, 14165, 666, 1016,14165, 1229, 0,14165, 5703, 5702,14165, 0, 901, 2604,14165, 675,14165, 1641, 1658, 0, 2037, 14165, 826, 1230, 1788, 809, 1803, 1938, 1687, 1970, 5717, 1186, 674,14165, 860, 1326, 886,14165, 0, 1124,14165, 2011, 745, 1912, 1760, 2004, 2221, 2655, 5707, 5699, 5689, 14165,14165,14165,14165, 396, 0, 1350, 830,14165, 906, 1128,14165, 2023, 2152, 2491, 2314,14165,14165,14165, 925, 953, 1374, 1698, 0, 2712, 1533, 5670, 5667, 5662, 858, 5668, 1176, 5673, 1396, 5661, 5661, 5649, 5649, 748, 5635, 1125, 5629, 5642, 261, 5625, 5622, 1713, 2200, 1926, 2299, 2191, 2241, 2463, 2306, 2323, 2469, 2327, 1737, 2764, 2472, 2319, 2484, 2502, 2570, 2509, 2526, 2556, 2539, 2605, 2573, 2563, 5607, 5590, 1807, 2840, 2654, 2128, 0, 2670, 0, 2589, 1344, 2696,14165, 2763, 0, 2687, 1953, 2029, 2210, 1381, 1732,14165, 5637, 5580, 2281, 2509, 2909, 2779, 2732, 2916, 2919, 2926, 2942, 5578, 5577, 5562, 2346, 2958, 2981, 2991, 5560, 5555, 5550, 2965, 5596, 1618, 5543, 5532, 5530, 5528, 5527,14165,14165, 3007, 3014, 3030, 5466, 5446, 5445, 3099, 3168, 3029, 2619, 5493, 2797, 2997, 3237, 1904, 2715, 3077, 5443, 5437, 5435, 3113, 2661, 5481, 3306, 1979, 2747, 3140, 5431, 5427, 5425, 3150, 3375, 3201, 3204, 2070, 3273, 5412, 5383, 5382, 2145, 5375, 5366, 5364, 5358, 5352, 3287, 3314, 3348, 5345, 5341, 5333, 3444, 5329, 5328, 5322, 2783, 2805, 3513, 3216, 2958, 3356, 3383, 3410, 3417, 5320, 5318, 5317, 2899, 3452, 3479, 3486, 5315, 5314, 5307, 3103, 5343, 2213, 5292, 5281, 5278, 5273, 5271, 3521, 3529, 3548, 5270, 5266, 5259, 3617, 3686, 3595, 2953, 5302, 2936, 3197, 3755, 2269, 2988, 3636, 5235, 5231, 5230, 3422, 3062, 5278, 3824, 2316, 3132, 3650, 5222, 5218, 5212, 3491, 3893, 3555, 3659, 2427, 3672, 5204, 5200, 5199, 2442, 5198, 5169, 5160, 5157, 5155, 3721, 3728, 3790, 5153, 5151, 5149, 2477, 3178, 997, 3962, 5138, 5137, 5136, 1395, 1426, 3089,14165, 5179, 5114, 1583, 1428, 3122,14165, 5155, 5105, 3057, 3278, 3394, 0, 5152, 2737, 2948, 0, 4024, 0, 3324, 3560, 3242, 1590, 1633, 0, 0, 3664, 3265, 3286, 5111, 5115, 5120, 0, 3049,14165, 3769, 3802, 3857, 3840, 1650, 1931, 5146, 3462, 3480, 5145, 4058, 5082, 5081, 5095, 5097, 5072, 1035, 5062, 5064, 5066, 715, 5055, 5057, 1590, 5042, 0, 5035, 5029, 5022, 5012, 2180, 5005, 5001, 4998, 4995, 4986, 4974, 4974, 3718, 3879, 3883, 3921, 3917, 3929, 3937, 3925, 4017, 4045, 4058, 4092, 4112, 4126, 4138,14165, 4134, 4168, 4955, 4889, 4864, 4160, 4235, 4311, 4255, 2585,14165, 4272, 4168, 4387, 4267, 4349, 4284, 4391, 4863, 4231, 4420, 3333, 3956, 4471, 4533, 4004, 4541, 4013, 4282, 3733, 4913, 4549, 4593, 4566, 3347, 4609, 4626, 4642, 4649, 4857, 4855, 4849, 4848, 4832, 4665, 4681, 4691, 4826, 4825, 4821, 4814, 4812, 3734, 4078, 3027, 4810, 4809, 4807, 3049, 4799, 4786, 4757, 4745, 4743, 4736, 4704, 4714, 4730, 4720, 4714, 4704, 4702, 4701, 4799, 3493, 3128, 4692, 4690, 4680, 3165, 4868, 3516, 3603, 3599, 3311, 4777, 4676, 4663, 4662, 3372, 4658, 4648, 4643, 4103, 4639, 4635, 4633, 4343, 4762, 4614, 4588, 4944, 4813, 4045, 0, 4749, 4827, 4849, 5013, 4848, 5082, 5017, 3888, 4586, 4584, 4583, 3510, 4581, 4580, 4576, 4564, 4563, 4550, 4537, 4523, 5020, 5038, 5092, 4521, 4519, 4518, 4511, 4503, 5161, 4487, 4886, 5230, 5054, 3622, 5123, 5142, 5168, 5203, 4485, 4479, 4477, 4416, 4392, 5211, 5238, 5246, 4386, 4375, 4372, 4364, 4358, 4119, 4588, 3532, 4344, 4341, 4340, 3586, 4337, 4329, 4307, 4298, 4295, 4280, 5265, 5272, 5307, 4278, 4272, 4260, 4255, 4252, 5376, 3693, 3623, 4245, 4236, 4233, 3706, 5445, 3762, 3871, 3806, 3740, 5335, 4228, 4226, 4222, 3774, 4216, 4209, 4204, 4616, 4203, 4199, 4196, 5059, 5104, 4190, 4189, 5521, 5173, 4355, 0, 5340, 5277, 5357, 5395, 5356, 5590, 5411, 3912, 4187, 4177, 4173, 3829, 4169, 4167, 4166, 4139, 4135, 4134, 4112, 4110, 5418, 5597, 5600, 4109, 4099, 4097, 4091, 4088, 1086, 1226, 3888, 3989, 0, 0, 5669, 4086, 4429, 4912, 1950, 4718, 4184, 5731, 4557, 4105, 5782, 5852, 0, 0, 4890, 5459, 2385, 4272, 5905, 4083, 2638, 2717, 4098, 4086, 4081, 4069, 4068, 4063, 4064, 4062, 4048, 2933, 4056, 4039, 4031, 3988, 4001, 3985, 3990, 3966, 3967, 3955, 3949, 3947, 3082, 3919, 3328,14165, 3400,14165, 4571, 4122, 4008, 4262, 5957, 4544, 6033, 5624, 4727, 3424,14165, 4786, 4762, 4600, 6109, 5088,14165, 5010, 6139, 5126, 3879, 3878, 3871, 5628, 5383, 6204,14165, 5293, 0, 5414, 3856, 3853, 3852, 5426, 6280, 3466,14165, 5580, 5690, 5492, 4585, 5698, 5707, 3995, 5030, 4386, 6349, 5716, 6418, 5794, 5802, 5815, 3846, 3845, 3820, 3817, 3810, 3808, 3798, 3796, 3779, 4024, 3770, 3768, 3761, 3740, 3739, 3733, 3727, 3699, 3693, 3692, 3687, 4100, 3686, 3671, 3668, 3667, 3660, 4180, 3656, 3655, 3650, 6487, 5865, 4190, 3649, 3647, 3641, 3630, 3618, 3616, 3609, 5593, 5724, 3603, 3602, 3593, 3591, 3582, 5880, 3581, 0, 5990, 4659, 5997, 5896, 5875, 6073, 6148, 6244, 3579, 3576, 3575, 6288, 6064, 6313, 6320, 6556, 6374, 3563, 3561, 3556, 6382, 6437, 6451, 3541, 3530, 3529, 5732, 3576, 4346, 3526, 3522, 3501, 3498, 3487, 3475, 3458, 3453, 3450, 3445, 3443, 3433, 6625, 5956, 6694, 6506, 6513, 6520, 3432, 3426, 3418, 3416, 3407, 3404, 3402, 3398, 3384, 4352, 3381, 3363, 3349, 3347, 3345, 3335, 3332, 3306, 3305, 3303, 3302, 4379, 3300, 3298, 3288, 3286, 3278, 4394, 3264, 3263, 3252, 6763, 6395, 4523, 3248, 3247, 3245, 3244, 3237, 3231, 3230, 5921, 6495, 3221, 3219, 3217, 3202, 3198, 6048, 3196, 0, 6533, 4894, 6594, 6215, 6575, 6611, 6644, 6667, 3194, 3183, 3181, 6680, 6409, 6729, 6736, 6832, 6771, 3179, 3178, 3175, 6790, 6798, 6840, 3162, 3158, 3156, 6617, 3200, 4621, 3139, 3138, 3123, 3121, 3114, 3112, 3109, 3108, 3096, 3094, 3086, 3085, 6915,14165,14165, 0, 0, 6243, 6147, 3093, 3084, 3090, 3076, 3078, 3058, 0, 3538, 3047, 3055, 3031, 3041, 0, 3035, 3027, 3546, 2995, 0, 3007, 2966, 0, 2964, 6986, 7062, 7138, 3885,14165, 3881, 7168, 4046, 2941, 2940, 2935, 4139,14165, 4268, 0, 2934, 2925, 2910, 4701,14165, 4749, 5051, 4890, 5055,14165, 5027, 0, 2890, 2881, 2880, 5136, 5202, 5210,14165, 5255,14165, 5228, 0, 2876, 1, 254, 5306, 5321,14165, 5332, 0, 266, 284, 291, 7233, 5423, 5663, 5751, 7302, 6808, 319, 337, 362, 368, 379, 470, 475, 479, 497, 519, 528, 558, 572, 579, 7371, 6872, 6658, 6881, 583, 616, 636, 647, 672, 677, 686, 6930, 6922, 6948, 7025, 7099, 7102, 743, 770, 778, 783, 818, 7177, 7266, 7321, 892, 912, 923, 7017, 7335, 7390, 7397, 933, 956, 972, 982, 990, 7404, 7411, 7446, 994, 1002, 1004, 1006, 1008, 6686, 6836, 4669, 1019, 1041, 1043, 4736, 1049, 1070, 1074, 1088, 1090, 1130, 1132, 1137, 7515, 7439, 1142, 1161, 1166, 1192, 1225, 1226, 1237, 1242, 1243, 1247, 1268, 1272, 1278, 1285, 7584, 7474, 7293, 7003, 1298, 1306, 1312, 1343, 1349, 1364, 1369, 7362, 7137, 7244, 7481, 7550, 7557, 1374, 1375, 1466, 1468, 1472, 7592, 7600, 7619, 1483, 1492, 1504, 7629, 7654, 7661, 7664, 1509, 1510, 1518, 1525, 1533, 7699, 7703, 7724, 1547, 1548, 1555, 1578, 1594, 7407, 7425, 4765, 1603, 1624, 1631, 4780, 1650, 1652, 1657, 1659, 1660, 1665, 1668, 1672,14165,14165, 1705, 0, 5470, 0, 1704, 1716, 1726, 5493, 1726, 5619, 1723, 5641, 1728, 1735, 1746, 1763, 0,14165, 5583, 7754, 1747, 1749, 1768, 5658,14165,14165, 5683, 0, 1770, 1796, 1858, 7819, 5797, 7895, 5816,14165, 5915, 5829,14165, 7971, 5844,14165, 6070, 8047, 8123, 6969,14165, 5947, 0, 1864, 1866, 1873, 5887, 1882, 1910, 1921, 1927, 8192, 1931, 1935, 8261, 7763, 7859, 7935, 1944, 1950, 1967, 1969, 1975, 1988, 8011, 8087, 8131, 1989, 2080, 2086, 2095, 2098, 8149, 8156, 8211, 2114, 2117, 2119, 2122, 2127, 2128, 2132, 2134, 2135, 4864, 2140, 2141, 2144, 2152, 2153, 2161, 2165, 2180, 2182, 2187, 2205, 2207, 8330, 2209, 2221, 8399, 8218, 8225, 8280, 2222, 2224, 2225, 2234, 2235, 2237, 8287, 8294, 8349, 2240, 2246, 2249, 2251, 2253, 8356, 8363, 8418, 2260, 2287, 2304, 2313, 2316, 2324, 2353, 2415, 2416, 4948, 2418, 2427, 2442, 2448, 2449, 2455, 2461, 2464, 2475, 0, 2477, 0, 2482, 0, 2500, 0, 0, 5982,14165, 5977, 0, 2498, 2499, 2508, 8494,14165, 6053, 0, 2509, 2516, 2520, 7839,14165, 6099, 0, 2522, 2523, 2527, 8570,14165, 6194, 0, 2532, 2534, 2535,14165, 6270, 0, 2540, 2544, 2546, 6037,14165, 2547, 2557, 2586, 2587, 2589, 2592, 2600, 2605, 2610, 2611, 2616, 2624, 2626, 2632, 2638, 2640, 2642, 2648, 2658, 2667, 2668, 2673, 2677, 2678, 2701, 2705, 2714, 2721, 2782, 0, 6086, 0,14165, 6300, 0, 2725, 2735, 2743, 6092,14165,14165, 6304, 0, 2756, 2757, 2759, 2763, 2785, 2850, 2851, 2853, 2854, 2868, 2874, 6698, 0, 0,14165,14165, 8646, 8673, 8700, 8727, 8754, 8781, 8808, 8824, 8849, 8876, 8898, 8920, 8942, 8964, 8986, 9008, 9035, 9048, 9066, 9092, 9119, 9146, 9173, 9200, 3843, 9222, 9238, 9263, 3202, 9285, 9307, 9329, 9351, 9373, 9395, 9417, 9439, 9461, 9483, 9505, 9527, 9549, 9571, 9593, 9615, 9637, 9659, 9681, 9703, 3941, 4325, 9716, 9727, 9741, 6218, 9765, 9781, 9806, 9833, 4358, 9860, 9887, 9914, 9927, 9941, 5011, 9961, 9976, 5312, 9996,10018,10040,10062,10084, 10106,10128,10150,10172,10194,10216,10238,10260,10282,10304, 10326,10348,10370,10392,10414,10436,10458,10480,10502,10524, 10546,10568,10590,10612,10634,10656,10678,10700,10722,10744, 10766,10788,10810, 6327, 5405, 5624,10833,10846, 5244,10871, 10898, 5789, 5820,10914, 6286,10939,10965,10980,11000,11022, 11044,11066,11088,11110,11132,11154,11176,11198,11220,11242, 11264,11286,11308,11330,11352,11374,11396,11418,11440,11462, 11484,11506,11528,11550,11572,11594,11616,11638,11660,11682, 11704,11726,11748,11770,11792,11814,11836,11858,11880,11902, 11924,11946, 5890,11969,11985,11999,12024, 6383, 6427,12037, 12062,12089,12111,12133,12155,12177,12199,12221,12243,12265, 12287,12309,12331,12353,12375,12397,12419,12441,12463,12485, 12507,12529,12551,12573,12595,12617,12639,12661,12683,12705, 12727,12749,12771,12793,12815,12837,12859,12881,12903,12930, 6452, 6466,12946,12971,12998,13025,13052,13079,13106,13128, 13150,13172,13194,13216,13238,13260,13282,13304,13326,13348, 13370,13392,13414,13436,13458,13480,13502,13524,13546,13568, 13590,13612,13634,13661,13688,13715,13737,13752,13772,13794, 13816,13838,13860,13882,13904,13926,13948,13975,14002,14029, 14056,14083,14110,14137, 6603, 6639 } ; static const flex_int16_t yy_def[2047] = { 0, 1777, 1777, 1776, 3, 1776, 5, 1776, 7, 1778, 1778, 10, 10, 1779, 1779, 1776, 15, 1779, 1779, 3, 19, 1779, 1779, 1779, 1779, 1780, 1780, 1781, 1781, 1779, 1779, 1782, 1782, 1776, 1783, 1776, 1776, 1776, 1776, 1783, 1783, 1783, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1784, 1785, 1776, 1784, 1776, 1786, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1787, 1776, 1776, 1787, 1776, 1776, 71, 1788, 1789, 71, 1776, 1776, 1776, 1776, 1776, 1790, 69, 1790, 1776, 85, 1791, 1792, 85, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1793, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1794, 1794, 1794, 1776, 1776, 1776, 1776, 1776, 1776, 1795, 1793, 1776, 1776, 1776, 1776, 1776, 1784, 1776, 1776, 1776, 1776, 1776, 130, 130, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1796, 1776, 1776, 1776, 1776, 1796, 1776, 1776, 1796, 1796, 1796, 1797, 1796, 1796, 1796, 1776, 1776, 1776, 1776, 1798, 1776, 1776, 1783, 1783, 1783, 1783, 1776, 1776, 1776, 1799, 1776, 1783, 1783, 1783, 1776, 1800, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1801, 49, 1802, 1776, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1803, 1776, 1776, 1776, 1784, 1784, 1784, 1804, 1776, 1776, 1776, 1776, 1776, 1776, 1805, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1806, 1807, 1776, 1808, 1809, 1807, 1776, 1776, 1776, 1776, 1810, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1806, 1776, 1811, 1776, 1776, 269, 269, 1812, 1813, 1814, 1813, 1776, 1776, 1776, 1815, 1776, 1815, 285, 1776, 1776, 1776, 1776, 1807, 1776, 1776, 1776, 1776, 1776, 1776, 1816, 1817, 1776, 1818, 1819, 1817, 1776, 1776, 1776, 1820, 1776, 1816, 1776, 1821, 1776, 1776, 309, 309, 1822, 1823, 1824, 1823, 1776, 1776, 1776, 1825, 1776, 1825, 325, 1776, 1776, 1776, 1817, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1826, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1827, 1776, 1776, 1776, 1776, 1828, 1828, 1828, 1776, 1776, 1776, 1776, 1829, 1829, 1830, 1776, 1776, 1776, 1776, 1831, 1776, 1776, 1832, 1833, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1834, 1776, 1776, 1834, 1834, 1834, 1834, 1834, 1834, 1835, 1834, 1834, 1834, 1776, 1776, 1776, 1776, 1836, 1837, 1838, 1839, 1776, 1839, 1776, 1776, 1776, 1840, 1776, 1776, 1776, 1776, 1776, 1776, 1841, 1776, 1841, 1842, 1841, 1843, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1776, 1776, 1776, 1776, 1776, 1776, 1840, 1840, 1840, 1840, 1776, 1776, 1776, 1840, 1840, 1840, 1776, 1844, 1776, 1776, 1776, 1776, 1845, 1776, 1776, 1776, 1846, 1776, 1776, 1847, 1847, 1848, 1847, 1776, 1776, 1776, 1776, 1849, 1850, 1850, 1776, 1776, 1776, 1851, 1776, 1852, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1853, 1854, 1854, 1776, 1776, 1776, 1846, 1847, 532, 1855, 1776, 1776, 1846, 1856, 1857, 1858, 1855, 1776, 1776, 1776, 1776, 1855, 1776, 1856, 1857, 1858, 1855, 1776, 1776, 1776, 532, 1859, 1860, 1860, 1861, 1860, 1776, 1776, 1776, 1862, 1776, 1776, 1776, 1776, 1776, 1863, 1864, 1864, 1776, 1776, 1776, 1863, 1776, 1776, 1776, 1776, 1776, 1865, 1776, 1776, 1866, 1866, 1867, 1866, 1776, 1776, 1776, 1776, 1868, 1869, 1869, 1776, 1776, 1776, 1870, 1776, 1871, 1776, 1776, 1776, 1776, 1776, 1872, 1873, 1873, 1776, 1776, 1776, 1865, 1866, 614, 1874, 1776, 1776, 1865, 1875, 1876, 1877, 1874, 1776, 1776, 1776, 1776, 1874, 1776, 1875, 1876, 1877, 1874, 1776, 1776, 1776, 614, 1878, 1879, 1879, 1880, 1879, 1776, 1776, 1776, 1881, 1776, 1776, 1776, 1776, 1776, 1882, 1883, 1883, 1776, 1776, 1776, 1776, 1776, 1884, 1882, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1885, 1776, 1776, 1776, 1776, 1776, 1886, 1776, 1776, 1887, 1887, 679, 1776, 1776, 1888, 1889, 1888, 1890, 1776, 1776, 1776, 1776, 1776, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1892, 1893, 1776, 1776, 1894, 1894, 1894, 1776, 1888, 1888, 1776, 1888, 1895, 685, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1896, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1776, 1897, 1776, 1776, 1776, 1776, 1897, 1897, 1897, 1897, 1776, 1776, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1776, 1894, 1894, 1776, 1894, 1776, 1776, 1776, 1894, 1894, 1894, 1898, 1898, 1776, 1899, 1900, 1776, 1901, 1902, 1903, 1903, 1776, 1776, 1776, 1776, 1776, 1904, 1904, 1904, 1776, 1776, 1776, 1776, 1776, 1905, 1905, 1906, 1776, 1776, 1776, 1907, 1776, 1776, 1776, 1776, 1776, 1776, 1908, 1908, 1908, 1776, 1776, 1776, 1776, 1776, 1899, 1900, 1909, 1776, 1776, 1776, 1910, 1901, 1900, 1900, 830, 1911, 1900, 1776, 1776, 1776, 1912, 1776, 1776, 1776, 1913, 1776, 1776, 1776, 1900, 830, 1776, 1776, 1776, 1776, 1776, 830, 1900, 830, 1914, 1915, 837, 1916, 1917, 1918, 1776, 1776, 1776, 1919, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1920, 1920, 1920, 1776, 1776, 1776, 1776, 1776, 1920, 1776, 1776, 1921, 1922, 1776, 1923, 1924, 1925, 1925, 1776, 1776, 1776, 1776, 1776, 1926, 1926, 1926, 1776, 1776, 1776, 1776, 1776, 1927, 1927, 1928, 1776, 1776, 1776, 1929, 1776, 1776, 1776, 1776, 1776, 1776, 1930, 1930, 1930, 1776, 1776, 1776, 1776, 1776, 1921, 1922, 1931, 1776, 1776, 1776, 1932, 1923, 1922, 1922, 934, 1933, 1922, 1776, 1776, 1776, 1934, 1776, 1776, 1776, 1935, 1776, 1776, 1776, 1922, 934, 1776, 1776, 1776, 1776, 1776, 934, 1922, 934, 1936, 1937, 941, 1938, 1939, 1940, 1776, 1776, 1776, 1941, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1942, 1942, 1942, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1943, 1943, 1942, 1776, 1944, 1944, 1003, 1945, 1946, 1946, 1776, 1947, 1947, 1947, 1948, 1949, 1950, 1776, 1946, 1946, 1007, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1951, 1776, 1776, 1776, 1952, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1776, 1776, 1953, 1953, 1953, 1953, 1953, 1776, 1953, 1776, 1953, 1776, 1776, 1776, 1953, 1953, 1953, 1776, 1953, 1068, 1953, 1776, 1776, 1776, 1953, 1953, 1776, 1776, 1953, 1950, 1950, 1950, 1950, 1950, 1776, 1950, 1950, 1954, 1776, 1955, 1956, 1956, 1956, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1957, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1958, 1776, 1776, 1776, 1776, 1776, 1959, 1776, 1776, 1776, 1955, 1960, 1961, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1962, 1962, 1776, 1776, 1776, 1776, 1776, 1133, 1776, 1133, 1960, 1776, 1954, 1133, 1963, 1963, 1964, 1963, 1776, 1776, 1776, 1965, 1960, 1963, 1963, 1966, 1967, 1776, 1776, 1776, 1968, 1969, 1969, 1776, 1776, 1776, 1970, 1776, 1971, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1972, 1776, 1973, 1974, 1974, 1974, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1975, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1976, 1776, 1776, 1776, 1776, 1776, 1977, 1776, 1776, 1776, 1973, 1978, 1979, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1980, 1980, 1776, 1776, 1776, 1776, 1776, 1231, 1776, 1231, 1978, 1776, 1972, 1231, 1981, 1981, 1982, 1981, 1776, 1776, 1776, 1983, 1978, 1981, 1981, 1984, 1985, 1776, 1776, 1776, 1986, 1987, 1987, 1776, 1776, 1776, 1988, 1776, 1989, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1990, 1776, 1776, 1991, 1992, 1993, 1993, 1776, 1776, 1776, 1776, 1994, 1776, 1995, 1776, 1776, 1776, 1776, 1776, 1996, 1776, 1776, 1776, 1776, 1997, 1776, 1776, 1998, 1776, 1999, 1999, 1999, 1322, 1776, 1322, 1776, 1322, 1776, 1776, 1776, 1322, 1776, 1322, 1327, 1776, 1776, 1776, 1776, 1776, 1322, 1322, 1322, 1322, 1776, 1322, 1327, 1776, 1776, 1776, 1322, 1322, 1776, 1776, 1322, 1776, 1322, 1327, 1776, 1776, 1776, 1322, 1322, 1776, 1322, 1327, 1776, 1776, 1776, 1322, 1776, 1993, 1993, 2000, 2001, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2000, 2001, 2001, 1390, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2001, 1390, 1390, 2002, 2003, 2003, 1776, 1776, 1776, 1776, 1776, 2004, 2005, 2005, 1776, 1776, 1776, 2001, 2006, 2007, 2007, 1776, 1776, 1776, 1776, 1776, 2008, 2008, 2008, 1776, 1776, 1776, 1776, 1776, 2009, 2009, 2010, 1776, 1776, 1776, 2011, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2012, 2013, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2012, 2013, 2013, 1466, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2013, 1466, 1466, 2014, 2015, 2015, 1776, 1776, 1776, 1776, 1776, 2016, 2017, 2017, 1776, 1776, 1776, 2013, 2018, 2019, 2019, 1776, 1776, 1776, 1776, 1776, 2020, 2020, 2020, 1776, 1776, 1776, 1776, 1776, 2021, 2021, 2022, 1776, 1776, 1776, 2023, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2024, 1776, 2025, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2026, 1776, 2027, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2027, 1547, 1776, 1776, 1776, 2027, 2027, 2027, 1776, 1776, 2027, 1776, 1776, 2027, 1776, 1776, 2027, 2027, 2027, 2027, 1776, 2027, 1547, 1776, 1776, 1776, 2028, 1776, 1776, 1776, 1776, 2029, 1776, 1776, 2029, 2030, 2030, 2030, 1776, 1776, 1776, 1776, 1776, 1776, 2031, 2031, 2031, 1776, 1776, 1776, 1776, 1776, 2032, 2032, 2032, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2033, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2034, 1776, 1776, 2034, 2035, 2035, 2035, 1776, 1776, 1776, 1776, 1776, 1776, 2036, 2036, 2036, 1776, 1776, 1776, 1776, 1776, 2037, 2037, 2037, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2022, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2038, 1776, 2039, 1776, 2040, 1776, 2041, 2042, 1776, 1776, 2027, 1547, 1776, 1776, 1776, 2027, 1776, 2027, 1547, 1776, 1776, 1776, 2027, 1776, 2027, 1547, 1776, 1776, 1776, 2027, 1776, 2027, 1547, 1776, 1776, 1776, 1776, 2027, 1547, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2043, 1776, 2044, 1776, 2027, 1547, 1776, 1776, 1776, 1776, 1776, 1776, 2027, 1547, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 2045, 2046, 1776, 0, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776 } ; static const flex_int16_t yy_nxt[14242] = { 0, 1776, 1776, 35, 36, 37, 35, 36, 37, 105, 106, 105, 106, 180, 186, 386, 180, 186, 386, 181, 187, 1776, 1776, 236, 182, 182, 188, 333, 38, 188, 333, 42, 362, 362, 362, 181, 187, 1776, 189, 227, 189, 190, 227, 191, 191, 191, 191, 225, 1776, 226, 226, 226, 226, 238, 290, 1776, 228, 228, 228, 228, 271, 271, 271, 271, 229, 238, 290, 252, 334, 250, 250, 250, 250, 714, 39, 40, 41, 39, 40, 41, 43, 44, 45, 46, 44, 43, 47, 48, 43, 43, 49, 50, 43, 51, 43, 51, 52, 53, 54, 54, 54, 54, 43, 55, 43, 43, 43, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 59, 50, 43, 60, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 62, 43, 63, 63, 64, 65, 66, 43, 67, 45, 46, 67, 68, 47, 69, 68, 70, 58, 43, 68, 71, 72, 71, 73, 53, 74, 74, 74, 74, 75, 55, 68, 68, 68, 76, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 58, 77, 43, 70, 60, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 43, 78, 68, 63, 63, 79, 80, 81, 43, 82, 45, 46, 82, 83, 47, 84, 83, 70, 58, 50, 83, 85, 72, 85, 86, 83, 87, 87, 87, 87, 88, 55, 83, 83, 83, 89, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 58, 90, 50, 70, 60, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 43, 62, 83, 63, 63, 91, 92, 93, 95, 96, 97, 95, 175, 176, 177, 98, 737, 98, 98, 98, 98, 738, 98, 98, 99, 183, 715, 175, 176, 177, 384, 385, 184, 98, 175, 176, 177, 185, 426, 175, 176, 177, 372, 389, 227, 372, 389, 227, 98, 100, 98, 376, 376, 376, 376, 348, 714, 373, 348, 108, 109, 110, 108, 715, 111, 108, 109, 110, 108, 229, 111, 139, 140, 141, 139, 417, 111, 98, 101, 101, 102, 103, 104, 95, 96, 97, 95, 175, 176, 177, 98, 1099, 98, 98, 98, 98, 349, 98, 98, 99, 112, 384, 385, 175, 176, 177, 112, 381, 98, 1581, 381, 230, 142, 231, 418, 232, 232, 232, 232, 391, 391, 391, 391, 98, 100, 98, 351, 701, 234, 113, 113, 114, 115, 116, 793, 113, 113, 114, 115, 116, 801, 113, 113, 114, 115, 116, 701, 234, 382, 409, 410, 1111, 98, 101, 101, 102, 103, 104, 117, 107, 118, 119, 107, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 120, 120, 120, 120, 117, 117, 117, 117, 117, 117, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 117, 117, 117, 117, 117, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 120, 120, 120, 120, 120, 120, 122, 120, 117, 117, 117, 123, 123, 124, 125, 126, 108, 127, 128, 108, 392, 393, 393, 393, 1582, 139, 140, 141, 139, 809, 111, 168, 169, 815, 394, 170, 168, 169, 170, 424, 170, 424, 129, 170, 246, 337, 665, 246, 272, 395, 273, 822, 274, 274, 274, 274, 247, 130, 247, 248, 131, 249, 249, 249, 249, 275, 142, 227, 395, 482, 227, 171, 482, 1123, 193, 183, 171, 175, 176, 177, 194, 1776, 1583, 236, 275, 195, 113, 113, 114, 115, 116, 108, 127, 128, 108, 113, 113, 114, 115, 116, 113, 113, 114, 115, 116, 113, 113, 114, 115, 116, 196, 491, 831, 197, 491, 198, 666, 129, 377, 666, 378, 251, 379, 379, 379, 379, 1129, 199, 352, 671, 252, 277, 130, 1584, 200, 131, 253, 1135, 238, 290, 252, 254, 565, 566, 567, 184, 278, 175, 176, 177, 672, 254, 300, 672, 298, 298, 298, 298, 255, 384, 690, 113, 113, 114, 115, 116, 132, 419, 279, 132, 1586, 420, 133, 420, 70, 58, 421, 421, 134, 72, 134, 135, 43, 136, 136, 136, 136, 256, 257, 258, 838, 394, 137, 396, 396, 396, 396, 280, 281, 282, 185, 846, 175, 176, 177, 658, 395, 138, 284, 70, 139, 140, 141, 139, 285, 294, 285, 659, 294, 286, 286, 286, 286, 260, 660, 395, 1143, 295, 299, 295, 296, 1587, 297, 297, 297, 297, 129, 300, 227, 180, 850, 227, 180, 301, 394, 181, 491, 238, 302, 491, 182, 143, 1028, 310, 131, 311, 311, 311, 311, 395, 1029, 181, 312, 229, 313, 303, 314, 314, 314, 314, 474, 474, 474, 474, 287, 288, 289, 730, 395, 315, 113, 113, 114, 115, 116, 139, 140, 141, 139, 183, 731, 175, 176, 177, 304, 305, 306, 1404, 315, 317, 407, 203, 175, 176, 177, 684, 186, 684, 300, 186, 372, 129, 187, 372, 318, 409, 410, 182, 225, 302, 191, 191, 191, 191, 1595, 373, 143, 324, 187, 131, 203, 188, 1596, 325, 188, 325, 319, 1157, 326, 326, 326, 326, 307, 189, 691, 189, 190, 691, 191, 191, 191, 191, 427, 428, 429, 113, 113, 114, 115, 116, 145, 146, 147, 145, 449, 320, 321, 322, 148, 422, 386, 422, 1597, 386, 423, 423, 423, 149, 149, 149, 149, 427, 428, 429, 647, 648, 649, 150, 150, 150, 150, 702, 410, 327, 328, 329, 203, 716, 411, 717, 203, 411, 362, 362, 362, 151, 151, 151, 151, 151, 151, 145, 146, 147, 145, 228, 228, 228, 228, 148, 492, 492, 492, 412, 453, 493, 421, 421, 149, 149, 149, 149, 457, 404, 491, 238, 404, 491, 150, 150, 150, 150, 666, 337, 404, 666, 1412, 427, 428, 429, 707, 427, 428, 429, 708, 708, 151, 151, 151, 151, 151, 151, 153, 154, 155, 153, 1604, 156, 157, 404, 158, 159, 159, 159, 404, 159, 160, 1605, 404, 161, 162, 162, 162, 159, 163, 404, 333, 1419, 404, 333, 404, 405, 413, 998, 414, 998, 415, 415, 415, 415, 672, 352, 159, 672, 159, 159, 667, 667, 667, 416, 1612, 668, 164, 203, 228, 228, 228, 228, 203, 165, 490, 490, 490, 490, 166, 203, 1613, 334, 416, 159, 159, 167, 153, 154, 155, 153, 1166, 156, 157, 203, 158, 159, 159, 159, 1614, 159, 160, 459, 1427, 161, 162, 162, 162, 159, 163, 466, 1615, 193, 1616, 447, 1173, 448, 1617, 194, 427, 428, 429, 467, 195, 427, 428, 429, 159, 1435, 159, 159, 427, 428, 429, 230, 1023, 1024, 164, 483, 483, 483, 483, 995, 995, 165, 427, 428, 429, 196, 166, 1622, 197, 1623, 198, 159, 159, 167, 201, 1441, 348, 201, 202, 348, 389, 202, 374, 389, 411, 202, 202, 411, 202, 375, 202, 202, 202, 202, 202, 203, 1624, 202, 202, 202, 1625, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 1179, 202, 1626, 349, 203, 204, 205, 206, 207, 208, 209, 210, 202, 211, 202, 212, 213, 214, 215, 216, 217, 218, 219, 220, 202, 202, 202, 733, 381, 202, 734, 381, 221, 222, 223, 238, 239, 240, 454, 455, 456, 230, 864, 475, 873, 476, 476, 476, 476, 882, 203, 241, 241, 241, 1197, 427, 428, 429, 416, 488, 1776, 488, 236, 719, 489, 489, 489, 489, 203, 382, 720, 203, 411, 1627, 450, 411, 721, 416, 897, 240, 240, 451, 203, 240, 240, 995, 995, 452, 673, 673, 673, 240, 458, 674, 240, 460, 240, 412, 240, 242, 193, 427, 428, 429, 905, 203, 194, 508, 508, 508, 508, 195, 259, 259, 259, 259, 260, 261, 471, 427, 428, 429, 427, 428, 429, 516, 203, 262, 263, 264, 265, 266, 267, 427, 428, 429, 196, 1209, 1628, 197, 517, 198, 463, 203, 271, 271, 271, 271, 203, 913, 461, 203, 412, 199, 919, 926, 427, 428, 429, 1221, 200, 251, 496, 462, 249, 249, 249, 249, 691, 384, 268, 691, 269, 269, 269, 269, 253, 427, 428, 429, 1629, 254, 464, 468, 935, 465, 482, 470, 469, 482, 1227, 518, 519, 520, 427, 428, 429, 1630, 255, 427, 428, 429, 427, 428, 429, 531, 531, 531, 531, 580, 1233, 297, 297, 297, 297, 477, 502, 478, 1632, 479, 479, 479, 479, 491, 942, 252, 491, 256, 257, 258, 299, 503, 481, 423, 423, 423, 254, 666, 337, 308, 666, 309, 309, 309, 309, 301, 592, 592, 592, 592, 302, 481, 230, 504, 231, 950, 232, 232, 232, 232, 246, 1241, 183, 246, 175, 176, 177, 303, 666, 234, 672, 666, 247, 672, 247, 248, 1633, 249, 249, 249, 249, 954, 505, 506, 507, 272, 1480, 1641, 234, 545, 545, 545, 545, 723, 724, 725, 304, 305, 306, 336, 336, 337, 338, 339, 336, 336, 336, 340, 336, 340, 340, 340, 340, 336, 340, 340, 340, 341, 341, 341, 336, 336, 336, 336, 336, 340, 336, 336, 336, 342, 336, 336, 336, 336, 336, 336, 342, 336, 342, 336, 340, 339, 340, 336, 336, 339, 339, 336, 342, 339, 339, 336, 336, 336, 336, 336, 336, 339, 336, 336, 339, 342, 339, 336, 339, 343, 336, 336, 336, 340, 336, 336, 336, 336, 336, 352, 353, 354, 1642, 354, 1255, 497, 354, 498, 1643, 499, 499, 499, 499, 523, 251, 355, 355, 355, 294, 1488, 203, 294, 500, 252, 259, 259, 259, 259, 1650, 253, 295, 524, 295, 296, 254, 297, 297, 297, 297, 354, 1651, 500, 354, 354, 354, 1495, 1658, 354, 354, 672, 352, 255, 672, 600, 1659, 354, 691, 384, 354, 691, 354, 1264, 354, 356, 363, 363, 363, 363, 601, 1660, 510, 427, 428, 429, 363, 363, 363, 363, 307, 252, 256, 257, 258, 1503, 1661, 278, 613, 613, 613, 613, 254, 1662, 363, 363, 363, 363, 363, 363, 365, 691, 366, 366, 691, 658, 367, 366, 367, 511, 251, 368, 368, 368, 368, 1032, 1271, 659, 1033, 252, 366, 602, 603, 604, 660, 253, 677, 677, 677, 677, 254, 707, 1663, 526, 366, 1016, 1016, 366, 512, 513, 514, 1511, 252, 368, 368, 368, 368, 255, 278, 555, 1776, 555, 252, 254, 556, 556, 556, 556, 816, 817, 818, 366, 1668, 370, 352, 353, 354, 501, 354, 1669, 527, 354, 689, 689, 689, 689, 256, 257, 258, 710, 355, 355, 355, 711, 711, 711, 501, 312, 1517, 371, 1670, 627, 627, 627, 627, 1671, 558, 1277, 1672, 528, 529, 530, 203, 968, 354, 252, 977, 354, 354, 354, 986, 559, 354, 354, 1673, 277, 254, 492, 492, 492, 354, 1674, 493, 354, 252, 354, 203, 354, 356, 235, 278, 1675, 235, 560, 235, 254, 741, 235, 235, 235, 235, 411, 235, 1676, 411, 694, 694, 694, 694, 1677, 235, 1678, 279, 427, 428, 429, 310, 1679, 311, 311, 311, 311, 561, 562, 563, 1680, 412, 755, 682, 235, 682, 235, 235, 683, 683, 683, 1681, 427, 428, 429, 1682, 280, 281, 282, 377, 426, 686, 714, 687, 687, 687, 687, 474, 474, 474, 474, 235, 235, 235, 430, 431, 432, 433, 434, 435, 436, 715, 437, 426, 438, 439, 440, 441, 442, 443, 444, 445, 446, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 714, 484, 485, 485, 485, 485, 484, 484, 484, 484, 484, 484, 486, 486, 486, 487, 486, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 486, 486, 486, 486, 487, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 484, 502, 394, 715, 396, 396, 396, 396, 272, 426, 273, 714, 532, 532, 532, 532, 503, 395, 715, 707, 277, 254, 203, 708, 708, 533, 377, 1099, 1776, 252, 688, 688, 688, 688, 571, 278, 395, 1776, 504, 1776, 254, 251, 1004, 252, 533, 706, 706, 706, 706, 253, 252, 847, 848, 849, 254, 1111, 253, 279, 377, 743, 378, 254, 379, 379, 379, 379, 1123, 505, 506, 507, 535, 572, 1129, 427, 428, 429, 1135, 536, 255, 537, 1143, 538, 538, 538, 538, 539, 280, 281, 282, 1589, 540, 695, 692, 695, 541, 1718, 696, 696, 696, 696, 573, 574, 575, 391, 391, 391, 391, 256, 257, 258, 693, 413, 1719, 541, 1404, 703, 703, 703, 703, 785, 1720, 786, 786, 786, 786, 678, 847, 848, 849, 679, 679, 679, 679, 1157, 1598, 680, 542, 543, 544, 484, 484, 484, 484, 484, 546, 484, 547, 546, 484, 484, 484, 546, 546, 484, 546, 680, 484, 548, 548, 548, 548, 549, 484, 546, 546, 546, 550, 546, 546, 546, 551, 546, 546, 546, 546, 546, 546, 546, 546, 546, 484, 546, 484, 484, 484, 546, 546, 546, 546, 551, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 484, 484, 546, 484, 484, 552, 553, 554, 571, 477, 874, 875, 876, 777, 777, 777, 777, 252, 1721, 576, 576, 576, 576, 253, 1722, 581, 586, 582, 254, 583, 583, 583, 583, 1412, 299, 300, 1723, 704, 704, 704, 704, 587, 584, 300, 594, 572, 302, 299, 766, 301, 705, 766, 1606, 300, 302, 1724, 300, 1725, 767, 318, 1419, 584, 301, 588, 302, 1726, 1166, 302, 608, 705, 1427, 303, 1727, 1173, 573, 574, 575, 300, 1618, 1728, 203, 595, 1729, 318, 303, 565, 566, 567, 302, 203, 1435, 1730, 589, 590, 591, 490, 490, 490, 490, 1441, 304, 305, 306, 1731, 394, 609, 396, 396, 396, 396, 596, 597, 598, 304, 305, 306, 742, 746, 1179, 395, 1197, 637, 1776, 637, 300, 1209, 638, 638, 638, 638, 203, 427, 428, 429, 610, 611, 612, 586, 395, 585, 427, 428, 429, 1221, 312, 1227, 313, 1233, 614, 614, 614, 614, 587, 920, 921, 922, 640, 302, 585, 1241, 1635, 615, 1732, 1733, 747, 300, 271, 271, 271, 271, 317, 641, 1480, 1734, 588, 1255, 302, 317, 1644, 300, 615, 427, 428, 429, 1735, 318, 300, 1736, 203, 1488, 302, 1737, 318, 642, 488, 203, 488, 302, 1652, 706, 706, 706, 706, 589, 590, 591, 617, 319, 203, 951, 952, 953, 203, 618, 319, 619, 203, 620, 620, 620, 620, 621, 643, 644, 645, 1738, 622, 749, 744, 745, 623, 508, 508, 508, 508, 750, 320, 321, 322, 427, 428, 429, 1739, 320, 321, 322, 427, 428, 429, 623, 751, 1495, 753, 763, 1740, 754, 951, 952, 953, 427, 428, 429, 1264, 427, 428, 429, 707, 427, 428, 429, 708, 708, 624, 625, 626, 484, 484, 484, 484, 484, 628, 484, 629, 628, 484, 484, 484, 628, 628, 484, 628, 1503, 628, 630, 630, 630, 630, 631, 484, 628, 628, 628, 632, 628, 628, 628, 633, 628, 628, 628, 628, 628, 628, 628, 628, 628, 484, 628, 484, 484, 484, 628, 628, 628, 628, 633, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 484, 484, 628, 484, 484, 634, 635, 636, 653, 203, 1741, 1271, 299, 1664, 994, 203, 994, 300, 203, 995, 995, 300, 1742, 301, 978, 979, 980, 301, 302, 413, 203, 414, 302, 415, 415, 415, 415, 1743, 748, 647, 648, 649, 752, 1511, 1744, 654, 416, 497, 203, 303, 1517, 788, 788, 788, 788, 203, 1745, 764, 762, 1277, 427, 428, 429, 1746, 1747, 416, 427, 428, 429, 427, 428, 429, 203, 1748, 655, 656, 657, 653, 304, 305, 306, 427, 428, 429, 765, 203, 300, 1749, 661, 661, 661, 661, 301, 426, 714, 766, 768, 302, 766, 427, 428, 429, 203, 715, 426, 767, 427, 428, 429, 203, 766, 714, 769, 766, 654, 715, 203, 426, 714, 203, 767, 771, 715, 427, 428, 429, 778, 426, 778, 714, 715, 779, 779, 779, 779, 426, 427, 428, 429, 714, 770, 715, 1589, 655, 656, 657, 363, 363, 363, 363, 774, 203, 1764, 427, 428, 429, 363, 363, 363, 363, 427, 428, 429, 1046, 773, 832, 1046, 427, 428, 429, 427, 428, 429, 1047, 363, 363, 363, 363, 363, 363, 235, 1404, 1598, 235, 1765, 235, 772, 1412, 235, 235, 235, 235, 230, 235, 475, 1606, 476, 476, 476, 476, 1766, 235, 427, 428, 429, 1419, 1427, 832, 477, 416, 478, 1618, 479, 479, 479, 479, 833, 834, 835, 1767, 235, 1435, 235, 235, 488, 481, 488, 1441, 416, 784, 784, 784, 784, 1635, 230, 1768, 780, 1480, 781, 781, 781, 781, 1048, 1644, 481, 1048, 535, 235, 235, 235, 712, 782, 1049, 1769, 713, 713, 713, 713, 833, 834, 835, 836, 1488, 1652, 713, 713, 713, 713, 1770, 791, 782, 791, 1495, 1503, 792, 792, 792, 792, 535, 683, 683, 683, 713, 713, 713, 713, 713, 713, 756, 756, 756, 756, 756, 836, 756, 757, 1664, 756, 756, 756, 1771, 477, 756, 478, 756, 783, 783, 783, 783, 1511, 758, 756, 851, 852, 853, 756, 1517, 497, 481, 498, 426, 499, 499, 499, 499, 311, 311, 311, 311, 756, 714, 756, 757, 756, 500, 536, 1772, 481, 715, 837, 837, 837, 837, 581, 851, 852, 853, 892, 892, 892, 892, 426, 714, 500, 715, 1772, 756, 756, 1589, 756, 756, 759, 760, 761, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 1598, 484, 776, 776, 776, 776, 484, 484, 484, 484, 484, 484, 486, 486, 486, 487, 486, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 486, 486, 486, 486, 487, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 484, 535, 592, 592, 592, 592, 1606, 1618, 502, 1635, 1644, 502, 789, 789, 789, 789, 539, 252, 794, 1059, 252, 540, 1059, 503, 1652, 790, 503, 252, 254, 1060, 1664, 254, 426, 278, 502, 618, 715, 714, 254, 941, 941, 941, 941, 252, 790, 504, 426, 710, 504, 503, 802, 1006, 1006, 1006, 254, 795, 895, 810, 895, 252, 936, 896, 896, 896, 896, 559, 715, 542, 543, 544, 254, 504, 811, 510, 505, 506, 507, 505, 506, 507, 617, 714, 252, 510, 796, 797, 798, 803, 278, 535, 426, 715, 252, 254, 810, 940, 714, 426, 278, 823, 505, 506, 507, 254, 539, 1544, 526, 1543, 252, 540, 511, 937, 938, 939, 559, 252, 804, 805, 806, 254, 511, 278, 526, 812, 813, 814, 254, 555, 1776, 555, 252, 252, 556, 556, 556, 556, 824, 278, 1542, 512, 513, 514, 254, 527, 1541, 501, 955, 956, 957, 512, 513, 514, 1012, 1012, 1012, 542, 543, 544, 1540, 527, 677, 677, 677, 677, 501, 825, 826, 827, 1085, 936, 1539, 1085, 528, 529, 530, 854, 1538, 854, 1086, 1537, 855, 855, 855, 855, 832, 1112, 1113, 1114, 528, 529, 530, 535, 667, 667, 667, 914, 1536, 668, 536, 1535, 537, 1534, 830, 830, 830, 830, 539, 816, 817, 818, 915, 540, 272, 1533, 858, 541, 859, 859, 859, 859, 937, 938, 939, 1532, 617, 673, 673, 673, 1531, 860, 674, 1530, 914, 1529, 541, 833, 834, 835, 862, 940, 862, 652, 1525, 863, 863, 863, 863, 832, 860, 1776, 986, 252, 646, 556, 556, 556, 556, 542, 543, 544, 502, 916, 917, 918, 639, 1524, 501, 272, 977, 273, 1523, 532, 532, 532, 532, 503, 996, 968, 996, 1522, 254, 997, 997, 997, 533, 501, 1124, 1125, 1126, 617, 955, 956, 957, 558, 1521, 1277, 558, 504, 833, 834, 835, 494, 252, 533, 621, 252, 494, 1279, 559, 622, 494, 559, 1510, 254, 1509, 581, 254, 582, 1271, 583, 583, 583, 583, 1130, 1131, 1132, 505, 506, 507, 839, 560, 1502, 584, 560, 1501, 1264, 536, 1487, 537, 1486, 840, 840, 840, 840, 841, 490, 490, 490, 490, 540, 1255, 584, 616, 842, 1476, 624, 625, 626, 954, 561, 562, 563, 561, 562, 563, 558, 831, 1002, 696, 696, 696, 696, 842, 1475, 252, 1474, 1002, 1241, 1002, 883, 559, 1003, 1004, 1004, 1004, 254, 1473, 950, 252, 696, 696, 696, 696, 1472, 503, 843, 844, 845, 839, 254, 942, 1471, 560, 1470, 1233, 536, 571, 537, 1465, 861, 861, 861, 861, 841, 1046, 252, 884, 1046, 540, 1464, 1227, 253, 842, 377, 1047, 686, 254, 687, 687, 687, 687, 561, 562, 563, 1463, 831, 1090, 1090, 1090, 1090, 571, 842, 935, 572, 1462, 885, 886, 887, 586, 252, 792, 792, 792, 792, 1461, 253, 1221, 300, 607, 1460, 254, 926, 599, 587, 843, 844, 845, 865, 302, 1136, 1137, 1138, 573, 574, 575, 586, 866, 572, 867, 867, 867, 867, 868, 1776, 300, 588, 1048, 869, 1459, 1048, 587, 919, 1776, 678, 1776, 302, 1049, 679, 679, 679, 679, 1458, 898, 913, 504, 1457, 573, 574, 575, 586, 1059, 300, 588, 1059, 589, 590, 591, 318, 300, 1456, 1060, 312, 302, 962, 587, 963, 963, 963, 963, 302, 847, 848, 849, 870, 871, 872, 883, 1209, 964, 899, 593, 589, 590, 591, 906, 252, 588, 890, 890, 890, 890, 503, 1085, 300, 1455, 1085, 254, 964, 905, 641, 585, 710, 1086, 1454, 302, 1017, 1017, 1017, 900, 901, 902, 594, 897, 884, 1453, 589, 590, 591, 594, 710, 300, 907, 1452, 711, 711, 711, 318, 300, 1197, 570, 1776, 302, 300, 318, 638, 638, 638, 638, 302, 1449, 832, 882, 885, 886, 887, 617, 564, 585, 595, 557, 908, 909, 910, 927, 1448, 595, 893, 893, 893, 893, 621, 608, 300, 832, 1339, 622, 585, 1339, 641, 894, 300, 873, 1353, 302, 1340, 1353, 318, 596, 597, 598, 608, 302, 1354, 1447, 596, 597, 598, 640, 894, 300, 928, 833, 834, 835, 864, 318, 300, 1446, 609, 377, 302, 686, 641, 1008, 1008, 1008, 1008, 302, 874, 875, 876, 624, 625, 626, 833, 834, 835, 609, 1445, 929, 930, 931, 1179, 1181, 642, 1434, 1433, 610, 611, 612, 1210, 1211, 1212, 637, 1776, 637, 300, 1173, 638, 638, 638, 638, 840, 840, 840, 840, 610, 611, 612, 617, 841, 585, 1426, 643, 644, 645, 618, 1425, 619, 1166, 934, 934, 934, 934, 621, 896, 896, 896, 896, 622, 585, 1411, 1410, 623, 958, 1157, 958, 534, 1400, 959, 959, 959, 959, 936, 920, 921, 922, 850, 966, 1399, 966, 640, 623, 967, 967, 967, 967, 936, 1398, 1143, 300, 833, 834, 835, 640, 1397, 641, 694, 694, 694, 694, 302, 846, 300, 1396, 624, 625, 626, 586, 641, 395, 1222, 1223, 1224, 302, 312, 838, 313, 642, 614, 614, 614, 614, 587, 937, 938, 939, 1395, 302, 395, 936, 642, 615, 1394, 1046, 1135, 1389, 1046, 937, 938, 939, 1388, 1129, 987, 1047, 588, 1387, 643, 644, 645, 653, 615, 300, 831, 1386, 203, 810, 1385, 587, 300, 643, 644, 645, 302, 785, 301, 786, 786, 786, 786, 302, 811, 1123, 525, 589, 590, 591, 943, 1384, 822, 988, 937, 938, 939, 618, 515, 619, 654, 944, 944, 944, 944, 945, 810, 1228, 1229, 1230, 622, 413, 936, 1014, 946, 1015, 1015, 1015, 1015, 427, 428, 429, 989, 990, 991, 653, 1383, 935, 782, 655, 656, 657, 815, 946, 300, 812, 813, 814, 1382, 809, 301, 1234, 1235, 1236, 477, 302, 478, 782, 479, 479, 479, 479, 944, 944, 944, 944, 947, 948, 949, 943, 1381, 481, 654, 937, 938, 939, 618, 1380, 619, 1111, 965, 965, 965, 965, 945, 951, 952, 953, 509, 622, 481, 425, 1776, 946, 478, 425, 784, 784, 784, 784, 425, 655, 656, 657, 425, 1379, 935, 801, 488, 1776, 488, 1776, 946, 784, 784, 784, 784, 501, 1048, 1378, 1776, 1048, 1776, 1776, 1776, 1776, 793, 1776, 1049, 1377, 1776, 945, 1776, 1180, 1776, 947, 948, 949, 969, 203, 978, 979, 980, 203, 997, 997, 997, 970, 1181, 971, 971, 971, 971, 972, 1376, 1099, 1776, 1278, 973, 1776, 1776, 715, 714, 1776, 1776, 426, 1776, 1776, 1776, 1050, 1776, 1776, 1279, 1559, 1776, 588, 1776, 203, 1776, 1776, 715, 203, 937, 938, 939, 203, 1776, 714, 426, 203, 427, 428, 429, 669, 427, 428, 429, 203, 669, 1182, 1183, 1184, 669, 1052, 974, 975, 976, 987, 1776, 1051, 478, 1320, 779, 779, 779, 779, 300, 1055, 1000, 1000, 1000, 1000, 587, 1280, 1281, 1282, 1053, 302, 427, 428, 429, 1054, 427, 428, 429, 1319, 427, 428, 429, 1318, 427, 428, 429, 1317, 988, 997, 997, 997, 427, 428, 429, 1094, 1094, 1094, 1094, 1093, 1776, 1093, 1316, 1776, 1094, 1094, 1094, 1094, 1315, 1776, 1776, 478, 203, 784, 784, 784, 784, 989, 990, 991, 712, 203, 1314, 1313, 1007, 1007, 1007, 1007, 1776, 1776, 1312, 1776, 1776, 1311, 1007, 1007, 1007, 1007, 1776, 1776, 1154, 1776, 1154, 1323, 1776, 1155, 1155, 1155, 1155, 203, 1056, 1776, 1007, 1007, 1007, 1007, 1007, 1007, 713, 713, 713, 713, 203, 427, 428, 429, 1310, 810, 713, 713, 713, 713, 427, 428, 429, 1059, 1560, 1057, 1059, 1112, 1113, 1114, 811, 1309, 1308, 1060, 713, 713, 713, 713, 713, 713, 1144, 1307, 1306, 1776, 203, 1305, 1776, 1304, 427, 428, 429, 1058, 810, 1776, 1303, 832, 914, 1776, 1302, 1301, 1776, 427, 428, 429, 203, 1776, 1300, 1776, 1776, 1776, 1776, 915, 1776, 1776, 203, 1776, 1299, 1144, 203, 1776, 1776, 812, 813, 814, 426, 1292, 203, 323, 1061, 1291, 203, 1776, 652, 914, 1776, 427, 428, 429, 1290, 1776, 1289, 1776, 1776, 1124, 1125, 1126, 1145, 1146, 1147, 1776, 986, 316, 203, 1288, 1322, 427, 428, 429, 1062, 1561, 203, 1063, 916, 917, 918, 427, 428, 429, 710, 427, 428, 429, 1006, 1006, 1006, 646, 1287, 427, 428, 429, 639, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 1075, 437, 1064, 438, 439, 440, 441, 442, 443, 444, 445, 446, 427, 428, 429, 1776, 1286, 1285, 1776, 977, 427, 428, 429, 1284, 477, 1776, 478, 1283, 479, 479, 479, 479, 1130, 1131, 1132, 1776, 203, 968, 1776, 1249, 616, 481, 1136, 1137, 1138, 1776, 1247, 1776, 1776, 1246, 1776, 1776, 1776, 954, 1240, 1776, 203, 1776, 1776, 1239, 481, 1065, 1776, 203, 1085, 710, 950, 1085, 203, 711, 711, 711, 1238, 203, 1086, 1776, 1237, 1776, 942, 1095, 1095, 1095, 1095, 1226, 1073, 203, 1225, 427, 428, 429, 1066, 1066, 1066, 1066, 1066, 935, 1066, 1067, 1083, 1066, 1066, 1066, 1220, 1324, 1066, 607, 1066, 427, 428, 429, 1219, 1074, 1068, 1066, 427, 428, 429, 1066, 675, 427, 428, 429, 1218, 675, 427, 428, 429, 675, 926, 1776, 298, 1066, 1776, 1066, 1067, 1066, 427, 428, 429, 1776, 855, 855, 855, 855, 832, 1217, 1069, 1252, 599, 1252, 203, 700, 1253, 1253, 1253, 1253, 700, 1216, 1066, 1066, 700, 1066, 1066, 1070, 1071, 1072, 1076, 1076, 1076, 1076, 1076, 1776, 1076, 1077, 1776, 1076, 1076, 1076, 1084, 1215, 1076, 1776, 1076, 1095, 1095, 1095, 1095, 919, 1078, 1076, 1214, 1213, 203, 1076, 913, 833, 834, 835, 1442, 1443, 1444, 427, 428, 429, 1210, 1211, 1212, 1076, 1208, 1076, 1077, 1076, 1002, 477, 593, 478, 1079, 1088, 1088, 1088, 1088, 1002, 1207, 1002, 1087, 1206, 1003, 1004, 1004, 1004, 1089, 1222, 1223, 1224, 1076, 1076, 905, 1076, 1076, 1080, 1081, 1082, 1205, 427, 428, 429, 1228, 1229, 1230, 1089, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 585, 484, 1091, 1091, 1091, 1091, 484, 484, 484, 484, 484, 484, 486, 486, 486, 1092, 486, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 486, 486, 486, 486, 1092, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 484, 230, 1204, 780, 1203, 781, 781, 781, 781, 477, 897, 478, 283, 783, 783, 783, 783, 497, 782, 1096, 203, 1097, 1097, 1097, 1097, 377, 481, 686, 1193, 1008, 1008, 1008, 1008, 862, 860, 862, 570, 782, 863, 863, 863, 863, 832, 1192, 1191, 481, 882, 203, 276, 914, 1234, 1235, 1236, 860, 839, 478, 1332, 779, 779, 779, 779, 536, 1190, 537, 915, 840, 840, 840, 840, 841, 535, 427, 428, 429, 540, 564, 203, 1242, 842, 537, 1321, 1098, 1098, 1098, 1098, 539, 914, 1100, 1189, 557, 540, 831, 936, 833, 834, 835, 252, 842, 427, 428, 429, 1188, 559, 794, 1344, 1187, 873, 254, 1186, 1185, 794, 864, 252, 1151, 1242, 916, 917, 918, 278, 252, 843, 844, 845, 254, 1101, 278, 802, 427, 428, 429, 254, 1155, 1155, 1155, 1155, 252, 542, 543, 544, 534, 795, 559, 802, 1243, 1244, 1245, 254, 795, 1518, 1519, 1520, 252, 802, 1102, 1103, 1104, 1339, 559, 1149, 1339, 1148, 252, 254, 803, 850, 823, 1340, 559, 1142, 796, 797, 798, 254, 1141, 252, 823, 796, 797, 798, 803, 559, 366, 366, 846, 252, 254, 366, 1140, 1139, 803, 559, 823, 804, 805, 806, 254, 1619, 1620, 1621, 366, 252, 838, 824, 203, 1562, 1128, 559, 1562, 804, 805, 806, 254, 824, 366, 1563, 1127, 366, 831, 804, 805, 806, 863, 863, 863, 863, 832, 1122, 525, 824, 1121, 1776, 825, 826, 827, 1150, 1150, 1150, 1150, 203, 1120, 366, 825, 826, 827, 854, 822, 854, 838, 1341, 855, 855, 855, 855, 832, 427, 428, 429, 825, 826, 827, 839, 250, 203, 1442, 1443, 1444, 838, 536, 1119, 537, 515, 861, 861, 861, 861, 841, 833, 834, 835, 1343, 540, 272, 1118, 858, 842, 859, 859, 859, 859, 427, 428, 429, 1665, 1666, 1667, 1776, 1342, 831, 860, 1156, 1156, 1156, 1156, 842, 833, 834, 835, 1518, 1519, 1520, 1158, 1117, 838, 427, 428, 429, 1776, 860, 1776, 252, 1165, 1165, 1165, 1165, 815, 1159, 843, 844, 845, 535, 254, 838, 1116, 534, 1115, 809, 536, 1110, 537, 509, 1133, 1133, 1133, 1133, 539, 1565, 1109, 1160, 1565, 540, 1108, 801, 534, 1134, 581, 1566, 1194, 1107, 1195, 1195, 1195, 1195, 1297, 1297, 1297, 1297, 1253, 1253, 1253, 1253, 1002, 964, 1134, 501, 1106, 1298, 1161, 1162, 1163, 1002, 1105, 1002, 793, 236, 1003, 1004, 1004, 1004, 202, 715, 964, 1619, 1620, 1621, 1298, 542, 543, 544, 484, 484, 484, 484, 484, 546, 484, 547, 546, 484, 484, 484, 546, 546, 484, 546, 714, 484, 1152, 1152, 1152, 1152, 549, 484, 546, 546, 546, 550, 546, 546, 546, 1153, 546, 546, 546, 546, 546, 546, 546, 546, 546, 484, 546, 484, 484, 484, 546, 546, 546, 546, 1153, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 484, 484, 546, 484, 484, 552, 553, 554, 502, 1665, 1666, 1667, 1174, 425, 426, 883, 1776, 252, 425, 1776, 203, 252, 425, 1164, 252, 1045, 1776, 278, 254, 1044, 503, 1043, 254, 883, 478, 254, 1373, 1373, 1373, 1373, 1776, 1042, 252, 1776, 1776, 504, 1041, 1776, 503, 1175, 1776, 1040, 884, 254, 1776, 966, 1039, 966, 1038, 1037, 967, 967, 967, 967, 936, 959, 959, 959, 959, 936, 884, 427, 428, 429, 505, 506, 507, 1167, 1176, 1177, 1178, 885, 886, 887, 1036, 1035, 866, 883, 1168, 1168, 1168, 1168, 1169, 1034, 1031, 1564, 252, 869, 203, 885, 886, 887, 503, 1030, 1567, 1027, 1776, 254, 1026, 1025, 1248, 1248, 1248, 1248, 1160, 937, 938, 939, 617, 1022, 937, 938, 939, 942, 884, 1568, 1351, 619, 1568, 1196, 1196, 1196, 1196, 621, 1021, 1569, 203, 1198, 622, 1020, 1019, 426, 942, 1170, 1171, 1172, 300, 712, 1776, 427, 428, 429, 641, 885, 886, 887, 883, 302, 1011, 1010, 1352, 1009, 1005, 898, 357, 252, 674, 890, 890, 890, 890, 503, 300, 344, 1199, 312, 254, 962, 318, 963, 963, 963, 963, 302, 624, 625, 626, 427, 428, 429, 668, 1776, 964, 884, 1776, 330, 1001, 323, 898, 1353, 899, 1776, 1353, 1200, 1201, 1202, 906, 300, 993, 1354, 992, 964, 652, 318, 985, 300, 316, 1776, 302, 984, 1776, 641, 885, 886, 887, 943, 302, 1776, 983, 900, 901, 902, 618, 906, 619, 899, 944, 944, 944, 944, 945, 906, 300, 907, 1776, 622, 685, 1776, 641, 946, 300, 685, 1570, 302, 1776, 685, 641, 646, 982, 981, 927, 302, 935, 639, 900, 901, 902, 927, 946, 300, 907, 961, 908, 909, 910, 641, 300, 960, 907, 1776, 302, 616, 641, 1254, 1254, 1254, 1254, 302, 940, 961, 960, 947, 948, 949, 616, 1776, 942, 928, 1776, 908, 909, 910, 927, 203, 928, 1776, 1571, 908, 909, 910, 1776, 300, 940, 1776, 494, 942, 494, 641, 933, 494, 1776, 1776, 302, 494, 1776, 932, 929, 930, 931, 607, 925, 1776, 298, 929, 930, 931, 958, 924, 958, 928, 923, 959, 959, 959, 959, 936, 967, 967, 967, 967, 936, 599, 1256, 601, 427, 428, 429, 1572, 1776, 1573, 1776, 300, 1263, 1263, 1263, 1263, 912, 1257, 929, 930, 931, 943, 302, 911, 593, 616, 904, 903, 618, 585, 619, 291, 965, 965, 965, 965, 945, 891, 283, 1258, 586, 622, 889, 203, 616, 946, 937, 938, 939, 300, 888, 937, 938, 939, 570, 1262, 1272, 669, 935, 669, 302, 881, 669, 987, 946, 300, 669, 276, 1259, 1260, 1261, 318, 300, 880, 203, 879, 302, 588, 587, 1580, 1580, 1580, 1580, 302, 564, 1355, 203, 947, 948, 949, 617, 878, 877, 1273, 427, 428, 429, 618, 1362, 619, 988, 1231, 1231, 1231, 1231, 621, 589, 590, 591, 1551, 622, 413, 1551, 1014, 1232, 1015, 1015, 1015, 1015, 1552, 1363, 557, 1274, 1275, 1276, 427, 428, 429, 782, 989, 990, 991, 1562, 1232, 857, 1562, 856, 427, 428, 429, 534, 836, 1563, 1371, 857, 1371, 856, 782, 1372, 1372, 1372, 1372, 534, 836, 829, 828, 624, 625, 626, 484, 484, 484, 484, 484, 628, 484, 629, 628, 484, 484, 484, 628, 628, 484, 628, 525, 628, 1250, 1250, 1250, 1250, 631, 484, 628, 628, 628, 632, 628, 628, 628, 1251, 628, 628, 628, 628, 628, 628, 628, 628, 628, 484, 628, 484, 484, 484, 628, 628, 628, 628, 1251, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 484, 484, 628, 484, 484, 634, 635, 636, 1265, 821, 250, 1144, 820, 203, 819, 987, 203, 970, 987, 1266, 1266, 1266, 1266, 1267, 300, 515, 832, 300, 973, 517, 587, 1565, 808, 587, 1565, 302, 1339, 807, 302, 1339, 1353, 1566, 509, 1353, 800, 1258, 1340, 1370, 1144, 675, 1354, 675, 988, 1568, 675, 988, 1568, 203, 675, 799, 501, 203, 243, 1569, 427, 428, 429, 427, 428, 429, 1551, 493, 775, 1551, 1268, 1269, 1270, 1145, 1146, 1147, 1552, 989, 990, 991, 989, 990, 991, 987, 1776, 202, 478, 740, 1372, 1372, 1372, 1372, 300, 739, 1000, 1000, 1000, 1000, 587, 736, 735, 732, 729, 302, 427, 428, 429, 728, 427, 428, 429, 477, 203, 478, 727, 1088, 1088, 1088, 1088, 477, 988, 478, 726, 1088, 1088, 1088, 1088, 1093, 1089, 1093, 722, 718, 1373, 1373, 1373, 1373, 1089, 497, 1144, 1096, 715, 1097, 1097, 1097, 1097, 714, 1436, 1089, 426, 989, 990, 991, 712, 832, 860, 1089, 1007, 1007, 1007, 1007, 699, 1437, 698, 427, 428, 429, 1007, 1007, 1007, 1007, 697, 658, 1776, 860, 478, 1144, 1373, 1373, 1373, 1373, 676, 357, 670, 1436, 1007, 1007, 1007, 1007, 1007, 1007, 1293, 1293, 344, 1293, 664, 1293, 330, 663, 1293, 1293, 1293, 1293, 662, 1293, 1145, 1146, 1147, 323, 1100, 651, 1012, 1293, 1438, 1439, 1440, 1012, 1100, 252, 650, 1012, 316, 606, 605, 559, 1562, 252, 203, 1562, 254, 1100, 1293, 559, 1293, 1293, 1563, 298, 254, 1565, 252, 579, 1565, 1013, 291, 578, 559, 1101, 1013, 1566, 577, 254, 1013, 283, 1568, 1101, 260, 1568, 569, 1293, 1293, 1293, 1294, 1294, 1569, 1294, 568, 1294, 1101, 1689, 1294, 1294, 1294, 1294, 276, 1294, 1102, 1103, 1104, 427, 428, 429, 522, 1294, 1102, 1103, 1104, 1392, 521, 1392, 250, 1158, 1393, 1393, 1393, 1393, 832, 1102, 1103, 1104, 252, 495, 1294, 1776, 1294, 1294, 1159, 1150, 1150, 1150, 1150, 254, 478, 999, 1372, 1372, 1372, 1372, 999, 1776, 838, 243, 999, 1156, 1156, 1156, 1156, 473, 1160, 1294, 1294, 1294, 713, 713, 713, 713, 838, 1242, 472, 838, 202, 179, 713, 713, 713, 713, 203, 833, 834, 835, 402, 401, 936, 400, 399, 838, 398, 1161, 1162, 1163, 713, 713, 713, 713, 713, 713, 1325, 1325, 1325, 1325, 1325, 390, 1325, 1326, 1242, 1325, 1325, 1325, 203, 581, 1325, 1194, 1325, 1195, 1195, 1195, 1195, 387, 1327, 1325, 383, 1696, 1716, 1325, 380, 1716, 964, 427, 428, 429, 364, 359, 1717, 1243, 1244, 1245, 358, 1325, 203, 1325, 1326, 1325, 1401, 535, 1401, 964, 1328, 1402, 1402, 1402, 1402, 832, 537, 357, 1403, 1403, 1403, 1403, 539, 427, 428, 429, 360, 540, 1325, 1325, 359, 1325, 1325, 1329, 1330, 1331, 1333, 1333, 1333, 1333, 1333, 1716, 1333, 1334, 1716, 1333, 1333, 1333, 358, 357, 1333, 1717, 1333, 427, 428, 429, 350, 347, 1335, 1333, 346, 345, 344, 1333, 335, 1776, 833, 834, 835, 1248, 1248, 1248, 1248, 542, 543, 544, 332, 1333, 203, 1333, 1334, 1333, 942, 1158, 331, 1418, 1418, 1418, 1418, 832, 1756, 330, 252, 1756, 307, 203, 1756, 293, 1159, 1756, 1757, 942, 292, 254, 1333, 1333, 1757, 1333, 1333, 1336, 1337, 1338, 1345, 1345, 1345, 1345, 1345, 291, 1345, 1346, 1160, 1345, 1345, 1345, 203, 270, 1345, 245, 1345, 427, 428, 429, 244, 243, 1347, 1345, 1703, 224, 192, 1345, 833, 834, 835, 179, 178, 1776, 427, 428, 429, 1161, 1162, 1163, 173, 1345, 173, 1345, 1346, 1345, 1405, 1776, 1776, 1776, 1776, 1093, 1776, 1093, 1776, 252, 1373, 1373, 1373, 1373, 1776, 278, 1776, 427, 428, 429, 254, 1776, 1345, 1345, 1776, 1345, 1345, 1348, 1349, 1350, 430, 431, 432, 433, 434, 435, 436, 1406, 437, 1776, 438, 439, 440, 441, 442, 443, 444, 445, 446, 1356, 1356, 1356, 1356, 1356, 1776, 1356, 1357, 1776, 1356, 1356, 1356, 203, 1776, 1356, 1776, 1356, 1407, 1408, 1409, 1776, 1776, 1358, 1356, 685, 1776, 1776, 1356, 685, 1254, 1254, 1254, 1254, 685, 1776, 1776, 1776, 685, 1776, 1776, 1776, 1356, 942, 1356, 1357, 1356, 1776, 1158, 1776, 1776, 1776, 1776, 1776, 477, 1776, 478, 252, 1088, 1088, 1088, 1088, 942, 1159, 427, 428, 429, 1776, 254, 1356, 1356, 1089, 1356, 1356, 1359, 1360, 1361, 1364, 1364, 1364, 1364, 1364, 1776, 1364, 1365, 1160, 1364, 1364, 1364, 203, 1089, 1364, 1413, 1364, 1018, 1776, 1776, 1018, 1776, 1366, 1364, 252, 1018, 1776, 1364, 1776, 1018, 278, 1776, 1776, 1776, 1776, 254, 1776, 1161, 1162, 1163, 1158, 1364, 203, 1364, 1365, 1364, 203, 1158, 1776, 252, 1776, 1776, 1414, 1776, 1776, 1159, 252, 999, 1776, 1776, 254, 999, 1169, 427, 428, 429, 999, 254, 1364, 1364, 999, 1364, 1364, 1367, 1368, 1369, 535, 1160, 1776, 1776, 1776, 1415, 1416, 1417, 1160, 1776, 1776, 1374, 1374, 1374, 1374, 539, 1776, 427, 428, 429, 540, 427, 428, 429, 1375, 1420, 1776, 1776, 1776, 1776, 1161, 1162, 1163, 1428, 252, 1776, 1776, 1161, 1162, 1163, 278, 1295, 252, 1375, 1776, 254, 1295, 1776, 559, 1776, 1295, 1776, 1468, 254, 1468, 1776, 1776, 1469, 1469, 1469, 1469, 936, 1421, 1776, 1776, 1776, 542, 543, 544, 839, 1429, 1494, 1494, 1494, 1494, 936, 1776, 1776, 537, 1776, 1156, 1156, 1156, 1156, 841, 1296, 1776, 1776, 1174, 540, 1296, 1422, 1423, 1424, 1296, 1776, 1776, 252, 1776, 1430, 1431, 1432, 1174, 278, 1776, 1776, 831, 1776, 254, 1776, 1527, 252, 937, 938, 939, 1527, 1776, 278, 1776, 1527, 1776, 1776, 254, 1776, 1528, 1175, 937, 938, 939, 1528, 1776, 1776, 1776, 1528, 1776, 843, 844, 845, 839, 1175, 1776, 1776, 1776, 1776, 1776, 536, 1242, 537, 1776, 1390, 1390, 1390, 1390, 841, 1176, 1177, 1178, 1198, 540, 1776, 1776, 936, 1391, 1776, 1198, 1776, 300, 1776, 1176, 1177, 1178, 1198, 641, 300, 1776, 831, 1776, 302, 1776, 641, 300, 1391, 1776, 1242, 302, 1776, 641, 1776, 1776, 1776, 1477, 302, 1477, 1776, 1199, 1478, 1478, 1478, 1478, 936, 1776, 1199, 1776, 1776, 843, 844, 845, 1167, 1199, 1776, 1776, 1776, 1243, 1244, 1245, 1776, 866, 1776, 1168, 1168, 1168, 1168, 1169, 1200, 1201, 1202, 1256, 869, 1776, 1776, 1200, 1201, 1202, 1776, 1776, 300, 1776, 1200, 1201, 1202, 1776, 1257, 1776, 1776, 1160, 617, 302, 1776, 1776, 1776, 937, 938, 939, 1776, 619, 1776, 1479, 1479, 1479, 1479, 621, 1774, 1256, 1258, 1776, 622, 1774, 1776, 1512, 1776, 1774, 300, 1776, 1170, 1171, 1172, 617, 1257, 1776, 1776, 1776, 1776, 302, 1513, 1776, 1776, 1776, 1450, 1450, 1450, 1450, 621, 1259, 1260, 1261, 1481, 622, 1775, 1776, 1258, 1451, 1776, 1775, 1776, 300, 1512, 1775, 1776, 1776, 1776, 318, 624, 625, 626, 1776, 302, 1776, 1776, 1256, 1451, 1393, 1393, 1393, 1393, 832, 1776, 1776, 300, 1259, 1260, 1261, 1489, 1482, 1257, 1514, 1515, 1516, 1436, 302, 1776, 300, 1776, 624, 625, 626, 943, 318, 1776, 1776, 1776, 1776, 302, 1437, 1776, 619, 1258, 1254, 1254, 1254, 1254, 945, 1483, 1484, 1485, 1776, 622, 1776, 1776, 1490, 1776, 1776, 1773, 1773, 1773, 1436, 833, 834, 835, 1776, 1776, 1256, 1776, 935, 1776, 1259, 1260, 1261, 1256, 1776, 300, 1773, 1773, 1773, 1773, 1776, 1257, 300, 1491, 1492, 1493, 302, 1776, 1267, 1438, 1439, 1440, 1776, 302, 1776, 1776, 1776, 947, 948, 949, 943, 1776, 1776, 1258, 1776, 1776, 1776, 618, 1496, 619, 1258, 1466, 1466, 1466, 1466, 945, 1776, 300, 1776, 1776, 622, 1776, 1776, 318, 1467, 1776, 1776, 1504, 302, 1776, 1776, 1776, 1259, 1260, 1261, 1272, 300, 935, 1776, 1259, 1260, 1261, 641, 1467, 300, 1497, 1776, 302, 1776, 1776, 318, 1401, 1776, 1401, 1776, 302, 1402, 1402, 1402, 1402, 832, 1776, 1776, 1776, 1505, 1776, 947, 948, 949, 1265, 1776, 1776, 1273, 1436, 1498, 1499, 1500, 1272, 970, 1776, 1266, 1266, 1266, 1266, 1267, 1776, 300, 1776, 1437, 973, 1776, 1776, 318, 1506, 1507, 1508, 1776, 302, 1776, 1776, 1776, 1274, 1275, 1276, 1776, 1776, 1258, 1776, 1776, 1776, 1436, 833, 834, 835, 1273, 1392, 1776, 1392, 1776, 1776, 1393, 1393, 1393, 1393, 832, 1776, 1776, 1776, 1776, 1585, 1585, 1585, 1585, 1776, 1776, 1268, 1269, 1270, 1776, 1438, 1439, 1440, 838, 1274, 1275, 1276, 1526, 1526, 1776, 1526, 1776, 1526, 1776, 1776, 1526, 1526, 1526, 1526, 1776, 1526, 1776, 838, 1776, 1776, 1776, 1776, 1776, 1526, 1776, 1776, 1588, 1588, 1588, 1588, 1776, 833, 834, 835, 1402, 1402, 1402, 1402, 832, 838, 1776, 1776, 1526, 1776, 1526, 1526, 1776, 1776, 1776, 1776, 1776, 1776, 1588, 1588, 1588, 1588, 1716, 1776, 838, 1716, 1776, 1776, 1776, 1776, 1776, 838, 1717, 1776, 1776, 1526, 1526, 1526, 1545, 1545, 1545, 1545, 1545, 203, 1545, 1546, 1776, 1545, 1545, 1545, 838, 1776, 1545, 1776, 1545, 833, 834, 835, 1776, 1776, 1547, 1545, 1776, 1776, 1776, 1545, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1631, 1631, 1631, 1631, 1776, 1776, 1545, 1776, 1545, 1546, 1545, 1590, 1776, 942, 1418, 1418, 1418, 1418, 832, 1776, 252, 427, 428, 429, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 942, 1545, 1545, 1776, 1545, 1545, 1548, 1549, 1550, 1776, 1551, 1776, 1776, 1551, 1776, 1776, 1591, 1776, 1776, 1776, 1552, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 203, 1776, 1776, 1776, 1776, 1776, 833, 834, 835, 1776, 1776, 1776, 1776, 1776, 1592, 1593, 1594, 1776, 1776, 1776, 1776, 1776, 1405, 1776, 1776, 1405, 1776, 1776, 1776, 1776, 1776, 252, 1776, 1776, 252, 1776, 1776, 278, 1776, 1776, 278, 1776, 254, 1776, 1776, 254, 1776, 1776, 1776, 1776, 1776, 427, 428, 429, 1553, 1553, 1553, 1553, 1553, 1406, 1553, 1554, 1406, 1553, 1553, 1553, 1776, 1776, 1553, 1776, 1553, 1634, 1634, 1634, 1634, 1776, 1555, 1553, 1776, 1776, 1776, 1553, 1776, 1776, 942, 1776, 1776, 1776, 1407, 1408, 1409, 1407, 1408, 1409, 1776, 1553, 1776, 1553, 1554, 1553, 1599, 1776, 1776, 942, 1776, 1776, 1776, 1776, 1776, 252, 1776, 1776, 1776, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 1776, 1553, 1553, 1776, 1553, 1553, 1556, 1557, 1558, 430, 431, 432, 433, 434, 435, 436, 1600, 437, 1776, 438, 439, 440, 441, 442, 443, 444, 445, 446, 1574, 1574, 1574, 1574, 1574, 1776, 1574, 1575, 1776, 1574, 1574, 1574, 1776, 1776, 1574, 1776, 1574, 1601, 1602, 1603, 1776, 1776, 1576, 1574, 1776, 1776, 1776, 1574, 1776, 1634, 1634, 1634, 1634, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1413, 1574, 942, 1574, 1575, 1574, 1776, 1776, 1776, 252, 1776, 1776, 1776, 1776, 1776, 278, 1776, 1776, 1776, 1776, 254, 942, 1776, 1776, 1776, 1776, 1776, 1776, 1574, 1574, 1776, 1574, 1574, 1577, 1578, 1579, 839, 1414, 1469, 1469, 1469, 1469, 936, 536, 1776, 537, 1776, 1390, 1390, 1390, 1390, 841, 1776, 1776, 1776, 1413, 540, 1776, 1776, 1776, 1391, 1776, 1776, 1776, 252, 1776, 1415, 1416, 1417, 1607, 278, 1776, 1776, 831, 1776, 254, 1776, 1776, 252, 1391, 1776, 1776, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 1776, 1776, 1414, 937, 938, 939, 1776, 1776, 1776, 1776, 1776, 1776, 843, 844, 845, 839, 1608, 1478, 1478, 1478, 1478, 936, 536, 1776, 537, 1776, 1390, 1390, 1390, 1390, 841, 1415, 1416, 1417, 1420, 540, 1776, 1776, 1776, 1391, 1776, 1420, 1776, 252, 1776, 1609, 1610, 1611, 1428, 278, 252, 1512, 831, 1776, 254, 1428, 278, 252, 1391, 1776, 1776, 254, 1776, 559, 252, 1776, 1513, 1776, 254, 1512, 559, 1421, 937, 938, 939, 254, 1776, 1776, 1421, 1776, 1776, 843, 844, 845, 1513, 1429, 1776, 1776, 1512, 1477, 1428, 1477, 1429, 1776, 1478, 1478, 1478, 1478, 936, 252, 1422, 1423, 1424, 1776, 1776, 559, 1512, 1422, 1423, 1424, 254, 1776, 1776, 1776, 1430, 1431, 1432, 1514, 1515, 1516, 1776, 1430, 1431, 1432, 1468, 1636, 1468, 1429, 1776, 1469, 1469, 1469, 1469, 936, 300, 1514, 1515, 1516, 1776, 1776, 641, 1776, 1776, 1776, 1776, 302, 1776, 1776, 1776, 937, 938, 939, 1776, 1776, 1776, 1776, 1430, 1431, 1432, 943, 1776, 1776, 1637, 1776, 1776, 1776, 618, 1776, 619, 1776, 1466, 1466, 1466, 1466, 945, 1776, 1776, 1776, 1776, 622, 1776, 1776, 1776, 1467, 937, 938, 939, 1776, 1776, 1776, 1776, 1638, 1639, 1640, 1481, 1776, 935, 1776, 1776, 1776, 1776, 1481, 1467, 300, 1776, 1776, 1776, 1776, 1776, 318, 300, 1776, 1776, 1776, 302, 1776, 318, 1776, 1776, 1776, 1776, 302, 1776, 1776, 1776, 947, 948, 949, 943, 1776, 1776, 1482, 1776, 1776, 1776, 618, 1645, 619, 1482, 1466, 1466, 1466, 1466, 945, 1489, 300, 1776, 1776, 622, 1776, 1776, 641, 1467, 300, 1776, 1776, 302, 1776, 1776, 318, 1483, 1484, 1485, 1489, 302, 935, 1776, 1483, 1484, 1485, 1776, 1467, 300, 1646, 1776, 1776, 1776, 1776, 318, 1776, 1776, 1490, 1776, 302, 1494, 1494, 1494, 1494, 936, 1776, 1776, 1776, 1776, 1776, 947, 948, 949, 1776, 1653, 1776, 1490, 1776, 1647, 1648, 1649, 1496, 1776, 300, 1496, 1776, 1491, 1492, 1493, 641, 300, 1776, 1776, 300, 302, 1776, 318, 1776, 1776, 318, 1776, 302, 1776, 1776, 302, 1491, 1492, 1493, 1776, 1776, 1776, 1654, 1776, 1776, 1776, 937, 938, 939, 1497, 1504, 1776, 1497, 1776, 1504, 1776, 1776, 1776, 1776, 300, 1776, 1776, 1776, 300, 1776, 641, 1776, 1776, 1776, 641, 302, 1655, 1656, 1657, 302, 1504, 1776, 1776, 1498, 1499, 1500, 1498, 1499, 1500, 300, 1776, 1776, 1505, 1776, 1776, 641, 1505, 1776, 1776, 1776, 302, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1505, 1776, 1590, 1776, 1506, 1507, 1508, 1776, 1506, 1507, 1508, 252, 1776, 1776, 1776, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 1776, 1776, 1776, 1776, 1776, 1776, 1506, 1507, 1508, 430, 431, 432, 433, 434, 435, 436, 1591, 437, 1776, 438, 439, 440, 441, 442, 443, 444, 445, 446, 1683, 1683, 1683, 1683, 1683, 1776, 1683, 1684, 1776, 1683, 1683, 1683, 1776, 1776, 1683, 1776, 1683, 1592, 1593, 1594, 1776, 1756, 1685, 1683, 1756, 1776, 1776, 1683, 1776, 1776, 1776, 1757, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1683, 203, 1683, 1684, 1683, 1776, 1590, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 252, 1776, 1776, 1776, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 1683, 1683, 1776, 1683, 1683, 1686, 1687, 1688, 1690, 1690, 1690, 1690, 1690, 1776, 1690, 1691, 1591, 1690, 1690, 1690, 1776, 1776, 1690, 1776, 1690, 427, 428, 429, 1776, 1776, 1692, 1690, 1776, 1776, 1776, 1690, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1592, 1593, 1594, 1776, 1690, 1776, 1690, 1691, 1690, 1776, 1590, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 252, 1776, 1776, 1776, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 1690, 1690, 1776, 1690, 1690, 1693, 1694, 1695, 1697, 1697, 1697, 1697, 1697, 1776, 1697, 1698, 1591, 1697, 1697, 1697, 1776, 1776, 1697, 1776, 1697, 1776, 1776, 1776, 1776, 1776, 1699, 1697, 1776, 1776, 1776, 1697, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1592, 1593, 1594, 1776, 1697, 1776, 1697, 1698, 1697, 1776, 1599, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 252, 1776, 1776, 1776, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 1697, 1697, 1776, 1697, 1697, 1700, 1701, 1702, 1704, 1704, 1704, 1704, 1704, 1776, 1704, 1705, 1600, 1704, 1704, 1704, 1776, 1776, 1704, 1776, 1704, 1776, 1776, 1776, 1776, 1776, 1706, 1704, 1776, 1776, 1776, 1704, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1601, 1602, 1603, 1776, 1704, 1776, 1704, 1705, 1704, 1776, 1599, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 252, 1776, 1776, 1776, 1776, 1776, 559, 1776, 1776, 1776, 1776, 254, 1704, 1704, 1776, 1704, 1704, 1707, 1708, 1709, 1710, 1710, 1710, 1710, 1710, 1776, 1710, 1711, 1600, 1710, 1710, 1710, 1776, 1776, 1710, 1599, 1710, 1776, 1776, 1776, 1776, 1776, 1712, 1710, 252, 1776, 1776, 1710, 1776, 1776, 559, 1776, 1776, 1607, 1776, 254, 1776, 1601, 1602, 1603, 1607, 1710, 252, 1710, 1711, 1710, 1776, 1776, 559, 252, 1776, 1776, 1600, 254, 1776, 559, 1776, 1776, 1776, 1776, 254, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1710, 1710, 1608, 1710, 1710, 1713, 1714, 1715, 839, 1608, 1776, 1776, 1776, 1601, 1602, 1603, 1776, 537, 1776, 1585, 1585, 1585, 1585, 841, 1776, 1776, 1776, 1607, 540, 1776, 1776, 1609, 1610, 1611, 1636, 1776, 252, 1776, 1609, 1610, 1611, 1636, 559, 300, 1776, 831, 1776, 254, 1776, 641, 300, 1776, 1776, 1776, 302, 1776, 641, 1776, 1776, 1776, 1776, 302, 1776, 1776, 1608, 1776, 1776, 1776, 1776, 1776, 1776, 1637, 1776, 1776, 843, 844, 845, 839, 1637, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 537, 1776, 1588, 1588, 1588, 1588, 841, 1609, 1610, 1611, 1636, 540, 1776, 1776, 1638, 1639, 1640, 1645, 1776, 300, 1776, 1638, 1639, 1640, 1645, 641, 300, 1776, 831, 1776, 302, 1776, 641, 300, 1776, 1776, 1776, 302, 1776, 641, 1776, 1776, 1776, 1776, 302, 1776, 1776, 1637, 1776, 1776, 1776, 1776, 1776, 1776, 1646, 1776, 1776, 843, 844, 845, 943, 1646, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 619, 1776, 1631, 1631, 1631, 1631, 945, 1638, 1639, 1640, 1645, 622, 1776, 1776, 1647, 1648, 1649, 1653, 1776, 300, 1776, 1647, 1648, 1649, 1653, 641, 300, 1776, 935, 1776, 302, 1776, 641, 300, 1776, 1776, 1776, 302, 1776, 641, 1776, 1776, 1776, 1776, 302, 1776, 1776, 1646, 1776, 1776, 1776, 1776, 1776, 1776, 1654, 1776, 1776, 947, 948, 949, 943, 1654, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 619, 1776, 1634, 1634, 1634, 1634, 945, 1647, 1648, 1649, 1653, 622, 1776, 1776, 1655, 1656, 1657, 1776, 1776, 300, 1776, 1655, 1656, 1657, 1776, 641, 1776, 1776, 935, 1776, 302, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1654, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 947, 948, 949, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1655, 1656, 1657, 1750, 1750, 1750, 1750, 1750, 1776, 1750, 1751, 1776, 1750, 1750, 1750, 1776, 1776, 1750, 1776, 1750, 1776, 1776, 1776, 1776, 1776, 1752, 1750, 1776, 1776, 1776, 1750, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1750, 1776, 1750, 1751, 1750, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1750, 1750, 1776, 1750, 1750, 1753, 1754, 1755, 1758, 1758, 1758, 1758, 1758, 1776, 1758, 1759, 1776, 1758, 1758, 1758, 1776, 1776, 1758, 1776, 1758, 1776, 1776, 1776, 1776, 1776, 1760, 1758, 1776, 1776, 1776, 1758, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1758, 1776, 1758, 1759, 1758, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1758, 1758, 1776, 1758, 1758, 1761, 1762, 1763, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 174, 174, 1776, 1776, 1776, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 1776, 174, 174, 174, 174, 174, 174, 174, 174, 233, 233, 1776, 233, 1776, 1776, 1776, 1776, 233, 233, 233, 1776, 233, 233, 235, 235, 1776, 1776, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 250, 1776, 250, 1776, 250, 250, 1776, 250, 1776, 250, 250, 1776, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 276, 1776, 276, 1776, 276, 276, 1776, 276, 1776, 276, 276, 1776, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 283, 1776, 283, 1776, 283, 283, 1776, 1776, 1776, 283, 283, 1776, 283, 1776, 283, 283, 283, 1776, 283, 283, 283, 283, 298, 1776, 298, 1776, 298, 298, 1776, 298, 298, 298, 298, 1776, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 316, 1776, 316, 1776, 316, 316, 1776, 316, 316, 316, 316, 1776, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 323, 1776, 323, 1776, 323, 323, 1776, 1776, 323, 323, 323, 1776, 323, 1776, 323, 323, 323, 1776, 323, 323, 323, 323, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 361, 1776, 1776, 1776, 1776, 361, 361, 361, 1776, 361, 361, 369, 369, 1776, 369, 369, 1776, 1776, 369, 1776, 1776, 1776, 369, 369, 369, 369, 369, 369, 369, 369, 388, 1776, 1776, 1776, 1776, 388, 1776, 388, 1776, 1776, 388, 1776, 388, 388, 388, 1776, 388, 388, 388, 388, 388, 388, 1776, 388, 388, 1776, 388, 397, 397, 1776, 1776, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 403, 403, 1776, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, 406, 1776, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 426, 1776, 426, 1776, 426, 426, 1776, 1776, 426, 426, 426, 1776, 426, 1776, 426, 426, 426, 426, 426, 426, 426, 426, 480, 480, 1776, 480, 1776, 1776, 1776, 1776, 480, 480, 480, 1776, 480, 480, 235, 235, 1776, 1776, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 501, 1776, 501, 1776, 501, 501, 1776, 501, 1776, 501, 501, 1776, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 250, 1776, 250, 1776, 250, 250, 1776, 250, 1776, 250, 250, 1776, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 509, 1776, 509, 1776, 509, 509, 1776, 509, 1776, 509, 509, 1776, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 515, 1776, 515, 1776, 515, 515, 1776, 1776, 1776, 515, 515, 1776, 515, 1776, 515, 515, 515, 1776, 515, 515, 515, 515, 525, 1776, 525, 1776, 525, 525, 1776, 525, 1776, 525, 525, 1776, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 534, 1776, 534, 1776, 534, 534, 534, 534, 1776, 534, 534, 1776, 534, 534, 534, 534, 534, 1776, 534, 534, 534, 534, 557, 1776, 557, 1776, 557, 557, 1776, 557, 1776, 557, 557, 1776, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 276, 1776, 276, 1776, 276, 276, 1776, 276, 1776, 276, 276, 1776, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 564, 1776, 564, 1776, 564, 564, 1776, 1776, 1776, 564, 1776, 1776, 564, 1776, 564, 564, 564, 564, 564, 564, 564, 564, 570, 1776, 570, 1776, 570, 570, 1776, 570, 1776, 570, 570, 1776, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 585, 1776, 585, 1776, 585, 585, 1776, 585, 585, 585, 585, 1776, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 298, 1776, 298, 1776, 298, 298, 1776, 298, 298, 298, 298, 1776, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 593, 1776, 593, 1776, 593, 593, 1776, 593, 593, 593, 593, 1776, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 599, 1776, 599, 1776, 599, 599, 1776, 1776, 599, 599, 599, 1776, 599, 1776, 599, 599, 599, 1776, 599, 599, 599, 599, 607, 1776, 607, 1776, 607, 607, 1776, 607, 607, 607, 607, 1776, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 616, 1776, 616, 1776, 616, 616, 616, 616, 616, 616, 616, 1776, 616, 616, 616, 616, 616, 1776, 616, 616, 616, 616, 639, 1776, 639, 1776, 639, 639, 1776, 639, 639, 639, 639, 1776, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 316, 1776, 316, 1776, 316, 316, 1776, 316, 316, 316, 316, 1776, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 646, 1776, 646, 1776, 646, 646, 1776, 1776, 646, 646, 1776, 1776, 646, 1776, 646, 646, 646, 646, 646, 646, 646, 646, 652, 1776, 652, 1776, 652, 652, 1776, 652, 652, 652, 652, 1776, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 361, 1776, 1776, 1776, 1776, 361, 361, 361, 1776, 361, 361, 369, 1776, 1776, 1776, 1776, 369, 369, 369, 1776, 369, 369, 681, 1776, 1776, 681, 1776, 1776, 681, 1776, 1776, 1776, 681, 681, 681, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 1776, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 233, 233, 1776, 233, 1776, 1776, 1776, 1776, 233, 233, 233, 1776, 233, 233, 388, 1776, 1776, 1776, 1776, 388, 1776, 388, 1776, 1776, 388, 1776, 388, 388, 388, 1776, 388, 388, 388, 388, 388, 388, 1776, 388, 388, 1776, 388, 397, 397, 1776, 1776, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 406, 406, 1776, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 174, 174, 1776, 1776, 1776, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 1776, 174, 174, 174, 174, 174, 174, 174, 174, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 480, 1776, 1776, 1776, 1776, 480, 480, 480, 1776, 480, 480, 709, 1776, 1776, 709, 1776, 1776, 1776, 1776, 709, 709, 709, 1776, 709, 709, 426, 1776, 426, 1776, 426, 426, 1776, 1776, 426, 426, 426, 1776, 426, 1776, 426, 426, 426, 426, 426, 426, 426, 426, 787, 1776, 787, 1776, 1776, 1776, 1776, 787, 787, 787, 1776, 787, 787, 534, 1776, 534, 1776, 534, 534, 1776, 1776, 1776, 534, 534, 1776, 534, 534, 534, 534, 534, 1776, 534, 534, 534, 534, 501, 1776, 501, 1776, 501, 501, 1776, 501, 1776, 501, 501, 1776, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 793, 1776, 793, 1776, 793, 793, 1776, 793, 1776, 793, 793, 1776, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 801, 1776, 801, 1776, 801, 801, 1776, 801, 1776, 801, 801, 1776, 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, 509, 1776, 509, 1776, 509, 509, 1776, 509, 1776, 509, 509, 1776, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 809, 1776, 809, 1776, 809, 809, 1776, 1776, 1776, 809, 809, 1776, 809, 1776, 809, 809, 809, 809, 809, 809, 809, 809, 815, 1776, 815, 1776, 815, 815, 1776, 1776, 1776, 815, 1776, 1776, 815, 1776, 815, 815, 815, 815, 815, 815, 815, 815, 822, 1776, 822, 1776, 822, 822, 1776, 822, 1776, 822, 822, 1776, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 525, 1776, 525, 1776, 525, 525, 1776, 525, 1776, 525, 525, 1776, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 831, 1776, 831, 1776, 831, 831, 1776, 1776, 1776, 831, 831, 1776, 831, 1776, 831, 831, 831, 831, 831, 831, 831, 831, 838, 1776, 838, 1776, 838, 838, 838, 838, 1776, 838, 838, 1776, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 846, 1776, 846, 1776, 846, 846, 1776, 1776, 1776, 846, 1776, 1776, 846, 1776, 846, 846, 846, 846, 846, 846, 846, 846, 850, 1776, 850, 1776, 850, 850, 1776, 1776, 1776, 850, 850, 1776, 850, 1776, 850, 850, 850, 1776, 850, 850, 850, 850, 864, 1776, 864, 1776, 864, 864, 1776, 864, 1776, 864, 864, 1776, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 557, 1776, 557, 1776, 557, 557, 1776, 557, 1776, 557, 557, 1776, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 873, 1776, 873, 1776, 873, 873, 1776, 1776, 1776, 873, 1776, 1776, 873, 1776, 873, 873, 873, 873, 873, 873, 873, 873, 564, 1776, 564, 1776, 564, 564, 1776, 1776, 1776, 564, 1776, 1776, 564, 1776, 564, 564, 564, 564, 564, 564, 564, 564, 882, 1776, 882, 1776, 882, 882, 1776, 882, 1776, 882, 882, 1776, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 570, 1776, 570, 1776, 570, 570, 1776, 570, 1776, 570, 570, 1776, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 616, 1776, 616, 1776, 616, 616, 1776, 1776, 616, 616, 616, 1776, 616, 616, 616, 616, 616, 1776, 616, 616, 616, 616, 585, 1776, 585, 1776, 585, 585, 1776, 585, 585, 585, 585, 1776, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 897, 1776, 897, 1776, 897, 897, 1776, 897, 897, 897, 897, 1776, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 905, 1776, 905, 1776, 905, 905, 1776, 905, 905, 905, 905, 1776, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 593, 1776, 593, 1776, 593, 593, 1776, 593, 593, 593, 593, 1776, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 913, 1776, 913, 1776, 913, 913, 1776, 1776, 913, 913, 913, 1776, 913, 1776, 913, 913, 913, 913, 913, 913, 913, 913, 919, 1776, 919, 1776, 919, 919, 1776, 1776, 919, 919, 1776, 1776, 919, 1776, 919, 919, 919, 919, 919, 919, 919, 919, 926, 1776, 926, 1776, 926, 926, 1776, 926, 926, 926, 926, 1776, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 607, 1776, 607, 1776, 607, 607, 1776, 607, 607, 607, 607, 1776, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 935, 1776, 935, 1776, 935, 935, 1776, 1776, 935, 935, 935, 1776, 935, 1776, 935, 935, 935, 935, 935, 935, 935, 935, 942, 1776, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 950, 1776, 950, 1776, 950, 950, 1776, 1776, 950, 950, 1776, 1776, 950, 1776, 950, 950, 950, 950, 950, 950, 950, 950, 954, 1776, 954, 1776, 954, 954, 1776, 1776, 954, 954, 954, 1776, 954, 1776, 954, 954, 954, 1776, 954, 954, 954, 954, 968, 1776, 968, 1776, 968, 968, 1776, 968, 968, 968, 968, 1776, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 639, 1776, 639, 1776, 639, 639, 1776, 639, 639, 639, 639, 1776, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 977, 1776, 977, 1776, 977, 977, 1776, 1776, 977, 977, 1776, 1776, 977, 1776, 977, 977, 977, 977, 977, 977, 977, 977, 646, 1776, 646, 1776, 646, 646, 1776, 1776, 646, 646, 1776, 1776, 646, 1776, 646, 646, 646, 646, 646, 646, 646, 646, 986, 1776, 986, 1776, 986, 986, 1776, 986, 986, 986, 986, 1776, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 652, 1776, 652, 1776, 652, 652, 1776, 652, 652, 652, 652, 1776, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 681, 1776, 1776, 1776, 1776, 1776, 681, 1776, 1776, 1776, 681, 1776, 1776, 1776, 1776, 1776, 1776, 681, 1776, 681, 709, 1776, 1776, 709, 1776, 1776, 1776, 1776, 709, 709, 709, 1776, 709, 709, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 1776, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 388, 1776, 1776, 1776, 1776, 388, 1776, 388, 1776, 1776, 388, 1776, 388, 388, 388, 1776, 388, 388, 388, 388, 388, 388, 1776, 388, 388, 1776, 388, 480, 480, 1776, 480, 1776, 1776, 1776, 1776, 480, 480, 480, 1776, 480, 480, 756, 756, 756, 756, 756, 1776, 756, 756, 756, 1776, 1776, 756, 756, 1776, 1776, 756, 756, 1776, 756, 1776, 1776, 1776, 756, 1776, 1776, 1776, 756, 426, 1776, 1776, 426, 426, 1776, 426, 1776, 426, 426, 1776, 1776, 426, 426, 426, 1776, 426, 1776, 426, 426, 426, 426, 426, 426, 426, 426, 787, 1776, 787, 1776, 1776, 1776, 1776, 787, 787, 787, 1776, 787, 787, 838, 1776, 838, 1776, 838, 838, 838, 838, 1776, 838, 838, 1776, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 831, 1776, 831, 1776, 831, 831, 1776, 1776, 1776, 831, 831, 1776, 831, 1776, 831, 831, 831, 831, 831, 831, 831, 831, 534, 1776, 534, 1776, 534, 534, 1776, 534, 1776, 534, 534, 1776, 534, 534, 534, 534, 534, 1776, 534, 534, 534, 534, 1099, 1776, 1099, 1776, 1099, 1099, 1776, 1099, 1776, 1099, 1099, 1776, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 793, 1776, 793, 1776, 793, 793, 1776, 793, 1776, 793, 793, 1776, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 801, 1776, 801, 1776, 801, 801, 1776, 801, 1776, 801, 801, 1776, 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, 809, 1776, 809, 1776, 809, 809, 1776, 1776, 1776, 809, 809, 1776, 809, 1776, 809, 809, 809, 809, 809, 809, 809, 809, 1111, 1776, 1111, 1776, 1111, 1111, 1776, 1776, 1776, 1111, 1776, 1776, 1111, 1776, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 815, 1776, 815, 1776, 815, 815, 1776, 1776, 1776, 815, 1776, 1776, 815, 1776, 815, 815, 815, 815, 815, 815, 815, 815, 822, 1776, 822, 1776, 822, 822, 1776, 822, 1776, 822, 822, 1776, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 1123, 1776, 1123, 1776, 1123, 1123, 1776, 1776, 1776, 1123, 1776, 1776, 1123, 1776, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1129, 1776, 1129, 1776, 1129, 1129, 1776, 1776, 1776, 1129, 1776, 1776, 1129, 1776, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1135, 1776, 1135, 1776, 1135, 1135, 1776, 1776, 1776, 1135, 1776, 1776, 1135, 1776, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 846, 1776, 846, 1776, 846, 846, 1776, 1776, 1776, 846, 1776, 1776, 846, 1776, 846, 846, 846, 846, 846, 846, 846, 846, 1143, 1776, 1143, 1776, 1143, 1143, 1776, 1776, 1776, 1143, 1143, 1776, 1143, 1776, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1157, 1776, 1157, 1776, 1157, 1157, 1776, 1157, 1776, 1157, 1157, 1776, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 501, 1776, 501, 1776, 501, 501, 1776, 501, 1776, 501, 501, 1776, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 1166, 1776, 1166, 1776, 1166, 1166, 1776, 1166, 1776, 1166, 1166, 1776, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1173, 1776, 1173, 1776, 1173, 1173, 1776, 1173, 1776, 1173, 1173, 1776, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1179, 1776, 1179, 1776, 1179, 1179, 1776, 1776, 1776, 1179, 1179, 1776, 1179, 1776, 1179, 1179, 1179, 1776, 1179, 1179, 1179, 1179, 873, 1776, 873, 1776, 873, 873, 1776, 1776, 1776, 873, 1776, 1776, 873, 1776, 873, 873, 873, 873, 873, 873, 873, 873, 882, 1776, 882, 1776, 882, 882, 1776, 882, 1776, 882, 882, 1776, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 942, 1776, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 935, 1776, 935, 1776, 935, 935, 1776, 1776, 935, 935, 935, 1776, 935, 1776, 935, 935, 935, 935, 935, 935, 935, 935, 616, 1776, 616, 1776, 616, 616, 1776, 616, 616, 616, 616, 1776, 616, 616, 616, 616, 616, 1776, 616, 616, 616, 616, 1197, 1776, 1197, 1776, 1197, 1197, 1776, 1197, 1197, 1197, 1197, 1776, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 897, 1776, 897, 1776, 897, 897, 1776, 897, 897, 897, 897, 1776, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 905, 1776, 905, 1776, 905, 905, 1776, 905, 905, 905, 905, 1776, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 913, 1776, 913, 1776, 913, 913, 1776, 1776, 913, 913, 913, 1776, 913, 1776, 913, 913, 913, 913, 913, 913, 913, 913, 1209, 1776, 1209, 1776, 1209, 1209, 1776, 1776, 1209, 1209, 1776, 1776, 1209, 1776, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 919, 1776, 919, 1776, 919, 919, 1776, 1776, 919, 919, 1776, 1776, 919, 1776, 919, 919, 919, 919, 919, 919, 919, 919, 926, 1776, 926, 1776, 926, 926, 1776, 926, 926, 926, 926, 1776, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 1221, 1776, 1221, 1776, 1221, 1221, 1776, 1776, 1221, 1221, 1776, 1776, 1221, 1776, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1227, 1776, 1227, 1776, 1227, 1227, 1776, 1776, 1227, 1227, 1776, 1776, 1227, 1776, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1233, 1776, 1233, 1776, 1233, 1233, 1776, 1776, 1233, 1233, 1776, 1776, 1233, 1776, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 950, 1776, 950, 1776, 950, 950, 1776, 1776, 950, 950, 1776, 1776, 950, 1776, 950, 950, 950, 950, 950, 950, 950, 950, 1241, 1776, 1241, 1776, 1241, 1241, 1776, 1776, 1241, 1241, 1241, 1776, 1241, 1776, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1255, 1776, 1255, 1776, 1255, 1255, 1776, 1255, 1255, 1255, 1255, 1776, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 585, 1776, 585, 1776, 585, 585, 1776, 585, 585, 585, 585, 1776, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 1264, 1776, 1264, 1776, 1264, 1264, 1776, 1264, 1264, 1264, 1264, 1776, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1271, 1776, 1271, 1776, 1271, 1271, 1776, 1271, 1271, 1271, 1271, 1776, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1277, 1776, 1277, 1776, 1277, 1277, 1776, 1776, 1277, 1277, 1277, 1776, 1277, 1776, 1277, 1277, 1277, 1776, 1277, 1277, 1277, 1277, 977, 1776, 977, 1776, 977, 977, 1776, 1776, 977, 977, 1776, 1776, 977, 1776, 977, 977, 977, 977, 977, 977, 977, 977, 986, 1776, 986, 1776, 986, 986, 1776, 986, 986, 986, 986, 1776, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 681, 1776, 1776, 1776, 1776, 1776, 681, 1776, 1776, 1776, 681, 1776, 1776, 1776, 1776, 1776, 1776, 681, 1776, 681, 369, 1776, 1776, 369, 1776, 1776, 369, 1776, 1776, 1776, 369, 369, 369, 369, 369, 369, 369, 709, 1776, 1776, 709, 1776, 1776, 1776, 1776, 709, 709, 709, 1776, 709, 709, 388, 1776, 1776, 1776, 1776, 388, 1776, 388, 1776, 1776, 388, 1776, 388, 388, 388, 1776, 388, 388, 388, 388, 388, 388, 1776, 388, 388, 1776, 388, 480, 1776, 1776, 1776, 1776, 480, 480, 480, 1776, 480, 480, 1066, 1066, 1066, 1066, 1066, 1776, 1066, 1066, 1066, 1776, 1776, 1066, 1066, 1776, 1776, 1066, 1066, 1776, 1066, 1776, 1776, 1776, 1066, 1776, 1066, 1776, 1066, 1076, 1076, 1076, 1076, 1076, 1776, 1076, 1076, 1076, 1776, 1776, 1076, 1076, 1776, 1776, 1076, 1076, 1776, 1076, 1776, 1776, 1776, 1076, 1076, 1776, 1776, 1076, 426, 1776, 426, 1776, 426, 426, 1776, 1776, 426, 426, 426, 1776, 426, 1776, 426, 426, 426, 426, 426, 426, 426, 426, 534, 1776, 534, 1776, 534, 534, 1776, 1776, 1776, 534, 534, 1776, 534, 534, 534, 534, 534, 1776, 534, 534, 534, 534, 838, 1776, 838, 1776, 838, 838, 1776, 838, 1776, 838, 838, 1776, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 1099, 1776, 1099, 1776, 1099, 1099, 1776, 1099, 1776, 1099, 1099, 1776, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1111, 1776, 1111, 1776, 1111, 1111, 1776, 1776, 1776, 1111, 1776, 1776, 1111, 1776, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1123, 1776, 1123, 1776, 1123, 1123, 1776, 1776, 1776, 1123, 1776, 1776, 1123, 1776, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1129, 1776, 1129, 1776, 1129, 1129, 1776, 1776, 1776, 1129, 1776, 1776, 1129, 1776, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 831, 1776, 831, 1776, 831, 831, 1776, 1776, 1776, 831, 831, 1776, 831, 1776, 831, 831, 831, 831, 831, 831, 831, 831, 1135, 1776, 1135, 1776, 1135, 1135, 1776, 1776, 1776, 1135, 1776, 1776, 1135, 1776, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1143, 1776, 1143, 1776, 1143, 1143, 1776, 1776, 1776, 1143, 1143, 1776, 1143, 1776, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1157, 1776, 1157, 1776, 1157, 1157, 1776, 1157, 1776, 1157, 1157, 1776, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1404, 1776, 1404, 1776, 1404, 1404, 1776, 1404, 1776, 1404, 1404, 1776, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1412, 1776, 1412, 1776, 1412, 1412, 1776, 1412, 1776, 1412, 1412, 1776, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1166, 1776, 1166, 1776, 1166, 1166, 1776, 1166, 1776, 1166, 1166, 1776, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1419, 1776, 1419, 1776, 1419, 1419, 1776, 1419, 1776, 1419, 1419, 1776, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1427, 1776, 1427, 1776, 1427, 1427, 1776, 1427, 1776, 1427, 1427, 1776, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1173, 1776, 1173, 1776, 1173, 1173, 1776, 1173, 1776, 1173, 1173, 1776, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1435, 1776, 1435, 1776, 1435, 1435, 1776, 1776, 1776, 1435, 1435, 1776, 1435, 1776, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1441, 1776, 1441, 1776, 1441, 1441, 1776, 1776, 1776, 1441, 1776, 1776, 1441, 1776, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 616, 1776, 616, 1776, 616, 616, 1776, 1776, 616, 616, 616, 1776, 616, 616, 616, 616, 616, 1776, 616, 616, 616, 616, 942, 1776, 942, 1776, 942, 942, 1776, 942, 942, 942, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1197, 1776, 1197, 1776, 1197, 1197, 1776, 1197, 1197, 1197, 1197, 1776, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1209, 1776, 1209, 1776, 1209, 1209, 1776, 1776, 1209, 1209, 1776, 1776, 1209, 1776, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1221, 1776, 1221, 1776, 1221, 1221, 1776, 1776, 1221, 1221, 1776, 1776, 1221, 1776, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1227, 1776, 1227, 1776, 1227, 1227, 1776, 1776, 1227, 1227, 1776, 1776, 1227, 1776, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 935, 1776, 935, 1776, 935, 935, 1776, 1776, 935, 935, 935, 1776, 935, 1776, 935, 935, 935, 935, 935, 935, 935, 935, 1233, 1776, 1233, 1776, 1233, 1233, 1776, 1776, 1233, 1233, 1776, 1776, 1233, 1776, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1241, 1776, 1241, 1776, 1241, 1241, 1776, 1776, 1241, 1241, 1241, 1776, 1241, 1776, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1255, 1776, 1255, 1776, 1255, 1255, 1776, 1255, 1255, 1255, 1255, 1776, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1480, 1776, 1480, 1776, 1480, 1480, 1776, 1480, 1480, 1480, 1480, 1776, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1488, 1776, 1488, 1776, 1488, 1488, 1776, 1488, 1488, 1488, 1488, 1776, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1264, 1776, 1264, 1776, 1264, 1264, 1776, 1264, 1264, 1264, 1264, 1776, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1495, 1776, 1495, 1776, 1495, 1495, 1776, 1495, 1495, 1495, 1495, 1776, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1503, 1776, 1503, 1776, 1503, 1503, 1776, 1503, 1503, 1503, 1503, 1776, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1271, 1776, 1271, 1776, 1271, 1271, 1776, 1271, 1271, 1271, 1271, 1776, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1511, 1776, 1511, 1776, 1511, 1511, 1776, 1776, 1511, 1511, 1511, 1776, 1511, 1776, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1517, 1776, 1517, 1776, 1517, 1517, 1776, 1776, 1517, 1517, 1776, 1776, 1517, 1776, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 388, 388, 388, 1776, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 480, 480, 1776, 480, 1776, 1776, 1776, 1776, 480, 480, 480, 1776, 480, 480, 1325, 1325, 1325, 1325, 1325, 1776, 1325, 1325, 1325, 1776, 1776, 1325, 1325, 1776, 1776, 1325, 1325, 1776, 1325, 1776, 1776, 1776, 1325, 1325, 1776, 1776, 1325, 1333, 1333, 1333, 1333, 1333, 1776, 1333, 1333, 1333, 1776, 1776, 1333, 1333, 1776, 1776, 1333, 1333, 1776, 1333, 1776, 1776, 1776, 1333, 1776, 1776, 1776, 1333, 1345, 1345, 1345, 1345, 1345, 1776, 1345, 1345, 1345, 1776, 1776, 1345, 1345, 1776, 1776, 1345, 1345, 1776, 1345, 1776, 1776, 1776, 1345, 1776, 1776, 1776, 1345, 1356, 1356, 1356, 1356, 1356, 1776, 1356, 1356, 1356, 1776, 1776, 1356, 1356, 1776, 1776, 1356, 1356, 1776, 1356, 1776, 1776, 1776, 1356, 1776, 1776, 1776, 1356, 1364, 1364, 1364, 1364, 1364, 1776, 1364, 1364, 1364, 1776, 1776, 1364, 1364, 1776, 1776, 1364, 1364, 1776, 1364, 1776, 1776, 1776, 1364, 1776, 1776, 1776, 1364, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 838, 1776, 838, 1776, 838, 838, 838, 838, 1776, 838, 838, 1776, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 831, 1776, 831, 1776, 831, 831, 1776, 1776, 1776, 831, 831, 1776, 831, 1776, 831, 831, 831, 831, 831, 831, 831, 831, 1589, 1776, 1589, 1776, 1589, 1589, 1776, 1589, 1776, 1589, 1589, 1776, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1404, 1776, 1404, 1776, 1404, 1404, 1776, 1404, 1776, 1404, 1404, 1776, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1598, 1776, 1598, 1776, 1598, 1598, 1776, 1598, 1776, 1598, 1598, 1776, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1412, 1776, 1412, 1776, 1412, 1412, 1776, 1412, 1776, 1412, 1412, 1776, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1606, 1776, 1606, 1776, 1606, 1606, 1776, 1606, 1776, 1606, 1606, 1776, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1419, 1776, 1419, 1776, 1419, 1419, 1776, 1419, 1776, 1419, 1419, 1776, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1427, 1776, 1427, 1776, 1427, 1427, 1776, 1427, 1776, 1427, 1427, 1776, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1435, 1776, 1435, 1776, 1435, 1435, 1776, 1776, 1776, 1435, 1435, 1776, 1435, 1776, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1618, 1776, 1618, 1776, 1618, 1618, 1776, 1776, 1776, 1618, 1776, 1776, 1618, 1776, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1441, 1776, 1441, 1776, 1441, 1441, 1776, 1776, 1776, 1441, 1776, 1776, 1441, 1776, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 942, 1776, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 935, 1776, 935, 1776, 935, 935, 1776, 1776, 935, 935, 935, 1776, 935, 1776, 935, 935, 935, 935, 935, 935, 935, 935, 1635, 1776, 1635, 1776, 1635, 1635, 1776, 1635, 1635, 1635, 1635, 1776, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1480, 1776, 1480, 1776, 1480, 1480, 1776, 1480, 1480, 1480, 1480, 1776, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1644, 1776, 1644, 1776, 1644, 1644, 1776, 1644, 1644, 1644, 1644, 1776, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1488, 1776, 1488, 1776, 1488, 1488, 1776, 1488, 1488, 1488, 1488, 1776, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1652, 1776, 1652, 1776, 1652, 1652, 1776, 1652, 1652, 1652, 1652, 1776, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1495, 1776, 1495, 1776, 1495, 1495, 1776, 1495, 1495, 1495, 1495, 1776, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1503, 1776, 1503, 1776, 1503, 1503, 1776, 1503, 1503, 1503, 1503, 1776, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1511, 1776, 1511, 1776, 1511, 1511, 1776, 1776, 1511, 1511, 1511, 1776, 1511, 1776, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1664, 1776, 1664, 1776, 1664, 1664, 1776, 1776, 1664, 1664, 1776, 1776, 1664, 1776, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1517, 1776, 1517, 1776, 1517, 1517, 1776, 1776, 1517, 1517, 1776, 1776, 1517, 1776, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1545, 1545, 1545, 1545, 1545, 1776, 1545, 1545, 1545, 1776, 1776, 1545, 1545, 1776, 1776, 1545, 1545, 1776, 1545, 1776, 1776, 1776, 1545, 1776, 1776, 1776, 1545, 1553, 1553, 1553, 1553, 1553, 1776, 1553, 1553, 1553, 1776, 1776, 1553, 1553, 1776, 1776, 1553, 1553, 1776, 1553, 1776, 1776, 1776, 1553, 1776, 1776, 1776, 1553, 1574, 1574, 1574, 1574, 1574, 1776, 1574, 1574, 1574, 1776, 1776, 1574, 1574, 1776, 1776, 1574, 1574, 1776, 1574, 1776, 1776, 1776, 1574, 1776, 1776, 1776, 1574, 426, 1776, 426, 1776, 426, 426, 1776, 1776, 426, 426, 426, 1776, 426, 1776, 426, 426, 426, 426, 426, 426, 426, 426, 480, 1776, 480, 1776, 1776, 1776, 1776, 480, 480, 480, 1776, 480, 480, 838, 1776, 838, 1776, 838, 838, 1776, 838, 1776, 838, 838, 1776, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 1589, 1776, 1589, 1776, 1589, 1589, 1776, 1589, 1776, 1589, 1589, 1776, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1598, 1776, 1598, 1776, 1598, 1598, 1776, 1598, 1776, 1598, 1598, 1776, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1606, 1776, 1606, 1776, 1606, 1606, 1776, 1606, 1776, 1606, 1606, 1776, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1618, 1776, 1618, 1776, 1618, 1618, 1776, 1776, 1776, 1618, 1776, 1776, 1618, 1776, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 942, 1776, 942, 1776, 942, 942, 1776, 942, 942, 942, 942, 1776, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1635, 1776, 1635, 1776, 1635, 1635, 1776, 1635, 1635, 1635, 1635, 1776, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1644, 1776, 1644, 1776, 1644, 1644, 1776, 1644, 1644, 1644, 1644, 1776, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1652, 1776, 1652, 1776, 1652, 1652, 1776, 1652, 1652, 1652, 1652, 1776, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1683, 1683, 1683, 1683, 1683, 1776, 1683, 1683, 1683, 1776, 1776, 1683, 1683, 1776, 1776, 1683, 1683, 1776, 1683, 1776, 1776, 1776, 1683, 1776, 1776, 1776, 1683, 1690, 1690, 1690, 1690, 1690, 1776, 1690, 1690, 1690, 1776, 1776, 1690, 1690, 1776, 1776, 1690, 1690, 1776, 1690, 1776, 1776, 1776, 1690, 1776, 1776, 1776, 1690, 1697, 1697, 1697, 1697, 1697, 1776, 1697, 1697, 1697, 1776, 1776, 1697, 1697, 1776, 1776, 1697, 1697, 1776, 1697, 1776, 1776, 1776, 1697, 1776, 1776, 1776, 1697, 1704, 1704, 1704, 1704, 1704, 1776, 1704, 1704, 1704, 1776, 1776, 1704, 1704, 1776, 1776, 1704, 1704, 1776, 1704, 1776, 1776, 1776, 1704, 1776, 1776, 1776, 1704, 1710, 1710, 1710, 1710, 1710, 1776, 1710, 1710, 1710, 1776, 1776, 1710, 1710, 1776, 1776, 1710, 1710, 1776, 1710, 1776, 1776, 1776, 1710, 1776, 1776, 1776, 1710, 1750, 1750, 1750, 1750, 1750, 1776, 1750, 1750, 1750, 1776, 1776, 1750, 1750, 1776, 1776, 1750, 1750, 1776, 1750, 1776, 1776, 1776, 1750, 1776, 1776, 1776, 1750, 1758, 1758, 1758, 1758, 1758, 1776, 1758, 1758, 1758, 1776, 1776, 1758, 1758, 1776, 1776, 1758, 1758, 1776, 1758, 1776, 1776, 1776, 1758, 1776, 1776, 1776, 1758, 33, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776 } ; static const flex_int16_t yy_chk[14242] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 11, 11, 12, 12, 38, 42, 145, 38, 42, 145, 38, 42, 57, 0, 57, 38, 42, 44, 95, 1, 44, 95, 2, 121, 121, 121, 38, 42, 0, 44, 52, 44, 44, 52, 44, 44, 44, 44, 51, 0, 51, 51, 51, 51, 77, 77, 0, 52, 52, 52, 52, 73, 73, 73, 73, 52, 138, 138, 77, 95, 77, 77, 77, 77, 1360, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9, 9, 34, 34, 34, 9, 444, 9, 9, 9, 9, 444, 9, 9, 9, 39, 1361, 39, 39, 39, 143, 143, 40, 9, 40, 40, 40, 41, 1367, 41, 41, 41, 132, 153, 135, 132, 153, 135, 9, 9, 9, 134, 134, 134, 134, 108, 1368, 132, 108, 13, 13, 13, 13, 1369, 13, 14, 14, 14, 14, 135, 14, 21, 21, 21, 21, 194, 21, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 174, 174, 174, 10, 1376, 10, 10, 10, 10, 108, 10, 10, 10, 13, 142, 142, 183, 183, 183, 14, 139, 10, 1377, 139, 54, 21, 54, 194, 54, 54, 54, 54, 157, 157, 157, 157, 10, 10, 10, 142, 405, 54, 13, 13, 13, 13, 13, 1378, 14, 14, 14, 14, 14, 1379, 21, 21, 21, 21, 21, 405, 54, 139, 187, 187, 1380, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 17, 17, 17, 17, 160, 160, 160, 160, 1381, 22, 22, 22, 22, 1382, 22, 29, 29, 1383, 161, 29, 30, 30, 29, 200, 30, 200, 17, 30, 67, 334, 334, 67, 74, 161, 74, 1384, 74, 74, 74, 74, 67, 17, 67, 67, 17, 67, 67, 67, 67, 74, 22, 227, 161, 229, 227, 29, 229, 1385, 48, 175, 30, 175, 175, 175, 48, 233, 1386, 233, 74, 48, 17, 17, 17, 17, 17, 18, 18, 18, 18, 22, 22, 22, 22, 22, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 48, 238, 1387, 48, 238, 48, 337, 18, 136, 337, 136, 68, 136, 136, 136, 136, 1388, 48, 349, 349, 68, 75, 18, 1389, 48, 18, 68, 1394, 90, 90, 75, 68, 278, 278, 278, 176, 75, 176, 176, 176, 352, 75, 90, 352, 90, 90, 90, 90, 68, 382, 382, 18, 18, 18, 18, 18, 19, 198, 75, 19, 1395, 198, 19, 198, 19, 19, 198, 198, 19, 19, 19, 19, 19, 19, 19, 19, 19, 68, 68, 68, 1396, 162, 19, 162, 162, 162, 162, 75, 75, 75, 177, 1397, 177, 177, 177, 365, 162, 19, 76, 19, 23, 23, 23, 23, 76, 82, 76, 365, 82, 76, 76, 76, 76, 76, 365, 162, 1398, 82, 83, 82, 82, 1399, 82, 82, 82, 82, 23, 83, 86, 180, 1400, 86, 180, 83, 392, 180, 239, 239, 83, 239, 180, 23, 723, 86, 23, 86, 86, 86, 86, 392, 723, 180, 87, 86, 87, 83, 87, 87, 87, 87, 224, 224, 224, 224, 76, 76, 76, 439, 392, 87, 23, 23, 23, 23, 23, 24, 24, 24, 24, 184, 439, 184, 184, 184, 83, 83, 83, 1407, 87, 88, 185, 202, 185, 185, 185, 375, 186, 375, 88, 186, 372, 24, 186, 372, 88, 408, 408, 186, 189, 88, 189, 189, 189, 189, 1408, 372, 24, 89, 186, 24, 205, 188, 1409, 89, 188, 89, 88, 1410, 89, 89, 89, 89, 89, 188, 384, 188, 188, 384, 188, 188, 188, 188, 202, 202, 202, 24, 24, 24, 24, 24, 25, 25, 25, 25, 205, 88, 88, 88, 25, 199, 386, 199, 1411, 386, 199, 199, 199, 25, 25, 25, 25, 205, 205, 205, 318, 318, 318, 25, 25, 25, 25, 410, 410, 89, 89, 89, 207, 430, 190, 430, 209, 190, 362, 362, 362, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 190, 190, 190, 190, 26, 241, 241, 241, 190, 207, 241, 420, 420, 26, 26, 26, 26, 209, 171, 290, 290, 171, 290, 26, 26, 26, 26, 338, 338, 171, 338, 1415, 207, 207, 207, 421, 209, 209, 209, 421, 421, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 1416, 27, 27, 171, 27, 27, 27, 27, 171, 27, 27, 1417, 171, 27, 27, 27, 27, 27, 27, 171, 333, 1422, 171, 333, 171, 171, 191, 660, 191, 660, 191, 191, 191, 191, 353, 353, 27, 353, 27, 27, 341, 341, 341, 191, 1423, 341, 27, 216, 225, 225, 225, 225, 211, 27, 236, 236, 236, 236, 27, 204, 1424, 333, 191, 27, 27, 27, 28, 28, 28, 28, 1425, 28, 28, 217, 28, 28, 28, 28, 1426, 28, 28, 211, 1430, 28, 28, 28, 28, 28, 28, 216, 1431, 133, 1432, 204, 1433, 204, 1434, 133, 216, 216, 216, 217, 133, 211, 211, 211, 28, 1438, 28, 28, 204, 204, 204, 230, 719, 719, 28, 230, 230, 230, 230, 994, 994, 28, 217, 217, 217, 133, 28, 1439, 133, 1440, 133, 28, 28, 28, 49, 1442, 348, 49, 49, 348, 389, 49, 133, 389, 411, 49, 49, 411, 49, 133, 49, 49, 49, 49, 49, 49, 1443, 49, 49, 49, 1444, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 1445, 49, 1446, 348, 208, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 441, 381, 49, 441, 381, 49, 49, 49, 59, 59, 59, 208, 208, 208, 226, 1447, 226, 1448, 226, 226, 226, 226, 1449, 206, 59, 59, 59, 1452, 208, 208, 208, 226, 234, 234, 234, 234, 432, 234, 234, 234, 234, 210, 381, 432, 212, 373, 1453, 206, 373, 432, 226, 1454, 59, 59, 206, 220, 59, 59, 995, 995, 206, 355, 355, 355, 59, 210, 355, 59, 212, 59, 373, 59, 59, 69, 206, 206, 206, 1455, 214, 69, 252, 252, 252, 252, 69, 69, 69, 69, 69, 69, 69, 220, 210, 210, 210, 212, 212, 212, 254, 213, 69, 69, 69, 69, 69, 69, 220, 220, 220, 69, 1456, 1457, 69, 254, 69, 214, 215, 248, 248, 248, 248, 219, 1458, 213, 218, 248, 69, 1459, 1460, 214, 214, 214, 1461, 69, 71, 247, 213, 247, 247, 247, 247, 385, 385, 71, 385, 71, 71, 71, 71, 71, 213, 213, 213, 1462, 71, 215, 218, 1463, 215, 482, 219, 218, 482, 1464, 254, 254, 254, 215, 215, 215, 1465, 71, 219, 219, 219, 218, 218, 218, 268, 268, 268, 268, 295, 1470, 295, 295, 295, 295, 228, 250, 228, 1471, 228, 228, 228, 228, 491, 1472, 250, 491, 71, 71, 71, 85, 250, 228, 422, 422, 422, 250, 665, 665, 85, 665, 85, 85, 85, 85, 85, 300, 300, 300, 300, 85, 228, 232, 250, 232, 1473, 232, 232, 232, 232, 246, 1474, 407, 246, 407, 407, 407, 85, 666, 232, 672, 666, 246, 672, 246, 246, 1475, 246, 246, 246, 246, 1476, 250, 250, 250, 272, 1483, 1484, 232, 272, 272, 272, 272, 434, 434, 434, 85, 85, 85, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 112, 112, 112, 1485, 112, 1486, 249, 112, 249, 1487, 249, 249, 249, 249, 259, 251, 112, 112, 112, 294, 1491, 426, 294, 249, 251, 259, 259, 259, 259, 1492, 251, 294, 259, 294, 294, 251, 294, 294, 294, 294, 112, 1493, 249, 112, 112, 112, 1498, 1499, 112, 112, 671, 671, 251, 671, 302, 1500, 112, 690, 690, 112, 690, 112, 1501, 112, 112, 122, 122, 122, 122, 302, 1502, 253, 426, 426, 426, 122, 122, 122, 122, 324, 253, 251, 251, 251, 1506, 1507, 253, 308, 308, 308, 308, 253, 1508, 122, 122, 122, 122, 122, 122, 129, 691, 129, 129, 691, 324, 129, 129, 129, 253, 255, 129, 129, 129, 129, 726, 1509, 324, 726, 255, 129, 302, 302, 302, 324, 255, 367, 367, 367, 367, 255, 707, 1510, 260, 129, 707, 707, 129, 253, 253, 253, 1514, 260, 368, 368, 368, 368, 255, 260, 275, 275, 275, 275, 260, 275, 275, 275, 275, 517, 517, 517, 129, 1515, 129, 130, 130, 130, 275, 130, 1516, 260, 130, 378, 378, 378, 378, 255, 255, 255, 423, 130, 130, 130, 423, 423, 423, 275, 312, 1518, 130, 1519, 312, 312, 312, 312, 1520, 276, 1521, 1522, 260, 260, 260, 447, 1523, 130, 276, 1524, 130, 130, 130, 1525, 276, 130, 130, 1528, 277, 276, 492, 492, 492, 130, 1532, 492, 130, 277, 130, 458, 130, 130, 163, 277, 1533, 163, 276, 163, 277, 447, 163, 163, 163, 163, 296, 163, 1534, 296, 394, 394, 394, 394, 1536, 163, 1538, 277, 447, 447, 447, 296, 1540, 296, 296, 296, 296, 276, 276, 276, 1541, 296, 458, 374, 163, 374, 163, 163, 374, 374, 374, 1542, 458, 458, 458, 1543, 277, 277, 277, 376, 1548, 376, 1549, 376, 376, 376, 376, 474, 474, 474, 474, 163, 163, 163, 203, 203, 203, 203, 203, 203, 203, 1550, 203, 1556, 203, 203, 203, 203, 203, 203, 203, 203, 203, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 1557, 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, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 269, 393, 1558, 393, 393, 393, 393, 269, 1577, 269, 1578, 269, 269, 269, 269, 269, 393, 1579, 708, 279, 269, 449, 708, 708, 269, 377, 1581, 1004, 279, 377, 377, 377, 377, 283, 279, 393, 1004, 269, 1004, 279, 291, 1004, 283, 269, 488, 488, 488, 488, 283, 291, 539, 539, 539, 283, 1582, 291, 279, 379, 449, 379, 291, 379, 379, 379, 379, 1583, 269, 269, 269, 271, 283, 1584, 449, 449, 449, 1586, 271, 291, 271, 1587, 271, 271, 271, 271, 271, 279, 279, 279, 1592, 271, 395, 391, 395, 271, 1593, 395, 395, 395, 395, 283, 283, 283, 391, 391, 391, 391, 291, 291, 291, 391, 413, 1594, 271, 1595, 413, 413, 413, 413, 489, 1596, 489, 489, 489, 489, 370, 549, 549, 549, 370, 370, 370, 370, 1597, 1601, 370, 271, 271, 271, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 370, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 285, 477, 559, 559, 559, 477, 477, 477, 477, 285, 1602, 285, 285, 285, 285, 285, 1603, 297, 298, 297, 285, 297, 297, 297, 297, 1604, 299, 298, 1605, 414, 414, 414, 414, 298, 297, 299, 301, 285, 298, 303, 733, 299, 414, 733, 1609, 301, 299, 1610, 303, 1611, 733, 301, 1612, 297, 303, 298, 301, 1613, 1614, 303, 307, 414, 1615, 299, 1616, 1617, 285, 285, 285, 307, 1619, 1620, 451, 301, 1621, 307, 303, 564, 564, 564, 307, 448, 1622, 1623, 298, 298, 298, 490, 490, 490, 490, 1624, 299, 299, 299, 1625, 396, 307, 396, 396, 396, 396, 301, 301, 301, 303, 303, 303, 448, 451, 1626, 396, 1627, 315, 315, 315, 315, 1628, 315, 315, 315, 315, 452, 451, 451, 451, 307, 307, 307, 309, 396, 315, 448, 448, 448, 1629, 309, 1630, 309, 1632, 309, 309, 309, 309, 309, 601, 601, 601, 316, 309, 315, 1633, 1638, 309, 1639, 1640, 452, 316, 496, 496, 496, 496, 317, 316, 1641, 1642, 309, 1643, 316, 319, 1647, 317, 309, 452, 452, 452, 1648, 317, 319, 1649, 450, 1650, 317, 1651, 319, 316, 416, 454, 416, 319, 1655, 416, 416, 416, 416, 309, 309, 309, 311, 317, 461, 621, 621, 621, 455, 311, 319, 311, 457, 311, 311, 311, 311, 311, 316, 316, 316, 1656, 311, 454, 450, 450, 311, 508, 508, 508, 508, 454, 317, 317, 317, 450, 450, 450, 1657, 319, 319, 319, 454, 454, 454, 311, 455, 1658, 457, 461, 1659, 457, 631, 631, 631, 461, 461, 461, 1660, 455, 455, 455, 1016, 457, 457, 457, 1016, 1016, 311, 311, 311, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1661, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 323, 453, 1662, 1663, 330, 1665, 658, 456, 658, 323, 460, 658, 658, 330, 1666, 323, 641, 641, 641, 330, 323, 415, 462, 415, 330, 415, 415, 415, 415, 1667, 453, 646, 646, 646, 456, 1668, 1669, 323, 415, 497, 463, 330, 1670, 497, 497, 497, 497, 465, 1671, 462, 460, 1672, 453, 453, 453, 1673, 1675, 415, 456, 456, 456, 460, 460, 460, 466, 1677, 323, 323, 323, 325, 330, 330, 330, 462, 462, 462, 463, 468, 325, 1679, 325, 325, 325, 325, 325, 1686, 1687, 464, 465, 325, 464, 463, 463, 463, 467, 1688, 1693, 464, 465, 465, 465, 471, 766, 1694, 466, 766, 325, 1695, 464, 1700, 1701, 470, 766, 468, 1702, 466, 466, 466, 481, 1707, 481, 1708, 1709, 481, 481, 481, 481, 1713, 468, 468, 468, 1714, 467, 1715, 1718, 325, 325, 325, 363, 363, 363, 363, 471, 469, 1719, 467, 467, 467, 363, 363, 363, 363, 471, 471, 471, 1020, 470, 534, 1020, 464, 464, 464, 470, 470, 470, 1020, 363, 363, 363, 363, 363, 363, 397, 1720, 1721, 397, 1722, 397, 469, 1723, 397, 397, 397, 397, 476, 397, 476, 1724, 476, 476, 476, 476, 1725, 397, 469, 469, 469, 1726, 1727, 546, 479, 476, 479, 1728, 479, 479, 479, 479, 534, 534, 534, 1729, 397, 1730, 397, 397, 487, 479, 487, 1731, 476, 487, 487, 487, 487, 1732, 483, 1733, 483, 1734, 483, 483, 483, 483, 1021, 1735, 479, 1021, 540, 397, 397, 397, 425, 483, 1021, 1736, 425, 425, 425, 425, 546, 546, 546, 540, 1737, 1738, 425, 425, 425, 425, 1739, 500, 483, 500, 1740, 1741, 500, 500, 500, 500, 550, 682, 682, 682, 425, 425, 425, 425, 425, 425, 459, 459, 459, 459, 459, 550, 459, 459, 1742, 459, 459, 459, 1743, 485, 459, 485, 459, 485, 485, 485, 485, 1744, 459, 459, 540, 540, 540, 459, 1745, 499, 485, 499, 1753, 499, 499, 499, 499, 580, 580, 580, 580, 459, 1754, 459, 459, 459, 499, 536, 1746, 485, 1755, 536, 536, 536, 536, 581, 550, 550, 550, 581, 581, 581, 581, 1761, 1762, 499, 1763, 1746, 459, 459, 1764, 459, 459, 459, 459, 459, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 1765, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 498, 592, 592, 592, 592, 1766, 1767, 501, 1768, 1769, 502, 498, 498, 498, 498, 498, 501, 503, 1031, 502, 498, 1031, 501, 1770, 498, 502, 503, 501, 1031, 1771, 502, 1359, 503, 504, 618, 1350, 1349, 503, 618, 618, 618, 618, 504, 498, 501, 1348, 683, 502, 504, 509, 683, 683, 683, 504, 503, 584, 515, 584, 509, 616, 584, 584, 584, 584, 509, 1338, 498, 498, 498, 509, 504, 515, 510, 501, 501, 501, 502, 502, 502, 622, 1337, 510, 511, 503, 503, 503, 509, 510, 537, 1336, 1331, 511, 510, 515, 622, 1330, 1329, 511, 525, 504, 504, 504, 511, 537, 1320, 526, 1318, 525, 537, 510, 616, 616, 616, 525, 526, 509, 509, 509, 525, 511, 526, 527, 515, 515, 515, 526, 533, 533, 533, 533, 527, 533, 533, 533, 533, 525, 527, 1317, 510, 510, 510, 527, 526, 1315, 533, 622, 622, 622, 511, 511, 511, 701, 701, 701, 537, 537, 537, 1313, 527, 677, 677, 677, 677, 533, 525, 525, 525, 1044, 628, 1312, 1044, 526, 526, 526, 541, 1310, 541, 1044, 1309, 541, 541, 541, 541, 541, 811, 811, 811, 527, 527, 527, 531, 667, 667, 667, 599, 1308, 667, 531, 1307, 531, 1304, 531, 531, 531, 531, 531, 815, 815, 815, 599, 531, 545, 1303, 545, 531, 545, 545, 545, 545, 628, 628, 628, 1302, 632, 673, 673, 673, 1301, 545, 673, 1300, 599, 1299, 531, 541, 541, 541, 551, 632, 551, 1291, 1290, 551, 551, 551, 551, 551, 545, 555, 1289, 555, 1288, 555, 555, 555, 555, 531, 531, 531, 532, 599, 599, 599, 1287, 1286, 555, 532, 1285, 532, 1284, 532, 532, 532, 532, 532, 659, 1283, 659, 1282, 532, 659, 659, 659, 532, 555, 832, 832, 832, 619, 632, 632, 632, 557, 1281, 1280, 558, 532, 551, 551, 551, 1805, 557, 532, 619, 558, 1805, 1278, 557, 619, 1805, 558, 1276, 557, 1275, 583, 558, 583, 1274, 583, 583, 583, 583, 836, 836, 836, 532, 532, 532, 538, 557, 1270, 583, 558, 1269, 1268, 538, 1261, 538, 1260, 538, 538, 538, 538, 538, 689, 689, 689, 689, 538, 1259, 583, 1249, 538, 1247, 619, 619, 619, 1246, 557, 557, 557, 558, 558, 558, 560, 538, 678, 695, 695, 695, 695, 538, 1245, 560, 1244, 678, 1243, 678, 570, 560, 678, 678, 678, 678, 560, 1240, 1239, 570, 696, 696, 696, 696, 1238, 570, 538, 538, 538, 548, 570, 1237, 1236, 560, 1235, 1234, 548, 571, 548, 1230, 548, 548, 548, 548, 548, 1046, 571, 570, 1046, 548, 1229, 1228, 571, 548, 687, 1046, 687, 571, 687, 687, 687, 687, 560, 560, 560, 1226, 548, 778, 778, 778, 778, 572, 548, 1225, 571, 1224, 570, 570, 570, 585, 572, 791, 791, 791, 791, 1223, 572, 1222, 585, 1220, 1219, 572, 1218, 1217, 585, 548, 548, 548, 556, 585, 841, 841, 841, 571, 571, 571, 586, 556, 572, 556, 556, 556, 556, 556, 679, 586, 585, 1048, 556, 1216, 1048, 586, 1215, 679, 679, 679, 586, 1048, 679, 679, 679, 679, 1214, 587, 1213, 556, 1212, 572, 572, 572, 588, 1059, 587, 586, 1059, 585, 585, 585, 587, 588, 1211, 1059, 627, 587, 627, 588, 627, 627, 627, 627, 588, 846, 846, 846, 556, 556, 556, 576, 1210, 627, 587, 1208, 586, 586, 586, 593, 576, 588, 576, 576, 576, 576, 576, 1085, 593, 1207, 1085, 576, 627, 1206, 593, 1205, 710, 1085, 1204, 593, 710, 710, 710, 587, 587, 587, 594, 1203, 576, 1202, 588, 588, 588, 595, 711, 594, 593, 1201, 711, 711, 711, 594, 595, 1200, 1193, 637, 594, 637, 595, 637, 637, 637, 637, 595, 1192, 831, 1191, 576, 576, 576, 582, 1190, 637, 594, 1189, 593, 593, 593, 607, 1188, 595, 582, 582, 582, 582, 582, 608, 607, 838, 1306, 582, 637, 1306, 607, 582, 608, 1187, 1314, 607, 1306, 1314, 608, 594, 594, 594, 609, 608, 1314, 1186, 595, 595, 595, 639, 582, 609, 607, 831, 831, 831, 1185, 609, 639, 1184, 608, 688, 609, 688, 639, 688, 688, 688, 688, 639, 873, 873, 873, 582, 582, 582, 838, 838, 838, 609, 1183, 607, 607, 607, 1182, 1180, 639, 1178, 1177, 608, 608, 608, 915, 915, 915, 615, 615, 615, 615, 1176, 615, 615, 615, 615, 840, 840, 840, 840, 609, 609, 609, 613, 839, 615, 1172, 639, 639, 639, 613, 1171, 613, 1170, 613, 613, 613, 613, 613, 895, 895, 895, 895, 613, 615, 1163, 1162, 613, 623, 1161, 623, 1151, 1149, 623, 623, 623, 623, 623, 919, 919, 919, 1148, 633, 1147, 633, 640, 613, 633, 633, 633, 633, 633, 1146, 1145, 640, 839, 839, 839, 642, 1142, 640, 694, 694, 694, 694, 640, 1141, 642, 1140, 613, 613, 613, 614, 642, 694, 936, 936, 936, 642, 614, 1139, 614, 640, 614, 614, 614, 614, 614, 623, 623, 623, 1138, 614, 694, 935, 642, 614, 1137, 741, 1136, 1132, 741, 633, 633, 633, 1131, 1130, 652, 741, 614, 1128, 640, 640, 640, 653, 614, 652, 1127, 1126, 741, 809, 1125, 652, 653, 642, 642, 642, 652, 786, 653, 786, 786, 786, 786, 653, 809, 1124, 1122, 614, 614, 614, 620, 1121, 1120, 652, 935, 935, 935, 620, 1119, 620, 653, 620, 620, 620, 620, 620, 809, 940, 940, 940, 620, 703, 942, 703, 620, 703, 703, 703, 703, 741, 741, 741, 652, 652, 652, 654, 1118, 620, 703, 653, 653, 653, 1117, 620, 654, 809, 809, 809, 1116, 1115, 654, 945, 945, 945, 704, 654, 704, 703, 704, 704, 704, 704, 944, 944, 944, 944, 620, 620, 620, 630, 1114, 704, 654, 942, 942, 942, 630, 1113, 630, 1112, 630, 630, 630, 630, 630, 950, 950, 950, 1110, 630, 704, 1801, 706, 630, 706, 1801, 706, 706, 706, 706, 1801, 654, 654, 654, 1801, 1109, 630, 1108, 705, 705, 705, 705, 630, 705, 705, 705, 705, 1107, 742, 1106, 1326, 742, 743, 1326, 1324, 743, 1105, 1324, 742, 1104, 1326, 943, 743, 869, 1324, 630, 630, 630, 638, 742, 977, 977, 977, 743, 996, 996, 996, 638, 869, 638, 638, 638, 638, 638, 1103, 1102, 745, 973, 638, 745, 744, 1082, 1081, 744, 748, 1080, 745, 748, 746, 743, 744, 746, 973, 1324, 748, 638, 747, 745, 746, 747, 1072, 744, 943, 943, 943, 748, 747, 1071, 1070, 746, 742, 742, 742, 1826, 743, 743, 743, 747, 1826, 869, 869, 869, 1826, 745, 638, 638, 638, 661, 779, 744, 779, 1045, 779, 779, 779, 779, 661, 748, 661, 661, 661, 661, 661, 973, 973, 973, 746, 661, 745, 745, 745, 747, 744, 744, 744, 1043, 748, 748, 748, 1042, 746, 746, 746, 1041, 661, 997, 997, 997, 747, 747, 747, 1093, 1093, 1093, 1093, 782, 749, 782, 1040, 749, 782, 782, 782, 782, 1039, 784, 749, 784, 1052, 784, 784, 784, 784, 661, 661, 661, 685, 749, 1038, 1037, 685, 685, 685, 685, 750, 1328, 1036, 750, 1328, 1035, 685, 685, 685, 685, 750, 1328, 860, 751, 860, 1052, 751, 860, 860, 860, 860, 750, 749, 751, 685, 685, 685, 685, 685, 685, 713, 713, 713, 713, 751, 1052, 1052, 1052, 1034, 810, 713, 713, 713, 713, 749, 749, 749, 752, 1328, 750, 752, 1111, 1111, 1111, 810, 1033, 1032, 752, 713, 713, 713, 713, 713, 713, 850, 1030, 1029, 753, 752, 1028, 753, 1027, 750, 750, 750, 751, 810, 753, 1026, 850, 913, 754, 1025, 1024, 754, 751, 751, 751, 753, 757, 1023, 754, 757, 755, 1332, 913, 755, 1332, 1051, 757, 1022, 850, 754, 755, 1332, 810, 810, 810, 1019, 1009, 757, 1001, 753, 993, 755, 762, 992, 913, 762, 752, 752, 752, 991, 769, 990, 762, 769, 1123, 1123, 1123, 850, 850, 850, 769, 989, 985, 762, 984, 1051, 753, 753, 753, 754, 1332, 769, 755, 913, 913, 913, 1051, 1051, 1051, 1006, 754, 754, 754, 1006, 1006, 1006, 983, 982, 757, 757, 757, 981, 755, 755, 755, 758, 758, 758, 758, 758, 758, 758, 769, 758, 762, 758, 758, 758, 758, 758, 758, 758, 758, 758, 762, 762, 762, 763, 980, 979, 763, 978, 769, 769, 769, 976, 776, 763, 776, 975, 776, 776, 776, 776, 1129, 1129, 1129, 765, 763, 974, 765, 961, 960, 776, 1135, 1135, 1135, 765, 957, 771, 1334, 956, 771, 1334, 768, 955, 953, 768, 765, 771, 1334, 952, 776, 763, 768, 1053, 773, 1017, 951, 773, 771, 1017, 1017, 1017, 949, 768, 773, 785, 948, 785, 947, 785, 785, 785, 785, 939, 765, 773, 938, 763, 763, 763, 764, 764, 764, 764, 764, 937, 764, 764, 771, 764, 764, 764, 933, 1053, 764, 932, 764, 765, 765, 765, 931, 768, 764, 764, 1053, 1053, 1053, 764, 1827, 771, 771, 771, 930, 1827, 768, 768, 768, 1827, 929, 772, 925, 764, 772, 764, 764, 764, 773, 773, 773, 772, 854, 854, 854, 854, 854, 924, 764, 964, 923, 964, 772, 1836, 964, 964, 964, 964, 1836, 922, 764, 764, 1836, 764, 764, 764, 764, 764, 770, 770, 770, 770, 770, 774, 770, 770, 774, 770, 770, 770, 772, 921, 770, 774, 770, 1095, 1095, 1095, 1095, 920, 770, 770, 918, 917, 774, 770, 916, 854, 854, 854, 1181, 1181, 1181, 772, 772, 772, 1209, 1209, 1209, 770, 912, 770, 770, 770, 1002, 777, 911, 777, 770, 777, 777, 777, 777, 1002, 910, 1002, 774, 909, 1002, 1002, 1002, 1002, 777, 1221, 1221, 1221, 770, 770, 908, 770, 770, 770, 770, 770, 904, 774, 774, 774, 1227, 1227, 1227, 777, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 903, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 781, 902, 781, 901, 781, 781, 781, 781, 783, 900, 783, 891, 783, 783, 783, 783, 788, 781, 788, 1055, 788, 788, 788, 788, 1008, 783, 1008, 889, 1008, 1008, 1008, 1008, 790, 788, 790, 888, 781, 790, 790, 790, 790, 790, 887, 886, 783, 885, 1050, 881, 914, 1233, 1233, 1233, 788, 789, 1090, 1055, 1090, 1090, 1090, 1090, 789, 880, 789, 914, 789, 789, 789, 789, 789, 792, 1055, 1055, 1055, 789, 879, 1063, 954, 789, 792, 1050, 792, 792, 792, 792, 792, 914, 793, 878, 877, 792, 789, 954, 790, 790, 790, 793, 789, 1050, 1050, 1050, 876, 793, 794, 1063, 875, 874, 793, 872, 871, 795, 870, 794, 857, 954, 914, 914, 914, 794, 795, 789, 789, 789, 794, 793, 795, 801, 1063, 1063, 1063, 795, 1154, 1154, 1154, 1154, 801, 792, 792, 792, 856, 794, 801, 802, 954, 954, 954, 801, 795, 1279, 1279, 1279, 802, 803, 793, 793, 793, 1339, 802, 853, 1339, 852, 803, 802, 801, 851, 822, 1339, 803, 849, 794, 794, 794, 803, 848, 822, 823, 795, 795, 795, 802, 822, 1005, 1005, 847, 823, 822, 1005, 845, 844, 803, 823, 824, 801, 801, 801, 823, 1437, 1437, 1437, 1005, 824, 843, 822, 1058, 1341, 835, 824, 1341, 802, 802, 802, 824, 823, 1005, 1341, 834, 1005, 833, 803, 803, 803, 862, 862, 862, 862, 862, 829, 828, 824, 827, 855, 822, 822, 822, 855, 855, 855, 855, 1062, 826, 1005, 823, 823, 823, 842, 825, 842, 855, 1058, 842, 842, 842, 842, 842, 1058, 1058, 1058, 824, 824, 824, 830, 821, 1061, 1441, 1441, 1441, 855, 830, 820, 830, 819, 830, 830, 830, 830, 830, 862, 862, 862, 1062, 830, 859, 818, 859, 830, 859, 859, 859, 859, 1062, 1062, 1062, 1513, 1513, 1513, 863, 1061, 830, 859, 863, 863, 863, 863, 830, 842, 842, 842, 1517, 1517, 1517, 864, 817, 863, 1061, 1061, 1061, 866, 859, 866, 864, 866, 866, 866, 866, 816, 864, 830, 830, 830, 837, 864, 863, 814, 866, 813, 812, 837, 808, 837, 807, 837, 837, 837, 837, 837, 1343, 806, 864, 1343, 837, 805, 804, 866, 837, 892, 1343, 892, 800, 892, 892, 892, 892, 1014, 1014, 1014, 1014, 1252, 1252, 1252, 1252, 1003, 892, 837, 799, 798, 1014, 864, 864, 864, 1003, 797, 1003, 796, 787, 1003, 1003, 1003, 1003, 775, 761, 892, 1618, 1618, 1618, 1014, 837, 837, 837, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 760, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 865, 1664, 1664, 1664, 868, 1842, 759, 882, 1346, 865, 1842, 1346, 1067, 868, 1842, 865, 882, 740, 1346, 868, 865, 739, 882, 738, 868, 883, 1094, 882, 1094, 1094, 1094, 1094, 1342, 737, 883, 1342, 1344, 865, 736, 1344, 883, 868, 1342, 735, 882, 883, 1344, 894, 734, 894, 732, 731, 894, 894, 894, 894, 894, 958, 958, 958, 958, 958, 883, 1067, 1067, 1067, 865, 865, 865, 867, 868, 868, 868, 882, 882, 882, 730, 729, 867, 884, 867, 867, 867, 867, 867, 727, 725, 1342, 884, 867, 1065, 883, 883, 883, 884, 724, 1344, 722, 959, 884, 721, 720, 959, 959, 959, 959, 867, 894, 894, 894, 896, 718, 958, 958, 958, 959, 884, 1351, 1065, 896, 1351, 896, 896, 896, 896, 896, 717, 1351, 1069, 897, 896, 716, 715, 714, 959, 867, 867, 867, 897, 712, 709, 1065, 1065, 1065, 897, 884, 884, 884, 890, 897, 699, 698, 1069, 697, 681, 898, 676, 890, 675, 890, 890, 890, 890, 890, 898, 670, 897, 963, 890, 963, 898, 963, 963, 963, 963, 898, 896, 896, 896, 1069, 1069, 1069, 669, 1352, 963, 890, 1352, 664, 663, 662, 899, 1353, 898, 1352, 1353, 897, 897, 897, 905, 899, 657, 1353, 656, 963, 655, 899, 651, 905, 650, 1357, 899, 649, 1357, 905, 890, 890, 890, 893, 905, 1357, 648, 898, 898, 898, 893, 906, 893, 899, 893, 893, 893, 893, 893, 907, 906, 905, 1355, 893, 1889, 1355, 906, 893, 907, 1889, 1352, 906, 1355, 1889, 907, 647, 645, 644, 926, 907, 893, 643, 899, 899, 899, 927, 893, 926, 906, 636, 905, 905, 905, 926, 927, 635, 907, 967, 926, 634, 927, 967, 967, 967, 967, 927, 629, 626, 625, 893, 893, 893, 624, 1362, 967, 926, 1362, 906, 906, 906, 928, 1077, 927, 1362, 1355, 907, 907, 907, 1363, 928, 617, 1363, 1845, 967, 1845, 928, 612, 1845, 1363, 1365, 928, 1845, 1365, 611, 926, 926, 926, 610, 606, 1365, 605, 927, 927, 927, 946, 604, 946, 928, 603, 946, 946, 946, 946, 946, 966, 966, 966, 966, 966, 602, 968, 600, 1077, 1077, 1077, 1362, 970, 1363, 970, 968, 970, 970, 970, 970, 598, 968, 928, 928, 928, 934, 968, 597, 596, 970, 591, 590, 934, 589, 934, 579, 934, 934, 934, 934, 934, 578, 577, 968, 969, 934, 575, 1074, 970, 934, 946, 946, 946, 969, 574, 966, 966, 966, 573, 969, 972, 1885, 934, 1885, 969, 569, 1885, 986, 934, 972, 1885, 568, 968, 968, 968, 972, 986, 567, 1079, 566, 972, 969, 986, 1371, 1371, 1371, 1371, 986, 565, 1074, 1083, 934, 934, 934, 941, 563, 562, 972, 1074, 1074, 1074, 941, 1079, 941, 986, 941, 941, 941, 941, 941, 969, 969, 969, 1530, 941, 1015, 1530, 1015, 941, 1015, 1015, 1015, 1015, 1530, 1083, 561, 972, 972, 972, 1079, 1079, 1079, 1015, 986, 986, 986, 1535, 941, 554, 1535, 553, 1083, 1083, 1083, 552, 547, 1535, 1089, 544, 1089, 543, 1015, 1089, 1089, 1089, 1089, 542, 535, 530, 529, 941, 941, 941, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 528, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 971, 522, 521, 1143, 520, 1087, 519, 987, 1546, 971, 988, 971, 971, 971, 971, 971, 987, 518, 1143, 988, 971, 516, 987, 1537, 514, 988, 1537, 987, 1057, 513, 988, 1057, 1073, 1537, 512, 1073, 507, 971, 1057, 1087, 1143, 1886, 1073, 1886, 987, 1539, 1886, 988, 1539, 1057, 1886, 506, 505, 1073, 495, 1539, 1087, 1087, 1087, 1546, 1546, 1546, 1551, 494, 473, 1551, 971, 971, 971, 1143, 1143, 1143, 1551, 987, 987, 987, 988, 988, 988, 1000, 1372, 472, 1372, 446, 1372, 1372, 1372, 1372, 1000, 445, 1000, 1000, 1000, 1000, 1000, 443, 442, 440, 438, 1000, 1057, 1057, 1057, 437, 1073, 1073, 1073, 1088, 1554, 1088, 436, 1088, 1088, 1088, 1088, 1091, 1000, 1091, 435, 1091, 1091, 1091, 1091, 1092, 1088, 1092, 433, 431, 1092, 1092, 1092, 1092, 1091, 1097, 1144, 1097, 429, 1097, 1097, 1097, 1097, 428, 1179, 1088, 427, 1000, 1000, 1000, 1007, 1144, 1097, 1091, 1007, 1007, 1007, 1007, 400, 1179, 399, 1554, 1554, 1554, 1007, 1007, 1007, 1007, 398, 380, 1373, 1097, 1373, 1144, 1373, 1373, 1373, 1373, 359, 358, 346, 1179, 1007, 1007, 1007, 1007, 1007, 1007, 1010, 1010, 345, 1010, 332, 1010, 331, 329, 1010, 1010, 1010, 1010, 328, 1010, 1144, 1144, 1144, 327, 1099, 322, 1892, 1010, 1179, 1179, 1179, 1892, 1100, 1099, 321, 1892, 320, 306, 305, 1099, 1562, 1100, 1560, 1562, 1099, 1101, 1010, 1100, 1010, 1010, 1562, 304, 1100, 1565, 1101, 293, 1565, 1893, 292, 289, 1101, 1099, 1893, 1565, 288, 1101, 1893, 287, 1568, 1100, 284, 1568, 282, 1010, 1010, 1010, 1011, 1011, 1568, 1011, 281, 1011, 1101, 1560, 1011, 1011, 1011, 1011, 280, 1011, 1099, 1099, 1099, 1560, 1560, 1560, 258, 1011, 1100, 1100, 1100, 1134, 257, 1134, 256, 1157, 1134, 1134, 1134, 1134, 1134, 1101, 1101, 1101, 1157, 245, 1011, 1150, 1011, 1011, 1157, 1150, 1150, 1150, 1150, 1157, 1580, 1943, 1580, 1580, 1580, 1580, 1943, 1156, 1150, 244, 1943, 1156, 1156, 1156, 1156, 223, 1157, 1011, 1011, 1011, 1018, 1018, 1018, 1018, 1156, 1241, 222, 1150, 221, 179, 1018, 1018, 1018, 1018, 1564, 1134, 1134, 1134, 169, 167, 1241, 166, 165, 1156, 164, 1157, 1157, 1157, 1018, 1018, 1018, 1018, 1018, 1018, 1054, 1054, 1054, 1054, 1054, 155, 1054, 1054, 1241, 1054, 1054, 1054, 1575, 1195, 1054, 1195, 1054, 1195, 1195, 1195, 1195, 147, 1054, 1054, 141, 1564, 1682, 1054, 137, 1682, 1195, 1564, 1564, 1564, 128, 126, 1682, 1241, 1241, 1241, 125, 1054, 1684, 1054, 1054, 1054, 1153, 1155, 1153, 1195, 1054, 1153, 1153, 1153, 1153, 1153, 1155, 124, 1155, 1155, 1155, 1155, 1155, 1575, 1575, 1575, 119, 1155, 1054, 1054, 116, 1054, 1054, 1054, 1054, 1054, 1056, 1056, 1056, 1056, 1056, 1716, 1056, 1056, 1716, 1056, 1056, 1056, 115, 114, 1056, 1716, 1056, 1684, 1684, 1684, 110, 106, 1056, 1056, 104, 103, 102, 1056, 97, 1248, 1153, 1153, 1153, 1248, 1248, 1248, 1248, 1155, 1155, 1155, 93, 1056, 1691, 1056, 1056, 1056, 1248, 1158, 92, 1165, 1165, 1165, 1165, 1165, 1748, 91, 1158, 1748, 84, 1570, 1756, 81, 1158, 1756, 1748, 1248, 80, 1158, 1056, 1056, 1756, 1056, 1056, 1056, 1056, 1056, 1064, 1064, 1064, 1064, 1064, 79, 1064, 1064, 1158, 1064, 1064, 1064, 1698, 72, 1064, 66, 1064, 1691, 1691, 1691, 65, 64, 1064, 1064, 1570, 50, 46, 1064, 1165, 1165, 1165, 37, 36, 33, 1570, 1570, 1570, 1158, 1158, 1158, 32, 1064, 31, 1064, 1064, 1064, 1159, 0, 0, 0, 0, 1298, 1298, 1298, 1298, 1159, 1298, 1298, 1298, 1298, 0, 1159, 0, 1698, 1698, 1698, 1159, 0, 1064, 1064, 0, 1064, 1064, 1064, 1064, 1064, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1159, 1068, 0, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1075, 1075, 1075, 1075, 1075, 0, 1075, 1075, 0, 1075, 1075, 1075, 1705, 0, 1075, 0, 1075, 1159, 1159, 1159, 0, 0, 1075, 1075, 1831, 1254, 0, 1075, 1831, 1254, 1254, 1254, 1254, 1831, 0, 0, 0, 1831, 0, 0, 0, 1075, 1254, 1075, 1075, 1075, 0, 1160, 0, 0, 0, 0, 0, 1297, 0, 1297, 1160, 1297, 1297, 1297, 1297, 1254, 1160, 1705, 1705, 1705, 0, 1160, 1075, 1075, 1297, 1075, 1075, 1075, 1075, 1075, 1084, 1084, 1084, 1084, 1084, 0, 1084, 1084, 1160, 1084, 1084, 1084, 1711, 1297, 1084, 1164, 1084, 1895, 0, 0, 1895, 0, 1084, 1084, 1164, 1895, 0, 1084, 0, 1895, 1164, 0, 0, 0, 0, 1164, 0, 1160, 1160, 1160, 1166, 1084, 1751, 1084, 1084, 1084, 1759, 1167, 0, 1166, 0, 0, 1164, 0, 0, 1166, 1167, 1884, 0, 0, 1166, 1884, 1167, 1711, 1711, 1711, 1884, 1167, 1084, 1084, 1884, 1084, 1084, 1084, 1084, 1084, 1096, 1166, 0, 0, 0, 1164, 1164, 1164, 1167, 0, 0, 1096, 1096, 1096, 1096, 1096, 0, 1751, 1751, 1751, 1096, 1759, 1759, 1759, 1096, 1169, 0, 0, 0, 0, 1166, 1166, 1166, 1173, 1169, 0, 0, 1167, 1167, 1167, 1169, 1948, 1173, 1096, 0, 1169, 1948, 0, 1173, 0, 1948, 0, 1232, 1173, 1232, 0, 0, 1232, 1232, 1232, 1232, 1232, 1169, 0, 0, 0, 1096, 1096, 1096, 1098, 1173, 1263, 1263, 1263, 1263, 1263, 0, 0, 1098, 0, 1098, 1098, 1098, 1098, 1098, 1949, 0, 0, 1174, 1098, 1949, 1169, 1169, 1169, 1949, 0, 0, 1174, 0, 1173, 1173, 1173, 1175, 1174, 0, 0, 1098, 0, 1174, 0, 1991, 1175, 1232, 1232, 1232, 1991, 0, 1175, 0, 1991, 0, 0, 1175, 0, 1992, 1174, 1263, 1263, 1263, 1992, 0, 0, 0, 1992, 0, 1098, 1098, 1098, 1133, 1175, 0, 0, 0, 0, 0, 1133, 1242, 1133, 0, 1133, 1133, 1133, 1133, 1133, 1174, 1174, 1174, 1197, 1133, 0, 0, 1242, 1133, 0, 1198, 0, 1197, 0, 1175, 1175, 1175, 1199, 1197, 1198, 0, 1133, 0, 1197, 0, 1198, 1199, 1133, 0, 1242, 1198, 0, 1199, 0, 0, 0, 1251, 1199, 1251, 0, 1197, 1251, 1251, 1251, 1251, 1251, 0, 1198, 0, 0, 1133, 1133, 1133, 1168, 1199, 0, 0, 0, 1242, 1242, 1242, 0, 1168, 0, 1168, 1168, 1168, 1168, 1168, 1197, 1197, 1197, 1255, 1168, 0, 0, 1198, 1198, 1198, 0, 0, 1255, 0, 1199, 1199, 1199, 0, 1255, 0, 0, 1168, 1253, 1255, 0, 0, 0, 1251, 1251, 1251, 0, 1253, 0, 1253, 1253, 1253, 1253, 1253, 2045, 1256, 1255, 0, 1253, 2045, 0, 1277, 0, 2045, 1256, 0, 1168, 1168, 1168, 1194, 1256, 0, 0, 0, 0, 1256, 1277, 0, 0, 0, 1194, 1194, 1194, 1194, 1194, 1255, 1255, 1255, 1257, 1194, 2046, 0, 1256, 1194, 0, 2046, 0, 1257, 1277, 2046, 0, 0, 0, 1257, 1253, 1253, 1253, 0, 1257, 0, 0, 1258, 1194, 1392, 1392, 1392, 1392, 1392, 0, 0, 1258, 1256, 1256, 1256, 1262, 1257, 1258, 1277, 1277, 1277, 1435, 1258, 0, 1262, 0, 1194, 1194, 1194, 1196, 1262, 0, 0, 0, 0, 1262, 1435, 0, 1196, 1258, 1196, 1196, 1196, 1196, 1196, 1257, 1257, 1257, 0, 1196, 0, 0, 1262, 0, 0, 1772, 1772, 1772, 1435, 1392, 1392, 1392, 0, 0, 1264, 0, 1196, 0, 1258, 1258, 1258, 1265, 0, 1264, 1772, 1772, 1772, 1772, 0, 1264, 1265, 1262, 1262, 1262, 1264, 0, 1265, 1435, 1435, 1435, 0, 1265, 0, 0, 0, 1196, 1196, 1196, 1231, 0, 0, 1264, 0, 0, 0, 1231, 1267, 1231, 1265, 1231, 1231, 1231, 1231, 1231, 0, 1267, 0, 0, 1231, 0, 0, 1267, 1231, 0, 0, 1271, 1267, 0, 0, 0, 1264, 1264, 1264, 1272, 1271, 1231, 0, 1265, 1265, 1265, 1271, 1231, 1272, 1267, 0, 1271, 0, 0, 1272, 1375, 0, 1375, 0, 1272, 1375, 1375, 1375, 1375, 1375, 0, 0, 0, 1271, 0, 1231, 1231, 1231, 1266, 0, 0, 1272, 1436, 1267, 1267, 1267, 1273, 1266, 0, 1266, 1266, 1266, 1266, 1266, 0, 1273, 0, 1436, 1266, 0, 0, 1273, 1271, 1271, 1271, 0, 1273, 0, 0, 0, 1272, 1272, 1272, 0, 0, 1266, 0, 0, 0, 1436, 1375, 1375, 1375, 1273, 1391, 0, 1391, 0, 0, 1391, 1391, 1391, 1391, 1391, 1393, 0, 0, 0, 1393, 1393, 1393, 1393, 0, 0, 1266, 1266, 1266, 0, 1436, 1436, 1436, 1393, 1273, 1273, 1273, 1292, 1292, 0, 1292, 0, 1292, 0, 0, 1292, 1292, 1292, 1292, 0, 1292, 0, 1393, 0, 0, 0, 0, 1402, 1292, 0, 0, 1402, 1402, 1402, 1402, 0, 1391, 1391, 1391, 1401, 1401, 1401, 1401, 1401, 1402, 0, 0, 1292, 0, 1292, 1292, 0, 0, 1403, 0, 0, 0, 1403, 1403, 1403, 1403, 1573, 0, 1402, 1573, 0, 0, 0, 0, 0, 1403, 1573, 0, 0, 1292, 1292, 1292, 1321, 1321, 1321, 1321, 1321, 1573, 1321, 1321, 0, 1321, 1321, 1321, 1403, 0, 1321, 0, 1321, 1401, 1401, 1401, 0, 0, 1321, 1321, 0, 0, 0, 1321, 0, 0, 0, 1469, 0, 0, 0, 1469, 1469, 1469, 1469, 0, 0, 1321, 0, 1321, 1321, 1321, 1404, 0, 1469, 1418, 1418, 1418, 1418, 1418, 0, 1404, 1573, 1573, 1573, 0, 0, 1404, 0, 0, 0, 0, 1404, 1469, 1321, 1321, 0, 1321, 1321, 1321, 1321, 1321, 1322, 1322, 1322, 1322, 1322, 0, 1322, 1404, 0, 1322, 1322, 1322, 0, 0, 1322, 0, 1322, 0, 0, 0, 0, 0, 1322, 1322, 0, 0, 0, 1322, 1418, 1418, 1418, 0, 0, 0, 0, 0, 1404, 1404, 1404, 0, 0, 1322, 0, 1322, 1405, 1322, 0, 1406, 0, 0, 0, 0, 0, 1405, 0, 0, 1406, 0, 0, 1405, 0, 0, 1406, 0, 1405, 0, 0, 1406, 1322, 1322, 0, 1322, 1322, 1322, 1322, 1322, 1323, 1323, 1323, 1323, 1323, 1405, 1323, 1323, 1406, 1323, 1323, 1323, 0, 1478, 1323, 0, 1323, 1478, 1478, 1478, 1478, 0, 1323, 1323, 0, 0, 0, 1323, 0, 0, 1478, 0, 0, 0, 1405, 1405, 1405, 1406, 1406, 1406, 0, 1323, 0, 1323, 1323, 1323, 1412, 0, 0, 1478, 0, 0, 0, 0, 0, 1412, 0, 0, 0, 0, 0, 1412, 0, 0, 0, 0, 1412, 0, 1323, 1323, 0, 1323, 1323, 1323, 1323, 1323, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1412, 1327, 0, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1370, 1370, 1370, 1370, 1370, 0, 1370, 1370, 0, 1370, 1370, 1370, 0, 0, 1370, 0, 1370, 1412, 1412, 1412, 0, 0, 1370, 1370, 0, 1479, 0, 1370, 0, 1479, 1479, 1479, 1479, 0, 0, 0, 0, 0, 0, 0, 1413, 1370, 1479, 1370, 1370, 1370, 0, 0, 0, 1413, 0, 0, 0, 0, 0, 1413, 0, 0, 0, 0, 1413, 1479, 0, 0, 0, 0, 0, 0, 1370, 1370, 0, 1370, 1370, 1370, 1370, 1370, 1374, 1413, 1468, 1468, 1468, 1468, 1468, 1374, 0, 1374, 0, 1374, 1374, 1374, 1374, 1374, 0, 0, 0, 1414, 1374, 0, 0, 0, 1374, 0, 0, 0, 1414, 0, 1413, 1413, 1413, 1419, 1414, 0, 0, 1374, 0, 1414, 0, 0, 1419, 1374, 0, 0, 0, 0, 1419, 0, 0, 0, 0, 1419, 0, 0, 1414, 1468, 1468, 1468, 0, 0, 0, 0, 0, 0, 1374, 1374, 1374, 1390, 1419, 1477, 1477, 1477, 1477, 1477, 1390, 0, 1390, 0, 1390, 1390, 1390, 1390, 1390, 1414, 1414, 1414, 1420, 1390, 0, 0, 0, 1390, 0, 1421, 0, 1420, 0, 1419, 1419, 1419, 1427, 1420, 1421, 1511, 1390, 0, 1420, 1428, 1421, 1427, 1390, 0, 0, 1421, 0, 1427, 1428, 0, 1511, 0, 1427, 1512, 1428, 1420, 1477, 1477, 1477, 1428, 0, 0, 1421, 0, 0, 1390, 1390, 1390, 1512, 1427, 0, 0, 1511, 1451, 1429, 1451, 1428, 0, 1451, 1451, 1451, 1451, 1451, 1429, 1420, 1420, 1420, 0, 0, 1429, 1512, 1421, 1421, 1421, 1429, 0, 0, 0, 1427, 1427, 1427, 1511, 1511, 1511, 0, 1428, 1428, 1428, 1467, 1480, 1467, 1429, 0, 1467, 1467, 1467, 1467, 1467, 1480, 1512, 1512, 1512, 0, 0, 1480, 0, 0, 0, 0, 1480, 0, 0, 0, 1451, 1451, 1451, 0, 0, 0, 0, 1429, 1429, 1429, 1450, 0, 0, 1480, 0, 0, 0, 1450, 0, 1450, 0, 1450, 1450, 1450, 1450, 1450, 0, 0, 0, 0, 1450, 0, 0, 0, 1450, 1467, 1467, 1467, 0, 0, 0, 0, 1480, 1480, 1480, 1481, 0, 1450, 0, 0, 0, 0, 1482, 1450, 1481, 0, 0, 0, 0, 0, 1481, 1482, 0, 0, 0, 1481, 0, 1482, 0, 0, 0, 0, 1482, 0, 0, 0, 1450, 1450, 1450, 1466, 0, 0, 1481, 0, 0, 0, 1466, 1488, 1466, 1482, 1466, 1466, 1466, 1466, 1466, 1489, 1488, 0, 0, 1466, 0, 0, 1488, 1466, 1489, 0, 0, 1488, 0, 0, 1489, 1481, 1481, 1481, 1490, 1489, 1466, 0, 1482, 1482, 1482, 0, 1466, 1490, 1488, 0, 0, 0, 0, 1490, 0, 0, 1489, 0, 1490, 1494, 1494, 1494, 1494, 1494, 0, 0, 0, 0, 0, 1466, 1466, 1466, 0, 1495, 0, 1490, 0, 1488, 1488, 1488, 1496, 0, 1495, 1497, 0, 1489, 1489, 1489, 1495, 1496, 0, 0, 1497, 1495, 0, 1496, 0, 0, 1497, 0, 1496, 0, 0, 1497, 1490, 1490, 1490, 0, 0, 0, 1495, 0, 0, 0, 1494, 1494, 1494, 1496, 1503, 0, 1497, 0, 1504, 0, 0, 0, 0, 1503, 0, 0, 0, 1504, 0, 1503, 0, 0, 0, 1504, 1503, 1495, 1495, 1495, 1504, 1505, 0, 0, 1496, 1496, 1496, 1497, 1497, 1497, 1505, 0, 0, 1503, 0, 0, 1505, 1504, 0, 0, 0, 1505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 0, 1589, 0, 1503, 1503, 1503, 0, 1504, 1504, 1504, 1589, 0, 0, 0, 0, 0, 1589, 0, 0, 0, 0, 1589, 0, 0, 0, 0, 0, 0, 1505, 1505, 1505, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1589, 1547, 0, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1559, 1559, 1559, 1559, 1559, 0, 1559, 1559, 0, 1559, 1559, 1559, 0, 0, 1559, 0, 1559, 1589, 1589, 1589, 0, 1696, 1559, 1559, 1696, 0, 0, 1559, 0, 0, 0, 1696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1559, 1696, 1559, 1559, 1559, 0, 1590, 0, 0, 0, 0, 0, 0, 0, 0, 1590, 0, 0, 0, 0, 0, 1590, 0, 0, 0, 0, 1590, 1559, 1559, 0, 1559, 1559, 1559, 1559, 1559, 1561, 1561, 1561, 1561, 1561, 0, 1561, 1561, 1590, 1561, 1561, 1561, 0, 0, 1561, 0, 1561, 1696, 1696, 1696, 0, 0, 1561, 1561, 0, 0, 0, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1590, 1590, 1590, 0, 1561, 0, 1561, 1561, 1561, 0, 1591, 0, 0, 0, 0, 0, 0, 0, 0, 1591, 0, 0, 0, 0, 0, 1591, 0, 0, 0, 0, 1591, 1561, 1561, 0, 1561, 1561, 1561, 1561, 1561, 1567, 1567, 1567, 1567, 1567, 0, 1567, 1567, 1591, 1567, 1567, 1567, 0, 0, 1567, 0, 1567, 0, 0, 0, 0, 0, 1567, 1567, 0, 0, 0, 1567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1591, 1591, 1591, 0, 1567, 0, 1567, 1567, 1567, 0, 1598, 0, 0, 0, 0, 0, 0, 0, 0, 1598, 0, 0, 0, 0, 0, 1598, 0, 0, 0, 0, 1598, 1567, 1567, 0, 1567, 1567, 1567, 1567, 1567, 1571, 1571, 1571, 1571, 1571, 0, 1571, 1571, 1598, 1571, 1571, 1571, 0, 0, 1571, 0, 1571, 0, 0, 0, 0, 0, 1571, 1571, 0, 0, 0, 1571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1598, 1598, 1598, 0, 1571, 0, 1571, 1571, 1571, 0, 1599, 0, 0, 0, 0, 0, 0, 0, 0, 1599, 0, 0, 0, 0, 0, 1599, 0, 0, 0, 0, 1599, 1571, 1571, 0, 1571, 1571, 1571, 1571, 1571, 1572, 1572, 1572, 1572, 1572, 0, 1572, 1572, 1599, 1572, 1572, 1572, 0, 0, 1572, 1600, 1572, 0, 0, 0, 0, 0, 1572, 1572, 1600, 0, 0, 1572, 0, 0, 1600, 0, 0, 1606, 0, 1600, 0, 1599, 1599, 1599, 1607, 1572, 1606, 1572, 1572, 1572, 0, 0, 1606, 1607, 0, 0, 1600, 1606, 0, 1607, 0, 0, 0, 0, 1607, 0, 0, 0, 0, 0, 0, 0, 1572, 1572, 1606, 1572, 1572, 1572, 1572, 1572, 1585, 1607, 0, 0, 0, 1600, 1600, 1600, 0, 1585, 0, 1585, 1585, 1585, 1585, 1585, 0, 0, 0, 1608, 1585, 0, 0, 1606, 1606, 1606, 1635, 0, 1608, 0, 1607, 1607, 1607, 1636, 1608, 1635, 0, 1585, 0, 1608, 0, 1635, 1636, 0, 0, 0, 1635, 0, 1636, 0, 0, 0, 0, 1636, 0, 0, 1608, 0, 0, 0, 0, 0, 0, 1635, 0, 0, 1585, 1585, 1585, 1588, 1636, 0, 0, 0, 0, 0, 0, 0, 1588, 0, 1588, 1588, 1588, 1588, 1588, 1608, 1608, 1608, 1637, 1588, 0, 0, 1635, 1635, 1635, 1644, 0, 1637, 0, 1636, 1636, 1636, 1645, 1637, 1644, 0, 1588, 0, 1637, 0, 1644, 1645, 0, 0, 0, 1644, 0, 1645, 0, 0, 0, 0, 1645, 0, 0, 1637, 0, 0, 0, 0, 0, 0, 1644, 0, 0, 1588, 1588, 1588, 1631, 1645, 0, 0, 0, 0, 0, 0, 0, 1631, 0, 1631, 1631, 1631, 1631, 1631, 1637, 1637, 1637, 1646, 1631, 0, 0, 1644, 1644, 1644, 1652, 0, 1646, 0, 1645, 1645, 1645, 1653, 1646, 1652, 0, 1631, 0, 1646, 0, 1652, 1653, 0, 0, 0, 1652, 0, 1653, 0, 0, 0, 0, 1653, 0, 0, 1646, 0, 0, 0, 0, 0, 0, 1652, 0, 0, 1631, 1631, 1631, 1634, 1653, 0, 0, 0, 0, 0, 0, 0, 1634, 0, 1634, 1634, 1634, 1634, 1634, 1646, 1646, 1646, 1654, 1634, 0, 0, 1652, 1652, 1652, 0, 0, 1654, 0, 1653, 1653, 1653, 0, 1654, 0, 0, 1634, 0, 1654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1634, 1634, 1634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1654, 1654, 1654, 1689, 1689, 1689, 1689, 1689, 0, 1689, 1689, 0, 1689, 1689, 1689, 0, 0, 1689, 0, 1689, 0, 0, 0, 0, 0, 1689, 1689, 0, 0, 0, 1689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1689, 0, 1689, 1689, 1689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1689, 1689, 0, 1689, 1689, 1689, 1689, 1689, 1703, 1703, 1703, 1703, 1703, 0, 1703, 1703, 0, 1703, 1703, 1703, 0, 0, 1703, 0, 1703, 0, 0, 0, 0, 0, 1703, 1703, 0, 0, 0, 1703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1703, 0, 1703, 1703, 1703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1703, 1703, 0, 1703, 1703, 1703, 1703, 1703, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1783, 1783, 0, 0, 0, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 0, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1784, 1784, 0, 1784, 0, 0, 0, 0, 1784, 1784, 1784, 0, 1784, 1784, 1785, 1785, 0, 0, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1787, 0, 1787, 0, 1787, 1787, 0, 1787, 0, 1787, 1787, 0, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1788, 0, 1788, 0, 1788, 1788, 0, 1788, 0, 1788, 1788, 0, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1789, 0, 1789, 0, 1789, 1789, 0, 0, 0, 1789, 1789, 0, 1789, 0, 1789, 1789, 1789, 0, 1789, 1789, 1789, 1789, 1790, 0, 1790, 0, 1790, 1790, 0, 1790, 1790, 1790, 1790, 0, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1791, 0, 1791, 0, 1791, 1791, 0, 1791, 1791, 1791, 1791, 0, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1792, 0, 1792, 0, 1792, 1792, 0, 0, 1792, 1792, 1792, 0, 1792, 0, 1792, 1792, 1792, 0, 1792, 1792, 1792, 1792, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1794, 0, 0, 0, 0, 1794, 1794, 1794, 0, 1794, 1794, 1795, 1795, 0, 1795, 1795, 0, 0, 1795, 0, 0, 0, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1796, 0, 0, 0, 0, 1796, 0, 1796, 0, 0, 1796, 0, 1796, 1796, 1796, 0, 1796, 1796, 1796, 1796, 1796, 1796, 0, 1796, 1796, 0, 1796, 1797, 1797, 0, 0, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1798, 1798, 0, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1799, 1799, 0, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1802, 0, 1802, 0, 1802, 1802, 0, 0, 1802, 1802, 1802, 0, 1802, 0, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1803, 1803, 0, 1803, 0, 0, 0, 0, 1803, 1803, 1803, 0, 1803, 1803, 1804, 1804, 0, 0, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1806, 0, 1806, 0, 1806, 1806, 0, 1806, 0, 1806, 1806, 0, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1807, 0, 1807, 0, 1807, 1807, 0, 1807, 0, 1807, 1807, 0, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1808, 0, 1808, 0, 1808, 1808, 0, 1808, 0, 1808, 1808, 0, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1809, 0, 1809, 0, 1809, 1809, 0, 0, 0, 1809, 1809, 0, 1809, 0, 1809, 1809, 1809, 0, 1809, 1809, 1809, 1809, 1810, 0, 1810, 0, 1810, 1810, 0, 1810, 0, 1810, 1810, 0, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1811, 0, 1811, 0, 1811, 1811, 1811, 1811, 0, 1811, 1811, 0, 1811, 1811, 1811, 1811, 1811, 0, 1811, 1811, 1811, 1811, 1812, 0, 1812, 0, 1812, 1812, 0, 1812, 0, 1812, 1812, 0, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1813, 0, 1813, 0, 1813, 1813, 0, 1813, 0, 1813, 1813, 0, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1814, 0, 1814, 0, 1814, 1814, 0, 0, 0, 1814, 0, 0, 1814, 0, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1815, 0, 1815, 0, 1815, 1815, 0, 1815, 0, 1815, 1815, 0, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1816, 0, 1816, 0, 1816, 1816, 0, 1816, 1816, 1816, 1816, 0, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1817, 0, 1817, 0, 1817, 1817, 0, 1817, 1817, 1817, 1817, 0, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1818, 0, 1818, 0, 1818, 1818, 0, 1818, 1818, 1818, 1818, 0, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1819, 0, 1819, 0, 1819, 1819, 0, 0, 1819, 1819, 1819, 0, 1819, 0, 1819, 1819, 1819, 0, 1819, 1819, 1819, 1819, 1820, 0, 1820, 0, 1820, 1820, 0, 1820, 1820, 1820, 1820, 0, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1821, 0, 1821, 0, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 0, 1821, 1821, 1821, 1821, 1821, 0, 1821, 1821, 1821, 1821, 1822, 0, 1822, 0, 1822, 1822, 0, 1822, 1822, 1822, 1822, 0, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1823, 0, 1823, 0, 1823, 1823, 0, 1823, 1823, 1823, 1823, 0, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1824, 0, 1824, 0, 1824, 1824, 0, 0, 1824, 1824, 0, 0, 1824, 0, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1825, 0, 1825, 0, 1825, 1825, 0, 1825, 1825, 1825, 1825, 0, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1828, 0, 0, 0, 0, 1828, 1828, 1828, 0, 1828, 1828, 1829, 0, 0, 0, 0, 1829, 1829, 1829, 0, 1829, 1829, 1830, 0, 0, 1830, 0, 0, 1830, 0, 0, 0, 1830, 1830, 1830, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 0, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1833, 1833, 0, 1833, 0, 0, 0, 0, 1833, 1833, 1833, 0, 1833, 1833, 1834, 0, 0, 0, 0, 1834, 0, 1834, 0, 0, 1834, 0, 1834, 1834, 1834, 0, 1834, 1834, 1834, 1834, 1834, 1834, 0, 1834, 1834, 0, 1834, 1835, 1835, 0, 0, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1837, 1837, 0, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1838, 1838, 0, 0, 0, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 0, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1840, 0, 0, 0, 0, 1840, 1840, 1840, 0, 1840, 1840, 1841, 0, 0, 1841, 0, 0, 0, 0, 1841, 1841, 1841, 0, 1841, 1841, 1843, 0, 1843, 0, 1843, 1843, 0, 0, 1843, 1843, 1843, 0, 1843, 0, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1844, 0, 1844, 0, 0, 0, 0, 1844, 1844, 1844, 0, 1844, 1844, 1846, 0, 1846, 0, 1846, 1846, 0, 0, 0, 1846, 1846, 0, 1846, 1846, 1846, 1846, 1846, 0, 1846, 1846, 1846, 1846, 1847, 0, 1847, 0, 1847, 1847, 0, 1847, 0, 1847, 1847, 0, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1848, 0, 1848, 0, 1848, 1848, 0, 1848, 0, 1848, 1848, 0, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1849, 0, 1849, 0, 1849, 1849, 0, 1849, 0, 1849, 1849, 0, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1850, 0, 1850, 0, 1850, 1850, 0, 1850, 0, 1850, 1850, 0, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1851, 0, 1851, 0, 1851, 1851, 0, 0, 0, 1851, 1851, 0, 1851, 0, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1852, 0, 1852, 0, 1852, 1852, 0, 0, 0, 1852, 0, 0, 1852, 0, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1853, 0, 1853, 0, 1853, 1853, 0, 1853, 0, 1853, 1853, 0, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1854, 0, 1854, 0, 1854, 1854, 0, 1854, 0, 1854, 1854, 0, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1855, 0, 1855, 0, 1855, 1855, 0, 0, 0, 1855, 1855, 0, 1855, 0, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1856, 0, 1856, 0, 1856, 1856, 1856, 1856, 0, 1856, 1856, 0, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1857, 0, 1857, 0, 1857, 1857, 0, 0, 0, 1857, 0, 0, 1857, 0, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1858, 0, 1858, 0, 1858, 1858, 0, 0, 0, 1858, 1858, 0, 1858, 0, 1858, 1858, 1858, 0, 1858, 1858, 1858, 1858, 1859, 0, 1859, 0, 1859, 1859, 0, 1859, 0, 1859, 1859, 0, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1860, 0, 1860, 0, 1860, 1860, 0, 1860, 0, 1860, 1860, 0, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1861, 0, 1861, 0, 1861, 1861, 0, 0, 0, 1861, 0, 0, 1861, 0, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1862, 0, 1862, 0, 1862, 1862, 0, 0, 0, 1862, 0, 0, 1862, 0, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1863, 0, 1863, 0, 1863, 1863, 0, 1863, 0, 1863, 1863, 0, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1864, 0, 1864, 0, 1864, 1864, 0, 1864, 0, 1864, 1864, 0, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1865, 0, 1865, 0, 1865, 1865, 0, 0, 1865, 1865, 1865, 0, 1865, 1865, 1865, 1865, 1865, 0, 1865, 1865, 1865, 1865, 1866, 0, 1866, 0, 1866, 1866, 0, 1866, 1866, 1866, 1866, 0, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1867, 0, 1867, 0, 1867, 1867, 0, 1867, 1867, 1867, 1867, 0, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1868, 0, 1868, 0, 1868, 1868, 0, 1868, 1868, 1868, 1868, 0, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1869, 0, 1869, 0, 1869, 1869, 0, 1869, 1869, 1869, 1869, 0, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1870, 0, 1870, 0, 1870, 1870, 0, 0, 1870, 1870, 1870, 0, 1870, 0, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1871, 0, 1871, 0, 1871, 1871, 0, 0, 1871, 1871, 0, 0, 1871, 0, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1872, 0, 1872, 0, 1872, 1872, 0, 1872, 1872, 1872, 1872, 0, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1873, 0, 1873, 0, 1873, 1873, 0, 1873, 1873, 1873, 1873, 0, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1874, 0, 1874, 0, 1874, 1874, 0, 0, 1874, 1874, 1874, 0, 1874, 0, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1875, 0, 1875, 0, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 0, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1876, 0, 1876, 0, 1876, 1876, 0, 0, 1876, 1876, 0, 0, 1876, 0, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1877, 0, 1877, 0, 1877, 1877, 0, 0, 1877, 1877, 1877, 0, 1877, 0, 1877, 1877, 1877, 0, 1877, 1877, 1877, 1877, 1878, 0, 1878, 0, 1878, 1878, 0, 1878, 1878, 1878, 1878, 0, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1879, 0, 1879, 0, 1879, 1879, 0, 1879, 1879, 1879, 1879, 0, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1880, 0, 1880, 0, 1880, 1880, 0, 0, 1880, 1880, 0, 0, 1880, 0, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1881, 0, 1881, 0, 1881, 1881, 0, 0, 1881, 1881, 0, 0, 1881, 0, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1882, 0, 1882, 0, 1882, 1882, 0, 1882, 1882, 1882, 1882, 0, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1883, 0, 1883, 0, 1883, 1883, 0, 1883, 1883, 1883, 1883, 0, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1887, 0, 0, 0, 0, 0, 1887, 0, 0, 0, 1887, 0, 0, 0, 0, 0, 0, 1887, 0, 1887, 1888, 0, 0, 1888, 0, 0, 0, 0, 1888, 1888, 1888, 0, 1888, 1888, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 0, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1891, 0, 0, 0, 0, 1891, 0, 1891, 0, 0, 1891, 0, 1891, 1891, 1891, 0, 1891, 1891, 1891, 1891, 1891, 1891, 0, 1891, 1891, 0, 1891, 1894, 1894, 0, 1894, 0, 0, 0, 0, 1894, 1894, 1894, 0, 1894, 1894, 1896, 1896, 1896, 1896, 1896, 0, 1896, 1896, 1896, 0, 0, 1896, 1896, 0, 0, 1896, 1896, 0, 1896, 0, 0, 0, 1896, 0, 0, 0, 1896, 1897, 0, 0, 1897, 1897, 0, 1897, 0, 1897, 1897, 0, 0, 1897, 1897, 1897, 0, 1897, 0, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1898, 0, 1898, 0, 0, 0, 0, 1898, 1898, 1898, 0, 1898, 1898, 1899, 0, 1899, 0, 1899, 1899, 1899, 1899, 0, 1899, 1899, 0, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1900, 0, 1900, 0, 1900, 1900, 0, 0, 0, 1900, 1900, 0, 1900, 0, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1901, 0, 1901, 0, 1901, 1901, 0, 1901, 0, 1901, 1901, 0, 1901, 1901, 1901, 1901, 1901, 0, 1901, 1901, 1901, 1901, 1902, 0, 1902, 0, 1902, 1902, 0, 1902, 0, 1902, 1902, 0, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1903, 0, 1903, 0, 1903, 1903, 0, 1903, 0, 1903, 1903, 0, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1904, 0, 1904, 0, 1904, 1904, 0, 1904, 0, 1904, 1904, 0, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1905, 0, 1905, 0, 1905, 1905, 0, 0, 0, 1905, 1905, 0, 1905, 0, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1906, 0, 1906, 0, 1906, 1906, 0, 0, 0, 1906, 0, 0, 1906, 0, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1907, 0, 1907, 0, 1907, 1907, 0, 0, 0, 1907, 0, 0, 1907, 0, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1908, 0, 1908, 0, 1908, 1908, 0, 1908, 0, 1908, 1908, 0, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1909, 0, 1909, 0, 1909, 1909, 0, 0, 0, 1909, 0, 0, 1909, 0, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1910, 0, 1910, 0, 1910, 1910, 0, 0, 0, 1910, 0, 0, 1910, 0, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1911, 0, 1911, 0, 1911, 1911, 0, 0, 0, 1911, 0, 0, 1911, 0, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1912, 0, 1912, 0, 1912, 1912, 0, 0, 0, 1912, 0, 0, 1912, 0, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1913, 0, 1913, 0, 1913, 1913, 0, 0, 0, 1913, 1913, 0, 1913, 0, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1914, 0, 1914, 0, 1914, 1914, 0, 1914, 0, 1914, 1914, 0, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1915, 0, 1915, 0, 1915, 1915, 0, 1915, 0, 1915, 1915, 0, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1916, 0, 1916, 0, 1916, 1916, 0, 1916, 0, 1916, 1916, 0, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1917, 0, 1917, 0, 1917, 1917, 0, 1917, 0, 1917, 1917, 0, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1918, 0, 1918, 0, 1918, 1918, 0, 0, 0, 1918, 1918, 0, 1918, 0, 1918, 1918, 1918, 0, 1918, 1918, 1918, 1918, 1919, 0, 1919, 0, 1919, 1919, 0, 0, 0, 1919, 0, 0, 1919, 0, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1920, 0, 1920, 0, 1920, 1920, 0, 1920, 0, 1920, 1920, 0, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1921, 0, 1921, 0, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 0, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1922, 0, 1922, 0, 1922, 1922, 0, 0, 1922, 1922, 1922, 0, 1922, 0, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1923, 0, 1923, 0, 1923, 1923, 0, 1923, 1923, 1923, 1923, 0, 1923, 1923, 1923, 1923, 1923, 0, 1923, 1923, 1923, 1923, 1924, 0, 1924, 0, 1924, 1924, 0, 1924, 1924, 1924, 1924, 0, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1925, 0, 1925, 0, 1925, 1925, 0, 1925, 1925, 1925, 1925, 0, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1926, 0, 1926, 0, 1926, 1926, 0, 1926, 1926, 1926, 1926, 0, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1927, 0, 1927, 0, 1927, 1927, 0, 0, 1927, 1927, 1927, 0, 1927, 0, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1928, 0, 1928, 0, 1928, 1928, 0, 0, 1928, 1928, 0, 0, 1928, 0, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1929, 0, 1929, 0, 1929, 1929, 0, 0, 1929, 1929, 0, 0, 1929, 0, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1930, 0, 1930, 0, 1930, 1930, 0, 1930, 1930, 1930, 1930, 0, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1931, 0, 1931, 0, 1931, 1931, 0, 0, 1931, 1931, 0, 0, 1931, 0, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1932, 0, 1932, 0, 1932, 1932, 0, 0, 1932, 1932, 0, 0, 1932, 0, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1933, 0, 1933, 0, 1933, 1933, 0, 0, 1933, 1933, 0, 0, 1933, 0, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1934, 0, 1934, 0, 1934, 1934, 0, 0, 1934, 1934, 0, 0, 1934, 0, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1935, 0, 1935, 0, 1935, 1935, 0, 0, 1935, 1935, 1935, 0, 1935, 0, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1936, 0, 1936, 0, 1936, 1936, 0, 1936, 1936, 1936, 1936, 0, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1937, 0, 1937, 0, 1937, 1937, 0, 1937, 1937, 1937, 1937, 0, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1938, 0, 1938, 0, 1938, 1938, 0, 1938, 1938, 1938, 1938, 0, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1939, 0, 1939, 0, 1939, 1939, 0, 1939, 1939, 1939, 1939, 0, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1940, 0, 1940, 0, 1940, 1940, 0, 0, 1940, 1940, 1940, 0, 1940, 0, 1940, 1940, 1940, 0, 1940, 1940, 1940, 1940, 1941, 0, 1941, 0, 1941, 1941, 0, 0, 1941, 1941, 0, 0, 1941, 0, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1942, 0, 1942, 0, 1942, 1942, 0, 1942, 1942, 1942, 1942, 0, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1944, 0, 0, 0, 0, 0, 1944, 0, 0, 0, 1944, 0, 0, 0, 0, 0, 0, 1944, 0, 1944, 1945, 0, 0, 1945, 0, 0, 1945, 0, 0, 0, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1946, 0, 0, 1946, 0, 0, 0, 0, 1946, 1946, 1946, 0, 1946, 1946, 1947, 0, 0, 0, 0, 1947, 0, 1947, 0, 0, 1947, 0, 1947, 1947, 1947, 0, 1947, 1947, 1947, 1947, 1947, 1947, 0, 1947, 1947, 0, 1947, 1950, 0, 0, 0, 0, 1950, 1950, 1950, 0, 1950, 1950, 1951, 1951, 1951, 1951, 1951, 0, 1951, 1951, 1951, 0, 0, 1951, 1951, 0, 0, 1951, 1951, 0, 1951, 0, 0, 0, 1951, 0, 1951, 0, 1951, 1952, 1952, 1952, 1952, 1952, 0, 1952, 1952, 1952, 0, 0, 1952, 1952, 0, 0, 1952, 1952, 0, 1952, 0, 0, 0, 1952, 1952, 0, 0, 1952, 1953, 0, 1953, 0, 1953, 1953, 0, 0, 1953, 1953, 1953, 0, 1953, 0, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1954, 0, 1954, 0, 1954, 1954, 0, 0, 0, 1954, 1954, 0, 1954, 1954, 1954, 1954, 1954, 0, 1954, 1954, 1954, 1954, 1955, 0, 1955, 0, 1955, 1955, 0, 1955, 0, 1955, 1955, 0, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1956, 0, 1956, 0, 1956, 1956, 0, 1956, 0, 1956, 1956, 0, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1957, 0, 1957, 0, 1957, 1957, 0, 0, 0, 1957, 0, 0, 1957, 0, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1958, 0, 1958, 0, 1958, 1958, 0, 0, 0, 1958, 0, 0, 1958, 0, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1959, 0, 1959, 0, 1959, 1959, 0, 0, 0, 1959, 0, 0, 1959, 0, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1960, 0, 1960, 0, 1960, 1960, 0, 0, 0, 1960, 1960, 0, 1960, 0, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1961, 0, 1961, 0, 1961, 1961, 0, 0, 0, 1961, 0, 0, 1961, 0, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1962, 0, 1962, 0, 1962, 1962, 0, 0, 0, 1962, 1962, 0, 1962, 0, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1963, 0, 1963, 0, 1963, 1963, 0, 1963, 0, 1963, 1963, 0, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1964, 0, 1964, 0, 1964, 1964, 0, 1964, 0, 1964, 1964, 0, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1965, 0, 1965, 0, 1965, 1965, 0, 1965, 0, 1965, 1965, 0, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1966, 0, 1966, 0, 1966, 1966, 0, 1966, 0, 1966, 1966, 0, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1967, 0, 1967, 0, 1967, 1967, 0, 1967, 0, 1967, 1967, 0, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1968, 0, 1968, 0, 1968, 1968, 0, 1968, 0, 1968, 1968, 0, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1969, 0, 1969, 0, 1969, 1969, 0, 1969, 0, 1969, 1969, 0, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1970, 0, 1970, 0, 1970, 1970, 0, 0, 0, 1970, 1970, 0, 1970, 0, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1971, 0, 1971, 0, 1971, 1971, 0, 0, 0, 1971, 0, 0, 1971, 0, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1972, 0, 1972, 0, 1972, 1972, 0, 0, 1972, 1972, 1972, 0, 1972, 1972, 1972, 1972, 1972, 0, 1972, 1972, 1972, 1972, 1973, 0, 1973, 0, 1973, 1973, 0, 1973, 1973, 1973, 1973, 0, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1974, 0, 1974, 0, 1974, 1974, 0, 1974, 1974, 1974, 1974, 0, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1975, 0, 1975, 0, 1975, 1975, 0, 0, 1975, 1975, 0, 0, 1975, 0, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1976, 0, 1976, 0, 1976, 1976, 0, 0, 1976, 1976, 0, 0, 1976, 0, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1977, 0, 1977, 0, 1977, 1977, 0, 0, 1977, 1977, 0, 0, 1977, 0, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1978, 0, 1978, 0, 1978, 1978, 0, 0, 1978, 1978, 1978, 0, 1978, 0, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1979, 0, 1979, 0, 1979, 1979, 0, 0, 1979, 1979, 0, 0, 1979, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1980, 0, 1980, 0, 1980, 1980, 0, 0, 1980, 1980, 1980, 0, 1980, 0, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1981, 0, 1981, 0, 1981, 1981, 0, 1981, 1981, 1981, 1981, 0, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1982, 0, 1982, 0, 1982, 1982, 0, 1982, 1982, 1982, 1982, 0, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1983, 0, 1983, 0, 1983, 1983, 0, 1983, 1983, 1983, 1983, 0, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1984, 0, 1984, 0, 1984, 1984, 0, 1984, 1984, 1984, 1984, 0, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1985, 0, 1985, 0, 1985, 1985, 0, 1985, 1985, 1985, 1985, 0, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1986, 0, 1986, 0, 1986, 1986, 0, 1986, 1986, 1986, 1986, 0, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1987, 0, 1987, 0, 1987, 1987, 0, 1987, 1987, 1987, 1987, 0, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1988, 0, 1988, 0, 1988, 1988, 0, 0, 1988, 1988, 1988, 0, 1988, 0, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1989, 0, 1989, 0, 1989, 1989, 0, 0, 1989, 1989, 0, 0, 1989, 0, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1990, 1990, 1990, 0, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1993, 1993, 0, 1993, 0, 0, 0, 0, 1993, 1993, 1993, 0, 1993, 1993, 1994, 1994, 1994, 1994, 1994, 0, 1994, 1994, 1994, 0, 0, 1994, 1994, 0, 0, 1994, 1994, 0, 1994, 0, 0, 0, 1994, 1994, 0, 0, 1994, 1995, 1995, 1995, 1995, 1995, 0, 1995, 1995, 1995, 0, 0, 1995, 1995, 0, 0, 1995, 1995, 0, 1995, 0, 0, 0, 1995, 0, 0, 0, 1995, 1996, 1996, 1996, 1996, 1996, 0, 1996, 1996, 1996, 0, 0, 1996, 1996, 0, 0, 1996, 1996, 0, 1996, 0, 0, 0, 1996, 0, 0, 0, 1996, 1997, 1997, 1997, 1997, 1997, 0, 1997, 1997, 1997, 0, 0, 1997, 1997, 0, 0, 1997, 1997, 0, 1997, 0, 0, 0, 1997, 0, 0, 0, 1997, 1998, 1998, 1998, 1998, 1998, 0, 1998, 1998, 1998, 0, 0, 1998, 1998, 0, 0, 1998, 1998, 0, 1998, 0, 0, 0, 1998, 0, 0, 0, 1998, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 2000, 0, 2000, 0, 2000, 2000, 2000, 2000, 0, 2000, 2000, 0, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2001, 0, 2001, 0, 2001, 2001, 0, 0, 0, 2001, 2001, 0, 2001, 0, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2002, 0, 2002, 0, 2002, 2002, 0, 2002, 0, 2002, 2002, 0, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2003, 0, 2003, 0, 2003, 2003, 0, 2003, 0, 2003, 2003, 0, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2004, 0, 2004, 0, 2004, 2004, 0, 2004, 0, 2004, 2004, 0, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2005, 0, 2005, 0, 2005, 2005, 0, 2005, 0, 2005, 2005, 0, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 0, 2006, 0, 2006, 2006, 0, 2006, 0, 2006, 2006, 0, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2007, 0, 2007, 0, 2007, 2007, 0, 2007, 0, 2007, 2007, 0, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2008, 0, 2008, 0, 2008, 2008, 0, 2008, 0, 2008, 2008, 0, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2009, 0, 2009, 0, 2009, 2009, 0, 0, 0, 2009, 2009, 0, 2009, 0, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2010, 0, 2010, 0, 2010, 2010, 0, 0, 0, 2010, 0, 0, 2010, 0, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2011, 0, 2011, 0, 2011, 2011, 0, 0, 0, 2011, 0, 0, 2011, 0, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2012, 0, 2012, 0, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 0, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2013, 0, 2013, 0, 2013, 2013, 0, 0, 2013, 2013, 2013, 0, 2013, 0, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2014, 0, 2014, 0, 2014, 2014, 0, 2014, 2014, 2014, 2014, 0, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2015, 0, 2015, 0, 2015, 2015, 0, 2015, 2015, 2015, 2015, 0, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2016, 0, 2016, 0, 2016, 2016, 0, 2016, 2016, 2016, 2016, 0, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2017, 0, 2017, 0, 2017, 2017, 0, 2017, 2017, 2017, 2017, 0, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2018, 0, 2018, 0, 2018, 2018, 0, 2018, 2018, 2018, 2018, 0, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2019, 0, 2019, 0, 2019, 2019, 0, 2019, 2019, 2019, 2019, 0, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2020, 0, 2020, 0, 2020, 2020, 0, 2020, 2020, 2020, 2020, 0, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, 0, 2021, 0, 2021, 2021, 0, 0, 2021, 2021, 2021, 0, 2021, 0, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2022, 0, 2022, 0, 2022, 2022, 0, 0, 2022, 2022, 0, 0, 2022, 0, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2023, 0, 2023, 0, 2023, 2023, 0, 0, 2023, 2023, 0, 0, 2023, 0, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2024, 2024, 2024, 2024, 2024, 0, 2024, 2024, 2024, 0, 0, 2024, 2024, 0, 0, 2024, 2024, 0, 2024, 0, 0, 0, 2024, 0, 0, 0, 2024, 2025, 2025, 2025, 2025, 2025, 0, 2025, 2025, 2025, 0, 0, 2025, 2025, 0, 0, 2025, 2025, 0, 2025, 0, 0, 0, 2025, 0, 0, 0, 2025, 2026, 2026, 2026, 2026, 2026, 0, 2026, 2026, 2026, 0, 0, 2026, 2026, 0, 0, 2026, 2026, 0, 2026, 0, 0, 0, 2026, 0, 0, 0, 2026, 2027, 0, 2027, 0, 2027, 2027, 0, 0, 2027, 2027, 2027, 0, 2027, 0, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2028, 0, 2028, 0, 0, 0, 0, 2028, 2028, 2028, 0, 2028, 2028, 2029, 0, 2029, 0, 2029, 2029, 0, 2029, 0, 2029, 2029, 0, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2030, 0, 2030, 0, 2030, 2030, 0, 2030, 0, 2030, 2030, 0, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2031, 0, 2031, 0, 2031, 2031, 0, 2031, 0, 2031, 2031, 0, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2032, 0, 2032, 0, 2032, 2032, 0, 2032, 0, 2032, 2032, 0, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2033, 0, 2033, 0, 2033, 2033, 0, 0, 0, 2033, 0, 0, 2033, 0, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2034, 0, 2034, 0, 2034, 2034, 0, 2034, 2034, 2034, 2034, 0, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2035, 0, 2035, 0, 2035, 2035, 0, 2035, 2035, 2035, 2035, 0, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2036, 0, 2036, 0, 2036, 2036, 0, 2036, 2036, 2036, 2036, 0, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2037, 0, 2037, 0, 2037, 2037, 0, 2037, 2037, 2037, 2037, 0, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2038, 2038, 2038, 2038, 2038, 0, 2038, 2038, 2038, 0, 0, 2038, 2038, 0, 0, 2038, 2038, 0, 2038, 0, 0, 0, 2038, 0, 0, 0, 2038, 2039, 2039, 2039, 2039, 2039, 0, 2039, 2039, 2039, 0, 0, 2039, 2039, 0, 0, 2039, 2039, 0, 2039, 0, 0, 0, 2039, 0, 0, 0, 2039, 2040, 2040, 2040, 2040, 2040, 0, 2040, 2040, 2040, 0, 0, 2040, 2040, 0, 0, 2040, 2040, 0, 2040, 0, 0, 0, 2040, 0, 0, 0, 2040, 2041, 2041, 2041, 2041, 2041, 0, 2041, 2041, 2041, 0, 0, 2041, 2041, 0, 0, 2041, 2041, 0, 2041, 0, 0, 0, 2041, 0, 0, 0, 2041, 2042, 2042, 2042, 2042, 2042, 0, 2042, 2042, 2042, 0, 0, 2042, 2042, 0, 0, 2042, 2042, 0, 2042, 0, 0, 0, 2042, 0, 0, 0, 2042, 2043, 2043, 2043, 2043, 2043, 0, 2043, 2043, 2043, 0, 0, 2043, 2043, 0, 0, 2043, 2043, 0, 2043, 0, 0, 0, 2043, 0, 0, 0, 2043, 2044, 2044, 2044, 2044, 2044, 0, 2044, 2044, 2044, 0, 0, 2044, 2044, 0, 0, 2044, 2044, 0, 2044, 0, 0, 0, 2044, 0, 0, 0, 2044, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776 } ; #define YY_TRAILING_MASK 0x2000 #define YY_TRAILING_HEAD_MASK 0x4000 #define REJECT \ { \ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ \ yy_cp = yyg->yy_full_match; /* restore poss. backed-over text */ \ yyg->yy_lp = yyg->yy_full_lp; /* restore orig. accepting pos. */ \ yyg->yy_state_ptr = yyg->yy_full_state; /* restore orig. state */ \ yy_current_state = *yyg->yy_state_ptr; /* restore curr. state */ \ ++yyg->yy_lp; \ goto find_rule; \ } #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "parser.l" /* Copyright 2009-2025 * Kaz Kylheku * Vancouver, Canada * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 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. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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. */ #line 30 "parser.l" #include #include #include #include #include #include #include #include #include "config.h" #include "lib.h" #include "gc.h" #include "stream.h" #include "utf8.h" #include "signal.h" #include "unwind.h" #include "hash.h" #include "y.tab.h" #include "parser.h" #include "txr.h" #define YY_INPUT(buf, result, max_size) \ do { \ val self = lit("parser"); \ val n = get_bytes(self, yyextra->stream, \ coerce(mem_t *, buf), max_size); \ result = c_num(n, self); \ } while (0) #define YY_DECL \ static int yylex_impl(YYSTYPE *yylval_param, yyscan_t yyscanner) #define YY_FATAL_ERROR(msg) lex_irrecoverable_error(msg) int opt_loglevel = 1; /* 0 - quiet; 1 - normal; 2 - verbose */ val form_to_ln_hash; static int directive_tok(scanner_t *yyg, int tok, int state); #define FLEX_NUM_VERSION 10000*YY_FLEX_MAJOR_VERSION + \ 100*YY_FLEX_MINOR_VERSION + \ YY_FLEX_SUBMINOR_VERSION #if FLEX_NUM_VERSION < 20509 int yylex_destroy(void) { return 0; } #endif /* Missing prototypes not generated by flex. */ int yyget_column(yyscan_t); void yyset_column (int column_no, yyscan_t yyscanner); /* The following function is all that libflex provides. By providing it here, we eliminate the need to link libflex. */ #define YY_SKIP_YYWRAP INLINE int yywrap(yyscan_t scanner) { (void) scanner; return 1; } void yyerror(scanner_t *scanner, parser_t *parser, const char *s) { yyerrorf(scanner, lit("~a"), string_utf8(s), nao); if (parser->prepared_msg) { yyerrorf(scanner, lit("~a"), parser->prepared_msg, nao); parser->prepared_msg = nil; } } void yyerrorf(scanner_t *scanner, val fmt, ...) { parser_t *parser = yyget_extra(scanner); if (opt_loglevel >= 1) { va_list vl; va_start (vl, fmt); if (opt_compat && opt_compat <= 114) format(std_error, lit("~a: (~a:~d): "), prog_string, parser->name, num(parser->lineno), nao); else format(std_error, lit("~a:~d: "), parser->name, num(parser->lineno), nao); vformat(std_error, fmt, vl); put_char(chr('\n'), std_error); va_end (vl); } parser->errors++; } static void yyerrprepf(scanner_t *scanner, val fmt, ...) { parser_t *parser = yyget_extra(scanner); if (opt_loglevel >= 1) { va_list vl; va_start (vl, fmt); set(mkloc(parser->prepared_msg, parser->parser), vformat_to_string(fmt, vl)); va_end (vl); } } static void lex_irrecoverable_error(const char *msg8) { val msg = string_utf8(msg8); uw_throwf(error_s, lit("error in parser: ~a"), msg, nao); } static void out_of_range_float(scanner_t *scanner, const char *tok) { yyerrorf(scanner, lit("out-of-range floating-point literal: ~a"), string_utf8(tok), nao); } static wchar_t char_esc(int letter) { switch (letter) { case ' ': return L' '; case 'a': return L'\a'; case 'b': return L'\b'; case 't': return L'\t'; case 'n': return L'\n'; case 'v': return L'\v'; case 'f': return L'\f'; case 'r': return L'\r'; case 'e': return 27; case '"': return L'"'; case '\'': return L'\''; case '`': return L'`'; case '/': return L'/'; case '@': return L'@'; case '\\': return L'\\'; } internal_error("unhandled escape character"); } static wchar_t num_esc(scanner_t *scn, char *num) { long val = 0; if (num[0] == 'x' || num[0] == 'u') { if (strlen(num) > 7) yyerror(scn, yyget_extra(scn), "too many digits in hex character escape"); else val = strtol(num + 1, 0, 16); } else { if (num[0] == 'o') num++; if (strlen(num) > 8) yyerror(scn, yyget_extra(scn), "too many digits in octal character escape"); else val = strtol(num, 0, 8); } if (val < 0 || val > 0x10FFFF || convert(wchar_t, val) != val) { yyerror(scn, yyget_extra(scn), "numeric character escape out of range"); val = 0; } return val; } static wchar_t *unicode_ident(scanner_t *scn, const char *lex) { wchar_t *wlex = utf8_dup_from(lex), *ptr = wlex, wch; while ((wch = *ptr++)) { if (wch < 0x1680 || (wch >= 0x3000 && wch < 0xdc00)) continue; if ((wch >= 0xdc00 && wch <= 0xdcff) || (wch >= 0xd800 && wch <= 0xdbff) || #if FULL_UNICODE (wch >= 0xf0000 && wch <= 0xffffd) || (wch >= 0x100000 && wch <= 0x10fffd) || #endif (wch >= 0xe000 && wch <= 0xf8ff) || (wch == 0xfffe) || (wch == 0xffff)) { yyerror(scn, yyget_extra(scn), "disallowed Unicode character in identifier"); break; } switch (wch) { case 0x1680: case 0x180e: case 0x2000: case 0x2001: case 0x2002: case 0x2003: case 0x2004: case 0x2005: case 0x2006: case 0x2007: case 0x2008: case 0x2009: case 0x200a: case 0x2028: case 0x2029: case 0x205f: case 0x3000: yyerror(scn, yyget_extra(scn), "Unicode space occurs in identifier"); break; default: continue; } break; } return wlex; } static char *remove_char(char *str, int c) { char *dst = str, *src = str; while (*src) { int ch = *src++; if (ch != c) *dst++ = ch; } *dst = 0; return str; } #line 4674 "lex.yy.c" #define YY_NO_INPUT 1 #line 4677 "lex.yy.c" #define INITIAL 0 #define SPECIAL 1 #define BRACED 2 #define NESTED 3 #define REGEX 4 #define SREGEX 5 #define STRLIT 6 #define CHRLIT 7 #define QSILIT 8 #define QSPECIAL 9 #define WLIT 10 #define QWLIT 11 #define BUFLIT 12 #define JSON 13 #define JLIT 14 #define JMARKER 15 #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 #endif #define YY_EXTRA_TYPE parser_t * /* Holds the entire state of the reentrant scanner. */ struct yyguts_t { /* User-defined. Not touched by flex. */ YY_EXTRA_TYPE yyextra_r; /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; int yy_n_chars; int yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; int yy_did_buffer_switch_on_eof; int yy_start_stack_ptr; int yy_start_stack_depth; int *yy_start_stack; yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; int yylineno_r; int yy_flex_debug_r; yy_state_type *yy_state_buf; yy_state_type *yy_state_ptr; char *yy_full_match; int yy_lp; /* These are only needed for trailing context rules, * but there's no conditional variable for that yet. */ int yy_looking_for_trail_begin; int yy_full_lp; int *yy_full_state; char *yytext_r; int yy_more_flag; int yy_more_len; YYSTYPE * yylval_r; }; /* end struct yyguts_t */ static int yy_init_globals ( yyscan_t yyscanner ); /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ # define yylval yyg->yylval_r int yylex_init (yyscan_t* scanner); int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); int yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); YYSTYPE * yyget_lval ( yyscan_t yyscanner ); void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT static void yyunput ( int c, char *buf_ptr , yyscan_t yyscanner); #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( yyscan_t yyscanner ); #else static int input ( yyscan_t yyscanner ); #endif #endif static void yy_push_state ( int _new_state , yyscan_t yyscanner); static void yy_pop_state ( yyscan_t yyscanner ); static int yy_top_state ( yyscan_t yyscanner ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #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 do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #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 = '*'; \ int 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 = (int) fread(buf, 1, (yy_size_t) 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 , yyscanner) #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 \ (YYSTYPE * yylval_param , yyscan_t yyscanner); #define YY_DECL int yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner) #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 /*LINTED*/break; #endif #define YY_RULE_SETUP \ if ( yyleng > 0 ) \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ (yytext[yyleng - 1] == '\n'); \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylval = yylval_param; if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif /* Create the reject buffer large enough to save one state per allowed character. */ if ( ! yyg->yy_state_buf ) yyg->yy_state_buf = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE , yyscanner); if ( ! yyg->yy_state_buf ) YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); if ( ! yyg->yy_start ) yyg->yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { #line 327 "parser.l" #line 4993 "lex.yy.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ *yy_cp = yyg->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 = yyg->yy_start; yy_current_state += YY_AT_BOL(); yyg->yy_state_ptr = yyg->yy_state_buf; *yyg->yy_state_ptr++ = yy_current_state; yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*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 >= 1777 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; *yyg->yy_state_ptr++ = yy_current_state; ++yy_cp; } while ( yy_current_state != 1776 ); yy_find_action: yy_current_state = *--yyg->yy_state_ptr; yyg->yy_lp = yy_accept[yy_current_state]; find_rule: /* we branch to this label when backing up */ for ( ; ; ) /* until we find what rule we matched */ { if ( yyg->yy_lp && yyg->yy_lp < yy_accept[yy_current_state + 1] ) { yy_act = yy_acclist[yyg->yy_lp]; if ( yy_act & YY_TRAILING_HEAD_MASK || yyg->yy_looking_for_trail_begin ) { if ( yy_act == yyg->yy_looking_for_trail_begin ) { yyg->yy_looking_for_trail_begin = 0; yy_act &= ~YY_TRAILING_HEAD_MASK; break; } } else if ( yy_act & YY_TRAILING_MASK ) { yyg->yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; yyg->yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; } else { yyg->yy_full_match = yy_cp; yyg->yy_full_state = yyg->yy_state_ptr; yyg->yy_full_lp = yyg->yy_lp; break; } ++yyg->yy_lp; goto find_rule; } --yy_cp; yy_current_state = *--yyg->yy_state_ptr; yyg->yy_lp = 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 1: YY_RULE_SETUP #line 329 "parser.l" { wchar_t *wtxt = utf8_dup_from(yytext); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str_wc(wtxt, num(10)); free(wtxt); return NUMBER; } YY_BREAK case 2: YY_RULE_SETUP #line 342 "parser.l" { wchar_t *wtxt = utf8_dup_from(remove_char(yytext, ',')); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str_wc(wtxt, num(10)); free(wtxt); return NUMBER; } YY_BREAK case 3: YY_RULE_SETUP #line 355 "parser.l" { wchar_t *wtxt = utf8_dup_from(remove_char(yytext + 2, ',')); int base; switch (yytext[1]) { case 'x': base = 16; break; case 'o': base = 8; break; case 'b': default: base = 2; break; } if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str_wc(wtxt, num_fast(base)); free(wtxt); return NUMBER; } YY_BREAK case 4: YY_RULE_SETUP #line 375 "parser.l" { int base = 0; val str = string_own(utf8_dup_from(yytext + 2)); switch (yytext[1]) { case 'x': base = 16; break; case 'o': base = 8; break; case 'b': default: base = 2; break; } yyerrorf(yyg, lit("trailing junk in numeric literal: ~a~a~a"), chr(yytext[0]), chr(yytext[1]), str, nao); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str(str, num_fast(base)); return NUMBER; } YY_BREAK case 5: YY_RULE_SETUP #line 397 "parser.l" { if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); if ((yylval->val = flo_str_utf8(yytext)) == nil) out_of_range_float(yyg, yytext); return NUMBER; } YY_BREAK case 6: YY_RULE_SETUP #line 409 "parser.l" { if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); remove_char(yytext, ','); if ((yylval->val = flo_str_utf8(yytext)) == nil) out_of_range_float(yyg, yytext); return NUMBER; } YY_BREAK case 7: #line 425 "parser.l" case 8: #line 426 "parser.l" case 9: YY_RULE_SETUP #line 426 "parser.l" { val str = string_utf8(yytext); yyerrorf(yyg, lit("trailing junk in floating-point literal: ~a"), str, nao); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); if ((yylval->val = flo_str_utf8(yytext)) == nil) out_of_range_float(yyg, yytext); return NUMBER; } YY_BREAK case 10: /* rule 10 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 442 "parser.l" { if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); if ((yylval->val = flo_str_utf8(yytext)) == nil) out_of_range_float(yyg, yytext); return NUMBER; } YY_BREAK case 11: #line 455 "parser.l" case 12: YY_RULE_SETUP #line 455 "parser.l" { wchar_t *wtxt = utf8_dup_from(yytext + 1); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str_wc(wtxt, num(10)); free(wtxt); return METANUM; } YY_BREAK case 13: #line 468 "parser.l" case 14: YY_RULE_SETUP #line 468 "parser.l" { wchar_t *wtxt = utf8_dup_from(yytext + 3); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str_wc(wtxt, num(16)); free(wtxt); return METANUM; } YY_BREAK case 15: #line 481 "parser.l" case 16: YY_RULE_SETUP #line 481 "parser.l" { wchar_t *wtxt = utf8_dup_from(yytext + 3); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str_wc(wtxt, num(8)); free(wtxt); return METANUM; } YY_BREAK case 17: YY_RULE_SETUP #line 493 "parser.l" { wchar_t *wtxt = utf8_dup_from(yytext + 3); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->val = int_str_wc(wtxt, num(2)); free(wtxt); return METANUM; } YY_BREAK case 18: #line 506 "parser.l" case 19: #line 507 "parser.l" case 20: YY_RULE_SETUP #line 507 "parser.l" { yyerrorf(yyg, lit("cramped floating-point literal: " "space needed between ~a and dot."), string_own(utf8_dup_from(yytext)), nao); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->lexeme = unicode_ident(yyg, yytext); return SYMTOK; } YY_BREAK case 21: #line 524 "parser.l" case 22: #line 525 "parser.l" case 23: YY_RULE_SETUP #line 525 "parser.l" { if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yylval->lexeme = unicode_ident(yyg, yytext); return SYMTOK; } YY_BREAK case 24: #line 536 "parser.l" case 25: YY_RULE_SETUP #line 536 "parser.l" { if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); yyerrorf(yyg, lit("bad token: ~a"), string_own(utf8_dup_from(yytext)), nao); yylval->lexeme = unicode_ident(yyg, yytext); return SYMTOK; } YY_BREAK case 26: YY_RULE_SETUP #line 549 "parser.l" { return directive_tok(yyg, ALL, 0); } YY_BREAK case 27: /* rule 27 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 553 "parser.l" { return directive_tok(yyg, SOME, NESTED); } YY_BREAK case 28: YY_RULE_SETUP #line 557 "parser.l" { return directive_tok(yyg, NONE, 0); } YY_BREAK case 29: YY_RULE_SETUP #line 561 "parser.l" { return directive_tok(yyg, MAYBE, 0); } YY_BREAK case 30: YY_RULE_SETUP #line 565 "parser.l" { return directive_tok(yyg, CASES, 0); } YY_BREAK case 31: /* rule 31 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 569 "parser.l" { return directive_tok(yyg, BLOCK, NESTED); } YY_BREAK case 32: /* rule 32 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 573 "parser.l" { return directive_tok(yyg, CHOOSE, NESTED); } YY_BREAK case 33: /* rule 33 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 577 "parser.l" { return directive_tok(yyg, GATHER, NESTED); } YY_BREAK case 34: YY_RULE_SETUP #line 581 "parser.l" { return directive_tok(yyg, AND, 0); } YY_BREAK case 35: YY_RULE_SETUP #line 585 "parser.l" { return directive_tok(yyg, OR, 0); } YY_BREAK case 36: YY_RULE_SETUP #line 589 "parser.l" { return directive_tok(yyg, END, 0); } YY_BREAK case 37: /* rule 37 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 593 "parser.l" { return directive_tok(yyg, COLLECT, NESTED); } YY_BREAK case 38: /* rule 38 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 597 "parser.l" { return directive_tok(yyg, COLL, NESTED); } YY_BREAK case 39: /* rule 39 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 601 "parser.l" { return directive_tok(yyg, UNTIL, NESTED); } YY_BREAK case 40: /* rule 40 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 605 "parser.l" { return directive_tok(yyg, OUTPUT, NESTED); } YY_BREAK case 41: /* rule 41 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 609 "parser.l" { return directive_tok(yyg, REPEAT, NESTED); } YY_BREAK case 42: /* rule 42 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 613 "parser.l" { return directive_tok(yyg, PUSH, NESTED); } YY_BREAK case 43: /* rule 43 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 617 "parser.l" { return directive_tok(yyg, REP, NESTED); } YY_BREAK case 44: YY_RULE_SETUP #line 621 "parser.l" { return directive_tok(yyg, SINGLE, 0); } YY_BREAK case 45: YY_RULE_SETUP #line 625 "parser.l" { return directive_tok(yyg, FIRST, 0); } YY_BREAK case 46: /* rule 46 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 629 "parser.l" { return directive_tok(yyg, LAST, NESTED); } YY_BREAK case 47: YY_RULE_SETUP #line 633 "parser.l" { return directive_tok(yyg, EMPTY, 0); } YY_BREAK case 48: /* rule 48 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 637 "parser.l" { return directive_tok(yyg, MOD, NESTED); } YY_BREAK case 49: /* rule 49 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 641 "parser.l" { return directive_tok(yyg, MODLAST, NESTED); } YY_BREAK case 50: /* rule 50 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 645 "parser.l" { return directive_tok(yyg, DEFINE, NESTED); } YY_BREAK case 51: YY_RULE_SETUP #line 649 "parser.l" { return directive_tok(yyg, TRY, 0); } YY_BREAK case 52: /* rule 52 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 653 "parser.l" { return directive_tok(yyg, CATCH, NESTED); } YY_BREAK case 53: YY_RULE_SETUP #line 657 "parser.l" { return directive_tok(yyg, FINALLY, 0); } YY_BREAK case 54: /* rule 54 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 661 "parser.l" { return directive_tok(yyg, IF, NESTED); } YY_BREAK case 55: /* rule 55 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 665 "parser.l" { return directive_tok(yyg, ELIF, NESTED); } YY_BREAK case 56: YY_RULE_SETUP #line 669 "parser.l" { return directive_tok(yyg, ELSE, 0); } YY_BREAK case 57: YY_RULE_SETUP #line 673 "parser.l" { yy_push_state(BRACED, yyscanner); yylval->lineno = yyextra->lineno; return yytext[0]; } YY_BREAK case 58: YY_RULE_SETUP #line 679 "parser.l" { yy_push_state(NESTED, yyscanner); yylval->lineno = yyextra->lineno; return yytext[0]; } YY_BREAK case 59: YY_RULE_SETUP #line 685 "parser.l" { yylval->lineno = yyextra->lineno; return (opt_compat && opt_compat <= 248) ? OLD_AT : '@'; } YY_BREAK case 60: YY_RULE_SETUP #line 690 "parser.l" { yylval->chr = '*'; return SPLICE; } YY_BREAK case 61: YY_RULE_SETUP #line 695 "parser.l" { yylval->chr = yytext[0]; return yytext[0]; } YY_BREAK case 62: YY_RULE_SETUP #line 700 "parser.l" { yy_pop_state(yyscanner); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); return yytext[0]; } YY_BREAK case 63: *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ yyg->yy_c_buf_p = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 709 "parser.l" { yyerrorf(yyg, lit("cramped floating-point literal: " "space or 0 needed between ~a and dot."), string_own(utf8_dup_from(yytext)), nao); yy_pop_state(yyscanner); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); return yytext[0]; } YY_BREAK case 64: YY_RULE_SETUP #line 724 "parser.l" { yy_pop_state(yyscanner); if (yy_top_state(yyscanner) == INITIAL || yy_top_state(yyscanner) == QSILIT || yy_top_state(yyscanner) == QWLIT) yy_pop_state(yyscanner); return yytext[0]; } YY_BREAK case 65: YY_RULE_SETUP #line 733 "parser.l" { /* Eat whitespace in directive */ } YY_BREAK case 66: YY_RULE_SETUP #line 737 "parser.l" { yy_push_state(STRLIT, yyscanner); return '"'; } YY_BREAK case 67: YY_RULE_SETUP #line 742 "parser.l" { yy_push_state(CHRLIT, yyscanner); yylval->lineno = yyextra->lineno; return HASH_BACKSLASH; } YY_BREAK case 68: YY_RULE_SETUP #line 748 "parser.l" { yy_push_state(BUFLIT, yyscanner); yylval->lineno = yyextra->lineno; return HASH_B_QUOTE; } YY_BREAK case 69: YY_RULE_SETUP #line 754 "parser.l" { yy_push_state(REGEX, yyscanner); yylval->lineno = yyextra->lineno; return HASH_SLASH; } YY_BREAK case 70: YY_RULE_SETUP #line 760 "parser.l" { yy_push_state(QSILIT, yyscanner); return '`'; } YY_BREAK case 71: YY_RULE_SETUP #line 765 "parser.l" { yy_push_state(WLIT, yyscanner); yylval->lineno = yyextra->lineno; return WORDS; } YY_BREAK case 72: YY_RULE_SETUP #line 771 "parser.l" { yy_push_state(WLIT, yyscanner); yylval->lineno = yyextra->lineno; return WSPLICE; } YY_BREAK case 73: YY_RULE_SETUP #line 777 "parser.l" { yy_push_state(QWLIT, yyscanner); yylval->lineno = yyextra->lineno; return QWORDS; } YY_BREAK case 74: YY_RULE_SETUP #line 783 "parser.l" { yy_push_state(QWLIT, yyscanner); yylval->lineno = yyextra->lineno; return QWSPLICE; } YY_BREAK case 75: YY_RULE_SETUP #line 789 "parser.l" { return '#'; } YY_BREAK case 76: YY_RULE_SETUP #line 793 "parser.l" { yylval->lineno = yyextra->lineno; return HASH_H; } YY_BREAK case 77: YY_RULE_SETUP #line 798 "parser.l" { yylval->lineno = yyextra->lineno; return HASH_S; } YY_BREAK case 78: YY_RULE_SETUP #line 803 "parser.l" { yylval->lineno = yyextra->lineno; return HASH_R; } YY_BREAK case 79: YY_RULE_SETUP #line 808 "parser.l" { yylval->lineno = yyextra->lineno; return HASH_N; } YY_BREAK case 80: YY_RULE_SETUP #line 813 "parser.l" { yylval->lineno = yyextra->lineno; return HASH_T; } YY_BREAK case 81: YY_RULE_SETUP #line 818 "parser.l" { yylval->lineno = yyextra->lineno; yy_push_state(JSON, yyscanner); return HASH_J; } YY_BREAK case 82: YY_RULE_SETUP #line 824 "parser.l" { yylval->lineno = yyextra->lineno; return HASH_SEMI; } YY_BREAK case 83: YY_RULE_SETUP #line 829 "parser.l" { wchar_t *wtxt = utf8_dup_from(yytext + 1); yylval->val = int_str_wc(wtxt, num(10)); free(wtxt); return HASH_N_EQUALS; } YY_BREAK case 84: YY_RULE_SETUP #line 836 "parser.l" { wchar_t *wtxt = utf8_dup_from(yytext + 1); yylval->val = int_str_wc(wtxt, num(10)); free(wtxt); return HASH_N_HASH; } YY_BREAK case 85: YY_RULE_SETUP #line 843 "parser.l" { yylval->lineno = yyextra->lineno; return (opt_compat && opt_compat <= 185) ? OLD_DOTDOT : DOTDOT; } YY_BREAK case 86: YY_RULE_SETUP #line 848 "parser.l" { yy_pop_state(yyscanner); yylval->lexeme = chk_strdup(L"@"); return TEXT; } YY_BREAK case 87: /* rule 87 can match eol */ YY_RULE_SETUP #line 854 "parser.l" { yyextra->lineno++; } YY_BREAK case 88: YY_RULE_SETUP #line 858 "parser.l" { yy_push_state(REGEX, yyscanner); return '/'; } YY_BREAK case 89: YY_RULE_SETUP #line 863 "parser.l" { yylval->chr = '.'; return CONSDOT; } YY_BREAK case 90: YY_RULE_SETUP #line 868 "parser.l" { yylval->chr = '.'; return LAMBDOT; } YY_BREAK case 91: YY_RULE_SETUP #line 873 "parser.l" { yylval->chr = '.'; return UREFDOT; } YY_BREAK case 92: YY_RULE_SETUP #line 878 "parser.l" { yylval->chr = '.'; return '.'; } YY_BREAK case 93: YY_RULE_SETUP #line 883 "parser.l" { yylval->chr = '.'; return OREFDOT; } YY_BREAK case 94: YY_RULE_SETUP #line 888 "parser.l" { yylval->chr = '.'; return UOREFDOT; } YY_BREAK case 95: /* rule 95 can match eol */ YY_RULE_SETUP #line 893 "parser.l" { if (YYSTATE == SPECIAL) yy_pop_state(yyscanner); /* @\ continuation */ yyextra->lineno++; } YY_BREAK case 96: YY_RULE_SETUP #line 899 "parser.l" { wchar_t lexeme[2]; lexeme[0] = char_esc(yytext[1]); lexeme[1] = 0; yylval->lexeme = chk_strdup(lexeme); yy_pop_state(yyscanner); return TEXT; } YY_BREAK case 97: YY_RULE_SETUP #line 908 "parser.l" { wchar_t lexeme[2]; lexeme[0] = num_esc(yyg, yytext + 1); lexeme[1] = 0; yylval->lexeme = chk_strdup(lexeme); { char lastchar = yytext[yyleng-1]; if (lastchar == ';' && opt_compat && opt_compat <= 109) unput(lastchar); } yy_pop_state(yyscanner); return TEXT; } YY_BREAK case 98: YY_RULE_SETUP #line 924 "parser.l" { yyerrorf(yyg, lit("\\x escape without digits"), nao); } YY_BREAK case 99: YY_RULE_SETUP #line 928 "parser.l" { yyerrorf(yyg, lit("unrecognized escape \\~a"), chr(yytext[1]), nao); } YY_BREAK case 100: YY_RULE_SETUP #line 932 "parser.l" { /* comment */ } YY_BREAK case 101: YY_RULE_SETUP #line 936 "parser.l" { val ch = chr_str(string_utf8(yytext), zero); if (chr_isspace(ch)) yyerrprepf(yyg, lit("unexpected whitespace character #\\x~,02x"), ch, nao); else if (chr_isunisp(ch)) yyerrprepf(yyg, lit("unexpected Unicode space character #\\x~,02x"), ch, nao); else if (chr_iscntrl(ch)) yyerrprepf(yyg, lit("unexpected control character #\\x~,02x"), ch, nao); else yyerrprepf(yyg, lit("unexpected character #\\~a"), ch, nao); return ERRTOK; } YY_BREAK case 102: YY_RULE_SETUP #line 953 "parser.l" { yyerrprepf(yyg, lit("non-UTF-8 byte #x~02x in directive"), num(convert(unsigned char, yytext[0])), nao); return ERRTOK; } YY_BREAK case 103: YY_RULE_SETUP #line 959 "parser.l" { yylval->chr = '/'; return (YYSTATE == SREGEX) ? REGCHAR : '/'; } YY_BREAK case 104: YY_RULE_SETUP #line 964 "parser.l" { yylval->chr = char_esc(yytext[1]); return REGCHAR; } YY_BREAK case 105: YY_RULE_SETUP #line 969 "parser.l" { yylval->chr = num_esc(yyg, yytext + 1); return REGCHAR; } YY_BREAK case 106: YY_RULE_SETUP #line 974 "parser.l" { yylval->chr = yytext[1]; return REGTOKEN; } YY_BREAK case 107: /* rule 107 can match eol */ YY_RULE_SETUP #line 979 "parser.l" { yyextra->lineno++; } YY_BREAK case 108: /* rule 108 can match eol */ YY_RULE_SETUP #line 983 "parser.l" { yyextra->lineno++; yyerrprepf(yyg, lit("newline in regex"), nao); return ERRTOK; } YY_BREAK case 109: /* rule 109 can match eol */ YY_RULE_SETUP #line 989 "parser.l" { yyextra->lineno++; yylval->chr = yytext[0]; return REGCHAR; } YY_BREAK case 110: YY_RULE_SETUP #line 995 "parser.l" { yylval->chr = yytext[0]; return yytext[0]; } YY_BREAK case 111: YY_RULE_SETUP #line 1000 "parser.l" { yylval->chr = yytext[1]; return REGCHAR; } YY_BREAK case 112: YY_RULE_SETUP #line 1005 "parser.l" { if (opt_compat && opt_compat <= 105) { yylval->chr = yytext[1]; return REGCHAR; } if (yytext[1] == 'x') yyerrprepf(yyg, lit("\\x escape without digits in regex"), nao); else yyerrprepf(yyg, lit("unrecognized escape in regex"), nao); return ERRTOK; } YY_BREAK case 113: YY_RULE_SETUP #line 1018 "parser.l" { yyerrprepf(yyg, lit("dangling backslash in regex"), nao); return ERRTOK; } YY_BREAK case 114: YY_RULE_SETUP #line 1023 "parser.l" { wchar_t wchr[8]; if (utf8_from_buf(wchr, coerce(unsigned char *, yytext), yyleng) != 2) { yylval->lexeme = chk_strdup(wchr); return TEXT; } yylval->chr = wchr[0]; return REGCHAR; } YY_BREAK case 115: YY_RULE_SETUP #line 1033 "parser.l" { yylval->chr = convert(unsigned char, yytext[0]) + 0xDC00; return REGCHAR; } YY_BREAK case 116: YY_RULE_SETUP #line 1038 "parser.l" { yylval->lexeme = utf8_dup_from(yytext); return SPACE; } YY_BREAK case 117: YY_RULE_SETUP #line 1043 "parser.l" { yylval->lexeme = utf8_dup_from(yytext); return TEXT; } YY_BREAK case 118: /* rule 118 can match eol */ YY_RULE_SETUP #line 1048 "parser.l" { yyextra->lineno++; return '\n'; } YY_BREAK case 119: YY_RULE_SETUP #line 1053 "parser.l" { yy_push_state(SPECIAL, yyscanner); return '*'; } YY_BREAK case 120: YY_RULE_SETUP #line 1058 "parser.l" { yy_push_state(SPECIAL, yyscanner); } YY_BREAK case 121: /* rule 121 can match eol */ YY_RULE_SETUP #line 1062 "parser.l" { /* eat whole line comment */ yyextra->lineno++; } YY_BREAK case 122: YY_RULE_SETUP #line 1067 "parser.l" { /* comment to end of line */ } YY_BREAK case 123: YY_RULE_SETUP #line 1071 "parser.l" { yy_pop_state(yyscanner); return yytext[0]; } YY_BREAK case 124: YY_RULE_SETUP #line 1076 "parser.l" { yy_pop_state(yyscanner); return yytext[0]; } YY_BREAK case 125: YY_RULE_SETUP #line 1081 "parser.l" { yylval->chr = char_esc(yytext[1]); return LITCHAR; } YY_BREAK case 126: YY_RULE_SETUP #line 1086 "parser.l" { yylval->chr = char_esc(yytext[1]); return LITCHAR; } YY_BREAK case 127: /* rule 127 can match eol */ YY_RULE_SETUP #line 1091 "parser.l" { yyextra->lineno++; } YY_BREAK case 128: /* rule 128 can match eol */ YY_RULE_SETUP #line 1095 "parser.l" { yyextra->lineno++; if (!opt_compat || opt_compat > 109) return ' '; } YY_BREAK case 129: YY_RULE_SETUP #line 1103 "parser.l" { yylval->chr = num_esc(yyg, yytext+1); return LITCHAR; } YY_BREAK case 130: YY_RULE_SETUP #line 1108 "parser.l" { yyerrorf(yyg, lit("\\x escape without digits"), nao); } YY_BREAK case 131: YY_RULE_SETUP #line 1112 "parser.l" { yyerrorf(yyg, lit("unrecognized escape: \\~a"), chr(yytext[1]), nao); } YY_BREAK case 132: YY_RULE_SETUP #line 1116 "parser.l" { yylval->chr = num_esc(yyg, yytext); return LITCHAR; } YY_BREAK case 133: YY_RULE_SETUP #line 1121 "parser.l" { yylval->lexeme = utf8_dup_from(yytext); return SYMTOK; } YY_BREAK case 134: YY_RULE_SETUP #line 1126 "parser.l" { yylval->lexeme = utf8_dup_from(yytext); return SYMTOK; /* hack */ } YY_BREAK case 135: /* rule 135 can match eol */ YY_RULE_SETUP #line 1131 "parser.l" { yyerrprepf(yyg, lit("newline in string literal"), nao); yyextra->lineno++; yylval->chr = yytext[0]; return ERRTOK; } YY_BREAK case 136: /* rule 136 can match eol */ YY_RULE_SETUP #line 1138 "parser.l" { yyerrprepf(yyg, lit("newline in character literal"), nao); yyextra->lineno++; yylval->chr = yytext[0]; return ERRTOK; } YY_BREAK case 137: /* rule 137 can match eol */ YY_RULE_SETUP #line 1145 "parser.l" { yyerrprepf(yyg, lit("newline in string quasiliteral"), nao); yyextra->lineno++; yylval->chr = yytext[0]; return ERRTOK; } YY_BREAK case 138: /* rule 138 can match eol */ YY_RULE_SETUP #line 1152 "parser.l" { yyextra->lineno++; if (opt_compat && opt_compat <= 109) return ' '; yyerrprepf(yyg, lit("newline in word list literal"), nao); yylval->chr = yytext[0]; return ERRTOK; } YY_BREAK case 139: YY_RULE_SETUP #line 1163 "parser.l" { yy_push_state(QSPECIAL, yyscanner); yylval->val = nil; if (yytext[1] == '~') { yytext[strcspn(yytext, ":")] = 0; yylval->val = string_utf8(yytext + 1); } return yytext[0]; } YY_BREAK case 140: YY_RULE_SETUP #line 1173 "parser.l" { yyerrprepf(yyg, lit("bad format string after @ in quasiliteral"), nao); return ERRTOK; } YY_BREAK case 141: YY_RULE_SETUP #line 1178 "parser.l" { yyerrprepf(yyg, lit("malformed @ expression in quasiliteral"), nao); return ERRTOK; } YY_BREAK case 142: YY_RULE_SETUP #line 1183 "parser.l" { return ' '; } YY_BREAK case 143: YY_RULE_SETUP #line 1187 "parser.l" { if (yytext[0] == yyextra->json_quote_char) { yy_pop_state(yyscanner); return yytext[0]; } else { yylval->chr = char_esc(yytext[0]); return LITCHAR; } } YY_BREAK case 144: YY_RULE_SETUP #line 1197 "parser.l" { if (yytext[1] == '\'' && !yyextra->read_bad_json && yyextra->json_quote_char != '\'') { goto bad_json_esc; } yylval->chr = char_esc(yytext[1]); return LITCHAR; } YY_BREAK case 145: YY_RULE_SETUP #line 1208 "parser.l" { wchar_t ch0, ch1; yytext[6] = 0; ch0 = num_esc(yyg, yytext + 1); ch1 = num_esc(yyg, yytext + 7); yylval->chr = ((ch0 - 0xD800) << 10 | (ch1 - 0xDC00)) + 0x10000; return LITCHAR; } YY_BREAK case 146: YY_RULE_SETUP #line 1217 "parser.l" { wchar_t ch = num_esc(yyg, yytext + 1); yylval->chr = if3(ch, ch, 0xDC00); return LITCHAR; } YY_BREAK case 147: YY_RULE_SETUP #line 1223 "parser.l" { yyerrorf(yyg, lit("JSON \\u escape needs four digits"), nao); } YY_BREAK case 148: YY_RULE_SETUP #line 1227 "parser.l" { bad_json_esc: yyerrorf(yyg, lit("unrecognized JSON escape: \\~a"), chr(yytext[1]), nao); } YY_BREAK case 149: /* rule 149 can match eol */ YY_RULE_SETUP #line 1232 "parser.l" { yyerrprepf(yyg, lit("newline in JSON string"), nao); yyextra->lineno++; yylval->chr = yytext[0]; return ERRTOK; } YY_BREAK case 150: YY_RULE_SETUP #line 1239 "parser.l" { wchar_t wchr[8]; if (utf8_from_buf(wchr, coerce(unsigned char *, yytext), yyleng) != 2) { yylval->lexeme = chk_strdup(wchr); return TEXT; } yylval->chr = wchr[0]; return LITCHAR; } YY_BREAK case 151: YY_RULE_SETUP #line 1249 "parser.l" { yylval->chr = yytext[0] - '0'; return LITCHAR; } YY_BREAK case 152: YY_RULE_SETUP #line 1254 "parser.l" { yylval->chr = yytext[0] - 'A' + 10; return LITCHAR; } YY_BREAK case 153: YY_RULE_SETUP #line 1259 "parser.l" { yylval->chr = yytext[0] - 'a' + 10; return LITCHAR; } YY_BREAK case 154: YY_RULE_SETUP #line 1264 "parser.l" { return '\''; } YY_BREAK case 155: YY_RULE_SETUP #line 1268 "parser.l" { } YY_BREAK case 156: /* rule 156 can match eol */ YY_RULE_SETUP #line 1271 "parser.l" { yyextra->lineno++; } YY_BREAK case 157: YY_RULE_SETUP #line 1275 "parser.l" { yyerrorf(yyg, lit("bad character ~s in buffer literal"), chr(yytext[0]), nao); } YY_BREAK case 158: YY_RULE_SETUP #line 1280 "parser.l" { yylval->chr = convert(unsigned char, yytext[0]) + 0xDC00; return LITCHAR; } YY_BREAK case 159: YY_RULE_SETUP #line 1285 "parser.l" { if (yyextra->read_json_int && !strpbrk(yytext, ".eE")) { wchar_t *wtxt = utf8_dup_from(yytext); yylval->val = int_str_wc(wtxt, num(10)); free(wtxt); } else if ((yylval->val = flo_str_utf8(yytext)) == nil) { out_of_range_float(yyg, yytext); } return NUMBER; } YY_BREAK case 160: /* rule 160 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_bp + 4); yyg->yy_c_buf_p = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 1296 "parser.l" { yylval->val = t; return JSKW; } YY_BREAK case 161: /* rule 161 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_bp + 5); yyg->yy_c_buf_p = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 1301 "parser.l" { yylval->val = nil; return JSKW; } YY_BREAK case 162: /* rule 162 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_bp + 4); yyg->yy_c_buf_p = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 1306 "parser.l" { yylval->val = null_s; return JSKW; } YY_BREAK case 163: YY_RULE_SETUP #line 1311 "parser.l" { if (strcmp("true", yytext) == 0) { yylval->val = t; return JSKW; } if (strcmp("false", yytext) == 0) { yylval->val = nil; return JSKW; } if (strcmp("null", yytext) == 0) { yylval->val = null_s; return JSKW; } { val str = string_own(utf8_dup_from(yytext)); yyerrorf(yyg, lit("unrecognized JSON syntax: ~a"), str, nao); } } YY_BREAK case 164: YY_RULE_SETUP #line 1333 "parser.l" { yy_push_state(JLIT, yyscanner); return yyextra->json_quote_char = yytext[0]; } YY_BREAK case 165: YY_RULE_SETUP #line 1338 "parser.l" { yy_push_state(JLIT, yyscanner); return yyextra->json_quote_char = yytext[0]; } YY_BREAK case 166: YY_RULE_SETUP #line 1343 "parser.l" { yy_push_state(JMARKER, yyscanner); yy_push_state(NESTED, yyscanner); return JSPLICE; } YY_BREAK case 167: YY_RULE_SETUP #line 1349 "parser.l" { yy_push_state(JMARKER, yyscanner); yy_push_state(NESTED, yyscanner); return yytext[0]; } YY_BREAK case 168: YY_RULE_SETUP #line 1355 "parser.l" { return yytext[0]; } YY_BREAK case 169: /* rule 169 can match eol */ YY_RULE_SETUP #line 1359 "parser.l" { yyextra->lineno++; } YY_BREAK case 170: YY_RULE_SETUP #line 1363 "parser.l" { } YY_BREAK case 171: YY_RULE_SETUP #line 1366 "parser.l" { yyerrorf(yyg, lit("bad character ~s in JSON literal"), chr(yytext[0]), nao); } YY_BREAK case 172: YY_RULE_SETUP #line 1371 "parser.l" { internal_error("scanner processed input JMARKER state"); } YY_BREAK case 173: YY_RULE_SETUP #line 1375 "parser.l" ECHO; YY_BREAK #line 6746 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(SPECIAL): case YY_STATE_EOF(BRACED): case YY_STATE_EOF(NESTED): case YY_STATE_EOF(REGEX): case YY_STATE_EOF(SREGEX): case YY_STATE_EOF(STRLIT): case YY_STATE_EOF(CHRLIT): case YY_STATE_EOF(QSILIT): case YY_STATE_EOF(QSPECIAL): case YY_STATE_EOF(WLIT): case YY_STATE_EOF(QWLIT): case YY_STATE_EOF(BUFLIT): case YY_STATE_EOF(JSON): case YY_STATE_EOF(JLIT): case YY_STATE_EOF(JMARKER): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yyg->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. */ yyg->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 ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); /* 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 , yyscanner); yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yyg->yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yyg->yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap( yyscanner ) ) { /* 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. */ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->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 user's declarations */ } /* 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 (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->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 ( yyg->yy_c_buf_p - yyg->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) (yyg->yy_c_buf_p - yyg->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 = yyg->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. */ YY_FATAL_ERROR( "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); } 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]), yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin , yyscanner); } 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; if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->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 (yyscan_t yyscanner) { yy_state_type yy_current_state; char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; yy_current_state += YY_AT_BOL(); yyg->yy_state_ptr = yyg->yy_state_buf; *yyg->yy_state_ptr++ = yy_current_state; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 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 >= 1777 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; *yyg->yy_state_ptr++ = yy_current_state; } 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 , yyscan_t yyscanner) { int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ YY_CHAR yy_c = 1; 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 >= 1777 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 1776); if ( ! yy_is_jam ) *yyg->yy_state_ptr++ = yy_current_state; (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT static void yyunput (int c, char * yy_bp , yyscan_t yyscanner) { char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_cp = yyg->yy_c_buf_p; /* undo effects of setting up yytext */ *yy_cp = yyg->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. */ int number_to_move = yyg->yy_n_chars + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 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 = yyg->yy_n_chars = (int) 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; yyg->yytext_ptr = yy_bp; yyg->yy_hold_char = *yy_cp; yyg->yy_c_buf_p = yy_cp; } #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) #else static int input (yyscan_t yyscanner) #endif { int c; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; if ( *yyg->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 ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { 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 , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else return input(yyscanner); #endif } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + offset; break; } } } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( yyscanner ); /* 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. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->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. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); 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( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); 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 , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 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 , yyscanner ); yyfree( (void *) b , yyscanner ); } /* 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 , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); 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 = 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. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 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( yyscanner ); } /** 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. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state( yyscanner ); yyg->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 (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->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; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->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 * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { 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 NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (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 = NULL; 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 , yyscanner ); 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 yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @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 (const char * yystr , yyscan_t yyscanner) { return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** 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 yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n , yyscanner ); 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 , yyscanner); 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; } static void yy_push_state (int _new_state , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth ) { yy_size_t new_size; yyg->yy_start_stack_depth += YY_START_STACK_INCR; new_size = (yy_size_t) yyg->yy_start_stack_depth * sizeof( int ); if ( ! yyg->yy_start_stack ) yyg->yy_start_stack = (int *) yyalloc( new_size , yyscanner ); else yyg->yy_start_stack = (int *) yyrealloc( (void *) yyg->yy_start_stack, new_size , yyscanner ); if ( ! yyg->yy_start_stack ) YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); } yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START; BEGIN(_new_state); } static void yy_pop_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( --yyg->yy_start_stack_ptr < 0 ) YY_FATAL_ERROR( "start-condition stack underflow" ); BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]); } static int yy_top_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1]; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; 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] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ YYSTYPE * yyget_lval (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yylval; } void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylval = yylval_param; } /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; yyg->yy_start = 0; yyg->yy_start_stack_ptr = 0; yyg->yy_start_stack_depth = 0; yyg->yy_start_stack = NULL; yyg->yy_state_buf = 0; yyg->yy_state_ptr = 0; yyg->yy_full_match = 0; yyg->yy_lp = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #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 (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack , yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree( yyg->yy_start_stack , yyscanner ); yyg->yy_start_stack = NULL; yyfree ( yyg->yy_state_buf , yyscanner); yyg->yy_state_buf = 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( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* 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 realloc(ptr, size); } void yyfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 1375 "parser.l" static int directive_tok(scanner_t *yyscanner, int tok, int state) { struct yyguts_t *yyg = convert(struct yyguts_t *, yyscanner); char *pstart = yytext + 1 + strspn(yytext + 1, " \t"); char *pcolon = strchr(pstart, ':'); char *pend = pstart + strspn(pstart, ":-abcdefghijklmnopqrstuvwxyz"); *pend = 0; if (pcolon != 0) { val pkgname = string_utf8((*pcolon = 0, pstart)); val package = if3(pstart[0], find_package(pkgname), keyword_package); if (!package) { yyerrprepf(yyg, lit("package ~a not found"), pkgname, nao); tok = ERRTOK; } if (package != user_package && package != keyword_package) { val sym = string_utf8(pcolon + 1); yyerrprepf(yyg, lit("~a:~a: original usr package expected, not ~a"), pkgname, sym, pkgname, nao); tok = ERRTOK; } } else { val symname = string_utf8(pstart); val sym = intern_fallback(symname, cur_package); val package = symbol_package(sym); if (package != user_package && package != keyword_package) { yyerrprepf(yyg, lit("~a: this is ~a:~a, not usr:~a"), symname, package_name(package), symname, symname, nao); tok = ERRTOK; } } if (state != 0) yy_push_state(state, yyscanner); else yy_pop_state(yyscanner); yylval->lineno = yyextra->lineno; return tok; } void end_of_regex(scanner_t *yyg) { if (YYSTATE != REGEX && YYSTATE != SREGEX) internal_error("end_of_regex called in wrong scanner state"); yy_pop_state(yyg); if (YYSTATE != INITIAL) { if (yy_top_state(yyg) == INITIAL || yy_top_state(yyg) == QSILIT || yy_top_state(yyg) == QWLIT) yy_pop_state(yyg); } } void end_of_char(scanner_t *yyg) { if (YYSTATE != CHRLIT) internal_error("end_of_char called in wrong scanner state"); yy_pop_state(yyg); } void end_of_buflit(scanner_t *yyg) { if (YYSTATE != BUFLIT) internal_error("end_of_buflit called in wrong scanner state"); yy_pop_state(yyg); } void end_of_json(scanner_t *yyg) { if (YYSTATE == JLIT) yy_pop_state(yyg); if (YYSTATE != JSON) internal_error("end_of_json called in wrong scanner state"); yy_pop_state(yyg); } /* The complexity here is necessary because TXR Lisp parsing looks ahead * by one token. (The reason for *that* is the support of a.b.c referencing dot * syntax in TXR Lisp.) * * Consider these two different cases: * * ^#J[,~(+ 2.0 2.0)] * ^#J[,~(+ 2.0 2.0) #J42] * * This end_of_json_unquote function gets called when the (+ 2.0 2.0) * has been parsed, but the Yacc-generated parser has shifted one tokan * ahead. It has read the ] token in the one case or the #J token in * the other. These tokens have totally different effects on the Lex * start condition. When the lexer reads the ] token, it pops off a NESTED * state, whereas the #J token wants to push on a new JSON state. * By the time end_of_json_unquote has been called, this has already happened. * * To deal with this, we use the dummy JMARKER start state which serves as a * kind of parenthesis inside the start condition stack. BHefore scanning Lisp * unquote within JSON, we push JMARKER state first, then the NESTED state. * * If the lookahead token is like ], and pops off a state, it will pop off * our NESTED state, so we are left at the JMARKER state. If the lookahead * token is something else like #J (HASH_J), then it will push a new * state like JSON on top, and we have JMARKER NESTED JSON. * * So what we are doing here is popping off everything until we get down * to the JMARKER state, and putting it into our little save area. * * Then we lose the JMARKER state. * * If the save area is empty, it means that the lookahead token consumed * our NESTED state, and so we are done. * * If the save area is not empty, it means the lookahead put something * extra over our NESTED state. We drop that state from our save area, * and restore the rest of the save area back into the stack. * Effectively, we are deleting the unquote-related states from the * interior of the start condition stack, not to disturb new material * initiated by the lookahead token. */ void end_of_json_unquote(scanner_t *yyg) { int stacksave[8]; int top = 0; while (YYSTATE != JMARKER) { stacksave[top++] = YYSTATE; yy_pop_state(yyg); } yy_pop_state(yyg); if (top-- > 0) { while (top > 0) yy_push_state(stacksave[--top], yyg); } } val source_loc(val form) { return gethash(form_to_ln_hash, form); } val source_loc_str(val form, val alt) { cons_bind (line, file, gethash(form_to_ln_hash, form)); if (missingp(alt)) alt = lit("source location n/a"); return if3(line, format(nil, lit("~a:~d"), file, line, nao), alt); } int yylex(YYSTYPE *yylval_param, yyscan_t yyscanner) { struct yyguts_t * yyg = convert(struct yyguts_t *, yyscanner); int yy_char; if (yyextra->tok_idx > 0) { struct yy_token *tok = &yyextra->tok_pushback[--yyextra->tok_idx]; yyextra->recent_tok = *tok; *yylval_param = tok->yy_lval; if (tok->yy_lex_state && tok->yy_lex_state != YYSTATE) yy_push_state(tok->yy_lex_state, yyg); return tok->yy_char; } yy_char = yyextra->recent_tok.yy_char = yylex_impl(yylval_param, yyscanner); yyextra->recent_tok.yy_lval = *yylval_param; yyextra->recent_tok.yy_lex_state = YYSTATE; return yy_char; } void prime_scanner(scanner_t *yyg, enum prime_parser prim) { while (YYSTATE != INITIAL) yy_pop_state(yyg); switch (prim) { case prime_lisp: case prime_interactive: yy_push_state(SPECIAL, yyg); yy_push_state(NESTED, yyg); yy_push_state(NESTED, yyg); break; case prime_regex: yy_push_state(SREGEX, yyg); break; case prime_json: yy_push_state(JSON, yyg); break; } } void scrub_scanner(scanner_t *yyg, int yy_char, wchar_t *lexeme) { struct yy_token *rtok = &yyextra->recent_tok; if (rtok->yy_char == yy_char && rtok->yy_lval.lexeme == lexeme) { rtok->yy_char = 0; rtok->yy_lval.lexeme = 0; } } int scanner_has_buffered_bytes(scanner_t *yyg) { YY_BUFFER_STATE bs = YY_CURRENT_BUFFER; return bs ? (bs->yy_ch_buf + yyg->yy_n_chars - yyg->yy_c_buf_p) > 0 : 0; } void scanner_get_buffered_bytes(struct shadow_context *sc, scanner_t *yyg) { YY_BUFFER_STATE bs = YY_CURRENT_BUFFER; sc->bs = bs; yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE, yyg), yyg); sc->buf = coerce(unsigned char *, bs->yy_buf_pos); sc->size = bs->yy_n_chars - (bs->yy_buf_pos - bs->yy_ch_buf); sc->index = 0; sc->scanner = yyg; } void scanner_free_buffered_bytes(struct shadow_context *sc) { yy_delete_buffer(sc->bs, sc->scanner); sc->bs = 0; } void parser_l_init(void) { prot1(&form_to_ln_hash); form_to_ln_hash = make_eq_hash(hash_weak_keys); (void) &yy_fatal_error; /* suppress unused function warning */ }