Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals

parse.c

Go to the documentation of this file.
00001 /* A Bison parser, made from parse.y
00002    by GNU bison 1.35.  */
00003 
00004 #define YYBISON 1  /* Identify Bison output.  */
00005 
00006 # define        kCLASS  257
00007 # define        kMODULE 258
00008 # define        kDEF    259
00009 # define        kUNDEF  260
00010 # define        kBEGIN  261
00011 # define        kRESCUE 262
00012 # define        kENSURE 263
00013 # define        kEND    264
00014 # define        kIF     265
00015 # define        kUNLESS 266
00016 # define        kTHEN   267
00017 # define        kELSIF  268
00018 # define        kELSE   269
00019 # define        kCASE   270
00020 # define        kWHEN   271
00021 # define        kWHILE  272
00022 # define        kUNTIL  273
00023 # define        kFOR    274
00024 # define        kBREAK  275
00025 # define        kNEXT   276
00026 # define        kREDO   277
00027 # define        kRETRY  278
00028 # define        kIN     279
00029 # define        kDO     280
00030 # define        kDO_COND        281
00031 # define        kDO_BLOCK       282
00032 # define        kRETURN 283
00033 # define        kYIELD  284
00034 # define        kSUPER  285
00035 # define        kSELF   286
00036 # define        kNIL    287
00037 # define        kTRUE   288
00038 # define        kFALSE  289
00039 # define        kAND    290
00040 # define        kOR     291
00041 # define        kNOT    292
00042 # define        kIF_MOD 293
00043 # define        kUNLESS_MOD     294
00044 # define        kWHILE_MOD      295
00045 # define        kUNTIL_MOD      296
00046 # define        kRESCUE_MOD     297
00047 # define        kALIAS  298
00048 # define        kDEFINED        299
00049 # define        klBEGIN 300
00050 # define        klEND   301
00051 # define        k__LINE__       302
00052 # define        k__FILE__       303
00053 # define        tIDENTIFIER     304
00054 # define        tFID    305
00055 # define        tGVAR   306
00056 # define        tIVAR   307
00057 # define        tCONSTANT       308
00058 # define        tCVAR   309
00059 # define        tINTEGER        310
00060 # define        tFLOAT  311
00061 # define        tSTRING_CONTENT 312
00062 # define        tNTH_REF        313
00063 # define        tBACK_REF       314
00064 # define        tREGEXP_END     315
00065 # define        tUPLUS  316
00066 # define        tUMINUS 317
00067 # define        tPOW    318
00068 # define        tCMP    319
00069 # define        tEQ     320
00070 # define        tEQQ    321
00071 # define        tNEQ    322
00072 # define        tGEQ    323
00073 # define        tLEQ    324
00074 # define        tANDOP  325
00075 # define        tOROP   326
00076 # define        tMATCH  327
00077 # define        tNMATCH 328
00078 # define        tDOT2   329
00079 # define        tDOT3   330
00080 # define        tAREF   331
00081 # define        tASET   332
00082 # define        tLSHFT  333
00083 # define        tRSHFT  334
00084 # define        tCOLON2 335
00085 # define        tCOLON3 336
00086 # define        tOP_ASGN        337
00087 # define        tASSOC  338
00088 # define        tLPAREN 339
00089 # define        tLPAREN_ARG     340
00090 # define        tRPAREN 341
00091 # define        tLBRACK 342
00092 # define        tLBRACE 343
00093 # define        tLBRACE_ARG     344
00094 # define        tSTAR   345
00095 # define        tAMPER  346
00096 # define        tSYMBEG 347
00097 # define        tSTRING_BEG     348
00098 # define        tXSTRING_BEG    349
00099 # define        tREGEXP_BEG     350
00100 # define        tWORDS_BEG      351
00101 # define        tQWORDS_BEG     352
00102 # define        tSTRING_DBEG    353
00103 # define        tSTRING_DVAR    354
00104 # define        tSTRING_END     355
00105 # define        tLOWEST 356
00106 # define        tUMINUS_NUM     357
00107 # define        tLAST_TOKEN     358
00108 
00109 #line 13 "parse.y"
00110 
00111 
00112 #define YYDEBUG 1
00113 #define YYERROR_VERBOSE 1
00114 #ifndef YYSTACK_USE_ALLOCA
00115 #define YYSTACK_USE_ALLOCA 0
00116 #endif
00117 
00118 #include "ruby.h"
00119 #include "env.h"
00120 #include "intern.h"
00121 #include "node.h"
00122 #include "st.h"
00123 #include <stdio.h>
00124 #include <errno.h>
00125 #include <ctype.h>
00126 
00127 #define YYMALLOC        rb_parser_malloc
00128 #define YYREALLOC       rb_parser_realloc
00129 #define YYCALLOC        rb_parser_calloc
00130 #define YYFREE  rb_parser_free
00131 #define malloc  YYMALLOC
00132 #define realloc YYREALLOC
00133 #define calloc  YYCALLOC
00134 #define free    YYFREE
00135 static void *rb_parser_malloc (size_t);
00136 static void *rb_parser_realloc (void *, size_t);
00137 static void *rb_parser_calloc (size_t, size_t);
00138 static void rb_parser_free (void *);
00139 
00140 #define yyparse ruby_yyparse
00141 #define yylex ruby_yylex
00142 #define yyerror ruby_yyerror
00143 #define yylval ruby_yylval
00144 #define yychar ruby_yychar
00145 #define yydebug ruby_yydebug
00146 
00147 #define ID_SCOPE_SHIFT 3
00148 #define ID_SCOPE_MASK 0x07
00149 #define ID_LOCAL    0x01
00150 #define ID_INSTANCE 0x02
00151 #define ID_GLOBAL   0x03
00152 #define ID_ATTRSET  0x04
00153 #define ID_CONST    0x05
00154 #define ID_CLASS    0x06
00155 #define ID_JUNK     0x07
00156 #define ID_INTERNAL ID_JUNK
00157 
00158 #define is_notop_id(id) ((id)>tLAST_TOKEN)
00159 #define is_local_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
00160 #define is_global_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)
00161 #define is_instance_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
00162 #define is_attrset_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
00163 #define is_const_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
00164 #define is_class_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
00165 #define is_junk_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
00166 
00167 #define is_asgn_or_id(id) ((is_notop_id(id)) && \
00168         (((id)&ID_SCOPE_MASK) == ID_GLOBAL || \
00169          ((id)&ID_SCOPE_MASK) == ID_INSTANCE || \
00170          ((id)&ID_SCOPE_MASK) == ID_CLASS))
00171 
00172 NODE *ruby_eval_tree_begin = 0;
00173 NODE *ruby_eval_tree = 0;
00174 
00175 char *ruby_sourcefile;          /* current source file */
00176 int   ruby_sourceline;          /* current line no. */
00177 
00178 static int yylex();
00179 static int yyerror();
00180 
00181 static enum lex_state {
00182     EXPR_BEG,                   /* ignore newline, +/- is a sign. */
00183     EXPR_END,                   /* newline significant, +/- is a operator. */
00184     EXPR_ARG,                   /* newline significant, +/- is a operator. */
00185     EXPR_CMDARG,                /* newline significant, +/- is a operator. */
00186     EXPR_ENDARG,                /* newline significant, +/- is a operator. */
00187     EXPR_MID,                   /* newline significant, +/- is a operator. */
00188     EXPR_FNAME,                 /* ignore newline, no reserved words. */
00189     EXPR_DOT,                   /* right after `.' or `::', no reserved words. */
00190     EXPR_CLASS,                 /* immediate after `class', no here document. */
00191 } lex_state;
00192 static NODE *lex_strterm;
00193 
00194 #ifdef HAVE_LONG_LONG
00195 typedef unsigned LONG_LONG stack_type;
00196 #else
00197 typedef unsigned long stack_type;
00198 #endif
00199 
00200 #define BITSTACK_PUSH(stack, n) (stack = (stack<<1)|((n)&1))
00201 #define BITSTACK_POP(stack)     (stack >>= 1)
00202 #define BITSTACK_LEXPOP(stack)  (stack = (stack >> 1) | (stack & 1))
00203 #define BITSTACK_SET_P(stack)   (stack&1)
00204 
00205 static stack_type cond_stack = 0;
00206 #define COND_PUSH(n)    BITSTACK_PUSH(cond_stack, n)
00207 #define COND_POP()      BITSTACK_POP(cond_stack)
00208 #define COND_LEXPOP()   BITSTACK_LEXPOP(cond_stack)
00209 #define COND_P()        BITSTACK_SET_P(cond_stack)
00210 
00211 static stack_type cmdarg_stack = 0;
00212 #define CMDARG_PUSH(n)  BITSTACK_PUSH(cmdarg_stack, n)
00213 #define CMDARG_POP()    BITSTACK_POP(cmdarg_stack)
00214 #define CMDARG_LEXPOP() BITSTACK_LEXPOP(cmdarg_stack)
00215 #define CMDARG_P()      BITSTACK_SET_P(cmdarg_stack)
00216 
00217 static int class_nest = 0;
00218 static int in_single = 0;
00219 static int in_def = 0;
00220 static int compile_for_eval = 0;
00221 static ID cur_mid = 0;
00222 
00223 static NODE *cond();
00224 static NODE *logop();
00225 static int cond_negative();
00226 
00227 static NODE *newline_node();
00228 static void fixpos();
00229 
00230 static int value_expr0();
00231 static void void_expr0();
00232 static void void_stmts();
00233 static NODE *remove_begin();
00234 #define value_expr(node) value_expr0((node) = remove_begin(node))
00235 #define void_expr(node) void_expr0((node) = remove_begin(node))
00236 
00237 static NODE *block_append();
00238 static NODE *list_append();
00239 static NODE *list_concat();
00240 static NODE *arg_concat();
00241 static NODE *arg_prepend();
00242 static NODE *literal_concat();
00243 static NODE *new_evstr();
00244 static NODE *evstr2dstr();
00245 static NODE *call_op();
00246 static int in_defined = 0;
00247 
00248 static NODE *negate_lit();
00249 static NODE *ret_args();
00250 static NODE *arg_blk_pass();
00251 static NODE *new_call();
00252 static NODE *new_fcall();
00253 static NODE *new_super();
00254 static NODE *new_yield();
00255 
00256 static NODE *gettable();
00257 static NODE *assignable();
00258 static NODE *aryset();
00259 static NODE *attrset();
00260 static void rb_backref_error();
00261 static NODE *node_assign();
00262 
00263 static NODE *match_gen();
00264 static void local_push();
00265 static void local_pop();
00266 static int  local_append();
00267 static int  local_cnt();
00268 static int  local_id();
00269 static ID  *local_tbl();
00270 static ID   internal_id();
00271 
00272 static struct RVarmap *dyna_push();
00273 static void dyna_pop();
00274 static int dyna_in_block();
00275 static NODE *dyna_init();
00276 
00277 static void top_local_init();
00278 static void top_local_setup();
00279 
00280 #define RE_OPTION_ONCE 0x80
00281 
00282 #define NODE_STRTERM NODE_ZARRAY        /* nothing to gc */
00283 #define NODE_HEREDOC NODE_ARRAY         /* 1, 3 to gc */
00284 #define SIGN_EXTEND(x,n) (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
00285 #define nd_func u1.id
00286 #if SIZEOF_SHORT == 2
00287 #define nd_term(node) ((signed short)(node)->u2.id)
00288 #else
00289 #define nd_term(node) SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
00290 #endif
00291 #define nd_paren(node) (char)((node)->u2.id >> CHAR_BIT*2)
00292 #define nd_nest u3.id
00293 
00294 /* Older versions of Yacc set YYMAXDEPTH to a very low value by default (150,
00295    for instance).  This is too low for Ruby to parse some files, such as
00296    date/format.rb, therefore bump the value up to at least Bison's default. */
00297 #ifdef OLD_YACC
00298 #ifndef YYMAXDEPTH
00299 #define YYMAXDEPTH 10000
00300 #endif
00301 #endif
00302 
00303 
00304 #line 208 "parse.y"
00305 #ifndef YYSTYPE
00306 typedef union {
00307     NODE *node;
00308     ID id;
00309     int num;
00310     struct RVarmap *vars;
00311 } yystype;
00312 # define YYSTYPE yystype
00313 # define YYSTYPE_IS_TRIVIAL 1
00314 #endif
00315 #ifndef YYDEBUG
00316 # define YYDEBUG 0
00317 #endif
00318 
00319 
00320 
00321 #define YYFINAL         895
00322 #define YYFLAG          -32768
00323 #define YYNTBASE        132
00324 
00325 /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
00326 #define YYTRANSLATE(x) ((unsigned)(x) <= 358 ? yytranslate[x] : 274)
00327 
00328 /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
00329 static const short yytranslate[] =
00330 {
00331        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00332      130,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00333        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00334        2,     2,   129,   117,     2,     2,     2,   115,   110,     2,
00335      128,   125,   113,   111,   126,   112,   124,   114,     2,     2,
00336        2,     2,     2,     2,     2,     2,     2,     2,   105,   131,
00337      107,   103,   106,   104,     2,     2,     2,     2,     2,     2,
00338        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00339        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00340        2,   122,     2,   123,   109,     2,   127,     2,     2,     2,
00341        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00342        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00343        2,     2,     2,   120,   108,   121,   118,     2,     2,     2,
00344        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00345        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00346        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00347        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00348        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00349        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00350        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00351        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00352        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00353        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00354        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00355        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00356        2,     2,     2,     2,     2,     2,     1,     3,     4,     5,
00357        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
00358       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
00359       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
00360       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
00361       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
00362       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
00363       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
00364       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
00365       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
00366       96,    97,    98,    99,   100,   101,   102,   116,   119
00367 };
00368 
00369 #if YYDEBUG
00370 static const short yyprhs[] =
00371 {
00372        0,     0,     1,     4,     9,    12,    14,    16,    20,    23,
00373       24,    29,    33,    37,    41,    44,    48,    52,    56,    60,
00374       64,    65,    71,    76,    80,    84,    88,    95,   101,   107,
00375      113,   117,   121,   125,   129,   131,   133,   137,   141,   144,
00376      147,   149,   151,   153,   155,   158,   161,   164,   166,   171,
00377      176,   177,   178,   185,   188,   192,   197,   203,   208,   214,
00378      217,   220,   222,   226,   228,   232,   234,   237,   241,   244,
00379      247,   249,   251,   255,   258,   262,   264,   269,   273,   277,
00380      281,   285,   288,   290,   292,   297,   301,   305,   309,   313,
00381      316,   318,   320,   322,   325,   327,   331,   333,   335,   337,
00382      339,   341,   343,   345,   347,   348,   353,   355,   357,   359,
00383      361,   363,   365,   367,   369,   371,   373,   375,   377,   379,
00384      381,   383,   385,   387,   389,   391,   393,   395,   397,   399,
00385      401,   403,   405,   407,   409,   411,   413,   415,   417,   419,
00386      421,   423,   425,   427,   429,   431,   433,   435,   437,   439,
00387      441,   443,   445,   447,   449,   451,   453,   455,   457,   459,
00388      461,   463,   465,   467,   469,   471,   473,   475,   477,   479,
00389      481,   483,   485,   487,   491,   497,   501,   508,   514,   520,
00390      526,   532,   537,   541,   545,   549,   553,   557,   561,   565,
00391      569,   573,   578,   583,   586,   589,   593,   597,   601,   605,
00392      609,   613,   617,   621,   625,   629,   633,   637,   641,   644,
00393      647,   651,   655,   659,   663,   664,   669,   675,   677,   679,
00394      681,   684,   687,   693,   696,   700,   704,   709,   714,   721,
00395      723,   725,   727,   730,   736,   739,   745,   750,   758,   762,
00396      764,   769,   773,   779,   787,   790,   796,   801,   808,   816,
00397      826,   830,   832,   833,   836,   838,   839,   843,   844,   849,
00398      852,   855,   857,   859,   863,   867,   872,   875,   877,   879,
00399      881,   883,   885,   887,   889,   891,   893,   894,   899,   900,
00400      906,   910,   914,   917,   922,   926,   930,   932,   937,   941,
00401      943,   944,   951,   954,   956,   959,   966,   973,   974,   975,
00402      983,   984,   985,   993,   999,  1004,  1010,  1011,  1012,  1022,
00403     1023,  1030,  1031,  1032,  1041,  1042,  1048,  1049,  1056,  1057,
00404     1058,  1068,  1070,  1072,  1074,  1076,  1078,  1080,  1082,  1084,
00405     1087,  1089,  1091,  1093,  1095,  1101,  1103,  1106,  1108,  1110,
00406     1112,  1115,  1117,  1121,  1122,  1123,  1130,  1133,  1138,  1143,
00407     1146,  1151,  1156,  1160,  1163,  1165,  1166,  1167,  1174,  1175,
00408     1176,  1183,  1189,  1191,  1196,  1199,  1201,  1203,  1210,  1212,
00409     1214,  1216,  1218,  1221,  1223,  1226,  1228,  1230,  1232,  1234,
00410     1236,  1238,  1241,  1245,  1249,  1253,  1257,  1261,  1262,  1266,
00411     1268,  1271,  1275,  1279,  1280,  1284,  1285,  1288,  1289,  1292,
00412     1294,  1295,  1299,  1300,  1305,  1307,  1309,  1311,  1313,  1316,
00413     1318,  1320,  1322,  1324,  1328,  1330,  1332,  1335,  1338,  1340,
00414     1342,  1344,  1346,  1348,  1350,  1352,  1354,  1356,  1358,  1360,
00415     1362,  1364,  1366,  1368,  1370,  1371,  1376,  1379,  1384,  1387,
00416     1394,  1399,  1404,  1407,  1412,  1415,  1418,  1420,  1421,  1423,
00417     1425,  1427,  1429,  1431,  1433,  1437,  1441,  1443,  1447,  1449,
00418     1451,  1454,  1456,  1458,  1460,  1463,  1466,  1468,  1470,  1471,
00419     1477,  1479,  1482,  1485,  1487,  1491,  1495,  1497,  1499,  1501,
00420     1503,  1505,  1507,  1509,  1511,  1513,  1515,  1517,  1519,  1520,
00421     1522,  1523,  1525,  1526,  1528,  1530,  1532,  1534,  1536,  1539
00422 };
00423 static const short yyrhs[] =
00424 {
00425       -1,   133,   135,     0,   135,   217,   201,   220,     0,   136,
00426      268,     0,   273,     0,   137,     0,   136,   272,   137,     0,
00427        1,   137,     0,     0,    44,   158,   138,   158,     0,    44,
00428       52,    52,     0,    44,    52,    60,     0,    44,    52,    59,
00429        0,     6,   159,     0,   137,    39,   141,     0,   137,    40,
00430      141,     0,   137,    41,   141,     0,   137,    42,   141,     0,
00431      137,    43,   137,     0,     0,    46,   139,   120,   135,   121,
00432        0,    47,   120,   135,   121,     0,   154,   103,   142,     0,
00433      148,   103,   142,     0,   244,    83,   142,     0,   197,   122,
00434      166,   123,    83,   142,     0,   197,   124,    50,    83,   142,
00435        0,   197,   124,    54,    83,   142,     0,   197,    81,    50,
00436       83,   142,     0,   245,    83,   142,     0,   154,   103,   179,
00437        0,   148,   103,   165,     0,   148,   103,   179,     0,   140,
00438        0,   142,     0,   140,    36,   140,     0,   140,    37,   140,
00439        0,    38,   140,     0,   117,   142,     0,   163,     0,   140,
00440        0,   147,     0,   143,     0,    29,   169,     0,    21,   169,
00441        0,    22,   169,     0,   207,     0,   207,   124,   265,   171,
00442        0,   207,    81,   265,   171,     0,     0,     0,    90,   145,
00443      203,   146,   135,   121,     0,   264,   171,     0,   264,   171,
00444      144,     0,   197,   124,   265,   171,     0,   197,   124,   265,
00445      171,   144,     0,   197,    81,   265,   171,     0,   197,    81,
00446      265,   171,   144,     0,    31,   171,     0,    30,   171,     0,
00447      150,     0,    85,   149,   125,     0,   150,     0,    85,   149,
00448      125,     0,   152,     0,   152,   151,     0,   152,    91,   153,
00449        0,   152,    91,     0,    91,   153,     0,    91,     0,   153,
00450        0,    85,   149,   125,     0,   151,   126,     0,   152,   151,
00451      126,     0,   242,     0,   197,   122,   166,   123,     0,   197,
00452      124,    50,     0,   197,    81,    50,     0,   197,   124,    54,
00453        0,   197,    81,    54,     0,    82,    54,     0,   245,     0,
00454      242,     0,   197,   122,   166,   123,     0,   197,   124,    50,
00455        0,   197,    81,    50,     0,   197,   124,    54,     0,   197,
00456       81,    54,     0,    82,    54,     0,   245,     0,    50,     0,
00457       54,     0,    82,   155,     0,   155,     0,   197,    81,   155,
00458        0,    50,     0,    54,     0,    51,     0,   161,     0,   162,
00459        0,   157,     0,   238,     0,   158,     0,     0,   159,   126,
00460      160,   158,     0,   108,     0,   109,     0,   110,     0,    65,
00461        0,    66,     0,    67,     0,    73,     0,   106,     0,    69,
00462        0,   107,     0,    70,     0,    79,     0,    80,     0,   111,
00463        0,   112,     0,   113,     0,    91,     0,   114,     0,   115,
00464        0,    64,     0,   118,     0,    62,     0,    63,     0,    77,
00465        0,    78,     0,   127,     0,    48,     0,    49,     0,    46,
00466        0,    47,     0,    44,     0,    36,     0,     7,     0,    21,
00467        0,    16,     0,     3,     0,     5,     0,    45,     0,    26,
00468        0,    15,     0,    14,     0,    10,     0,     9,     0,    35,
00469        0,    20,     0,    25,     0,     4,     0,    22,     0,    33,
00470        0,    38,     0,    37,     0,    23,     0,     8,     0,    24,
00471        0,    29,     0,    32,     0,    31,     0,    13,     0,    34,
00472        0,     6,     0,    17,     0,    30,     0,    39,     0,    40,
00473        0,    41,     0,    42,     0,    43,     0,   154,   103,   163,
00474        0,   154,   103,   163,    43,   163,     0,   244,    83,   163,
00475        0,   197,   122,   166,   123,    83,   163,     0,   197,   124,
00476       50,    83,   163,     0,   197,   124,    54,    83,   163,     0,
00477      197,    81,    50,    83,   163,     0,   197,    81,    54,    83,
00478      163,     0,    82,    54,    83,   163,     0,   245,    83,   163,
00479        0,   163,    75,   163,     0,   163,    76,   163,     0,   163,
00480      111,   163,     0,   163,   112,   163,     0,   163,   113,   163,
00481        0,   163,   114,   163,     0,   163,   115,   163,     0,   163,
00482       64,   163,     0,   116,    56,    64,   163,     0,   116,    57,
00483       64,   163,     0,    62,   163,     0,    63,   163,     0,   163,
00484      108,   163,     0,   163,   109,   163,     0,   163,   110,   163,
00485        0,   163,    65,   163,     0,   163,   106,   163,     0,   163,
00486       69,   163,     0,   163,   107,   163,     0,   163,    70,   163,
00487        0,   163,    66,   163,     0,   163,    67,   163,     0,   163,
00488       68,   163,     0,   163,    73,   163,     0,   163,    74,   163,
00489        0,   117,   163,     0,   118,   163,     0,   163,    79,   163,
00490        0,   163,    80,   163,     0,   163,    71,   163,     0,   163,
00491       72,   163,     0,     0,    45,   269,   164,   163,     0,   163,
00492      104,   163,   105,   163,     0,   180,     0,   163,     0,   273,
00493        0,   147,   269,     0,   178,   270,     0,   178,   126,    91,
00494      163,   269,     0,   262,   270,     0,    91,   163,   269,     0,
00495      128,   273,   125,     0,   128,   169,   269,   125,     0,   128,
00496      207,   269,   125,     0,   128,   178,   126,   207,   269,   125,
00497        0,   273,     0,   167,     0,   147,     0,   178,   177,     0,
00498      178,   126,    91,   165,   177,     0,   262,   177,     0,   262,
00499      126,    91,   165,   177,     0,   178,   126,   262,   177,     0,
00500      178,   126,   262,   126,    91,   163,   177,     0,    91,   165,
00501      177,     0,   176,     0,   165,   126,   178,   177,     0,   165,
00502      126,   176,     0,   165,   126,    91,   165,   177,     0,   165,
00503      126,   178,   126,    91,   165,   177,     0,   262,   177,     0,
00504      262,   126,    91,   165,   177,     0,   165,   126,   262,   177,
00505        0,   165,   126,   178,   126,   262,   177,     0,   165,   126,
00506      262,   126,    91,   165,   177,     0,   165,   126,   178,   126,
00507      262,   126,    91,   165,   177,     0,    91,   165,   177,     0,
00508      176,     0,     0,   172,   173,     0,   169,     0,     0,    86,
00509      174,   125,     0,     0,    86,   170,   175,   125,     0,    92,
00510      165,     0,   126,   176,     0,   273,     0,   165,     0,   178,
00511      126,   165,     0,   178,   126,   165,     0,   178,   126,    91,
00512      165,     0,    91,   165,     0,   221,     0,   222,     0,   225,
00513        0,   226,     0,   227,     0,   230,     0,   243,     0,   245,
00514        0,    51,     0,     0,     7,   181,   134,    10,     0,     0,
00515       86,   140,   182,   269,   125,     0,    85,   135,   125,     0,
00516      197,    81,    54,     0,    82,    54,     0,   197,   122,   166,
00517      123,     0,    88,   166,   123,     0,    89,   261,   121,     0,
00518       29,     0,    30,   128,   169,   125,     0,    30,   128,   125,
00519        0,    30,     0,     0,    45,   269,   128,   183,   140,   125,
00520        0,   264,   209,     0,   208,     0,   208,   209,     0,    11,
00521      141,   198,   135,   200,    10,     0,    12,   141,   198,   135,
00522      201,    10,     0,     0,     0,    18,   184,   141,   199,   185,
00523      135,    10,     0,     0,     0,    19,   186,   141,   199,   187,
00524      135,    10,     0,    16,   141,   268,   214,    10,     0,    16,
00525      268,   214,    10,     0,    16,   268,    15,   135,    10,     0,
00526        0,     0,    20,   202,    25,   188,   141,   199,   189,   135,
00527       10,     0,     0,     3,   156,   246,   190,   134,    10,     0,
00528        0,     0,     3,    79,   140,   191,   271,   192,   134,    10,
00529        0,     0,     4,   156,   193,   134,    10,     0,     0,     5,
00530      157,   194,   248,   134,    10,     0,     0,     0,     5,   259,
00531      267,   195,   157,   196,   248,   134,    10,     0,    21,     0,
00532       22,     0,    23,     0,    24,     0,   180,     0,   271,     0,
00533      105,     0,    13,     0,   271,    13,     0,   271,     0,   105,
00534        0,    27,     0,   201,     0,    14,   141,   198,   135,   200,
00535        0,   273,     0,    15,   135,     0,   154,     0,   148,     0,
00536      273,     0,   108,   108,     0,    72,     0,   108,   202,   108,
00537        0,     0,     0,    28,   205,   203,   206,   135,    10,     0,
00538      147,   204,     0,   207,   124,   265,   168,     0,   207,    81,
00539      265,   168,     0,   264,   167,     0,   197,   124,   265,   168,
00540        0,   197,    81,   265,   167,     0,   197,    81,   266,     0,
00541       31,   167,     0,    31,     0,     0,     0,   120,   210,   203,
00542      211,   135,   121,     0,     0,     0,    26,   212,   203,   213,
00543      135,    10,     0,    17,   215,   198,   135,   216,     0,   178,
00544        0,   178,   126,    91,   165,     0,    91,   165,     0,   201,
00545        0,   214,     0,     8,   218,   219,   198,   135,   217,     0,
00546      273,     0,   165,     0,   179,     0,   273,     0,    84,   154,
00547        0,   273,     0,     9,   135,     0,   273,     0,   241,     0,
00548      238,     0,   240,     0,   223,     0,   224,     0,   223,   224,
00549        0,    94,   232,   101,     0,    95,   233,   101,     0,    96,
00550      233,    61,     0,    97,   129,   101,     0,    97,   228,   101,
00551        0,     0,   228,   229,   129,     0,   234,     0,   229,   234,
00552        0,    98,   129,   101,     0,    98,   231,   101,     0,     0,
00553      231,    58,   129,     0,     0,   232,   234,     0,     0,   233,
00554      234,     0,    58,     0,     0,   100,   235,   237,     0,     0,
00555       99,   236,   135,   121,     0,    52,     0,    53,     0,    55,
00556        0,   245,     0,    93,   239,     0,   157,     0,    53,     0,
00557       52,     0,    55,     0,    93,   233,   101,     0,    56,     0,
00558       57,     0,   116,    56,     0,   116,    57,     0,    50,     0,
00559       53,     0,    52,     0,    54,     0,    55,     0,    33,     0,
00560       32,     0,    34,     0,    35,     0,    49,     0,    48,     0,
00561      242,     0,   242,     0,    59,     0,    60,     0,   271,     0,
00562        0,   107,   247,   141,   271,     0,     1,   271,     0,   128,
00563      249,   269,   125,     0,   249,   271,     0,   251,   126,   253,
00564      126,   255,   258,     0,   251,   126,   253,   258,     0,   251,
00565      126,   255,   258,     0,   251,   258,     0,   253,   126,   255,
00566      258,     0,   253,   258,     0,   255,   258,     0,   257,     0,
00567        0,    54,     0,    53,     0,    52,     0,    55,     0,    50,
00568        0,   250,     0,   251,   126,   250,     0,    50,   103,   165,
00569        0,   252,     0,   253,   126,   252,     0,   113,     0,    91,
00570        0,   254,    50,     0,   254,     0,   110,     0,    92,     0,
00571      256,    50,     0,   126,   257,     0,   273,     0,   243,     0,
00572        0,   128,   260,   140,   269,   125,     0,   273,     0,   262,
00573      270,     0,   178,   270,     0,   263,     0,   262,   126,   263,
00574        0,   165,    84,   165,     0,    50,     0,    54,     0,    51,
00575        0,    50,     0,    54,     0,    51,     0,   161,     0,    50,
00576        0,    51,     0,   161,     0,   124,     0,    81,     0,     0,
00577      272,     0,     0,   130,     0,     0,   130,     0,   126,     0,
00578      131,     0,   130,     0,   271,     0,   272,   131,     0,     0
00579 };
00580 
00581 #endif
00582 
00583 #if YYDEBUG
00584 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
00585 static const short yyrline[] =
00586 {
00587        0,   345,   345,   370,   390,   397,   398,   402,   406,   412,
00588      412,   416,   420,   427,   432,   436,   445,   454,   466,   478,
00589      482,   482,   496,   504,   508,   514,   539,   558,   570,   582,
00590      594,   599,   603,   608,   613,   616,   617,   621,   625,   629,
00591      633,   636,   643,   644,   645,   649,   653,   659,   660,   664,
00592      670,   670,   670,   685,   690,   702,   707,   719,   724,   736,
00593      741,   748,   749,   755,   756,   762,   766,   770,   774,   778,
00594      782,   788,   789,   795,   799,   805,   809,   813,   817,   821,
00595      825,   831,   837,   844,   848,   852,   856,   860,   864,   870,
00596      876,   883,   887,   890,   894,   898,   904,   905,   906,   907,
00597      912,   919,   920,   923,   927,   927,   933,   934,   935,   936,
00598      937,   938,   939,   940,   941,   942,   943,   944,   945,   946,
00599      947,   948,   949,   950,   951,   952,   953,   954,   955,   956,
00600      957,   958,   961,   961,   961,   961,   962,   962,   962,   962,
00601      962,   962,   962,   963,   963,   963,   963,   963,   963,   963,
00602      964,   964,   964,   964,   964,   964,   965,   965,   965,   965,
00603      965,   965,   965,   966,   966,   966,   966,   966,   967,   967,
00604      967,   967,   967,   970,   974,   978,  1003,  1022,  1034,  1046,
00605     1058,  1063,  1068,  1073,  1086,  1099,  1103,  1107,  1111,  1115,
00606     1119,  1123,  1127,  1131,  1140,  1144,  1148,  1152,  1156,  1160,
00607     1164,  1168,  1172,  1176,  1180,  1184,  1188,  1192,  1196,  1200,
00608     1204,  1208,  1212,  1216,  1220,  1220,  1225,  1230,  1236,  1243,
00609     1244,  1249,  1253,  1258,  1262,  1269,  1273,  1277,  1282,  1289,
00610     1290,  1293,  1298,  1302,  1307,  1312,  1317,  1322,  1328,  1332,
00611     1335,  1339,  1343,  1348,  1353,  1358,  1363,  1368,  1373,  1378,
00612     1383,  1387,  1390,  1390,  1402,  1403,  1403,  1408,  1408,  1415,
00613     1421,  1425,  1428,  1432,  1438,  1442,  1446,  1452,  1453,  1454,
00614     1455,  1456,  1457,  1458,  1459,  1460,  1464,  1464,  1477,  1477,
00615     1482,  1486,  1490,  1494,  1502,  1511,  1515,  1519,  1523,  1527,
00616     1531,  1531,  1536,  1542,  1543,  1552,  1565,  1578,  1578,  1578,
00617     1588,  1588,  1588,  1598,  1605,  1609,  1613,  1613,  1613,  1620,
00618     1620,  1636,  1636,  1636,  1658,  1658,  1674,  1674,  1692,  1692,
00619     1692,  1707,  1711,  1715,  1719,  1725,  1732,  1733,  1734,  1735,
00620     1738,  1739,  1740,  1743,  1744,  1753,  1754,  1760,  1761,  1764,
00621     1765,  1769,  1773,  1779,  1779,  1779,  1794,  1803,  1807,  1813,
00622     1818,  1823,  1828,  1832,  1836,  1842,  1842,  1842,  1854,  1854,
00623     1854,  1868,  1875,  1876,  1880,  1886,  1887,  1890,  1901,  1904,
00624     1908,  1909,  1912,  1916,  1919,  1927,  1930,  1931,  1935,  1938,
00625     1951,  1952,  1958,  1964,  1987,  2020,  2024,  2030,  2034,  2040,
00626     2041,  2047,  2051,  2057,  2061,  2067,  2071,  2077,  2081,  2087,
00627     2088,  2088,  2099,  2099,  2120,  2121,  2122,  2123,  2126,  2133,
00628     2134,  2135,  2136,  2139,  2172,  2173,  2174,  2178,  2184,  2185,
00629     2186,  2187,  2188,  2189,  2190,  2191,  2192,  2193,  2194,  2197,
00630     2203,  2209,  2210,  2213,  2217,  2217,  2225,  2228,  2233,  2239,
00631     2243,  2247,  2251,  2255,  2259,  2263,  2267,  2271,  2277,  2281,
00632     2285,  2289,  2293,  2304,  2305,  2311,  2321,  2326,  2332,  2333,
00633     2336,  2344,  2350,  2351,  2354,  2364,  2368,  2371,  2381,  2381,
00634     2406,  2407,  2411,  2420,  2421,  2427,  2433,  2434,  2435,  2438,
00635     2439,  2440,  2441,  2444,  2445,  2446,  2449,  2450,  2453,  2454,
00636     2457,  2458,  2461,  2462,  2463,  2466,  2467,  2470,  2471,  2474
00637 };
00638 #endif
00639 
00640 
00641 #if (YYDEBUG) || defined YYERROR_VERBOSE
00642 
00643 /* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
00644 static const char *const yytname[] =
00645 {
00646   "$", "error", "$undefined.", "kCLASS", "kMODULE", "kDEF", "kUNDEF", 
00647   "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", 
00648   "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", 
00649   "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", 
00650   "kDO_BLOCK", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", 
00651   "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", 
00652   "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", 
00653   "k__LINE__", "k__FILE__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", 
00654   "tCONSTANT", "tCVAR", "tINTEGER", "tFLOAT", "tSTRING_CONTENT", 
00655   "tNTH_REF", "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW", 
00656   "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", 
00657   "tMATCH", "tNMATCH", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", 
00658   "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", 
00659   "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", 
00660   "tAMPER", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", 
00661   "tWORDS_BEG", "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", 
00662   "tSTRING_END", "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'", 
00663   "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", 
00664   "'~'", "tLAST_TOKEN", "'{'", "'}'", "'['", "']'", "'.'", "')'", "','", 
00665   "'`'", "'('", "' '", "'\\n'", "';'", "program", "@1", "bodystmt", 
00666   "compstmt", "stmts", "stmt", "@2", "@3", "expr", "expr_value", 
00667   "command_call", "block_command", "cmd_brace_block", "@4", "@5", 
00668   "command", "mlhs", "mlhs_entry", "mlhs_basic", "mlhs_item", "mlhs_head", 
00669   "mlhs_node", "lhs", "cname", "cpath", "fname", "fitem", "undef_list", 
00670   "@6", "op", "reswords", "arg", "@7", "arg_value", "aref_args", 
00671   "paren_args", "opt_paren_args", "call_args", "call_args2", 
00672   "command_args", "@8", "open_args", "@9", "@10", "block_arg", 
00673   "opt_block_arg", "args", "mrhs", "primary", "@11", "@12", "@13", "@14", 
00674   "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "@24", 
00675   "@25", "@26", "primary_value", "then", "do", "if_tail", "opt_else", 
00676   "block_var", "opt_block_var", "do_block", "@27", "@28", "block_call", 
00677   "method_call", "brace_block", "@29", "@30", "@31", "@32", "case_body", 
00678   "when_args", "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", 
00679   "literal", "strings", "string", "string1", "xstring", "regexp", "words", 
00680   "word_list", "word", "qwords", "qword_list", "string_contents", 
00681   "xstring_contents", "string_content", "@33", "@34", "string_dvar", 
00682   "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs", 
00683   "backref", "superclass", "@35", "f_arglist", "f_args", "f_norm_arg", 
00684   "f_arg", "f_opt", "f_optarg", "restarg_mark", "f_rest_arg", 
00685   "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@36", 
00686   "assoc_list", "assocs", "assoc", "operation", "operation2", 
00687   "operation3", "dot_or_colon", "opt_terms", "opt_nl", "trailer", "term", 
00688   "terms", "none", 0
00689 };
00690 #endif
00691 
00692 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
00693 static const short yyr1[] =
00694 {
00695        0,   133,   132,   134,   135,   136,   136,   136,   136,   138,
00696      137,   137,   137,   137,   137,   137,   137,   137,   137,   137,
00697      139,   137,   137,   137,   137,   137,   137,   137,   137,   137,
00698      137,   137,   137,   137,   137,   140,   140,   140,   140,   140,
00699      140,   141,   142,   142,   142,   142,   142,   143,   143,   143,
00700      145,   146,   144,   147,   147,   147,   147,   147,   147,   147,
00701      147,   148,   148,   149,   149,   150,   150,   150,   150,   150,
00702      150,   151,   151,   152,   152,   153,   153,   153,   153,   153,
00703      153,   153,   153,   154,   154,   154,   154,   154,   154,   154,
00704      154,   155,   155,   156,   156,   156,   157,   157,   157,   157,
00705      157,   158,   158,   159,   160,   159,   161,   161,   161,   161,
00706      161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
00707      161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
00708      161,   161,   162,   162,   162,   162,   162,   162,   162,   162,
00709      162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
00710      162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
00711      162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
00712      162,   162,   162,   163,   163,   163,   163,   163,   163,   163,
00713      163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
00714      163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
00715      163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
00716      163,   163,   163,   163,   164,   163,   163,   163,   165,   166,
00717      166,   166,   166,   166,   166,   167,   167,   167,   167,   168,
00718      168,   169,   169,   169,   169,   169,   169,   169,   169,   169,
00719      170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
00720      170,   170,   172,   171,   173,   174,   173,   175,   173,   176,
00721      177,   177,   178,   178,   179,   179,   179,   180,   180,   180,
00722      180,   180,   180,   180,   180,   180,   181,   180,   182,   180,
00723      180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
00724      183,   180,   180,   180,   180,   180,   180,   184,   185,   180,
00725      186,   187,   180,   180,   180,   180,   188,   189,   180,   190,
00726      180,   191,   192,   180,   193,   180,   194,   180,   195,   196,
00727      180,   180,   180,   180,   180,   197,   198,   198,   198,   198,
00728      199,   199,   199,   200,   200,   201,   201,   202,   202,   203,
00729      203,   203,   203,   205,   206,   204,   207,   207,   207,   208,
00730      208,   208,   208,   208,   208,   210,   211,   209,   212,   213,
00731      209,   214,   215,   215,   215,   216,   216,   217,   217,   218,
00732      218,   218,   219,   219,   220,   220,   221,   221,   221,   222,
00733      223,   223,   224,   225,   226,   227,   227,   228,   228,   229,
00734      229,   230,   230,   231,   231,   232,   232,   233,   233,   234,
00735      235,   234,   236,   234,   237,   237,   237,   237,   238,   239,
00736      239,   239,   239,   240,   241,   241,   241,   241,   242,   242,
00737      242,   242,   242,   242,   242,   242,   242,   242,   242,   243,
00738      244,   245,   245,   246,   247,   246,   246,   248,   248,   249,
00739      249,   249,   249,   249,   249,   249,   249,   249,   250,   250,
00740      250,   250,   250,   251,   251,   252,   253,   253,   254,   254,
00741      255,   255,   256,   256,   257,   258,   258,   259,   260,   259,
00742      261,   261,   261,   262,   262,   263,   264,   264,   264,   265,
00743      265,   265,   265,   266,   266,   266,   267,   267,   268,   268,
00744      269,   269,   270,   270,   270,   271,   271,   272,   272,   273
00745 };
00746 
00747 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
00748 static const short yyr2[] =
00749 {
00750        0,     0,     2,     4,     2,     1,     1,     3,     2,     0,
00751        4,     3,     3,     3,     2,     3,     3,     3,     3,     3,
00752        0,     5,     4,     3,     3,     3,     6,     5,     5,     5,
00753        3,     3,     3,     3,     1,     1,     3,     3,     2,     2,
00754        1,     1,     1,     1,     2,     2,     2,     1,     4,     4,
00755        0,     0,     6,     2,     3,     4,     5,     4,     5,     2,
00756        2,     1,     3,     1,     3,     1,     2,     3,     2,     2,
00757        1,     1,     3,     2,     3,     1,     4,     3,     3,     3,
00758        3,     2,     1,     1,     4,     3,     3,     3,     3,     2,
00759        1,     1,     1,     2,     1,     3,     1,     1,     1,     1,
00760        1,     1,     1,     1,     0,     4,     1,     1,     1,     1,
00761        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00762        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00763        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00764        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00765        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00766        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00767        1,     1,     1,     3,     5,     3,     6,     5,     5,     5,
00768        5,     4,     3,     3,     3,     3,     3,     3,     3,     3,
00769        3,     4,     4,     2,     2,     3,     3,     3,     3,     3,
00770        3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
00771        3,     3,     3,     3,     0,     4,     5,     1,     1,     1,
00772        2,     2,     5,     2,     3,     3,     4,     4,     6,     1,
00773        1,     1,     2,     5,     2,     5,     4,     7,     3,     1,
00774        4,     3,     5,     7,     2,     5,     4,     6,     7,     9,
00775        3,     1,     0,     2,     1,     0,     3,     0,     4,     2,
00776        2,     1,     1,     3,     3,     4,     2,     1,     1,     1,
00777        1,     1,     1,     1,     1,     1,     0,     4,     0,     5,
00778        3,     3,     2,     4,     3,     3,     1,     4,     3,     1,
00779        0,     6,     2,     1,     2,     6,     6,     0,     0,     7,
00780        0,     0,     7,     5,     4,     5,     0,     0,     9,     0,
00781        6,     0,     0,     8,     0,     5,     0,     6,     0,     0,
00782        9,     1,     1,     1,     1,     1,     1,     1,     1,     2,
00783        1,     1,     1,     1,     5,     1,     2,     1,     1,     1,
00784        2,     1,     3,     0,     0,     6,     2,     4,     4,     2,
00785        4,     4,     3,     2,     1,     0,     0,     6,     0,     0,
00786        6,     5,     1,     4,     2,     1,     1,     6,     1,     1,
00787        1,     1,     2,     1,     2,     1,     1,     1,     1,     1,
00788        1,     2,     3,     3,     3,     3,     3,     0,     3,     1,
00789        2,     3,     3,     0,     3,     0,     2,     0,     2,     1,
00790        0,     3,     0,     4,     1,     1,     1,     1,     2,     1,
00791        1,     1,     1,     3,     1,     1,     2,     2,     1,     1,
00792        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00793        1,     1,     1,     1,     0,     4,     2,     4,     2,     6,
00794        4,     4,     2,     4,     2,     2,     1,     0,     1,     1,
00795        1,     1,     1,     1,     3,     3,     1,     3,     1,     1,
00796        2,     1,     1,     1,     2,     2,     1,     1,     0,     5,
00797        1,     2,     2,     1,     3,     3,     1,     1,     1,     1,
00798        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
00799        0,     1,     0,     1,     1,     1,     1,     1,     2,     0
00800 };
00801 
00802 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
00803    doesn't specify something else to do.  Zero means the default is an
00804    error. */
00805 static const short yydefact[] =
00806 {
00807        1,     0,     0,     0,     0,     0,     0,   276,     0,     0,
00808      488,   297,   300,     0,   321,   322,   323,   324,   286,   289,
00809      354,   424,   423,   425,   426,     0,     0,   490,    20,     0,
00810      428,   427,   418,   275,   420,   419,   421,   422,   414,   415,
00811      431,   432,     0,     0,     0,     0,     0,   499,   499,    70,
00812      397,   395,   397,   397,   387,   393,     0,     0,     0,     2,
00813      488,     6,    34,    35,    43,    42,     0,    61,     0,    65,
00814       71,     0,    40,   217,     0,    47,   293,   267,   268,   379,
00815      380,   269,   270,   271,   272,   377,   378,   376,   429,   273,
00816        0,   274,   252,     5,     8,   321,   322,   286,   289,   354,
00817      490,    91,    92,     0,     0,     0,     0,    94,     0,   325,
00818        0,   429,   274,     0,   314,   141,   152,   142,   165,   138,
00819      158,   148,   147,   163,   146,   145,   140,   166,   150,   139,
00820      153,   157,   159,   151,   144,   160,   167,   162,   161,   154,
00821      164,   149,   137,   156,   155,   168,   169,   170,   171,   172,
00822      136,   143,   134,   135,   132,   133,    96,    98,    97,   127,
00823      128,   125,   109,   110,   111,   114,   116,   112,   129,   130,
00824      117,   118,   122,   113,   115,   106,   107,   108,   119,   120,
00825      121,   123,   124,   126,   131,   468,   316,    99,   100,   467,
00826        0,   161,   154,   164,   149,   132,   133,    96,    97,     0,
00827      101,   103,    14,   102,     0,     0,    41,     0,     0,     0,
00828      429,     0,   274,     0,   496,   495,   488,     0,   497,   489,
00829        0,     0,     0,   338,   337,     0,     0,   429,   274,     0,
00830        0,     0,   231,   218,   262,    45,   239,   499,   499,   473,
00831       46,    44,     0,    60,     0,   499,   353,    59,    38,     0,
00832        9,   491,   214,     0,     0,   193,     0,   194,   282,     0,
00833        0,     0,    61,   278,     0,   490,     0,   492,   492,   219,
00834      492,     0,   492,   470,     0,    69,     0,    75,    82,   411,
00835      410,   412,   409,     0,   408,     0,     0,     0,     0,     0,
00836        0,     0,   416,   417,    39,   208,   209,     4,   489,     0,
00837        0,     0,     0,     0,     0,     0,   343,   346,     0,    73,
00838        0,    68,    66,     0,     0,     0,     0,     0,     0,     0,
00839        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00840        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00841        0,   499,     0,     0,     0,   358,   355,   294,   381,     0,
00842        0,   349,    53,   292,     0,   311,    91,    92,    93,   416,
00843      417,     0,   434,   309,   433,     0,   499,     0,     0,     0,
00844      447,   487,   486,   318,   104,     0,   499,   282,   328,   327,
00845        0,   326,     0,     0,   499,     0,     0,     0,     0,     0,
00846        0,     0,     0,   498,     0,     0,   282,     0,   499,     0,
00847      306,   499,   259,     0,     0,   232,   261,     0,   234,   288,
00848        0,   255,   254,   253,   231,   490,   499,   490,     0,    11,
00849       13,    12,     0,   290,     0,     0,     0,     0,     0,     0,
00850        0,   280,    62,   490,   490,   220,   284,   494,   493,   221,
00851      494,   223,   494,   472,   285,   471,    81,     0,   499,     0,
00852      399,   402,   400,   413,   398,   382,   396,   383,   384,   385,
00853      386,     0,   389,   391,     0,   392,     0,     0,     7,    15,
00854       16,    17,    18,    19,    36,    37,   499,     0,    24,    32,
00855        0,    33,     0,    67,    74,    23,   173,   262,    31,   190,
00856      198,   203,   204,   205,   200,   202,   212,   213,   206,   207,
00857      183,   184,   210,   211,     0,   199,   201,   195,   196,   197,
00858      185,   186,   187,   188,   189,   479,   484,   480,   485,   252,
00859      352,     0,   479,   481,   480,   482,   499,   479,   480,   252,
00860      252,   499,   499,    25,   175,    30,   182,    50,    54,     0,
00861      436,     0,     0,    91,    92,    95,     0,     0,   499,     0,
00862      490,   452,   450,   449,   448,   451,   459,   463,   462,   458,
00863      447,     0,     0,   453,   499,   456,   499,   461,   499,     0,
00864      446,     0,     0,   277,   499,   499,   368,   499,   329,   173,
00865      483,   281,     0,   479,   480,   499,     0,     0,     0,   362,
00866        0,   304,   332,   331,   298,   330,   301,   483,   281,     0,
00867      479,   480,     0,     0,   238,   475,     0,   263,   260,   499,
00868        0,     0,   474,   287,     0,    40,     0,   257,     0,   251,
00869      499,     0,     0,     0,     0,     0,   225,    10,     0,   215,
00870        0,    22,   181,    62,     0,   224,     0,   263,    78,    80,
00871        0,   479,   480,     0,     0,   388,   390,   394,   191,   192,
00872      341,     0,   344,   339,   266,     0,    72,     0,     0,     0,
00873        0,   351,    57,   283,     0,     0,   230,   350,    55,   229,
00874      348,    49,   347,    48,   359,   356,   499,   312,     0,     0,
00875      283,   315,     0,     0,   490,     0,   438,     0,   442,   466,
00876        0,   444,   460,     0,   445,   464,   319,   105,   369,   370,
00877      499,   371,     0,   499,   335,     0,     0,   333,     0,   283,
00878        0,     0,     0,   303,   305,   364,     0,     0,     0,     0,
00879      283,     0,   499,     0,   236,   499,   499,     0,     0,   256,
00880        0,   244,   226,     0,   490,   499,   499,   227,     0,    21,
00881      279,   490,    76,     0,   404,   405,   406,   401,   407,   340,
00882        0,     0,     0,   264,   174,   216,    29,   179,   180,    58,
00883        0,    27,   177,    28,   178,    56,     0,     0,    51,     0,
00884      435,   310,   469,   455,     0,   317,   454,   499,   499,   465,
00885        0,   457,   499,   447,     0,     0,   373,   336,     0,     3,
00886      375,     0,   295,     0,   296,     0,   499,     0,     0,   307,
00887      233,     0,   235,   250,     0,   241,   499,   499,   258,     0,
00888        0,   291,   222,   403,   342,     0,   265,    26,   176,     0,
00889        0,     0,     0,   437,     0,   440,   441,   443,     0,     0,
00890      372,     0,    83,    90,     0,   374,     0,   363,   365,   366,
00891      361,   299,   302,     0,   499,   499,     0,   240,     0,   246,
00892      499,   228,   345,   360,   357,     0,   313,   499,     0,    89,
00893        0,   499,     0,   499,   499,     0,   237,   242,     0,   499,
00894        0,   245,    52,   439,   320,   483,    88,     0,   479,   480,
00895      367,   334,   308,   499,     0,   247,   499,    84,   243,     0,
00896      248,   499,   249,     0,     0,     0
00897 };
00898 
00899 static const short yydefgoto[] =
00900 {
00901      893,     1,   375,   376,    60,    61,   422,   253,    62,   207,
00902       63,    64,   538,   676,   821,    65,    66,   261,    67,    68,
00903       69,    70,   208,   107,   108,   200,   201,   202,   572,   525,
00904      188,    72,   424,   234,   266,   666,   667,   235,   617,   243,
00905      244,   413,   618,   728,   608,   405,   267,   481,    73,   204,
00906      433,   628,   220,   718,   221,   719,   602,   843,   542,   539,
00907      769,   368,   370,   571,   783,   256,   380,   594,   706,   707,
00908      226,   652,   307,   476,   751,    75,    76,   353,   532,   767,
00909      531,   766,   392,   590,   840,   575,   700,   785,   789,    77,
00910       78,    79,    80,    81,    82,    83,   289,   461,    84,   291,
00911      285,   283,   454,   644,   643,   747,    85,   284,    86,    87,
00912      210,    89,   211,   212,   363,   541,   561,   562,   563,   564,
00913      565,   566,   567,   568,   569,   779,   688,   190,   369,   271,
00914      268,   239,   113,   546,   520,   373,   217,   252,   439,   381,
00915      219,    93
00916 };
00917 
00918 static const short yypact[] =
00919 {
00920   -32768,  2226,  5380,  7848,  8145,  3749,  5039,-32768,  6719,  6719,
00921     3630,-32768,-32768,  7947,  5586,  5586,-32768,-32768,  5586,  4382,
00922     4485,-32768,-32768,-32768,-32768,  6719,  4923,   -34,-32768,   -12,
00923   -32768,-32768,  3867,  3970,-32768,-32768,  4073,-32768,-32768,-32768,
00924   -32768,-32768,  7543,  7543,    52,  3040,  6719,  6822,  7543,  8244,
00925     4807,-32768,-32768,-32768,    -9,     2,   226,  7646,  7543,-32768,
00926      329,   725,   430,-32768,-32768,    87,    42,-32768,    36,  8046,
00927   -32768,   110,  9349,    14,    41,    96,    62,-32768,-32768,   127,
00928   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    29,-32768,
00929      160,   277,    19,-32768,   725,-32768,-32768,-32768,   129,   131,
00930      -34,   355,   383,  6719,   117,  3171,   415,-32768,    30,-32768,
00931      167,-32768,-32768,    19,-32768,-32768,-32768,-32768,-32768,-32768,
00932   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00933   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   138,   157,
00934      333,   462,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00935   -32768,-32768,-32768,-32768,   473,   477,   478,-32768,   513,-32768,
00936   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00937   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00938   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00939      523,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  4807,
00940   -32768,-32768,   121,-32768,  2468,   215,   430,    63,   169,   346,
00941       43,   204,    73,    63,-32768,-32768,   329,   106,-32768,   166,
00942     6719,  6719,   275,-32768,-32768,   439,   322,   103,   115,  7543,
00943     7543,  7543,-32768,  9349,   285,-32768,-32768,   316,   324,-32768,
00944   -32768,-32768,  5272,-32768,  5689,  5586,-32768,-32768,-32768,   326,
00945   -32768,-32768,   320,   334,  3302,-32768,   459,   397,   319,  3040,
00946      348,   353,   357,   430,  7543,   -34,   390,   158,   224,-32768,
00947      321,   359,   224,-32768,   463,-32768,   512,   539,   571,-32768,
00948   -32768,-32768,-32768,   299,-32768,   423,   510,   650,   418,   532,
00949      425,   584,   465,   468,-32768,-32768,-32768,-32768,  3527,  6719,
00950     6719,  6719,  6719,  5380,  6719,  6719,-32768,-32768,  6925,-32768,
00951     3040,  8244,   426,  6925,  7543,  7543,  7543,  7543,  7543,  7543,
00952     7543,  7543,  7543,  7543,  7543,  7543,  7543,  7543,  7543,  7543,
00953     7543,  7543,  7543,  7543,  7543,  7543,  7543,  7543,  7543,  7543,
00954     8406,  6822,  8472,  8538,  8538,-32768,-32768,-32768,-32768,  7646,
00955     7646,-32768,   454,-32768,   320,   430,-32768,   576,-32768,-32768,
00956   -32768,   329,-32768,-32768,-32768,  8604,  6822,  8538,  2468,  6719,
00957      573,-32768,-32768,-32768,-32768,   554,   557,   100,-32768,-32768,
00958     2590,   563,  7543,  8670,  6822,  8736,  7543,  7543,  2834,   553,
00959     3424,  7028,   569,-32768,    11,    11,   119,  8802,  6822,  8868,
00960   -32768,   498,-32768,  7543,  5792,-32768,-32768,  5895,-32768,-32768,
00961      505,  5483,-32768,-32768,    87,   -34,   522,     3,   530,-32768,
00962   -32768,-32768,  5039,-32768,  7543,  3302,   537,  8670,  8736,  7543,
00963      534,-32768,   540,   -34,  9196,-32768,-32768,  7131,-32768,-32768,
00964     7543,-32768,  7543,-32768,-32768,-32768,   576,  8934,  6822,  9000,
00965   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00966   -32768,    35,-32768,-32768,   531,-32768,  7543,  7543,   725,-32768,
00967   -32768,-32768,-32768,-32768,-32768,-32768,    22,  7543,-32768,   542,
00968      544,-32768,   547,-32768,-32768,-32768,  8340,-32768,-32768,   397,
00969     1935,  1935,  1935,  1935,   870,   870,  9470,  9418,  1935,  1935,
00970     9401,  9401,   502,   502,  9332,   870,   870,   879,   879,   888,
00971       38,    38,   397,   397,   397,  2337,  4588,  2056,  4691,   131,
00972   -32768,   552,   401,-32768,   413,-32768,  4485,-32768,-32768,  1955,
00973     1955,    22,    22,-32768,  9349,-32768,  9349,-32768,-32768,   329,
00974   -32768,  6719,  2468,   467,   315,-32768,   131,   559,   131,   578,
00975       88,   574,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00976      626,  2468,   329,-32768,   561,-32768,   565,   642,   580,   649,
00977   -32768,  5155,  5039,-32768,  7234,   692,-32768,   520,-32768,  2317,
00978     4176,  4279,   587,   273,   279,   692,   705,   709,  7543,   597,
00979       63,-32768,-32768,-32768,-32768,-32768,-32768,    46,    58,   601,
00980      145,   150,  6719,   635,-32768,-32768,  7543,   285,-32768,   604,
00981     7543,   285,-32768,-32768,  7543,  9248,    17,-32768,   607,-32768,
00982      609,   608,  5998,  8538,  8538,   612,-32768,-32768,  6719,  9349,
00983      619,-32768,  9349,   528,   616,-32768,  7543,-32768,   467,   315,
00984      620,    84,   330,  3302,   703,-32768,-32768,-32768,   397,   397,
00985   -32768,  7749,-32768,-32768,-32768,  7337,-32768,  7543,  7543,  7646,
00986     7543,-32768,   454,   447,  7646,  7646,-32768,-32768,   454,-32768,
00987   -32768,-32768,-32768,-32768,-32768,-32768,    22,-32768,   329,   737,
00988   -32768,-32768,   627,  7543,   -34,   741,-32768,   626,-32768,-32768,
00989      303,-32768,-32768,   163,-32768,-32768,-32768,-32768,   542,-32768,
00990      669,-32768,  2937,   748,-32768,  6719,   751,-32768,  7543,   337,
00991     7543,  7543,   759,-32768,-32768,-32768,  7440,  2712,  3424,  3424,
00992      153,    11,   498,  6101,-32768,   498,   498,  6204,   646,-32768,
00993     6307,-32768,-32768,    87,     3,   131,   131,-32768,    54,-32768,
00994   -32768,  9196,   581,   651,-32768,-32768,-32768,-32768,-32768,-32768,
00995      665,  3424,  7543,   648,  9349,  9349,-32768,  9349,  9349,-32768,
00996     7646,-32768,  9349,-32768,  9349,-32768,  3424,  3302,-32768,  2468,
00997   -32768,-32768,-32768,-32768,   652,-32768,-32768,   654,   580,-32768,
00998      574,-32768,   580,   573,  8343,    63,-32768,-32768,  3424,-32768,
00999   -32768,    63,-32768,  7543,-32768,  7543,   142,   765,   766,-32768,
01000   -32768,  7543,-32768,-32768,  7543,-32768,   656,   657,-32768,  7543,
01001      653,-32768,-32768,-32768,-32768,   774,-32768,-32768,  9349,   776,
01002      667,  3302,   781,-32768,   303,-32768,-32768,-32768,  2468,   738,
01003   -32768,   590,   539,   571,  2468,-32768,  2590,-32768,-32768,-32768,
01004   -32768,-32768,-32768,  3424,  9269,   498,  6410,-32768,  6513,-32768,
01005      498,-32768,-32768,-32768,-32768,   672,-32768,   580,   784,   576,
01006     9066,  6822,  9132,   557,   520,   786,-32768,-32768,  7543,   671,
01007     7543,-32768,-32768,-32768,-32768,    76,   315,   683,    94,   137,
01008   -32768,-32768,-32768,   498,  6616,-32768,   498,   581,-32768,  7543,
01009   -32768,   498,-32768,   811,   812,-32768
01010 };
01011 
01012 static const short yypgoto[] =
01013 {
01014   -32768,-32768,  -307,   890,-32768,    28,-32768,-32768,   814,    65,
01015       25,-32768,  -551,-32768,-32768,    51,   -11,  -181,    69,   745,
01016   -32768,   -37,  1085,   -67,   813,     9,   -21,-32768,-32768,    47,
01017   -32768,   -14,-32768,  1352,  -299,   -13,  -472,    95,-32768,    12,
01018   -32768,-32768,-32768,-32768,    -5,   220,    33,  -294,    23,-32768,
01019   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
01020   -32768,-32768,-32768,-32768,-32768,   187,  -207,  -379,   -48,  -536,
01021      168,  -491,-32768,-32768,-32768,  -234,-32768,   742,-32768,-32768,
01022   -32768,-32768,  -371,-32768,-32768,   -42,-32768,-32768,-32768,-32768,
01023   -32768,-32768,   746,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
01024   -32768,   586,  -239,-32768,-32768,-32768,    -3,-32768,-32768,-32768,
01025      917,   815,  1185,  1055,-32768,-32768,    44,   266,   141,-32768,
01026     -666,   144,-32768,  -610,-32768,  -362,  -512,-32768,-32768,-32768,
01027        7,  -372,   500,  -280,-32768,-32768,   -43,   -85,    91,    10,
01028      773,   678
01029 };
01030 
01031 
01032 #define YYLAST          9585
01033 
01034 
01035 static const short yytable[] =
01036 {
01037      233,   233,   223,   203,   233,   250,   388,   246,   570,   236,
01038      236,   417,   275,   236,   186,   354,   596,   297,   586,   488,
01039      218,   238,   238,   203,   781,   238,   109,   109,   255,   257,
01040       94,   361,   247,   233,   233,   612,   109,   358,   592,   703,
01041      674,   675,   521,   295,   296,   345,   456,   237,   237,   712,
01042      462,   237,   187,   187,   691,   272,   694,   670,   672,   282,
01043      519,   549,   526,   529,   530,   232,   232,   547,   612,   232,
01044      218,   -86,   109,   187,   213,   216,   378,   778,   430,   351,
01045      782,   270,   294,   -88,   623,   582,   246,   548,   345,   -86,
01046      304,   305,   109,   450,   650,  -325,   251,   187,   265,   599,
01047      351,   403,   314,   519,   352,   526,   258,   -85,   254,   -77,
01048      240,   759,  -430,   241,   262,   306,   593,   765,   364,   548,
01049      288,   390,   340,   391,   304,   305,  -430,   624,   -83,   482,
01050      651,   290,   -83,   251,   451,   452,  -325,   362,  -325,   346,
01051      -90,   214,   215,   727,   -89,   308,   -83,   245,   548,   640,
01052      -87,   337,   338,   339,   -86,   -75,   387,   702,   781,   391,
01053      214,   215,   309,   341,   645,   342,   -88,   356,   379,   548,
01054      -85,   357,   -78,   389,  -479,   -87,   -90,   343,   -84,   811,
01055      435,   -86,   346,   429,   -80,   768,  -480,   -77,    74,    74,
01056      110,   110,   -77,   214,   215,   209,   209,   209,   570,   -85,
01057      225,   209,   209,   -89,  -479,   209,   -86,   -86,   282,   -77,
01058      -77,   -83,   209,   313,   857,   233,   233,   295,   251,  -424,
01059      344,    51,   646,   -90,   -85,   -85,   218,   -89,   233,   -75,
01060      233,   233,    74,   209,   209,   679,   276,   236,  -423,   236,
01061      236,   -82,   -87,   349,   209,   -81,   187,   374,   365,   238,
01062      434,   238,   238,   -85,   685,   557,   276,   242,   -87,   245,
01063      838,   -84,  -424,   670,   672,   825,   826,   -87,   -87,   377,
01064      827,   -77,   382,   558,   483,   237,   -79,   237,   416,   -76,
01065      699,  -423,   292,   293,   437,   394,   395,   386,   438,   366,
01066      209,   367,    74,   232,   233,   232,   414,   393,   545,   486,
01067      489,   490,   491,   492,   493,   494,   495,   496,   497,   498,
01068      499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
01069      509,   510,   511,   512,   513,   514,   468,   233,   262,   396,
01070      621,   473,   625,   478,   109,   534,   536,   410,   485,   412,
01071      415,   480,   799,   735,   736,   873,   480,   400,   634,   635,
01072      440,   612,   233,   780,   438,   -79,   710,   450,   612,   441,
01073      350,   443,   711,   445,   469,   470,   471,   472,   579,   403,
01074      233,   540,   534,   536,   533,   535,   -85,   233,   419,   262,
01075      -90,  -476,   -87,   717,   233,   420,   421,   518,   734,   233,
01076      233,    74,   265,   233,   556,   557,  -281,   615,   451,   452,
01077      453,   627,   429,   -82,   595,   595,   619,   209,   209,  -477,
01078      629,   609,   518,   558,  -425,   632,   559,   265,   620,   203,
01079      793,   570,   -89,   233,   589,   839,   233,   383,   233,   209,
01080      518,   209,   209,   -79,   233,   265,  -418,  -281,   -79,  -281,
01081      -84,    74,   404,  -480,   518,   -81,    74,   442,   423,   265,
01082      407,   438,   648,   649,   425,   -79,   -79,  -425,   408,   214,
01083      215,   314,   822,   233,  -421,   682,   304,   305,   384,   187,
01084      385,   359,   360,   431,   518,  -476,   612,  -418,   432,  -418,
01085      444,   450,   -63,  -476,   664,    74,   209,   209,   209,   209,
01086       74,   209,   209,  -483,   518,   209,   665,    74,   276,   265,
01087      209,    92,    92,  -477,   -85,  -421,   661,  -421,    92,    92,
01088       92,  -477,   612,   436,    92,    92,   -87,   446,    92,   459,
01089      397,   858,   451,   452,   455,    92,   463,   -77,   209,   466,
01090      760,   662,   467,   661,   705,   702,   209,   209,   668,   -79,
01091      427,   671,   673,  -426,   537,    92,    92,    92,  -483,   677,
01092      -84,   697,   484,   209,  -428,    74,   209,    92,  -427,  -418,
01093      233,   398,   877,   399,   573,   574,   314,    74,   450,   203,
01094      391,   209,   686,   -76,   233,    74,   578,    74,   834,   591,
01095      696,   384,   548,   428,   836,   209,  -426,  -483,   681,  -483,
01096      450,  -483,   233,   447,  -421,  -479,   233,  -428,   209,   774,
01097      233,  -427,  -418,    92,   371,    92,   678,   480,   233,   451,
01098      452,   457,    74,   335,   336,   337,   338,   339,   187,   187,
01099     -429,   604,   741,   551,   603,   552,   553,   554,   555,   609,
01100      613,   451,   452,   460,   448,   209,   449,  -421,   286,   287,
01101      223,   233,   464,   754,   755,   757,   758,   372,   622,   810,
01102      762,   764,  -274,   -64,   -72,   626,   812,  -282,   631,   633,
01103      647,  -429,  -283,  -429,   556,   557,   -72,   721,  -262,   233,
01104      655,   860,   656,   733,   109,   663,   551,   683,   552,   553,
01105      554,   555,   680,   558,   756,   465,   559,   687,   770,   761,
01106      763,   690,   692,  -274,   757,  -274,   762,   764,  -282,   695,
01107     -282,   560,   233,  -283,    92,  -283,   693,   702,   450,   233,
01108      709,   458,   861,   233,   862,   713,   233,   556,   557,   714,
01109       92,    92,   805,   716,   720,   269,   273,   230,   209,    74,
01110      723,   595,   729,   732,   807,   730,   558,   737,   233,   559,
01111      739,   740,    92,   742,    92,    92,   818,   771,    74,   451,
01112      452,   775,   772,   784,    92,   744,   745,   788,   746,    92,
01113      806,   792,    40,    41,   299,   300,   301,   302,   303,   794,
01114      791,   808,   813,   814,  -263,   841,   842,   823,   851,   818,
01115      824,   233,   846,   848,   852,   817,   853,   844,   854,   209,
01116      233,   856,   859,   872,   874,   233,   882,   884,    92,    92,
01117       92,    92,    92,    92,    92,    92,   887,   109,    92,   209,
01118       92,   894,   895,    92,   312,   209,   881,   114,   347,   750,
01119      189,   880,   206,   206,   206,   348,   684,   828,   776,   724,
01120       74,   777,   233,   298,   233,     0,     0,     0,   225,   248,
01121      731,    92,     0,     0,     0,     0,   209,   233,     0,    92,
01122       92,   209,   209,   869,   233,     0,   233,     0,     0,     0,
01123      263,     0,     0,     0,     0,     0,    92,     0,    92,    92,
01124      233,     0,     0,     0,     0,   233,     0,     0,     0,     0,
01125       92,     0,     0,     0,    92,     0,     0,     0,    92,    74,
01126       92,    59,   209,     0,     0,     0,     0,     0,    92,     0,
01127        0,     0,     0,     0,    74,    74,    74,   518,     0,     0,
01128        0,    92,   265,     0,     0,   406,   406,   355,    88,    88,
01129      111,   111,   111,   418,     0,    92,     0,     0,     0,     0,
01130      227,     0,     0,     0,   314,   260,     0,     0,    74,     0,
01131        0,     0,   800,   314,     0,   802,   803,   209,    92,   327,
01132      328,     0,   314,    74,    74,     0,    74,     0,   327,   328,
01133        0,     0,    88,     0,     0,     0,   277,   327,   328,     0,
01134        0,   831,     0,     0,     0,    74,     0,     0,   332,   333,
01135      334,   335,   336,   337,   338,   339,   277,     0,     0,   334,
01136      335,   336,   337,   338,   339,   260,     0,     0,     0,   335,
01137      336,   337,   338,   339,     0,     0,     0,     0,    74,     0,
01138        0,     0,     0,     0,     0,    74,     0,     0,     0,   269,
01139        0,    74,    88,    74,     0,     0,   847,   849,     0,     0,
01140       74,     0,     0,     0,   206,   206,     0,     0,     0,     0,
01141        0,    92,    92,     0,   269,     0,     0,     0,   209,     0,
01142        0,     0,     0,     0,   576,     0,    91,    91,   112,   112,
01143        0,    92,   269,     0,   866,   867,     0,     0,   228,     0,
01144      871,     0,     0,     0,     0,     0,   269,     0,     0,   406,
01145        0,     0,     0,     0,     0,     0,    71,    71,     0,   885,
01146        0,     0,     0,     0,   406,     0,     0,     0,   224,     0,
01147       91,     0,    92,   888,   278,     0,   890,     0,     0,     0,
01148        0,   892,     0,   206,   206,   206,   206,     0,   474,   475,
01149        0,    88,    92,     0,   278,     0,   269,     0,    92,     0,
01150       71,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01151        0,     0,     0,    92,   426,     0,     0,     0,     0,   260,
01152        0,     0,     0,     0,   653,     0,     0,     0,     0,    92,
01153       91,     0,     0,     0,    92,    92,     0,     0,     0,     0,
01154        0,    88,     0,     0,     0,     0,    88,     0,     0,     0,
01155        0,     0,     0,   550,     0,     0,    90,    90,     0,     0,
01156       71,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01157      260,     0,    92,     0,   669,    92,     0,   669,   669,   653,
01158      653,     0,     0,     0,     0,    88,     0,    92,    92,    92,
01159       88,     0,     0,     0,     0,   263,   669,    88,   277,     0,
01160       90,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01161        0,     0,   689,     0,   689,     0,   689,     0,     0,     0,
01162        0,    92,   701,   704,     0,   704,     0,     0,     0,    91,
01163       92,     0,     0,   704,     0,     0,    92,    92,     0,    92,
01164      577,     0,     0,     0,     0,     0,     0,     0,   585,     0,
01165      587,     0,     0,     0,     0,    88,     0,   406,    92,    71,
01166       90,     0,     0,     0,     0,     0,     0,    88,   406,     0,
01167        0,     0,     0,     0,     0,    88,     0,    88,     0,    91,
01168        0,     0,     0,     0,    91,   630,     0,     0,     0,     0,
01169        0,    92,     0,     0,     0,     0,     0,     0,    92,     0,
01170        0,     0,     0,     0,    92,     0,    92,     0,     0,    71,
01171        0,     0,    88,    92,    71,     0,     0,     0,     0,     0,
01172        0,     0,     0,    91,   653,   206,     0,     0,    91,     0,
01173        0,    92,     0,     0,     0,    91,   278,     0,     0,     0,
01174        0,     0,     0,     0,     0,     0,     0,     0,   786,     0,
01175        0,   790,     0,    71,     0,     0,     0,     0,    71,    90,
01176        0,     0,     0,     0,     0,    71,     0,     0,     0,     0,
01177      406,     0,     0,   406,   406,     0,     0,     0,     0,     0,
01178        0,     0,     0,   669,   669,     0,   206,     0,     0,     0,
01179        0,     0,     0,    91,     0,     0,     0,     0,     0,     0,
01180        0,     0,     0,     0,     0,    91,     0,     0,     0,    90,
01181        0,     0,   738,    91,    90,    91,     0,     0,     0,     0,
01182        0,     0,     0,    71,     0,   689,   689,     0,     0,    88,
01183      689,     0,     0,     0,     0,    71,     0,     0,     0,     0,
01184        0,     0,     0,    71,   704,    71,     0,     0,    88,     0,
01185       91,     0,     0,    90,   406,   406,     0,     0,    90,     0,
01186        0,     0,     0,     0,     0,    90,     0,     0,     0,     0,
01187        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01188       71,     0,     0,     0,     0,     0,     0,     0,     0,   206,
01189        0,     0,   406,   406,     0,     0,     0,     0,   406,     0,
01190        0,     0,     0,   743,     0,   689,     0,     0,     0,   269,
01191        0,   576,   704,     0,     0,     0,     0,   406,     0,     0,
01192        0,     0,     0,    90,     0,     0,     0,     0,     0,     0,
01193       88,   406,     0,     0,   406,    90,     0,     0,   227,   406,
01194        0,     0,     0,    90,     0,    90,     0,     0,     0,     0,
01195        0,   401,   402,     0,     0,     0,     0,     0,     0,     0,
01196        0,     0,   787,     0,     0,     0,     0,    91,     0,     0,
01197        0,     0,     0,     0,     0,     0,     0,   796,   797,   798,
01198       90,     0,     0,     0,     0,     0,    91,     0,     0,    88,
01199        0,     0,     0,     0,     0,     0,     0,    71,     0,     0,
01200        0,     0,     0,     0,    88,    88,    88,     0,     0,     0,
01201        0,   815,     0,     0,     0,     0,    71,     0,     0,     0,
01202        0,     0,     0,     0,     0,     0,   819,   820,     0,     0,
01203      479,     0,     0,     0,     0,   487,     0,     0,    88,     0,
01204        0,     0,     0,     0,     0,     0,     0,     0,   835,     0,
01205        0,     0,     0,    88,    88,     0,    88,     0,     0,     0,
01206        0,     0,     0,     0,     0,     0,     0,     0,    91,   748,
01207        0,   832,     0,     0,     0,    88,   228,     0,     0,     0,
01208        0,   855,     0,     0,     0,     0,     0,     0,     0,     0,
01209        0,     0,     0,     0,   863,     0,   864,    90,    71,     0,
01210        0,     0,     0,   865,     0,     0,   224,     0,    88,     0,
01211        0,     0,     0,   487,     0,    88,    90,     0,     0,     0,
01212        0,    88,     0,    88,     0,   605,   607,    91,     0,   611,
01213       88,     0,     0,   616,     0,     0,     0,     0,     0,     0,
01214        0,     0,    91,    91,    91,     0,     0,     0,     0,     0,
01215        0,     0,     0,     0,     0,     0,     0,    71,     0,   637,
01216        0,     0,   611,     0,   637,     0,     0,     0,     0,     0,
01217        0,     0,    71,    71,    71,     0,    91,     0,     0,     0,
01218        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01219        0,    91,    91,     0,    91,     0,     0,     0,    90,   654,
01220        0,     0,     0,     0,     0,     0,    71,     0,     0,   833,
01221        0,     0,     0,    91,     0,     0,     0,     0,     0,     0,
01222        0,    71,    71,     0,    71,     0,     0,     0,     0,     0,
01223        0,     0,     0,     0,     0,     0,     0,     0,     0,   830,
01224        0,     0,     0,    71,     0,     0,    91,     0,     0,     0,
01225        0,     0,     0,    91,     0,     0,     0,    90,     0,    91,
01226        0,    91,     0,     0,     0,     0,     0,     0,    91,     0,
01227        0,     0,    90,    90,    90,     0,    71,     0,     0,     0,
01228        0,     0,     0,    71,     0,     0,     0,     0,     0,    71,
01229        0,    71,     0,     0,     0,     0,   698,     0,    71,     0,
01230        0,     0,     0,     0,     0,     0,    90,     0,     0,     0,
01231      715,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01232        0,    90,    90,     0,    90,  -499,     0,     0,   722,     0,
01233        0,     0,   725,  -499,  -499,  -499,   726,     0,  -499,  -499,
01234     -499,     0,  -499,    90,   607,     0,     0,     0,     0,     0,
01235        0,     0,  -499,     0,     0,     0,     0,     0,     0,     0,
01236        0,  -499,  -499,     0,  -499,  -499,  -499,  -499,  -499,   314,
01237   -32768,-32768,-32768,-32768,   319,   320,    90,   753,-32768,-32768,
01238        0,     0,     0,    90,   327,   328,     0,     0,     0,    90,
01239        0,    90,     0,     0,     0,     0,     0,     0,    90,     0,
01240        0,     0,     0,     0,     0,   773,  -499,     0,     0,     0,
01241        0,   330,   331,   332,   333,   334,   335,   336,   337,   338,
01242      339,     0,     0,     0,     0,     0,  -281,     0,     0,     0,
01243     -499,     0,     0,     0,  -281,  -281,  -281,     0,   637,     0,
01244     -281,  -281,     0,  -281,     0,   611,  -499,     0,     0,  -499,
01245     -499,     0,   611,   245,     0,  -499,  -499,     0,     0,     0,
01246        0,     0,  -281,  -281,     0,  -281,  -281,  -281,  -281,  -281,
01247        0,     0,     0,     0,   816,     0,     0,     0,     0,     0,
01248        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01249     -281,  -281,  -281,  -281,  -281,  -281,  -281,  -281,  -281,  -281,
01250     -281,  -281,  -281,     0,     0,  -281,  -281,  -281,     0,   660,
01251        0,     0,     0,     0,     0,     0,     0,   837,     0,     0,
01252        0,     0,     0,     0,     0,     0,   845,     0,     0,   -88,
01253     -281,   850,  -281,  -281,  -281,  -281,  -281,  -281,  -281,  -281,
01254     -281,  -281,     0,     0,     0,     0,     0,  -281,  -281,     0,
01255     -281,  -281,   -80,     0,     0,     0,  -281,  -281,     0,     0,
01256        0,     0,     0,     0,     0,     0,     0,     0,   607,     0,
01257      611,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01258        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01259      883,     0,   886,     0,     0,     0,  -499,     2,     0,     3,
01260        4,     5,     6,     7,     0,     0,   611,     8,     9,     0,
01261        0,   891,    10,     0,    11,    12,    13,    14,    15,    16,
01262       17,     0,     0,     0,     0,    18,    19,    20,    21,    22,
01263       23,    24,     0,     0,    25,     0,     0,     0,     0,     0,
01264       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
01265       36,    37,    38,    39,     0,    40,    41,     0,    42,    43,
01266        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01267        0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
01268        0,    45,    46,     0,    47,    48,     0,    49,     0,    50,
01269       51,    52,    53,    54,    55,     0,     0,     0,     0,     0,
01270        0,     0,     0,     0,     0,     0,     0,  -483,     0,     0,
01271        0,     0,    56,    57,    58,  -483,  -483,  -483,     0,     0,
01272        0,  -483,  -483,     0,  -483,     0,  -499,  -4