52#define YYBISON_VERSION "3.8.2"
55#define YYSKELETON_NAME "yacc.c"
74# error needs pure parser
77#define YYERROR_VERBOSE 1
78#define YYSTACK_USE_ALLOCA 0
79#define YYLTYPE rb_code_location_t
80#define YYLTYPE_IS_DECLARED 1
95#ifndef WARN_PAST_SCOPE
96# define WARN_PAST_SCOPE 0
101#define yydebug (p->debug)
103#define YYMALLOC(size) rb_parser_malloc(p, (size))
104#define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
105#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
106#define YYFREE(ptr) rb_parser_free(p, (ptr))
107#define YYFPRINTF rb_parser_printf
108#define YY_LOCATION_PRINT(File, loc) \
109 rb_parser_printf(p, "%d.%d-%d.%d", \
110 (loc).beg_pos.lineno, (loc).beg_pos.column,\
111 (loc).end_pos.lineno, (loc).end_pos.column)
112#define YYLLOC_DEFAULT(Current, Rhs, N) \
116 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
117 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
121 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
122 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
126#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
127 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
128#define RUBY_SET_YYLLOC_OF_NONE(Current) \
129 rb_parser_set_location_of_none(p, &(Current))
130#define RUBY_SET_YYLLOC(Current) \
131 rb_parser_set_location(p, &(Current))
132#define RUBY_INIT_YYLLOC() \
134 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
135 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
156#define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
176#define IS_lex_state_for(x, ls) ((x) & (ls))
177#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
178#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
179#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
181# define SET_LEX_STATE(ls) \
184 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
185 (enum lex_state_e)(ls)))
191# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
192# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
193# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
194# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
195# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
199#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
200#define COND_POP() BITSTACK_POP(cond_stack)
201#define COND_P() BITSTACK_SET_P(cond_stack)
202#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
206#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
207#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
208#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
209#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
239#define NUMPARAM_ID_P(id) numparam_id_p(id)
240#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
241#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
251#define DVARS_INHERIT ((void*)1)
252#define DVARS_TOPSCOPE NULL
253#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
334 unsigned int eofp: 1;
336 unsigned int debug: 1;
345 unsigned int past_scope_enabled: 1;
375 VALUE parsing_thread;
379#define intern_cstr(n,l,en) rb_intern3(n,l,en)
381#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
382#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
383#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
384#define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
385#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
418#define yyerror0(msg) parser_yyerror(p, NULL, (msg))
419#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
420#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
421#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
424#define compile_for_eval (0)
426#define compile_for_eval (p->parent_iseq != 0)
429#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
431#define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
432#define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
433#define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
435#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
463#define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
477set_line_body(
NODE *body,
int line)
487#define yyparse ruby_yyparse
491#define new_nil(loc) NEW_NIL(loc)
502static NODE *remove_begin_all(
NODE*);
503#define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
526static bool args_info_empty_p(
struct rb_args_info *args);
571#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
591#define get_id(id) (id)
592#define get_value(val) (val)
593#define get_num(num) (num)
595#define NODE_RIPPER NODE_CDECL
597static inline int ripper_is_node_yylval(
VALUE n);
602 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
603 add_mark_object(p, b);
604 add_mark_object(p, c);
609ripper_is_node_yylval(
VALUE n)
614#define value_expr(node) ((void)(node))
615#define remove_begin(node) (node)
616#define void_stmts(p,x) (x)
617#define rb_dvar_defined(id, base) 0
618#define rb_local_defined(id, base) 0
620#define get_id(id) ripper_get_id(id)
622#define get_value(val) ripper_get_value(val)
623#define get_num(num) (int)get_id(num)
627#define method_cond(p,node,loc) (node)
628#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
629#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
630#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
631#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
633#define new_nil(loc) Qnil
680#define dyna_var(p, id) local_var(p, id)
691# define METHOD_NOT idNOT
693# define METHOD_NOT '!'
696#define idFWD_REST '*'
698#define idFWD_KWREST idPow
700#define idFWD_KWREST 0
702#define idFWD_BLOCK '&'
704#define RE_OPTION_ONCE (1<<16)
705#define RE_OPTION_ENCODING_SHIFT 8
706#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
707#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
708#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
709#define RE_OPTION_MASK 0xff
710#define RE_OPTION_ARG_ENCODING_NONE 32
732#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
739#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
741# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
743# define HERETERM_LENGTH_MAX UINT_MAX
746#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
756#define STRTERM_HEREDOC IMEMO_FL_USER0
778#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
781#define TOKEN2ID(tok) ( \
782 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
783 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
784 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
785 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
786 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
787 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
788 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
793#define RIPPER_VERSION "0.1.0"
795static inline VALUE intern_sym(
const char *
name);
809#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
810#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
811#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
812#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
813#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
814#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
815#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
817#define yyparse ripper_yyparse
819#define ID2VAL(id) STATIC_ID2SYM(id)
820#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
821#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
823#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
824 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
826#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
833 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
840 add_mark_object(p, kw_args);
841 add_mark_object(p, kw_rest_arg);
842 add_mark_object(p, block);
865 if (!
NIL_P(pre_arg)) {
891 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
900#define new_hash(p,h,l) rb_ary_new_from_args(0)
913 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
921 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
928 add_mark_object(p, kw_args);
929 add_mark_object(p, kw_rest_arg);
933#define new_defined(p,expr,loc) dispatch1(defined, (expr))
938#define ID2VAL(id) (id)
939#define TOKEN2VAL(t) ID2VAL(t)
940#define KWD2EID(t, v) keyword_##t
946# define ifndef_ripper(x) (x)
950# define ifndef_ripper(x)
953# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
954# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
955# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
956# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
957# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
958# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
959# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
960# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
961# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
962# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
963# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
964# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
965# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
966# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
967# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
968# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
969# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
970# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
971# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
972# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
974static ID id_warn, id_warning, id_gets, id_assoc;
975# define WARN_S_L(s,l) STR_NEW(s,l)
976# define WARN_S(s) STR_NEW2(s)
977# define WARN_I(i) INT2NUM(i)
978# define WARN_ID(i) rb_id2str(i)
979# define WARN_IVAL(i) i
981# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
982# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
983# ifdef HAVE_VA_ARGS_MACRO
984# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
986# define WARN_CALL rb_funcall
988# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
989# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
990# ifdef HAVE_VA_ARGS_MACRO
991# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
993# define WARNING_CALL rb_funcall
996# define compile_error ripper_compile_error
998# define WARN_S_L(s,l) s
1001# define WARN_ID(i) rb_id2name(i)
1002# define WARN_IVAL(i) NUM2INT(i)
1003# define PRIsWARN PRIsVALUE
1004# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1005# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1006# define WARN_CALL rb_compile_warn
1007# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1008# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1009# define WARNING_CALL rb_compile_warning
1011# define compile_error parser_compile_error
1019#define WARN_EOL(tok) \
1020 (looking_at_eol_p(p) ? \
1021 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1029# define YY_CAST(Type, Val) static_cast<Type> (Val)
1030# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1032# define YY_CAST(Type, Val) ((Type) (Val))
1033# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1037# if defined __cplusplus
1038# if 201103L <= __cplusplus
1039# define YY_NULLPTR nullptr
1041# define YY_NULLPTR 0
1044# define YY_NULLPTR ((void*)0)
1050#ifndef YY_YY_Y_TAB_H_INCLUDED
1051# define YY_YY_Y_TAB_H_INCLUDED
1195#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1212# define YYSTYPE_IS_TRIVIAL 1
1213# define YYSTYPE_IS_DECLARED 1
1217#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1226# define YYLTYPE_IS_DECLARED 1
1227# define YYLTYPE_IS_TRIVIAL 1
1675#ifndef __PTRDIFF_MAX__
1677# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1688#ifdef __INT_LEAST8_MAX__
1690#elif defined YY_STDINT_H
1696#ifdef __INT_LEAST16_MAX__
1698#elif defined YY_STDINT_H
1710# undef UINT_LEAST8_MAX
1711# undef UINT_LEAST16_MAX
1712# define UINT_LEAST8_MAX 255
1713# define UINT_LEAST16_MAX 65535
1716#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1718#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1719 && UINT_LEAST8_MAX <= INT_MAX)
1721#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1727#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1729#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1730 && UINT_LEAST16_MAX <= INT_MAX)
1732#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1739# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1740# define YYPTRDIFF_T __PTRDIFF_TYPE__
1741# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1742# elif defined PTRDIFF_MAX
1746# define YYPTRDIFF_T ptrdiff_t
1747# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1749# define YYPTRDIFF_T long
1750# define YYPTRDIFF_MAXIMUM LONG_MAX
1755# ifdef __SIZE_TYPE__
1756# define YYSIZE_T __SIZE_TYPE__
1757# elif defined size_t
1758# define YYSIZE_T size_t
1759# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1761# define YYSIZE_T size_t
1763# define YYSIZE_T unsigned
1767#define YYSIZE_MAXIMUM \
1768 YY_CAST (YYPTRDIFF_T, \
1769 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1770 ? YYPTRDIFF_MAXIMUM \
1771 : YY_CAST (YYSIZE_T, -1)))
1773#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1783# if defined YYENABLE_NLS && YYENABLE_NLS
1785# include <libintl.h>
1786# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1790# define YY_(Msgid) Msgid
1795#ifndef YY_ATTRIBUTE_PURE
1796# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1797# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1799# define YY_ATTRIBUTE_PURE
1803#ifndef YY_ATTRIBUTE_UNUSED
1804# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1805# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1807# define YY_ATTRIBUTE_UNUSED
1812#if ! defined lint || defined __GNUC__
1813# define YY_USE(E) ((void) (E))
1819#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1820# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1821# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1822 _Pragma ("GCC diagnostic push") \
1823 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1825# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1826 _Pragma ("GCC diagnostic push") \
1827 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1828 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1830# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1831 _Pragma ("GCC diagnostic pop")
1833# define YY_INITIAL_VALUE(Value) Value
1835#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1836# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1837# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1839#ifndef YY_INITIAL_VALUE
1840# define YY_INITIAL_VALUE(Value)
1843#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1844# define YY_IGNORE_USELESS_CAST_BEGIN \
1845 _Pragma ("GCC diagnostic push") \
1846 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1847# define YY_IGNORE_USELESS_CAST_END \
1848 _Pragma ("GCC diagnostic pop")
1850#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1851# define YY_IGNORE_USELESS_CAST_BEGIN
1852# define YY_IGNORE_USELESS_CAST_END
1856#define YY_ASSERT(E) ((void) (0 && (E)))
1862# ifdef YYSTACK_USE_ALLOCA
1863# if YYSTACK_USE_ALLOCA
1865# define YYSTACK_ALLOC __builtin_alloca
1866# elif defined __BUILTIN_VA_ARG_INCR
1869# define YYSTACK_ALLOC __alloca
1870# elif defined _MSC_VER
1872# define alloca _alloca
1874# define YYSTACK_ALLOC alloca
1875# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1878# ifndef EXIT_SUCCESS
1879# define EXIT_SUCCESS 0
1886# ifdef YYSTACK_ALLOC
1888# define YYSTACK_FREE(Ptr) do { ; } while (0)
1889# ifndef YYSTACK_ALLOC_MAXIMUM
1894# define YYSTACK_ALLOC_MAXIMUM 4032
1897# define YYSTACK_ALLOC YYMALLOC
1898# define YYSTACK_FREE YYFREE
1899# ifndef YYSTACK_ALLOC_MAXIMUM
1900# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1902# if (defined __cplusplus && ! defined EXIT_SUCCESS \
1903 && ! ((defined YYMALLOC || defined malloc) \
1904 && (defined YYFREE || defined free)))
1906# ifndef EXIT_SUCCESS
1907# define EXIT_SUCCESS 0
1911# define YYMALLOC malloc
1912# if ! defined malloc && ! defined EXIT_SUCCESS
1918# if ! defined free && ! defined EXIT_SUCCESS
1925#if (! defined yyoverflow \
1926 && (! defined __cplusplus \
1927 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
1928 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1939# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1943# define YYSTACK_BYTES(N) \
1944 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
1945 + YYSIZEOF (YYLTYPE)) \
1946 + 2 * YYSTACK_GAP_MAXIMUM)
1948# define YYCOPY_NEEDED 1
1955# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1958 YYPTRDIFF_T yynewbytes; \
1959 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1960 Stack = &yyptr->Stack_alloc; \
1961 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1962 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1968#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1972# if defined __GNUC__ && 1 < __GNUC__
1973# define YYCOPY(Dst, Src, Count) \
1974 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1976# define YYCOPY(Dst, Src, Count) \
1980 for (yyi = 0; yyi < (Count); yyi++) \
1981 (Dst)[yyi] = (Src)[yyi]; \
1994#define YYNTOKENS 154
2000#define YYNSTATES 1251
2003#define YYMAXUTOK 353
2008#define YYTRANSLATE(YYX) \
2009 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2010 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2017 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
2018 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
2019 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2020 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
2021 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
2022 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
2023 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
2024 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2025 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2026 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
2027 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2028 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2029 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
2030 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
2031 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
2032 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2033 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2034 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2035 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2036 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2037 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2038 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2039 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2040 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2041 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2042 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2043 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2044 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2045 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2046 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2047 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2048 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2049 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
2050 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2051 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2059 0, 1204, 1204, 1204, 1230, 1236, 1243, 1250, 1257, 1263,
2060 1264, 1270, 1283, 1281, 1292, 1303, 1309, 1316, 1323, 1330,
2061 1336, 1341, 1340, 1350, 1350, 1357, 1364, 1374, 1382, 1389,
2062 1397, 1405, 1417, 1429, 1439, 1453, 1454, 1462, 1470, 1479,
2063 1486, 1489, 1496, 1503, 1511, 1518, 1525, 1533, 1540, 1550,
2064 1555, 1564, 1567, 1568, 1572, 1576, 1580, 1585, 1592, 1594,
2065 1584, 1602, 1605, 1612, 1612, 1612, 1618, 1619, 1622, 1623,
2066 1632, 1642, 1652, 1661, 1672, 1679, 1686, 1693, 1700, 1708,
2067 1716, 1723, 1730, 1739, 1740, 1749, 1750, 1759, 1766, 1773,
2068 1780, 1787, 1794, 1801, 1808, 1815, 1822, 1831, 1832, 1841,
2069 1848, 1857, 1864, 1873, 1880, 1887, 1894, 1904, 1911, 1921,
2070 1928, 1935, 1945, 1952, 1959, 1966, 1973, 1980, 1987, 1994,
2071 2001, 2011, 2018, 2021, 2028, 2035, 2044, 2045, 2046, 2047,
2072 2052, 2055, 2062, 2065, 2072, 2072, 2082, 2083, 2084, 2085,
2073 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095,
2074 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105,
2075 2106, 2107, 2108, 2109, 2110, 2111, 2114, 2114, 2114, 2115,
2076 2115, 2116, 2116, 2116, 2117, 2117, 2117, 2117, 2118, 2118,
2077 2118, 2118, 2119, 2119, 2119, 2120, 2120, 2120, 2120, 2121,
2078 2121, 2121, 2121, 2122, 2122, 2122, 2122, 2123, 2123, 2123,
2079 2123, 2124, 2124, 2124, 2124, 2125, 2125, 2128, 2135, 2142,
2080 2150, 2158, 2166, 2174, 2182, 2189, 2197, 2206, 2215, 2227,
2081 2239, 2251, 2263, 2267, 2271, 2275, 2279, 2283, 2287, 2291,
2082 2295, 2299, 2303, 2307, 2311, 2315, 2316, 2320, 2324, 2328,
2083 2332, 2336, 2340, 2344, 2348, 2352, 2356, 2360, 2360, 2365,
2084 2374, 2380, 2381, 2382, 2383, 2386, 2390, 2397, 2404, 2405,
2085 2409, 2416, 2425, 2430, 2441, 2448, 2474, 2503, 2504, 2507,
2086 2508, 2509, 2513, 2520, 2529, 2537, 2544, 2552, 2560, 2564,
2087 2564, 2601, 2610, 2614, 2620, 2627, 2634, 2641, 2650, 2651,
2088 2654, 2661, 2668, 2677, 2678, 2679, 2680, 2681, 2682, 2683,
2089 2684, 2685, 2686, 2687, 2695, 2694, 2709, 2709, 2716, 2716,
2090 2724, 2732, 2739, 2746, 2753, 2761, 2768, 2775, 2782, 2789,
2091 2789, 2794, 2798, 2802, 2809, 2810, 2819, 2818, 2829, 2840,
2092 2851, 2861, 2872, 2871, 2888, 2887, 2902, 2911, 2956, 2955,
2093 2979, 2978, 3001, 3000, 3024, 3030, 3023, 3050, 3051, 3050,
2094 3076, 3083, 3090, 3097, 3106, 3113, 3119, 3136, 3142, 3148,
2095 3154, 3160, 3166, 3172, 3178, 3184, 3190, 3196, 3202, 3208,
2096 3214, 3229, 3236, 3242, 3249, 3250, 3251, 3254, 3255, 3258,
2097 3259, 3271, 3272, 3281, 3282, 3285, 3293, 3302, 3309, 3318,
2098 3325, 3332, 3339, 3346, 3355, 3363, 3372, 3376, 3380, 3384,
2099 3388, 3394, 3399, 3404, 3408, 3412, 3416, 3420, 3424, 3432,
2100 3436, 3440, 3444, 3448, 3452, 3456, 3460, 3464, 3470, 3471,
2101 3477, 3486, 3498, 3502, 3511, 3513, 3517, 3522, 3528, 3531,
2102 3535, 3539, 3543, 3528, 3567, 3575, 3585, 3590, 3596, 3606,
2103 3620, 3627, 3634, 3643, 3652, 3660, 3668, 3675, 3683, 3691,
2104 3698, 3705, 3718, 3726, 3736, 3737, 3741, 3736, 3758, 3759,
2105 3763, 3758, 3782, 3790, 3797, 3805, 3814, 3826, 3827, 3831,
2106 3837, 3838, 3840, 3841, 3842, 3830, 3855, 3856, 3859, 3860,
2107 3868, 3878, 3879, 3884, 3892, 3896, 3902, 3905, 3914, 3917,
2108 3924, 3927, 3928, 3930, 3931, 3940, 3949, 3954, 3963, 3972,
2109 3977, 3977, 3982, 3988, 3987, 3999, 4004, 4004, 4011, 4020,
2110 4024, 4033, 4037, 4041, 4045, 4049, 4052, 4056, 4065, 4069,
2111 4073, 4077, 4083, 4084, 4093, 4102, 4106, 4110, 4114, 4118,
2112 4122, 4128, 4130, 4139, 4147, 4161, 4162, 4185, 4189, 4195,
2113 4201, 4202, 4211, 4220, 4232, 4244, 4245, 4246, 4247, 4259,
2114 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4289,
2115 4288, 4301, 4311, 4324, 4331, 4338, 4347, 4359, 4362, 4369,
2116 4376, 4379, 4383, 4386, 4393, 4396, 4397, 4400, 4417, 4418,
2117 4419, 4428, 4438, 4447, 4453, 4463, 4469, 4478, 4480, 4489,
2118 4499, 4505, 4514, 4523, 4533, 4539, 4549, 4555, 4565, 4575,
2119 4594, 4600, 4610, 4620, 4661, 4664, 4663, 4680, 4684, 4689,
2120 4693, 4697, 4679, 4718, 4725, 4732, 4739, 4742, 4743, 4746,
2121 4756, 4757, 4758, 4759, 4762, 4772, 4773, 4783, 4784, 4785,
2122 4786, 4789, 4790, 4791, 4792, 4793, 4796, 4797, 4798, 4799,
2123 4800, 4801, 4802, 4805, 4818, 4827, 4834, 4843, 4844, 4848,
2124 4847, 4857, 4865, 4874, 4889, 4904, 4904, 4918, 4922, 4926,
2125 4930, 4934, 4940, 4945, 4950, 4954, 4958, 4962, 4966, 4970,
2126 4974, 4978, 4982, 4986, 4990, 4994, 4998, 5002, 5007, 5013,
2127 5022, 5030, 5038, 5046, 5056, 5057, 5065, 5074, 5082, 5103,
2128 5105, 5118, 5128, 5136, 5146, 5153, 5162, 5169, 5179, 5186,
2129 5195, 5196, 5199, 5207, 5215, 5225, 5235, 5245, 5252, 5261,
2130 5268, 5277, 5278, 5281, 5289, 5299, 5300, 5303, 5313, 5317,
2131 5323, 5328, 5328, 5352, 5353, 5362, 5364, 5387, 5398, 5405,
2132 5413, 5432, 5433, 5434, 5437, 5438, 5439, 5440, 5443, 5444,
2133 5445, 5448, 5449, 5452, 5453, 5456, 5457, 5460, 5461, 5464,
2134 5465, 5468, 5471, 5474, 5477, 5478, 5479, 5482, 5483, 5486,
2140#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2149static const char *
const yytname[] =
2151 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2152 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2153 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2154 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2155 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2156 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2157 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2158 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2159 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2160 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2161 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2162 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2163 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2164 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2165 "\"constant\"",
"\"class variable\"",
"tLABEL",
"\"integer literal\"",
2166 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2167 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2168 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
2169 "\"escaped space\"",
"\"escaped horizontal tab\"",
2170 "\"escaped form feed\"",
"\"escaped carriage return\"",
2171 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2172 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2173 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2174 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2175 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2176 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2177 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2178 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2179 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2180 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2181 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
2182 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
2183 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
2184 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
2185 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
2186 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
2187 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
2188 "expr_value",
"expr_value_do",
"$@8",
"$@9",
"command_call",
2189 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
2190 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
2191 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
2192 "$@10",
"op",
"reswords",
"arg",
"$@11",
"relop",
"rel_expr",
2193 "arg_value",
"aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
2194 "opt_call_args",
"call_args",
"command_args",
"$@12",
"block_arg",
2195 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"$@13",
"$@14",
2196 "$@15",
"$@16",
"$@17",
"@18",
"@19",
"$@20",
"@21",
"$@22",
"@23",
2197 "@24",
"@25",
"@26",
"primary_value",
"k_begin",
"k_if",
"k_unless",
2198 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
2199 "k_do",
"k_do_block",
"k_rescue",
"k_ensure",
"k_when",
"k_else",
2200 "k_elsif",
"k_end",
"k_return",
"then",
"do",
"if_tail",
"opt_else",
2201 "for_var",
"f_marg",
"f_marg_list",
"f_margs",
"f_rest_marg",
2202 "block_args_tail",
"opt_block_args_tail",
"block_param",
2203 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
2204 "lambda",
"@27",
"@28",
"@29",
"@30",
"$@31",
"f_larglist",
2205 "lambda_body",
"do_block",
"block_call",
"method_call",
"brace_block",
2206 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
2207 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"@40",
2208 "$@41",
"$@42",
"$@43",
"p_cases",
"p_top_expr",
"p_top_expr_body",
2209 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
2210 "@44",
"@45",
"@46",
"p_args",
"p_args_head",
"p_args_tail",
2211 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
2212 "p_kwrest",
"p_kwnorest",
"p_value",
"p_primitive",
"$@47",
"p_variable",
2213 "p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
2214 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
2215 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
2216 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
2217 "xstring_contents",
"regexp_contents",
"string_content",
"@48",
"$@49",
2218 "@50",
"@51",
"@52",
"@53",
"string_dvar",
"symbol",
"ssym",
"sym",
2219 "dsym",
"numeric",
"simple_numeric",
"user_variable",
"keyword_variable",
2220 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@54",
"f_arglist",
2221 "@55",
"args_tail",
"opt_args_tail",
"f_args",
"args_forward",
2222 "f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
2223 "f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
"f_kwarg",
2224 "kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
"f_block_opt",
2225 "f_block_optarg",
"f_optarg",
"restarg_mark",
"f_rest_arg",
2226 "blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
"singleton",
"$@56",
2227 "assoc_list",
"assocs",
"assoc",
"operation",
"operation2",
"operation3",
2228 "dot_or_colon",
"call_op",
"call_op2",
"opt_terms",
"opt_nl",
"rparen",
2229 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none",
YY_NULLPTR
2235 return yytname[yysymbol];
2239#define YYPACT_NINF (-1040)
2241#define yypact_value_is_default(Yyn) \
2242 ((Yyn) == YYPACT_NINF)
2244#define YYTABLE_NINF (-762)
2246#define yytable_value_is_error(Yyn) \
2247 ((Yyn) == YYTABLE_NINF)
2253 -1040, 114, 3745, -1040, 9167, -1040, -1040, -1040, 8625, -1040,
2254 -1040, -1040, -1040, -1040, -1040, -1040, 9293, 9293, -1040, -1040,
2255 -1040, 5085, 4644, -1040, -1040, -1040, -1040, 384, 8480, -27,
2256 236, 280, -1040, -1040, -1040, 3909, 4791, -1040, -1040, 4056,
2257 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 11057, 11057,
2258 11057, 11057, 124, 6680, 9419, 9923, 10301, 8909, -1040, 8335,
2259 -1040, -1040, -1040, 282, 316, 388, 413, 996, 11183, 11057,
2260 -1040, 799, -1040, 1065, -1040, 374, -1040, -1040, 367, 549,
2261 495, -1040, 485, 11435, -1040, 520, 1591, 398, 65, 348,
2262 -1040, 11309, 11309, -1040, -1040, 7662, 11557, 11679, 11801, 8189,
2263 9293, 424, 95, -1040, -1040, 544, -1040, -1040, -1040, -1040,
2264 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 323, 435,
2265 -1040, 570, 518, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2266 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2267 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2268 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2269 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2270 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2271 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2272 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2273 -1040, -1040, 547, -1040, -1040, -1040, 580, 11057, 634, 6831,
2274 11057, 11057, 11057, -1040, 11057, -1040, 613, 4181, 679, -1040,
2275 -1040, 640, 496, 353, 453, 696, 553, 655, -1040, -1040,
2276 7536, -1040, 9293, 9545, -1040, -1040, 7788, -1040, 11309, 863,
2277 -1040, 671, 6982, -1040, 7133, -1040, -1040, 702, 708, 367,
2278 -1040, 531, -1040, 759, 4328, 4328, 551, 9419, -1040, 6680,
2279 713, 799, -1040, 1065, -27, 745, -1040, 1065, -27, 750,
2280 -33, 38, -1040, 679, 765, 38, -1040, -27, 838, 996,
2281 11923, 769, -1040, 536, 562, 605, 659, -1040, -1040, -1040,
2282 -1040, -1040, 600, -1040, 716, 911, 438, -1040, -1040, -1040,
2283 -1040, 843, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 7914,
2284 11309, 11309, 11309, 11309, 9419, 11309, 11309, -1040, -1040, -1040,
2285 824, -1040, -1040, -1040, -1040, -1040, 10427, -1040, 6680, 9038,
2286 794, 10427, -1040, 11057, 11057, 11057, 11057, 11057, -1040, -1040,
2287 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, -1040,
2288 -1040, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057,
2289 11057, -1040, -1040, 12386, 9293, 12476, 5824, 374, 106, 106,
2290 7284, 11309, 7284, 799, -1040, 798, 885, -1040, -1040, 662,
2291 928, 117, 127, 141, 439, 670, 11309, 880, -1040, 832,
2292 701, -1040, -1040, -1040, -1040, 34, 78, 415, 543, 558,
2293 612, 626, 632, 720, -1040, -1040, -1040, 732, -1040, -1040,
2294 -1040, 13736, -1040, -1040, 11183, 11183, -1040, -1040, 585, -1040,
2295 -1040, -1040, 777, 11057, 11057, 9671, -1040, -1040, 12566, 9293,
2296 12656, 11057, 11057, 10049, -1040, -27, 826, -1040, -1040, 11057,
2297 -27, -1040, 836, -27, 842, -1040, 133, -1040, -1040, -1040,
2298 -1040, -1040, 8625, -1040, 11057, 834, 847, 12566, 12656, 11057,
2299 1065, 236, -27, -1040, -1040, 8040, 846, -27, -1040, -1040,
2300 10175, -1040, -1040, 10301, -1040, -1040, -1040, 671, 731, -1040,
2301 -1040, 850, 11923, 12746, 9293, 12836, -1040, -1040, -1040, -1040,
2302 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 931, 59,
2303 960, 340, 11057, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2304 -1040, -1040, 851, -1040, -1040, -1040, 990, -1040, 990, 11057,
2305 -1040, 855, 857, 963, -1040, -27, 11923, 858, -1040, -1040,
2306 -1040, 966, 887, 3887, -1040, -1040, -1040, 737, 663, -1040,
2307 759, 4622, 4622, 4622, 4622, 4769, 4475, 4622, 4622, 4328,
2308 4328, 849, 849, 3200, 1162, 1162, 886, 436, 436, 759,
2309 759, 759, 1842, 1842, 5232, 4203, 5526, 4350, -1040, 708,
2310 -1040, -27, 866, 588, -1040, 666, -1040, -1040, 4938, 990,
2311 1010, -1040, 5975, 1012, 6428, 990, 54, 990, 1003, 1018,
2312 144, 12926, 9293, 13016, -1040, 374, -1040, 731, -1040, -1040,
2313 -1040, 13106, 9293, 13196, 5824, 11309, -1040, -1040, -1040, -1040,
2314 -1040, -1040, 3529, -1040, 4034, -1040, -1040, -1040, 8625, 11057,
2315 -1040, 11057, 679, -1040, 655, 3369, 4497, -27, 688, 722,
2316 -1040, -1040, -1040, -1040, 9797, -1040, 10049, -1040, -1040, 11309,
2317 4181, -1040, -1040, 708, 708, -1040, -1040, 345, -1040, -1040,
2318 38, 11923, 850, 37, 470, -27, 271, 349, -1040, -1040,
2319 1007, -1040, 487, -1040, 877, -1040, -1040, 491, 884, -1040,
2320 759, -1040, -1040, 893, -1040, -1040, -1040, -1040, 895, 10553,
2321 9419, -1040, 850, 11923, 9419, 11183, 11057, 13286, 9293, 13376,
2322 12319, 918, 11183, 11183, -1040, 824, 889, 727, 9671, 11183,
2323 11183, -1040, -1040, 824, -1040, -1040, -1040, 10679, 738, -1040,
2324 574, -1040, 1033, -1040, -1040, -1040, -1040, -1040, -1040, 1018,
2325 990, -1040, 10805, 990, 72, 235, -27, 156, 312, 7284,
2326 799, 11309, 5824, 897, 470, -1040, -27, 990, 133, 921,
2327 8770, 95, 549, -1040, -1040, -1040, -1040, 11057, 11057, 733,
2328 11057, 11057, -27, 920, 133, -1040, -1040, 350, -1040, -1040,
2329 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2330 939, -1040, 939, 11057, 927, -1040, 850, -1040, 4181, 5379,
2331 5673, -27, 753, 786, -1040, -1040, 2945, 2945, 881, -1040,
2332 356, 631, -1040, 1024, 978, -1040, 952, -1040, -1040, 742,
2333 -1040, -1040, 341, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2334 -1040, -1040, 11057, -1040, -1040, -1040, -1040, -1040, -1040, 11183,
2335 -1040, -1040, -1040, -1040, -1040, 855, -1040, 989, -1040, -1040,
2336 -1040, 7284, -1040, -1040, -1040, -1040, 7284, 11309, 990, -1040,
2337 -1040, 990, -1040, -1040, 990, -1040, 11057, -1040, 26, -1040,
2338 332, 990, 5824, 799, 990, -1040, -1040, -1040, 2196, 5824,
2339 2402, -1040, -1040, -1040, 11057, -1040, 10049, -1040, 1834, -1040,
2340 1556, 7133, -1040, -1040, 5824, 944, 787, -1040, -1040, -1040,
2341 -1040, 12319, 12200, -1040, 577, 949, -1040, -1040, -1040, 1043,
2342 -1040, 12319, 2945, 2945, 881, 356, 790, 3608, 3608, 4181,
2343 -1040, -1040, 12045, 106, -1040, -1040, 6554, -1040, 106, -1040,
2344 -1040, -1040, -1040, -1040, 10931, 6126, -1040, 990, -1040, -1040,
2345 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 1151, -1040,
2346 -1040, -1040, -1040, -1040, -1040, -27, -27, -1040, -1040, 973,
2347 -1040, 954, 11057, -1040, 956, 546, 965, 965, -1040, 967,
2348 1049, 968, 1066, -1040, 990, 799, 974, 921, 2402, -1040,
2349 -1040, -1040, -1040, -27, 991, 995, 979, 12167, -1040, 981,
2350 965, 965, -1040, 982, 992, -1040, 999, -1040, -1040, 3,
2351 264, 355, -27, 12286, -1040, 1001, -1040, -1040, -27, 1011,
2352 -1040, 12319, -1040, -1040, 744, -1040, -1040, -1040, -1040, -1040,
2353 -1040, -1040, -1040, -1040, -1040, -27, -27, -27, -27, 1068,
2354 -1040, 743, 198, 203, 213, 5824, 1133, 5975, 3608, 11057,
2355 -1040, 955, -1040, 1151, 1079, -1040, 1022, -27, 1025, -1040,
2356 -1040, -1040, 11057, 2196, -1040, -1040, 714, -1040, -1040, -1040,
2357 -1040, 243, -1040, -1040, 2402, -1040, -1040, 1417, -1040, -1040,
2358 -1040, -1040, 2402, 5824, -27, 291, 7410, 1027, -1040, 12167,
2359 2402, -1040, 1108, 748, 714, -1040, -1040, -1040, 2402, -1040,
2360 1417, -1040, 1089, -1040, 1028, 12319, -1040, 307, 978, 1031,
2361 -1040, 652, -1040, 577, 978, -1040, -1040, 800, -1040, -1040,
2362 -1040, -1040, 248, 13466, 9293, 13556, 1010, -1040, 574, 106,
2363 801, 377, -1040, -1040, -1040, -1040, -1040, -1040, -27, -1040,
2364 1151, -1040, 1097, -1040, -1040, -27, -1040, 1032, 1037, -1040,
2365 1121, 965, -1040, 1040, -1040, 1041, -1040, 1040, 990, 1046,
2366 5824, 7133, -1040, 1069, -1040, 748, -1040, 1051, 1053, -1040,
2367 13646, -1040, 965, 1054, -1040, 1067, 1054, -1040, 542, -1040,
2368 -1040, 12319, 1071, -1040, 1072, 12319, -1040, -1040, -1040, -1040,
2369 -1040, 61, 202, -27, 286, 313, -1040, -1040, -1040, 11309,
2370 11309, 12200, -1040, -1040, 1073, 1074, -1040, 2402, -1040, 1417,
2371 -1040, -1040, 1417, -1040, 1417, -1040, -1040, -1040, -1040, 990,
2372 1048, -1040, 2402, -1040, 1417, -1040, 1075, 1076, -1040, 1417,
2373 -1040, 1417, -1040, -1040, 1089, -1040, 1071, 12319, 12319, 1071,
2374 321, -1040, -1040, -1040, -1040, 1097, 1097, 1040, 1080, 1040,
2375 1040, -1040, -1040, 1054, 1087, 1054, 1054, -1040, -1040, 1071,
2376 -1040, 1074, -1040, 1417, -1040, -1040, -1040, -1040, 1417, -1040,
2377 -1040, -1040, 6277, 1040, 1054, 576, -1040, -1040, -1040, -1040,
2386 2, 0, 0, 1, 0, 362, 363, 364, 0, 355,
2387 356, 357, 360, 358, 359, 361, 350, 351, 352, 353,
2388 373, 279, 279, 637, 636, 638, 639, 749, 0, 749,
2389 0, 0, 641, 640, 642, 731, 733, 633, 632, 732,
2390 635, 627, 628, 629, 630, 578, 647, 648, 0, 0,
2391 0, 0, 0, 0, 306, 761, 761, 95, 326, 598,
2392 598, 600, 602, 0, 0, 0, 0, 0, 0, 0,
2393 3, 747, 6, 9, 35, 40, 52, 67, 279, 66,
2394 0, 83, 0, 87, 97, 0, 61, 235, 250, 0,
2395 304, 0, 0, 63, 63, 747, 0, 0, 0, 0,
2396 315, 68, 324, 293, 294, 577, 579, 295, 296, 297,
2397 299, 298, 300, 576, 617, 618, 575, 625, 643, 644,
2398 301, 0, 302, 71, 5, 8, 176, 187, 177, 200,
2399 173, 193, 183, 182, 203, 204, 198, 181, 180, 175,
2400 201, 205, 206, 185, 174, 188, 192, 194, 186, 179,
2401 195, 202, 197, 196, 189, 199, 184, 172, 191, 190,
2402 171, 178, 169, 170, 166, 167, 168, 126, 128, 127,
2403 161, 162, 157, 139, 140, 141, 148, 145, 147, 142,
2404 143, 163, 164, 149, 150, 154, 158, 144, 146, 136,
2405 137, 138, 151, 152, 153, 155, 156, 159, 160, 165,
2406 131, 133, 28, 129, 130, 132, 0, 0, 0, 0,
2407 0, 0, 0, 598, 0, 274, 0, 257, 284, 81,
2408 278, 761, 0, 643, 644, 0, 302, 761, 725, 82,
2409 749, 79, 0, 761, 449, 78, 749, 750, 0, 0,
2410 23, 247, 0, 10, 0, 350, 351, 318, 450, 0,
2411 229, 0, 315, 230, 220, 221, 312, 0, 21, 0,
2412 0, 747, 17, 20, 749, 85, 16, 308, 749, 0,
2413 754, 754, 258, 0, 0, 754, 723, 749, 0, 0,
2414 0, 93, 354, 0, 103, 104, 111, 428, 622, 621,
2415 623, 620, 0, 619, 0, 0, 0, 585, 594, 590,
2416 596, 626, 56, 241, 242, 757, 758, 4, 759, 748,
2417 0, 0, 0, 0, 0, 0, 0, 365, 454, 443,
2418 72, 458, 323, 366, 458, 439, 0, 99, 0, 91,
2419 88, 0, 57, 0, 0, 0, 0, 0, 253, 254,
2420 0, 0, 0, 0, 218, 219, 0, 0, 0, 251,
2421 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2422 0, 743, 744, 0, 761, 0, 0, 62, 0, 0,
2423 0, 0, 0, 747, 334, 748, 0, 384, 383, 0,
2424 0, 643, 644, 302, 121, 122, 0, 0, 124, 651,
2425 0, 643, 644, 302, 342, 196, 189, 199, 184, 166,
2426 167, 168, 126, 127, 721, 344, 720, 0, 80, 746,
2427 745, 0, 325, 580, 0, 0, 134, 728, 312, 285,
2428 730, 281, 0, 0, 0, 0, 275, 283, 0, 761,
2429 0, 0, 0, 0, 276, 749, 0, 317, 280, 679,
2430 749, 270, 761, 749, 761, 269, 749, 322, 55, 25,
2431 27, 26, 0, 319, 0, 0, 0, 0, 0, 0,
2432 19, 0, 749, 310, 15, 748, 84, 749, 307, 313,
2433 756, 755, 259, 756, 261, 314, 724, 0, 110, 626,
2434 101, 96, 0, 0, 761, 0, 327, 429, 604, 624,
2435 607, 605, 599, 581, 582, 601, 583, 603, 0, 0,
2436 0, 0, 0, 760, 7, 29, 30, 31, 32, 33,
2437 53, 54, 0, 455, 454, 73, 0, 459, 0, 0,
2438 36, 289, 0, 39, 288, 749, 0, 89, 100, 51,
2439 41, 49, 0, 262, 284, 207, 37, 0, 302, 58,
2440 227, 234, 236, 237, 238, 245, 246, 239, 240, 216,
2441 217, 243, 244, 749, 231, 232, 233, 222, 223, 224,
2442 225, 226, 255, 256, 734, 736, 735, 737, 448, 279,
2443 446, 749, 761, 734, 736, 735, 737, 447, 279, 0,
2444 761, 375, 0, 374, 0, 0, 0, 0, 332, 0,
2445 312, 0, 761, 0, 63, 340, 121, 122, 123, 649,
2446 338, 0, 761, 0, 0, 0, 345, 741, 742, 347,
2447 734, 735, 279, 42, 262, 208, 48, 215, 0, 0,
2448 727, 0, 286, 282, 761, 734, 735, 749, 734, 735,
2449 726, 316, 751, 264, 271, 266, 273, 321, 24, 0,
2450 248, 11, 34, 0, 761, 214, 22, 86, 18, 309,
2451 754, 0, 94, 738, 109, 749, 734, 735, 430, 608,
2452 0, 584, 0, 587, 0, 592, 589, 0, 0, 593,
2453 228, 452, 456, 0, 372, 453, 460, 438, 292, 0,
2454 0, 98, 92, 0, 0, 0, 0, 0, 761, 0,
2455 0, 0, 0, 0, 445, 76, 0, 451, 271, 0,
2456 0, 268, 444, 74, 267, 305, 367, 761, 761, 567,
2457 761, 376, 761, 330, 378, 64, 377, 331, 469, 0,
2458 0, 369, 0, 0, 738, 311, 749, 734, 735, 0,
2459 0, 0, 0, 121, 122, 125, 749, 0, 749, 655,
2460 0, 440, 69, 135, 729, 287, 277, 0, 0, 451,
2461 0, 0, 749, 761, 749, 260, 102, 451, 431, 609,
2462 613, 614, 615, 606, 616, 586, 588, 595, 591, 597,
2463 761, 70, 761, 0, 290, 38, 90, 50, 263, 734,
2464 735, 749, 734, 735, 561, 565, 0, 0, 0, 506,
2465 500, 503, 559, 0, 59, 486, 488, 490, 493, 540,
2466 545, 546, 547, 550, 551, 552, 553, 554, 556, 555,
2467 557, 558, 0, 47, 212, 46, 213, 77, 752, 0,
2468 44, 210, 45, 211, 75, 568, 569, 761, 570, 368,
2469 370, 0, 12, 14, 574, 371, 0, 0, 0, 379,
2470 381, 0, 65, 470, 0, 336, 0, 462, 0, 335,
2471 451, 0, 0, 0, 0, 451, 343, 722, 678, 0,
2472 678, 348, 441, 442, 0, 265, 272, 320, 678, 610,
2473 749, 0, 419, 418, 0, 291, 451, 548, 549, 122,
2474 563, 0, 0, 502, 0, 0, 505, 428, 562, 0,
2475 60, 0, 543, 544, 0, 492, 491, 0, 0, 249,
2476 43, 209, 0, 0, 572, 573, 0, 382, 0, 328,
2477 329, 471, 333, 463, 0, 0, 337, 0, 650, 339,
2478 685, 682, 681, 680, 683, 691, 700, 679, 0, 712,
2479 701, 716, 715, 711, 677, 749, 749, 684, 686, 687,
2480 689, 663, 693, 698, 761, 704, 761, 761, 709, 663,
2481 714, 663, 0, 661, 0, 0, 663, 655, 678, 432,
2482 435, 611, 417, 749, 0, 687, 402, 695, 696, 761,
2483 761, 761, 707, 402, 402, 400, 422, 457, 461, 749,
2484 520, 508, 749, 509, 515, 0, 535, 598, 749, 526,
2485 531, 534, 528, 530, 538, 753, 560, 487, 489, 541,
2486 542, 564, 499, 496, 598, 749, 749, 749, 749, 0,
2487 571, 0, 643, 644, 302, 0, 761, 0, 0, 0,
2488 464, 761, 341, 0, 395, 387, 389, 749, 392, 385,
2489 652, 654, 0, 0, 670, 692, 0, 658, 719, 702,
2490 703, 0, 660, 659, 0, 673, 713, 0, 675, 717,
2491 346, 656, 0, 0, 749, 0, 0, 0, 420, 0,
2492 408, 410, 0, 694, 0, 397, 399, 398, 0, 413,
2493 0, 415, 0, 507, 518, 0, 501, 513, 524, 510,
2494 516, 0, 504, 527, 533, 539, 537, 0, 494, 495,
2495 497, 498, 312, 0, 761, 0, 761, 13, 761, 0,
2496 478, 481, 484, 485, 465, 467, 468, 466, 749, 394,
2497 0, 688, 0, 705, 662, 749, 690, 663, 663, 699,
2498 704, 761, 718, 663, 710, 663, 687, 663, 0, 0,
2499 0, 0, 433, 0, 421, 706, 401, 402, 402, 312,
2500 0, 697, 761, 402, 708, 402, 402, 426, 749, 424,
2501 427, 0, 521, 522, 511, 0, 517, 536, 532, 525,
2502 529, 738, 311, 749, 734, 735, 566, 380, 472, 0,
2503 0, 482, 386, 388, 390, 393, 653, 0, 666, 0,
2504 668, 657, 0, 674, 0, 671, 676, 349, 434, 0,
2505 0, 612, 0, 405, 0, 407, 738, 311, 396, 0,
2506 414, 0, 411, 416, 0, 423, 519, 0, 0, 514,
2507 451, 473, 479, 480, 483, 0, 0, 663, 663, 663,
2508 663, 437, 436, 402, 402, 402, 402, 425, 523, 512,
2509 474, 391, 667, 0, 664, 669, 672, 406, 0, 403,
2510 409, 412, 0, 663, 402, 761, 665, 404, 476, 477,
2517 -1040, -1040, -1040, 972, -1040, 19, 754, -545, -1040, -51,
2518 -1040, 756, -1040, 68, -1040, -264, -308, -83, -1040, -1040,
2519 -1040, -66, -75, -1040, -1040, -25, -1040, -323, 645, 4,
2520 1126, -154, 7, -26, -1040, -391, 11, 2057, -345, 1127,
2521 -58, -11, -1040, -1040, 2, -1040, 2889, -1040, 1147, -1040,
2522 1411, -1040, 110, 60, 630, -350, 100, -15, -1040, -381,
2523 -205, 39, -1040, -307, -32, -1040, -1040, -1040, -1040, -1040,
2524 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 32,
2525 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2526 -1040, -1040, -1040, -1040, -1040, 538, -1040, 331, 1177, -364,
2527 -1040, 146, -694, -1040, -1027, -1039, 230, 152, 393, 308,
2528 -1040, 501, -1040, -886, -1040, 74, 389, -1040, -1040, -1040,
2529 -1040, -1040, -1040, -1040, 537, -1040, -1040, -96, 766, -1040,
2530 -1040, -1040, 962, -1040, -1040, -1040, -1040, -688, -1040, 42,
2531 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -603,
2532 -1040, -1040, -1040, -1040, 399, -1040, -1040, -1040, -860, -1040,
2533 274, -991, -605, -822, -1040, 206, -1040, 210, 218, -1040,
2534 -643, -1040, 414, -1040, -1040, 208, -1040, -1040, 289, 373,
2535 675, -1040, 1197, 1459, 1483, 1523, -1040, 806, 1936, -1040,
2536 1965, 2010, -1040, -1040, -56, -1040, -1040, -200, -1040, -1040,
2537 -1040, -1040, -1040, -1040, -1040, 5, -1040, -1040, -1040, -1040,
2538 -21, 1967, 1113, 1209, 1908, 1709, -1040, -1040, 352, -1040,
2539 -770, 412, -776, -607, -1001, -829, 207, -915, -287, -62,
2540 275, 249, -1040, -1040, -489, -327, 168, -975, -957, 256,
2541 -879, -1040, -729, -1040, 120, -748, -1040, -1040, -1040, 92,
2542 -393, -1040, -318, -1040, -1040, -86, -1040, -37, 253, 848,
2543 -577, 329, -243, -60, -55, -2
2549 0, 1, 2, 70, 71, 72, 243, 579, 906, 580,
2550 261, 262, 461, 263, 452, 74, 530, 75, 539, 690,
2551 890, 368, 370, 371, 842, 76, 77, 515, 249, 79,
2552 80, 264, 81, 82, 83, 481, 84, 216, 388, 389,
2553 200, 201, 202, 618, 567, 204, 86, 454, 359, 87,
2554 218, 269, 535, 568, 702, 440, 441, 231, 232, 220,
2555 426, 572, 523, 524, 88, 366, 268, 467, 639, 287,
2556 719, 589, 732, 730, 604, 606, 739, 740, 957, 251,
2557 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
2558 321, 324, 707, 831, 722, 836, 837, 675, 252, 582,
2559 715, 838, 839, 380, 1025, 1026, 1027, 1028, 1136, 1061,
2560 963, 871, 872, 964, 1148, 1149, 486, 487, 658, 758,
2561 868, 1055, 959, 1132, 325, 101, 102, 322, 512, 513,
2562 672, 770, 516, 517, 676, 772, 848, 723, 1107, 720,
2563 843, 911, 1018, 1211, 1230, 1242, 1250, 1099, 1100, 1078,
2564 795, 796, 897, 898, 797, 882, 884, 881, 982, 983,
2565 984, 1152, 985, 988, 989, 990, 991, 992, 993, 798,
2566 799, 887, 800, 801, 802, 708, 827, 903, 833, 103,
2567 104, 105, 106, 107, 108, 109, 498, 662, 110, 500,
2568 111, 112, 499, 501, 292, 295, 296, 492, 660, 659,
2569 759, 869, 961, 1056, 763, 113, 114, 293, 115, 116,
2570 117, 223, 224, 120, 225, 226, 600, 731, 859, 860,
2571 1114, 1034, 935, 443, 937, 938, 1126, 940, 956, 942,
2572 943, 968, 969, 944, 945, 946, 947, 948, 972, 973,
2573 949, 950, 951, 952, 953, 1037, 407, 605, 274, 444,
2574 228, 123, 643, 570, 609, 603, 411, 307, 436, 437,
2575 697, 886, 472, 583, 375, 266
2583 124, 291, 260, 365, 294, 584, 412, 235, 367, 367,
2584 203, 308, 367, 205, 571, 410, 309, 240, 841, 372,
2585 215, 215, 434, 125, 536, 282, 369, 752, 474, 373,
2586 203, 844, 476, 205, 89, 308, 89, 1005, 1007, 581,
2587 630, 405, 598, 302, 623, 569, 301, 578, 222, 222,
2588 749, 282, 623, 272, 276, 221, 221, 330, 374, 737,
2589 265, 203, -107, 320, 282, 282, 282, 529, 281, 1124,
2590 73, 1150, 73, 1175, -116, 1006, 1008, 1057, 757, 627,
2591 630, 714, 234, 1173, 955, 89, 89, 794, 934, 283,
2592 934, 652, 960, 612, 270, 495, 497, -116, 934, 1029,
2593 222, 203, -637, 889, 215, 462, 613, 616, 227, 227,
2594 569, 1144, 578, 470, 3, 283, 219, 229, 1116, 581,
2595 471, 317, 267, 222, 222, 664, 237, 222, 379, 390,
2596 390, -637, 222, -354, 655, 682, 430, 1116, 319, 221,
2597 644, 974, -112, 877, 878, 1116, -636, 271, 275, 850,
2598 529, 529, -113, 446, 1117, 448, 237, 422, 260, 855,
2599 1206, -354, -354, -107, 1209, 458, -120, 644, 1129, -119,
2600 315, 316, 914, 1117, 525, -636, 1231, 305, 665, 306,
2601 256, -115, 1054, -107, 473, -734, -107, 854, 934, 1173,
2602 -107, 471, 227, 456, 1029, 1109, 1103, 485, 1042, 1043,
2603 408, 308, 1124, 1150, 876, 305, 465, 306, 260, -734,
2604 -354, -112, -116, 883, -116, -118, -113, 1229, -107, 427,
2605 -734, 1065, 1066, 1067, 464, 427, -120, 367, 367, 367,
2606 367, 445, 510, 511, 215, 1144, 215, 215, 318, 434,
2607 124, 89, 726, 630, 505, 506, 507, 508, 282, 999,
2608 1000, 936, 736, 623, 480, 623, 735, 305, 479, 306,
2609 -118, -119, 222, -103, 222, 222, 265, 1116, 222, 221,
2610 222, 221, 442, -104, 89, 644, 89, 260, 979, 981,
2611 238, 1029, 241, 1029, 1116, 644, 237, -111, 367, 89,
2612 -110, 89, 776, 593, 981, 981, -106, 282, 663, -115,
2613 663, 520, -106, 595, 1118, 586, 531, 917, 234, 319,
2614 73, 1214, 283, 308, 954, 1125, 1074, 623, 1002, 585,
2615 1130, 587, 227, 1118, 227, 460, -117, 1105, 504, 978,
2616 435, 1138, 438, 1106, -114, 265, 588, -117, 781, 1145,
2617 527, 89, 222, 222, 222, 222, 89, 222, 222, -112,
2618 -735, -112, 931, -118, -113, -118, -113, -114, 222, 1154,
2619 89, 283, 445, 537, -120, 522, -120, 576, 215, 569,
2620 522, 578, 817, 1181, -108, -105, 932, 73, 1079, 242,
2621 824, -109, 509, -735, 813, 815, 1029, 1029, 1084, 531,
2622 531, 820, 822, 317, 1198, 994, 222, -106, 89, -119,
2623 826, -119, 89, 222, 89, 1076, 668, 755, 994, 994,
2624 1075, 315, 316, 576, 1131, 1101, 361, -106, 222, 746,
2625 -106, 529, -645, 244, -106, 577, 1115, 445, 529, 529,
2626 1090, 1091, 576, 215, 297, 529, 529, -115, 894, -115,
2627 427, 638, 427, 880, 362, 363, 537, 537, 1218, -112,
2628 282, 689, -645, 1155, 203, 889, 480, 205, -108, 669,
2629 576, 222, 766, 1224, -117, -731, -117, 766, 298, -103,
2630 1153, -84, -114, 630, -114, -108, -105, 889, -105, -112,
2631 338, 339, 445, -638, 915, 623, 895, 576, 215, 896,
2632 577, -98, 361, 364, 282, -108, -105, 89, -108, -105,
2633 480, -524, -108, -105, 488, 496, -749, -631, 1128, 237,
2634 318, 900, -638, 333, 283, 233, 222, 624, 577, 729,
2635 362, 409, 738, 1171, 615, 617, 716, 349, 350, 994,
2636 477, 710, 236, 712, -646, -631, -631, 237, -311, 1015,
2637 299, 615, 617, 970, 1017, 577, 1153, 1120, 746, 1001,
2638 1153, 1248, -646, 488, 695, 529, 754, 488, 283, 490,
2639 491, -113, 650, 703, 361, 300, -311, -311, 981, 645,
2640 427, 941, 356, 357, 358, 1120, 704, 323, 709, -113,
2641 1039, -104, -731, 966, -631, 1189, 1210, -731, 835, 830,
2642 445, 830, 362, 428, 994, 576, 215, 742, 1040, 361,
2643 445, 718, 1228, 1153, 361, 576, 215, 743, 490, 491,
2644 704, -639, 490, 491, 89, -311, 89, 415, -735, 282,
2645 203, 326, 427, 205, 222, 756, -641, 362, 457, 694,
2646 -643, 327, 362, 483, 222, 986, 89, 222, 701, 765,
2647 -639, 429, 704, 768, -120, 862, 331, 78, 367, 78,
2648 459, 282, 432, 577, 926, -641, 60, 480, -643, -643,
2649 531, 78, 78, 577, -111, 853, 488, 531, 531, 414,
2650 852, 222, 701, -644, 531, 531, 429, -119, 851, -120,
2651 -640, 484, 861, 283, 459, 930, 445, 699, 1204, 987,
2652 418, 576, 215, 416, -642, 237, -732, -110, 78, 78,
2653 -631, -644, -644, 694, 701, 828, 834, -643, 840, -640,
2654 840, -119, 89, 78, -115, 283, 89, 537, 488, 489,
2655 222, 490, 491, -642, 537, 537, 753, -302, 236, -631,
2656 361, 537, 537, 970, -106, 1168, 78, 78, -634, 423,
2657 78, 970, 203, 970, 1163, 78, 522, 829, 775, 577,
2658 -644, 427, 777, 830, 367, -302, -302, 1123, 362, 591,
2659 1127, 89, 415, 222, 89, 700, -634, -634, 873, 361,
2660 873, 908, 925, 490, 491, -749, 1157, 644, 1085, 424,
2661 905, 1143, 488, 1146, 237, 907, 425, 750, -634, -120,
2662 753, 926, -117, 918, 531, 431, 1086, 362, 601, -312,
2663 607, 433, 814, 816, -302, 361, 691, 592, 967, 821,
2664 823, 361, -108, -732, -115, -634, 361, -634, -732, 453,
2665 977, 751, 930, 931, 696, 904, 819, -312, -312, 608,
2666 892, 893, 864, 362, 687, 493, 333, 490, 491, 362,
2667 1093, 1169, 1170, 488, 362, 1140, 602, 932, -117, 677,
2668 230, 537, 699, -114, 78, 1016, 233, 814, 816, -114,
2669 821, 823, 463, 89, 1021, 970, 488, 970, 89, 222,
2670 282, -83, 970, -105, 970, 78, -312, 78, 78, -115,
2671 696, 78, 688, 78, 89, 700, 819, 78, 1094, 78,
2672 1217, 89, 1219, 602, 478, 1051, 493, 1220, 490, 491,
2673 469, 619, 78, 89, 78, 1223, 89, 1225, 696, 475,
2674 705, 970, -117, -114, 1226, 482, 713, 449, 717, 493,
2675 502, 490, 491, -738, 1157, 1095, 333, 450, 451, 901,
2676 514, 1081, 596, 596, 1011, 282, 597, 879, 89, -749,
2677 528, 590, 1038, 237, 1038, 1038, 1243, 89, 1087, 503,
2678 305, 1244, 306, 594, 78, 78, 78, 78, 78, 78,
2679 78, 78, 599, 333, 1096, -738, 1098, 1038, 1038, 1038,
2680 830, 78, 721, 78, 901, 632, 78, 488, 641, 696,
2681 346, 347, 634, 354, 355, 356, 357, 358, 636, 696,
2682 975, 642, -98, -738, -738, 671, 651, 488, 967, 1063,
2683 674, -284, 967, 679, 683, 1133, 967, 680, 967, 78,
2684 684, 78, 698, 685, 834, 78, 78, 78, 706, 840,
2685 354, 355, 356, 357, 358, 711, 488, 282, 718, 767,
2686 494, 78, 490, 491, 696, 721, 769, 771, 971, 818,
2687 -738, -285, -738, 696, 885, -734, 812, 89, 830, 89,
2688 661, 845, 490, 491, 849, 41, 42, 43, 44, 78,
2689 78, 760, 761, 803, 762, 939, 866, 939, 856, 858,
2690 870, 46, 47, -286, 78, 939, 888, 965, 889, 666,
2691 1190, 490, 491, 891, 447, 89, 367, 367, 89, 902,
2692 -287, 1135, 445, 995, 709, 784, 840, 576, 215, 1032,
2693 1033, 1046, 1036, 1212, 1213, 310, 311, 312, 313, 314,
2694 78, 1041, 466, 1044, 1047, 119, 468, 119, 1049, 1038,
2695 1052, 1059, 1058, 976, 1092, 1060, 222, 1064, 1068, 78,
2696 967, 920, 967, 921, 922, 923, 924, 967, 1070, 967,
2697 1038, 1147, 829, 921, 922, 923, 924, 1080, 696, 920,
2698 1072, 921, 922, 923, 924, 577, 1122, 1083, 1134, 803,
2699 803, 1122, 89, 89, 1139, 939, 119, 119, 1110, 909,
2700 285, 1112, 910, 1040, 1151, 912, 967, 1156, 1177, 100,
2701 975, 100, 916, 1179, 1122, 919, 1182, 1184, 975, 1191,
2702 975, 1245, 1222, 100, 100, 1188, 285, 1192, 1023, 1194,
2703 1199, 222, 222, 920, 1121, 921, 922, 923, 924, 382,
2704 392, 392, 392, 1201, 455, 646, 976, 1207, 1208, 1215,
2705 1216, 648, 377, -734, -735, 394, 1233, 78, 971, 78,
2706 100, 100, 1142, 1238, 360, 696, 971, 78, 971, 333,
2707 939, 885, 741, 840, 1167, 100, 832, 78, 1022, 78,
2708 78, 939, 1023, 1108, 803, 803, 346, 347, 1024, 939,
2709 696, 696, 1174, 962, 803, 803, 803, 965, 100, 100,
2710 803, 803, 100, 874, 89, 965, 996, 100, 1227, 863,
2711 673, 1069, 1071, 631, 78, 1050, 518, 1249, 633, 1158,
2712 998, 635, 1102, 1159, 637, 353, 354, 355, 356, 357,
2713 358, 1160, 413, 997, 1166, 1097, 667, 976, 406, 1053,
2714 647, 1119, 975, 1141, 975, 649, 1137, 1082, 0, 975,
2715 0, 975, 119, 0, 0, 78, 0, 0, 0, 78,
2716 78, 0, 0, 78, 0, 0, 0, 78, 78, 0,
2717 0, 0, 0, 0, 78, 78, 0, 0, 0, 0,
2718 0, 0, 0, 0, 0, 119, 803, 119, 975, 0,
2719 971, 1045, 971, 1048, 803, 804, 0, 971, 0, 971,
2720 119, 0, 119, 681, 78, 0, 78, 78, 0, 0,
2721 0, 0, 0, 0, 939, 0, 100, 0, 0, 0,
2722 0, 803, 0, 285, 0, 0, 0, 0, 0, 965,
2723 0, 1205, 0, 0, 0, 0, 971, 100, 0, 100,
2724 100, 0, 0, 100, 0, 100, 696, 0, 0, 100,
2725 0, 100, 119, 0, 0, 0, 0, 119, 0, 0,
2726 0, 0, 0, 0, 100, 0, 100, 0, 0, 0,
2727 0, 119, 285, 0, 0, 1193, 1195, 0, 803, 0,
2728 0, 1200, 0, 1202, 1203, 0, 0, 0, 0, 1187,
2729 0, 804, 804, 0, 78, 0, 0, 273, 0, 920,
2730 0, 921, 922, 923, 924, 925, 78, 0, 0, 119,
2731 0, 78, 78, 119, 0, 119, 100, 100, 100, 100,
2732 100, 100, 100, 100, 926, 0, 0, 78, 0, 0,
2733 0, 0, 0, 100, 78, 100, 0, 0, 100, 0,
2734 0, 0, 0, 0, 0, 0, 78, 0, 928, 78,
2735 1221, 0, 0, 0, 803, 930, 931, 0, 803, 1178,
2736 1180, 1237, 1239, 1240, 1241, 1183, 0, 1185, 0, 1186,
2737 0, 100, 0, 100, 803, 0, 0, 100, 100, 100,
2738 932, 78, 1247, 0, 0, 0, 804, 804, 0, 0,
2739 78, 0, 0, 100, 0, 0, 804, 804, 804, 0,
2740 0, 0, 804, 804, 0, 0, 0, 0, 119, 0,
2741 803, 803, 0, 0, 0, 0, 857, 0, 0, 0,
2742 0, 100, 100, 0, 0, 285, 0, 0, 0, 0,
2743 865, 0, 867, 0, 0, 0, 100, 0, 920, 0,
2744 921, 922, 923, 924, 925, 0, 332, 0, 417, 0,
2745 0, 419, 420, 421, 0, 0, 0, 0, 0, 1232,
2746 1234, 1235, 1236, 926, 0, 0, 0, 0, 0, 285,
2747 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
2748 0, 0, 0, 0, 0, 1246, 0, 928, 804, 0,
2749 78, 100, 78, 929, 930, 931, 804, 0, 333, 334,
2750 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2751 345, 0, 0, 0, 0, 346, 347, 0, 0, 932,
2752 0, 0, 933, 804, 0, 119, 0, 119, 78, 0,
2753 0, 78, 0, 0, 0, 0, 0, 0, 0, 237,
2754 0, 122, 0, 122, 0, 0, 0, 119, 348, 0,
2755 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
2756 0, 0, 0, 0, 0, 0, 0, 521, 0, 78,
2757 0, 0, 534, 0, 1003, 0, 0, 0, 0, 0,
2758 804, 0, 0, 0, 0, 0, 0, 0, 0, 100,
2759 0, 100, 122, 122, 285, 0, 286, 0, 0, 100,
2760 0, 0, 0, 0, 0, 78, 78, 0, 0, 100,
2761 0, 100, 100, 1030, 1031, 0, 0, 0, 0, 0,
2762 0, 0, 286, 119, 0, 0, 285, 119, 0, 0,
2763 0, 0, 0, 811, 0, 383, 393, 393, 0, 0,
2764 0, 0, 0, 0, 78, 78, 100, 0, 0, 0,
2765 0, 0, 0, 0, 0, 0, 804, 1073, 0, 0,
2766 804, 0, 0, 0, 0, 620, 622, 0, 0, 0,
2767 0, 0, 119, 0, 273, 119, 804, 0, 0, 0,
2768 0, 0, 0, 1088, 1089, 0, 0, 100, 0, 0,
2769 0, 100, 100, 0, 0, 100, 0, 0, 0, 100,
2770 100, 0, 0, 0, 0, 1111, 100, 100, 0, 0,
2771 0, 622, 804, 804, 273, 0, 920, 78, 921, 922,
2772 923, 924, 925, 0, 0, 0, 0, 0, 0, 811,
2773 811, 0, 0, 0, 0, 0, 100, 0, 100, 100,
2774 121, 926, 121, 0, 0, 0, 0, 0, 122, 333,
2775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2776 678, 0, 0, 0, 0, 928, 346, 347, 0, 0,
2777 0, 929, 930, 931, 119, 0, 0, 0, 0, 119,
2778 0, 122, 0, 122, 0, 0, 1172, 0, 0, 0,
2779 0, 121, 121, 1176, 0, 119, 122, 932, 122, 118,
2780 933, 118, 119, 351, 352, 353, 354, 355, 356, 357,
2781 358, 0, 958, 0, 119, 0, 0, 119, 0, 286,
2782 0, 0, 0, 0, 811, 811, 100, 0, 0, 0,
2783 0, 0, 0, 0, 811, 811, 811, 0, 100, 0,
2784 811, 811, 0, 100, 100, 1013, 0, 0, 122, 119,
2785 118, 118, 0, 122, 284, 0, 0, 0, 119, 100,
2786 744, 0, 745, 0, 0, 0, 100, 122, 286, 0,
2787 538, 0, 0, 0, 0, 622, 0, 273, 100, 0,
2788 284, 100, 0, 0, 0, 0, 0, 0, 0, 85,
2789 0, 85, 0, 381, 391, 391, 391, 0, 0, 0,
2790 0, 0, 0, 0, 0, 122, 0, 0, 0, 122,
2791 392, 122, 0, 100, 0, 0, 0, 0, 0, 0,
2792 774, 0, 100, 0, 0, 0, 811, 0, 0, 0,
2793 0, 0, 0, 0, 811, 0, 0, 0, 0, 622,
2794 85, 85, 0, 0, 0, 0, 0, 121, 825, 0,
2795 0, 0, 0, 538, 538, 0, 0, 0, 119, 0,
2796 119, 811, 0, 847, 0, 0, 0, 0, 0, 0,
2797 0, 0, 0, 0, 0, 0, 0, 0, 0, 805,
2798 121, 0, 121, 378, 0, 0, 0, 0, 0, 0,
2799 0, 0, 0, 0, 0, 121, 119, 121, 0, 119,
2800 0, 0, 392, 806, 122, 0, 118, 0, 0, 0,
2801 0, 0, 0, 0, 875, 0, 0, 0, 811, 0,
2802 0, 286, 100, 0, 100, 0, 0, 0, 0, 0,
2803 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2804 0, 118, 0, 807, 0, 0, 0, 121, 0, 0,
2805 0, 0, 121, 0, 118, 0, 118, 0, 0, 0,
2806 100, 0, 0, 100, 0, 286, 121, 0, 0, 121,
2807 0, 0, 0, 119, 119, 805, 805, 284, 920, 0,
2808 921, 922, 923, 924, 925, 0, 0, 913, 0, 0,
2809 0, 0, 0, 0, 811, 0, 85, 0, 811, 806,
2810 806, 100, 0, 926, 121, 0, 118, 273, 121, 0,
2811 121, 118, 0, 0, 811, 0, 0, 927, 0, 0,
2812 0, 122, 0, 122, 0, 118, 284, 928, 0, 85,
2813 0, 85, 0, 929, 930, 931, 0, 100, 100, 807,
2814 807, 0, 0, 122, 85, 0, 85, 0, 0, 0,
2815 811, 811, 121, 121, 0, 1020, 0, 0, 0, 932,
2816 0, 0, 933, 118, 0, 0, 0, 118, 0, 118,
2817 805, 805, 0, 0, 0, 0, 100, 100, 0, 0,
2818 805, 805, 805, 1035, 0, 119, 805, 805, 0, 0,
2819 286, 0, 0, 0, 806, 806, 85, 0, 0, 764,
2820 0, 85, 0, 121, 806, 806, 806, 0, 0, 0,
2821 806, 806, 0, 0, 0, 85, 0, 0, 532, 122,
2822 0, 0, 286, 122, 538, 0, 0, 0, 0, 0,
2823 0, 538, 538, 0, 807, 807, 0, 0, 538, 538,
2824 0, 0, 0, 0, 807, 807, 807, 0, 0, 100,
2825 807, 807, 0, 85, 0, 0, 0, 85, 0, 85,
2826 1104, 0, 118, 0, 0, 0, 0, 0, 122, 0,
2827 0, 122, 805, 1113, 0, 0, 0, 0, 0, 284,
2828 805, 0, 0, 0, 920, 0, 921, 922, 923, 924,
2829 925, 0, 0, 0, 0, 0, 806, 0, 0, 0,
2830 0, 532, 532, 0, 806, 0, 0, 805, 0, 926,
2831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2832 121, 0, 121, 284, 0, 0, 0, 0, 0, 0,
2833 0, 806, 0, 928, 0, 0, 807, 0, 0, 929,
2834 930, 931, 121, 0, 807, 0, 0, 0, 0, 0,
2835 0, 0, 85, 0, 0, 0, 0, 0, 538, 0,
2836 0, 0, 0, 0, 805, 932, 0, 0, 933, 0,
2837 122, 807, 0, 0, 0, 122, 0, 0, 0, 118,
2838 0, 118, 0, 0, 0, 0, 0, 0, 806, 0,
2839 0, 122, 0, 0, 0, 0, 0, 0, 122, 0,
2840 0, 118, 0, 0, 0, 0, 0, 0, 0, 0,
2841 122, 0, 0, 122, 0, 0, 0, 0, 121, 0,
2842 0, 0, 121, 121, 0, 0, 0, 0, 807, 0,
2843 121, 121, 0, 0, 0, 0, 0, 121, 121, 0,
2844 805, 1014, 0, 0, 805, 122, 0, 0, 284, 0,
2845 0, 0, 0, 0, 122, 0, 808, 0, 0, 0,
2846 805, 0, 0, 0, 806, 0, 0, 121, 806, 85,
2847 121, 85, 0, 0, 0, 0, 0, 118, 0, 0,
2848 284, 118, 0, 0, 806, 809, 0, 0, 0, 0,
2849 0, 85, 0, 0, 0, 0, 805, 805, 0, 0,
2850 0, 0, 0, 0, 807, 0, 393, 0, 807, 0,
2851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2852 806, 806, 0, 0, 807, 0, 118, 0, 0, 118,
2853 810, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2855 0, 0, 808, 808, 122, 0, 122, 121, 0, 0,
2856 807, 807, 0, 0, 0, 0, 0, 85, 0, 121,
2857 0, 85, 532, 0, 121, 0, 0, 0, 0, 532,
2858 532, 809, 809, 0, 0, 0, 532, 532, 0, 0,
2859 121, 0, 122, 0, 0, 122, 0, 121, 393, 0,
2860 0, 0, 0, 0, 0, 0, 0, 0, 0, 121,
2861 0, 0, 121, 0, 0, 0, 85, 0, 0, 85,
2862 0, 0, 0, 0, 0, 0, 810, 810, 118, 0,
2863 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
2864 0, 0, 0, 0, 121, 0, 0, 808, 808, 118,
2865 0, 0, 0, 121, 0, 0, 118, 808, 808, 808,
2866 0, 0, 0, 808, 808, 0, 0, 0, 118, 122,
2867 122, 118, 0, 0, 0, 0, 809, 809, 0, 0,
2868 0, 0, 0, 0, 0, 0, 809, 809, 809, 0,
2869 0, 0, 809, 809, 0, 0, 0, 0, 0, 1012,
2870 0, 0, 0, 118, 0, 0, 532, 0, 0, 0,
2871 0, 0, 118, 0, 0, 0, 0, 0, 85, 0,
2872 0, 810, 810, 85, 0, 0, 0, 0, 0, 0,
2873 0, 810, 810, 810, 0, 217, 217, 810, 810, 85,
2874 0, 0, 0, 0, 0, 0, 85, 0, 0, 808,
2875 0, 0, 0, 121, 0, 121, 0, 808, 85, 0,
2876 0, 85, 0, 0, 391, 0, 0, 250, 253, 254,
2877 255, 0, 0, 0, 217, 217, 0, 0, 809, 0,
2878 0, 122, 0, 0, 808, 0, 809, 303, 304, 1010,
2879 0, 121, 0, 85, 121, 0, 0, 0, 0, 0,
2880 0, 0, 85, 0, 0, 0, 0, 0, 23, 24,
2881 25, 26, 118, 809, 118, 0, 0, 0, 0, 217,
2882 0, 0, 0, 810, 32, 33, 34, 0, 0, 0,
2883 0, 810, 0, 0, 41, 42, 43, 44, 45, 0,
2884 0, 808, 0, 0, 0, 0, 0, 0, 0, 0,
2885 118, 0, 0, 118, 0, 0, 391, 0, 810, 0,
2886 0, 0, 0, 0, 0, 0, 0, 0, 121, 121,
2887 809, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2888 0, 0, 0, 0, 0, 792, 59, 60, 61, 62,
2889 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2890 0, 0, 85, 0, 85, 0, 0, 0, 0, 0,
2891 0, 0, 0, 0, 279, 810, 0, 808, 0, 0,
2892 0, 808, 0, 0, 0, 0, 217, 118, 118, 217,
2893 217, 217, 0, 303, 0, 0, 0, 808, 0, 0,
2894 85, 0, 0, 85, 0, 0, 809, 0, 0, 217,
2895 809, 217, 217, 0, 0, 0, 0, 0, 0, 0,
2896 0, 0, 0, 0, 0, 0, 809, 0, 0, 0,
2897 0, 0, 0, 808, 808, 0, 0, 0, 0, 0,
2898 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2899 0, 810, 0, 0, 0, 810, 0, 0, 0, 0,
2900 0, 0, 809, 809, 0, 0, 0, 0, 0, 0,
2901 0, 810, 0, 0, 0, 0, 0, 85, 85, 0,
2902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2903 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2904 0, 0, 0, 0, 0, 217, 0, 810, 810, 0,
2905 533, 0, 540, 541, 542, 543, 544, 0, 0, 545,
2906 546, 547, 548, 549, 550, 551, 552, 553, 0, 0,
2907 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
2908 0, 0, 0, 217, 0, 0, 0, 0, 0, 0,
2909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2910 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2911 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2912 0, 0, 0, 0, 346, 347, 0, 0, 0, 85,
2913 0, 0, 0, 614, 614, 0, 0, 0, 0, 0,
2914 0, 0, 614, 217, 217, 0, 0, 0, 217, 0,
2915 614, 614, 217, 0, 0, 0, 0, 348, 255, 349,
2916 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2917 0, 0, 0, 640, 0, 0, 0, 0, 614, 0,
2918 0, 0, 0, 237, 0, 0, 0, 0, 0, 217,
2919 0, 0, 217, 0, 0, 0, 0, 0, 0, -738,
2920 0, 0, 0, 217, 0, 0, 0, -738, -738, -738,
2921 0, 0, -738, -738, -738, 0, -738, 0, 0, 0,
2922 0, 670, 0, 0, -738, -738, -738, -738, -738, 0,
2923 0, 0, 0, 0, 0, 0, -738, -738, 217, -738,
2924 -738, -738, -738, -738, 0, 0, 0, 0, 0, 0,
2925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2926 0, 0, 0, 0, 0, 0, 0, -738, 0, 0,
2927 0, 0, 0, 0, 0, 0, -738, -738, -738, -738,
2928 -738, -738, -738, -738, -738, -738, -738, -738, -738, 0,
2929 0, 0, 0, -738, -738, -738, -738, 0, 747, -738,
2930 0, 0, 0, 0, 0, -738, 0, 0, 0, 0,
2931 0, 217, 0, 0, 0, 0, 0, 0, 0, -738,
2932 0, 217, -738, 0, 0, -116, -738, -738, -738, -738,
2933 -738, -738, -738, -738, -738, -738, -738, -738, 217, 0,
2934 217, 0, -738, -738, -738, -738, 0, 0, -738, -738,
2935 -738, 0, -738, 217, 0, 217, 0, 0, 0, -761,
2936 0, 0, 0, 0, 0, 0, 0, -761, -761, -761,
2937 0, 0, -761, -761, -761, 0, -761, 0, 0, 0,
2938 0, 0, 0, 0, -761, -761, -761, 0, 0, 0,
2939 0, 0, 0, 0, 0, 0, -761, -761, 217, -761,
2940 -761, -761, -761, -761, 614, 778, 0, 217, 0, 0,
2941 0, 614, 614, 0, 0, 0, 0, 217, 614, 614,
2942 0, 0, 0, 0, 0, 0, 217, -761, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2944 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2945 0, 0, 0, 0, 0, -761, -761, 0, 0, 0,
2946 0, 0, 0, 0, 0, 0, 614, 614, 0, 614,
2947 614, 23, 24, 25, 26, 0, 0, 0, 0, -761,
2948 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
2949 784, 0, 217, 0, 785, 0, 986, 41, 42, 43,
2950 44, 45, -761, -761, 0, 0, 0, 233, -761, 0,
2951 -761, 0, -761, 0, 0, 926, 0, 0, 0, 0,
2952 0, 0, 0, 0, 0, 0, 0, 0, 786, 787,
2953 0, 899, 0, 0, 0, 0, 788, 0, 614, 789,
2954 0, 0, 790, 791, 0, 980, 930, 0, 792, 59,
2955 1004, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2956 0, 0, 0, 0, 0, 217, 0, 0, 0, 0,
2957 793, 0, 0, 0, 0, -761, 4, 279, 5, 6,
2958 7, 8, 9, 614, 0, 217, 10, 11, 0, 0,
2959 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2960 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2961 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2962 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
2963 38, 39, 40, 217, 41, 42, 43, 44, 45, 46,
2964 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2965 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2966 0, 217, 0, 0, 0, 50, 51, 0, 0, 0,
2967 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2968 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2969 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2971 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2972 0, 0, 0, 0, 0, 0, -761, 0, -761, 0,
2973 0, 0, 0, 0, 0, 0, 0, 0, 217, -631,
2974 0, 0, 0, 0, 0, 0, 0, -631, -631, -631,
2975 0, 217, -631, -631, -631, 0, -631, 0, 0, 0,
2976 0, 686, 0, 0, -631, 0, -631, -631, -631, 0,
2977 0, 0, 0, 0, 0, 0, -631, -631, 0, -631,
2978 -631, -631, -631, -631, 0, 0, 0, 0, 0, 0,
2979 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2980 339, 340, 341, 342, 343, 344, 345, -631, 0, 0,
2981 0, 346, 347, 217, 0, 0, -631, -631, -631, -631,
2982 -631, -631, -631, -631, -631, -631, -631, -631, -631, 0,
2983 0, 0, 0, -631, -631, -631, -631, 0, -631, -631,
2984 0, 0, 0, 0, 348, -631, 349, 350, 351, 352,
2985 353, 354, 355, 356, 357, 358, 0, 0, 0, -631,
2986 0, 0, -631, -257, 0, -631, -631, -631, -631, -631,
2987 -631, -631, -631, -631, -631, -631, -631, -631, 0, 0,
2988 0, 0, 0, -631, -631, -631, -634, 0, -631, -631,
2989 -631, 0, -631, 0, -634, -634, -634, 0, 0, -634,
2990 -634, -634, 0, -634, 0, 0, 0, 0, 686, 0,
2991 0, -634, 0, -634, -634, -634, 0, 0, 0, 0,
2992 0, 0, 0, -634, -634, 0, -634, -634, -634, -634,
2993 -634, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2994 0, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2995 342, 343, 344, 345, -634, 0, 0, 0, 346, 347,
2996 0, 0, 0, -634, -634, -634, -634, -634, -634, -634,
2997 -634, -634, -634, -634, -634, -634, 0, 0, 0, 0,
2998 -634, -634, -634, -634, 0, -634, -634, 0, 0, 0,
2999 0, 348, -634, 349, 350, 351, 352, 353, 354, 355,
3000 356, 357, 358, 0, 0, 0, -634, 0, 0, -634,
3001 0, 0, -634, -634, -634, -634, -634, -634, -634, -634,
3002 -634, -634, -634, -634, -634, 0, 0, 0, 0, 0,
3003 -634, -634, -634, -739, 0, -634, -634, -634, 0, -634,
3004 0, -739, -739, -739, 0, 0, -739, -739, -739, 0,
3005 -739, 0, 0, 0, 0, 0, 0, 0, -739, -739,
3006 -739, -739, -739, 0, 0, 0, 0, 0, 0, 0,
3007 -739, -739, 0, -739, -739, -739, -739, -739, 0, 0,
3008 0, 0, 0, 0, 0, 0, 0, 0, 333, 334,
3009 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
3010 345, -739, 0, 0, 0, 346, 347, 0, 0, 0,
3011 -739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
3012 -739, -739, -739, 0, 0, 0, 0, -739, -739, -739,
3013 -739, 0, 0, -739, 0, 0, 0, 0, 348, -739,
3014 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
3015 0, 0, 0, -739, 0, 0, -739, 0, 0, 0,
3016 -739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
3017 -739, -739, 0, 0, 0, 0, -739, -739, -739, -739,
3018 -740, 0, -739, -739, -739, 0, -739, 0, -740, -740,
3019 -740, 0, 0, -740, -740, -740, 0, -740, 0, 0,
3020 0, 0, 0, 0, 0, -740, -740, -740, -740, -740,
3021 0, 0, 0, 0, 0, 0, 0, -740, -740, 0,
3022 -740, -740, -740, -740, -740, 0, 0, 0, 0, 0,
3023 0, 0, 0, 0, 0, 333, 334, 335, 336, 337,
3024 338, 339, 340, 341, 342, 343, -762, -762, -740, 0,
3025 0, 0, 346, 347, 0, 0, 0, -740, -740, -740,
3026 -740, -740, -740, -740, -740, -740, -740, -740, -740, -740,
3027 0, 0, 0, 0, -740, -740, -740, -740, 0, 0,
3028 -740, 0, 0, 0, 0, 0, -740, 349, 350, 351,
3029 352, 353, 354, 355, 356, 357, 358, 0, 0, 0,
3030 -740, 0, 0, -740, 0, 0, 0, -740, -740, -740,
3031 -740, -740, -740, -740, -740, -740, -740, -740, -740, 0,
3032 0, 0, 0, -740, -740, -740, -740, -311, 0, -740,
3033 -740, -740, 0, -740, 0, -311, -311, -311, 0, 0,
3034 -311, -311, -311, 0, -311, 0, 0, 0, 0, 0,
3035 0, 0, -311, 0, -311, -311, -311, 0, 0, 0,
3036 0, 0, 0, 0, -311, -311, 0, -311, -311, -311,
3037 -311, -311, 0, 0, 0, 0, 0, 0, 0, 0,
3038 0, 0, 333, 334, 335, 336, 337, 338, 339, 340,
3039 0, 342, 343, 0, 0, -311, 0, 0, 0, 346,
3040 347, 0, 0, 0, -311, -311, -311, -311, -311, -311,
3041 -311, -311, -311, -311, -311, -311, -311, 0, 0, 0,
3042 0, -311, -311, -311, -311, 0, 748, -311, 0, 0,
3043 0, 0, 0, -311, 349, 350, 351, 352, 353, 354,
3044 355, 356, 357, 358, 0, 0, 0, -311, 0, 0,
3045 -311, 0, 0, -118, -311, -311, -311, -311, -311, -311,
3046 -311, -311, -311, -311, -311, -311, 0, 0, 0, 0,
3047 0, -311, -311, -311, -450, 0, -311, -311, -311, 0,
3048 -311, 0, -450, -450, -450, 0, 0, -450, -450, -450,
3049 0, -450, 0, 0, 0, 0, 0, 0, 0, -450,
3050 -450, -450, -450, 0, 0, 0, 0, 0, 0, 0,
3051 0, -450, -450, 0, -450, -450, -450, -450, -450, 0,
3052 0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
3053 -762, -762, -762, -762, 338, 339, 0, 0, -762, -762,
3054 0, 0, -450, 0, 0, 0, 346, 347, 0, 0,
3055 0, -450, -450, -450, -450, -450, -450, -450, -450, -450,
3056 -450, -450, -450, -450, 0, 0, 0, 0, -450, -450,
3057 -450, -450, 0, 0, -450, 0, 0, 0, 0, 0,
3058 -450, 349, 350, 351, 352, 353, 354, 355, 356, 357,
3059 358, 0, 0, 0, -450, 0, 0, 0, 0, 0,
3060 0, -450, 0, -450, -450, -450, -450, -450, -450, -450,
3061 -450, -450, -450, 0, 0, 0, 0, -450, -450, -450,
3062 -450, -303, 233, -450, -450, -450, 0, -450, 0, -303,
3063 -303, -303, 0, 0, -303, -303, -303, 0, -303, 0,
3064 0, 0, 0, 0, 0, 0, -303, 0, -303, -303,
3065 -303, 0, 0, 0, 0, 0, 0, 0, -303, -303,
3066 0, -303, -303, -303, -303, -303, 0, 0, 0, 0,
3067 0, 0, 0, 0, 0, 0, 333, 334, 335, 336,
3068 337, 338, 339, 0, 0, 342, 343, 0, 0, -303,
3069 0, 0, 0, 346, 347, 0, 0, 0, -303, -303,
3070 -303, -303, -303, -303, -303, -303, -303, -303, -303, -303,
3071 -303, 0, 0, 0, 0, -303, -303, -303, -303, 0,
3072 0, -303, 0, 0, 0, 0, 0, -303, 349, 350,
3073 351, 352, 353, 354, 355, 356, 357, 358, 0, 0,
3074 0, -303, 0, 0, -303, 0, 0, 0, -303, -303,
3075 -303, -303, -303, -303, -303, -303, -303, -303, -303, -303,
3076 0, 0, 0, 0, 0, -303, -303, -303, -761, 0,
3077 -303, -303, -303, 0, -303, 0, -761, -761, -761, 0,
3078 0, -761, -761, -761, 0, -761, 0, 0, 0, 0,
3079 0, 0, 0, -761, -761, -761, -761, 0, 0, 0,
3080 0, 0, 0, 0, 0, -761, -761, 0, -761, -761,
3081 -761, -761, -761, 0, 0, 0, 0, 0, 0, 0,
3082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3083 0, 0, 0, 0, 0, 0, -761, 0, 0, 0,
3084 0, 0, 0, 0, 0, -761, -761, -761, -761, -761,
3085 -761, -761, -761, -761, -761, -761, -761, -761, 0, 0,
3086 0, 0, -761, -761, -761, -761, 0, 0, -761, 0,
3087 0, 0, 0, 0, -761, 0, 0, 0, 0, 0,
3088 0, 0, 0, 0, 0, 0, 0, 0, -761, 0,
3089 0, 0, 0, 0, 0, -761, 0, -761, -761, -761,
3090 -761, -761, -761, -761, -761, -761, -761, 0, 0, 0,
3091 0, -761, -761, -761, -761, -318, 233, -761, -761, -761,
3092 0, -761, 0, -318, -318, -318, 0, 0, -318, -318,
3093 -318, 0, -318, 0, 0, 0, 0, 0, 0, 0,
3094 -318, 0, -318, -318, 0, 0, 0, 0, 0, 0,
3095 0, 0, -318, -318, 0, -318, -318, -318, -318, -318,
3096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3098 0, 0, 0, -318, 0, 0, 0, 0, 0, 0,
3099 0, 0, -318, -318, -318, -318, -318, -318, -318, -318,
3100 -318, -318, -318, -318, -318, 0, 0, 0, 0, -318,
3101 -318, -318, -318, 0, 0, -318, 0, 0, 0, 0,
3102 0, -318, 0, 0, 0, 0, 0, 0, 0, 0,
3103 0, 0, 0, 0, 0, -318, 0, 0, 0, 0,
3104 0, 0, -318, 0, -318, -318, -318, -318, -318, -318,
3105 -318, -318, -318, -318, 0, 0, 0, 0, 0, -318,
3106 -318, -318, -738, 230, -318, -318, -318, 0, -318, 0,
3107 -738, -738, -738, 0, 0, 0, -738, -738, 0, -738,
3108 0, 0, 0, 0, 0, 0, 0, -738, -738, 0,
3109 0, 0, 0, 0, 0, 0, 0, 0, 0, -738,
3110 -738, 0, -738, -738, -738, -738, -738, 0, 0, 0,
3111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3113 -738, 0, 0, 0, 0, 0, 0, 0, 0, -738,
3114 -738, -738, -738, -738, -738, -738, -738, -738, -738, -738,
3115 -738, -738, 0, 0, 0, 0, -738, -738, -738, -738,
3116 0, 692, 0, 0, 0, 0, 0, 0, 0, 0,
3117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3118 0, 0, -738, 0, 0, 0, 0, 0, -116, -738,
3119 0, -738, -738, -738, -738, -738, -738, -738, -738, -738,
3120 -738, 0, 0, 0, 0, -738, -738, -738, -107, -738,
3121 0, -738, 0, -738, 0, -738, 0, -738, -738, -738,
3122 0, 0, 0, -738, -738, 0, -738, 0, 0, 0,
3123 0, 0, 0, 0, -738, -738, 0, 0, 0, 0,
3124 0, 0, 0, 0, 0, 0, -738, -738, 0, -738,
3125 -738, -738, -738, -738, 0, 0, 0, 0, 0, 0,
3126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3127 0, 0, 0, 0, 0, 0, 0, -738, 0, 0,
3128 0, 0, 0, 0, 0, 0, -738, -738, -738, -738,
3129 -738, -738, -738, -738, -738, -738, -738, -738, -738, 0,
3130 0, 0, 0, -738, -738, -738, -738, 0, 692, 0,
3131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3132 0, 0, 0, 0, 0, 0, 0, 0, 0, -738,
3133 0, 0, 0, 0, 0, -116, -738, 0, -738, -738,
3134 -738, -738, -738, -738, -738, -738, -738, -738, 0, 0,
3135 0, 0, -738, -738, -738, -738, -311, 0, -738, 0,
3136 -738, 0, -738, 0, -311, -311, -311, 0, 0, 0,
3137 -311, -311, 0, -311, 0, 0, 0, 0, 0, 0,
3138 0, -311, 0, 0, 0, 0, 0, 0, 0, 0,
3139 0, 0, 0, -311, -311, 0, -311, -311, -311, -311,
3140 -311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3142 0, 0, 0, 0, -311, 0, 0, 0, 0, 0,
3143 0, 0, 0, -311, -311, -311, -311, -311, -311, -311,
3144 -311, -311, -311, -311, -311, -311, 0, 0, 0, 0,
3145 -311, -311, -311, -311, 0, 693, 0, 0, 0, 0,
3146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3147 0, 0, 0, 0, 0, 0, -311, 0, 0, 0,
3148 0, 0, -118, -311, 0, -311, -311, -311, -311, -311,
3149 -311, -311, -311, -311, -311, 0, 0, 0, 0, 0,
3150 -311, -311, -109, -311, 0, -311, 0, -311, 0, -311,
3151 0, -311, -311, -311, 0, 0, 0, -311, -311, 0,
3152 -311, 0, 0, 0, 0, 0, 0, 0, -311, 0,
3153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3154 -311, -311, 0, -311, -311, -311, -311, -311, 0, 0,
3155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3157 0, -311, 0, 0, 0, 0, 0, 0, 0, 0,
3158 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
3159 -311, -311, -311, 0, 0, 0, 0, -311, -311, -311,
3160 -311, 0, 693, 0, 0, 0, 0, 0, 0, 0,
3161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3162 0, 0, 0, -311, 0, 0, 0, 0, 0, -118,
3163 -311, 0, -311, -311, -311, -311, -311, -311, -311, -311,
3164 -311, -311, 0, 0, 0, 0, 0, -311, -311, -311,
3165 0, 0, -311, 0, -311, 257, -311, 5, 6, 7,
3166 8, 9, -761, -761, -761, 10, 11, 0, 0, -761,
3167 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3168 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3169 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3170 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
3171 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3172 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3173 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3174 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3175 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3176 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3177 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3179 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
3180 0, 0, 0, 0, 0, -761, 257, -761, 5, 6,
3181 7, 8, 9, 0, 0, -761, 10, 11, 0, -761,
3182 -761, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3183 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3184 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3185 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
3186 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3187 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3188 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3189 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3190 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3191 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3192 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3194 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
3195 0, 0, 0, 0, 0, 0, -761, 257, -761, 5,
3196 6, 7, 8, 9, 0, 0, -761, 10, 11, 0,
3197 0, -761, 12, -761, 13, 14, 15, 16, 17, 18,
3198 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3199 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3200 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
3201 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3202 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3203 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3204 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3205 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3206 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3207 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3209 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
3210 0, 0, 0, 0, 0, 0, 0, -761, 257, -761,
3211 5, 6, 7, 8, 9, 0, 0, -761, 10, 11,
3212 0, 0, -761, 12, 0, 13, 14, 15, 16, 17,
3213 18, 19, -761, 0, 0, 0, 0, 20, 21, 22,
3214 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3215 0, 0, 28, 29, 258, 31, 32, 33, 34, 35,
3216 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3217 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3218 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3219 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3220 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3221 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3222 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3224 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
3225 0, 0, 0, 0, 0, 0, 0, 0, -761, 257,
3226 -761, 5, 6, 7, 8, 9, 0, 0, -761, 10,
3227 11, 0, 0, -761, 12, 0, 13, 14, 15, 16,
3228 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3229 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3230 0, 0, 0, 28, 29, 258, 31, 32, 33, 34,
3231 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3232 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3233 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3234 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3235 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3236 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3237 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3238 0, 0, 0, 0, 0, 257, 0, 5, 6, 7,
3239 8, 9, 0, -761, -761, 10, 11, 67, 68, 69,
3240 12, 0, 13, 14, 15, 16, 17, 18, 19, -761,
3241 0, -761, 0, 0, 20, 21, 22, 23, 24, 25,
3242 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3243 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
3244 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3245 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3246 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3247 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3248 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3249 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3250 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3251 0, 257, 0, 5, 6, 7, 8, 9, 0, 0,
3252 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3253 15, 16, 17, 18, 19, -761, 0, -761, 0, 0,
3254 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3255 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
3256 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3257 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3258 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3260 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3261 0, 259, 54, 0, 55, 56, 0, 57, 0, 0,
3262 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3264 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3265 68, 69, 0, 0, 0, 0, 0, 0, 0, -761,
3266 0, -761, 257, -761, 5, 6, 7, 8, 9, 0,
3267 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
3268 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3269 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3270 27, 0, 0, 0, 0, 0, 28, 29, 258, 31,
3271 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3272 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3273 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3275 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3276 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3277 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3280 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
3281 -761, 0, -761, 4, -761, 5, 6, 7, 8, 9,
3282 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3283 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3284 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3285 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
3286 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3287 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3288 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3290 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3291 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3292 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3293 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3295 0, 67, 68, 69, 0, 0, -761, 0, 0, 0,
3296 0, 0, 0, -761, 257, -761, 5, 6, 7, 8,
3297 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3298 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3299 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3300 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3301 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3302 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3303 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3305 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3306 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3307 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3308 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3310 0, 0, 67, 68, 69, 0, 0, -761, 0, 0,
3311 0, 0, 0, 0, -761, 257, -761, 5, 6, 7,
3312 8, 9, 0, 0, -761, 10, 11, 0, 0, 0,
3313 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3314 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3315 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3316 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
3317 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3318 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3319 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3320 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3321 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3322 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3323 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3324 0, 257, 0, 5, 6, 7, 8, 9, 0, 0,
3325 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3326 15, 16, 17, 18, 19, -761, 0, -761, 0, 0,
3327 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3328 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
3329 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3330 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3331 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3333 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3334 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3335 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3336 -761, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3337 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3338 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3339 19, -761, 0, -761, 0, 0, 20, 21, 22, 23,
3340 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3341 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3342 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
3343 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3344 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3345 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3346 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3347 55, 56, 0, 210, 211, 212, 58, 59, 213, 61,
3348 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3349 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3350 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3351 13, 14, 15, 16, 17, 18, 19, 0, 0, 237,
3352 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3353 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
3354 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3355 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3356 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3358 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3359 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3360 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3361 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3362 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3363 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3364 17, 18, 19, 305, 0, 306, 0, 0, 20, 21,
3365 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3366 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3367 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3368 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3369 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3370 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3371 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3372 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3373 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3374 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3375 8, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3376 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3377 0, 237, 0, 0, 20, 21, 22, 23, 24, 25,
3378 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3379 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
3380 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3381 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3382 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3383 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3384 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3385 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3386 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3387 0, 0, 0, 5, 6, 7, 8, 9, 0, 0,
3388 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3389 15, 16, 17, 18, 19, 503, 0, 0, 0, 0,
3390 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3391 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
3392 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3393 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3394 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3396 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3397 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3398 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3401 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
3402 0, 503, 126, 127, 128, 129, 130, 131, 132, 133,
3403 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3404 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
3405 151, 152, 395, 396, 397, 398, 157, 158, 159, 0,
3406 0, 0, 0, 0, 160, 161, 162, 163, 399, 400,
3407 401, 402, 168, 37, 38, 403, 40, 0, 0, 0,
3408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3409 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3410 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3411 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3412 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3414 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3415 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3416 198, 0, 0, 0, 0, 0, 199, 404, 126, 127,
3417 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3418 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3419 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
3420 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
3421 160, 161, 162, 163, 164, 165, 166, 167, 168, 288,
3422 289, 169, 290, 0, 0, 0, 0, 0, 0, 0,
3423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3424 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3425 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3426 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3427 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3429 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3430 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
3431 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
3432 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3433 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
3434 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
3435 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
3436 165, 166, 167, 168, 239, 0, 169, 0, 0, 0,
3437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3438 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
3439 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
3440 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
3441 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
3442 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
3443 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
3444 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
3445 197, 198, 0, 0, 0, 0, 0, 199, 126, 127,
3446 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3447 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3448 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
3449 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
3450 160, 161, 162, 163, 164, 165, 166, 167, 168, 0,
3451 0, 169, 0, 0, 0, 0, 0, 0, 0, 0,
3452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3453 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3454 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3455 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3456 0, 0, 185, 186, 0, 0, 59, 0, 0, 0,
3457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3458 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3459 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
3460 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
3461 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3462 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
3463 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
3464 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
3465 165, 166, 167, 168, 0, 0, 169, 0, 0, 0,
3466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3467 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
3468 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
3469 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
3470 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
3471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3472 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
3473 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
3474 197, 198, 5, 6, 7, 0, 9, 199, 0, 0,
3475 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
3476 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3477 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3478 0, 0, 0, 0, 0, 277, 0, 0, 32, 33,
3479 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3480 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3483 0, 0, 0, 0, 0, 0, 0, 278, 0, 0,
3484 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3485 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3487 0, 5, 6, 7, 0, 9, 0, 0, 279, 10,
3488 11, 0, 0, 0, 12, 280, 13, 14, 15, 245,
3489 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3490 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3491 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3492 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3493 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3496 0, 0, 0, 0, 0, 0, 278, 0, 0, 209,
3497 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3498 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3500 5, 6, 7, 8, 9, 0, 0, 279, 10, 11,
3501 0, 0, 0, 12, 526, 13, 14, 15, 16, 17,
3502 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3503 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3504 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
3505 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3506 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3507 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3508 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3509 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3510 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3511 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3512 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3513 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
3514 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3515 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3516 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3517 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3518 40, 207, 41, 42, 43, 44, 45, 46, 47, 0,
3519 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3521 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3522 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3523 210, 211, 212, 58, 59, 213, 61, 62, 63, 64,
3524 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3525 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
3526 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3527 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3528 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3529 0, 0, 0, 0, 28, 29, 0, 31, 32, 33,
3530 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3531 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3532 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3533 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3534 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3535 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3536 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3537 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3538 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3539 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3540 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3541 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3542 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3543 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
3544 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3545 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3546 0, 0, 0, 0, 0, 50, 439, 0, 0, 0,
3547 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3548 56, 0, 210, 211, 212, 58, 59, 213, 61, 62,
3549 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3550 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3551 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3552 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3553 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3554 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3555 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
3556 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3557 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3559 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3560 0, 0, 209, 54, 0, 55, 56, 0, 621, 211,
3561 212, 58, 59, 213, 61, 62, 63, 64, 65, 66,
3562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3563 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3564 67, 214, 69, 12, 0, 13, 14, 15, 245, 246,
3565 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3566 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3567 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3568 36, 37, 38, 39, 40, 207, 41, 42, 43, 44,
3569 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3570 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3571 0, 0, 0, 0, 0, 0, 0, 50, 439, 0,
3572 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3573 0, 55, 56, 0, 621, 211, 212, 58, 59, 213,
3574 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3575 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3576 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3577 0, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3578 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3579 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3580 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3581 40, 207, 41, 42, 43, 44, 45, 46, 47, 0,
3582 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3584 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3585 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3586 210, 211, 0, 58, 59, 213, 61, 62, 63, 64,
3587 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3588 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3589 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3590 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3591 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3592 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3593 34, 35, 36, 37, 38, 39, 40, 207, 41, 42,
3594 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3595 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3596 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3597 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3598 209, 54, 0, 55, 56, 0, 0, 211, 212, 58,
3599 59, 213, 61, 62, 63, 64, 65, 66, 0, 0,
3600 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3601 7, 0, 9, 0, 0, 0, 10, 11, 67, 214,
3602 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3603 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3604 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3605 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3606 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
3607 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3608 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3609 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3610 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3611 56, 0, 621, 211, 0, 58, 59, 213, 61, 62,
3612 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3613 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3614 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3615 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3616 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3617 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3618 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
3619 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3620 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3622 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3623 0, 0, 209, 54, 0, 55, 56, 0, 0, 211,
3624 0, 58, 59, 213, 61, 62, 63, 64, 65, 66,
3625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3626 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3627 67, 214, 69, 12, 0, 13, 14, 15, 16, 17,
3628 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3629 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3630 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3631 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3632 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3633 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3634 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3635 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3636 0, 55, 56, 0, 519, 0, 0, 58, 59, 60,
3637 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3638 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3639 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3640 0, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3641 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3642 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3643 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3644 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3645 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3647 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3648 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3649 773, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3650 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3651 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3652 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3653 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3654 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3655 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3656 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3657 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3658 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3659 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3660 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3661 209, 54, 0, 55, 56, 0, 519, 0, 0, 58,
3662 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3663 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3664 7, 0, 9, 0, 0, 0, 10, 11, 67, 214,
3665 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3666 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3667 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3668 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3669 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3670 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3671 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3672 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3673 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3674 56, 0, 846, 0, 0, 58, 59, 60, 61, 62,
3675 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3676 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3677 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3678 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3679 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3680 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3681 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3682 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3683 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3685 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3686 0, 0, 209, 54, 0, 55, 56, 0, 1019, 0,
3687 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3689 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3690 67, 214, 69, 12, 0, 13, 14, 15, 245, 246,
3691 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3692 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3693 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3694 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3695 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3696 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3697 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3698 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3699 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3700 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3701 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3702 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3703 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3704 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3705 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3706 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3707 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3708 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3710 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3711 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3712 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3713 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3714 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3715 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3716 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3717 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3718 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3719 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3720 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3721 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3722 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3723 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3724 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3725 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3726 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3727 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3728 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3729 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3730 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3731 0, 277, 0, 0, 32, 33, 34, 35, 36, 37,
3732 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3733 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3736 0, 0, 0, 278, 0, 0, 328, 54, 0, 55,
3737 56, 0, 329, 0, 0, 58, 59, 60, 61, 62,
3738 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3739 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3740 0, 0, 0, 12, 279, 13, 14, 15, 245, 246,
3741 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3742 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3743 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
3744 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3745 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3747 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3748 0, 0, 0, 0, 0, 376, 0, 0, 53, 54,
3749 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3750 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3751 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3752 10, 11, 0, 0, 0, 12, 279, 13, 14, 15,
3753 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3754 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3755 0, 0, 0, 0, 0, 277, 0, 0, 32, 33,
3756 34, 384, 36, 37, 38, 385, 40, 0, 41, 42,
3757 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3760 0, 0, 0, 386, 0, 0, 0, 387, 0, 0,
3761 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3762 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3763 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3764 0, 0, 10, 11, 0, 0, 0, 12, 279, 13,
3765 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3766 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3767 206, 0, 0, 0, 0, 0, 0, 277, 0, 0,
3768 32, 33, 34, 384, 36, 37, 38, 385, 40, 0,
3769 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3770 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3772 0, 0, 0, 0, 0, 0, 0, 0, 0, 387,
3773 0, 0, 209, 54, 0, 55, 56, 0, 0, 0,
3774 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3775 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3776 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3777 279, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3778 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3779 0, 0, 206, 0, 0, 0, 0, 0, 0, 277,
3780 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3781 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3785 0, 278, 0, 0, 328, 54, 0, 55, 56, 0,
3786 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3787 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
3788 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3789 0, 12, 279, 13, 14, 15, 245, 246, 18, 19,
3790 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3791 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3792 0, 277, 0, 0, 32, 33, 34, 35, 36, 37,
3793 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3794 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3797 0, 0, 0, 1009, 0, 0, 209, 54, 0, 55,
3798 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3799 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3800 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3801 0, 0, 0, 12, 279, 13, 14, 15, 245, 246,
3802 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3803 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3804 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
3805 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3806 45, 46, 47, 23, 24, 25, 26, 0, 0, 0,
3807 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
3808 33, 34, 784, 0, 0, 0, 785, 0, 0, 41,
3809 42, 43, 44, 45, 0, 1062, 0, 0, 209, 54,
3810 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3811 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3812 786, 787, 0, 0, 0, 0, 0, 0, 788, 0,
3813 0, 789, 0, 0, 790, 791, 279, 980, 0, 0,
3814 792, 59, 60, 61, 62, 63, 64, 65, 66, 23,
3815 24, 25, 26, 0, 0, 0, 0, 0, 0, 0,
3816 0, 0, 793, 0, 0, 32, 33, 34, 784, 279,
3817 0, 0, 785, 0, 0, 41, 42, 43, 44, 45,
3818 0, 0, 23, 24, 25, 26, 0, 0, 0, 0,
3819 0, 0, 0, 0, 0, 0, 0, 0, 32, 33,
3820 34, 784, 0, 0, 0, 785, 786, 787, 41, 42,
3821 43, 44, 45, 0, 788, 0, 0, 789, 0, 0,
3822 790, 791, 0, 1077, 0, 0, 792, 59, 60, 61,
3823 62, 63, 64, 65, 66, 0, 0, 0, 0, 786,
3824 787, 0, 0, 0, 0, 0, 0, 788, 793, 0,
3825 789, 0, 0, 790, 791, 279, 0, 0, 0, 792,
3826 59, 60, 61, 62, 63, 64, 65, 66, 564, 565,
3827 0, 0, 566, 0, 0, 0, 0, 0, 0, 0,
3828 0, 793, 0, 0, 0, 0, 0, 0, 279, 0,
3829 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3830 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3831 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3832 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3834 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3835 192, 193, 194, 195, 196, 0, 197, 198, 573, 574,
3836 0, 0, 575, 199, 233, 0, 0, 0, 0, 0,
3837 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3838 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3839 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3840 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3841 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3843 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3844 192, 193, 194, 195, 196, 0, 197, 198, 625, 565,
3845 0, 0, 626, 199, 233, 0, 0, 0, 0, 0,
3846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3847 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3848 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3849 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3850 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3852 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3853 192, 193, 194, 195, 196, 0, 197, 198, 628, 574,
3854 0, 0, 629, 199, 233, 0, 0, 0, 0, 0,
3855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3856 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3857 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3858 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3859 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3861 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3862 192, 193, 194, 195, 196, 0, 197, 198, 653, 565,
3863 0, 0, 654, 199, 233, 0, 0, 0, 0, 0,
3864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3865 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3866 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3867 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3868 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3870 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3871 192, 193, 194, 195, 196, 0, 197, 198, 656, 574,
3872 0, 0, 657, 199, 233, 0, 0, 0, 0, 0,
3873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3874 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3875 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3876 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3877 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3879 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3880 192, 193, 194, 195, 196, 0, 197, 198, 724, 565,
3881 0, 0, 725, 199, 233, 0, 0, 0, 0, 0,
3882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3883 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3884 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3885 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3886 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3888 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3889 192, 193, 194, 195, 196, 0, 197, 198, 727, 574,
3890 0, 0, 728, 199, 233, 0, 0, 0, 0, 0,
3891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3892 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3893 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3894 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3895 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3897 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3898 192, 193, 194, 195, 196, 0, 197, 198, 733, 565,
3899 0, 0, 734, 199, 233, 0, 0, 0, 0, 0,
3900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3901 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3902 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3903 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3904 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3906 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3907 192, 193, 194, 195, 196, 0, 197, 198, 610, 574,
3908 0, 0, 611, 199, 233, 0, 0, 0, 0, 0,
3909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3910 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3911 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3912 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3913 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3915 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3916 192, 193, 194, 195, 196, 0, 197, 198, 779, 565,
3917 0, 0, 780, 199, 233, 0, 0, 0, 0, 0,
3918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3919 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3920 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3921 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3922 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3924 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3925 192, 193, 194, 195, 196, 0, 197, 198, 782, 574,
3926 0, 0, 783, 199, 233, 0, 0, 0, 0, 0,
3927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3928 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3929 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3930 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3931 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3933 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3934 192, 193, 194, 195, 196, 0, 197, 198, 1161, 565,
3935 0, 0, 1162, 199, 233, 0, 0, 0, 0, 0,
3936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3937 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3938 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3939 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3940 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3942 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3943 192, 193, 194, 195, 196, 0, 197, 198, 1164, 574,
3944 0, 0, 1165, 199, 233, 0, 0, 0, 0, 0,
3945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3946 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3947 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3948 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3949 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3951 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3952 192, 193, 194, 195, 196, 0, 197, 198, 1196, 565,
3953 0, 0, 1197, 199, 233, 0, 0, 0, 0, 0,
3954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3955 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3956 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3957 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3958 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3960 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3961 192, 193, 194, 195, 196, 0, 197, 198, 610, 574,
3962 0, 0, 611, 199, 233, 0, 0, 0, 0, 0,
3963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3964 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3965 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3966 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3967 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3969 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3970 192, 193, 194, 195, 196, 0, 197, 198, 0, 0,
3976 2, 59, 53, 89, 60, 369, 102, 22, 91, 92,
3977 8, 71, 95, 8, 364, 101, 71, 28, 712, 94,
3978 16, 17, 227, 4, 331, 57, 92, 634, 271, 95,
3979 28, 719, 275, 28, 2, 95, 4, 897, 898, 13,
3980 433, 99, 387, 68, 425, 363, 67, 365, 16, 17,
3981 627, 83, 433, 55, 56, 16, 17, 83, 95, 604,
3982 53, 59, 25, 78, 96, 97, 98, 331, 57, 1044,
3983 2, 1072, 4, 1112, 13, 897, 898, 963, 655, 429,
3984 473, 27, 22, 1110, 860, 53, 54, 690, 858, 57,
3985 860, 482, 868, 411, 55, 295, 296, 25, 868, 928,
3986 68, 99, 68, 100, 100, 259, 414, 415, 16, 17,
3987 428, 1068, 430, 146, 0, 83, 16, 17, 1033, 13,
3988 153, 26, 54, 91, 92, 66, 153, 95, 96, 97,
3989 98, 97, 100, 68, 484, 526, 222, 1052, 78, 100,
3990 458, 870, 25, 786, 787, 1060, 68, 55, 56, 726,
3991 414, 415, 25, 236, 1033, 238, 153, 213, 209, 736,
3992 1151, 96, 97, 126, 1155, 251, 25, 485, 1054, 25,
3993 37, 38, 146, 1052, 328, 97, 1215, 151, 119, 153,
3994 56, 25, 958, 146, 146, 148, 149, 732, 958, 1216,
3995 153, 153, 100, 244, 1023, 1024, 1018, 283, 946, 947,
3996 100, 261, 1177, 1204, 781, 151, 261, 153, 259, 148,
3997 145, 13, 151, 790, 153, 13, 13, 1208, 146, 221,
3998 148, 969, 970, 971, 261, 227, 13, 310, 311, 312,
3999 313, 233, 315, 316, 230, 1192, 232, 233, 143, 444,
4000 242, 209, 592, 636, 310, 311, 312, 313, 280, 892,
4001 893, 858, 602, 634, 280, 636, 601, 151, 279, 153,
4002 25, 13, 230, 146, 232, 233, 259, 1182, 236, 230,
4003 238, 232, 233, 146, 242, 593, 244, 328, 881, 882,
4004 27, 1110, 29, 1112, 1199, 603, 153, 146, 371, 257,
4005 146, 259, 683, 379, 897, 898, 25, 329, 498, 13,
4006 500, 326, 146, 386, 1033, 371, 331, 852, 248, 249,
4007 242, 1171, 280, 373, 859, 1044, 52, 698, 895, 370,
4008 29, 372, 230, 1052, 232, 257, 13, 1021, 309, 874,
4009 230, 1060, 232, 1021, 13, 328, 373, 25, 688, 1068,
4010 329, 309, 310, 311, 312, 313, 314, 315, 316, 151,
4011 148, 153, 109, 151, 151, 153, 153, 25, 326, 52,
4012 328, 329, 364, 331, 151, 326, 153, 365, 364, 687,
4013 331, 689, 695, 1121, 25, 25, 133, 309, 983, 143,
4014 703, 146, 314, 148, 692, 693, 1215, 1216, 991, 414,
4015 415, 699, 700, 26, 1142, 884, 364, 126, 366, 151,
4016 707, 153, 370, 371, 372, 982, 66, 650, 897, 898,
4017 146, 37, 38, 411, 123, 1018, 68, 146, 386, 624,
4018 149, 685, 99, 143, 153, 365, 1033, 429, 692, 693,
4019 1007, 1008, 430, 429, 152, 699, 700, 151, 97, 153,
4020 442, 452, 444, 788, 96, 97, 414, 415, 1177, 126,
4021 482, 537, 99, 146, 452, 100, 482, 452, 146, 119,
4022 458, 429, 662, 1192, 151, 26, 153, 667, 152, 146,
4023 1075, 126, 151, 866, 153, 126, 126, 100, 146, 126,
4024 82, 83, 484, 68, 848, 866, 145, 485, 484, 148,
4025 430, 146, 68, 145, 526, 146, 146, 465, 149, 149,
4026 526, 146, 153, 153, 66, 67, 150, 68, 1053, 153,
4027 143, 819, 97, 77, 482, 148, 484, 425, 458, 594,
4028 96, 97, 605, 146, 414, 415, 586, 129, 130, 1018,
4029 277, 582, 148, 584, 99, 96, 97, 153, 68, 903,
4030 152, 431, 432, 870, 908, 485, 1151, 1036, 753, 894,
4031 1155, 1245, 99, 66, 569, 819, 639, 66, 526, 121,
4032 122, 126, 470, 578, 68, 152, 96, 97, 1171, 459,
4033 572, 858, 136, 137, 138, 1064, 578, 28, 580, 126,
4034 34, 146, 143, 870, 145, 1130, 1163, 148, 14, 15,
4035 592, 15, 96, 97, 1083, 593, 592, 612, 52, 68,
4036 602, 25, 1207, 1208, 68, 603, 602, 618, 121, 122,
4037 612, 68, 121, 122, 582, 145, 584, 99, 148, 651,
4038 618, 126, 624, 618, 592, 651, 68, 96, 97, 569,
4039 68, 146, 96, 97, 602, 58, 604, 605, 578, 152,
4040 97, 145, 644, 152, 126, 741, 126, 2, 731, 4,
4041 99, 683, 99, 593, 77, 97, 112, 683, 96, 97,
4042 685, 16, 17, 603, 146, 731, 66, 692, 693, 99,
4043 730, 639, 612, 68, 699, 700, 145, 126, 729, 126,
4044 68, 145, 740, 651, 99, 108, 688, 99, 146, 112,
4045 56, 689, 688, 146, 68, 153, 26, 146, 53, 54,
4046 68, 96, 97, 643, 644, 707, 708, 145, 710, 97,
4047 712, 126, 680, 68, 126, 683, 684, 685, 66, 119,
4048 688, 121, 122, 97, 692, 693, 634, 68, 148, 97,
4049 68, 699, 700, 1060, 146, 1099, 91, 92, 68, 126,
4050 95, 1068, 740, 1070, 1094, 100, 707, 9, 680, 689,
4051 145, 753, 684, 15, 837, 96, 97, 1044, 96, 97,
4052 1047, 729, 99, 731, 732, 99, 96, 97, 770, 68,
4053 772, 837, 58, 121, 122, 144, 124, 1095, 34, 100,
4054 831, 1068, 66, 1070, 153, 836, 146, 99, 68, 126,
4055 698, 77, 126, 853, 819, 99, 52, 96, 97, 68,
4056 68, 146, 692, 693, 145, 68, 553, 145, 870, 699,
4057 700, 68, 146, 143, 126, 145, 68, 97, 148, 148,
4058 871, 99, 108, 109, 571, 827, 99, 96, 97, 97,
4059 88, 89, 99, 96, 97, 119, 77, 121, 122, 96,
4060 97, 40, 41, 66, 96, 97, 145, 133, 126, 518,
4061 148, 819, 99, 126, 209, 906, 148, 747, 748, 126,
4062 750, 751, 149, 831, 915, 1192, 66, 1194, 836, 837,
4063 902, 126, 1199, 146, 1201, 230, 145, 232, 233, 126,
4064 627, 236, 145, 238, 852, 99, 99, 242, 145, 244,
4065 1177, 859, 1179, 145, 56, 955, 119, 1184, 121, 122,
4066 150, 124, 257, 871, 259, 1192, 874, 1194, 655, 144,
4067 579, 1238, 126, 126, 1201, 146, 585, 54, 587, 119,
4068 77, 121, 122, 26, 124, 1011, 77, 64, 65, 819,
4069 106, 987, 52, 52, 902, 967, 56, 56, 906, 149,
4070 146, 56, 944, 153, 946, 947, 1233, 915, 1004, 151,
4071 151, 1238, 153, 25, 309, 310, 311, 312, 313, 314,
4072 315, 316, 130, 77, 1015, 68, 1017, 969, 970, 971,
4073 15, 326, 17, 328, 864, 149, 331, 66, 144, 726,
4074 94, 95, 146, 134, 135, 136, 137, 138, 146, 736,
4075 870, 144, 146, 96, 97, 144, 146, 66, 1060, 967,
4076 10, 146, 1064, 146, 146, 1056, 1068, 44, 1070, 364,
4077 44, 366, 146, 126, 1016, 370, 371, 372, 8, 1021,
4078 134, 135, 136, 137, 138, 13, 66, 1059, 25, 152,
4079 119, 386, 121, 122, 781, 17, 152, 144, 870, 150,
4080 143, 146, 145, 790, 791, 148, 128, 1015, 15, 1017,
4081 119, 720, 121, 122, 723, 59, 60, 61, 62, 414,
4082 415, 54, 55, 690, 57, 858, 146, 860, 737, 148,
4083 131, 64, 65, 146, 429, 868, 52, 870, 100, 119,
4084 1131, 121, 122, 131, 236, 1053, 1169, 1170, 1056, 100,
4085 146, 1059, 1094, 144, 1096, 52, 1098, 1095, 1094, 126,
4086 146, 52, 146, 1169, 1170, 40, 41, 42, 43, 44,
4087 465, 146, 264, 146, 146, 2, 268, 4, 52, 1121,
4088 146, 126, 131, 870, 56, 146, 1094, 146, 146, 484,
4089 1192, 52, 1194, 54, 55, 56, 57, 1199, 146, 1201,
4090 1142, 52, 9, 54, 55, 56, 57, 146, 895, 52,
4091 151, 54, 55, 56, 57, 1095, 1036, 146, 131, 786,
4092 787, 1041, 1130, 1131, 56, 958, 53, 54, 146, 838,
4093 57, 146, 841, 52, 146, 844, 1238, 146, 146, 2,
4094 1060, 4, 851, 146, 1064, 854, 146, 146, 1068, 120,
4095 1070, 1242, 144, 16, 17, 149, 83, 146, 101, 146,
4096 146, 1169, 1170, 52, 1036, 54, 55, 56, 57, 96,
4097 97, 98, 99, 146, 242, 461, 963, 146, 146, 146,
4098 146, 465, 96, 148, 148, 98, 146, 582, 1060, 584,
4099 53, 54, 1064, 146, 87, 982, 1068, 592, 1070, 77,
4100 1033, 988, 612, 1245, 1098, 68, 708, 602, 917, 604,
4101 605, 1044, 101, 1023, 881, 882, 94, 95, 107, 1052,
4102 1007, 1008, 1110, 870, 891, 892, 893, 1060, 91, 92,
4103 897, 898, 95, 772, 1242, 1068, 887, 100, 1204, 742,
4104 514, 973, 974, 435, 639, 954, 324, 1245, 440, 1083,
4105 891, 443, 1018, 1083, 446, 133, 134, 135, 136, 137,
4106 138, 1083, 105, 889, 1096, 1016, 500, 1054, 99, 957,
4107 462, 1036, 1192, 1064, 1194, 467, 1060, 988, -1, 1199,
4108 -1, 1201, 209, -1, -1, 680, -1, -1, -1, 684,
4109 685, -1, -1, 688, -1, -1, -1, 692, 693, -1,
4110 -1, -1, -1, -1, 699, 700, -1, -1, -1, -1,
4111 -1, -1, -1, -1, -1, 242, 983, 244, 1238, -1,
4112 1192, 949, 1194, 951, 991, 690, -1, 1199, -1, 1201,
4113 257, -1, 259, 525, 729, -1, 731, 732, -1, -1,
4114 -1, -1, -1, -1, 1177, -1, 209, -1, -1, -1,
4115 -1, 1018, -1, 280, -1, -1, -1, -1, -1, 1192,
4116 -1, 1148, -1, -1, -1, -1, 1238, 230, -1, 232,
4117 233, -1, -1, 236, -1, 238, 1163, -1, -1, 242,
4118 -1, 244, 309, -1, -1, -1, -1, 314, -1, -1,
4119 -1, -1, -1, -1, 257, -1, 259, -1, -1, -1,
4120 -1, 328, 329, -1, -1, 1137, 1138, -1, 1075, -1,
4121 -1, 1143, -1, 1145, 1146, -1, -1, -1, -1, 1128,
4122 -1, 786, 787, -1, 819, -1, -1, 56, -1, 52,
4123 -1, 54, 55, 56, 57, 58, 831, -1, -1, 366,
4124 -1, 836, 837, 370, -1, 372, 309, 310, 311, 312,
4125 313, 314, 315, 316, 77, -1, -1, 852, -1, -1,
4126 -1, -1, -1, 326, 859, 328, -1, -1, 331, -1,
4127 -1, -1, -1, -1, -1, -1, 871, -1, 101, 874,
4128 1189, -1, -1, -1, 1151, 108, 109, -1, 1155, 1117,
4129 1118, 1223, 1224, 1225, 1226, 1123, -1, 1125, -1, 1127,
4130 -1, 364, -1, 366, 1171, -1, -1, 370, 371, 372,
4131 133, 906, 1244, -1, -1, -1, 881, 882, -1, -1,
4132 915, -1, -1, 386, -1, -1, 891, 892, 893, -1,
4133 -1, -1, 897, 898, -1, -1, -1, -1, 465, -1,
4134 1207, 1208, -1, -1, -1, -1, 738, -1, -1, -1,
4135 -1, 414, 415, -1, -1, 482, -1, -1, -1, -1,
4136 752, -1, 754, -1, -1, -1, 429, -1, 52, -1,
4137 54, 55, 56, 57, 58, -1, 25, -1, 207, -1,
4138 -1, 210, 211, 212, -1, -1, -1, -1, -1, 1217,
4139 1218, 1219, 1220, 77, -1, -1, -1, -1, -1, 526,
4140 -1, -1, 465, -1, -1, -1, -1, -1, -1, -1,
4141 -1, -1, -1, -1, -1, 1243, -1, 101, 983, -1,
4142 1015, 484, 1017, 107, 108, 109, 991, -1, 77, 78,
4143 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4144 89, -1, -1, -1, -1, 94, 95, -1, -1, 133,
4145 -1, -1, 136, 1018, -1, 582, -1, 584, 1053, -1,
4146 -1, 1056, -1, -1, -1, -1, -1, -1, -1, 153,
4147 -1, 2, -1, 4, -1, -1, -1, 604, 127, -1,
4148 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4149 -1, -1, -1, -1, -1, -1, -1, 326, -1, 1094,
4150 -1, -1, 331, -1, 896, -1, -1, -1, -1, -1,
4151 1075, -1, -1, -1, -1, -1, -1, -1, -1, 582,
4152 -1, 584, 53, 54, 651, -1, 57, -1, -1, 592,
4153 -1, -1, -1, -1, -1, 1130, 1131, -1, -1, 602,
4154 -1, 604, 605, 935, 936, -1, -1, -1, -1, -1,
4155 -1, -1, 83, 680, -1, -1, 683, 684, -1, -1,
4156 -1, -1, -1, 690, -1, 96, 97, 98, -1, -1,
4157 -1, -1, -1, -1, 1169, 1170, 639, -1, -1, -1,
4158 -1, -1, -1, -1, -1, -1, 1151, 979, -1, -1,
4159 1155, -1, -1, -1, -1, 424, 425, -1, -1, -1,
4160 -1, -1, 729, -1, 433, 732, 1171, -1, -1, -1,
4161 -1, -1, -1, 1005, 1006, -1, -1, 680, -1, -1,
4162 -1, 684, 685, -1, -1, 688, -1, -1, -1, 692,
4163 693, -1, -1, -1, -1, 1027, 699, 700, -1, -1,
4164 -1, 470, 1207, 1208, 473, -1, 52, 1242, 54, 55,
4165 56, 57, 58, -1, -1, -1, -1, -1, -1, 786,
4166 787, -1, -1, -1, -1, -1, 729, -1, 731, 732,
4167 2, 77, 4, -1, -1, -1, -1, -1, 209, 77,
4168 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4169 519, -1, -1, -1, -1, 101, 94, 95, -1, -1,
4170 -1, 107, 108, 109, 831, -1, -1, -1, -1, 836,
4171 -1, 242, -1, 244, -1, -1, 1108, -1, -1, -1,
4172 -1, 53, 54, 1115, -1, 852, 257, 133, 259, 2,
4173 136, 4, 859, 131, 132, 133, 134, 135, 136, 137,
4174 138, -1, 148, -1, 871, -1, -1, 874, -1, 280,
4175 -1, -1, -1, -1, 881, 882, 819, -1, -1, -1,
4176 -1, -1, -1, -1, 891, 892, 893, -1, 831, -1,
4177 897, 898, -1, 836, 837, 902, -1, -1, 309, 906,
4178 53, 54, -1, 314, 57, -1, -1, -1, 915, 852,
4179 619, -1, 621, -1, -1, -1, 859, 328, 329, -1,
4180 331, -1, -1, -1, -1, 634, -1, 636, 871, -1,
4181 83, 874, -1, -1, -1, -1, -1, -1, -1, 2,
4182 -1, 4, -1, 96, 97, 98, 99, -1, -1, -1,
4183 -1, -1, -1, -1, -1, 366, -1, -1, -1, 370,
4184 967, 372, -1, 906, -1, -1, -1, -1, -1, -1,
4185 679, -1, 915, -1, -1, -1, 983, -1, -1, -1,
4186 -1, -1, -1, -1, 991, -1, -1, -1, -1, 698,
4187 53, 54, -1, -1, -1, -1, -1, 209, 707, -1,
4188 -1, -1, -1, 414, 415, -1, -1, -1, 1015, -1,
4189 1017, 1018, -1, 722, -1, -1, -1, -1, -1, -1,
4190 -1, -1, -1, -1, -1, -1, -1, -1, -1, 690,
4191 242, -1, 244, 96, -1, -1, -1, -1, -1, -1,
4192 -1, -1, -1, -1, -1, 257, 1053, 259, -1, 1056,
4193 -1, -1, 1059, 690, 465, -1, 209, -1, -1, -1,
4194 -1, -1, -1, -1, 773, -1, -1, -1, 1075, -1,
4195 -1, 482, 1015, -1, 1017, -1, -1, -1, -1, -1,
4196 -1, -1, -1, -1, -1, -1, -1, -1, -1, 242,
4197 -1, 244, -1, 690, -1, -1, -1, 309, -1, -1,
4198 -1, -1, 314, -1, 257, -1, 259, -1, -1, -1,
4199 1053, -1, -1, 1056, -1, 526, 328, -1, -1, 331,
4200 -1, -1, -1, 1130, 1131, 786, 787, 280, 52, -1,
4201 54, 55, 56, 57, 58, -1, -1, 846, -1, -1,
4202 -1, -1, -1, -1, 1151, -1, 209, -1, 1155, 786,
4203 787, 1094, -1, 77, 366, -1, 309, 866, 370, -1,
4204 372, 314, -1, -1, 1171, -1, -1, 91, -1, -1,
4205 -1, 582, -1, 584, -1, 328, 329, 101, -1, 242,
4206 -1, 244, -1, 107, 108, 109, -1, 1130, 1131, 786,
4207 787, -1, -1, 604, 257, -1, 259, -1, -1, -1,
4208 1207, 1208, 414, 415, -1, 914, -1, -1, -1, 133,
4209 -1, -1, 136, 366, -1, -1, -1, 370, -1, 372,
4210 881, 882, -1, -1, -1, -1, 1169, 1170, -1, -1,
4211 891, 892, 893, 942, -1, 1242, 897, 898, -1, -1,
4212 651, -1, -1, -1, 881, 882, 309, -1, -1, 660,
4213 -1, 314, -1, 465, 891, 892, 893, -1, -1, -1,
4214 897, 898, -1, -1, -1, 328, -1, -1, 331, 680,
4215 -1, -1, 683, 684, 685, -1, -1, -1, -1, -1,
4216 -1, 692, 693, -1, 881, 882, -1, -1, 699, 700,
4217 -1, -1, -1, -1, 891, 892, 893, -1, -1, 1242,
4218 897, 898, -1, 366, -1, -1, -1, 370, -1, 372,
4219 1019, -1, 465, -1, -1, -1, -1, -1, 729, -1,
4220 -1, 732, 983, 1032, -1, -1, -1, -1, -1, 482,
4221 991, -1, -1, -1, 52, -1, 54, 55, 56, 57,
4222 58, -1, -1, -1, -1, -1, 983, -1, -1, -1,
4223 -1, 414, 415, -1, 991, -1, -1, 1018, -1, 77,
4224 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4225 582, -1, 584, 526, -1, -1, -1, -1, -1, -1,
4226 -1, 1018, -1, 101, -1, -1, 983, -1, -1, 107,
4227 108, 109, 604, -1, 991, -1, -1, -1, -1, -1,
4228 -1, -1, 465, -1, -1, -1, -1, -1, 819, -1,
4229 -1, -1, -1, -1, 1075, 133, -1, -1, 136, -1,
4230 831, 1018, -1, -1, -1, 836, -1, -1, -1, 582,
4231 -1, 584, -1, -1, -1, -1, -1, -1, 1075, -1,
4232 -1, 852, -1, -1, -1, -1, -1, -1, 859, -1,
4233 -1, 604, -1, -1, -1, -1, -1, -1, -1, -1,
4234 871, -1, -1, 874, -1, -1, -1, -1, 680, -1,
4235 -1, -1, 684, 685, -1, -1, -1, -1, 1075, -1,
4236 692, 693, -1, -1, -1, -1, -1, 699, 700, -1,
4237 1151, 902, -1, -1, 1155, 906, -1, -1, 651, -1,
4238 -1, -1, -1, -1, 915, -1, 690, -1, -1, -1,
4239 1171, -1, -1, -1, 1151, -1, -1, 729, 1155, 582,
4240 732, 584, -1, -1, -1, -1, -1, 680, -1, -1,
4241 683, 684, -1, -1, 1171, 690, -1, -1, -1, -1,
4242 -1, 604, -1, -1, -1, -1, 1207, 1208, -1, -1,
4243 -1, -1, -1, -1, 1151, -1, 967, -1, 1155, -1,
4244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4245 1207, 1208, -1, -1, 1171, -1, 729, -1, -1, 732,
4246 690, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4247 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4248 -1, -1, 786, 787, 1015, -1, 1017, 819, -1, -1,
4249 1207, 1208, -1, -1, -1, -1, -1, 680, -1, 831,
4250 -1, 684, 685, -1, 836, -1, -1, -1, -1, 692,
4251 693, 786, 787, -1, -1, -1, 699, 700, -1, -1,
4252 852, -1, 1053, -1, -1, 1056, -1, 859, 1059, -1,
4253 -1, -1, -1, -1, -1, -1, -1, -1, -1, 871,
4254 -1, -1, 874, -1, -1, -1, 729, -1, -1, 732,
4255 -1, -1, -1, -1, -1, -1, 786, 787, 831, -1,
4256 -1, -1, -1, 836, -1, -1, -1, -1, -1, -1,
4257 -1, -1, -1, -1, 906, -1, -1, 881, 882, 852,
4258 -1, -1, -1, 915, -1, -1, 859, 891, 892, 893,
4259 -1, -1, -1, 897, 898, -1, -1, -1, 871, 1130,
4260 1131, 874, -1, -1, -1, -1, 881, 882, -1, -1,
4261 -1, -1, -1, -1, -1, -1, 891, 892, 893, -1,
4262 -1, -1, 897, 898, -1, -1, -1, -1, -1, 902,
4263 -1, -1, -1, 906, -1, -1, 819, -1, -1, -1,
4264 -1, -1, 915, -1, -1, -1, -1, -1, 831, -1,
4265 -1, 881, 882, 836, -1, -1, -1, -1, -1, -1,
4266 -1, 891, 892, 893, -1, 16, 17, 897, 898, 852,
4267 -1, -1, -1, -1, -1, -1, 859, -1, -1, 983,
4268 -1, -1, -1, 1015, -1, 1017, -1, 991, 871, -1,
4269 -1, 874, -1, -1, 967, -1, -1, 48, 49, 50,
4270 51, -1, -1, -1, 55, 56, -1, -1, 983, -1,
4271 -1, 1242, -1, -1, 1018, -1, 991, 68, 69, 902,
4272 -1, 1053, -1, 906, 1056, -1, -1, -1, -1, -1,
4273 -1, -1, 915, -1, -1, -1, -1, -1, 33, 34,
4274 35, 36, 1015, 1018, 1017, -1, -1, -1, -1, 100,
4275 -1, -1, -1, 983, 49, 50, 51, -1, -1, -1,
4276 -1, 991, -1, -1, 59, 60, 61, 62, 63, -1,
4277 -1, 1075, -1, -1, -1, -1, -1, -1, -1, -1,
4278 1053, -1, -1, 1056, -1, -1, 1059, -1, 1018, -1,
4279 -1, -1, -1, -1, -1, -1, -1, -1, 1130, 1131,
4280 1075, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4281 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114,
4282 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4283 -1, -1, 1015, -1, 1017, -1, -1, -1, -1, -1,
4284 -1, -1, -1, -1, 139, 1075, -1, 1151, -1, -1,
4285 -1, 1155, -1, -1, -1, -1, 207, 1130, 1131, 210,
4286 211, 212, -1, 214, -1, -1, -1, 1171, -1, -1,
4287 1053, -1, -1, 1056, -1, -1, 1151, -1, -1, 230,
4288 1155, 232, 233, -1, -1, -1, -1, -1, -1, -1,
4289 -1, -1, -1, -1, -1, -1, 1171, -1, -1, -1,
4290 -1, -1, -1, 1207, 1208, -1, -1, -1, -1, -1,
4291 1242, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4292 -1, 1151, -1, -1, -1, 1155, -1, -1, -1, -1,
4293 -1, -1, 1207, 1208, -1, -1, -1, -1, -1, -1,
4294 -1, 1171, -1, -1, -1, -1, -1, 1130, 1131, -1,
4295 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4296 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1242,
4297 -1, -1, -1, -1, -1, 326, -1, 1207, 1208, -1,
4298 331, -1, 333, 334, 335, 336, 337, -1, -1, 340,
4299 341, 342, 343, 344, 345, 346, 347, 348, -1, -1,
4300 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
4301 -1, -1, -1, 364, -1, -1, -1, -1, -1, -1,
4302 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4303 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4304 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4305 -1, -1, -1, -1, 94, 95, -1, -1, -1, 1242,
4306 -1, -1, -1, 414, 415, -1, -1, -1, -1, -1,
4307 -1, -1, 423, 424, 425, -1, -1, -1, 429, -1,
4308 431, 432, 433, -1, -1, -1, -1, 127, 439, 129,
4309 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4310 -1, -1, -1, 454, -1, -1, -1, -1, 459, -1,
4311 -1, -1, -1, 153, -1, -1, -1, -1, -1, 470,
4312 -1, -1, 473, -1, -1, -1, -1, -1, -1, 0,
4313 -1, -1, -1, 484, -1, -1, -1, 8, 9, 10,
4314 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4315 -1, 502, -1, -1, 25, 26, 27, 28, 29, -1,
4316 -1, -1, -1, -1, -1, -1, 37, 38, 519, 40,
4317 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4319 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
4320 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4321 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4322 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4323 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
4324 -1, 592, -1, -1, -1, -1, -1, -1, -1, 120,
4325 -1, 602, 123, -1, -1, 126, 127, 128, 129, 130,
4326 131, 132, 133, 134, 135, 136, 137, 138, 619, -1,
4327 621, -1, 143, 144, 145, 146, -1, -1, 149, 150,
4328 151, -1, 153, 634, -1, 636, -1, -1, -1, 0,
4329 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
4330 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4331 -1, -1, -1, -1, 25, 26, 27, -1, -1, -1,
4332 -1, -1, -1, -1, -1, -1, 37, 38, 679, 40,
4333 41, 42, 43, 44, 685, 686, -1, 688, -1, -1,
4334 -1, 692, 693, -1, -1, -1, -1, 698, 699, 700,
4335 -1, -1, -1, -1, -1, -1, 707, 68, -1, -1,
4336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4337 -1, 722, -1, -1, -1, -1, -1, -1, -1, -1,
4338 -1, -1, -1, -1, -1, 96, 97, -1, -1, -1,
4339 -1, -1, -1, -1, -1, -1, 747, 748, -1, 750,
4340 751, 33, 34, 35, 36, -1, -1, -1, -1, 120,
4341 -1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
4342 52, -1, 773, -1, 56, -1, 58, 59, 60, 61,
4343 62, 63, 143, 144, -1, -1, -1, 148, 149, -1,
4344 151, -1, 153, -1, -1, 77, -1, -1, -1, -1,
4345 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4346 -1, 812, -1, -1, -1, -1, 98, -1, 819, 101,
4347 -1, -1, 104, 105, -1, 107, 108, -1, 110, 111,
4348 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4349 -1, -1, -1, -1, -1, 846, -1, -1, -1, -1,
4350 132, -1, -1, -1, -1, 0, 1, 139, 3, 4,
4351 5, 6, 7, 864, -1, 866, 11, 12, -1, -1,
4352 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4353 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4354 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4355 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4356 55, 56, 57, 914, 59, 60, 61, 62, 63, 64,
4357 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4358 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4359 -1, 942, -1, -1, -1, 90, 91, -1, -1, -1,
4360 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4361 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4362 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4363 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4364 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4365 -1, -1, -1, -1, -1, -1, 151, -1, 153, -1,
4366 -1, -1, -1, -1, -1, -1, -1, -1, 1019, 0,
4367 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
4368 -1, 1032, 13, 14, 15, -1, 17, -1, -1, -1,
4369 -1, 44, -1, -1, 25, -1, 27, 28, 29, -1,
4370 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4371 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4372 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4373 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
4374 -1, 94, 95, 1094, -1, -1, 77, 78, 79, 80,
4375 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4376 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4377 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
4378 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
4379 -1, -1, 123, 146, -1, 126, 127, 128, 129, 130,
4380 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4381 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
4382 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
4383 14, 15, -1, 17, -1, -1, -1, -1, 44, -1,
4384 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
4385 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4386 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4387 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4388 86, 87, 88, 89, 68, -1, -1, -1, 94, 95,
4389 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4390 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4391 94, 95, 96, 97, -1, 99, 100, -1, -1, -1,
4392 -1, 127, 106, 129, 130, 131, 132, 133, 134, 135,
4393 136, 137, 138, -1, -1, -1, 120, -1, -1, 123,
4394 -1, -1, 126, 127, 128, 129, 130, 131, 132, 133,
4395 134, 135, 136, 137, 138, -1, -1, -1, -1, -1,
4396 144, 145, 146, 0, -1, 149, 150, 151, -1, 153,
4397 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4398 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
4399 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
4400 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4401 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4402 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4403 89, 68, -1, -1, -1, 94, 95, -1, -1, -1,
4404 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4405 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4406 97, -1, -1, 100, -1, -1, -1, -1, 127, 106,
4407 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4408 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
4409 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
4410 137, 138, -1, -1, -1, -1, 143, 144, 145, 146,
4411 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
4412 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
4413 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
4414 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
4415 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4416 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4417 82, 83, 84, 85, 86, 87, 88, 89, 68, -1,
4418 -1, -1, 94, 95, -1, -1, -1, 77, 78, 79,
4419 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4420 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
4421 100, -1, -1, -1, -1, -1, 106, 129, 130, 131,
4422 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4423 120, -1, -1, 123, -1, -1, -1, 127, 128, 129,
4424 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4425 -1, -1, -1, 143, 144, 145, 146, 0, -1, 149,
4426 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
4427 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
4428 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
4429 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4430 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4431 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4432 -1, 86, 87, -1, -1, 68, -1, -1, -1, 94,
4433 95, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4434 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4435 -1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
4436 -1, -1, -1, 106, 129, 130, 131, 132, 133, 134,
4437 135, 136, 137, 138, -1, -1, -1, 120, -1, -1,
4438 123, -1, -1, 126, 127, 128, 129, 130, 131, 132,
4439 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4440 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
4441 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
4442 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4443 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
4444 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4445 -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4446 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
4447 -1, -1, 68, -1, -1, -1, 94, 95, -1, -1,
4448 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4449 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4450 96, 97, -1, -1, 100, -1, -1, -1, -1, -1,
4451 106, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4452 138, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4453 -1, 127, -1, 129, 130, 131, 132, 133, 134, 135,
4454 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
4455 146, 0, 148, 149, 150, 151, -1, 153, -1, 8,
4456 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
4457 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
4458 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4459 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4460 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4461 81, 82, 83, -1, -1, 86, 87, -1, -1, 68,
4462 -1, -1, -1, 94, 95, -1, -1, -1, 77, 78,
4463 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4464 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4465 -1, 100, -1, -1, -1, -1, -1, 106, 129, 130,
4466 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4467 -1, 120, -1, -1, 123, -1, -1, -1, 127, 128,
4468 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4469 -1, -1, -1, -1, -1, 144, 145, 146, 0, -1,
4470 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
4471 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
4472 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
4473 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4474 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4475 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4476 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
4477 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4478 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4479 -1, -1, 94, 95, 96, 97, -1, -1, 100, -1,
4480 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
4481 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4482 -1, -1, -1, -1, -1, 127, -1, 129, 130, 131,
4483 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4484 -1, 143, 144, 145, 146, 0, 148, 149, 150, 151,
4485 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
4486 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4487 25, -1, 27, 28, -1, -1, -1, -1, -1, -1,
4488 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4491 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4492 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4493 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4494 95, 96, 97, -1, -1, 100, -1, -1, -1, -1,
4495 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
4496 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4497 -1, -1, 127, -1, 129, 130, 131, 132, 133, 134,
4498 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4499 145, 146, 0, 148, 149, 150, 151, -1, 153, -1,
4500 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
4501 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
4502 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4503 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4505 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4506 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4507 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4508 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4509 -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
4510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4511 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
4512 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4513 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
4514 -1, 149, -1, 151, -1, 153, -1, 8, 9, 10,
4515 -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
4516 -1, -1, -1, -1, 25, 26, -1, -1, -1, -1,
4517 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4518 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4520 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
4521 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4522 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4523 -1, -1, -1, 94, 95, 96, 97, -1, 99, -1,
4524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4525 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
4526 -1, -1, -1, -1, -1, 126, 127, -1, 129, 130,
4527 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4528 -1, -1, 143, 144, 145, 146, 0, -1, 149, -1,
4529 151, -1, 153, -1, 8, 9, 10, -1, -1, -1,
4530 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
4531 -1, 25, -1, -1, -1, -1, -1, -1, -1, -1,
4532 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4533 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4534 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4535 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
4536 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4537 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4538 94, 95, 96, 97, -1, 99, -1, -1, -1, -1,
4539 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4540 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
4541 -1, -1, 126, 127, -1, 129, 130, 131, 132, 133,
4542 134, 135, 136, 137, 138, -1, -1, -1, -1, -1,
4543 144, 145, 146, 0, -1, 149, -1, 151, -1, 153,
4544 -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
4545 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
4546 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4547 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4549 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4550 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
4551 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4552 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4553 97, -1, 99, -1, -1, -1, -1, -1, -1, -1,
4554 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4555 -1, -1, -1, 120, -1, -1, -1, -1, -1, 126,
4556 127, -1, 129, 130, 131, 132, 133, 134, 135, 136,
4557 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
4558 -1, -1, 149, -1, 151, 1, 153, 3, 4, 5,
4559 6, 7, 8, 9, 10, 11, 12, -1, -1, 15,
4560 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4561 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4562 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4563 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4564 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4565 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4566 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4567 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4568 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4569 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4570 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4572 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
4573 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4574 5, 6, 7, -1, -1, 10, 11, 12, -1, 14,
4575 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4576 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4577 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4578 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4579 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4580 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4581 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4582 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4583 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4584 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4585 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4587 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4588 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4589 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4590 -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
4591 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4592 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4593 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4594 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4595 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4596 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4597 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4598 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4599 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4600 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4601 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4602 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4603 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4604 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4605 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
4606 23, 24, 25, -1, -1, -1, -1, 30, 31, 32,
4607 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4608 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4609 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4610 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4611 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4612 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4613 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4614 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4615 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4616 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4617 -1, -1, -1, -1, -1, -1, 139, 140, 141, -1,
4618 -1, -1, -1, -1, -1, -1, -1, -1, 151, 1,
4619 153, 3, 4, 5, 6, 7, -1, -1, 10, 11,
4620 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
4621 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4622 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4623 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4624 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4625 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4626 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4627 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4628 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4629 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4630 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4631 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
4632 6, 7, -1, 9, 10, 11, 12, 139, 140, 141,
4633 16, -1, 18, 19, 20, 21, 22, 23, 24, 151,
4634 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4635 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4636 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4637 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4638 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4639 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4640 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4641 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4642 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4643 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4644 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
4645 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4646 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4647 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4648 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4649 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4650 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4651 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4652 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4653 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4654 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4655 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4656 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4657 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4658 140, 141, -1, -1, -1, -1, -1, -1, -1, 149,
4659 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4660 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
4661 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4662 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4663 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4664 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4665 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4666 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4668 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4669 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4670 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4671 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4672 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4673 139, 140, 141, -1, -1, -1, -1, -1, -1, -1,
4674 149, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4675 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
4676 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4677 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4678 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4679 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4680 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4681 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4682 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4683 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4684 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4685 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4686 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4687 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4688 -1, 139, 140, 141, -1, -1, 144, -1, -1, -1,
4689 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4690 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4691 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4692 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4693 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4694 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4695 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4696 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4697 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4698 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4699 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4700 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4701 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4703 -1, -1, 139, 140, 141, -1, -1, 144, -1, -1,
4704 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4705 6, 7, -1, -1, 10, 11, 12, -1, -1, -1,
4706 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4707 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4708 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4709 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4710 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4711 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4712 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4713 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4714 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4715 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4716 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4717 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
4718 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4719 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4720 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4721 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4722 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4723 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4724 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4725 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4726 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4727 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4728 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4729 120, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4730 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4731 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4732 24, 151, -1, 153, -1, -1, 30, 31, 32, 33,
4733 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4734 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4735 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4736 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4737 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4738 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4739 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4740 104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
4741 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4742 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4743 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4744 18, 19, 20, 21, 22, 23, 24, -1, -1, 153,
4745 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4746 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4747 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4748 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4749 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4751 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4752 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4753 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4754 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4755 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4756 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4757 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
4758 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4759 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4760 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4761 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4762 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4763 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4764 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4765 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4766 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4767 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4768 6, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4769 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4770 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4771 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4772 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4773 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4774 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4775 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4776 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4777 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4778 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4779 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4780 -1, -1, -1, 3, 4, 5, 6, 7, -1, -1,
4781 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4782 20, 21, 22, 23, 24, 151, -1, -1, -1, -1,
4783 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4784 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4785 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4786 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4787 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4788 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4789 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4790 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4791 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4793 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4794 140, 141, -1, -1, -1, -1, -1, -1, -1, -1,
4795 -1, 151, 3, 4, 5, 6, 7, 8, 9, 10,
4796 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4797 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4798 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4799 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4800 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
4801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4802 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4803 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4804 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4805 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4806 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4807 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4808 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4809 141, -1, -1, -1, -1, -1, 147, 148, 3, 4,
4810 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4811 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4812 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4813 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4814 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4815 55, 56, 57, -1, -1, -1, -1, -1, -1, -1,
4816 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4817 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4818 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4819 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4820 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4821 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4822 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4823 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4824 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4825 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4826 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4827 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4828 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4829 50, 51, 52, 53, 54, -1, 56, -1, -1, -1,
4830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4831 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4832 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4833 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4834 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4835 -1, 111, -1, -1, -1, -1, -1, -1, -1, -1,
4836 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4837 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4838 140, 141, -1, -1, -1, -1, -1, 147, 3, 4,
4839 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4840 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4841 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4842 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4843 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
4844 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4845 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4846 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4847 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4848 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4849 -1, -1, 107, 108, -1, -1, 111, -1, -1, -1,
4850 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4851 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4852 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4853 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4854 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4855 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4856 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4857 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4858 50, 51, 52, 53, -1, -1, 56, -1, -1, -1,
4859 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4860 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4861 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4862 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4863 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4864 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4865 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4866 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4867 140, 141, 3, 4, 5, -1, 7, 147, -1, -1,
4868 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
4869 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4870 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4871 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4872 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4873 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4874 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4875 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4876 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4877 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
4878 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4879 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4880 -1, 3, 4, 5, -1, 7, -1, -1, 139, 11,
4881 12, -1, -1, -1, 16, 146, 18, 19, 20, 21,
4882 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4883 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4884 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4885 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4886 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4889 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4890 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4891 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4893 3, 4, 5, 6, 7, -1, -1, 139, 11, 12,
4894 -1, -1, -1, 16, 146, 18, 19, 20, 21, 22,
4895 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4896 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4897 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4898 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4899 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4900 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4901 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4902 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4903 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4904 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4905 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4906 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4907 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4908 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4909 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4910 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4911 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
4912 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4913 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4914 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4915 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4916 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
4917 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4918 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4919 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4920 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4921 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4922 -1, -1, -1, -1, 45, 46, -1, 48, 49, 50,
4923 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4924 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4925 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4926 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4927 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4928 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4929 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4930 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4931 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4932 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4933 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4934 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4935 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4936 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4937 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4938 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4939 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4940 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4941 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
4942 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4943 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4944 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4945 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4946 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4947 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4948 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
4949 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4950 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4951 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4952 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4953 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
4954 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4955 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4956 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4957 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4958 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4959 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4960 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4961 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
4962 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4963 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4964 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4965 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4966 -1, 104, 105, -1, 107, 108, 109, 110, 111, 112,
4967 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4968 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4969 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4970 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4971 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4972 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4973 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4974 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
4975 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4976 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4977 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4978 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4979 107, 108, -1, 110, 111, 112, 113, 114, 115, 116,
4980 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4981 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4982 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4983 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4984 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4985 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4986 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
4987 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4988 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4989 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4990 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4991 101, 102, -1, 104, 105, -1, -1, 108, 109, 110,
4992 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4993 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4994 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4995 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4996 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4997 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4998 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4999 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5000 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5001 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5002 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5003 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5004 105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
5005 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5006 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5007 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5008 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5009 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5010 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5011 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5012 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5013 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5015 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5016 -1, -1, 101, 102, -1, 104, 105, -1, -1, 108,
5017 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5018 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5019 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5020 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5021 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5022 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5023 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5024 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5025 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5026 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5027 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5028 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5029 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5030 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5031 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5032 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5033 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5034 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5035 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5036 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5037 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5038 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5039 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5040 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5041 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5042 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5043 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5044 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5045 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5046 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5047 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5048 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5049 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5050 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5051 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5052 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5053 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5054 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5055 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5056 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5057 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5058 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5059 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5060 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5061 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5062 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5063 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5064 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5065 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5066 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5067 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5068 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5069 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5070 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5071 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5072 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5073 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5074 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5075 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5076 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5077 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5078 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5079 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5080 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5081 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5082 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5083 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5084 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5085 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5086 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5087 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5088 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5089 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5090 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5091 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5092 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5093 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5094 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5095 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5096 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5097 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5098 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5099 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5100 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5101 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5102 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5103 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5104 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5105 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5106 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5107 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5108 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5109 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5110 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5111 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5112 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5113 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5114 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5115 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5116 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5117 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5118 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5119 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5120 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5121 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5122 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5123 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5124 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5125 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5126 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5128 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5129 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5130 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5131 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5132 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5133 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5134 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5135 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5136 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5137 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5138 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5139 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5140 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5141 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5142 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5143 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5144 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5145 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5146 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5147 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5148 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5149 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5150 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5151 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5152 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5153 -1, -1, -1, 94, -1, -1, -1, 98, -1, -1,
5154 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5155 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5156 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5157 -1, -1, 11, 12, -1, -1, -1, 16, 139, 18,
5158 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5159 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5160 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5161 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5162 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5163 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5164 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5165 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
5166 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5167 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5168 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5169 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5170 139, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5171 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5172 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5173 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5174 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5175 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5176 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5177 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5178 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5179 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5180 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5181 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5182 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5183 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5184 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5185 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5186 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5187 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5188 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5189 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5190 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5191 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5192 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5193 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5194 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5195 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5196 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5197 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5198 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5199 63, 64, 65, 33, 34, 35, 36, -1, -1, -1,
5200 -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
5201 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
5202 60, 61, 62, 63, -1, 98, -1, -1, 101, 102,
5203 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5204 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5205 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
5206 -1, 101, -1, -1, 104, 105, 139, 107, -1, -1,
5207 110, 111, 112, 113, 114, 115, 116, 117, 118, 33,
5208 34, 35, 36, -1, -1, -1, -1, -1, -1, -1,
5209 -1, -1, 132, -1, -1, 49, 50, 51, 52, 139,
5210 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
5211 -1, -1, 33, 34, 35, 36, -1, -1, -1, -1,
5212 -1, -1, -1, -1, -1, -1, -1, -1, 49, 50,
5213 51, 52, -1, -1, -1, 56, 90, 91, 59, 60,
5214 61, 62, 63, -1, 98, -1, -1, 101, -1, -1,
5215 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
5216 114, 115, 116, 117, 118, -1, -1, -1, -1, 90,
5217 91, -1, -1, -1, -1, -1, -1, 98, 132, -1,
5218 101, -1, -1, 104, 105, 139, -1, -1, -1, 110,
5219 111, 112, 113, 114, 115, 116, 117, 118, 52, 53,
5220 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
5221 -1, 132, -1, -1, -1, -1, -1, -1, 139, -1,
5222 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5223 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5224 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5225 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5226 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5227 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5228 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5229 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5230 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5231 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5232 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5233 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5234 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5235 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5236 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5237 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5238 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5239 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5240 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5241 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5242 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5243 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5245 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5246 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5247 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5248 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5249 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5250 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5251 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5252 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5253 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5254 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5255 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5256 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5258 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5259 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5260 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5261 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5262 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5263 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5264 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5265 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5267 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5268 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5269 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5270 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5271 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5272 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5273 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5274 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5276 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5277 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5278 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5279 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5280 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5281 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5282 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5283 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5285 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5286 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5287 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5288 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5289 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5290 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5291 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5292 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5293 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5294 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5295 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5296 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5297 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5299 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5300 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5301 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5302 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5303 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5304 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5305 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5306 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5307 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5308 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5309 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5310 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5311 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5312 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5313 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5314 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5315 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5316 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5317 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5318 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5319 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5320 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5321 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5322 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5323 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5324 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5326 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5327 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5328 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5329 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5330 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5331 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5332 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5333 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5335 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5336 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5337 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5339 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5340 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5341 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5342 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5344 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5345 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5346 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5348 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5349 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5350 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5351 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5353 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5354 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
5355 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
5356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5357 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
5358 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
5359 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
5360 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
5361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5362 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
5363 134, 135, 136, 137, 138, -1, 140, 141, -1, -1,
5371 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
5372 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
5373 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
5374 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5375 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
5376 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
5377 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
5378 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
5379 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
5380 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
5381 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
5382 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
5383 367, 368, 369, 405, 419, 159, 3, 4, 5, 6,
5384 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
5385 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
5386 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5387 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
5388 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
5389 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
5390 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
5391 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
5392 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
5393 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
5394 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
5395 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
5396 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
5397 163, 164, 165, 167, 185, 186, 419, 167, 220, 205,
5398 215, 403, 419, 204, 402, 403, 419, 46, 98, 139,
5399 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
5400 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
5401 152, 364, 179, 200, 200, 151, 153, 411, 417, 418,
5402 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
5403 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
5404 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
5405 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
5406 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
5407 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
5408 176, 177, 176, 175, 411, 418, 98, 184, 191, 233,
5409 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
5410 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
5411 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
5412 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
5413 204, 204, 348, 126, 100, 146, 214, 419, 97, 145,
5414 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
5415 209, 210, 215, 377, 403, 419, 171, 413, 171, 54,
5416 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
5417 167, 166, 185, 149, 411, 418, 413, 221, 413, 150,
5418 146, 153, 416, 146, 416, 144, 416, 412, 56, 364,
5419 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
5420 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
5421 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
5422 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
5423 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
5424 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
5425 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5426 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5427 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
5428 407, 209, 215, 52, 53, 56, 198, 207, 406, 161,
5429 163, 13, 253, 417, 253, 163, 175, 163, 411, 225,
5430 56, 97, 145, 409, 25, 171, 52, 56, 192, 130,
5431 370, 97, 145, 409, 228, 401, 229, 68, 97, 408,
5432 52, 56, 406, 170, 200, 206, 170, 206, 197, 124,
5433 204, 107, 204, 213, 403, 52, 56, 209, 52, 56,
5434 404, 413, 149, 413, 146, 413, 146, 413, 195, 222,
5435 200, 144, 144, 406, 406, 206, 160, 413, 165, 413,
5436 403, 146, 189, 52, 56, 209, 52, 56, 272, 353,
5437 352, 119, 341, 351, 66, 119, 119, 341, 66, 119,
5438 200, 144, 284, 282, 10, 251, 288, 251, 204, 146,
5439 44, 413, 189, 146, 44, 126, 44, 97, 145, 409,
5440 173, 412, 99, 99, 207, 211, 412, 414, 146, 99,
5441 99, 207, 208, 211, 419, 251, 8, 246, 329, 419,
5442 163, 13, 163, 251, 27, 254, 417, 251, 25, 224,
5443 293, 17, 248, 291, 52, 56, 209, 52, 56, 176,
5444 227, 371, 226, 52, 56, 192, 209, 161, 171, 230,
5445 231, 208, 211, 195, 204, 204, 214, 99, 99, 414,
5446 99, 99, 377, 403, 171, 416, 187, 414, 273, 354,
5447 54, 55, 57, 358, 369, 152, 351, 152, 152, 152,
5448 285, 144, 289, 107, 204, 167, 189, 167, 200, 52,
5449 56, 209, 52, 56, 52, 56, 90, 91, 98, 101,
5450 104, 105, 110, 132, 303, 304, 305, 308, 323, 324,
5451 326, 327, 328, 333, 334, 337, 338, 339, 342, 344,
5452 345, 366, 128, 170, 206, 170, 206, 181, 150, 99,
5453 170, 206, 170, 206, 181, 204, 217, 330, 419, 9,
5454 15, 247, 249, 332, 419, 14, 249, 250, 255, 256,
5455 419, 256, 178, 294, 291, 251, 107, 204, 290, 251,
5456 414, 163, 417, 175, 161, 414, 251, 413, 148, 372,
5457 373, 194, 281, 278, 99, 413, 146, 413, 274, 355,
5458 131, 265, 266, 419, 265, 204, 414, 324, 324, 56,
5459 192, 311, 309, 414, 310, 412, 415, 325, 52, 100,
5460 174, 131, 88, 89, 97, 145, 148, 306, 307, 200,
5461 170, 206, 100, 331, 419, 163, 162, 163, 175, 251,
5462 251, 295, 251, 204, 146, 253, 251, 161, 417, 251,
5463 52, 54, 55, 56, 57, 58, 77, 91, 101, 107,
5464 108, 109, 133, 136, 374, 376, 377, 378, 379, 380,
5465 381, 382, 383, 384, 387, 388, 389, 390, 391, 394,
5466 395, 396, 397, 398, 161, 376, 382, 232, 148, 276,
5467 376, 356, 262, 264, 267, 380, 382, 383, 385, 386,
5468 389, 390, 392, 393, 396, 398, 412, 163, 161, 303,
5469 107, 303, 312, 313, 314, 316, 58, 112, 317, 318,
5470 319, 320, 321, 322, 388, 144, 270, 326, 308, 324,
5471 324, 192, 414, 413, 112, 312, 317, 312, 317, 98,
5472 191, 233, 365, 366, 369, 253, 163, 253, 296, 107,
5473 204, 163, 251, 101, 107, 258, 259, 260, 261, 379,
5474 413, 413, 126, 146, 375, 204, 146, 399, 419, 34,
5475 52, 146, 399, 399, 146, 375, 52, 146, 375, 52,
5476 251, 417, 146, 372, 376, 275, 357, 267, 131, 126,
5477 146, 263, 98, 233, 146, 399, 399, 399, 146, 263,
5478 146, 263, 151, 413, 52, 146, 414, 107, 303, 316,
5479 146, 348, 415, 146, 303, 34, 52, 348, 413, 413,
5480 414, 414, 56, 97, 145, 409, 163, 332, 163, 301,
5481 302, 303, 314, 317, 204, 256, 291, 292, 260, 379,
5482 146, 413, 146, 204, 374, 377, 381, 394, 396, 384,
5483 388, 390, 398, 382, 391, 396, 380, 382, 161, 267,
5484 29, 123, 277, 163, 131, 233, 262, 393, 396, 56,
5485 97, 385, 390, 382, 392, 396, 382, 52, 268, 269,
5486 378, 146, 315, 316, 52, 146, 146, 124, 319, 321,
5487 322, 52, 56, 209, 52, 56, 329, 255, 253, 40,
5488 41, 146, 413, 258, 261, 259, 413, 146, 375, 146,
5489 375, 399, 146, 375, 146, 375, 375, 251, 149, 161,
5490 163, 120, 146, 263, 146, 263, 52, 56, 399, 146,
5491 263, 146, 263, 263, 146, 412, 315, 146, 146, 315,
5492 414, 297, 175, 175, 312, 146, 146, 382, 396, 382,
5493 382, 251, 144, 382, 396, 382, 382, 269, 316, 315,
5494 298, 259, 375, 146, 375, 375, 375, 263, 146, 263,
5495 263, 263, 299, 382, 382, 163, 375, 263, 256, 293,
5502 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
5503 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
5504 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
5505 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
5506 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
5507 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
5508 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
5509 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
5510 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
5511 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
5512 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
5513 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
5514 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
5515 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
5516 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
5517 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
5518 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
5519 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5520 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5521 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5522 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
5523 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5524 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5525 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5526 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
5527 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
5528 205, 205, 206, 206, 207, 207, 207, 208, 208, 209,
5529 209, 209, 209, 209, 210, 210, 210, 210, 210, 212,
5530 211, 213, 214, 214, 215, 215, 215, 215, 216, 216,
5531 217, 217, 217, 218, 218, 218, 218, 218, 218, 218,
5532 218, 218, 218, 218, 219, 218, 220, 218, 221, 218,
5533 218, 218, 218, 218, 218, 218, 218, 218, 218, 222,
5534 218, 218, 218, 218, 218, 218, 223, 218, 218, 218,
5535 218, 218, 224, 218, 225, 218, 218, 218, 226, 218,
5536 227, 218, 228, 218, 229, 230, 218, 231, 232, 218,
5537 218, 218, 218, 218, 233, 234, 235, 236, 237, 238,
5538 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
5539 249, 250, 251, 252, 253, 253, 253, 254, 254, 255,
5540 255, 256, 256, 257, 257, 258, 258, 259, 259, 260,
5541 260, 260, 260, 260, 261, 261, 262, 262, 262, 262,
5542 262, 263, 263, 264, 264, 264, 264, 264, 264, 264,
5543 264, 264, 264, 264, 264, 264, 264, 264, 265, 265,
5544 266, 266, 267, 267, 268, 268, 269, 269, 271, 272,
5545 273, 274, 275, 270, 276, 276, 277, 277, 278, 279,
5546 279, 279, 279, 280, 280, 280, 280, 280, 280, 280,
5547 280, 280, 281, 281, 283, 284, 285, 282, 287, 288,
5548 289, 286, 290, 290, 290, 290, 291, 292, 292, 294,
5549 295, 296, 297, 298, 299, 293, 300, 300, 301, 301,
5550 301, 302, 302, 302, 302, 302, 303, 304, 304, 305,
5551 305, 306, 307, 308, 308, 308, 308, 308, 308, 308,
5552 309, 308, 308, 310, 308, 308, 311, 308, 312, 312,
5553 312, 312, 312, 312, 312, 312, 313, 313, 314, 314,
5554 314, 314, 315, 315, 316, 317, 317, 317, 317, 317,
5555 317, 318, 318, 319, 319, 320, 320, 321, 321, 322,
5556 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
5557 324, 324, 324, 324, 324, 324, 324, 324, 324, 325,
5558 324, 326, 327, 328, 328, 328, 329, 329, 330, 330,
5559 330, 331, 331, 332, 332, 333, 333, 334, 335, 335,
5560 335, 336, 337, 338, 339, 340, 340, 341, 341, 342,
5561 343, 343, 344, 345, 346, 346, 347, 347, 348, 348,
5562 349, 349, 350, 350, 351, 352, 351, 353, 354, 355,
5563 356, 357, 351, 358, 358, 358, 358, 359, 359, 360,
5564 361, 361, 361, 361, 362, 363, 363, 364, 364, 364,
5565 364, 365, 365, 365, 365, 365, 366, 366, 366, 366,
5566 366, 366, 366, 367, 367, 368, 368, 369, 369, 371,
5567 370, 370, 372, 372, 372, 373, 372, 374, 374, 374,
5568 374, 374, 375, 375, 376, 376, 376, 376, 376, 376,
5569 376, 376, 376, 376, 376, 376, 376, 376, 376, 377,
5570 378, 378, 378, 378, 379, 379, 380, 381, 381, 382,
5571 382, 383, 384, 384, 385, 385, 386, 386, 387, 387,
5572 388, 388, 389, 390, 390, 391, 392, 393, 393, 394,
5573 394, 395, 395, 396, 396, 397, 397, 398, 399, 399,
5574 400, 401, 400, 402, 402, 403, 403, 404, 404, 404,
5575 404, 405, 405, 405, 406, 406, 406, 406, 407, 407,
5576 407, 408, 408, 409, 409, 410, 410, 411, 411, 412,
5577 412, 413, 414, 415, 416, 416, 416, 417, 417, 418,
5584 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5585 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5586 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5587 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5588 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5589 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5590 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5591 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5592 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5593 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5594 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5595 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5596 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5597 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5598 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5599 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5600 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5601 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5602 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5603 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5604 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5605 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5606 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5607 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5608 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5609 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5610 4, 2, 1, 3, 3, 5, 3, 1, 1, 1,
5611 1, 2, 4, 2, 1, 2, 2, 4, 1, 0,
5612 2, 2, 2, 1, 1, 2, 3, 4, 1, 1,
5613 3, 4, 2, 1, 1, 1, 1, 1, 1, 1,
5614 1, 1, 1, 1, 0, 4, 0, 3, 0, 4,
5615 3, 3, 2, 3, 3, 1, 4, 3, 1, 0,
5616 6, 4, 3, 2, 1, 2, 0, 3, 6, 6,
5617 4, 4, 0, 6, 0, 5, 5, 6, 0, 6,
5618 0, 7, 0, 5, 0, 0, 7, 0, 0, 9,
5619 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5620 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5621 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
5622 5, 1, 2, 1, 1, 1, 3, 1, 3, 1,
5623 3, 5, 1, 3, 2, 1, 4, 2, 2, 2,
5624 1, 2, 0, 6, 8, 4, 6, 4, 2, 6,
5625 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
5626 3, 4, 1, 4, 1, 3, 1, 1, 0, 0,
5627 0, 0, 0, 7, 4, 1, 3, 3, 3, 2,
5628 4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
5629 1, 4, 3, 3, 0, 0, 0, 5, 0, 0,
5630 0, 5, 1, 2, 3, 4, 5, 1, 1, 0,
5631 0, 0, 0, 0, 0, 11, 1, 1, 1, 3,
5632 3, 1, 2, 3, 1, 1, 1, 3, 1, 3,
5633 1, 1, 1, 1, 4, 4, 3, 4, 4, 3,
5634 0, 4, 2, 0, 4, 2, 0, 4, 1, 1,
5635 2, 3, 5, 2, 4, 1, 2, 3, 2, 4,
5636 1, 3, 1, 3, 1, 3, 1, 2, 1, 3,
5637 1, 1, 3, 2, 1, 1, 3, 2, 1, 2,
5638 1, 3, 3, 2, 2, 1, 1, 1, 2, 2,
5639 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5640 3, 1, 2, 2, 3, 1, 6, 1, 1, 1,
5641 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
5642 2, 3, 3, 3, 4, 0, 3, 1, 2, 4,
5643 0, 3, 4, 4, 0, 3, 0, 3, 0, 2,
5644 0, 2, 0, 2, 1, 0, 3, 0, 0, 0,
5645 0, 0, 8, 1, 1, 1, 1, 1, 1, 2,
5646 1, 1, 1, 1, 3, 1, 2, 1, 1, 1,
5647 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5648 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5649 4, 0, 3, 5, 3, 0, 3, 4, 2, 2,
5650 2, 1, 2, 0, 6, 8, 4, 6, 4, 6,
5651 2, 4, 6, 2, 4, 2, 4, 1, 0, 1,
5652 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
5653 3, 1, 2, 1, 2, 1, 1, 3, 1, 3,
5654 1, 1, 2, 2, 1, 3, 3, 1, 3, 1,
5655 3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
5656 1, 0, 4, 1, 2, 1, 3, 3, 2, 4,
5657 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5658 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,
5659 1, 2, 2, 2, 0, 1, 1, 1, 1, 1,
5666#define yyerrok (yyerrstatus = 0)
5667#define yyclearin (yychar = YYEMPTY)
5669#define YYACCEPT goto yyacceptlab
5670#define YYABORT goto yyabortlab
5671#define YYERROR goto yyerrorlab
5672#define YYNOMEM goto yyexhaustedlab
5675#define YYRECOVERING() (!!yyerrstatus)
5677#define YYBACKUP(Token, Value) \
5679 if (yychar == YYEMPTY) \
5683 YYPOPSTACK (yylen); \
5689 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5696#define YYERRCODE YYUNDEF
5702#ifndef YYLLOC_DEFAULT
5703# define YYLLOC_DEFAULT(Current, Rhs, N) \
5707 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5708 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5709 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5710 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5714 (Current).first_line = (Current).last_line = \
5715 YYRHSLOC (Rhs, 0).last_line; \
5716 (Current).first_column = (Current).last_column = \
5717 YYRHSLOC (Rhs, 0).last_column; \
5722#define YYRHSLOC(Rhs, K) ((Rhs)[K])
5730# define YYFPRINTF fprintf
5733# define YYDPRINTF(Args) \
5744# ifndef YYLOCATION_PRINT
5746# if defined YY_LOCATION_PRINT
5750# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
5752# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5758yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5776 else if (0 <= end_col && yylocp->
first_column < end_col)
5782# define YYLOCATION_PRINT yy_location_print_
5786# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
5790# define YYLOCATION_PRINT(File, Loc) ((void) 0)
5793# define YY_LOCATION_PRINT YYLOCATION_PRINT
5799# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
5803 YYFPRINTF (p, "%s ", Title); \
5804 yy_symbol_print (stderr, \
5805 Kind, Value, Location, p); \
5806 YYFPRINTF (p, "\n"); \
5816yy_symbol_value_print (
FILE *yyo,
5819 FILE *yyoutput = yyo;
6032yy_symbol_print (
FILE *yyo,
6036 yykind <
YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
6040 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
6051#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
6054 for (; yybottom <= yytop; yybottom++)
6056 int yybot = *yybottom;
6062# define YY_STACK_PRINT(Bottom, Top) \
6065 yy_stack_print ((Bottom), (Top)); \
6077 int yylno = yyrline[yyrule];
6078 int yynrhs = yyr2[yyrule];
6080 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
6083 for (yyi = 0; yyi < yynrhs; yyi++)
6088 &yyvsp[(yyi + 1) - (yynrhs)],
6089 &(yylsp[(yyi + 1) - (yynrhs)]), p);
6094# define YY_REDUCE_PRINT(Rule) \
6097 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
6106# define YYDPRINTF(Args) ((void) 0)
6107# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
6108# define YY_STACK_PRINT(Bottom, Top)
6109# define YY_REDUCE_PRINT(Rule)
6115# define YYINITDEPTH 200
6126# define YYMAXDEPTH 10000
6150 int yyn = yypact[+*yyctx->
yyssp];
6156 int yyxbegin = yyn < 0 ? -yyn : 0;
6158 int yychecklim =
YYLAST - yyn + 1;
6161 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6167 else if (yycount == yyargn)
6173 if (yyarg && yycount == 0 && 0 < yyargn)
6182# if defined __GLIBC__ && defined _STRING_H
6183# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
6187yystrlen (
const char *yystr)
6190 for (yylen = 0; yystr[yylen]; yylen++)
6198# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
6199# define yystpcpy stpcpy
6204yystpcpy (
char *yydest,
const char *yysrc)
6207 const char *yys = yysrc;
6209 while ((*yyd++ = *yys++) !=
'\0')
6226yytnamerr (
char *yyres,
const char *yystr)
6231 char const *yyp = yystr;
6237 goto do_not_strip_quotes;
6241 goto do_not_strip_quotes;
6257 do_not_strip_quotes: ;
6261 return yystpcpy (yyres, yystr) - yyres;
6263 return yystrlen (yystr);
6301 yyarg[yycount] = yyctx->
yytoken;
6303 yyn = yypcontext_expected_tokens (yyctx,
6304 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
6325 enum { YYARGS_MAX = 5 };
6335 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
6341#define YYCASE_(N, S) \
6347 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
6348 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
6349 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
6350 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
6351 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6357 yysize = yystrlen (yyformat) - 2 * yycount + 1;
6360 for (yyi = 0; yyi < yycount; ++yyi)
6371 if (*yymsg_alloc < yysize)
6373 *yymsg_alloc = 2 * yysize;
6374 if (! (yysize <= *yymsg_alloc
6386 while ((*yyp = *yyformat) !=
'\0')
6387 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
6389 yyp +=
yytnamerr (yyp, yytname[yyarg[yyi++]]);
6407yydestruct (
const char *yymsg,
6446# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6450YYLTYPE yylloc = yyloc_default;
6457 int yyerrstatus = 0;
6495 char *yymsg = yymsgbuf;
6498#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
6534 YYDPRINTF ((p,
"Entering state %d\n", yystate));
6541 if (yyss + yystacksize - 1 <= yyssp)
6542#if !defined yyoverflow && !defined YYSTACK_RELOCATE
6549# if defined yyoverflow
6562 yyoverflow (
YY_(
"memory exhausted"),
6563 &yyss1, yysize *
YYSIZEOF (*yyssp),
6564 &yyvs1, yysize *
YYSIZEOF (*yyvsp),
6565 &yyls1, yysize *
YYSIZEOF (*yylsp),
6589# undef YYSTACK_RELOCATE
6595 yyssp = yyss + yysize - 1;
6596 yyvsp = yyvs + yysize - 1;
6597 yylsp = yyls + yysize - 1;
6600 YYDPRINTF ((p,
"Stack size increased to %ld\n",
6601 YY_CAST (
long, yystacksize)));
6604 if (yyss + yystacksize - 1 <= yyssp)
6624 yyn = yypact[yystate];
6634 yychar = yylex (&
yylval, &yylloc, p);
6641 YYDPRINTF ((p,
"Now at end of input.\n"));
6651 yyerror_range[1] = yylloc;
6663 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
6696 yyn = yydefact[yystate];
6717 yyval = yyvsp[1-yylen];
6721 yyerror_range[1] = yyloc;
6742 while (node->nd_next) {
6743 node = node->nd_next;
6745 node = node->nd_head;
6747 node = remove_begin(node);
6761 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
6781 (yyval.
node) = newline_node((yyvsp[0].node));
6792 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
6802 (yyval.
node) = remove_begin((yyvsp[0].node));
6810 (yyval.
node) = (yyvsp[0].node);
6830 {
if (!(yyvsp[-1].node)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6838 (yyval.
node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].
node), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
6849 (yyval.
node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].
node), 0, (yyvsp[0].node), &(yyloc));
6859 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
6879 (yyval.
node) = newline_node((yyvsp[0].node));
6890 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
6900 (yyval.
node) = remove_begin((yyvsp[0].node));
6908 (yyval.
node) = (yyvsp[0].node);
6916 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6924 (yyval.
node) = (yyvsp[0].node);
6963 buf[1] = (
char)(yyvsp[0].node)->nd_nth;
6975 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6987 (yyval.
node) = (yyvsp[0].node);
6998 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
6999 fixpos((yyval.
node), (yyvsp[0].
node));
7010 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
7011 fixpos((yyval.
node), (yyvsp[0].
node));
7026 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].
node), 1, &(yyloc));
7042 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].
node), 1, &(yyloc));
7055 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7056 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
7057 (yyval.
node) =
NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
7068 rb_warn0(
"END in method; use at_exit");
7073 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
7087 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
7099 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
7110 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7112 (yyval.
node) = node_assign(p, (yyvsp[-4].node),
NEW_RESCUE((yyvsp[-2].node),
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc)), &(yyloc));
7123 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
7134 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
7145 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
7156 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-3]), &(yyloc));
7168 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
7179 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
7190 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7191 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
7202 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].
id), (yyvsp[-1].
id), (yyvsp[0].
node), &(yyloc));
7213 rb_backref_error(p, (yyvsp[-2].node));
7225 (yyval.
node) = (yyvsp[0].node);
7234 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7246 (yyval.
node) = logop(p,
idAND, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
7254 (yyval.
node) = logop(p,
idOR, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
7262 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
7270 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7289 {(yyval.
tbl) = push_pvtbl(p);}
7295 {pop_pvtbl(p, (yyvsp[-1].tbl));}
7304 (yyval.
node) = new_case3(p, (yyvsp[-5].node),
NEW_IN((yyvsp[-1].node), 0, 0, &(yylsp[-1])), &(yyloc));
7315 (yyval.
node) = (yyvsp[0].node);
7335 (yyval.
node) = (yyvsp[-2].node);
7344 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
7354 (yyval.
node) = (yyvsp[-1].node);
7356 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
7381 (yyval.
node) = (yyvsp[-1].node);
7392 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
7394 (yyval.
node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
7395 fixpos((yyval.
node), (yyvsp[-2].
node));
7407 (yyval.
node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node),
Qnull, &(yylsp[-1]), &(yyloc));
7418 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
7440 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
7452 fixpos((yyval.
node), (yyvsp[0].
node));
7463 (yyval.
node) = new_yield(p, (yyvsp[0].node), &(yyloc));
7464 fixpos((yyval.
node), (yyvsp[0].
node));
7475 (yyval.
node) =
NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
7486 (yyval.
node) =
NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
7497 (yyval.
node) =
NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
7508 (yyval.
node) = (yyvsp[-1].node);
7541 (yyval.
node) =
NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].
node)), 0, &(yyloc));
7640 (yyval.
node) = (yyvsp[-1].node);
7651 (yyval.
node) =
NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
7662 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].
node));
7684 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].
node));
7695 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
7706 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
7717 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
7727 if ((yyvsp[-1].
id) ==
tANDDOT) {
7728 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
7731 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
7742 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].
id), &(yyloc));
7752 if ((yyvsp[-1].
id) ==
tANDDOT) {
7753 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
7756 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
7767 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
7778 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
7789 rb_backref_error(p, (yyvsp[0].node));
7801 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
7812 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
7823 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
7834 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
7845 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].
id), &(yyloc));
7856 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
7867 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
7878 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
7889 rb_backref_error(p, (yyvsp[0].node));
7901 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7945 (yyval.
id) = (yyvsp[0].
id);
7983 (yyval.
node) = block_append(p, (yyvsp[-3].node), undef);
8174 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
8185 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
8197 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-3]), &(yyloc));
8209 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
8221 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
8233 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].
id), (yyvsp[-1].
id), (yyvsp[0].
node), &(yyloc));
8244 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
8245 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
8256 (yyval.
node) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].
id), &(yyloc)), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
8267 rb_backref_error(p, (yyvsp[-2].node));
8306 loc.beg_pos = (yylsp[0]).end_pos;
8307 loc.end_pos = (yylsp[0]).end_pos;
8322 loc.beg_pos = (yylsp[0]).end_pos;
8323 loc.end_pos = (yylsp[0]).end_pos;
8338 loc.beg_pos = (yylsp[-1]).beg_pos;
8339 loc.end_pos = (yylsp[-1]).beg_pos;
8354 loc.beg_pos = (yylsp[-1]).beg_pos;
8355 loc.end_pos = (yylsp[-1]).beg_pos;
8368 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8376 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8384 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8392 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8400 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8408 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8416 (yyval.
node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].
node), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
8424 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUPlus, &(yylsp[-1]), &(yyloc));
8432 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUMinus, &(yylsp[-1]), &(yyloc));
8440 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8448 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8456 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8464 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idCmp, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8472 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEq, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8480 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEqq, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8488 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeq, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8496 (yyval.
node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8504 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeqTilde, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8512 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
8520 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
8528 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idLTLT, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8536 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idGTGT, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8544 (yyval.
node) = logop(p,
idANDOP, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8552 (yyval.
node) = logop(p,
idOROP, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8567 (yyval.
node) = new_defined(p, (yyvsp[0].node), &(yyloc));
8577 (yyval.
node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[0].node), &(yyloc));
8578 fixpos((yyval.
node), (yyvsp[-5].
node));
8588 (yyval.
node) = (yyvsp[0].node);
8620 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8629 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8638 (yyval.
node) = (yyvsp[0].node);
8646 (yyval.
node) = (yyvsp[-1].node);
8655 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
node);
8666 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
8677 (yyval.
node) = (yyvsp[0].node);
8686 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8699 (yyval.
node) = (yyvsp[-1].node);
8724 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), splat, &(yyloc));
8726 (yyval.
node) = arg_append(p, (yyval.
node), new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
8728 (yyval.
node) = arg_blk_pass((yyval.
node), block);
8755 (yyval.
node) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
8757 (yyval.
node) = splat;
8759 (yyval.
node) = arg_blk_pass((yyval.
node), block);
8770 (yyval.
node) = (yyvsp[-1].node);
8779 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
node);
8790 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
8813 (yyval.
node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].
node));
8824 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
8825 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].
node));
8836 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
node);
8837 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].
node));
8883 (yyval.
node) = (yyvsp[0].node);
8902 (yyval.
node) = (yyvsp[0].node);
8941 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
8952 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].
node), &(yyloc));
8963 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
8974 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].
node), &(yyloc));
9016 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9053 (yyval.
node) = (yyvsp[-2].node);
9065 (yyval.
node) = (yyvsp[-1].node);
9109 (yyval.
node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
9132 (yyval.
node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
9171 (yyval.
node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
9179 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
9187 (yyval.
node) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
9196 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
9207 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
9208 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
9218 token_info_push(p,
"->", &(yylsp[0]));
9226 (yyval.
node) = (yyvsp[0].node);
9238 (yyval.
node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].
node), (yyvsp[-1].node), &(yyloc));
9239 fixpos((yyval.
node), (yyvsp[-4].
node));
9250 (yyval.
node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].
node), (yyvsp[-1].node), &(yyloc));
9251 fixpos((yyval.
node), (yyvsp[-4].
node));
9262 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].
node), 1, &(yyloc));
9263 fixpos((yyval.
node), (yyvsp[-2].
node));
9274 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].
node), 1, &(yyloc));
9275 fixpos((yyval.
node), (yyvsp[-2].
node));
9298 fixpos((yyval.
node), (yyvsp[-4].
node));
9331 (yyval.
node) = new_case3(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
9351 ID id = internal_id(p);
9353 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
9355 tbl[0] = 1 ; tbl[1] =
id ;
9358 switch (
nd_type((yyvsp[-4].node))) {
9365 m->nd_next = (yyvsp[-4].
node);
9368 m->nd_next = node_assign(p, (yyvsp[-4].node),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
9371 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
9374 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
9376 (yyval.
node) =
NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
9377 fixpos((yyval.
node), (yyvsp[-4].
node));
9388 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
9389 yyerror1(&loc,
"class definition in method body");
9402 (yyval.
node) =
NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].
node), (yyvsp[-3].node), &(yyloc));
9404 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9431 set_line_body((yyvsp[-1].node),
nd_line((yyvsp[-4].node)));
9432 fixpos((yyval.
node), (yyvsp[-4].
node));
9446 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9447 yyerror1(&loc,
"module definition in method body");
9462 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9475 numparam_name(p,
get_id((yyvsp[0].
id)));
9496 NODE *body = remove_begin((yyvsp[-1].node));
9497 reduce_nodes(p, &body);
9500 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
9519 numparam_name(p,
get_id((yyvsp[0].
id)));
9534 NODE *body = remove_begin((yyvsp[-1].node));
9535 reduce_nodes(p, &body);
9536 (yyval.
node) =
NEW_DEFS((yyvsp[-7].node), (yyvsp[-4].
id), (yyvsp[-2].node), body, &(yyloc));
9538 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
9596 (yyval.
node) = (yyvsp[0].node);
9604 token_info_push(p,
"begin", &(yyloc));
9613 token_info_push(p,
"if", &(yyloc));
9631 token_info_push(p,
"unless", &(yyloc));
9639 token_info_push(p,
"while", &(yyloc));
9647 token_info_push(p,
"until", &(yyloc));
9655 token_info_push(p,
"case", &(yyloc));
9663 token_info_push(p,
"for", &(yyloc));
9671 token_info_push(p,
"class", &(yyloc));
9679 token_info_push(p,
"module", &(yyloc));
9687 token_info_push(p,
"def", &(yyloc));
9695 token_info_push(p,
"do", &(yyloc));
9703 token_info_push(p,
"do", &(yyloc));
9711 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
9719 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
9727 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
9736 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
9737 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
9742 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
9743 if (!e.
nonspc) *ptinfo_beg = e;
9753 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
9761 token_info_pop(p,
"end", &(yyloc));
9770 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
9779 (yyval.
node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
9780 fixpos((yyval.
node), (yyvsp[-3].
node));
9791 (yyval.
node) = (yyvsp[0].node);
9802 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
9803 mark_lvar_used(p, (yyval.
node));
9814 (yyval.
node) = (yyvsp[-1].node);
9836 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].
node));
9902 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
9903 mark_lvar_used(p, (yyval.
node));
9924 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
9932 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].
id), &(yylsp[-1]));
9940 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
9956 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
9964 (yyval.
node) = (yyvsp[0].node);
9980 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].
node), &(yyloc));
9988 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].
node), (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
9996 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].
node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
10002#line 3417 "parse.y"
10004 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node),
Qnone, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10006#line 10002 "parse.c"
10010#line 3421 "parse.y"
10012 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
10014#line 10010 "parse.c"
10018#line 3425 "parse.y"
10022 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
10026#line 10022 "parse.c"
10030#line 3433 "parse.y"
10032 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10034#line 10030 "parse.c"
10038#line 3437 "parse.y"
10042#line 10038 "parse.c"
10046#line 3441 "parse.y"
10048 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
10050#line 10046 "parse.c"
10054#line 3445 "parse.y"
10056 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10058#line 10054 "parse.c"
10062#line 3449 "parse.y"
10066#line 10062 "parse.c"
10070#line 3453 "parse.y"
10072 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10074#line 10070 "parse.c"
10078#line 3457 "parse.y"
10082#line 10078 "parse.c"
10086#line 3461 "parse.y"
10088 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10090#line 10086 "parse.c"
10094#line 3465 "parse.y"
10098#line 10094 "parse.c"
10102#line 3472 "parse.y"
10106#line 10102 "parse.c"
10110#line 3478 "parse.y"
10119#line 10115 "parse.c"
10123#line 3487 "parse.y"
10128 (yyval.
node) = (yyvsp[-2].node);
10132#line 10128 "parse.c"
10136#line 3499 "parse.y"
10140#line 10136 "parse.c"
10144#line 3503 "parse.y"
10151#line 10147 "parse.c"
10155#line 3518 "parse.y"
10157 new_bv(p,
get_id((yyvsp[0].
id)));
10160#line 10156 "parse.c"
10164#line 3523 "parse.y"
10168#line 10164 "parse.c"
10172#line 3528 "parse.y"
10174 (yyval.
vars) = dyna_push(p);
10176#line 10172 "parse.c"
10180#line 3531 "parse.y"
10185#line 10181 "parse.c"
10189#line 3535 "parse.y"
10194#line 10190 "parse.c"
10198#line 3539 "parse.y"
10200 (yyval.
node) = numparam_push(p);
10202#line 10198 "parse.c"
10206#line 3543 "parse.y"
10210#line 10206 "parse.c"
10214#line 3547 "parse.y"
10220 (yyvsp[-2].
node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
10223 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10230 numparam_pop(p, (yyvsp[-3].node));
10231 dyna_pop(p, (yyvsp[-6].
vars));
10233#line 10229 "parse.c"
10237#line 3568 "parse.y"
10240 (yyval.
node) = (yyvsp[-2].node);
10245#line 10241 "parse.c"
10249#line 3576 "parse.y"
10252 if (!args_info_empty_p((yyvsp[0].node)->
nd_ainfo))
10257#line 10253 "parse.c"
10261#line 3586 "parse.y"
10263 token_info_pop(p,
"}", &(yylsp[0]));
10264 (yyval.
node) = (yyvsp[-1].node);
10266#line 10262 "parse.c"
10270#line 3591 "parse.y"
10272 (yyval.
node) = (yyvsp[-1].node);
10274#line 10270 "parse.c"
10278#line 3597 "parse.y"
10280 (yyval.
node) = (yyvsp[-1].node);
10282 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10286#line 10282 "parse.c"
10290#line 3607 "parse.y"
10297 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
10299 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10300 fixpos((yyval.
node), (yyvsp[-1].
node));
10304#line 10300 "parse.c"
10308#line 3621 "parse.y"
10311 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
10315#line 10311 "parse.c"
10319#line 3628 "parse.y"
10322 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10326#line 10322 "parse.c"
10330#line 3635 "parse.y"
10333 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10337#line 10333 "parse.c"
10341#line 3644 "parse.y"
10344 (yyval.
node) = (yyvsp[-1].node);
10350#line 10346 "parse.c"
10354#line 3653 "parse.y"
10357 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
10362#line 10358 "parse.c"
10366#line 3661 "parse.y"
10374#line 10370 "parse.c"
10378#line 3669 "parse.y"
10385#line 10381 "parse.c"
10389#line 3676 "parse.y"
10392 (yyval.
node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].
node),
ID2VAL(
idCall), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
10397#line 10393 "parse.c"
10401#line 3684 "parse.y"
10409#line 10405 "parse.c"
10413#line 3692 "parse.y"
10420#line 10416 "parse.c"
10424#line 3699 "parse.y"
10431#line 10427 "parse.c"
10435#line 3706 "parse.y"
10442 fixpos((yyval.
node), (yyvsp[-3].
node));
10446#line 10442 "parse.c"
10450#line 3719 "parse.y"
10452 (yyval.
node) = (yyvsp[-1].node);
10454 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10458#line 10454 "parse.c"
10462#line 3727 "parse.y"
10464 (yyval.
node) = (yyvsp[-1].node);
10466 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10470#line 10466 "parse.c"
10474#line 3736 "parse.y"
10475 {(yyval.
vars) = dyna_push(p);}
10476#line 10472 "parse.c"
10480#line 3737 "parse.y"
10485#line 10481 "parse.c"
10489#line 3741 "parse.y"
10491 (yyval.
node) = numparam_push(p);
10493#line 10489 "parse.c"
10497#line 3745 "parse.y"
10501 (yyvsp[-1].
node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
10506 numparam_pop(p, (yyvsp[-2].node));
10507 dyna_pop(p, (yyvsp[-4].
vars));
10509#line 10505 "parse.c"
10513#line 3758 "parse.y"
10514 {(yyval.
vars) = dyna_push(p);}
10515#line 10511 "parse.c"
10519#line 3759 "parse.y"
10524#line 10520 "parse.c"
10528#line 3763 "parse.y"
10530 (yyval.
node) = numparam_push(p);
10533#line 10529 "parse.c"
10537#line 3768 "parse.y"
10541 (yyvsp[-1].
node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
10547 numparam_pop(p, (yyvsp[-2].node));
10548 dyna_pop(p, (yyvsp[-4].
vars));
10550#line 10546 "parse.c"
10554#line 3783 "parse.y"
10557 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
10562#line 10558 "parse.c"
10566#line 3791 "parse.y"
10573#line 10569 "parse.c"
10577#line 3798 "parse.y"
10580 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
10581 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
10585#line 10581 "parse.c"
10589#line 3806 "parse.y"
10592 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].
node), &(yyloc));
10596#line 10592 "parse.c"
10600#line 3817 "parse.y"
10603 (yyval.
node) =
NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10604 fixpos((yyval.
node), (yyvsp[-3].
node));
10608#line 10604 "parse.c"
10612#line 3831 "parse.y"
10619#line 10615 "parse.c"
10623#line 3837 "parse.y"
10624 {(yyval.
tbl) = push_pvtbl(p);}
10625#line 10621 "parse.c"
10629#line 3838 "parse.y"
10630 {(yyval.
tbl) = push_pktbl(p);}
10631#line 10627 "parse.c"
10635#line 3840 "parse.y"
10636 {pop_pktbl(p, (yyvsp[-2].tbl));}
10637#line 10633 "parse.c"
10641#line 3841 "parse.y"
10642 {pop_pvtbl(p, (yyvsp[-4].tbl));}
10643#line 10639 "parse.c"
10647#line 3842 "parse.y"
10651#line 10647 "parse.c"
10655#line 3847 "parse.y"
10658 (yyval.
node) =
NEW_IN((yyvsp[-6].node), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10662#line 10658 "parse.c"
10666#line 3861 "parse.y"
10669 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10670 fixpos((yyval.
node), (yyvsp[0].
node));
10674#line 10670 "parse.c"
10678#line 3869 "parse.y"
10681 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10682 fixpos((yyval.
node), (yyvsp[0].
node));
10686#line 10682 "parse.c"
10690#line 3880 "parse.y"
10692 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10695#line 10691 "parse.c"
10699#line 3885 "parse.y"
10701 (yyval.
node) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
10707#line 10703 "parse.c"
10711#line 3893 "parse.y"
10713 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
10715#line 10711 "parse.c"
10719#line 3897 "parse.y"
10721 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[0].node), &(yyloc));
10723#line 10719 "parse.c"
10727#line 3906 "parse.y"
10731 n = list_append(p,
n, (yyvsp[0].node));
10732 (yyval.
node) = new_hash(p,
n, &(yyloc));
10736#line 10732 "parse.c"
10740#line 3918 "parse.y"
10747#line 10743 "parse.c"
10751#line 3927 "parse.y"
10752 {(yyval.
tbl) = push_pktbl(p);}
10753#line 10749 "parse.c"
10757#line 3928 "parse.y"
10758 {(yyval.
tbl) = push_pktbl(p);}
10759#line 10755 "parse.c"
10763#line 3932 "parse.y"
10765 pop_pktbl(p, (yyvsp[-2].tbl));
10766 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), &(yyloc));
10772#line 10768 "parse.c"
10776#line 3941 "parse.y"
10778 pop_pktbl(p, (yyvsp[-2].tbl));
10779 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
10785#line 10781 "parse.c"
10789#line 3950 "parse.y"
10791 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10792 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
10794#line 10790 "parse.c"
10798#line 3955 "parse.y"
10800 pop_pktbl(p, (yyvsp[-2].tbl));
10801 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), &(yyloc));
10807#line 10803 "parse.c"
10811#line 3964 "parse.y"
10813 pop_pktbl(p, (yyvsp[-2].tbl));
10814 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
10820#line 10816 "parse.c"
10824#line 3973 "parse.y"
10826 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10827 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
10829#line 10825 "parse.c"
10833#line 3977 "parse.y"
10834 {(yyval.
tbl) = push_pktbl(p);}
10835#line 10831 "parse.c"
10839#line 3978 "parse.y"
10841 pop_pktbl(p, (yyvsp[-2].tbl));
10842 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].node), &(yyloc));
10844#line 10840 "parse.c"
10848#line 3983 "parse.y"
10850 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10853#line 10849 "parse.c"
10857#line 3988 "parse.y"
10859 (yyval.
tbl) = push_pktbl(p);
10863#line 10859 "parse.c"
10867#line 3994 "parse.y"
10869 pop_pktbl(p, (yyvsp[-2].tbl));
10871 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[-1].node), &(yyloc));
10873#line 10869 "parse.c"
10877#line 4000 "parse.y"
10879 (yyval.
node) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10880 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyval.
node), &(yyloc));
10882#line 10878 "parse.c"
10886#line 4004 "parse.y"
10887 {(yyval.
tbl) = push_pktbl(p);}
10888#line 10884 "parse.c"
10892#line 4005 "parse.y"
10894 pop_pktbl(p, (yyvsp[-2].tbl));
10895 (yyval.
node) = (yyvsp[-1].node);
10897#line 10893 "parse.c"
10901#line 4012 "parse.y"
10905 (yyval.
node) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10910#line 10906 "parse.c"
10914#line 4021 "parse.y"
10916 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0,
Qnone, &(yyloc));
10918#line 10914 "parse.c"
10922#line 4025 "parse.y"
10925 (yyval.
node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].
node)), 0, 0,
Qnone, &(yyloc));
10931#line 10927 "parse.c"
10935#line 4034 "parse.y"
10937 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-2].node), 1, (yyvsp[0].
id),
Qnone, &(yyloc));
10939#line 10935 "parse.c"
10943#line 4038 "parse.y"
10945 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-4].node), 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
10947#line 10943 "parse.c"
10951#line 4042 "parse.y"
10953 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, 0,
Qnone, &(yyloc));
10955#line 10951 "parse.c"
10959#line 4046 "parse.y"
10961 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, 0, (yyvsp[0].
node), &(yyloc));
10963#line 10959 "parse.c"
10967#line 4053 "parse.y"
10969 (yyval.
node) = (yyvsp[-1].node);
10971#line 10967 "parse.c"
10975#line 4057 "parse.y"
10978 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[-1].
node));
10982#line 10978 "parse.c"
10986#line 4066 "parse.y"
10988 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].
id),
Qnone, &(yyloc));
10990#line 10986 "parse.c"
10994#line 4070 "parse.y"
10996 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].
node), &(yyloc));
10998#line 10994 "parse.c"
11002#line 4074 "parse.y"
11004 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
11006#line 11002 "parse.c"
11010#line 4078 "parse.y"
11012 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].node), &(yyloc));
11014#line 11010 "parse.c"
11018#line 4085 "parse.y"
11021 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].
node));
11025#line 11021 "parse.c"
11029#line 4094 "parse.y"
11036#line 11032 "parse.c"
11040#line 4103 "parse.y"
11042 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].
id), &(yyloc));
11044#line 11040 "parse.c"
11048#line 4107 "parse.y"
11050 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
11052#line 11048 "parse.c"
11056#line 4111 "parse.y"
11058 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
11060#line 11056 "parse.c"
11064#line 4115 "parse.y"
11066 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
11068#line 11064 "parse.c"
11072#line 4119 "parse.y"
11074 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
11076#line 11072 "parse.c"
11080#line 4123 "parse.y"
11082 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
11084#line 11080 "parse.c"
11088#line 4131 "parse.y"
11091 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].
node));
11095#line 11091 "parse.c"
11099#line 4140 "parse.y"
11101 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].
id)), &(yylsp[-1]));
11107#line 11103 "parse.c"
11111#line 4148 "parse.y"
11113 error_duplicate_pattern_key(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
11115 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
11117 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
11119 (yyval.
node) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
11123#line 11119 "parse.c"
11127#line 4163 "parse.y"
11129 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11132 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
11133 (yyval.
id) =
SYM2ID(node->nd_lit);
11144 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
11148#line 11144 "parse.c"
11152#line 4186 "parse.y"
11154 (yyval.
id) = (yyvsp[0].
id);
11156#line 11152 "parse.c"
11160#line 4190 "parse.y"
11164#line 11160 "parse.c"
11168#line 4196 "parse.y"
11172#line 11168 "parse.c"
11176#line 4203 "parse.y"
11185#line 11181 "parse.c"
11189#line 4212 "parse.y"
11198#line 11194 "parse.c"
11202#line 4221 "parse.y"
11206 loc.beg_pos = (yylsp[0]).end_pos;
11207 loc.end_pos = (yylsp[0]).end_pos;
11214#line 11210 "parse.c"
11218#line 4233 "parse.y"
11222 loc.beg_pos = (yylsp[0]).end_pos;
11223 loc.end_pos = (yylsp[0]).end_pos;
11230#line 11226 "parse.c"
11234#line 4248 "parse.y"
11238 loc.beg_pos = (yylsp[-1]).beg_pos;
11239 loc.end_pos = (yylsp[-1]).beg_pos;
11246#line 11242 "parse.c"
11250#line 4260 "parse.y"
11254 loc.beg_pos = (yylsp[-1]).beg_pos;
11255 loc.end_pos = (yylsp[-1]).beg_pos;
11262#line 11258 "parse.c"
11266#line 4282 "parse.y"
11269 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11273#line 11269 "parse.c"
11277#line 4289 "parse.y"
11279 token_info_push(p,
"->", &(yylsp[0]));
11281#line 11277 "parse.c"
11285#line 4293 "parse.y"
11287 (yyval.
node) = (yyvsp[0].node);
11292#line 11288 "parse.c"
11296#line 4302 "parse.y"
11299 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
11300 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11304#line 11300 "parse.c"
11308#line 4312 "parse.y"
11311 NODE *
n = gettable(p, (yyvsp[0].
id), &(yyloc));
11319#line 11315 "parse.c"
11323#line 4325 "parse.y"
11330#line 11326 "parse.c"
11334#line 4332 "parse.y"
11341#line 11337 "parse.c"
11345#line 4339 "parse.y"
11348 (yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc));
11352#line 11348 "parse.c"
11356#line 4350 "parse.y"
11360 (yyvsp[-3].
node) ? block_append(p, node_assign(p, (yyvsp[-3].node),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].
node)) : (yyvsp[-1].
node),
11361 (yyvsp[0].node), &(yyloc));
11366#line 11362 "parse.c"
11370#line 4363 "parse.y"
11377#line 11373 "parse.c"
11381#line 4370 "parse.y"
11384 if (!((yyval.
node) = splat_array((yyvsp[0].node)))) (yyval.
node) = (yyvsp[0].node);
11388#line 11384 "parse.c"
11392#line 4380 "parse.y"
11394 (yyval.
node) = (yyvsp[0].node);
11396#line 11392 "parse.c"
11400#line 4387 "parse.y"
11403 (yyval.
node) = (yyvsp[0].node);
11407#line 11403 "parse.c"
11411#line 4401 "parse.y"
11420 node = evstr2dstr(p, node);
11422 (yyval.
node) = node;
11426#line 11422 "parse.c"
11430#line 4420 "parse.y"
11433 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11437#line 11433 "parse.c"
11441#line 4429 "parse.y"
11444 (yyval.
node) = heredoc_dedent(p, (yyvsp[-1].node));
11445 if ((yyval.
node)) nd_set_loc((yyval.
node), &(yyloc));
11449#line 11445 "parse.c"
11453#line 4439 "parse.y"
11456 (yyval.
node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
11460#line 11456 "parse.c"
11464#line 4448 "parse.y"
11466 (yyval.
node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].
num), &(yyloc));
11468#line 11464 "parse.c"
11472#line 4454 "parse.y"
11479#line 11475 "parse.c"
11483#line 4463 "parse.y"
11490#line 11486 "parse.c"
11494#line 4470 "parse.y"
11497 (yyval.
node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
11501#line 11497 "parse.c"
11505#line 4481 "parse.y"
11508 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11512#line 11508 "parse.c"
11516#line 4490 "parse.y"
11523#line 11519 "parse.c"
11527#line 4499 "parse.y"
11534#line 11530 "parse.c"
11538#line 4506 "parse.y"
11541 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
11545#line 11541 "parse.c"
11549#line 4515 "parse.y"
11556#line 11552 "parse.c"
11560#line 4524 "parse.y"
11567#line 11563 "parse.c"
11571#line 4533 "parse.y"
11578#line 11574 "parse.c"
11582#line 4540 "parse.y"
11585 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].
node));
11589#line 11585 "parse.c"
11593#line 4549 "parse.y"
11600#line 11596 "parse.c"
11604#line 4556 "parse.y"
11607 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].
node));
11611#line 11607 "parse.c"
11615#line 4565 "parse.y"
11626#line 11622 "parse.c"
11630#line 4576 "parse.y"
11633 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11646#line 11642 "parse.c"
11650#line 4594 "parse.y"
11657#line 11653 "parse.c"
11661#line 4601 "parse.y"
11664 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11668#line 11664 "parse.c"
11672#line 4610 "parse.y"
11683#line 11679 "parse.c"
11687#line 4621 "parse.y"
11690 NODE *head = (yyvsp[-1].
node), *tail = (yyvsp[0].node);
11692 (yyval.
node) = tail;
11695 (yyval.
node) = head;
11705 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
11708 (yyval.
node) = list_append(p, head, tail);
11726#line 11722 "parse.c"
11730#line 4664 "parse.y"
11737#line 11733 "parse.c"
11741#line 4671 "parse.y"
11750#line 11746 "parse.c"
11754#line 4680 "parse.y"
11759#line 11755 "parse.c"
11763#line 4684 "parse.y"
11769#line 11765 "parse.c"
11773#line 4689 "parse.y"
11778#line 11774 "parse.c"
11782#line 4693 "parse.y"
11787#line 11783 "parse.c"
11791#line 4697 "parse.y"
11796#line 11792 "parse.c"
11800#line 4702 "parse.y"
11810 if ((yyvsp[-1].node)) (yyvsp[-1].node)->flags &= ~NODE_FL_NEWLINE;
11811 (yyval.
node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
11815#line 11811 "parse.c"
11819#line 4719 "parse.y"
11826#line 11822 "parse.c"
11830#line 4726 "parse.y"
11837#line 11833 "parse.c"
11841#line 4733 "parse.y"
11848#line 11844 "parse.c"
11852#line 4747 "parse.y"
11860#line 11856 "parse.c"
11864#line 4763 "parse.y"
11868 (yyval.
node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
11872#line 11868 "parse.c"
11876#line 4774 "parse.y"
11879 (yyval.
node) = (yyvsp[0].node);
11884#line 11880 "parse.c"
11888#line 4796 "parse.y"
11889 {(yyval.
id) =
KWD2EID(nil, (yyvsp[0].
id));}
11890#line 11886 "parse.c"
11894#line 4797 "parse.y"
11895 {(yyval.
id) =
KWD2EID(
self, (yyvsp[0].
id));}
11896#line 11892 "parse.c"
11900#line 4798 "parse.y"
11901 {(yyval.
id) =
KWD2EID(
true, (yyvsp[0].
id));}
11902#line 11898 "parse.c"
11906#line 4799 "parse.y"
11907 {(yyval.
id) =
KWD2EID(
false, (yyvsp[0].
id));}
11908#line 11904 "parse.c"
11912#line 4800 "parse.y"
11913 {(yyval.
id) =
KWD2EID(_FILE__, (yyvsp[0].
id));}
11914#line 11910 "parse.c"
11918#line 4801 "parse.y"
11919 {(yyval.
id) =
KWD2EID(_LINE__, (yyvsp[0].
id));}
11920#line 11916 "parse.c"
11924#line 4802 "parse.y"
11925 {(yyval.
id) =
KWD2EID(_ENCODING__, (yyvsp[0].
id));}
11926#line 11922 "parse.c"
11930#line 4806 "parse.y"
11933 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11943#line 11939 "parse.c"
11947#line 4819 "parse.y"
11950 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11954#line 11950 "parse.c"
11958#line 4828 "parse.y"
11961 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11965#line 11961 "parse.c"
11969#line 4835 "parse.y"
11972 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11976#line 11972 "parse.c"
11980#line 4848 "parse.y"
11985#line 11981 "parse.c"
11989#line 4853 "parse.y"
11991 (yyval.
node) = (yyvsp[-1].node);
11993#line 11989 "parse.c"
11997#line 4857 "parse.y"
12004#line 12000 "parse.c"
12008#line 4866 "parse.y"
12011 (yyval.
node) = (yyvsp[-1].node);
12017#line 12013 "parse.c"
12021#line 4875 "parse.y"
12036#line 12032 "parse.c"
12040#line 4890 "parse.y"
12055#line 12051 "parse.c"
12059#line 4904 "parse.y"
12065#line 12061 "parse.c"
12069#line 4910 "parse.y"
12072 (yyval.
node) = (yyvsp[-1].node);
12076#line 12072 "parse.c"
12080#line 4919 "parse.y"
12082 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
12084#line 12080 "parse.c"
12088#line 4923 "parse.y"
12090 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].
id), &(yylsp[-1]));
12092#line 12088 "parse.c"
12096#line 4927 "parse.y"
12098 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
12100#line 12096 "parse.c"
12104#line 4931 "parse.y"
12108#line 12104 "parse.c"
12112#line 4935 "parse.y"
12114 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
12116#line 12112 "parse.c"
12120#line 4941 "parse.y"
12122 (yyval.
node) = (yyvsp[0].node);
12124#line 12120 "parse.c"
12128#line 4945 "parse.y"
12132#line 12128 "parse.c"
12136#line 4951 "parse.y"
12138 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].
node), &(yyloc));
12140#line 12136 "parse.c"
12144#line 4955 "parse.y"
12146 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].
node), (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
12148#line 12144 "parse.c"
12152#line 4959 "parse.y"
12154 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].
node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
12156#line 12152 "parse.c"
12160#line 4963 "parse.y"
12162 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node),
Qnone, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
12164#line 12160 "parse.c"
12168#line 4967 "parse.y"
12170 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
12172#line 12168 "parse.c"
12176#line 4971 "parse.y"
12178 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
12180#line 12176 "parse.c"
12184#line 4975 "parse.y"
12188#line 12184 "parse.c"
12192#line 4979 "parse.y"
12194 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
12196#line 12192 "parse.c"
12200#line 4983 "parse.y"
12202 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
12204#line 12200 "parse.c"
12208#line 4987 "parse.y"
12212#line 12208 "parse.c"
12216#line 4991 "parse.y"
12218 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
12220#line 12216 "parse.c"
12224#line 4995 "parse.y"
12228#line 12224 "parse.c"
12232#line 4999 "parse.y"
12234 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
12236#line 12232 "parse.c"
12240#line 5003 "parse.y"
12244#line 12240 "parse.c"
12248#line 5007 "parse.y"
12253#line 12249 "parse.c"
12257#line 5014 "parse.y"
12264#line 12260 "parse.c"
12268#line 5023 "parse.y"
12271 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
12276#line 12272 "parse.c"
12280#line 5031 "parse.y"
12283 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
12288#line 12284 "parse.c"
12292#line 5039 "parse.y"
12295 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
12300#line 12296 "parse.c"
12304#line 5047 "parse.y"
12307 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
12312#line 12308 "parse.c"
12316#line 5058 "parse.y"
12318 formal_argument(p,
get_id((yyvsp[0].
id)));
12320 (yyval.
id) = (yyvsp[0].
id);
12322#line 12318 "parse.c"
12326#line 5066 "parse.y"
12331 (yyval.
id) = (yyvsp[0].
id);
12333#line 12329 "parse.c"
12337#line 5075 "parse.y"
12345#line 12341 "parse.c"
12349#line 5083 "parse.y"
12352 ID tid = internal_id(p);
12354 loc.beg_pos = (yylsp[-1]).beg_pos;
12355 loc.end_pos = (yylsp[-1]).beg_pos;
12357 if (dyna_in_block(p)) {
12368#line 12364 "parse.c"
12372#line 5106 "parse.y"
12375 (yyval.
node) = (yyvsp[-2].node);
12378 rb_discard_node(p, (yyvsp[0].node));
12382#line 12378 "parse.c"
12386#line 5119 "parse.y"
12389 arg_var(p, formal_argument(p,
id));
12392 (yyval.
id) = (yyvsp[0].
id);
12394#line 12390 "parse.c"
12398#line 5129 "parse.y"
12402 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].
node), &(yyloc)), &(yyloc));
12406#line 12402 "parse.c"
12410#line 5137 "parse.y"
12418#line 12414 "parse.c"
12422#line 5147 "parse.y"
12425 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].
node), &(yyloc)), &(yyloc));
12429#line 12425 "parse.c"
12433#line 5154 "parse.y"
12440#line 12436 "parse.c"
12444#line 5163 "parse.y"
12447 (yyval.
node) = (yyvsp[0].node);
12451#line 12447 "parse.c"
12455#line 5170 "parse.y"
12458 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].
node));
12462#line 12458 "parse.c"
12466#line 5180 "parse.y"
12469 (yyval.
node) = (yyvsp[0].node);
12473#line 12469 "parse.c"
12477#line 5187 "parse.y"
12480 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].
node));
12484#line 12480 "parse.c"
12488#line 5200 "parse.y"
12494#line 12490 "parse.c"
12498#line 5208 "parse.y"
12500 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
12502 (yyval.
id) = (yyvsp[0].
id);
12506#line 12502 "parse.c"
12510#line 5216 "parse.y"
12513 (yyval.
id) = internal_id(p);
12514 arg_var(p, (yyval.
id));
12518#line 12514 "parse.c"
12522#line 5226 "parse.y"
12526 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
12530#line 12526 "parse.c"
12534#line 5236 "parse.y"
12538 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].
node), &(yyloc)), &(yyloc));
12542#line 12538 "parse.c"
12546#line 5246 "parse.y"
12549 (yyval.
node) = (yyvsp[0].node);
12553#line 12549 "parse.c"
12557#line 5253 "parse.y"
12560 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].
node));
12564#line 12560 "parse.c"
12568#line 5262 "parse.y"
12571 (yyval.
node) = (yyvsp[0].node);
12575#line 12571 "parse.c"
12579#line 5269 "parse.y"
12582 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].
node));
12586#line 12582 "parse.c"
12590#line 5282 "parse.y"
12592 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
12594 (yyval.
id) = (yyvsp[0].
id);
12598#line 12594 "parse.c"
12602#line 5290 "parse.y"
12605 (yyval.
id) = internal_id(p);
12606 arg_var(p, (yyval.
id));
12610#line 12606 "parse.c"
12614#line 5304 "parse.y"
12616 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
12618 (yyval.
id) = (yyvsp[0].
id);
12622#line 12618 "parse.c"
12626#line 5314 "parse.y"
12628 (yyval.
id) = (yyvsp[0].
id);
12630#line 12626 "parse.c"
12634#line 5318 "parse.y"
12638#line 12634 "parse.c"
12642#line 5324 "parse.y"
12645 (yyval.
node) = (yyvsp[0].node);
12647#line 12643 "parse.c"
12651#line 5328 "parse.y"
12653#line 12649 "parse.c"
12657#line 5329 "parse.y"
12660 switch (
nd_type((yyvsp[-1].node))) {
12669 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
12675 (yyval.
node) = (yyvsp[-1].node);
12679#line 12675 "parse.c"
12683#line 5354 "parse.y"
12686 (yyval.
node) = (yyvsp[-1].node);
12690#line 12686 "parse.c"
12694#line 5365 "parse.y"
12703 if (assocs->nd_head &&
12707 tail = tail->nd_next->nd_head->nd_head;
12709 assocs = list_concat(assocs, tail);
12711 (yyval.
node) = assocs;
12715#line 12711 "parse.c"
12719#line 5388 "parse.y"
12726 (yyval.
node) = list_append(p,
NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].
node));
12730#line 12726 "parse.c"
12734#line 5399 "parse.y"
12741#line 12737 "parse.c"
12745#line 5406 "parse.y"
12748 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
12749 (yyval.
node) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].
node));
12753#line 12749 "parse.c"
12757#line 5414 "parse.y"
12761 !((yyvsp[0].node)->nd_head && (yyvsp[0].
node)->
nd_head->nd_alen)) {
12762 static VALUE empty_hash;
12770 (yyval.
node) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
12774#line 12770 "parse.c"
12778#line 5482 "parse.y"
12780#line 12776 "parse.c"
12784#line 5483 "parse.y"
12786#line 12782 "parse.c"
12790#line 5487 "parse.y"
12792#line 12788 "parse.c"
12796#line 5491 "parse.y"
12800#line 12796 "parse.c"
12804#line 12800 "parse.c"
12831 const int yylhs = yyr1[yyn] -
YYNTOKENS;
12832 const int yyi = yypgoto[yylhs] + *yyssp;
12833 yystate = (0 <= yyi && yyi <=
YYLAST && yycheck[yyi] == *yyssp
12835 : yydefgoto[yylhs]);
12854 = {yyssp, yytoken, &yylloc};
12855 char const *yymsgp =
YY_(
"syntax error");
12856 int yysyntax_error_status;
12857 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
12858 if (yysyntax_error_status == 0)
12860 else if (yysyntax_error_status == -1)
12862 if (yymsg != yymsgbuf)
12868 yysyntax_error_status
12869 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
12875 yymsg_alloc =
sizeof yymsgbuf;
12879 yyerror (&yylloc, p, yymsgp);
12880 if (yysyntax_error_status ==
YYENOMEM)
12885 yyerror_range[1] = yylloc;
12886 if (yyerrstatus == 3)
12899 yydestruct (
"Error: discarding",
12900 yytoken, &
yylval, &yylloc, p);
12938 yyn = yypact[yystate];
12944 yyn = yytable[yyn];
12954 yyerror_range[1] = *yylsp;
12955 yydestruct (
"Error: popping",
12966 yyerror_range[2] = yylloc;
12997 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
13011 yydestruct (
"Cleanup: discarding lookahead",
13012 yytoken, &
yylval, &yylloc, p);
13018 while (yyssp != yyss)
13020 yydestruct (
"Cleanup: popping",
13028 if (yymsg != yymsgbuf)
13033#line 5495 "parse.y"
13038# define yylval (*p->lval)
13047# define set_yylval_node(x) { \
13048 YYLTYPE _cur_loc; \
13049 rb_parser_set_location(p, &_cur_loc); \
13050 yylval.node = (x); \
13052# define set_yylval_str(x) \
13054 set_yylval_node(NEW_STR(x, &_cur_loc)); \
13055 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13057# define set_yylval_literal(x) \
13059 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
13060 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13062# define set_yylval_num(x) (yylval.num = (x))
13063# define set_yylval_id(x) (yylval.id = (x))
13064# define set_yylval_name(x) (yylval.id = (x))
13065# define yylval_id() (yylval.id)
13070 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
13072# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
13073# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
13074# define set_yylval_id(x) (void)(x)
13075# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
13076# define set_yylval_literal(x) add_mark_object(p, (x))
13077# define set_yylval_node(x) (void)(x)
13078# define yylval_id() yylval.id
13079# define _cur_loc NULL_LOC
13082#define set_yylval_noname() set_yylval_id(keyword_nil)
13085#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
13086#define dispatch_scan_event(p, t) ((void)0)
13087#define dispatch_delayed_token(p, t) ((void)0)
13088#define has_delayed_token(p) (0)
13090#define literal_flush(p, ptr) ((void)(ptr))
13092#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
13095intern_sym(
const char *
name)
13112 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
13120 if (!ripper_has_scan_event(p))
return;
13121 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
13123#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
13129 const char *saved_tokp = p->
lex.
ptok;
13131 if (
NIL_P(p->delayed.token))
return;
13134 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
13135 p->delayed.token =
Qnil;
13139#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
13140#define has_delayed_token(p) (!NIL_P(p->delayed.token))
13167 int column = 1, nonspc = 0,
i;
13169 if (*
ptr ==
'\t') {
13173 if (*
ptr !=
' ' && *
ptr !=
'\t') {
13179 ptinfo->
indent = column;
13180 ptinfo->
nonspc = nonspc;
13192 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
13202 if (!ptinfo_beg)
return;
13206 token_info_warn(p,
token, ptinfo_beg, 1, loc);
13213 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
13215 if (!ptinfo_beg)
return;
13216 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
13220 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
13222 "mismatched indentations at '%s' with '%s' at %d",
13248 else if (yylloc->beg_pos.lineno == lineno) {
13267 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
13268 yylloc->beg_pos.column == yylloc->end_pos.column)) {
13272 parser_show_error_line(p, yylloc);
13280 const int max_line_margin = 30;
13281 const char *
ptr, *ptr_end, *pt, *pb;
13282 const char *pre =
"", *post =
"", *pend;
13283 const char *code =
"", *caret =
"";
13290 if (!yylloc)
return;
13292 if (pend > pbeg && pend[-1] ==
'\n') {
13293 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
13297 if (lineno == yylloc->end_pos.lineno &&
13298 (pend - pbeg) > yylloc->end_pos.column) {
13299 pt = pbeg + yylloc->end_pos.column;
13302 ptr = ptr_end = pt;
13303 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
13304 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
13306 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
13307 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
13313 if (
ptr > pbeg) pre =
"...";
13315 if (ptr_end < pend) {
13317 if (ptr_end < pend) post =
"...";
13321 if (lineno == yylloc->beg_pos.lineno) {
13322 pb += yylloc->beg_pos.column;
13323 if (pb > pt) pb = pt;
13326 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
13329 if (
RTEST(errbuf)) {
13338#define CSI_BEGIN "\033["
13349 (
int)(pt - pb), pb,
13350 (
int)(ptr_end - pt), pt,
13357 lim = pt < pend ? pt : pend;
13364 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
13375 pre, (
int)
len, code, post,
13384 const char *pcur = 0, *ptok = 0;
13393 dispatch1(parse_error,
STR_NEW2(msg));
13410vtable_size(
const struct vtable *tbl)
13436#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
13454#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
13470 if (
tbl->pos ==
tbl->capa) {
13471 tbl->capa =
tbl->capa * 2;
13476#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
13487 if (
tbl->pos <
n) {
13493#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
13502 for (
i = 0;
i <
tbl->pos;
i++) {
13503 if (
tbl->tbl[
i] ==
id) {
13517debug_lines(
VALUE fname)
13520 CONST_ID(script_lines,
"SCRIPT_LINES__");
13556 if (!e_option_supplied(p)) {
13562#define RUBY_DTRACE_PARSE_HOOK(name) \
13563 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
13564 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
13589 NODE *body = parser_append_options(p, tree->nd_body);
13593 tree->nd_body = prelude;
13605 if (
NIL_P(fname)) {
13625must_be_ascii_compatible(
VALUE s)
13637 char *beg, *end, *start;
13649 if (end)
len = ++end - beg;
13658 if (
NIL_P(line))
return line;
13659 must_be_ascii_compatible(line);
13685 return yycompile(vparser, p, fname, line);
13697 must_be_ascii_compatible(s);
13698 return parser_compile_string(vparser,
f, s, line);
13720 return yycompile(vparser, p, fname, start);
13736 p->
lex.
gets = lex_generic_gets;
13741 return yycompile(vparser, p, fname, start);
13745#define STR_FUNC_ESCAPE 0x01
13746#define STR_FUNC_EXPAND 0x02
13747#define STR_FUNC_REGEXP 0x04
13748#define STR_FUNC_QWORDS 0x08
13749#define STR_FUNC_SYMBOL 0x10
13750#define STR_FUNC_INDENT 0x20
13751#define STR_FUNC_LABEL 0x40
13752#define STR_FUNC_LIST 0x4000
13753#define STR_FUNC_TERM 0x8000
13784#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
13785#define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
13786#define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
13787#define peek(p,c) peek_n(p, (c), 0)
13788#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
13789#define peekc(p) peekc_n(p, 0)
13790#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
13808#define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
13853 if (
peek(p,
'\n')) {
13860 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13875 c = parser_cr(p, c);
13884 if (c == -1)
return;
13891#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13893#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13894#define tok(p) (p)->tokenbuf
13895#define toklen(p) (p)->tokidx
13901 while (ptr < p->
lex.pend) {
13902 int c = (
unsigned char)*
ptr++;
13903 int eol = (c ==
'\n' || c ==
'#');
13964#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
13967escaped_control_code(
int c)
13993#define WARN_SPACE_CHAR(c, prefix) \
13994 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
13998 int regexp_literal,
int wide)
14004 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
14005 yyerror0(
"invalid Unicode escape");
14006 return wide && numlen > 0;
14008 if (codepoint > 0x10ffff) {
14009 yyerror0(
"invalid Unicode codepoint (too large)");
14012 if ((codepoint & 0xfffff800) == 0xd800) {
14013 yyerror0(
"invalid Unicode codepoint");
14016 if (regexp_literal) {
14019 else if (codepoint >= 0x80) {
14021 if (*encp && utf8 != *encp) {
14024 parser_show_error_line(p, &loc);
14028 tokaddmbc(p, codepoint, *encp);
14031 tokadd(p, codepoint);
14039 int term,
int symbol_literal,
int regexp_literal)
14046 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
14048 const int open_brace =
'{', close_brace =
'}';
14050 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
14052 if (
peek(p, open_brace)) {
14053 const char *second =
NULL;
14054 int c,
last = nextc(p);
14057 while (c != close_brace) {
14058 if (c ==
term)
goto unterminated;
14059 if (second == multiple_codepoints)
14061 if (regexp_literal) tokadd(p,
last);
14062 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
14069 if (
term == -1 && !second)
14070 second = multiple_codepoints;
14073 if (c != close_brace) {
14076 yyerror0(
"unterminated Unicode escape");
14079 if (second && second != multiple_codepoints) {
14089 if (regexp_literal) tokadd(p, close_brace);
14093 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
14100#define ESCAPE_CONTROL 1
14101#define ESCAPE_META 2
14109 switch (c = nextc(p)) {
14134 case '0':
case '1':
case '2':
case '3':
14135 case '4':
case '5':
case '6':
case '7':
14142 c = tok_hex(p, &numlen);
14143 if (numlen == 0)
return 0;
14154 if ((c = nextc(p)) !=
'-') {
14157 if ((c = nextc(p)) ==
'\\') {
14158 if (
peek(p,
'u'))
goto eof;
14159 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
14161 else if (c == -1 || !
ISASCII(c))
goto eof;
14163 int c2 = escaped_control_code(c);
14172 else if (
ISCNTRL(c))
goto eof;
14173 return ((c & 0xff) | 0x80);
14177 if ((c = nextc(p)) !=
'-') {
14182 if ((c = nextc(p))==
'\\') {
14183 if (
peek(p,
'u'))
goto eof;
14188 else if (c == -1 || !
ISASCII(c))
goto eof;
14190 int c2 = escaped_control_code(c);
14209 else if (
ISCNTRL(c))
goto eof;
14215 yyerror0(
"Invalid escape character syntax");
14239 switch (c = nextc(p)) {
14243 case '0':
case '1':
case '2':
case '3':
14244 case '4':
case '5':
case '6':
case '7':
14247 if (numlen == 0)
goto eof;
14255 tok_hex(p, &numlen);
14256 if (numlen == 0)
return -1;
14263 if ((c = nextc(p)) !=
'-') {
14273 if ((c = nextc(p)) !=
'-') {
14285 if ((c = nextc(p)) ==
'\\') {
14288 else if (c == -1)
goto eof;
14294 yyerror0(
"Invalid escape character syntax");
14314 while (c = nextc(p),
ISALPHA(c)) {
14338 parser_show_error_line(p, &loc);
14346 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
14347 if (
len < 0)
return -1;
14355simple_re_meta(
int c)
14358 case '$':
case '*':
case '+':
case '.':
14359 case '?':
case '^':
case '|':
14360 case ')':
case ']':
case '}':
case '>':
14368parser_update_heredoc_indent(
struct parser_params *p,
int c)
14378 else if (c ==
'\t') {
14383 else if (c !=
'\n') {
14399 parser_show_error_line(p, &loc);
14405 const char *pos = p->
lex.
pcur;
14407 parser_mixed_error(p, enc1, enc2);
14413 int func,
int term,
int paren,
long *nest,
14417 bool erred =
false;
14419#define mixed_error(enc1, enc2) \
14420 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
14421#define mixed_escape(beg, enc1, enc2) \
14422 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
14424 while ((c = nextc(p)) != -1) {
14426 parser_update_heredoc_indent(p, c);
14429 if (paren && c == paren) {
14432 else if (c ==
term) {
14433 if (!nest || !*nest) {
14441 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
14446 else if (c ==
'\\') {
14478 if (c == -1)
return -1;
14484 if (c ==
term && !simple_re_meta(c)) {
14489 if ((c = tokadd_escape(p,
enc)) < 0)
14491 if (*
enc && *
enc != *encp) {
14499 c = read_escape(p, 0,
enc);
14504 else if (c !=
term && !(paren && c == paren)) {
14511 else if (!parser_isascii(p)) {
14516 else if (*
enc != *encp) {
14520 if (tokadd_mbchar(p, c) == -1)
return -1;
14531 else if (*
enc != *encp) {
14550#define NEW_STRTERM(func, term, paren) \
14551 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
14558 if (!ripper_is_node_yylval(content))
14559 content = ripper_new_yylval(p, 0, 0, content);
14570 if (
yylval.val != content)
14575#define flush_string_content(p, enc) ((void)(enc))
14582#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
14583#define SPECIAL_PUNCT(idx) ( \
14584 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
14585 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
14586 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
14587 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
14588 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
14590const unsigned int ruby_global_name_punct_bits[] = {
14596#undef SPECIAL_PUNCT
14599static enum yytokentype
14600parser_peek_variable_name(struct parser_params *p)
14603 const char *ptr = p->lex.pcur;
14605 if (ptr + 1 >= p->lex.pend) return 0;
14609 if ((c = *ptr) == '-') {
14610 if (++ptr >= p->lex.pend) return 0;
14613 else if (is_global_name_punct(c) || ISDIGIT(c)) {
14614 return tSTRING_DVAR;
14618 if ((c = *ptr) == '@') {
14619 if (++ptr >= p->lex.pend) return 0;
14625 p->command_start = TRUE;
14626 return tSTRING_DBEG;
14630 if (!ISASCII(c) || c == '_' || ISALPHA(c))
14631 return tSTRING_DVAR;
14635#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
14636#define IS_END() IS_lex_state(EXPR_END_ANY)
14637#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
14638#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
14639#define IS_LABEL_POSSIBLE() (\
14640 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
14642#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
14643#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
14645static inline enum yytokentype
14646parser_string_term(struct parser_params *p, int func)
14648 p->lex.strterm = 0;
14649 if (func & STR_FUNC_REGEXP) {
14650 set_yylval_num(regx_options(p));
14651 dispatch_scan_event(p, tREGEXP_END);
14652 SET_LEX_STATE(EXPR_END);
14653 return tREGEXP_END;
14655 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
14657 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
14660 SET_LEX_STATE(EXPR_END);
14661 return tSTRING_END;
14664static enum yytokentype
14665parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
14667 int func = (int)quote->u1.func;
14668 int term = (int)quote->u3.term;
14669 int paren = (int)quote->u2.paren;
14671 rb_encoding *enc = p->enc;
14672 rb_encoding *base_enc = 0;
14675 if (func & STR_FUNC_TERM) {
14676 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
14677 SET_LEX_STATE(EXPR_END);
14678 p->lex.strterm = 0;
14679 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
14682 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
14683 do {c = nextc(p);} while (ISSPACE(c));
14686 if (func & STR_FUNC_LIST) {
14687 quote->u1.func &= ~STR_FUNC_LIST;
14690 if (c == term && !quote->u0.nest) {
14691 if (func & STR_FUNC_QWORDS) {
14692 quote->u1.func |= STR_FUNC_TERM;
14693 pushback(p, c); /* dispatch the term at tSTRING_END */
14694 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14697 return parser_string_term(p, func);
14701 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14705 if ((func & STR_FUNC_EXPAND) && c == '#') {
14706 int t = parser_peek_variable_name(p);
14712 if (tokadd_string(p, func, term, paren, "e->u0.nest,
14713 &enc, &base_enc) == -1) {
14716# define unterminated_literal(mesg) yyerror0(mesg)
14718# define unterminated_literal(mesg) compile_error(p, mesg)
14720 literal_flush(p, p->lex.pcur);
14721 if (func & STR_FUNC_QWORDS) {
14722 /* no content to add, bailing out here */
14723 unterminated_literal("unterminated list meets end of file");
14724 p->lex.strterm = 0;
14725 return tSTRING_END;
14727 if (func & STR_FUNC_REGEXP) {
14728 unterminated_literal("unterminated regexp meets end of file");
14731 unterminated_literal("unterminated string meets end of file");
14733 quote->u1.func |= STR_FUNC_TERM;
14738 lit = STR_NEW3(tok(p), toklen(p), enc, func);
14739 set_yylval_str(lit);
14740 flush_string_content(p, enc);
14742 return tSTRING_CONTENT;
14745static enum yytokentype
14746heredoc_identifier(struct parser_params *p)
14749 * term_len is length of `<<"END"` except `END`,
14750 * in this case term_len is 4 (<, <, " and ").
14752 long len, offset = p->lex.pcur - p->lex.pbeg;
14753 int c = nextc(p), term, func = 0, quote = 0;
14754 enum yytokentype token = tSTRING_BEG;
14759 func = STR_FUNC_INDENT;
14762 else if (c == '~') {
14764 func = STR_FUNC_INDENT;
14770 func |= str_squote; goto quoted;
14782 while ((c = nextc(p)) !=
term) {
14783 if (c == -1 || c ==
'\r' || c ==
'\n') {
14784 yyerror(
NULL, p,
"unterminated here document identifier");
14791 if (!parser_is_identchar(p)) {
14794 pushback(p, indent > 0 ?
'~' :
'-');
14800 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
14801 if (
n < 0)
return 0;
14803 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
14810 yyerror(
NULL, p,
"too long here document identifier");
14820 here->
quote = quote;
14848dedent_string(
VALUE string,
int width)
14855 for (
i = 0;
i <
len && col < width;
i++) {
14856 if (
str[
i] ==
' ') {
14859 else if (
str[
i] ==
'\t') {
14861 if (
n > width)
break;
14882 NODE *node, *str_node, *prev_node;
14884 VALUE prev_lit = 0;
14886 if (indent <= 0)
return root;
14888 if (!root)
return root;
14890 prev_node = node = str_node = root;
14894 VALUE lit = str_node->nd_lit;
14896 dedent_string(lit, indent);
14901 else if (!literal_concat0(p, prev_lit, lit)) {
14905 NODE *end = node->nd_end;
14906 node = prev_node->nd_next = node->nd_next;
14912 node->nd_end = end;
14917 while ((node = (prev_node = node)->
nd_next) != 0) {
14920 if ((str_node = node->nd_head) != 0) {
14936 if (indent <= 0)
return array;
14938 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
14958 col = dedent_string(
input, wid);
14964whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
14973 if (
n < 0)
return FALSE;
14974 if (
n > 0 &&
ptr[
len] !=
'\n') {
14989 case '\0':
case '\004':
case '\032':
return 1;
14994#define NUM_SUFFIX_R (1<<0)
14995#define NUM_SUFFIX_I (1<<1)
14996#define NUM_SUFFIX_ALL 3
15002 const char *lastp = p->
lex.
pcur;
15004 while ((c = nextc(p)) != -1) {
15007 mask &= ~NUM_SUFFIX_I;
15009 mask &= ~NUM_SUFFIX_R;
15014 mask &= ~NUM_SUFFIX_R;
15049 return set_number_literal(p,
v,
type, suffix);
15066#define dispatch_heredoc_end(p) ((void)0)
15072 int c, func, indent = 0;
15073 const char *eos, *
ptr, *ptr_end;
15084 if ((c = nextc(p)) == -1) {
15108 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
15126 else if (whole_match_p(p, eos,
len, indent)) {
15140 if (ptr_end >
ptr) {
15141 switch (ptr_end[-1]) {
15143 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
15154 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
15168 if (nextc(p) == -1) {
15174 }
while (!whole_match_p(p, eos,
len, indent));
15180 int t = parser_peek_variable_name(p);
15194 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
15210 tokadd(p, nextc(p));
15216 if ((c = nextc(p)) == -1)
goto error;
15217 }
while (!whole_match_p(p, eos,
len, indent));
15241 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
15251 switch (id_type(lhs)) {
15256 yyerror0(
"formal argument cannot be a constant");
15259 yyerror0(
"formal argument cannot be an instance variable");
15262 yyerror0(
"formal argument cannot be a global variable");
15265 yyerror0(
"formal argument cannot be a class variable");
15268 yyerror0(
"formal argument must be local variable");
15272 lhs = dispatch1(param_error, lhs);
15277 shadowing_lvar(p, lhs);
15284 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
15293 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
15297 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
15333 for (
i = 0;
i <
n; ++
i) {
15345 while (
ptr < ptr_end) {
15356magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
15358 if (!comment_at_top(p)) {
15361 parser_set_encode(p, val);
15368 case 't':
case 'T':
15373 case 'f':
case 'F':
15384parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
15386 int b = parser_get_bool(p,
name, val);
15391parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
15400 b = parser_get_bool(p,
name, val);
15409# if WARN_PAST_SCOPE
15411parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
15413 int b = parser_get_bool(p,
name, val);
15414 if (b >= 0) p->past_scope_enabled = b;
15425 {
"coding", magic_comment_encoding, parser_encode_length},
15426 {
"encoding", magic_comment_encoding, parser_encode_length},
15427 {
"frozen_string_literal", parser_set_compile_option_flag},
15428 {
"warn_indent", parser_set_token_info},
15429# if WARN_PAST_SCOPE
15430 {
"warn_past_scope", parser_set_past_scope},
15435magic_comment_marker(
const char *
str,
long len)
15442 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
15443 return str +
i + 1;
15448 if (
i + 1 >=
len)
return 0;
15449 if (
str[
i+1] !=
'-') {
15452 else if (
str[
i-1] !=
'-') {
15456 return str +
i + 2;
15472 const char *beg, *end, *vbeg, *vend;
15473#define str_copy(_s, _p, _n) ((_s) \
15474 ? (void)(rb_str_resize((_s), (_n)), \
15475 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
15476 : (void)((_s) = STR_NEW((_p), (_n))))
15479 if (!!(beg = magic_comment_marker(
str,
len))) {
15480 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
15484 len = end - beg - 3;
15496 case '\'':
case '"':
case ':':
case ';':
15503 case '\'':
case '"':
case ':':
case ';':
15514 if (!indicator)
return FALSE;
15522 if (*
str ==
'\\') {
15548 for (
i = 0;
i <
n; ++
i) {
15549 if (s[
i] ==
'-') s[
i] =
'_';
15561 }
while (++mc < magic_comments +
numberof(magic_comments));
15572set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
15575 const char *beg =
str;
15579 if (send -
str <= 6)
return;
15581 case 'C':
case 'c':
str += 6;
continue;
15582 case 'O':
case 'o':
str += 5;
continue;
15583 case 'D':
case 'd':
str += 4;
continue;
15584 case 'I':
case 'i':
str += 3;
continue;
15585 case 'N':
case 'n':
str += 2;
continue;
15586 case 'G':
case 'g':
str += 1;
continue;
15587 case '=':
case ':':
15600 if (++
str >= send)
return;
15603 if (*
str !=
'=' && *
str !=
':')
return;
15609 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
15625 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
15626 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
15641#define ambiguous_operator(tok, op, syn) ( \
15642 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
15643 rb_warning0("even though it seems like "syn""))
15645#define ambiguous_operator(tok, op, syn) \
15646 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
15648#define warn_balanced(tok, op, syn) ((void) \
15649 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
15650 space_seen && !ISSPACE(c) && \
15651 (ambiguous_operator(tok, op, syn), 0)), \
15652 (enum yytokentype)(tok))
15658 char *point = &
str[seen_point];
15659 size_t fraclen =
len-seen_point-1;
15660 memmove(point, point+1, fraclen+1);
15668 yyerror0(
"numeric literal without digits");
15669 if (
peek(p,
'_')) nextc(p);
15671 return set_integer_literal(p,
INT2FIX(0), 0);
15677 int is_float, seen_point, seen_e, nondigit;
15680 is_float = seen_point = seen_e = nondigit = 0;
15683 if (c ==
'-' || c ==
'+') {
15690 if (c ==
'x' || c ==
'X') {
15696 if (nondigit)
break;
15703 }
while ((c = nextc(p)) != -1);
15707 if (
toklen(p) == start) {
15708 return no_digits(p);
15710 else if (nondigit)
goto trailing_uc;
15714 if (c ==
'b' || c ==
'B') {
15717 if (c ==
'0' || c ==
'1') {
15720 if (nondigit)
break;
15724 if (c !=
'0' && c !=
'1')
break;
15727 }
while ((c = nextc(p)) != -1);
15731 if (
toklen(p) == start) {
15732 return no_digits(p);
15734 else if (nondigit)
goto trailing_uc;
15738 if (c ==
'd' || c ==
'D') {
15744 if (nondigit)
break;
15751 }
while ((c = nextc(p)) != -1);
15755 if (
toklen(p) == start) {
15756 return no_digits(p);
15758 else if (nondigit)
goto trailing_uc;
15766 if (c ==
'o' || c ==
'O') {
15769 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
15770 return no_digits(p);
15773 if (c >=
'0' && c <=
'7') {
15778 if (nondigit)
break;
15782 if (c < '0' || c >
'9')
break;
15783 if (c >
'7')
goto invalid_octal;
15786 }
while ((c = nextc(p)) != -1);
15787 if (
toklen(p) > start) {
15790 if (nondigit)
goto trailing_uc;
15799 if (c >
'7' && c <=
'9') {
15803 else if (c ==
'.' || c ==
'e' || c ==
'E') {
15809 return set_integer_literal(p,
INT2FIX(0), suffix);
15815 case '0':
case '1':
case '2':
case '3':
case '4':
15816 case '5':
case '6':
case '7':
case '8':
case '9':
15822 if (nondigit)
goto trailing_uc;
15823 if (seen_point || seen_e) {
15828 if (c0 == -1 || !
ISDIGIT(c0)) {
15853 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
15858 tokadd(p, nondigit);
15862 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15866 if (nondigit)
goto decode_num;
15883 parser_show_error_line(p, &loc);
15893 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15903 return set_number_literal(p,
v,
type, suffix);
15927 int c2 = escaped_control_code(c);
15939 if (!parser_isascii(p)) {
15940 if (tokadd_mbchar(p, c) == -1)
return 0;
15945 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15947 int n = parser_precise_mbclen(p,
ptr);
15948 if (
n < 0)
return -1;
15951 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15952 " a conditional operator, put a space after `?'",
15957 else if (c ==
'\\') {
15958 if (
peek(p,
'u')) {
15961 tokadd_utf8(p, &enc, -1, 0, 0);
15965 if (tokadd_mbchar(p, c) == -1)
return 0;
15968 c = read_escape(p, 0, &enc);
15986 const char *ptok = p->
lex.
pcur;
15994 if (c == -1 || !
ISALNUM(c)) {
16001 yyerror0(
"unknown type of %string");
16005 if (c == -1 ||
term == -1) {
16006 compile_error(p,
"unterminated quoted string meets end of file");
16056 yyerror0(
"unknown type of %string");
16060 if ((c = nextc(p)) ==
'=') {
16077 if (tokadd_mbchar(p, c) == -1)
return -1;
16079 }
while (parser_is_identchar(p));
16100 const unsigned long nth_ref_max =
16101 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
16105 if (overflow ||
n > nth_ref_max) {
16128 if (parser_is_identchar(p)) {
16160 if (parser_is_identchar(p)) {
16161 if (tokadd_mbchar(p, c) == -1)
return 0;
16184 case '1':
case '2':
case '3':
16185 case '4':
case '5':
case '6':
16186 case '7':
case '8':
case '9':
16191 }
while (c != -1 &&
ISDIGIT(c));
16199 if (!parser_is_identchar(p)) {
16202 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
16206 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
16208 parser_show_error_line(p, &loc);
16217 if (tokadd_ident(p, c))
return 0;
16219 tokenize_ident(p, last_state);
16227 if (
n < 0)
return false;
16240 while (
n > args->
pos) {
16252 register int c = nextc(p);
16264 if (c == -1 || !parser_is_identchar(p)) {
16267 if (result ==
tIVAR) {
16268 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
16271 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
16273 parser_show_error_line(p, &loc);
16281 if (result ==
tIVAR) {
16282 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
16285 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
16287 parser_show_error_line(p, &loc);
16293 if (tokadd_ident(p, c))
return 0;
16294 tokenize_ident(p, last_state);
16308 if (tokadd_mbchar(p, c) == -1)
return 0;
16310 }
while (parser_is_identchar(p));
16311 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
16363 if (kw->
id[0] != kw->
id[1])
16378 else if (p->
lex.
state == EXPR_FNAME) {
16385 ident = tokenize_ident(p, last_state);
16389 lvar_defined(p, ident)) {
16399 int space_seen = 0;
16403 int fallthru =
FALSE;
16423 switch (c = nextc(p)) {
16431 case ' ':
case '\t':
case '\f':
case '\r':
16435 while ((c = nextc(p))) {
16437 case ' ':
case '\t':
case '\f':
case '\r':
16454 if (comment_at_top(p)) {
16464 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
16472 goto normal_newline;
16477 switch (c = nextc(p)) {
16478 case ' ':
case '\t':
case '\f':
case '\r':
16489 if (
peek(p,
'.') == (c ==
'&')) {
16511 goto normal_newline;
16520 if ((c = nextc(p)) ==
'*') {
16521 if ((c = nextc(p)) ==
'=') {
16528 rb_warning0(
"`**' interpreted as argument prefix");
16546 rb_warning0(
"`*' interpreted as argument prefix");
16582 if (word_match_p(p,
"begin", 5)) {
16583 int first_p =
TRUE;
16598 if (c ==
'=' && word_match_p(p,
"end", 3)) {
16610 if ((c = nextc(p)) ==
'=') {
16611 if ((c = nextc(p)) ==
'=') {
16620 else if (c ==
'>') {
16632 int token = heredoc_identifier(p);
16644 if ((c = nextc(p)) ==
'>') {
16651 if ((c = nextc(p)) ==
'=') {
16664 if ((c = nextc(p)) ==
'=') {
16668 if ((c = nextc(p)) ==
'=') {
16707 return parse_qmark(p, space_seen);
16710 if ((c = nextc(p)) ==
'&') {
16712 if ((c = nextc(p)) ==
'=') {
16720 else if (c ==
'=') {
16725 else if (c ==
'.') {
16734 !(c ==
'\'' || c ==
'"' ||
16736 rb_warning0(
"`&' interpreted as argument prefix");
16750 if ((c = nextc(p)) ==
'|') {
16752 if ((c = nextc(p)) ==
'=') {
16793 return parse_numeric(p,
'+');
16835 if ((c = nextc(p)) ==
'.') {
16836 if ((c = nextc(p)) ==
'.') {
16838 rb_warn0(
"... at EOL, should be parenthesized?");
16848 parse_numeric(p,
'.');
16850 yyerror0(
"unexpected fraction part after numeric literal");
16853 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16864 case '0':
case '1':
case '2':
case '3':
case '4':
16865 case '5':
case '6':
case '7':
case '8':
case '9':
16866 return parse_numeric(p, c);
16927 if ((c = nextc(p)) ==
'=') {
16934 arg_ambiguous(p,
'/');
16942 if ((c = nextc(p)) ==
'=') {
16962 if ((c = nextc(p)) !=
'@') {
16976 else if (!space_seen) {
16983 rb_warning0(
"parentheses after method name is interpreted as "
16984 "an argument list, not a decomposed argument");
16995 if ((c = nextc(p)) ==
']') {
16997 if ((c = nextc(p)) ==
'=') {
17049 if (c ==
' ')
return tSP;
17055 return parse_percent(p, space_seen, last_state);
17058 return parse_gvar(p, last_state);
17061 return parse_atmark(p, last_state);
17064 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
17079 if (!parser_is_identchar(p)) {
17080 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
17089 return parse_ident(p, c, cmd_state);
17099 t = parser_yylex(p);
17114#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
17123 nd_set_loc(
n, loc);
17138nodetype(
NODE *node)
17144nodeline(
NODE *node)
17150newline_node(
NODE *node)
17153 node = remove_begin(node);
17182 NODE *end, *
h = head, *nd;
17184 if (tail == 0)
return head;
17186 if (
h == 0)
return tail;
17194 parser_warning(p,
h,
"unused literal ignored");
17214 parser_warning(p, tail,
"statement not reached");
17224 tail->nd_end = tail;
17226 end->nd_next = tail;
17227 h->nd_end = tail->nd_end;
17239 if (
list->nd_next) {
17246 list->nd_alen += 1;
17248 list->nd_next->nd_end =
last->nd_next;
17257list_concat(
NODE *head,
NODE *tail)
17261 if (head->nd_next) {
17262 last = head->nd_next->nd_end;
17268 head->nd_alen += tail->nd_alen;
17269 last->nd_next = tail;
17270 if (tail->nd_next) {
17271 head->nd_next->nd_end = tail->nd_next->nd_end;
17274 head->nd_next->nd_end = tail;
17285 if (
NIL_P(tail))
return 1;
17287 compile_error(p,
"string literal encodings differ (%s / %s)",
17306 if (!head)
return tail;
17307 if (!tail)
return head;
17313 head = list_append(p, node, head);
17321 return list_append(p, head, tail);
17328 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
17331 lit = headlast->nd_lit;
17334 lit = head->nd_lit;
17337 if (!literal_concat0(p, lit, tail->nd_lit)) {
17339 rb_discard_node(p, head);
17340 rb_discard_node(p, tail);
17343 rb_discard_node(p, tail);
17346 list_append(p, head, tail);
17352 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
17354 tail->nd_lit = head->nd_lit;
17355 rb_discard_node(p, head);
17358 else if (
NIL_P(tail->nd_lit)) {
17360 head->nd_alen += tail->nd_alen - 1;
17361 head->nd_next->nd_end->nd_next = tail->nd_next;
17362 head->nd_next->nd_end = tail->nd_next->nd_end;
17363 rb_discard_node(p, tail);
17365 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
17367 lit = headlast->nd_lit;
17368 if (!literal_concat0(p, lit, tail->nd_lit))
17370 tail->nd_lit =
Qnil;
17383 list_append(p, head, tail);
17395 node = list_append(p, dstr, node);
17448 if (block) block_dup_check(p, args, block);
17449 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
17450 if (block) ret = method_add_block(p, ret, block, loc);
17455#define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
17460 int line = op_loc->beg_pos.lineno;
17475 const VALUE lit =
n->nd_lit;
17477 match->nd_args = reg_named_capture_assign(p, lit, loc);
17502# if WARN_PAST_SCOPE
17508 if (vtable_included(past,
id))
return 1;
17517#define WARN_LOCATION(type) do { \
17518 if (p->warn_location) { \
17520 VALUE file = rb_source_location(&line); \
17521 rb_warn3(type" in eval may not return location in binding;" \
17522 " use Binding#source_location instead\n" \
17523 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
17524 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
17537 "%s:%d: %s block here",
17539 outer ?
"outer" :
"inner");
17540 parser_show_error_line(p, &
used->nd_loc);
17581 switch (id_type(
id)) {
17583 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
17593 if (local_id_ref(p,
id, &vidp)) {
17604 if (numparam_nested_p(p))
return 0;
17610# if WARN_PAST_SCOPE
17631opt_arg_append(
NODE *opt_list,
NODE *opt)
17633 NODE *opts = opt_list;
17636 while (opts->nd_next) {
17637 opts = opts->nd_next;
17640 opts->nd_next = opt;
17649 NODE *kws = kwlist;
17651 while (kws->nd_next) {
17652 kws = kws->nd_next;
17676 return list_append(p, symbols, symbol);
17695 nd_set_loc(node, loc);
17706 nd_set_loc(node, loc);
17708 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
17712 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
17714 if (!literal_concat0(p, lit, tail)) {
17719 rb_discard_node(p,
list->nd_head);
17720 rb_discard_node(p,
list);
17731 if (!node->nd_next) {
17763 nd_set_loc(node, loc);
17767 nd_set_loc(node, loc);
17784 if (lit ==
Qundef)
return;
17794 if (!
NIL_P(line)) {
17795 rb_warning1(
"duplicated `when' clause with line %d is ignored",
17812 if (dyna_in_block(p)) {
17815 if (local_id(p,
id))
return 1;
17829 if (ripper_is_node_yylval(re)) {
17831 re =
RNODE(re)->nd_rval;
17833 if (ripper_is_node_yylval(opt)) {
17834 options = (
int)
RNODE(opt)->nd_tag;
17835 opt =
RNODE(opt)->nd_rval;
17840 return dispatch2(regexp_literal, re, opt);
17846static const char rb_parser_lex_state_names[][8] = {
17847 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
17848 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
17849 "LABEL",
"LABELED",
"FITEM",
17856 unsigned int mask = 1;
17857 static const char none[] =
"NONE";
17860 if ((
unsigned)state &
mask) {
17894 append_lex_state_name(from, mesg);
17896 append_lex_state_name(to, mesg);
17923 const char *
name,
int line)
17926 append_bitstack_value(stack, mesg);
17944 append_lex_state_name(p->
lex.
state, mesg);
17965 yylloc->beg_pos.lineno = sourceline;
17966 yylloc->beg_pos.column = beg_pos;
17967 yylloc->end_pos.lineno = sourceline;
17968 yylloc->end_pos.column = end_pos;
17996 if (!
id)
return -1;
17999 *
err =
"Can't change the value of self";
18002 *
err =
"Can't assign to nil";
18005 *
err =
"Can't assign to true";
18008 *
err =
"Can't assign to false";
18011 *
err =
"Can't assign to __FILE__";
18014 *
err =
"Can't assign to __LINE__";
18017 *
err =
"Can't assign to __ENCODING__";
18020 switch (id_type(
id)) {
18022 if (dyna_in_block(p)) {
18035 if (!local_id(p,
id)) local_var(p,
id);
18043 *
err =
"dynamic constant assignment";
18056 const char *
err = 0;
18074 const char *
err = 0;
18076 if (
err) lhs = assign_error(p, lhs);
18082is_private_local_id(
ID name)
18095 if (is_private_local_id(
name))
return 1;
18096 if (dyna_in_block(p)) {
18097 if (dvar_curr(p,
name)) {
18098 yyerror0(
"duplicated argument name");
18100 else if (dvar_defined(p,
name) || local_id(p,
name)) {
18109 if (local_id(p,
name)) {
18110 yyerror0(
"duplicated argument name");
18119 shadowing_lvar_0(p,
name);
18132 if (!shadowing_lvar_0(p,
name))
return;
18166 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
18177 return list_append(p, node1, node2);
18179 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
18183 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
18189 node1->nd_body = list_append(p, node1->nd_body, node2);
18199 if (!node2)
return node1;
18202 if (node1->nd_head)
18203 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
18205 node1->nd_head =
NEW_LIST(node2, loc);
18209 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
18215 node1->nd_body = list_concat(node1->nd_body, node2);
18225 if ((n1 = splat_array(
args)) != 0) {
18226 return list_append(p, n1, last_arg);
18228 return arg_append(p,
args, last_arg, loc);
18236 return list_concat(n1, rest_arg);
18238 return arg_concat(p,
args, rest_arg, loc);
18242splat_array(
NODE* node)
18256 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
18262 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
18268 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
18269 mark_lvar_used(p, rhs->nd_head);
18279 if (!lhs)
return 0;
18290 lhs->nd_value = rhs;
18291 nd_set_loc(lhs, loc);
18295 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
18296 nd_set_loc(lhs, loc);
18310 NODE *void_node = 0, *vn;
18322 return void_node ? void_node : node;
18329 if (node->nd_body->nd_body) {
18333 return void_node ? void_node : node;
18336 while (node->nd_next) {
18337 node = node->nd_next;
18339 node = node->nd_head;
18343 node = node->nd_body;
18348 if (!node->nd_body) {
18351 else if (!node->nd_else) {
18354 vn = value_expr_check(p, node->nd_body);
18355 if (!vn)
return NULL;
18356 if (!void_node) void_node = vn;
18357 node = node->nd_else;
18362 node = node->nd_1st;
18369 mark_lvar_used(p, node);
18383 NODE *void_node = value_expr_check(p, node);
18394 const char *useless = 0;
18401 switch (node->nd_mid) {
18432 useless =
"a variable";
18435 useless =
"a constant";
18441 useless =
"a literal";
18466 useless =
"defined?";
18478 NODE *
const n = node;
18480 if (!node)
return n;
18483 while (node->nd_next) {
18484 void_expr(p, node->nd_head);
18485 node = node->nd_next;
18491remove_begin(
NODE *node)
18493 NODE **
n = &node, *n1 = node;
18495 *
n = n1 = n1->nd_body;
18501remove_begin_all(
NODE *node)
18503 NODE **
n = &node, *n1 = node;
18505 *
n = n1 = n1->nd_body;
18513 NODE *node = *body;
18519#define subnodes(n1, n2) \
18520 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
18521 (!node->n2) ? (body = &node->n1, 1) : \
18522 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
18532 *body = node = node->nd_stts;
18536 *body = node = node->nd_body;
18540 body = &node->nd_end->nd_head;
18547 body = &node->nd_body;
18556 if (node->nd_else) {
18557 body = &node->nd_resq;
18573is_static_content(
NODE *node)
18575 if (!node)
return 1;
18578 if (!(node = node->nd_head))
break;
18581 if (!is_static_content(node->nd_head))
return 0;
18582 }
while ((node = node->nd_next) != 0);
18612 if (!node->nd_value)
return 1;
18613 if (is_static_content(node->nd_value)) {
18615 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
18626#define SWITCH_BY_COND_TYPE(t, w, arg) \
18628 case COND_IN_OP: break; \
18629 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
18630 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
18640 if (node == 0)
return 0;
18645 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
18654 if (node == 0)
return 0;
18656 assign_in_cond(p, node);
18709 if (node == 0)
return 0;
18716 if (node == 0)
return 0;
18723 if (!
cc)
return right;
18725 return newline_node(
NEW_IF(
cc, left, right, loc));
18731 if (!
cc)
return right;
18733 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
18744 NODE *node = left, *second;
18749 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
18770 no_blockarg(p, node);
18772 if (node->nd_next == 0) {
18773 node = node->nd_head;
18786 if (node) no_blockarg(p, node);
18830arg_blk_pass(
NODE *node1,
NODE *node2)
18833 if (!node1)
return node2;
18834 node2->nd_head = node1;
18845 if (
args->pre_args_num)
return false;
18846 if (
args->post_args_num)
return false;
18847 if (
args->rest_arg)
return false;
18848 if (
args->opt_args)
return false;
18849 if (
args->block_arg)
return false;
18850 if (
args->kw_args)
return false;
18851 if (
args->kw_rest_arg)
return false;
18862 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18865 args->
post_init = post_args ? post_args->nd_next : 0;
18875 nd_set_loc(tail, loc);
18887 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18888 args->
imemo = tmpbuf;
18903 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18905 NODE *kwn = kw_args;
18907 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18908 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18912 --required_kw_vars;
18913 kwn = kwn->nd_next;
18916 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18917 ID vid = kwn->nd_body->nd_vid;
18919 *required_kw_vars++ = vid;
18926 arg_var(p, kw_bits);
18927 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18928 if (block) arg_var(p, block);
18933 else if (kw_rest_arg ==
idNil) {
18936 else if (kw_rest_arg) {
18950 args = new_args_tail(p, 0, 0, 0, 0);
18951 nd_set_loc(args, &loc);
18953 args->nd_ainfo->pre_args_num = max_numparam;
18963 aryptn->nd_pconst = constant;
18984 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
18986 apinfo->
imemo = tmpbuf;
19012 hshptn->nd_pconst = constant;
19020 NODE *node, *kw_rest_arg_node;
19022 if (kw_rest_arg ==
idNil) {
19025 else if (kw_rest_arg) {
19026 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
19029 kw_rest_arg_node =
NULL;
19044 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
19060 nd_set_loc(node, loc);
19063 lit = node->nd_lit;
19066 nd_set_loc(node, loc);
19081 node->nd_next->nd_end = node->nd_next;
19082 node->nd_next->nd_next = 0;
19084 list_concat(*result, node);
19096 while (hash && hash->nd_head && hash->nd_next) {
19097 NODE *head = hash->nd_head;
19098 NODE *value = hash->nd_next;
19099 NODE *next = value->nd_next;
19103 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
19105 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
19106 head->nd_lit,
nd_line(head));
19107 head = ((
NODE *)data)->nd_next;
19108 head->nd_head = block_append(p, head->nd_head, value->nd_head);
19118 if (!result) result = hash;
19119 else list_concat(result, hash);
19128 if (hash) hash = remove_duplicate_keys(p, hash);
19136 if (is_private_local_id(
id)) {
19140 yyerror1(loc,
"duplicated variable name");
19154 yyerror1(loc,
"duplicated key name");
19175 ID vid = lhs->nd_vid;
19178 lhs->nd_value = rhs;
19179 nd_set_loc(lhs, loc);
19182 switch (id_type(vid)) {
19186 asgn->nd_aid = vid;
19190 else if (op ==
tANDOP) {
19191 lhs->nd_value = rhs;
19192 nd_set_loc(lhs, loc);
19198 nd_set_loc(asgn, loc);
19218 args = arg_concat(p, args, rhs, loc);
19255 yyerror1(loc,
"dynamic constant assignment");
19264 path = dispatch1(assign_error,
path);
19273 a = dispatch1(assign_error, a);
19281 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
19289 NODE *result = head;
19291 NODE *tmp = rescue_else ? rescue_else : rescue;
19294 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
19297 else if (rescue_else) {
19298 result = block_append(p, result, rescue_else);
19303 fixpos(result, head);
19313 if (!local->
used)
return;
19321 for (
int i = 0;
i <
cnt; ++
i) {
19323 if (is_private_local_id(
v[
i]))
continue;
19342 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
19349# if WARN_PAST_SCOPE
19362 warn_unused_var(p, p->
lvtbl);
19365# if WARN_PAST_SCOPE
19366 while (p->
lvtbl->past) {
19384 int cnt_args = vtable_size(p->
lvtbl->
args);
19385 int cnt_vars = vtable_size(p->
lvtbl->
vars);
19386 int cnt = cnt_args + cnt_vars;
19390 if (
cnt <= 0)
return 0;
19394 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
19396 if (!vtable_included(p->
lvtbl->
args,
id)) {
19426 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
19433 numparam_name(p,
id);
19440 numparam_name(p,
id);
19459 if (used) used = used->
prev;
19465 else if (vtable_included(args,
id)) {
19469 int i = vtable_included(
vars,
id);
19470 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
19478 return local_id_ref(p,
id,
NULL);
19523static const struct vtable *
19537 struct vtable *tmp = *vtblp;
19538 *vtblp = tmp->
prev;
19539# if WARN_PAST_SCOPE
19540 if (p->past_scope_enabled) {
19542 p->
lvtbl->past = tmp;
19555 warn_unused_var(p, p->
lvtbl);
19594 if (vtable_included(args,
id)) {
19597 if ((
i = vtable_included(
vars,
id)) != 0) {
19598 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
19603 if (!vidrefp) used = 0;
19604 if (used) used = used->
prev;
19617 return dvar_defined_ref(p,
id,
NULL);
19623 return (vtable_included(p->
lvtbl->
args,
id) ||
19631 "regexp encoding option '%c' differs from source encoding '%s'",
19677 if (c) reg_fragment_enc_error(p,
str, c);
19684 reg_fragment_setenc(p,
str, options);
19703 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
19709 const char *s = (
const char *)
name;
19722 succ =
arg->succ_block;
19724 succ = block_append(p, succ, node);
19725 arg->succ_block = succ;
19736 arg.succ_block = 0;
19740 if (!
arg.succ_block)
return 0;
19741 return arg.succ_block->nd_next;
19747 reg_fragment_setenc(p,
str, options);
19764 re = parser_reg_compile(p,
str, options);
19781 if (c) reg_fragment_enc_error(p,
str, c);
19814 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
19815 const YYLTYPE *
const LOC = &default_location;
19821 node = block_append(p, node, print);
19831 node = block_append(p, split, node);
19836 node = block_append(p, chomp, node);
19856 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19872 p->delayed.token =
Qnil;
19874 p->parsing_thread =
Qnil;
19884#define parser_mark ripper_parser_mark
19885#define parser_free ripper_parser_free
19889parser_mark(
void *
ptr)
19919parser_free(
void *
ptr)
19927 for (local = p->
lvtbl; local; local =
prev) {
19943parser_memsize(
const void *
ptr)
19947 size_t size =
sizeof(*p);
19950 for (local = p->
lvtbl; local; local = local->
prev) {
19951 size +=
sizeof(*local);
19972#undef rb_reserved_word
19977 return reserved_word(
str,
len);
19985 &parser_data_type, p);
19986 parser_initialize(p);
20003#define rb_parser_end_seen_p ripper_parser_end_seen_p
20004#define rb_parser_encoding ripper_parser_encoding
20005#define rb_parser_get_yydebug ripper_parser_get_yydebug
20006#define rb_parser_set_yydebug ripper_parser_set_yydebug
20007#define rb_parser_get_debug_output ripper_parser_get_debug_output
20008#define rb_parser_set_debug_output ripper_parser_set_debug_output
20009static VALUE ripper_parser_end_seen_p(
VALUE vparser);
20010static VALUE ripper_parser_encoding(
VALUE vparser);
20011static VALUE ripper_parser_get_yydebug(
VALUE self);
20013static VALUE ripper_parser_get_debug_output(
VALUE self);
20014static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
20023ripper_error_p(
VALUE vparser)
20070rb_parser_get_yydebug(
VALUE self)
20127#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
20130#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
20131#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
20132 (new)->cnt = (cnt), (ptr))
20162 if (
n->ptr ==
ptr) {
20164 if (
n->cnt)
n->cnt =
cnt;
20167 }
while ((
n =
n->next) !=
NULL);
20179 while ((
n = *prev) !=
NULL) {
20180 if (
n->ptr ==
ptr) {
20225count_char(
const char *
str,
int c)
20228 while (
str[
n] == c) ++
n;
20241 if (*yystr ==
'"') {
20242 size_t yyn = 0, bquote = 0;
20243 const char *yyp = yystr;
20249 bquote = count_char(yyp+1,
'`') + 1;
20250 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
20258 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
20259 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
20265 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
20266 if (yyres)
memcpy(yyres + yyn, yyp, 3);
20271 goto do_not_strip_quotes;
20274 goto do_not_strip_quotes;
20277 if (*++yyp !=
'\\')
20278 goto do_not_strip_quotes;
20294 do_not_strip_quotes: ;
20297 if (!yyres)
return strlen(yystr);
20299 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
20309 if (x ==
Qfalse)
return x;
20310 if (x ==
Qtrue)
return x;
20311 if (x ==
Qnil)
return x;
20329 x = ((
NODE *)x)->nd_rval;
20343#define validate(x) ((x) = get_value(x))
20372 return rb_funcall(p->value, mid, 3, a, b, c);
20382 return rb_funcall(p->value, mid, 4, a, b, c, d);
20393 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
20406 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
20415 if (
nd_type(nd) != NODE_RIPPER)
return 0;
20420ripper_get_value(
VALUE v)
20427 return nd->nd_rval;
20455 "gets returned %"PRIsVALUE" (expected String or nil)",
20472 &parser_data_type, p);
20477#define ripper_initialized_p(r) ((r)->lex.input != 0)
20498 p->
lex.
gets = ripper_lex_io_get;
20501 p->
lex.
gets = ripper_lex_get_generic;
20509 if (
NIL_P(fname)) {
20517 parser_initialize(p);
20527ripper_parse0(
VALUE parser_v)
20534 ripper_yyparse((
void*)p);
20541ripper_ensure(
VALUE parser_v)
20546 p->parsing_thread =
Qnil;
20557ripper_parse(
VALUE self)
20562 if (!ripper_initialized_p(p)) {
20565 if (!
NIL_P(p->parsing_thread)) {
20572 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
20585ripper_column(
VALUE self)
20591 if (!ripper_initialized_p(p)) {
20594 if (
NIL_P(p->parsing_thread))
return Qnil;
20606ripper_filename(
VALUE self)
20611 if (!ripper_initialized_p(p)) {
20625ripper_lineno(
VALUE self)
20630 if (!ripper_initialized_p(p)) {
20633 if (
NIL_P(p->parsing_thread))
return Qnil;
20644ripper_state(
VALUE self)
20649 if (!ripper_initialized_p(p)) {
20652 if (
NIL_P(p->parsing_thread))
return Qnil;
20663ripper_token(
VALUE self)
20669 if (!ripper_initialized_p(p)) {
20672 if (
NIL_P(p->parsing_thread))
return Qnil;
20713 ripper_init_eventids1();
20714 ripper_init_eventids2();
20759<% @exprs.each
do |expr, desc| -%>
20763 ripper_init_eventids1_table(Ripper);
20764 ripper_init_eventids2_table(Ripper);
struct rb_encoding_entry * list
int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc)
VALUE rb_enc_associate(VALUE obj, rb_encoding *enc)
rb_encoding * rb_utf8_encoding(void)
rb_encoding * rb_ascii8bit_encoding(void)
rb_encoding * rb_enc_from_index(int index)
rb_encoding * rb_enc_get(VALUE obj)
int rb_ascii8bit_encindex(void)
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
rb_encoding * rb_usascii_encoding(void)
VALUE rb_enc_from_encoding(rb_encoding *encoding)
VALUE rb_enc_associate_index(VALUE obj, int idx)
int rb_enc_find_index(const char *name)
int rb_enc_codelen(int c, rb_encoding *enc)
#define ENC_CODERANGE_7BIT
#define rb_enc_mbcput(c, buf, enc)
#define rb_enc_prev_char(s, p, e, enc)
int rb_enc_str_coderange(VALUE)
#define ENC_CODERANGE_UNKNOWN
VALUE rb_enc_str_new(const char *, long, rb_encoding *)
#define ENCODING_GET(obj)
VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc)
#define rb_enc_asciicompat(enc)
#define rb_enc_isalnum(c, enc)
int rb_char_to_option_kcode(int c, int *option, int *kcode)
long rb_str_coderange_scan_restartable(const char *, const char *, rb_encoding *, int *)
#define MBCLEN_CHARFOUND_P(ret)
#define ENCODING_SET(obj, i)
#define ENCODING_IS_ASCII8BIT(obj)
#define rb_enc_isspace(c, enc)
char str[HTML_ESCAPE_MAX_LEN+1]
#define rb_intern_str(string)
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
VALUE rb_cObject
Object class.
VALUE rb_syntax_error_append(VALUE exc, VALUE file, int line, int column, rb_encoding *enc, const char *fmt, va_list args)
void rb_raise(VALUE exc, const char *fmt,...)
_Bool rb_warning_category_enabled_p(rb_warning_category_t category)
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
const char * rb_builtin_type_name(int t)
void rb_fatal(const char *fmt,...)
const char * rb_builtin_class_name(VALUE x)
VALUE rb_make_exception(int, const VALUE *)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
VALUE rb_ensure(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE), VALUE)
An equivalent to ensure clause.
VALUE rb_errinfo(void)
The current exception in the current thread.
VALUE rb_class_new_instance(int, const VALUE *, VALUE)
Allocates and initializes an instance of klass.
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
VALUE rb_obj_class(VALUE)
Equivalent to Object#class in Ruby.
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
VALUE type(ANYARGS)
ANYARGS-ed function type.
unsigned char buf[MIME_BUF_SIZE]
ONIG_EXTERN int onig_foreach_name(OnigRegex reg, int(*func)(const OnigUChar *, const OnigUChar *, int, int *, OnigRegex, void *), void *arg)
#define RE_OPTION_ENCODING(e)
enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int)
#define HERETERM_LENGTH_BITS
void rb_parser_fatal(struct parser_params *p, const char *fmt,...)
#define dispatch_delayed_token(p, t)
#define IS_LABEL_POSSIBLE()
#define has_delayed_token(p)
#define set_yylval_name(x)
#define DVARS_TERMINAL_P(tbl)
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
VALUE rb_parser_new(void)
#define RUBY_DTRACE_PARSE_HOOK(name)
@ YYSYMBOL_74_escaped_vertical_tab_
@ YYSYMBOL_keyword_module
@ YYSYMBOL_73_escaped_carriage_return_
@ YYSYMBOL_block_args_tail
@ YYSYMBOL_opt_block_args_tail
@ YYSYMBOL_modifier_unless
@ YYSYMBOL_keyword_do_LAMBDA
@ YYSYMBOL_modifier_until
@ YYSYMBOL_modifier_rescue
@ YYSYMBOL_xstring_contents
@ YYSYMBOL_p_top_expr_body
@ YYSYMBOL_block_param_def
@ YYSYMBOL_keyword__LINE__
@ YYSYMBOL_simple_numeric
@ YYSYMBOL_tSTRING_CONTENT
@ YYSYMBOL_keyword_variable
@ YYSYMBOL_regexp_contents
@ YYSYMBOL_modifier_while
@ YYSYMBOL_keyword_unless
@ YYSYMBOL_keyword_do_cond
@ YYSYMBOL_cmd_brace_block
@ YYSYMBOL_keyword__ENCODING__
@ YYSYMBOL_string_content
@ YYSYMBOL_keyword_ensure
@ YYSYMBOL_keyword_rescue
@ YYSYMBOL_f_block_optarg
@ YYSYMBOL_opt_f_block_arg
@ YYSYMBOL_keyword_defined
@ YYSYMBOL_keyword_return
@ YYSYMBOL_opt_block_param
@ YYSYMBOL_keyword__FILE__
@ YYSYMBOL_string_contents
@ YYSYMBOL_opt_paren_args
@ YYSYMBOL_keyword_do_block
@ YYSYMBOL_72_escaped_form_feed_
@ YYSYMBOL_71_escaped_horizontal_tab_
#define add_delayed_token(p, tok, end)
#define NUMPARAM_ID_P(id)
#define str_copy(_s, _p, _n)
#define SWITCH_BY_COND_TYPE(t, w, arg)
#define make_list(list, loc)
#define rb_warn1L(l, fmt, a)
void * rb_parser_malloc(struct parser_params *p, size_t size)
#define dispatch_heredoc_end(p)
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
VALUE rb_io_gets_internal(VALUE io)
rb_ast_t * rb_parser_compile_string(VALUE vparser, const char *f, VALUE s, int line)
void(* rb_magic_comment_setter_t)(struct parser_params *p, const char *name, const char *val)
#define NEW_STRTERM(func, term, paren)
STATIC_ASSERT(rb_strterm_heredoc_t, sizeof(rb_strterm_heredoc_t)<=4 *SIZEOF_VALUE)
#define YY_IGNORE_USELESS_CAST_END
#define literal_flush(p, ptr)
#define yyerror(yylloc, p, msg)
struct token_info token_info
void rb_parser_printf(struct parser_params *p, const char *fmt,...)
YYLTYPE * rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc)
#define WARN_SPACE_CHAR(c, prefix)
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define intern_cstr(n, l, en)
#define YY_REDUCE_PRINT(Rule)
rb_ast_t * rb_parser_compile_string_path(VALUE vparser, VALUE f, VALUE s, int line)
#define YY_CAST(Type, Val)
void rb_parser_set_options(VALUE vparser, int print, int loop, int chomp, int split)
#define vtable_alloc(prev)
VALUE rb_parser_set_context(VALUE vparser, const struct rb_iseq_struct *base, int main)
RUBY_SYMBOL_EXPORT_BEGIN VALUE rb_parser_reg_compile(struct parser_params *p, VALUE str, int options)
#define IS_lex_state_for(x, ls)
#define dispatch_scan_event(p, t)
#define NEW_QCALL(q, r, m, a, loc)
long(* rb_magic_comment_length_t)(struct parser_params *p, const char *name, long len)
#define warn_balanced(tok, op, syn)
RUBY_FUNC_EXPORTED const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20+31)/32]
#define RE_OPTION_ENCODING_NONE(o)
YYLTYPE * rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
#define set_yylval_literal(x)
#define set_yylval_str(x)
#define WARN_LOCATION(type)
rb_ast_t * rb_parser_compile_generic(VALUE vparser, VALUE(*lex_gets)(VALUE, int), VALUE fname, VALUE input, int start)
#define RUBY_INIT_YYLLOC()
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
#define YY_INITIAL_VALUE(Value)
#define STR_NEW3(ptr, len, e, func)
VALUE rb_parser_encoding(VALUE vparser)
int rb_reg_fragment_setenc(struct parser_params *, VALUE, int)
#define yytnamerr(yyres, yystr)
VALUE rb_parser_get_debug_output(VALUE self)
unsigned char yytype_uint8
#define YY_STACK_PRINT(Bottom, Top)
const struct kwtable * rb_reserved_word(const char *str, unsigned int len)
#define STR_NEW(ptr, len)
#define lambda_beginning_p()
#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current)
#define YYSTACK_ALLOC_MAXIMUM
#define IS_lex_state_all(ls)
#define NUMPARAM_IDX_TO_ID(idx)
#define YY_IGNORE_USELESS_CAST_BEGIN
void rb_strterm_mark(VALUE obj)
#define rb_warn2(fmt, a, b)
void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int)
#define YYLOCATION_PRINT(File, Loc)
#define ADD2HEAP(new, cnt, ptr)
#define mixed_escape(beg, enc1, enc2)
#define RE_OPTION_ENCODING_IDX(o)
#define vtable_pop(tbl, n)
#define set_yylval_noname()
size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr)
void * rb_parser_realloc(struct parser_params *p, void *ptr, size_t size)
VALUE rb_parser_set_debug_output(VALUE self, VALUE output)
#define set_yylval_node(x)
VALUE rb_parser_set_yydebug(VALUE self, VALUE flag)
VALUE rb_parser_end_seen_p(VALUE vparser)
#define RUBY_SET_YYLLOC(Current)
#define yytable_value_is_error(Yyn)
struct rb_strterm_literal_struct rb_strterm_literal_t
#define HERETERM_LENGTH_MAX
YYLTYPE * rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc)
#define YY_ATTRIBUTE_UNUSED
void rb_parser_free(struct parser_params *p, void *ptr)
PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt,...), 2, 3)
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE file, int start)
#define NUMPARAM_ID_TO_IDX(id)
void rb_parser_warn_location(VALUE vparser, int warn)
#define SET_LEX_STATE(ls)
#define RUBY_SET_YYLLOC_OF_NONE(Current)
#define vtable_add(tbl, id)
unsigned short yytype_uint16
#define mixed_error(enc1, enc2)
#define rb_node_newnode(type, a1, a2, a3, loc)
#define IS_LABEL_SUFFIX(n)
#define nd_once_body(node)
#define yyerror1(loc, msg)
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
#define yypact_value_is_default(Yyn)
#define flush_string_content(p, enc)
#define rb_warn0L(l, fmt)
#define rb_warn3L(l, fmt, a, b, c)
#define rb_warning1(fmt, a)
void * rb_parser_calloc(struct parser_params *p, size_t nelem, size_t size)
VALUE rb_parser_lex_state_name(enum lex_state_e state)
#define IS_AFTER_OPERATOR()
enum yytokentype yytoken_kind_t
unsigned char yytype_uint8
rb_atomic_t cnt[RUBY_NSIG]
void st_free_table(st_table *tab)
st_table * st_init_numtable_with_size(st_index_t size)
st_table * st_init_numtable(void)
int st_insert(st_table *tab, st_data_t key, st_data_t value)
int st_lookup(st_table *tab, st_data_t key, st_data_t *value)
int st_foreach(st_table *tab, st_foreach_callback_func *func, st_data_t arg)
rb_code_location_t nd_loc
struct local_vars::@126 numparam
VALUE(* gets)(struct parser_params *, VALUE)
const char * ruby_sourcefile
unsigned int ruby__end__seen
VALUE(* call)(VALUE, int)
unsigned int command_start
unsigned int warn_location
union parser_params::@127::@128 gets_
struct parser_params::@127 lex
const struct rb_iseq_struct * parent_iseq
unsigned int token_info_enabled
VALUE ruby_sourcefile_string
struct local_vars * lvtbl
unsigned int ruby2_keywords
rb_code_position_t beg_pos
rb_code_position_t end_pos
union rb_strterm_literal_struct::@130 u1
union rb_strterm_literal_struct::@131 u2
union rb_strterm_literal_struct::@132 u3
union rb_strterm_literal_struct::@129 u0
rb_strterm_literal_t literal
union rb_strterm_struct::@133 u
rb_strterm_heredoc_t heredoc
#define is_identchar(p, e, enc)
int rb_enc_symname_type(const char *name, long len, rb_encoding *enc, unsigned int allowed_attrset)
struct rb_strterm_struct * strterm
const struct vtable * vars
unsigned long ruby_scan_oct(const char *, size_t, size_t *)
#define scan_hex(s, l, e)
#define scan_oct(s, l, e)