lib_ruby_parser/parser/
parse.rs

1/* A Bison parser, made by GNU Bison 3.8.2.  */
2
3/* Skeleton implementation for Bison LALR(1) parsers in Rust
4
5   Copyright (C) 2007-2015, 2018-2020 Free Software Foundation, Inc.
6
7   This program is free software: you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation, either version 3 of the License, or
10   (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
19
20/* As a special exception, you may create a larger work that contains
21   part or all of the Bison parser skeleton and distribute that work
22   under terms of your choice, so long as that work isn't itself a
23   parser generator using the skeleton or a modified version thereof
24   as a parser skeleton.  Alternatively, if you modify or redistribute
25   the parser skeleton itself, you may (at your option) remove this
26   special exception, which will cause the skeleton and the resulting
27   Bison output files to be licensed under the GNU General Public
28   License without this special exception.
29
30   This special exception was added by the Free Software Foundation in
31   version 2.2 of Bison.  */
32
33/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
34   especially those whose name start with YY_ or yy_.  They are
35   private implementation details that can be changed or removed.  */
36
37
38
39
40use std::convert::TryInto;
41
42
43/* "%code use" blocks.  */
44/* "src/parser/parse.y":53  */
45
46
47use alloc_from_pool::{Pool, PoolValue};
48use crate::{ParserOptions, ParserResult};
49use crate::{Token};
50use crate::{Lexer, Builder, CurrentArgStack, StaticEnvironment, MaxNumparamStack, VariablesStack};
51use crate::lex_states::*;
52use crate::{SharedContext as ParserContext, context::Context};
53use crate::builder::{LoopType, KeywordCmd, LogicalOp, PKwLabel, ArgsType};
54use crate::builder::clone_value;
55use crate::parse_value::ParseValue as Value;
56use crate::parse_value::*;
57use crate::Node;
58use crate::nodes;
59use crate::{Diagnostic, DiagnosticMessage, ErrorLevel};
60use crate::error::Diagnostics;
61use crate::Loc;
62
63
64/* "src/parser/parse.rs":65  */
65
66
67/// A Bison parser, automatically generated from src/parser/parse.y.
68#[derive(Debug)]
69pub struct  Parser  {
70    /// Lexer that is used to get tokens
71    pub yylexer: Lexer,
72    // true if verbose error messages are enabled.
73    #[allow(dead_code)]
74    yy_error_verbose: bool,
75    // number of errors so far
76    yynerrs: i32,
77
78    yyerrstatus_: i32,
79
80    /* "%code parser_fields" blocks.  */
81/* "src/parser/parse.y":10  */
82
83    result: Option<Box<Node>>,
84    builder: Builder,
85    current_arg_stack: CurrentArgStack,
86    /// Stack of sets of variables in current scopes.
87    /// Each stack item represents locals in the scope.
88    ///
89    /// You can use it to pre-define some locals and parse
90    /// your input as if these locals exist.
91    ///
92    /// For example, you can parse the following code
93    ///
94    /// ```text
95    /// a = b + c
96    /// ```
97    ///
98    /// as
99    ///
100    /// ```text
101    /// Send(LocalVar(a), "+", LocalVar(b))
102    /// ```
103    ///
104    /// by declaring `a` and `b` as locals using
105    ///
106    /// ```text
107    /// parser.static_env.declare("a")
108    /// parser.static_env.declare("b")
109    /// parser.parse()
110    /// ```
111    pub static_env: StaticEnvironment,
112    context: ParserContext,
113    last_token_type: i32,
114    max_numparam_stack: MaxNumparamStack,
115    pattern_variables: VariablesStack,
116    pattern_hash_keys: VariablesStack,
117    tokens: Vec<Token>,
118    diagnostics: Diagnostics,
119    record_tokens: bool,
120
121    #[allow(dead_code)]
122    tokens_pool: Pool<Token>,
123
124/* "src/parser/parse.rs":125  */
125
126}
127
128#[inline]
129fn i32_to_usize(v: i32) -> usize {
130    v as usize
131}
132
133/// Maps token ID into human-readable name
134pub fn token_name(id: i32) -> &'static str { /* ' */
135    let first_token = Lexer::YYerror;
136    if id > first_token + 1 {
137        let pos: usize = (id - first_token + 1)
138            .try_into()
139            .expect("failed to cast token id into usize, is it negative?");
140        Lexer::TOKEN_NAMES[pos]
141    } else if id == 0 {
142        "EOF"
143    } else {
144        panic!("token_name fails, {} (first token = {})", id, first_token)
145    }
146}
147
148/// Local alias
149type YYLoc = Loc;
150
151impl  Parser  {
152    // Version number for the Bison executable that generated this parser.
153    #[allow(dead_code)]
154    const BISON_VERSION: &'static str = "30802";
155
156}
157
158
159fn make_yylloc(rhs: &YYStack, n: usize) -> YYLoc {
160    if 0 < n {
161        YYLoc {
162            begin: rhs.location_at(n - 1).begin,
163            end: rhs.location_at(0).end
164        }
165    } else {
166        YYLoc {
167            begin: rhs.location_at(0).end,
168            end: rhs.location_at(0).end
169        }
170    }
171}
172
173#[derive(Debug, Clone, PartialEq, Eq)]
174pub struct SymbolKind { value: i32 }
175
176impl SymbolKind {
177
178
179
180    #[allow(non_upper_case_globals)]
181    const S_YYEOF: i32 = 0;        /* "end-of-input"  */
182
183    #[allow(non_upper_case_globals)]
184    const S_YYerror: i32 = 1;      /* error  */
185
186    #[allow(non_upper_case_globals)]
187    const S_YYUNDEF: i32 = 2;      /* "invalid token"  */
188
189    #[allow(non_upper_case_globals)]
190    const S_kCLASS: i32 = 3;       /* "`class'"  */
191
192    #[allow(non_upper_case_globals)]
193    const S_kMODULE: i32 = 4;      /* "`module'"  */
194
195    #[allow(non_upper_case_globals)]
196    const S_kDEF: i32 = 5;         /* "`def'"  */
197
198    #[allow(non_upper_case_globals)]
199    const S_kUNDEF: i32 = 6;       /* "`undef'"  */
200
201    #[allow(non_upper_case_globals)]
202    const S_kBEGIN: i32 = 7;       /* "`begin'"  */
203
204    #[allow(non_upper_case_globals)]
205    const S_kRESCUE: i32 = 8;      /* "`rescue'"  */
206
207    #[allow(non_upper_case_globals)]
208    const S_kENSURE: i32 = 9;      /* "`ensure'"  */
209
210    #[allow(non_upper_case_globals)]
211    const S_kEND: i32 = 10;        /* "`end'"  */
212
213    #[allow(non_upper_case_globals)]
214    const S_kIF: i32 = 11;         /* "`if'"  */
215
216    #[allow(non_upper_case_globals)]
217    const S_kUNLESS: i32 = 12;     /* "`unless'"  */
218
219    #[allow(non_upper_case_globals)]
220    const S_kTHEN: i32 = 13;       /* "`then'"  */
221
222    #[allow(non_upper_case_globals)]
223    const S_kELSIF: i32 = 14;      /* "`elsif'"  */
224
225    #[allow(non_upper_case_globals)]
226    const S_kELSE: i32 = 15;       /* "`else'"  */
227
228    #[allow(non_upper_case_globals)]
229    const S_kCASE: i32 = 16;       /* "`case'"  */
230
231    #[allow(non_upper_case_globals)]
232    const S_kWHEN: i32 = 17;       /* "`when'"  */
233
234    #[allow(non_upper_case_globals)]
235    const S_kWHILE: i32 = 18;      /* "`while'"  */
236
237    #[allow(non_upper_case_globals)]
238    const S_kUNTIL: i32 = 19;      /* "`until'"  */
239
240    #[allow(non_upper_case_globals)]
241    const S_kFOR: i32 = 20;        /* "`for'"  */
242
243    #[allow(non_upper_case_globals)]
244    const S_kBREAK: i32 = 21;      /* "`break'"  */
245
246    #[allow(non_upper_case_globals)]
247    const S_kNEXT: i32 = 22;       /* "`next'"  */
248
249    #[allow(non_upper_case_globals)]
250    const S_kREDO: i32 = 23;       /* "`redo'"  */
251
252    #[allow(non_upper_case_globals)]
253    const S_kRETRY: i32 = 24;      /* "`retry'"  */
254
255    #[allow(non_upper_case_globals)]
256    const S_kIN: i32 = 25;         /* "`in'"  */
257
258    #[allow(non_upper_case_globals)]
259    const S_kDO: i32 = 26;         /* "`do'"  */
260
261    #[allow(non_upper_case_globals)]
262    const S_kDO_COND: i32 = 27;    /* "`do' for condition"  */
263
264    #[allow(non_upper_case_globals)]
265    const S_kDO_BLOCK: i32 = 28;   /* "`do' for block"  */
266
267    #[allow(non_upper_case_globals)]
268    const S_kDO_LAMBDA: i32 = 29;  /* "`do' for lambda"  */
269
270    #[allow(non_upper_case_globals)]
271    const S_kRETURN: i32 = 30;     /* "`return'"  */
272
273    #[allow(non_upper_case_globals)]
274    const S_kYIELD: i32 = 31;      /* "`yield'"  */
275
276    #[allow(non_upper_case_globals)]
277    const S_kSUPER: i32 = 32;      /* "`super'"  */
278
279    #[allow(non_upper_case_globals)]
280    const S_kSELF: i32 = 33;       /* "`self'"  */
281
282    #[allow(non_upper_case_globals)]
283    const S_kNIL: i32 = 34;        /* "`nil'"  */
284
285    #[allow(non_upper_case_globals)]
286    const S_kTRUE: i32 = 35;       /* "`true'"  */
287
288    #[allow(non_upper_case_globals)]
289    const S_kFALSE: i32 = 36;      /* "`false'"  */
290
291    #[allow(non_upper_case_globals)]
292    const S_kAND: i32 = 37;        /* "`and'"  */
293
294    #[allow(non_upper_case_globals)]
295    const S_kOR: i32 = 38;         /* "`or'"  */
296
297    #[allow(non_upper_case_globals)]
298    const S_kNOT: i32 = 39;        /* "`not'"  */
299
300    #[allow(non_upper_case_globals)]
301    const S_kIF_MOD: i32 = 40;     /* "`if' modifier"  */
302
303    #[allow(non_upper_case_globals)]
304    const S_kUNLESS_MOD: i32 = 41; /* "`unless' modifier"  */
305
306    #[allow(non_upper_case_globals)]
307    const S_kWHILE_MOD: i32 = 42;  /* "`while' modifier"  */
308
309    #[allow(non_upper_case_globals)]
310    const S_kUNTIL_MOD: i32 = 43;  /* "`until' modifier"  */
311
312    #[allow(non_upper_case_globals)]
313    const S_kRESCUE_MOD: i32 = 44; /* "`rescue' modifier"  */
314
315    #[allow(non_upper_case_globals)]
316    const S_kALIAS: i32 = 45;      /* "`alias'"  */
317
318    #[allow(non_upper_case_globals)]
319    const S_kDEFINED: i32 = 46;    /* "`defined?'"  */
320
321    #[allow(non_upper_case_globals)]
322    const S_klBEGIN: i32 = 47;     /* "`BEGIN'"  */
323
324    #[allow(non_upper_case_globals)]
325    const S_klEND: i32 = 48;       /* "`END'"  */
326
327    #[allow(non_upper_case_globals)]
328    const S_k__LINE__: i32 = 49;   /* "`__LINE__'"  */
329
330    #[allow(non_upper_case_globals)]
331    const S_k__FILE__: i32 = 50;   /* "`__FILE__'"  */
332
333    #[allow(non_upper_case_globals)]
334    const S_k__ENCODING__: i32 = 51; /* "`__ENCODING__'"  */
335
336    #[allow(non_upper_case_globals)]
337    const S_tIDENTIFIER: i32 = 52; /* "local variable or method"  */
338
339    #[allow(non_upper_case_globals)]
340    const S_tFID: i32 = 53;        /* "method"  */
341
342    #[allow(non_upper_case_globals)]
343    const S_tGVAR: i32 = 54;       /* "global variable"  */
344
345    #[allow(non_upper_case_globals)]
346    const S_tIVAR: i32 = 55;       /* "instance variable"  */
347
348    #[allow(non_upper_case_globals)]
349    const S_tCONSTANT: i32 = 56;   /* "constant"  */
350
351    #[allow(non_upper_case_globals)]
352    const S_tCVAR: i32 = 57;       /* "class variable"  */
353
354    #[allow(non_upper_case_globals)]
355    const S_tLABEL: i32 = 58;      /* "label"  */
356
357    #[allow(non_upper_case_globals)]
358    const S_tINTEGER: i32 = 59;    /* "integer literal"  */
359
360    #[allow(non_upper_case_globals)]
361    const S_tFLOAT: i32 = 60;      /* "float literal"  */
362
363    #[allow(non_upper_case_globals)]
364    const S_tRATIONAL: i32 = 61;   /* "rational literal"  */
365
366    #[allow(non_upper_case_globals)]
367    const S_tIMAGINARY: i32 = 62;  /* "imaginary literal"  */
368
369    #[allow(non_upper_case_globals)]
370    const S_tCHAR: i32 = 63;       /* "char literal"  */
371
372    #[allow(non_upper_case_globals)]
373    const S_tNTH_REF: i32 = 64;    /* "numbered reference"  */
374
375    #[allow(non_upper_case_globals)]
376    const S_tBACK_REF: i32 = 65;   /* "back reference"  */
377
378    #[allow(non_upper_case_globals)]
379    const S_tSTRING_CONTENT: i32 = 66; /* "literal content"  */
380
381    #[allow(non_upper_case_globals)]
382    const S_tREGEXP_END: i32 = 67; /* tREGEXP_END  */
383
384    #[allow(non_upper_case_globals)]
385    const S_tDOT: i32 = 68;        /* tDOT  */
386
387    #[allow(non_upper_case_globals)]
388    const S_tBACKSLASH: i32 = 69;  /* "backslash"  */
389
390    #[allow(non_upper_case_globals)]
391    const S_tSP: i32 = 70;         /* "escaped space"  */
392
393    #[allow(non_upper_case_globals)]
394    const S_tSLASH_T: i32 = 71;    /* "escaped horizontal tab"  */
395
396    #[allow(non_upper_case_globals)]
397    const S_tSLASH_F: i32 = 72;    /* "escaped form feed"  */
398
399    #[allow(non_upper_case_globals)]
400    const S_tSLASH_R: i32 = 73;    /* "escaped carriage return"  */
401
402    #[allow(non_upper_case_globals)]
403    const S_tVTAB: i32 = 74;       /* "escaped vertical tab"  */
404
405    #[allow(non_upper_case_globals)]
406    const S_tUPLUS: i32 = 75;      /* "unary+"  */
407
408    #[allow(non_upper_case_globals)]
409    const S_tUMINUS: i32 = 76;     /* "unary-"  */
410
411    #[allow(non_upper_case_globals)]
412    const S_tPOW: i32 = 77;        /* "**"  */
413
414    #[allow(non_upper_case_globals)]
415    const S_tCMP: i32 = 78;        /* "<=>"  */
416
417    #[allow(non_upper_case_globals)]
418    const S_tEQ: i32 = 79;         /* "=="  */
419
420    #[allow(non_upper_case_globals)]
421    const S_tEQQ: i32 = 80;        /* "==="  */
422
423    #[allow(non_upper_case_globals)]
424    const S_tNEQ: i32 = 81;        /* "!="  */
425
426    #[allow(non_upper_case_globals)]
427    const S_tGEQ: i32 = 82;        /* ">="  */
428
429    #[allow(non_upper_case_globals)]
430    const S_tLEQ: i32 = 83;        /* "<="  */
431
432    #[allow(non_upper_case_globals)]
433    const S_tANDOP: i32 = 84;      /* "&&"  */
434
435    #[allow(non_upper_case_globals)]
436    const S_tOROP: i32 = 85;       /* "||"  */
437
438    #[allow(non_upper_case_globals)]
439    const S_tMATCH: i32 = 86;      /* "=~"  */
440
441    #[allow(non_upper_case_globals)]
442    const S_tNMATCH: i32 = 87;     /* "!~"  */
443
444    #[allow(non_upper_case_globals)]
445    const S_tDOT2: i32 = 88;       /* ".."  */
446
447    #[allow(non_upper_case_globals)]
448    const S_tDOT3: i32 = 89;       /* "..."  */
449
450    #[allow(non_upper_case_globals)]
451    const S_tBDOT2: i32 = 90;      /* "(.."  */
452
453    #[allow(non_upper_case_globals)]
454    const S_tBDOT3: i32 = 91;      /* "(..."  */
455
456    #[allow(non_upper_case_globals)]
457    const S_tAREF: i32 = 92;       /* "[]"  */
458
459    #[allow(non_upper_case_globals)]
460    const S_tASET: i32 = 93;       /* "[]="  */
461
462    #[allow(non_upper_case_globals)]
463    const S_tLSHFT: i32 = 94;      /* "<<"  */
464
465    #[allow(non_upper_case_globals)]
466    const S_tRSHFT: i32 = 95;      /* ">>"  */
467
468    #[allow(non_upper_case_globals)]
469    const S_tANDDOT: i32 = 96;     /* "&."  */
470
471    #[allow(non_upper_case_globals)]
472    const S_tCOLON2: i32 = 97;     /* "::"  */
473
474    #[allow(non_upper_case_globals)]
475    const S_tCOLON3: i32 = 98;     /* ":: at EXPR_BEG"  */
476
477    #[allow(non_upper_case_globals)]
478    const S_tOP_ASGN: i32 = 99;    /* "operator-assignment"  */
479
480    #[allow(non_upper_case_globals)]
481    const S_tASSOC: i32 = 100;     /* "=>"  */
482
483    #[allow(non_upper_case_globals)]
484    const S_tLPAREN: i32 = 101;    /* "("  */
485
486    #[allow(non_upper_case_globals)]
487    const S_tLPAREN_ARG: i32 = 102; /* "( arg"  */
488
489    #[allow(non_upper_case_globals)]
490    const S_tRPAREN: i32 = 103;    /* ")"  */
491
492    #[allow(non_upper_case_globals)]
493    const S_tLBRACK: i32 = 104;    /* "["  */
494
495    #[allow(non_upper_case_globals)]
496    const S_tLBRACE: i32 = 105;    /* "{"  */
497
498    #[allow(non_upper_case_globals)]
499    const S_tLBRACE_ARG: i32 = 106; /* "{ arg"  */
500
501    #[allow(non_upper_case_globals)]
502    const S_tSTAR: i32 = 107;      /* "*"  */
503
504    #[allow(non_upper_case_globals)]
505    const S_tDSTAR: i32 = 108;     /* "**arg"  */
506
507    #[allow(non_upper_case_globals)]
508    const S_tAMPER: i32 = 109;     /* "&"  */
509
510    #[allow(non_upper_case_globals)]
511    const S_tLAMBDA: i32 = 110;    /* "->"  */
512
513    #[allow(non_upper_case_globals)]
514    const S_tSYMBEG: i32 = 111;    /* "symbol literal"  */
515
516    #[allow(non_upper_case_globals)]
517    const S_tSTRING_BEG: i32 = 112; /* "string begin"  */
518
519    #[allow(non_upper_case_globals)]
520    const S_tXSTRING_BEG: i32 = 113; /* "backtick literal"  */
521
522    #[allow(non_upper_case_globals)]
523    const S_tREGEXP_BEG: i32 = 114; /* "regexp literal"  */
524
525    #[allow(non_upper_case_globals)]
526    const S_tWORDS_BEG: i32 = 115; /* "word list"  */
527
528    #[allow(non_upper_case_globals)]
529    const S_tQWORDS_BEG: i32 = 116; /* "verbatim word list"  */
530
531    #[allow(non_upper_case_globals)]
532    const S_tSYMBOLS_BEG: i32 = 117; /* "symbol list"  */
533
534    #[allow(non_upper_case_globals)]
535    const S_tQSYMBOLS_BEG: i32 = 118; /* "verbatim symbol list"  */
536
537    #[allow(non_upper_case_globals)]
538    const S_tSTRING_END: i32 = 119; /* "string end"  */
539
540    #[allow(non_upper_case_globals)]
541    const S_tSTRING_DEND: i32 = 120; /* "tRCURLY"  */
542
543    #[allow(non_upper_case_globals)]
544    const S_tSTRING_DBEG: i32 = 121; /* tSTRING_DBEG  */
545
546    #[allow(non_upper_case_globals)]
547    const S_tSTRING_DVAR: i32 = 122; /* tSTRING_DVAR  */
548
549    #[allow(non_upper_case_globals)]
550    const S_tLAMBEG: i32 = 123;    /* tLAMBEG  */
551
552    #[allow(non_upper_case_globals)]
553    const S_tLABEL_END: i32 = 124; /* tLABEL_END  */
554
555    #[allow(non_upper_case_globals)]
556    const S_tCOMMA: i32 = 125;     /* ","  */
557
558    #[allow(non_upper_case_globals)]
559    const S_tLCURLY: i32 = 126;    /* "{ (tLCURLY)"  */
560
561    #[allow(non_upper_case_globals)]
562    const S_tRCURLY: i32 = 127;    /* "}"  */
563
564    #[allow(non_upper_case_globals)]
565    const S_tLBRACK2: i32 = 128;   /* "[ (tLBRACK2)"  */
566
567    #[allow(non_upper_case_globals)]
568    const S_tEQL: i32 = 129;       /* "="  */
569
570    #[allow(non_upper_case_globals)]
571    const S_tPIPE: i32 = 130;      /* "|"  */
572
573    #[allow(non_upper_case_globals)]
574    const S_tAMPER2: i32 = 131;    /* "& (tAMPER2)"  */
575
576    #[allow(non_upper_case_globals)]
577    const S_tGT: i32 = 132;        /* ">"  */
578
579    #[allow(non_upper_case_globals)]
580    const S_tLT: i32 = 133;        /* "<"  */
581
582    #[allow(non_upper_case_globals)]
583    const S_tBACK_REF2: i32 = 134; /* "`"  */
584
585    #[allow(non_upper_case_globals)]
586    const S_tCARET: i32 = 135;     /* "^"  */
587
588    #[allow(non_upper_case_globals)]
589    const S_tLPAREN2: i32 = 136;   /* "( (tLPAREN2)"  */
590
591    #[allow(non_upper_case_globals)]
592    const S_tRBRACK: i32 = 137;    /* "]"  */
593
594    #[allow(non_upper_case_globals)]
595    const S_tSEMI: i32 = 138;      /* ";"  */
596
597    #[allow(non_upper_case_globals)]
598    const S_tSPACE: i32 = 139;     /* " "  */
599
600    #[allow(non_upper_case_globals)]
601    const S_tNL: i32 = 140;        /* "\n"  */
602
603    #[allow(non_upper_case_globals)]
604    const S_tPLUS: i32 = 141;      /* "+"  */
605
606    #[allow(non_upper_case_globals)]
607    const S_tMINUS: i32 = 142;     /* "-"  */
608
609    #[allow(non_upper_case_globals)]
610    const S_tSTAR2: i32 = 143;     /* "* (tSTAR2)"  */
611
612    #[allow(non_upper_case_globals)]
613    const S_tDIVIDE: i32 = 144;    /* "/"  */
614
615    #[allow(non_upper_case_globals)]
616    const S_tPERCENT: i32 = 145;   /* "%"  */
617
618    #[allow(non_upper_case_globals)]
619    const S_tTILDE: i32 = 146;     /* "~"  */
620
621    #[allow(non_upper_case_globals)]
622    const S_tBANG: i32 = 147;      /* "!"  */
623
624    #[allow(non_upper_case_globals)]
625    const S_tLOWEST: i32 = 148;    /* tLOWEST  */
626
627    #[allow(non_upper_case_globals)]
628    const S_tEH: i32 = 149;        /* tEH  */
629
630    #[allow(non_upper_case_globals)]
631    const S_tCOLON: i32 = 150;     /* tCOLON  */
632
633    #[allow(non_upper_case_globals)]
634    const S_tUMINUS_NUM: i32 = 151; /* tUMINUS_NUM  */
635
636    #[allow(non_upper_case_globals)]
637    const S_tLAST_TOKEN: i32 = 152; /* tLAST_TOKEN  */
638
639    #[allow(non_upper_case_globals)]
640    const S_YYACCEPT: i32 = 153;   /* $accept  */
641
642    #[allow(non_upper_case_globals)]
643    const S_program: i32 = 154;    /* program  */
644
645    #[allow(non_upper_case_globals)]
646    const S_155_1: i32 = 155;      /* @1  */
647
648    #[allow(non_upper_case_globals)]
649    const S_top_compstmt: i32 = 156; /* top_compstmt  */
650
651    #[allow(non_upper_case_globals)]
652    const S_top_stmts: i32 = 157;  /* top_stmts  */
653
654    #[allow(non_upper_case_globals)]
655    const S_top_stmt: i32 = 158;   /* top_stmt  */
656
657    #[allow(non_upper_case_globals)]
658    const S_begin_block: i32 = 159; /* begin_block  */
659
660    #[allow(non_upper_case_globals)]
661    const S_bodystmt: i32 = 160;   /* bodystmt  */
662
663    #[allow(non_upper_case_globals)]
664    const S_compstmt: i32 = 161;   /* compstmt  */
665
666    #[allow(non_upper_case_globals)]
667    const S_stmts: i32 = 162;      /* stmts  */
668
669    #[allow(non_upper_case_globals)]
670    const S_stmt_or_begin: i32 = 163; /* stmt_or_begin  */
671
672    #[allow(non_upper_case_globals)]
673    const S_164_2: i32 = 164;      /* $@2  */
674
675    #[allow(non_upper_case_globals)]
676    const S_stmt: i32 = 165;       /* stmt  */
677
678    #[allow(non_upper_case_globals)]
679    const S_166_3: i32 = 166;      /* @3  */
680
681    #[allow(non_upper_case_globals)]
682    const S_command_asgn: i32 = 167; /* command_asgn  */
683
684    #[allow(non_upper_case_globals)]
685    const S_command_rhs: i32 = 168; /* command_rhs  */
686
687    #[allow(non_upper_case_globals)]
688    const S_expr: i32 = 169;       /* expr  */
689
690    #[allow(non_upper_case_globals)]
691    const S_170_4: i32 = 170;      /* @4  */
692
693    #[allow(non_upper_case_globals)]
694    const S_171_5: i32 = 171;      /* @5  */
695
696    #[allow(non_upper_case_globals)]
697    const S_def_name: i32 = 172;   /* def_name  */
698
699    #[allow(non_upper_case_globals)]
700    const S_defn_head: i32 = 173;  /* defn_head  */
701
702    #[allow(non_upper_case_globals)]
703    const S_defs_head: i32 = 174;  /* defs_head  */
704
705    #[allow(non_upper_case_globals)]
706    const S_175_6: i32 = 175;      /* @6  */
707
708    #[allow(non_upper_case_globals)]
709    const S_expr_value: i32 = 176; /* expr_value  */
710
711    #[allow(non_upper_case_globals)]
712    const S_expr_value_do: i32 = 177; /* expr_value_do  */
713
714    #[allow(non_upper_case_globals)]
715    const S_178_7: i32 = 178;      /* @7  */
716
717    #[allow(non_upper_case_globals)]
718    const S_command_call: i32 = 179; /* command_call  */
719
720    #[allow(non_upper_case_globals)]
721    const S_block_command: i32 = 180; /* block_command  */
722
723    #[allow(non_upper_case_globals)]
724    const S_cmd_brace_block: i32 = 181; /* cmd_brace_block  */
725
726    #[allow(non_upper_case_globals)]
727    const S_182_8: i32 = 182;      /* @8  */
728
729    #[allow(non_upper_case_globals)]
730    const S_fcall: i32 = 183;      /* fcall  */
731
732    #[allow(non_upper_case_globals)]
733    const S_command: i32 = 184;    /* command  */
734
735    #[allow(non_upper_case_globals)]
736    const S_mlhs: i32 = 185;       /* mlhs  */
737
738    #[allow(non_upper_case_globals)]
739    const S_mlhs_inner: i32 = 186; /* mlhs_inner  */
740
741    #[allow(non_upper_case_globals)]
742    const S_mlhs_basic: i32 = 187; /* mlhs_basic  */
743
744    #[allow(non_upper_case_globals)]
745    const S_mlhs_item: i32 = 188;  /* mlhs_item  */
746
747    #[allow(non_upper_case_globals)]
748    const S_mlhs_head: i32 = 189;  /* mlhs_head  */
749
750    #[allow(non_upper_case_globals)]
751    const S_mlhs_post: i32 = 190;  /* mlhs_post  */
752
753    #[allow(non_upper_case_globals)]
754    const S_mlhs_node: i32 = 191;  /* mlhs_node  */
755
756    #[allow(non_upper_case_globals)]
757    const S_lhs: i32 = 192;        /* lhs  */
758
759    #[allow(non_upper_case_globals)]
760    const S_cname: i32 = 193;      /* cname  */
761
762    #[allow(non_upper_case_globals)]
763    const S_cpath: i32 = 194;      /* cpath  */
764
765    #[allow(non_upper_case_globals)]
766    const S_fname: i32 = 195;      /* fname  */
767
768    #[allow(non_upper_case_globals)]
769    const S_fitem: i32 = 196;      /* fitem  */
770
771    #[allow(non_upper_case_globals)]
772    const S_undef_list: i32 = 197; /* undef_list  */
773
774    #[allow(non_upper_case_globals)]
775    const S_198_9: i32 = 198;      /* @9  */
776
777    #[allow(non_upper_case_globals)]
778    const S_op: i32 = 199;         /* op  */
779
780    #[allow(non_upper_case_globals)]
781    const S_reswords: i32 = 200;   /* reswords  */
782
783    #[allow(non_upper_case_globals)]
784    const S_arg: i32 = 201;        /* arg  */
785
786    #[allow(non_upper_case_globals)]
787    const S_202_10: i32 = 202;     /* @10  */
788
789    #[allow(non_upper_case_globals)]
790    const S_relop: i32 = 203;      /* relop  */
791
792    #[allow(non_upper_case_globals)]
793    const S_rel_expr: i32 = 204;   /* rel_expr  */
794
795    #[allow(non_upper_case_globals)]
796    const S_arg_value: i32 = 205;  /* arg_value  */
797
798    #[allow(non_upper_case_globals)]
799    const S_aref_args: i32 = 206;  /* aref_args  */
800
801    #[allow(non_upper_case_globals)]
802    const S_arg_rhs: i32 = 207;    /* arg_rhs  */
803
804    #[allow(non_upper_case_globals)]
805    const S_paren_args: i32 = 208; /* paren_args  */
806
807    #[allow(non_upper_case_globals)]
808    const S_opt_paren_args: i32 = 209; /* opt_paren_args  */
809
810    #[allow(non_upper_case_globals)]
811    const S_opt_call_args: i32 = 210; /* opt_call_args  */
812
813    #[allow(non_upper_case_globals)]
814    const S_call_args: i32 = 211;  /* call_args  */
815
816    #[allow(non_upper_case_globals)]
817    const S_command_args: i32 = 212; /* command_args  */
818
819    #[allow(non_upper_case_globals)]
820    const S_213_11: i32 = 213;     /* @11  */
821
822    #[allow(non_upper_case_globals)]
823    const S_block_arg: i32 = 214;  /* block_arg  */
824
825    #[allow(non_upper_case_globals)]
826    const S_opt_block_arg: i32 = 215; /* opt_block_arg  */
827
828    #[allow(non_upper_case_globals)]
829    const S_args: i32 = 216;       /* args  */
830
831    #[allow(non_upper_case_globals)]
832    const S_mrhs_arg: i32 = 217;   /* mrhs_arg  */
833
834    #[allow(non_upper_case_globals)]
835    const S_mrhs: i32 = 218;       /* mrhs  */
836
837    #[allow(non_upper_case_globals)]
838    const S_primary: i32 = 219;    /* primary  */
839
840    #[allow(non_upper_case_globals)]
841    const S_220_12: i32 = 220;     /* @12  */
842
843    #[allow(non_upper_case_globals)]
844    const S_221_13: i32 = 221;     /* @13  */
845
846    #[allow(non_upper_case_globals)]
847    const S_222_14: i32 = 222;     /* @14  */
848
849    #[allow(non_upper_case_globals)]
850    const S_223_15: i32 = 223;     /* @15  */
851
852    #[allow(non_upper_case_globals)]
853    const S_224_16: i32 = 224;     /* @16  */
854
855    #[allow(non_upper_case_globals)]
856    const S_225_17: i32 = 225;     /* @17  */
857
858    #[allow(non_upper_case_globals)]
859    const S_226_18: i32 = 226;     /* @18  */
860
861    #[allow(non_upper_case_globals)]
862    const S_227_19: i32 = 227;     /* @19  */
863
864    #[allow(non_upper_case_globals)]
865    const S_228_20: i32 = 228;     /* @20  */
866
867    #[allow(non_upper_case_globals)]
868    const S_primary_value: i32 = 229; /* primary_value  */
869
870    #[allow(non_upper_case_globals)]
871    const S_k_begin: i32 = 230;    /* k_begin  */
872
873    #[allow(non_upper_case_globals)]
874    const S_k_if: i32 = 231;       /* k_if  */
875
876    #[allow(non_upper_case_globals)]
877    const S_k_unless: i32 = 232;   /* k_unless  */
878
879    #[allow(non_upper_case_globals)]
880    const S_k_while: i32 = 233;    /* k_while  */
881
882    #[allow(non_upper_case_globals)]
883    const S_k_until: i32 = 234;    /* k_until  */
884
885    #[allow(non_upper_case_globals)]
886    const S_k_case: i32 = 235;     /* k_case  */
887
888    #[allow(non_upper_case_globals)]
889    const S_k_for: i32 = 236;      /* k_for  */
890
891    #[allow(non_upper_case_globals)]
892    const S_k_class: i32 = 237;    /* k_class  */
893
894    #[allow(non_upper_case_globals)]
895    const S_k_module: i32 = 238;   /* k_module  */
896
897    #[allow(non_upper_case_globals)]
898    const S_k_def: i32 = 239;      /* k_def  */
899
900    #[allow(non_upper_case_globals)]
901    const S_k_do: i32 = 240;       /* k_do  */
902
903    #[allow(non_upper_case_globals)]
904    const S_k_do_block: i32 = 241; /* k_do_block  */
905
906    #[allow(non_upper_case_globals)]
907    const S_k_rescue: i32 = 242;   /* k_rescue  */
908
909    #[allow(non_upper_case_globals)]
910    const S_k_ensure: i32 = 243;   /* k_ensure  */
911
912    #[allow(non_upper_case_globals)]
913    const S_k_when: i32 = 244;     /* k_when  */
914
915    #[allow(non_upper_case_globals)]
916    const S_k_else: i32 = 245;     /* k_else  */
917
918    #[allow(non_upper_case_globals)]
919    const S_k_elsif: i32 = 246;    /* k_elsif  */
920
921    #[allow(non_upper_case_globals)]
922    const S_k_end: i32 = 247;      /* k_end  */
923
924    #[allow(non_upper_case_globals)]
925    const S_k_return: i32 = 248;   /* k_return  */
926
927    #[allow(non_upper_case_globals)]
928    const S_then: i32 = 249;       /* then  */
929
930    #[allow(non_upper_case_globals)]
931    const S_do: i32 = 250;         /* do  */
932
933    #[allow(non_upper_case_globals)]
934    const S_if_tail: i32 = 251;    /* if_tail  */
935
936    #[allow(non_upper_case_globals)]
937    const S_opt_else: i32 = 252;   /* opt_else  */
938
939    #[allow(non_upper_case_globals)]
940    const S_for_var: i32 = 253;    /* for_var  */
941
942    #[allow(non_upper_case_globals)]
943    const S_f_marg: i32 = 254;     /* f_marg  */
944
945    #[allow(non_upper_case_globals)]
946    const S_f_marg_list: i32 = 255; /* f_marg_list  */
947
948    #[allow(non_upper_case_globals)]
949    const S_f_margs: i32 = 256;    /* f_margs  */
950
951    #[allow(non_upper_case_globals)]
952    const S_f_rest_marg: i32 = 257; /* f_rest_marg  */
953
954    #[allow(non_upper_case_globals)]
955    const S_f_any_kwrest: i32 = 258; /* f_any_kwrest  */
956
957    #[allow(non_upper_case_globals)]
958    const S_f_eq: i32 = 259;       /* f_eq  */
959
960    #[allow(non_upper_case_globals)]
961    const S_260_21: i32 = 260;     /* @21  */
962
963    #[allow(non_upper_case_globals)]
964    const S_block_args_tail: i32 = 261; /* block_args_tail  */
965
966    #[allow(non_upper_case_globals)]
967    const S_opt_block_args_tail: i32 = 262; /* opt_block_args_tail  */
968
969    #[allow(non_upper_case_globals)]
970    const S_excessed_comma: i32 = 263; /* excessed_comma  */
971
972    #[allow(non_upper_case_globals)]
973    const S_block_param: i32 = 264; /* block_param  */
974
975    #[allow(non_upper_case_globals)]
976    const S_opt_block_param: i32 = 265; /* opt_block_param  */
977
978    #[allow(non_upper_case_globals)]
979    const S_block_param_def: i32 = 266; /* block_param_def  */
980
981    #[allow(non_upper_case_globals)]
982    const S_opt_bv_decl: i32 = 267; /* opt_bv_decl  */
983
984    #[allow(non_upper_case_globals)]
985    const S_bv_decls: i32 = 268;   /* bv_decls  */
986
987    #[allow(non_upper_case_globals)]
988    const S_bvar: i32 = 269;       /* bvar  */
989
990    #[allow(non_upper_case_globals)]
991    const S_lambda: i32 = 270;     /* lambda  */
992
993    #[allow(non_upper_case_globals)]
994    const S_271_22: i32 = 271;     /* @22  */
995
996    #[allow(non_upper_case_globals)]
997    const S_272_23: i32 = 272;     /* @23  */
998
999    #[allow(non_upper_case_globals)]
1000    const S_273_24: i32 = 273;     /* @24  */
1001
1002    #[allow(non_upper_case_globals)]
1003    const S_f_larglist: i32 = 274; /* f_larglist  */
1004
1005    #[allow(non_upper_case_globals)]
1006    const S_lambda_body: i32 = 275; /* lambda_body  */
1007
1008    #[allow(non_upper_case_globals)]
1009    const S_276_25: i32 = 276;     /* @25  */
1010
1011    #[allow(non_upper_case_globals)]
1012    const S_277_26: i32 = 277;     /* @26  */
1013
1014    #[allow(non_upper_case_globals)]
1015    const S_do_block: i32 = 278;   /* do_block  */
1016
1017    #[allow(non_upper_case_globals)]
1018    const S_279_27: i32 = 279;     /* @27  */
1019
1020    #[allow(non_upper_case_globals)]
1021    const S_block_call: i32 = 280; /* block_call  */
1022
1023    #[allow(non_upper_case_globals)]
1024    const S_method_call: i32 = 281; /* method_call  */
1025
1026    #[allow(non_upper_case_globals)]
1027    const S_brace_block: i32 = 282; /* brace_block  */
1028
1029    #[allow(non_upper_case_globals)]
1030    const S_283_28: i32 = 283;     /* @28  */
1031
1032    #[allow(non_upper_case_globals)]
1033    const S_284_29: i32 = 284;     /* @29  */
1034
1035    #[allow(non_upper_case_globals)]
1036    const S_brace_body: i32 = 285; /* brace_body  */
1037
1038    #[allow(non_upper_case_globals)]
1039    const S_286_30: i32 = 286;     /* @30  */
1040
1041    #[allow(non_upper_case_globals)]
1042    const S_do_body: i32 = 287;    /* do_body  */
1043
1044    #[allow(non_upper_case_globals)]
1045    const S_288_31: i32 = 288;     /* @31  */
1046
1047    #[allow(non_upper_case_globals)]
1048    const S_case_args: i32 = 289;  /* case_args  */
1049
1050    #[allow(non_upper_case_globals)]
1051    const S_case_body: i32 = 290;  /* case_body  */
1052
1053    #[allow(non_upper_case_globals)]
1054    const S_cases: i32 = 291;      /* cases  */
1055
1056    #[allow(non_upper_case_globals)]
1057    const S_p_case_body: i32 = 292; /* p_case_body  */
1058
1059    #[allow(non_upper_case_globals)]
1060    const S_293_32: i32 = 293;     /* @32  */
1061
1062    #[allow(non_upper_case_globals)]
1063    const S_294_33: i32 = 294;     /* @33  */
1064
1065    #[allow(non_upper_case_globals)]
1066    const S_p_cases: i32 = 295;    /* p_cases  */
1067
1068    #[allow(non_upper_case_globals)]
1069    const S_p_top_expr: i32 = 296; /* p_top_expr  */
1070
1071    #[allow(non_upper_case_globals)]
1072    const S_p_top_expr_body: i32 = 297; /* p_top_expr_body  */
1073
1074    #[allow(non_upper_case_globals)]
1075    const S_p_expr: i32 = 298;     /* p_expr  */
1076
1077    #[allow(non_upper_case_globals)]
1078    const S_p_as: i32 = 299;       /* p_as  */
1079
1080    #[allow(non_upper_case_globals)]
1081    const S_p_alt: i32 = 300;      /* p_alt  */
1082
1083    #[allow(non_upper_case_globals)]
1084    const S_p_lparen: i32 = 301;   /* p_lparen  */
1085
1086    #[allow(non_upper_case_globals)]
1087    const S_p_lbracket: i32 = 302; /* p_lbracket  */
1088
1089    #[allow(non_upper_case_globals)]
1090    const S_p_expr_basic: i32 = 303; /* p_expr_basic  */
1091
1092    #[allow(non_upper_case_globals)]
1093    const S_304_34: i32 = 304;     /* @34  */
1094
1095    #[allow(non_upper_case_globals)]
1096    const S_305_35: i32 = 305;     /* @35  */
1097
1098    #[allow(non_upper_case_globals)]
1099    const S_p_args: i32 = 306;     /* p_args  */
1100
1101    #[allow(non_upper_case_globals)]
1102    const S_p_args_head: i32 = 307; /* p_args_head  */
1103
1104    #[allow(non_upper_case_globals)]
1105    const S_p_args_tail: i32 = 308; /* p_args_tail  */
1106
1107    #[allow(non_upper_case_globals)]
1108    const S_p_find: i32 = 309;     /* p_find  */
1109
1110    #[allow(non_upper_case_globals)]
1111    const S_p_rest: i32 = 310;     /* p_rest  */
1112
1113    #[allow(non_upper_case_globals)]
1114    const S_p_args_post: i32 = 311; /* p_args_post  */
1115
1116    #[allow(non_upper_case_globals)]
1117    const S_p_arg: i32 = 312;      /* p_arg  */
1118
1119    #[allow(non_upper_case_globals)]
1120    const S_p_kwargs: i32 = 313;   /* p_kwargs  */
1121
1122    #[allow(non_upper_case_globals)]
1123    const S_p_kwarg: i32 = 314;    /* p_kwarg  */
1124
1125    #[allow(non_upper_case_globals)]
1126    const S_p_kw: i32 = 315;       /* p_kw  */
1127
1128    #[allow(non_upper_case_globals)]
1129    const S_p_kw_label: i32 = 316; /* p_kw_label  */
1130
1131    #[allow(non_upper_case_globals)]
1132    const S_p_kwrest: i32 = 317;   /* p_kwrest  */
1133
1134    #[allow(non_upper_case_globals)]
1135    const S_p_kwnorest: i32 = 318; /* p_kwnorest  */
1136
1137    #[allow(non_upper_case_globals)]
1138    const S_p_any_kwrest: i32 = 319; /* p_any_kwrest  */
1139
1140    #[allow(non_upper_case_globals)]
1141    const S_p_value: i32 = 320;    /* p_value  */
1142
1143    #[allow(non_upper_case_globals)]
1144    const S_p_primitive: i32 = 321; /* p_primitive  */
1145
1146    #[allow(non_upper_case_globals)]
1147    const S_p_variable: i32 = 322; /* p_variable  */
1148
1149    #[allow(non_upper_case_globals)]
1150    const S_p_var_ref: i32 = 323;  /* p_var_ref  */
1151
1152    #[allow(non_upper_case_globals)]
1153    const S_p_expr_ref: i32 = 324; /* p_expr_ref  */
1154
1155    #[allow(non_upper_case_globals)]
1156    const S_p_const: i32 = 325;    /* p_const  */
1157
1158    #[allow(non_upper_case_globals)]
1159    const S_opt_rescue: i32 = 326; /* opt_rescue  */
1160
1161    #[allow(non_upper_case_globals)]
1162    const S_exc_list: i32 = 327;   /* exc_list  */
1163
1164    #[allow(non_upper_case_globals)]
1165    const S_exc_var: i32 = 328;    /* exc_var  */
1166
1167    #[allow(non_upper_case_globals)]
1168    const S_opt_ensure: i32 = 329; /* opt_ensure  */
1169
1170    #[allow(non_upper_case_globals)]
1171    const S_literal: i32 = 330;    /* literal  */
1172
1173    #[allow(non_upper_case_globals)]
1174    const S_strings: i32 = 331;    /* strings  */
1175
1176    #[allow(non_upper_case_globals)]
1177    const S_string: i32 = 332;     /* string  */
1178
1179    #[allow(non_upper_case_globals)]
1180    const S_string1: i32 = 333;    /* string1  */
1181
1182    #[allow(non_upper_case_globals)]
1183    const S_xstring: i32 = 334;    /* xstring  */
1184
1185    #[allow(non_upper_case_globals)]
1186    const S_regexp: i32 = 335;     /* regexp  */
1187
1188    #[allow(non_upper_case_globals)]
1189    const S_words: i32 = 336;      /* words  */
1190
1191    #[allow(non_upper_case_globals)]
1192    const S_word_list: i32 = 337;  /* word_list  */
1193
1194    #[allow(non_upper_case_globals)]
1195    const S_word: i32 = 338;       /* word  */
1196
1197    #[allow(non_upper_case_globals)]
1198    const S_symbols: i32 = 339;    /* symbols  */
1199
1200    #[allow(non_upper_case_globals)]
1201    const S_symbol_list: i32 = 340; /* symbol_list  */
1202
1203    #[allow(non_upper_case_globals)]
1204    const S_qwords: i32 = 341;     /* qwords  */
1205
1206    #[allow(non_upper_case_globals)]
1207    const S_qsymbols: i32 = 342;   /* qsymbols  */
1208
1209    #[allow(non_upper_case_globals)]
1210    const S_qword_list: i32 = 343; /* qword_list  */
1211
1212    #[allow(non_upper_case_globals)]
1213    const S_qsym_list: i32 = 344;  /* qsym_list  */
1214
1215    #[allow(non_upper_case_globals)]
1216    const S_string_contents: i32 = 345; /* string_contents  */
1217
1218    #[allow(non_upper_case_globals)]
1219    const S_xstring_contents: i32 = 346; /* xstring_contents  */
1220
1221    #[allow(non_upper_case_globals)]
1222    const S_regexp_contents: i32 = 347; /* regexp_contents  */
1223
1224    #[allow(non_upper_case_globals)]
1225    const S_string_content: i32 = 348; /* string_content  */
1226
1227    #[allow(non_upper_case_globals)]
1228    const S_349_36: i32 = 349;     /* @36  */
1229
1230    #[allow(non_upper_case_globals)]
1231    const S_350_37: i32 = 350;     /* @37  */
1232
1233    #[allow(non_upper_case_globals)]
1234    const S_351_38: i32 = 351;     /* @38  */
1235
1236    #[allow(non_upper_case_globals)]
1237    const S_352_39: i32 = 352;     /* @39  */
1238
1239    #[allow(non_upper_case_globals)]
1240    const S_353_40: i32 = 353;     /* @40  */
1241
1242    #[allow(non_upper_case_globals)]
1243    const S_354_41: i32 = 354;     /* @41  */
1244
1245    #[allow(non_upper_case_globals)]
1246    const S_string_dvar: i32 = 355; /* string_dvar  */
1247
1248    #[allow(non_upper_case_globals)]
1249    const S_symbol: i32 = 356;     /* symbol  */
1250
1251    #[allow(non_upper_case_globals)]
1252    const S_ssym: i32 = 357;       /* ssym  */
1253
1254    #[allow(non_upper_case_globals)]
1255    const S_sym: i32 = 358;        /* sym  */
1256
1257    #[allow(non_upper_case_globals)]
1258    const S_dsym: i32 = 359;       /* dsym  */
1259
1260    #[allow(non_upper_case_globals)]
1261    const S_numeric: i32 = 360;    /* numeric  */
1262
1263    #[allow(non_upper_case_globals)]
1264    const S_simple_numeric: i32 = 361; /* simple_numeric  */
1265
1266    #[allow(non_upper_case_globals)]
1267    const S_nonlocal_var: i32 = 362; /* nonlocal_var  */
1268
1269    #[allow(non_upper_case_globals)]
1270    const S_user_variable: i32 = 363; /* user_variable  */
1271
1272    #[allow(non_upper_case_globals)]
1273    const S_keyword_variable: i32 = 364; /* keyword_variable  */
1274
1275    #[allow(non_upper_case_globals)]
1276    const S_var_ref: i32 = 365;    /* var_ref  */
1277
1278    #[allow(non_upper_case_globals)]
1279    const S_var_lhs: i32 = 366;    /* var_lhs  */
1280
1281    #[allow(non_upper_case_globals)]
1282    const S_backref: i32 = 367;    /* backref  */
1283
1284    #[allow(non_upper_case_globals)]
1285    const S_superclass: i32 = 368; /* superclass  */
1286
1287    #[allow(non_upper_case_globals)]
1288    const S_369_42: i32 = 369;     /* @42  */
1289
1290    #[allow(non_upper_case_globals)]
1291    const S_f_opt_paren_args: i32 = 370; /* f_opt_paren_args  */
1292
1293    #[allow(non_upper_case_globals)]
1294    const S_f_paren_args: i32 = 371; /* f_paren_args  */
1295
1296    #[allow(non_upper_case_globals)]
1297    const S_f_arglist: i32 = 372;  /* f_arglist  */
1298
1299    #[allow(non_upper_case_globals)]
1300    const S_373_43: i32 = 373;     /* @43  */
1301
1302    #[allow(non_upper_case_globals)]
1303    const S_args_tail: i32 = 374;  /* args_tail  */
1304
1305    #[allow(non_upper_case_globals)]
1306    const S_opt_args_tail: i32 = 375; /* opt_args_tail  */
1307
1308    #[allow(non_upper_case_globals)]
1309    const S_f_args: i32 = 376;     /* f_args  */
1310
1311    #[allow(non_upper_case_globals)]
1312    const S_args_forward: i32 = 377; /* args_forward  */
1313
1314    #[allow(non_upper_case_globals)]
1315    const S_f_bad_arg: i32 = 378;  /* f_bad_arg  */
1316
1317    #[allow(non_upper_case_globals)]
1318    const S_f_norm_arg: i32 = 379; /* f_norm_arg  */
1319
1320    #[allow(non_upper_case_globals)]
1321    const S_f_arg_asgn: i32 = 380; /* f_arg_asgn  */
1322
1323    #[allow(non_upper_case_globals)]
1324    const S_f_arg_item: i32 = 381; /* f_arg_item  */
1325
1326    #[allow(non_upper_case_globals)]
1327    const S_f_arg: i32 = 382;      /* f_arg  */
1328
1329    #[allow(non_upper_case_globals)]
1330    const S_f_label: i32 = 383;    /* f_label  */
1331
1332    #[allow(non_upper_case_globals)]
1333    const S_f_kw: i32 = 384;       /* f_kw  */
1334
1335    #[allow(non_upper_case_globals)]
1336    const S_f_block_kw: i32 = 385; /* f_block_kw  */
1337
1338    #[allow(non_upper_case_globals)]
1339    const S_f_block_kwarg: i32 = 386; /* f_block_kwarg  */
1340
1341    #[allow(non_upper_case_globals)]
1342    const S_f_kwarg: i32 = 387;    /* f_kwarg  */
1343
1344    #[allow(non_upper_case_globals)]
1345    const S_kwrest_mark: i32 = 388; /* kwrest_mark  */
1346
1347    #[allow(non_upper_case_globals)]
1348    const S_f_no_kwarg: i32 = 389; /* f_no_kwarg  */
1349
1350    #[allow(non_upper_case_globals)]
1351    const S_f_kwrest: i32 = 390;   /* f_kwrest  */
1352
1353    #[allow(non_upper_case_globals)]
1354    const S_f_opt: i32 = 391;      /* f_opt  */
1355
1356    #[allow(non_upper_case_globals)]
1357    const S_f_block_opt: i32 = 392; /* f_block_opt  */
1358
1359    #[allow(non_upper_case_globals)]
1360    const S_f_block_optarg: i32 = 393; /* f_block_optarg  */
1361
1362    #[allow(non_upper_case_globals)]
1363    const S_f_optarg: i32 = 394;   /* f_optarg  */
1364
1365    #[allow(non_upper_case_globals)]
1366    const S_restarg_mark: i32 = 395; /* restarg_mark  */
1367
1368    #[allow(non_upper_case_globals)]
1369    const S_f_rest_arg: i32 = 396; /* f_rest_arg  */
1370
1371    #[allow(non_upper_case_globals)]
1372    const S_blkarg_mark: i32 = 397; /* blkarg_mark  */
1373
1374    #[allow(non_upper_case_globals)]
1375    const S_f_block_arg: i32 = 398; /* f_block_arg  */
1376
1377    #[allow(non_upper_case_globals)]
1378    const S_opt_f_block_arg: i32 = 399; /* opt_f_block_arg  */
1379
1380    #[allow(non_upper_case_globals)]
1381    const S_singleton: i32 = 400;  /* singleton  */
1382
1383    #[allow(non_upper_case_globals)]
1384    const S_401_44: i32 = 401;     /* @44  */
1385
1386    #[allow(non_upper_case_globals)]
1387    const S_assoc_list: i32 = 402; /* assoc_list  */
1388
1389    #[allow(non_upper_case_globals)]
1390    const S_assocs: i32 = 403;     /* assocs  */
1391
1392    #[allow(non_upper_case_globals)]
1393    const S_assoc: i32 = 404;      /* assoc  */
1394
1395    #[allow(non_upper_case_globals)]
1396    const S_operation: i32 = 405;  /* operation  */
1397
1398    #[allow(non_upper_case_globals)]
1399    const S_operation2: i32 = 406; /* operation2  */
1400
1401    #[allow(non_upper_case_globals)]
1402    const S_operation3: i32 = 407; /* operation3  */
1403
1404    #[allow(non_upper_case_globals)]
1405    const S_dot_or_colon: i32 = 408; /* dot_or_colon  */
1406
1407    #[allow(non_upper_case_globals)]
1408    const S_call_op: i32 = 409;    /* call_op  */
1409
1410    #[allow(non_upper_case_globals)]
1411    const S_call_op2: i32 = 410;   /* call_op2  */
1412
1413    #[allow(non_upper_case_globals)]
1414    const S_opt_terms: i32 = 411;  /* opt_terms  */
1415
1416    #[allow(non_upper_case_globals)]
1417    const S_opt_nl: i32 = 412;     /* opt_nl  */
1418
1419    #[allow(non_upper_case_globals)]
1420    const S_rparen: i32 = 413;     /* rparen  */
1421
1422    #[allow(non_upper_case_globals)]
1423    const S_rbracket: i32 = 414;   /* rbracket  */
1424
1425    #[allow(non_upper_case_globals)]
1426    const S_rbrace: i32 = 415;     /* rbrace  */
1427
1428    #[allow(non_upper_case_globals)]
1429    const S_trailer: i32 = 416;    /* trailer  */
1430
1431    #[allow(non_upper_case_globals)]
1432    const S_term: i32 = 417;       /* term  */
1433
1434    #[allow(non_upper_case_globals)]
1435    const S_terms: i32 = 418;      /* terms  */
1436
1437    #[allow(non_upper_case_globals)]
1438    const S_none: i32 = 419;       /* none  */
1439
1440
1441    const VALUES_: &'static [SymbolKind] = &[ 
1442        SymbolKind { value: SymbolKind::S_YYEOF },
1443        SymbolKind { value: SymbolKind::S_YYerror },
1444        SymbolKind { value: SymbolKind::S_YYUNDEF },
1445        SymbolKind { value: SymbolKind::S_kCLASS },
1446        SymbolKind { value: SymbolKind::S_kMODULE },
1447        SymbolKind { value: SymbolKind::S_kDEF },
1448        SymbolKind { value: SymbolKind::S_kUNDEF },
1449        SymbolKind { value: SymbolKind::S_kBEGIN },
1450        SymbolKind { value: SymbolKind::S_kRESCUE },
1451        SymbolKind { value: SymbolKind::S_kENSURE },
1452        SymbolKind { value: SymbolKind::S_kEND },
1453        SymbolKind { value: SymbolKind::S_kIF },
1454        SymbolKind { value: SymbolKind::S_kUNLESS },
1455        SymbolKind { value: SymbolKind::S_kTHEN },
1456        SymbolKind { value: SymbolKind::S_kELSIF },
1457        SymbolKind { value: SymbolKind::S_kELSE },
1458        SymbolKind { value: SymbolKind::S_kCASE },
1459        SymbolKind { value: SymbolKind::S_kWHEN },
1460        SymbolKind { value: SymbolKind::S_kWHILE },
1461        SymbolKind { value: SymbolKind::S_kUNTIL },
1462        SymbolKind { value: SymbolKind::S_kFOR },
1463        SymbolKind { value: SymbolKind::S_kBREAK },
1464        SymbolKind { value: SymbolKind::S_kNEXT },
1465        SymbolKind { value: SymbolKind::S_kREDO },
1466        SymbolKind { value: SymbolKind::S_kRETRY },
1467        SymbolKind { value: SymbolKind::S_kIN },
1468        SymbolKind { value: SymbolKind::S_kDO },
1469        SymbolKind { value: SymbolKind::S_kDO_COND },
1470        SymbolKind { value: SymbolKind::S_kDO_BLOCK },
1471        SymbolKind { value: SymbolKind::S_kDO_LAMBDA },
1472        SymbolKind { value: SymbolKind::S_kRETURN },
1473        SymbolKind { value: SymbolKind::S_kYIELD },
1474        SymbolKind { value: SymbolKind::S_kSUPER },
1475        SymbolKind { value: SymbolKind::S_kSELF },
1476        SymbolKind { value: SymbolKind::S_kNIL },
1477        SymbolKind { value: SymbolKind::S_kTRUE },
1478        SymbolKind { value: SymbolKind::S_kFALSE },
1479        SymbolKind { value: SymbolKind::S_kAND },
1480        SymbolKind { value: SymbolKind::S_kOR },
1481        SymbolKind { value: SymbolKind::S_kNOT },
1482        SymbolKind { value: SymbolKind::S_kIF_MOD },
1483        SymbolKind { value: SymbolKind::S_kUNLESS_MOD },
1484        SymbolKind { value: SymbolKind::S_kWHILE_MOD },
1485        SymbolKind { value: SymbolKind::S_kUNTIL_MOD },
1486        SymbolKind { value: SymbolKind::S_kRESCUE_MOD },
1487        SymbolKind { value: SymbolKind::S_kALIAS },
1488        SymbolKind { value: SymbolKind::S_kDEFINED },
1489        SymbolKind { value: SymbolKind::S_klBEGIN },
1490        SymbolKind { value: SymbolKind::S_klEND },
1491        SymbolKind { value: SymbolKind::S_k__LINE__ },
1492        SymbolKind { value: SymbolKind::S_k__FILE__ },
1493        SymbolKind { value: SymbolKind::S_k__ENCODING__ },
1494        SymbolKind { value: SymbolKind::S_tIDENTIFIER },
1495        SymbolKind { value: SymbolKind::S_tFID },
1496        SymbolKind { value: SymbolKind::S_tGVAR },
1497        SymbolKind { value: SymbolKind::S_tIVAR },
1498        SymbolKind { value: SymbolKind::S_tCONSTANT },
1499        SymbolKind { value: SymbolKind::S_tCVAR },
1500        SymbolKind { value: SymbolKind::S_tLABEL },
1501        SymbolKind { value: SymbolKind::S_tINTEGER },
1502        SymbolKind { value: SymbolKind::S_tFLOAT },
1503        SymbolKind { value: SymbolKind::S_tRATIONAL },
1504        SymbolKind { value: SymbolKind::S_tIMAGINARY },
1505        SymbolKind { value: SymbolKind::S_tCHAR },
1506        SymbolKind { value: SymbolKind::S_tNTH_REF },
1507        SymbolKind { value: SymbolKind::S_tBACK_REF },
1508        SymbolKind { value: SymbolKind::S_tSTRING_CONTENT },
1509        SymbolKind { value: SymbolKind::S_tREGEXP_END },
1510        SymbolKind { value: SymbolKind::S_tDOT },
1511        SymbolKind { value: SymbolKind::S_tBACKSLASH },
1512        SymbolKind { value: SymbolKind::S_tSP },
1513        SymbolKind { value: SymbolKind::S_tSLASH_T },
1514        SymbolKind { value: SymbolKind::S_tSLASH_F },
1515        SymbolKind { value: SymbolKind::S_tSLASH_R },
1516        SymbolKind { value: SymbolKind::S_tVTAB },
1517        SymbolKind { value: SymbolKind::S_tUPLUS },
1518        SymbolKind { value: SymbolKind::S_tUMINUS },
1519        SymbolKind { value: SymbolKind::S_tPOW },
1520        SymbolKind { value: SymbolKind::S_tCMP },
1521        SymbolKind { value: SymbolKind::S_tEQ },
1522        SymbolKind { value: SymbolKind::S_tEQQ },
1523        SymbolKind { value: SymbolKind::S_tNEQ },
1524        SymbolKind { value: SymbolKind::S_tGEQ },
1525        SymbolKind { value: SymbolKind::S_tLEQ },
1526        SymbolKind { value: SymbolKind::S_tANDOP },
1527        SymbolKind { value: SymbolKind::S_tOROP },
1528        SymbolKind { value: SymbolKind::S_tMATCH },
1529        SymbolKind { value: SymbolKind::S_tNMATCH },
1530        SymbolKind { value: SymbolKind::S_tDOT2 },
1531        SymbolKind { value: SymbolKind::S_tDOT3 },
1532        SymbolKind { value: SymbolKind::S_tBDOT2 },
1533        SymbolKind { value: SymbolKind::S_tBDOT3 },
1534        SymbolKind { value: SymbolKind::S_tAREF },
1535        SymbolKind { value: SymbolKind::S_tASET },
1536        SymbolKind { value: SymbolKind::S_tLSHFT },
1537        SymbolKind { value: SymbolKind::S_tRSHFT },
1538        SymbolKind { value: SymbolKind::S_tANDDOT },
1539        SymbolKind { value: SymbolKind::S_tCOLON2 },
1540        SymbolKind { value: SymbolKind::S_tCOLON3 },
1541        SymbolKind { value: SymbolKind::S_tOP_ASGN },
1542        SymbolKind { value: SymbolKind::S_tASSOC },
1543        SymbolKind { value: SymbolKind::S_tLPAREN },
1544        SymbolKind { value: SymbolKind::S_tLPAREN_ARG },
1545        SymbolKind { value: SymbolKind::S_tRPAREN },
1546        SymbolKind { value: SymbolKind::S_tLBRACK },
1547        SymbolKind { value: SymbolKind::S_tLBRACE },
1548        SymbolKind { value: SymbolKind::S_tLBRACE_ARG },
1549        SymbolKind { value: SymbolKind::S_tSTAR },
1550        SymbolKind { value: SymbolKind::S_tDSTAR },
1551        SymbolKind { value: SymbolKind::S_tAMPER },
1552        SymbolKind { value: SymbolKind::S_tLAMBDA },
1553        SymbolKind { value: SymbolKind::S_tSYMBEG },
1554        SymbolKind { value: SymbolKind::S_tSTRING_BEG },
1555        SymbolKind { value: SymbolKind::S_tXSTRING_BEG },
1556        SymbolKind { value: SymbolKind::S_tREGEXP_BEG },
1557        SymbolKind { value: SymbolKind::S_tWORDS_BEG },
1558        SymbolKind { value: SymbolKind::S_tQWORDS_BEG },
1559        SymbolKind { value: SymbolKind::S_tSYMBOLS_BEG },
1560        SymbolKind { value: SymbolKind::S_tQSYMBOLS_BEG },
1561        SymbolKind { value: SymbolKind::S_tSTRING_END },
1562        SymbolKind { value: SymbolKind::S_tSTRING_DEND },
1563        SymbolKind { value: SymbolKind::S_tSTRING_DBEG },
1564        SymbolKind { value: SymbolKind::S_tSTRING_DVAR },
1565        SymbolKind { value: SymbolKind::S_tLAMBEG },
1566        SymbolKind { value: SymbolKind::S_tLABEL_END },
1567        SymbolKind { value: SymbolKind::S_tCOMMA },
1568        SymbolKind { value: SymbolKind::S_tLCURLY },
1569        SymbolKind { value: SymbolKind::S_tRCURLY },
1570        SymbolKind { value: SymbolKind::S_tLBRACK2 },
1571        SymbolKind { value: SymbolKind::S_tEQL },
1572        SymbolKind { value: SymbolKind::S_tPIPE },
1573        SymbolKind { value: SymbolKind::S_tAMPER2 },
1574        SymbolKind { value: SymbolKind::S_tGT },
1575        SymbolKind { value: SymbolKind::S_tLT },
1576        SymbolKind { value: SymbolKind::S_tBACK_REF2 },
1577        SymbolKind { value: SymbolKind::S_tCARET },
1578        SymbolKind { value: SymbolKind::S_tLPAREN2 },
1579        SymbolKind { value: SymbolKind::S_tRBRACK },
1580        SymbolKind { value: SymbolKind::S_tSEMI },
1581        SymbolKind { value: SymbolKind::S_tSPACE },
1582        SymbolKind { value: SymbolKind::S_tNL },
1583        SymbolKind { value: SymbolKind::S_tPLUS },
1584        SymbolKind { value: SymbolKind::S_tMINUS },
1585        SymbolKind { value: SymbolKind::S_tSTAR2 },
1586        SymbolKind { value: SymbolKind::S_tDIVIDE },
1587        SymbolKind { value: SymbolKind::S_tPERCENT },
1588        SymbolKind { value: SymbolKind::S_tTILDE },
1589        SymbolKind { value: SymbolKind::S_tBANG },
1590        SymbolKind { value: SymbolKind::S_tLOWEST },
1591        SymbolKind { value: SymbolKind::S_tEH },
1592        SymbolKind { value: SymbolKind::S_tCOLON },
1593        SymbolKind { value: SymbolKind::S_tUMINUS_NUM },
1594        SymbolKind { value: SymbolKind::S_tLAST_TOKEN },
1595        SymbolKind { value: SymbolKind::S_YYACCEPT },
1596        SymbolKind { value: SymbolKind::S_program },
1597        SymbolKind { value: SymbolKind::S_155_1 },
1598        SymbolKind { value: SymbolKind::S_top_compstmt },
1599        SymbolKind { value: SymbolKind::S_top_stmts },
1600        SymbolKind { value: SymbolKind::S_top_stmt },
1601        SymbolKind { value: SymbolKind::S_begin_block },
1602        SymbolKind { value: SymbolKind::S_bodystmt },
1603        SymbolKind { value: SymbolKind::S_compstmt },
1604        SymbolKind { value: SymbolKind::S_stmts },
1605        SymbolKind { value: SymbolKind::S_stmt_or_begin },
1606        SymbolKind { value: SymbolKind::S_164_2 },
1607        SymbolKind { value: SymbolKind::S_stmt },
1608        SymbolKind { value: SymbolKind::S_166_3 },
1609        SymbolKind { value: SymbolKind::S_command_asgn },
1610        SymbolKind { value: SymbolKind::S_command_rhs },
1611        SymbolKind { value: SymbolKind::S_expr },
1612        SymbolKind { value: SymbolKind::S_170_4 },
1613        SymbolKind { value: SymbolKind::S_171_5 },
1614        SymbolKind { value: SymbolKind::S_def_name },
1615        SymbolKind { value: SymbolKind::S_defn_head },
1616        SymbolKind { value: SymbolKind::S_defs_head },
1617        SymbolKind { value: SymbolKind::S_175_6 },
1618        SymbolKind { value: SymbolKind::S_expr_value },
1619        SymbolKind { value: SymbolKind::S_expr_value_do },
1620        SymbolKind { value: SymbolKind::S_178_7 },
1621        SymbolKind { value: SymbolKind::S_command_call },
1622        SymbolKind { value: SymbolKind::S_block_command },
1623        SymbolKind { value: SymbolKind::S_cmd_brace_block },
1624        SymbolKind { value: SymbolKind::S_182_8 },
1625        SymbolKind { value: SymbolKind::S_fcall },
1626        SymbolKind { value: SymbolKind::S_command },
1627        SymbolKind { value: SymbolKind::S_mlhs },
1628        SymbolKind { value: SymbolKind::S_mlhs_inner },
1629        SymbolKind { value: SymbolKind::S_mlhs_basic },
1630        SymbolKind { value: SymbolKind::S_mlhs_item },
1631        SymbolKind { value: SymbolKind::S_mlhs_head },
1632        SymbolKind { value: SymbolKind::S_mlhs_post },
1633        SymbolKind { value: SymbolKind::S_mlhs_node },
1634        SymbolKind { value: SymbolKind::S_lhs },
1635        SymbolKind { value: SymbolKind::S_cname },
1636        SymbolKind { value: SymbolKind::S_cpath },
1637        SymbolKind { value: SymbolKind::S_fname },
1638        SymbolKind { value: SymbolKind::S_fitem },
1639        SymbolKind { value: SymbolKind::S_undef_list },
1640        SymbolKind { value: SymbolKind::S_198_9 },
1641        SymbolKind { value: SymbolKind::S_op },
1642        SymbolKind { value: SymbolKind::S_reswords },
1643        SymbolKind { value: SymbolKind::S_arg },
1644        SymbolKind { value: SymbolKind::S_202_10 },
1645        SymbolKind { value: SymbolKind::S_relop },
1646        SymbolKind { value: SymbolKind::S_rel_expr },
1647        SymbolKind { value: SymbolKind::S_arg_value },
1648        SymbolKind { value: SymbolKind::S_aref_args },
1649        SymbolKind { value: SymbolKind::S_arg_rhs },
1650        SymbolKind { value: SymbolKind::S_paren_args },
1651        SymbolKind { value: SymbolKind::S_opt_paren_args },
1652        SymbolKind { value: SymbolKind::S_opt_call_args },
1653        SymbolKind { value: SymbolKind::S_call_args },
1654        SymbolKind { value: SymbolKind::S_command_args },
1655        SymbolKind { value: SymbolKind::S_213_11 },
1656        SymbolKind { value: SymbolKind::S_block_arg },
1657        SymbolKind { value: SymbolKind::S_opt_block_arg },
1658        SymbolKind { value: SymbolKind::S_args },
1659        SymbolKind { value: SymbolKind::S_mrhs_arg },
1660        SymbolKind { value: SymbolKind::S_mrhs },
1661        SymbolKind { value: SymbolKind::S_primary },
1662        SymbolKind { value: SymbolKind::S_220_12 },
1663        SymbolKind { value: SymbolKind::S_221_13 },
1664        SymbolKind { value: SymbolKind::S_222_14 },
1665        SymbolKind { value: SymbolKind::S_223_15 },
1666        SymbolKind { value: SymbolKind::S_224_16 },
1667        SymbolKind { value: SymbolKind::S_225_17 },
1668        SymbolKind { value: SymbolKind::S_226_18 },
1669        SymbolKind { value: SymbolKind::S_227_19 },
1670        SymbolKind { value: SymbolKind::S_228_20 },
1671        SymbolKind { value: SymbolKind::S_primary_value },
1672        SymbolKind { value: SymbolKind::S_k_begin },
1673        SymbolKind { value: SymbolKind::S_k_if },
1674        SymbolKind { value: SymbolKind::S_k_unless },
1675        SymbolKind { value: SymbolKind::S_k_while },
1676        SymbolKind { value: SymbolKind::S_k_until },
1677        SymbolKind { value: SymbolKind::S_k_case },
1678        SymbolKind { value: SymbolKind::S_k_for },
1679        SymbolKind { value: SymbolKind::S_k_class },
1680        SymbolKind { value: SymbolKind::S_k_module },
1681        SymbolKind { value: SymbolKind::S_k_def },
1682        SymbolKind { value: SymbolKind::S_k_do },
1683        SymbolKind { value: SymbolKind::S_k_do_block },
1684        SymbolKind { value: SymbolKind::S_k_rescue },
1685        SymbolKind { value: SymbolKind::S_k_ensure },
1686        SymbolKind { value: SymbolKind::S_k_when },
1687        SymbolKind { value: SymbolKind::S_k_else },
1688        SymbolKind { value: SymbolKind::S_k_elsif },
1689        SymbolKind { value: SymbolKind::S_k_end },
1690        SymbolKind { value: SymbolKind::S_k_return },
1691        SymbolKind { value: SymbolKind::S_then },
1692        SymbolKind { value: SymbolKind::S_do },
1693        SymbolKind { value: SymbolKind::S_if_tail },
1694        SymbolKind { value: SymbolKind::S_opt_else },
1695        SymbolKind { value: SymbolKind::S_for_var },
1696        SymbolKind { value: SymbolKind::S_f_marg },
1697        SymbolKind { value: SymbolKind::S_f_marg_list },
1698        SymbolKind { value: SymbolKind::S_f_margs },
1699        SymbolKind { value: SymbolKind::S_f_rest_marg },
1700        SymbolKind { value: SymbolKind::S_f_any_kwrest },
1701        SymbolKind { value: SymbolKind::S_f_eq },
1702        SymbolKind { value: SymbolKind::S_260_21 },
1703        SymbolKind { value: SymbolKind::S_block_args_tail },
1704        SymbolKind { value: SymbolKind::S_opt_block_args_tail },
1705        SymbolKind { value: SymbolKind::S_excessed_comma },
1706        SymbolKind { value: SymbolKind::S_block_param },
1707        SymbolKind { value: SymbolKind::S_opt_block_param },
1708        SymbolKind { value: SymbolKind::S_block_param_def },
1709        SymbolKind { value: SymbolKind::S_opt_bv_decl },
1710        SymbolKind { value: SymbolKind::S_bv_decls },
1711        SymbolKind { value: SymbolKind::S_bvar },
1712        SymbolKind { value: SymbolKind::S_lambda },
1713        SymbolKind { value: SymbolKind::S_271_22 },
1714        SymbolKind { value: SymbolKind::S_272_23 },
1715        SymbolKind { value: SymbolKind::S_273_24 },
1716        SymbolKind { value: SymbolKind::S_f_larglist },
1717        SymbolKind { value: SymbolKind::S_lambda_body },
1718        SymbolKind { value: SymbolKind::S_276_25 },
1719        SymbolKind { value: SymbolKind::S_277_26 },
1720        SymbolKind { value: SymbolKind::S_do_block },
1721        SymbolKind { value: SymbolKind::S_279_27 },
1722        SymbolKind { value: SymbolKind::S_block_call },
1723        SymbolKind { value: SymbolKind::S_method_call },
1724        SymbolKind { value: SymbolKind::S_brace_block },
1725        SymbolKind { value: SymbolKind::S_283_28 },
1726        SymbolKind { value: SymbolKind::S_284_29 },
1727        SymbolKind { value: SymbolKind::S_brace_body },
1728        SymbolKind { value: SymbolKind::S_286_30 },
1729        SymbolKind { value: SymbolKind::S_do_body },
1730        SymbolKind { value: SymbolKind::S_288_31 },
1731        SymbolKind { value: SymbolKind::S_case_args },
1732        SymbolKind { value: SymbolKind::S_case_body },
1733        SymbolKind { value: SymbolKind::S_cases },
1734        SymbolKind { value: SymbolKind::S_p_case_body },
1735        SymbolKind { value: SymbolKind::S_293_32 },
1736        SymbolKind { value: SymbolKind::S_294_33 },
1737        SymbolKind { value: SymbolKind::S_p_cases },
1738        SymbolKind { value: SymbolKind::S_p_top_expr },
1739        SymbolKind { value: SymbolKind::S_p_top_expr_body },
1740        SymbolKind { value: SymbolKind::S_p_expr },
1741        SymbolKind { value: SymbolKind::S_p_as },
1742        SymbolKind { value: SymbolKind::S_p_alt },
1743        SymbolKind { value: SymbolKind::S_p_lparen },
1744        SymbolKind { value: SymbolKind::S_p_lbracket },
1745        SymbolKind { value: SymbolKind::S_p_expr_basic },
1746        SymbolKind { value: SymbolKind::S_304_34 },
1747        SymbolKind { value: SymbolKind::S_305_35 },
1748        SymbolKind { value: SymbolKind::S_p_args },
1749        SymbolKind { value: SymbolKind::S_p_args_head },
1750        SymbolKind { value: SymbolKind::S_p_args_tail },
1751        SymbolKind { value: SymbolKind::S_p_find },
1752        SymbolKind { value: SymbolKind::S_p_rest },
1753        SymbolKind { value: SymbolKind::S_p_args_post },
1754        SymbolKind { value: SymbolKind::S_p_arg },
1755        SymbolKind { value: SymbolKind::S_p_kwargs },
1756        SymbolKind { value: SymbolKind::S_p_kwarg },
1757        SymbolKind { value: SymbolKind::S_p_kw },
1758        SymbolKind { value: SymbolKind::S_p_kw_label },
1759        SymbolKind { value: SymbolKind::S_p_kwrest },
1760        SymbolKind { value: SymbolKind::S_p_kwnorest },
1761        SymbolKind { value: SymbolKind::S_p_any_kwrest },
1762        SymbolKind { value: SymbolKind::S_p_value },
1763        SymbolKind { value: SymbolKind::S_p_primitive },
1764        SymbolKind { value: SymbolKind::S_p_variable },
1765        SymbolKind { value: SymbolKind::S_p_var_ref },
1766        SymbolKind { value: SymbolKind::S_p_expr_ref },
1767        SymbolKind { value: SymbolKind::S_p_const },
1768        SymbolKind { value: SymbolKind::S_opt_rescue },
1769        SymbolKind { value: SymbolKind::S_exc_list },
1770        SymbolKind { value: SymbolKind::S_exc_var },
1771        SymbolKind { value: SymbolKind::S_opt_ensure },
1772        SymbolKind { value: SymbolKind::S_literal },
1773        SymbolKind { value: SymbolKind::S_strings },
1774        SymbolKind { value: SymbolKind::S_string },
1775        SymbolKind { value: SymbolKind::S_string1 },
1776        SymbolKind { value: SymbolKind::S_xstring },
1777        SymbolKind { value: SymbolKind::S_regexp },
1778        SymbolKind { value: SymbolKind::S_words },
1779        SymbolKind { value: SymbolKind::S_word_list },
1780        SymbolKind { value: SymbolKind::S_word },
1781        SymbolKind { value: SymbolKind::S_symbols },
1782        SymbolKind { value: SymbolKind::S_symbol_list },
1783        SymbolKind { value: SymbolKind::S_qwords },
1784        SymbolKind { value: SymbolKind::S_qsymbols },
1785        SymbolKind { value: SymbolKind::S_qword_list },
1786        SymbolKind { value: SymbolKind::S_qsym_list },
1787        SymbolKind { value: SymbolKind::S_string_contents },
1788        SymbolKind { value: SymbolKind::S_xstring_contents },
1789        SymbolKind { value: SymbolKind::S_regexp_contents },
1790        SymbolKind { value: SymbolKind::S_string_content },
1791        SymbolKind { value: SymbolKind::S_349_36 },
1792        SymbolKind { value: SymbolKind::S_350_37 },
1793        SymbolKind { value: SymbolKind::S_351_38 },
1794        SymbolKind { value: SymbolKind::S_352_39 },
1795        SymbolKind { value: SymbolKind::S_353_40 },
1796        SymbolKind { value: SymbolKind::S_354_41 },
1797        SymbolKind { value: SymbolKind::S_string_dvar },
1798        SymbolKind { value: SymbolKind::S_symbol },
1799        SymbolKind { value: SymbolKind::S_ssym },
1800        SymbolKind { value: SymbolKind::S_sym },
1801        SymbolKind { value: SymbolKind::S_dsym },
1802        SymbolKind { value: SymbolKind::S_numeric },
1803        SymbolKind { value: SymbolKind::S_simple_numeric },
1804        SymbolKind { value: SymbolKind::S_nonlocal_var },
1805        SymbolKind { value: SymbolKind::S_user_variable },
1806        SymbolKind { value: SymbolKind::S_keyword_variable },
1807        SymbolKind { value: SymbolKind::S_var_ref },
1808        SymbolKind { value: SymbolKind::S_var_lhs },
1809        SymbolKind { value: SymbolKind::S_backref },
1810        SymbolKind { value: SymbolKind::S_superclass },
1811        SymbolKind { value: SymbolKind::S_369_42 },
1812        SymbolKind { value: SymbolKind::S_f_opt_paren_args },
1813        SymbolKind { value: SymbolKind::S_f_paren_args },
1814        SymbolKind { value: SymbolKind::S_f_arglist },
1815        SymbolKind { value: SymbolKind::S_373_43 },
1816        SymbolKind { value: SymbolKind::S_args_tail },
1817        SymbolKind { value: SymbolKind::S_opt_args_tail },
1818        SymbolKind { value: SymbolKind::S_f_args },
1819        SymbolKind { value: SymbolKind::S_args_forward },
1820        SymbolKind { value: SymbolKind::S_f_bad_arg },
1821        SymbolKind { value: SymbolKind::S_f_norm_arg },
1822        SymbolKind { value: SymbolKind::S_f_arg_asgn },
1823        SymbolKind { value: SymbolKind::S_f_arg_item },
1824        SymbolKind { value: SymbolKind::S_f_arg },
1825        SymbolKind { value: SymbolKind::S_f_label },
1826        SymbolKind { value: SymbolKind::S_f_kw },
1827        SymbolKind { value: SymbolKind::S_f_block_kw },
1828        SymbolKind { value: SymbolKind::S_f_block_kwarg },
1829        SymbolKind { value: SymbolKind::S_f_kwarg },
1830        SymbolKind { value: SymbolKind::S_kwrest_mark },
1831        SymbolKind { value: SymbolKind::S_f_no_kwarg },
1832        SymbolKind { value: SymbolKind::S_f_kwrest },
1833        SymbolKind { value: SymbolKind::S_f_opt },
1834        SymbolKind { value: SymbolKind::S_f_block_opt },
1835        SymbolKind { value: SymbolKind::S_f_block_optarg },
1836        SymbolKind { value: SymbolKind::S_f_optarg },
1837        SymbolKind { value: SymbolKind::S_restarg_mark },
1838        SymbolKind { value: SymbolKind::S_f_rest_arg },
1839        SymbolKind { value: SymbolKind::S_blkarg_mark },
1840        SymbolKind { value: SymbolKind::S_f_block_arg },
1841        SymbolKind { value: SymbolKind::S_opt_f_block_arg },
1842        SymbolKind { value: SymbolKind::S_singleton },
1843        SymbolKind { value: SymbolKind::S_401_44 },
1844        SymbolKind { value: SymbolKind::S_assoc_list },
1845        SymbolKind { value: SymbolKind::S_assocs },
1846        SymbolKind { value: SymbolKind::S_assoc },
1847        SymbolKind { value: SymbolKind::S_operation },
1848        SymbolKind { value: SymbolKind::S_operation2 },
1849        SymbolKind { value: SymbolKind::S_operation3 },
1850        SymbolKind { value: SymbolKind::S_dot_or_colon },
1851        SymbolKind { value: SymbolKind::S_call_op },
1852        SymbolKind { value: SymbolKind::S_call_op2 },
1853        SymbolKind { value: SymbolKind::S_opt_terms },
1854        SymbolKind { value: SymbolKind::S_opt_nl },
1855        SymbolKind { value: SymbolKind::S_rparen },
1856        SymbolKind { value: SymbolKind::S_rbracket },
1857        SymbolKind { value: SymbolKind::S_rbrace },
1858        SymbolKind { value: SymbolKind::S_trailer },
1859        SymbolKind { value: SymbolKind::S_term },
1860        SymbolKind { value: SymbolKind::S_terms },
1861        SymbolKind { value: SymbolKind::S_none }
1862    ];
1863
1864    pub(crate) fn get(n: i32) -> &'static SymbolKind {
1865        &Self::VALUES_[i32_to_usize(n)]
1866    }
1867
1868    pub(crate) fn code(&self) -> i32 {
1869        self.value
1870    }
1871
1872    /* YYNAMES_[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1873    First, the terminals, then, starting at \a YYNTOKENS_, nonterminals.  */
1874    #[allow(non_upper_case_globals)]
1875const yynames_: &'static [&'static str] = &[ "end-of-input", "error", "invalid token", "`class'", "`module'",
1876  "`def'", "`undef'", "`begin'", "`rescue'", "`ensure'", "`end'", "`if'",
1877  "`unless'", "`then'", "`elsif'", "`else'", "`case'", "`when'", "`while'",
1878  "`until'", "`for'", "`break'", "`next'", "`redo'", "`retry'", "`in'",
1879  "`do'", "`do' for condition", "`do' for block", "`do' for lambda",
1880  "`return'", "`yield'", "`super'", "`self'", "`nil'", "`true'", "`false'",
1881  "`and'", "`or'", "`not'", "`if' modifier", "`unless' modifier",
1882  "`while' modifier", "`until' modifier", "`rescue' modifier", "`alias'",
1883  "`defined?'", "`BEGIN'", "`END'", "`__LINE__'", "`__FILE__'",
1884  "`__ENCODING__'", "local variable or method", "method",
1885  "global variable", "instance variable", "constant", "class variable",
1886  "label", "integer literal", "float literal", "rational literal",
1887  "imaginary literal", "char literal", "numbered reference",
1888  "back reference", "literal content", "tREGEXP_END", "tDOT", "backslash",
1889  "escaped space", "escaped horizontal tab", "escaped form feed",
1890  "escaped carriage return", "escaped vertical tab", "unary+", "unary-",
1891  "**", "<=>", "==", "===", "!=", ">=", "<=", "&&", "||", "=~", "!~", "..",
1892  "...", "(..", "(...", "[]", "[]=", "<<", ">>", "&.", "::",
1893  ":: at EXPR_BEG", "operator-assignment", "=>", "(", "( arg", ")", "[",
1894  "{", "{ arg", "*", "**arg", "&", "->", "symbol literal", "string begin",
1895  "backtick literal", "regexp literal", "word list", "verbatim word list",
1896  "symbol list", "verbatim symbol list", "string end", "tRCURLY",
1897  "tSTRING_DBEG", "tSTRING_DVAR", "tLAMBEG", "tLABEL_END", ",",
1898  "{ (tLCURLY)", "}", "[ (tLBRACK2)", "=", "|", "& (tAMPER2)", ">", "<",
1899  "`", "^", "( (tLPAREN2)", "]", ";", " ", "\n", "+", "-", "* (tSTAR2)",
1900  "/", "%", "~", "!", "tLOWEST", "tEH", "tCOLON", "tUMINUS_NUM",
1901  "tLAST_TOKEN", "$accept", "program", "@1", "top_compstmt", "top_stmts",
1902  "top_stmt", "begin_block", "bodystmt", "compstmt", "stmts",
1903  "stmt_or_begin", "$@2", "stmt", "@3", "command_asgn", "command_rhs",
1904  "expr", "@4", "@5", "def_name", "defn_head", "defs_head", "@6",
1905  "expr_value", "expr_value_do", "@7", "command_call", "block_command",
1906  "cmd_brace_block", "@8", "fcall", "command", "mlhs", "mlhs_inner",
1907  "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post", "mlhs_node", "lhs",
1908  "cname", "cpath", "fname", "fitem", "undef_list", "@9", "op", "reswords",
1909  "arg", "@10", "relop", "rel_expr", "arg_value", "aref_args", "arg_rhs",
1910  "paren_args", "opt_paren_args", "opt_call_args", "call_args",
1911  "command_args", "@11", "block_arg", "opt_block_arg", "args", "mrhs_arg",
1912  "mrhs", "primary", "@12", "@13", "@14", "@15", "@16", "@17", "@18",
1913  "@19", "@20", "primary_value", "k_begin", "k_if", "k_unless", "k_while",
1914  "k_until", "k_case", "k_for", "k_class", "k_module", "k_def", "k_do",
1915  "k_do_block", "k_rescue", "k_ensure", "k_when", "k_else", "k_elsif",
1916  "k_end", "k_return", "then", "do", "if_tail", "opt_else", "for_var",
1917  "f_marg", "f_marg_list", "f_margs", "f_rest_marg", "f_any_kwrest",
1918  "f_eq", "@21", "block_args_tail", "opt_block_args_tail",
1919  "excessed_comma", "block_param", "opt_block_param", "block_param_def",
1920  "opt_bv_decl", "bv_decls", "bvar", "lambda", "@22", "@23", "@24",
1921  "f_larglist", "lambda_body", "@25", "@26", "do_block", "@27",
1922  "block_call", "method_call", "brace_block", "@28", "@29", "brace_body",
1923  "@30", "do_body", "@31", "case_args", "case_body", "cases",
1924  "p_case_body", "@32", "@33", "p_cases", "p_top_expr", "p_top_expr_body",
1925  "p_expr", "p_as", "p_alt", "p_lparen", "p_lbracket", "p_expr_basic",
1926  "@34", "@35", "p_args", "p_args_head", "p_args_tail", "p_find", "p_rest",
1927  "p_args_post", "p_arg", "p_kwargs", "p_kwarg", "p_kw", "p_kw_label",
1928  "p_kwrest", "p_kwnorest", "p_any_kwrest", "p_value", "p_primitive",
1929  "p_variable", "p_var_ref", "p_expr_ref", "p_const", "opt_rescue",
1930  "exc_list", "exc_var", "opt_ensure", "literal", "strings", "string",
1931  "string1", "xstring", "regexp", "words", "word_list", "word", "symbols",
1932  "symbol_list", "qwords", "qsymbols", "qword_list", "qsym_list",
1933  "string_contents", "xstring_contents", "regexp_contents",
1934  "string_content", "@36", "@37", "@38", "@39", "@40", "@41",
1935  "string_dvar", "symbol", "ssym", "sym", "dsym", "numeric",
1936  "simple_numeric", "nonlocal_var", "user_variable", "keyword_variable",
1937  "var_ref", "var_lhs", "backref", "superclass", "@42", "f_opt_paren_args",
1938  "f_paren_args", "f_arglist", "@43", "args_tail", "opt_args_tail",
1939  "f_args", "args_forward", "f_bad_arg", "f_norm_arg", "f_arg_asgn",
1940  "f_arg_item", "f_arg", "f_label", "f_kw", "f_block_kw", "f_block_kwarg",
1941  "f_kwarg", "kwrest_mark", "f_no_kwarg", "f_kwrest", "f_opt",
1942  "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark",
1943  "f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg",
1944  "singleton", "@44", "assoc_list", "assocs", "assoc", "operation",
1945  "operation2", "operation3", "dot_or_colon", "call_op", "call_op2",
1946  "opt_terms", "opt_nl", "rparen", "rbracket", "rbrace", "trailer", "term",
1947  "terms", "none", "<<NULL>>" ] ;
1948
1949    /* The user-facing name of this symbol.  */
1950    pub(crate) fn name(&self) -> String {
1951        let code: usize = self.code().try_into().unwrap();
1952        Self::yynames_[code].to_owned()
1953    }
1954}
1955
1956
1957const DYMMY_SYMBOL_KIND: SymbolKind = SymbolKind { value: 0 };
1958
1959impl Lexer {
1960        /* Token kinds.  */
1961    /// Token `` "end-of-input" ``, to be returned by the scanner.
1962    #[allow(non_upper_case_globals, dead_code)]
1963    pub const END_OF_INPUT: i32 = 0;
1964    /// Token `` error ``, to be returned by the scanner.
1965    #[allow(non_upper_case_globals, dead_code)]
1966    pub const YYerror: i32 = 256;
1967    /// Token `` "invalid token" ``, to be returned by the scanner.
1968    #[allow(non_upper_case_globals, dead_code)]
1969    pub const YYUNDEF: i32 = 257;
1970    /// Token `` "`class'" ``, to be returned by the scanner.
1971    #[allow(non_upper_case_globals, dead_code)]
1972    pub const kCLASS: i32 = 258;
1973    /// Token `` "`module'" ``, to be returned by the scanner.
1974    #[allow(non_upper_case_globals, dead_code)]
1975    pub const kMODULE: i32 = 259;
1976    /// Token `` "`def'" ``, to be returned by the scanner.
1977    #[allow(non_upper_case_globals, dead_code)]
1978    pub const kDEF: i32 = 260;
1979    /// Token `` "`undef'" ``, to be returned by the scanner.
1980    #[allow(non_upper_case_globals, dead_code)]
1981    pub const kUNDEF: i32 = 261;
1982    /// Token `` "`begin'" ``, to be returned by the scanner.
1983    #[allow(non_upper_case_globals, dead_code)]
1984    pub const kBEGIN: i32 = 262;
1985    /// Token `` "`rescue'" ``, to be returned by the scanner.
1986    #[allow(non_upper_case_globals, dead_code)]
1987    pub const kRESCUE: i32 = 263;
1988    /// Token `` "`ensure'" ``, to be returned by the scanner.
1989    #[allow(non_upper_case_globals, dead_code)]
1990    pub const kENSURE: i32 = 264;
1991    /// Token `` "`end'" ``, to be returned by the scanner.
1992    #[allow(non_upper_case_globals, dead_code)]
1993    pub const kEND: i32 = 265;
1994    /// Token `` "`if'" ``, to be returned by the scanner.
1995    #[allow(non_upper_case_globals, dead_code)]
1996    pub const kIF: i32 = 266;
1997    /// Token `` "`unless'" ``, to be returned by the scanner.
1998    #[allow(non_upper_case_globals, dead_code)]
1999    pub const kUNLESS: i32 = 267;
2000    /// Token `` "`then'" ``, to be returned by the scanner.
2001    #[allow(non_upper_case_globals, dead_code)]
2002    pub const kTHEN: i32 = 268;
2003    /// Token `` "`elsif'" ``, to be returned by the scanner.
2004    #[allow(non_upper_case_globals, dead_code)]
2005    pub const kELSIF: i32 = 269;
2006    /// Token `` "`else'" ``, to be returned by the scanner.
2007    #[allow(non_upper_case_globals, dead_code)]
2008    pub const kELSE: i32 = 270;
2009    /// Token `` "`case'" ``, to be returned by the scanner.
2010    #[allow(non_upper_case_globals, dead_code)]
2011    pub const kCASE: i32 = 271;
2012    /// Token `` "`when'" ``, to be returned by the scanner.
2013    #[allow(non_upper_case_globals, dead_code)]
2014    pub const kWHEN: i32 = 272;
2015    /// Token `` "`while'" ``, to be returned by the scanner.
2016    #[allow(non_upper_case_globals, dead_code)]
2017    pub const kWHILE: i32 = 273;
2018    /// Token `` "`until'" ``, to be returned by the scanner.
2019    #[allow(non_upper_case_globals, dead_code)]
2020    pub const kUNTIL: i32 = 274;
2021    /// Token `` "`for'" ``, to be returned by the scanner.
2022    #[allow(non_upper_case_globals, dead_code)]
2023    pub const kFOR: i32 = 275;
2024    /// Token `` "`break'" ``, to be returned by the scanner.
2025    #[allow(non_upper_case_globals, dead_code)]
2026    pub const kBREAK: i32 = 276;
2027    /// Token `` "`next'" ``, to be returned by the scanner.
2028    #[allow(non_upper_case_globals, dead_code)]
2029    pub const kNEXT: i32 = 277;
2030    /// Token `` "`redo'" ``, to be returned by the scanner.
2031    #[allow(non_upper_case_globals, dead_code)]
2032    pub const kREDO: i32 = 278;
2033    /// Token `` "`retry'" ``, to be returned by the scanner.
2034    #[allow(non_upper_case_globals, dead_code)]
2035    pub const kRETRY: i32 = 279;
2036    /// Token `` "`in'" ``, to be returned by the scanner.
2037    #[allow(non_upper_case_globals, dead_code)]
2038    pub const kIN: i32 = 280;
2039    /// Token `` "`do'" ``, to be returned by the scanner.
2040    #[allow(non_upper_case_globals, dead_code)]
2041    pub const kDO: i32 = 281;
2042    /// Token `` "`do' for condition" ``, to be returned by the scanner.
2043    #[allow(non_upper_case_globals, dead_code)]
2044    pub const kDO_COND: i32 = 282;
2045    /// Token `` "`do' for block" ``, to be returned by the scanner.
2046    #[allow(non_upper_case_globals, dead_code)]
2047    pub const kDO_BLOCK: i32 = 283;
2048    /// Token `` "`do' for lambda" ``, to be returned by the scanner.
2049    #[allow(non_upper_case_globals, dead_code)]
2050    pub const kDO_LAMBDA: i32 = 284;
2051    /// Token `` "`return'" ``, to be returned by the scanner.
2052    #[allow(non_upper_case_globals, dead_code)]
2053    pub const kRETURN: i32 = 285;
2054    /// Token `` "`yield'" ``, to be returned by the scanner.
2055    #[allow(non_upper_case_globals, dead_code)]
2056    pub const kYIELD: i32 = 286;
2057    /// Token `` "`super'" ``, to be returned by the scanner.
2058    #[allow(non_upper_case_globals, dead_code)]
2059    pub const kSUPER: i32 = 287;
2060    /// Token `` "`self'" ``, to be returned by the scanner.
2061    #[allow(non_upper_case_globals, dead_code)]
2062    pub const kSELF: i32 = 288;
2063    /// Token `` "`nil'" ``, to be returned by the scanner.
2064    #[allow(non_upper_case_globals, dead_code)]
2065    pub const kNIL: i32 = 289;
2066    /// Token `` "`true'" ``, to be returned by the scanner.
2067    #[allow(non_upper_case_globals, dead_code)]
2068    pub const kTRUE: i32 = 290;
2069    /// Token `` "`false'" ``, to be returned by the scanner.
2070    #[allow(non_upper_case_globals, dead_code)]
2071    pub const kFALSE: i32 = 291;
2072    /// Token `` "`and'" ``, to be returned by the scanner.
2073    #[allow(non_upper_case_globals, dead_code)]
2074    pub const kAND: i32 = 292;
2075    /// Token `` "`or'" ``, to be returned by the scanner.
2076    #[allow(non_upper_case_globals, dead_code)]
2077    pub const kOR: i32 = 293;
2078    /// Token `` "`not'" ``, to be returned by the scanner.
2079    #[allow(non_upper_case_globals, dead_code)]
2080    pub const kNOT: i32 = 294;
2081    /// Token `` "`if' modifier" ``, to be returned by the scanner.
2082    #[allow(non_upper_case_globals, dead_code)]
2083    pub const kIF_MOD: i32 = 295;
2084    /// Token `` "`unless' modifier" ``, to be returned by the scanner.
2085    #[allow(non_upper_case_globals, dead_code)]
2086    pub const kUNLESS_MOD: i32 = 296;
2087    /// Token `` "`while' modifier" ``, to be returned by the scanner.
2088    #[allow(non_upper_case_globals, dead_code)]
2089    pub const kWHILE_MOD: i32 = 297;
2090    /// Token `` "`until' modifier" ``, to be returned by the scanner.
2091    #[allow(non_upper_case_globals, dead_code)]
2092    pub const kUNTIL_MOD: i32 = 298;
2093    /// Token `` "`rescue' modifier" ``, to be returned by the scanner.
2094    #[allow(non_upper_case_globals, dead_code)]
2095    pub const kRESCUE_MOD: i32 = 299;
2096    /// Token `` "`alias'" ``, to be returned by the scanner.
2097    #[allow(non_upper_case_globals, dead_code)]
2098    pub const kALIAS: i32 = 300;
2099    /// Token `` "`defined?'" ``, to be returned by the scanner.
2100    #[allow(non_upper_case_globals, dead_code)]
2101    pub const kDEFINED: i32 = 301;
2102    /// Token `` "`BEGIN'" ``, to be returned by the scanner.
2103    #[allow(non_upper_case_globals, dead_code)]
2104    pub const klBEGIN: i32 = 302;
2105    /// Token `` "`END'" ``, to be returned by the scanner.
2106    #[allow(non_upper_case_globals, dead_code)]
2107    pub const klEND: i32 = 303;
2108    /// Token `` "`__LINE__'" ``, to be returned by the scanner.
2109    #[allow(non_upper_case_globals, dead_code)]
2110    pub const k__LINE__: i32 = 304;
2111    /// Token `` "`__FILE__'" ``, to be returned by the scanner.
2112    #[allow(non_upper_case_globals, dead_code)]
2113    pub const k__FILE__: i32 = 305;
2114    /// Token `` "`__ENCODING__'" ``, to be returned by the scanner.
2115    #[allow(non_upper_case_globals, dead_code)]
2116    pub const k__ENCODING__: i32 = 306;
2117    /// Token `` "local variable or method" ``, to be returned by the scanner.
2118    #[allow(non_upper_case_globals, dead_code)]
2119    pub const tIDENTIFIER: i32 = 307;
2120    /// Token `` "method" ``, to be returned by the scanner.
2121    #[allow(non_upper_case_globals, dead_code)]
2122    pub const tFID: i32 = 308;
2123    /// Token `` "global variable" ``, to be returned by the scanner.
2124    #[allow(non_upper_case_globals, dead_code)]
2125    pub const tGVAR: i32 = 309;
2126    /// Token `` "instance variable" ``, to be returned by the scanner.
2127    #[allow(non_upper_case_globals, dead_code)]
2128    pub const tIVAR: i32 = 310;
2129    /// Token `` "constant" ``, to be returned by the scanner.
2130    #[allow(non_upper_case_globals, dead_code)]
2131    pub const tCONSTANT: i32 = 311;
2132    /// Token `` "class variable" ``, to be returned by the scanner.
2133    #[allow(non_upper_case_globals, dead_code)]
2134    pub const tCVAR: i32 = 312;
2135    /// Token `` "label" ``, to be returned by the scanner.
2136    #[allow(non_upper_case_globals, dead_code)]
2137    pub const tLABEL: i32 = 313;
2138    /// Token `` "integer literal" ``, to be returned by the scanner.
2139    #[allow(non_upper_case_globals, dead_code)]
2140    pub const tINTEGER: i32 = 314;
2141    /// Token `` "float literal" ``, to be returned by the scanner.
2142    #[allow(non_upper_case_globals, dead_code)]
2143    pub const tFLOAT: i32 = 315;
2144    /// Token `` "rational literal" ``, to be returned by the scanner.
2145    #[allow(non_upper_case_globals, dead_code)]
2146    pub const tRATIONAL: i32 = 316;
2147    /// Token `` "imaginary literal" ``, to be returned by the scanner.
2148    #[allow(non_upper_case_globals, dead_code)]
2149    pub const tIMAGINARY: i32 = 317;
2150    /// Token `` "char literal" ``, to be returned by the scanner.
2151    #[allow(non_upper_case_globals, dead_code)]
2152    pub const tCHAR: i32 = 318;
2153    /// Token `` "numbered reference" ``, to be returned by the scanner.
2154    #[allow(non_upper_case_globals, dead_code)]
2155    pub const tNTH_REF: i32 = 319;
2156    /// Token `` "back reference" ``, to be returned by the scanner.
2157    #[allow(non_upper_case_globals, dead_code)]
2158    pub const tBACK_REF: i32 = 320;
2159    /// Token `` "literal content" ``, to be returned by the scanner.
2160    #[allow(non_upper_case_globals, dead_code)]
2161    pub const tSTRING_CONTENT: i32 = 321;
2162    /// Token `` tREGEXP_END ``, to be returned by the scanner.
2163    #[allow(non_upper_case_globals, dead_code)]
2164    pub const tREGEXP_END: i32 = 322;
2165    /// Token `` tDOT ``, to be returned by the scanner.
2166    #[allow(non_upper_case_globals, dead_code)]
2167    pub const tDOT: i32 = 323;
2168    /// Token `` "backslash" ``, to be returned by the scanner.
2169    #[allow(non_upper_case_globals, dead_code)]
2170    pub const tBACKSLASH: i32 = 324;
2171    /// Token `` "escaped space" ``, to be returned by the scanner.
2172    #[allow(non_upper_case_globals, dead_code)]
2173    pub const tSP: i32 = 325;
2174    /// Token `` "escaped horizontal tab" ``, to be returned by the scanner.
2175    #[allow(non_upper_case_globals, dead_code)]
2176    pub const tSLASH_T: i32 = 326;
2177    /// Token `` "escaped form feed" ``, to be returned by the scanner.
2178    #[allow(non_upper_case_globals, dead_code)]
2179    pub const tSLASH_F: i32 = 327;
2180    /// Token `` "escaped carriage return" ``, to be returned by the scanner.
2181    #[allow(non_upper_case_globals, dead_code)]
2182    pub const tSLASH_R: i32 = 328;
2183    /// Token `` "escaped vertical tab" ``, to be returned by the scanner.
2184    #[allow(non_upper_case_globals, dead_code)]
2185    pub const tVTAB: i32 = 329;
2186    /// Token `` "unary+" ``, to be returned by the scanner.
2187    #[allow(non_upper_case_globals, dead_code)]
2188    pub const tUPLUS: i32 = 330;
2189    /// Token `` "unary-" ``, to be returned by the scanner.
2190    #[allow(non_upper_case_globals, dead_code)]
2191    pub const tUMINUS: i32 = 331;
2192    /// Token `` "**" ``, to be returned by the scanner.
2193    #[allow(non_upper_case_globals, dead_code)]
2194    pub const tPOW: i32 = 332;
2195    /// Token `` "<=>" ``, to be returned by the scanner.
2196    #[allow(non_upper_case_globals, dead_code)]
2197    pub const tCMP: i32 = 333;
2198    /// Token `` "==" ``, to be returned by the scanner.
2199    #[allow(non_upper_case_globals, dead_code)]
2200    pub const tEQ: i32 = 334;
2201    /// Token `` "===" ``, to be returned by the scanner.
2202    #[allow(non_upper_case_globals, dead_code)]
2203    pub const tEQQ: i32 = 335;
2204    /// Token `` "!=" ``, to be returned by the scanner.
2205    #[allow(non_upper_case_globals, dead_code)]
2206    pub const tNEQ: i32 = 336;
2207    /// Token `` ">=" ``, to be returned by the scanner.
2208    #[allow(non_upper_case_globals, dead_code)]
2209    pub const tGEQ: i32 = 337;
2210    /// Token `` "<=" ``, to be returned by the scanner.
2211    #[allow(non_upper_case_globals, dead_code)]
2212    pub const tLEQ: i32 = 338;
2213    /// Token `` "&&" ``, to be returned by the scanner.
2214    #[allow(non_upper_case_globals, dead_code)]
2215    pub const tANDOP: i32 = 339;
2216    /// Token `` "||" ``, to be returned by the scanner.
2217    #[allow(non_upper_case_globals, dead_code)]
2218    pub const tOROP: i32 = 340;
2219    /// Token `` "=~" ``, to be returned by the scanner.
2220    #[allow(non_upper_case_globals, dead_code)]
2221    pub const tMATCH: i32 = 341;
2222    /// Token `` "!~" ``, to be returned by the scanner.
2223    #[allow(non_upper_case_globals, dead_code)]
2224    pub const tNMATCH: i32 = 342;
2225    /// Token `` ".." ``, to be returned by the scanner.
2226    #[allow(non_upper_case_globals, dead_code)]
2227    pub const tDOT2: i32 = 343;
2228    /// Token `` "..." ``, to be returned by the scanner.
2229    #[allow(non_upper_case_globals, dead_code)]
2230    pub const tDOT3: i32 = 344;
2231    /// Token `` "(.." ``, to be returned by the scanner.
2232    #[allow(non_upper_case_globals, dead_code)]
2233    pub const tBDOT2: i32 = 345;
2234    /// Token `` "(..." ``, to be returned by the scanner.
2235    #[allow(non_upper_case_globals, dead_code)]
2236    pub const tBDOT3: i32 = 346;
2237    /// Token `` "[]" ``, to be returned by the scanner.
2238    #[allow(non_upper_case_globals, dead_code)]
2239    pub const tAREF: i32 = 347;
2240    /// Token `` "[]=" ``, to be returned by the scanner.
2241    #[allow(non_upper_case_globals, dead_code)]
2242    pub const tASET: i32 = 348;
2243    /// Token `` "<<" ``, to be returned by the scanner.
2244    #[allow(non_upper_case_globals, dead_code)]
2245    pub const tLSHFT: i32 = 349;
2246    /// Token `` ">>" ``, to be returned by the scanner.
2247    #[allow(non_upper_case_globals, dead_code)]
2248    pub const tRSHFT: i32 = 350;
2249    /// Token `` "&." ``, to be returned by the scanner.
2250    #[allow(non_upper_case_globals, dead_code)]
2251    pub const tANDDOT: i32 = 351;
2252    /// Token `` "::" ``, to be returned by the scanner.
2253    #[allow(non_upper_case_globals, dead_code)]
2254    pub const tCOLON2: i32 = 352;
2255    /// Token `` ":: at EXPR_BEG" ``, to be returned by the scanner.
2256    #[allow(non_upper_case_globals, dead_code)]
2257    pub const tCOLON3: i32 = 353;
2258    /// Token `` "operator-assignment" ``, to be returned by the scanner.
2259    #[allow(non_upper_case_globals, dead_code)]
2260    pub const tOP_ASGN: i32 = 354;
2261    /// Token `` "=>" ``, to be returned by the scanner.
2262    #[allow(non_upper_case_globals, dead_code)]
2263    pub const tASSOC: i32 = 355;
2264    /// Token `` "(" ``, to be returned by the scanner.
2265    #[allow(non_upper_case_globals, dead_code)]
2266    pub const tLPAREN: i32 = 356;
2267    /// Token `` "( arg" ``, to be returned by the scanner.
2268    #[allow(non_upper_case_globals, dead_code)]
2269    pub const tLPAREN_ARG: i32 = 357;
2270    /// Token `` ")" ``, to be returned by the scanner.
2271    #[allow(non_upper_case_globals, dead_code)]
2272    pub const tRPAREN: i32 = 358;
2273    /// Token `` "[" ``, to be returned by the scanner.
2274    #[allow(non_upper_case_globals, dead_code)]
2275    pub const tLBRACK: i32 = 359;
2276    /// Token `` "{" ``, to be returned by the scanner.
2277    #[allow(non_upper_case_globals, dead_code)]
2278    pub const tLBRACE: i32 = 360;
2279    /// Token `` "{ arg" ``, to be returned by the scanner.
2280    #[allow(non_upper_case_globals, dead_code)]
2281    pub const tLBRACE_ARG: i32 = 361;
2282    /// Token `` "*" ``, to be returned by the scanner.
2283    #[allow(non_upper_case_globals, dead_code)]
2284    pub const tSTAR: i32 = 362;
2285    /// Token `` "**arg" ``, to be returned by the scanner.
2286    #[allow(non_upper_case_globals, dead_code)]
2287    pub const tDSTAR: i32 = 363;
2288    /// Token `` "&" ``, to be returned by the scanner.
2289    #[allow(non_upper_case_globals, dead_code)]
2290    pub const tAMPER: i32 = 364;
2291    /// Token `` "->" ``, to be returned by the scanner.
2292    #[allow(non_upper_case_globals, dead_code)]
2293    pub const tLAMBDA: i32 = 365;
2294    /// Token `` "symbol literal" ``, to be returned by the scanner.
2295    #[allow(non_upper_case_globals, dead_code)]
2296    pub const tSYMBEG: i32 = 366;
2297    /// Token `` "string begin" ``, to be returned by the scanner.
2298    #[allow(non_upper_case_globals, dead_code)]
2299    pub const tSTRING_BEG: i32 = 367;
2300    /// Token `` "backtick literal" ``, to be returned by the scanner.
2301    #[allow(non_upper_case_globals, dead_code)]
2302    pub const tXSTRING_BEG: i32 = 368;
2303    /// Token `` "regexp literal" ``, to be returned by the scanner.
2304    #[allow(non_upper_case_globals, dead_code)]
2305    pub const tREGEXP_BEG: i32 = 369;
2306    /// Token `` "word list" ``, to be returned by the scanner.
2307    #[allow(non_upper_case_globals, dead_code)]
2308    pub const tWORDS_BEG: i32 = 370;
2309    /// Token `` "verbatim word list" ``, to be returned by the scanner.
2310    #[allow(non_upper_case_globals, dead_code)]
2311    pub const tQWORDS_BEG: i32 = 371;
2312    /// Token `` "symbol list" ``, to be returned by the scanner.
2313    #[allow(non_upper_case_globals, dead_code)]
2314    pub const tSYMBOLS_BEG: i32 = 372;
2315    /// Token `` "verbatim symbol list" ``, to be returned by the scanner.
2316    #[allow(non_upper_case_globals, dead_code)]
2317    pub const tQSYMBOLS_BEG: i32 = 373;
2318    /// Token `` "string end" ``, to be returned by the scanner.
2319    #[allow(non_upper_case_globals, dead_code)]
2320    pub const tSTRING_END: i32 = 374;
2321    /// Token `` "tRCURLY" ``, to be returned by the scanner.
2322    #[allow(non_upper_case_globals, dead_code)]
2323    pub const tSTRING_DEND: i32 = 375;
2324    /// Token `` tSTRING_DBEG ``, to be returned by the scanner.
2325    #[allow(non_upper_case_globals, dead_code)]
2326    pub const tSTRING_DBEG: i32 = 376;
2327    /// Token `` tSTRING_DVAR ``, to be returned by the scanner.
2328    #[allow(non_upper_case_globals, dead_code)]
2329    pub const tSTRING_DVAR: i32 = 377;
2330    /// Token `` tLAMBEG ``, to be returned by the scanner.
2331    #[allow(non_upper_case_globals, dead_code)]
2332    pub const tLAMBEG: i32 = 378;
2333    /// Token `` tLABEL_END ``, to be returned by the scanner.
2334    #[allow(non_upper_case_globals, dead_code)]
2335    pub const tLABEL_END: i32 = 379;
2336    /// Token `` "," ``, to be returned by the scanner.
2337    #[allow(non_upper_case_globals, dead_code)]
2338    pub const tCOMMA: i32 = 380;
2339    /// Token `` "{ (tLCURLY)" ``, to be returned by the scanner.
2340    #[allow(non_upper_case_globals, dead_code)]
2341    pub const tLCURLY: i32 = 381;
2342    /// Token `` "}" ``, to be returned by the scanner.
2343    #[allow(non_upper_case_globals, dead_code)]
2344    pub const tRCURLY: i32 = 382;
2345    /// Token `` "[ (tLBRACK2)" ``, to be returned by the scanner.
2346    #[allow(non_upper_case_globals, dead_code)]
2347    pub const tLBRACK2: i32 = 383;
2348    /// Token `` "=" ``, to be returned by the scanner.
2349    #[allow(non_upper_case_globals, dead_code)]
2350    pub const tEQL: i32 = 384;
2351    /// Token `` "|" ``, to be returned by the scanner.
2352    #[allow(non_upper_case_globals, dead_code)]
2353    pub const tPIPE: i32 = 385;
2354    /// Token `` "& (tAMPER2)" ``, to be returned by the scanner.
2355    #[allow(non_upper_case_globals, dead_code)]
2356    pub const tAMPER2: i32 = 386;
2357    /// Token `` ">" ``, to be returned by the scanner.
2358    #[allow(non_upper_case_globals, dead_code)]
2359    pub const tGT: i32 = 387;
2360    /// Token `` "<" ``, to be returned by the scanner.
2361    #[allow(non_upper_case_globals, dead_code)]
2362    pub const tLT: i32 = 388;
2363    /// Token `` "`" ``, to be returned by the scanner.
2364    #[allow(non_upper_case_globals, dead_code)]
2365    pub const tBACK_REF2: i32 = 389;
2366    /// Token `` "^" ``, to be returned by the scanner.
2367    #[allow(non_upper_case_globals, dead_code)]
2368    pub const tCARET: i32 = 390;
2369    /// Token `` "( (tLPAREN2)" ``, to be returned by the scanner.
2370    #[allow(non_upper_case_globals, dead_code)]
2371    pub const tLPAREN2: i32 = 391;
2372    /// Token `` "]" ``, to be returned by the scanner.
2373    #[allow(non_upper_case_globals, dead_code)]
2374    pub const tRBRACK: i32 = 392;
2375    /// Token `` ";" ``, to be returned by the scanner.
2376    #[allow(non_upper_case_globals, dead_code)]
2377    pub const tSEMI: i32 = 393;
2378    /// Token `` " " ``, to be returned by the scanner.
2379    #[allow(non_upper_case_globals, dead_code)]
2380    pub const tSPACE: i32 = 394;
2381    /// Token `` "\n" ``, to be returned by the scanner.
2382    #[allow(non_upper_case_globals, dead_code)]
2383    pub const tNL: i32 = 395;
2384    /// Token `` "+" ``, to be returned by the scanner.
2385    #[allow(non_upper_case_globals, dead_code)]
2386    pub const tPLUS: i32 = 396;
2387    /// Token `` "-" ``, to be returned by the scanner.
2388    #[allow(non_upper_case_globals, dead_code)]
2389    pub const tMINUS: i32 = 397;
2390    /// Token `` "* (tSTAR2)" ``, to be returned by the scanner.
2391    #[allow(non_upper_case_globals, dead_code)]
2392    pub const tSTAR2: i32 = 398;
2393    /// Token `` "/" ``, to be returned by the scanner.
2394    #[allow(non_upper_case_globals, dead_code)]
2395    pub const tDIVIDE: i32 = 399;
2396    /// Token `` "%" ``, to be returned by the scanner.
2397    #[allow(non_upper_case_globals, dead_code)]
2398    pub const tPERCENT: i32 = 400;
2399    /// Token `` "~" ``, to be returned by the scanner.
2400    #[allow(non_upper_case_globals, dead_code)]
2401    pub const tTILDE: i32 = 401;
2402    /// Token `` "!" ``, to be returned by the scanner.
2403    #[allow(non_upper_case_globals, dead_code)]
2404    pub const tBANG: i32 = 402;
2405    /// Token `` tLOWEST ``, to be returned by the scanner.
2406    #[allow(non_upper_case_globals, dead_code)]
2407    pub const tLOWEST: i32 = 403;
2408    /// Token `` tEH ``, to be returned by the scanner.
2409    #[allow(non_upper_case_globals, dead_code)]
2410    pub const tEH: i32 = 404;
2411    /// Token `` tCOLON ``, to be returned by the scanner.
2412    #[allow(non_upper_case_globals, dead_code)]
2413    pub const tCOLON: i32 = 405;
2414    /// Token `` tUMINUS_NUM ``, to be returned by the scanner.
2415    #[allow(non_upper_case_globals, dead_code)]
2416    pub const tUMINUS_NUM: i32 = 406;
2417    /// Token `` tLAST_TOKEN ``, to be returned by the scanner.
2418    #[allow(non_upper_case_globals, dead_code)]
2419    pub const tLAST_TOKEN: i32 = 407;
2420
2421
2422    // Deprecated, use END_OF_INPUT instead.
2423    #[allow(dead_code)]
2424    const EOF: i32 = Self::END_OF_INPUT;
2425
2426    // Token values
2427    #[allow(dead_code)]
2428    pub(crate) const TOKEN_NAMES: &'static [&'static str] = &    [
2429
2430    "END_OF_INPUT",
2431
2432    "YYerror",
2433
2434    "YYUNDEF",
2435
2436    "kCLASS",
2437
2438    "kMODULE",
2439
2440    "kDEF",
2441
2442    "kUNDEF",
2443
2444    "kBEGIN",
2445
2446    "kRESCUE",
2447
2448    "kENSURE",
2449
2450    "kEND",
2451
2452    "kIF",
2453
2454    "kUNLESS",
2455
2456    "kTHEN",
2457
2458    "kELSIF",
2459
2460    "kELSE",
2461
2462    "kCASE",
2463
2464    "kWHEN",
2465
2466    "kWHILE",
2467
2468    "kUNTIL",
2469
2470    "kFOR",
2471
2472    "kBREAK",
2473
2474    "kNEXT",
2475
2476    "kREDO",
2477
2478    "kRETRY",
2479
2480    "kIN",
2481
2482    "kDO",
2483
2484    "kDO_COND",
2485
2486    "kDO_BLOCK",
2487
2488    "kDO_LAMBDA",
2489
2490    "kRETURN",
2491
2492    "kYIELD",
2493
2494    "kSUPER",
2495
2496    "kSELF",
2497
2498    "kNIL",
2499
2500    "kTRUE",
2501
2502    "kFALSE",
2503
2504    "kAND",
2505
2506    "kOR",
2507
2508    "kNOT",
2509
2510    "kIF_MOD",
2511
2512    "kUNLESS_MOD",
2513
2514    "kWHILE_MOD",
2515
2516    "kUNTIL_MOD",
2517
2518    "kRESCUE_MOD",
2519
2520    "kALIAS",
2521
2522    "kDEFINED",
2523
2524    "klBEGIN",
2525
2526    "klEND",
2527
2528    "k__LINE__",
2529
2530    "k__FILE__",
2531
2532    "k__ENCODING__",
2533
2534    "tIDENTIFIER",
2535
2536    "tFID",
2537
2538    "tGVAR",
2539
2540    "tIVAR",
2541
2542    "tCONSTANT",
2543
2544    "tCVAR",
2545
2546    "tLABEL",
2547
2548    "tINTEGER",
2549
2550    "tFLOAT",
2551
2552    "tRATIONAL",
2553
2554    "tIMAGINARY",
2555
2556    "tCHAR",
2557
2558    "tNTH_REF",
2559
2560    "tBACK_REF",
2561
2562    "tSTRING_CONTENT",
2563
2564    "tREGEXP_END",
2565
2566    "tDOT",
2567
2568    "tBACKSLASH",
2569
2570    "tSP",
2571
2572    "tSLASH_T",
2573
2574    "tSLASH_F",
2575
2576    "tSLASH_R",
2577
2578    "tVTAB",
2579
2580    "tUPLUS",
2581
2582    "tUMINUS",
2583
2584    "tPOW",
2585
2586    "tCMP",
2587
2588    "tEQ",
2589
2590    "tEQQ",
2591
2592    "tNEQ",
2593
2594    "tGEQ",
2595
2596    "tLEQ",
2597
2598    "tANDOP",
2599
2600    "tOROP",
2601
2602    "tMATCH",
2603
2604    "tNMATCH",
2605
2606    "tDOT2",
2607
2608    "tDOT3",
2609
2610    "tBDOT2",
2611
2612    "tBDOT3",
2613
2614    "tAREF",
2615
2616    "tASET",
2617
2618    "tLSHFT",
2619
2620    "tRSHFT",
2621
2622    "tANDDOT",
2623
2624    "tCOLON2",
2625
2626    "tCOLON3",
2627
2628    "tOP_ASGN",
2629
2630    "tASSOC",
2631
2632    "tLPAREN",
2633
2634    "tLPAREN_ARG",
2635
2636    "tRPAREN",
2637
2638    "tLBRACK",
2639
2640    "tLBRACE",
2641
2642    "tLBRACE_ARG",
2643
2644    "tSTAR",
2645
2646    "tDSTAR",
2647
2648    "tAMPER",
2649
2650    "tLAMBDA",
2651
2652    "tSYMBEG",
2653
2654    "tSTRING_BEG",
2655
2656    "tXSTRING_BEG",
2657
2658    "tREGEXP_BEG",
2659
2660    "tWORDS_BEG",
2661
2662    "tQWORDS_BEG",
2663
2664    "tSYMBOLS_BEG",
2665
2666    "tQSYMBOLS_BEG",
2667
2668    "tSTRING_END",
2669
2670    "tSTRING_DEND",
2671
2672    "tSTRING_DBEG",
2673
2674    "tSTRING_DVAR",
2675
2676    "tLAMBEG",
2677
2678    "tLABEL_END",
2679
2680    "tCOMMA",
2681
2682    "tLCURLY",
2683
2684    "tRCURLY",
2685
2686    "tLBRACK2",
2687
2688    "tEQL",
2689
2690    "tPIPE",
2691
2692    "tAMPER2",
2693
2694    "tGT",
2695
2696    "tLT",
2697
2698    "tBACK_REF2",
2699
2700    "tCARET",
2701
2702    "tLPAREN2",
2703
2704    "tRBRACK",
2705
2706    "tSEMI",
2707
2708    "tSPACE",
2709
2710    "tNL",
2711
2712    "tPLUS",
2713
2714    "tMINUS",
2715
2716    "tSTAR2",
2717
2718    "tDIVIDE",
2719
2720    "tPERCENT",
2721
2722    "tTILDE",
2723
2724    "tBANG",
2725
2726    "tLOWEST",
2727
2728    "tEH",
2729
2730    "tCOLON",
2731
2732    "tUMINUS_NUM",
2733
2734    "tLAST_TOKEN",
2735
2736]
2737;
2738}
2739
2740
2741impl  Parser  {
2742
2743    fn yycdebug(&self, s: &str) {
2744        if  self.is_debug()  {
2745            eprintln!("{}", s);
2746        }
2747    }
2748
2749}
2750
2751/// Local alias
2752type YYValue =  Value ;
2753
2754#[derive(Debug)]
2755struct YYStackItem {
2756    state: i32,
2757    value: YYValue,
2758    loc: YYLoc,
2759}
2760
2761#[derive(Debug)]
2762pub struct YYStack {
2763    stack: Vec<YYStackItem>,
2764}
2765
2766impl YYStack {
2767    pub(crate) fn new() -> Self {
2768        Self {
2769          stack: Vec::with_capacity(20),
2770        }
2771    }
2772
2773    pub(crate) fn push(&mut self, state: i32, value: YYValue, loc: YYLoc) {
2774        self.stack.push(YYStackItem { state, value, loc });
2775    }
2776
2777    pub(crate) fn pop(&mut self) {
2778        self.stack.pop();
2779    }
2780
2781    pub(crate) fn pop_n(&mut self, num: usize) {
2782        let len = self.stack.len() - num;
2783        self.stack.truncate(len);
2784    }
2785
2786    pub(crate) fn state_at(&self, i: usize) -> i32 {
2787        self.stack[self.len() - 1 - i].state
2788    }
2789
2790    pub(crate) fn location_at(&self, i: usize) -> &YYLoc {
2791        &self.stack[self.len() - 1 - i].loc
2792    }
2793
2794    pub(crate) fn borrow_value_at(&self, i: usize) -> &YYValue {
2795        &self.stack[self.len() - 1 - i].value
2796    }
2797
2798    pub(crate) fn owned_value_at(&mut self, i: usize) -> YYValue {
2799        let len = self.len();
2800        std::mem::take(&mut self.stack[len - 1 - i].value)
2801    }
2802
2803    pub(crate) fn len(&self) -> usize {
2804      self.stack.len()
2805    }
2806}
2807
2808impl std::fmt::Display for YYStack {
2809    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2810        let states = self.stack.iter().map(|e| e.state.to_string()).collect::<Vec<String>>().join(" ");
2811        let values = self.stack.iter().map(|e| format!("{:?}", e.value)).collect::<Vec<String>>().join(" ");
2812        f.write_fmt(format_args!("Stack now states = {} / values = {:?} ", states, values))
2813    }
2814}
2815
2816impl  Parser  {
2817  /// Returned by a Bison action in order to stop the parsing process and
2818  /// return success (true).
2819  pub(crate) const YYACCEPT: i32 = 0;
2820
2821  /// Returned by a Bison action in order to stop the parsing process and
2822  /// return failure (false).
2823  pub(crate) const YYABORT: i32 = 1;
2824
2825  /// Returned by a Bison action in order to start error recovery without
2826  /// printing an error message.
2827  pub(crate) const YYERROR: i32 = 2;
2828
2829  /// Internal return codes that are not supported for user semantic
2830  /// actions.
2831  pub(crate) const YYERRLAB: i32 = 3;
2832  pub(crate) const YYNEWSTATE: i32 = 4;
2833  pub(crate) const YYDEFAULT: i32 = 5;
2834  pub(crate) const YYREDUCE: i32 = 6;
2835  pub(crate) const YYERRLAB1: i32 = 7;
2836  #[allow(dead_code)]
2837  pub(crate) const YYRETURN: i32 = 8;
2838
2839  /// Whether error recovery is being done.  In this state, the parser
2840  /// reads token until it reaches a known state, and then restarts normal
2841  /// operation.
2842  #[allow(dead_code)]
2843  pub(crate) fn recovering(&self) -> bool {
2844      self.yyerrstatus_ == 0
2845  }
2846
2847    // Compute post-reduction state.
2848    // yystate:   the current state
2849    // yysym:     the nonterminal to push on the stack
2850    fn yy_lr_goto_state(&self, yystate: i32, yysym: i32) -> i32 {
2851        let idx = i32_to_usize(yysym - Self::YYNTOKENS_);
2852        let yyr = Self::yypgoto_[idx] + yystate;
2853        if (0..=Self::YYLAST_).contains(&yyr) {
2854            let yyr = i32_to_usize(yyr);
2855            if Self::yycheck_[yyr] == yystate {
2856                return Self::yytable_[yyr];
2857            }
2858        }
2859        Self::yydefgoto_[idx]
2860    }
2861
2862    fn yyaction(&mut self, yyn: i32, yystack: &mut YYStack, yylen: &mut usize) -> Result<i32, ()> {
2863        // If YYLEN is nonzero, implement the default value of the action:
2864        // '$$ = $1'.  Otherwise, use the top of the stack.
2865        //
2866        // Otherwise, the following line sets YYVAL to garbage.
2867        // This behavior is undocumented and Bison
2868        // users should not rely upon it.
2869        #[allow(unused_assignments)]
2870        let mut yyval: YYValue = YYValue::new_uninitialized();
2871        let yyloc: YYLoc = make_yylloc(yystack, *yylen);
2872
2873        self.yy_reduce_print(yyn, yystack);
2874
2875        match yyn {
2876              2 =>  /* @1: %empty  */
2877  /* "src/parser/parse.y":346  */
2878                    {
2879                        self.yylexer.lex_state.set(EXPR_BEG);
2880                        self.current_arg_stack.push(None);
2881                        self.max_numparam_stack.push(true);
2882
2883                        yyval = Value::None;
2884                    },
2885
2886
2887  3 =>  /* program: @1 top_compstmt  */
2888  /* "src/parser/parse.y":354  */
2889                    {
2890                        let top_compstmt =  MaybeNode::from(yystack.owned_value_at(0));
2891                        self.result = top_compstmt.map(Box::new);
2892                        yyval = Value::None;
2893
2894                        self.current_arg_stack.pop();
2895                        self.max_numparam_stack.pop();
2896                    },
2897
2898
2899  4 =>  /* top_compstmt: top_stmts opt_terms  */
2900  /* "src/parser/parse.y":365  */
2901                    {
2902                        // TODO: run void_stmts
2903                        yyval = Value::MaybeNode(
2904                            self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
2905                        );
2906                    },
2907
2908
2909  5 =>  /* top_stmts: none  */
2910  /* "src/parser/parse.y":374  */
2911                    {
2912                      yyval = Value::NodeList( Box::default() );
2913                    },
2914
2915
2916  6 =>  /* top_stmts: top_stmt  */
2917  /* "src/parser/parse.y":378  */
2918                    {
2919                      yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
2920                    },
2921
2922
2923  7 =>  /* top_stmts: top_stmts terms top_stmt  */
2924  /* "src/parser/parse.y":382  */
2925                    {
2926                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
2927                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
2928                        yyval = Value::NodeList( nodes );
2929                    },
2930
2931
2932  8 =>  /* top_stmts: error top_stmt  */
2933  /* "src/parser/parse.y":388  */
2934                    {
2935                      yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
2936                    },
2937
2938
2939  9 =>  /* top_stmt: stmt  */
2940  /* "src/parser/parse.y":394  */
2941                    {
2942                        yyval =  yystack.owned_value_at(0);
2943                    },
2944
2945
2946  10 =>  /* top_stmt: "`BEGIN'" begin_block  */
2947  /* "src/parser/parse.y":398  */
2948                    {
2949                        let BeginBlock { begin_t, body, end_t } =  BeginBlock::from(yystack.owned_value_at(0));
2950                        yyval = Value::Node(
2951                            self.builder.preexe( Token::from(yystack.owned_value_at(1)), begin_t, body, end_t)
2952                        );
2953                    },
2954
2955
2956  11 =>  /* begin_block: "{ (tLCURLY)" top_compstmt "}"  */
2957  /* "src/parser/parse.y":407  */
2958                    {
2959                        yyval = Value::new_begin_block(
2960                            BeginBlock {
2961                                begin_t:  Token::from(yystack.owned_value_at(2)),
2962                                body:  MaybeBoxedNode::from(yystack.owned_value_at(1)),
2963                                end_t:  Token::from(yystack.owned_value_at(0))
2964                            }
2965                        );
2966                    },
2967
2968
2969  12 =>  /* bodystmt: compstmt opt_rescue k_else compstmt opt_ensure  */
2970  /* "src/parser/parse.y":422  */
2971                    {
2972                        let compound_stmt =  MaybeBoxedNode::from(yystack.owned_value_at(4));
2973                        let rescue_bodies =  NodeList::from(yystack.owned_value_at(3));
2974                        if rescue_bodies.is_empty() {
2975                            return self.yyerror(yystack.location_at (2), DiagnosticMessage::ElseWithoutRescue {});
2976                        }
2977
2978                        let else_ = Some((  Token::from(yystack.owned_value_at(2)),  MaybeBoxedNode::from(yystack.owned_value_at(1)) ));
2979                        let ensure =  OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
2980
2981                        yyval = Value::MaybeNode(
2982                            self.builder.begin_body(
2983                                compound_stmt,
2984                                rescue_bodies,
2985                                else_,
2986                                ensure
2987                            )
2988                        );
2989                    },
2990
2991
2992  13 =>  /* bodystmt: compstmt opt_rescue opt_ensure  */
2993  /* "src/parser/parse.y":444  */
2994                    {
2995                        let compound_stmt =  MaybeBoxedNode::from(yystack.owned_value_at(2));
2996                        let rescue_bodies =  NodeList::from(yystack.owned_value_at(1));
2997                        let ensure =  OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
2998
2999                        yyval = Value::MaybeNode(
3000                            self.builder.begin_body(
3001                                compound_stmt,
3002                                rescue_bodies,
3003                                None,
3004                                ensure
3005                            )
3006                        );
3007                    },
3008
3009
3010  14 =>  /* compstmt: stmts opt_terms  */
3011  /* "src/parser/parse.y":461  */
3012                    {
3013                        // TODO: run void_stmts
3014                        yyval = Value::MaybeNode(
3015                            self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
3016                        );
3017                    },
3018
3019
3020  15 =>  /* stmts: none  */
3021  /* "src/parser/parse.y":470  */
3022                    {
3023                        yyval = Value::NodeList( Box::default() );
3024                    },
3025
3026
3027  16 =>  /* stmts: stmt_or_begin  */
3028  /* "src/parser/parse.y":474  */
3029                    {
3030                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
3031                    },
3032
3033
3034  17 =>  /* stmts: stmts terms stmt_or_begin  */
3035  /* "src/parser/parse.y":478  */
3036                    {
3037                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
3038                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
3039                        yyval = Value::NodeList(nodes);
3040                    },
3041
3042
3043  18 =>  /* stmts: error  */
3044  /* "src/parser/parse.y":484  */
3045                    {
3046                        yyval = Value::NodeList( Box::default() );
3047                    },
3048
3049
3050  19 =>  /* stmt_or_begin: stmt  */
3051  /* "src/parser/parse.y":490  */
3052                    {
3053                        yyval =  yystack.owned_value_at(0);
3054                    },
3055
3056
3057  20 =>  /* $@2: %empty  */
3058  /* "src/parser/parse.y":494  */
3059                    {
3060                        return self.yyerror(yystack.location_at (0), DiagnosticMessage::BeginNotAtTopLevel {});
3061                    },
3062
3063
3064  21 =>  /* stmt_or_begin: "`BEGIN'" $@2 begin_block  */
3065  /* "src/parser/parse.y":498  */
3066                    {
3067                        yyval = Value::None;
3068                    },
3069
3070
3071  22 =>  /* @3: %empty  */
3072  /* "src/parser/parse.y":504  */
3073                    {
3074                        self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
3075                        yyval = Value::None;
3076                    },
3077
3078
3079  23 =>  /* stmt: "`alias'" fitem @3 fitem  */
3080  /* "src/parser/parse.y":509  */
3081                    {
3082                        yyval = Value::Node(
3083                            self.builder.alias( Token::from(yystack.owned_value_at(3)),  BoxedNode::from(yystack.owned_value_at(2)),  BoxedNode::from(yystack.owned_value_at(0)))
3084                        );
3085                    },
3086
3087
3088  24 =>  /* stmt: "`alias'" "global variable" "global variable"  */
3089  /* "src/parser/parse.y":515  */
3090                    {
3091                        yyval = Value::Node(
3092                            self.builder.alias(
3093                                 Token::from(yystack.owned_value_at(2)),
3094                                self.builder.gvar( Token::from(yystack.owned_value_at(1))),
3095                                self.builder.gvar( Token::from(yystack.owned_value_at(0))),
3096                            )
3097                        )
3098                    },
3099
3100
3101  25 =>  /* stmt: "`alias'" "global variable" "back reference"  */
3102  /* "src/parser/parse.y":525  */
3103                    {
3104                        yyval = Value::Node(
3105                            self.builder.alias(
3106                                 Token::from(yystack.owned_value_at(2)),
3107                                self.builder.gvar( Token::from(yystack.owned_value_at(1))),
3108                                self.builder.back_ref( Token::from(yystack.owned_value_at(0))),
3109                            )
3110                        )
3111                    },
3112
3113
3114  26 =>  /* stmt: "`alias'" "global variable" "numbered reference"  */
3115  /* "src/parser/parse.y":535  */
3116                    {
3117                        return self.yyerror(yystack.location_at (0), DiagnosticMessage::AliasNthRef {});
3118                    },
3119
3120
3121  27 =>  /* stmt: "`undef'" undef_list  */
3122  /* "src/parser/parse.y":539  */
3123                    {
3124                        yyval = Value::Node(
3125                            self.builder.undef_method(
3126                                 Token::from(yystack.owned_value_at(1)),
3127                                 NodeList::from(yystack.owned_value_at(0))
3128                            )
3129                        )
3130                    },
3131
3132
3133  28 =>  /* stmt: stmt "`if' modifier" expr_value  */
3134  /* "src/parser/parse.y":548  */
3135                    {
3136                        yyval = Value::Node(
3137                            self.builder.condition_mod(
3138                                Some( BoxedNode::from(yystack.owned_value_at(2))),
3139                                None,
3140                                 Token::from(yystack.owned_value_at(1)),
3141                                 BoxedNode::from(yystack.owned_value_at(0)),
3142                            )
3143                        );
3144                    },
3145
3146
3147  29 =>  /* stmt: stmt "`unless' modifier" expr_value  */
3148  /* "src/parser/parse.y":559  */
3149                    {
3150                        yyval = Value::Node(
3151                            self.builder.condition_mod(
3152                                None,
3153                                Some( BoxedNode::from(yystack.owned_value_at(2))),
3154                                 Token::from(yystack.owned_value_at(1)),
3155                                 BoxedNode::from(yystack.owned_value_at(0)),
3156                            )
3157                        );
3158                    },
3159
3160
3161  30 =>  /* stmt: stmt "`while' modifier" expr_value  */
3162  /* "src/parser/parse.y":570  */
3163                    {
3164                        yyval = Value::Node(
3165                            self.builder.loop_mod(
3166                                LoopType::While,
3167                                 BoxedNode::from(yystack.owned_value_at(2)),
3168                                 Token::from(yystack.owned_value_at(1)),
3169                                 BoxedNode::from(yystack.owned_value_at(0)),
3170                            )
3171                        );
3172                    },
3173
3174
3175  31 =>  /* stmt: stmt "`until' modifier" expr_value  */
3176  /* "src/parser/parse.y":581  */
3177                    {
3178                        yyval = Value::Node(
3179                            self.builder.loop_mod(
3180                                LoopType::Until,
3181                                 BoxedNode::from(yystack.owned_value_at(2)),
3182                                 Token::from(yystack.owned_value_at(1)),
3183                                 BoxedNode::from(yystack.owned_value_at(0)),
3184                            )
3185                        );
3186                    },
3187
3188
3189  32 =>  /* stmt: stmt "`rescue' modifier" stmt  */
3190  /* "src/parser/parse.y":592  */
3191                    {
3192                        let rescue_body = self.builder.rescue_body(
3193                             Token::from(yystack.owned_value_at(1)),
3194                            None,
3195                            None,
3196                            None,
3197                            None,
3198                            Some( BoxedNode::from(yystack.owned_value_at(0)))
3199                        );
3200
3201                        yyval = Value::Node(
3202                            self.builder.begin_body(
3203                                Some( BoxedNode::from(yystack.owned_value_at(2))),
3204                                vec![*rescue_body],
3205                                None,
3206                                None,
3207                            ).expect("expected begin_body to return Some (compound_stmt was given)")
3208                        );
3209                    },
3210
3211
3212  33 =>  /* stmt: "`END'" "{ (tLCURLY)" compstmt "}"  */
3213  /* "src/parser/parse.y":612  */
3214                    {
3215                        if self.context.in_def() {
3216                            self.warn(yystack.location_at (3), DiagnosticMessage::EndInMethod {});
3217                        }
3218
3219                        yyval = Value::Node(
3220                            self.builder.postexe(
3221                                 Token::from(yystack.owned_value_at(3)),
3222                                 Token::from(yystack.owned_value_at(2)),
3223                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
3224                                 Token::from(yystack.owned_value_at(0)),
3225                            )
3226                        );
3227                    },
3228
3229
3230  34 =>  /* stmt: command_asgn  */
3231  /* "src/parser/parse.y":627  */
3232                    {
3233                        yyval =  yystack.owned_value_at(0);
3234                    },
3235
3236
3237  35 =>  /* stmt: mlhs "=" command_call  */
3238  /* "src/parser/parse.y":631  */
3239                    {
3240                        let command_call =  BoxedNode::from(yystack.owned_value_at(0));
3241                        self.value_expr(&command_call)?;
3242
3243                        yyval = Value::Node(
3244                            self.builder.multi_assign(
3245                                 BoxedNode::from(yystack.owned_value_at(2)),
3246                                 Token::from(yystack.owned_value_at(1)),
3247                                command_call
3248                            )
3249                        );
3250                    },
3251
3252
3253  36 =>  /* stmt: lhs "=" mrhs  */
3254  /* "src/parser/parse.y":644  */
3255                    {
3256                        let mrhs = self.builder.array(
3257                            None,
3258                             NodeList::from(yystack.owned_value_at(0)),
3259                            None
3260                        );
3261                        self.value_expr(&mrhs)?;
3262
3263                        yyval = Value::Node(
3264                            self.builder.assign(
3265                                 BoxedNode::from(yystack.owned_value_at(2)),
3266                                 Token::from(yystack.owned_value_at(1)),
3267                                mrhs
3268                            )
3269                        );
3270                    },
3271
3272
3273  37 =>  /* stmt: mlhs "=" mrhs_arg "`rescue' modifier" stmt  */
3274  /* "src/parser/parse.y":661  */
3275                    {
3276                        let rescue_body = self.builder.rescue_body(
3277                             Token::from(yystack.owned_value_at(1)),
3278                            None,
3279                            None,
3280                            None,
3281                            None,
3282                            Some( BoxedNode::from(yystack.owned_value_at(0)))
3283                        );
3284
3285                        let mrhs_arg =  BoxedNode::from(yystack.owned_value_at(2));
3286                        self.value_expr(&mrhs_arg)?;
3287
3288                        let begin_body = self.builder.begin_body(
3289                            Some(mrhs_arg),
3290                            vec![ *rescue_body ],
3291                            None,
3292                            None,
3293                        ).expect("expected begin_body to return Some (compound_stmt was given)");
3294
3295                        yyval = Value::Node(
3296                            self.builder.multi_assign(
3297                                 BoxedNode::from(yystack.owned_value_at(4)),
3298                                 Token::from(yystack.owned_value_at(3)),
3299                                begin_body
3300                            )
3301                        );
3302                    },
3303
3304
3305  38 =>  /* stmt: mlhs "=" mrhs_arg  */
3306  /* "src/parser/parse.y":690  */
3307                    {
3308                        yyval = Value::Node(
3309                            self.builder.multi_assign(
3310                                 BoxedNode::from(yystack.owned_value_at(2)),
3311                                 Token::from(yystack.owned_value_at(1)),
3312                                 BoxedNode::from(yystack.owned_value_at(0))
3313                            )
3314                        );
3315                    },
3316
3317
3318  39 =>  /* stmt: expr  */
3319  /* "src/parser/parse.y":700  */
3320                    {
3321                        yyval =  yystack.owned_value_at(0);
3322                    },
3323
3324
3325  40 =>  /* command_asgn: lhs "=" command_rhs  */
3326  /* "src/parser/parse.y":706  */
3327                    {
3328                        yyval = Value::Node(
3329                            self.builder.assign(
3330                                 BoxedNode::from(yystack.owned_value_at(2)),
3331                                 Token::from(yystack.owned_value_at(1)),
3332                                 BoxedNode::from(yystack.owned_value_at(0))
3333                            )
3334                        );
3335                    },
3336
3337
3338  41 =>  /* command_asgn: var_lhs "operator-assignment" command_rhs  */
3339  /* "src/parser/parse.y":716  */
3340                    {
3341                        yyval = Value::Node(
3342                            self.builder.op_assign(
3343                                 BoxedNode::from(yystack.owned_value_at(2)),
3344                                 Token::from(yystack.owned_value_at(1)),
3345                                 BoxedNode::from(yystack.owned_value_at(0))
3346                            )?
3347                        );
3348                    },
3349
3350
3351  42 =>  /* command_asgn: primary_value "[ (tLBRACK2)" opt_call_args rbracket "operator-assignment" command_rhs  */
3352  /* "src/parser/parse.y":726  */
3353                    {
3354                        yyval = Value::Node(
3355                            self.builder.op_assign(
3356                                self.builder.index(
3357                                     BoxedNode::from(yystack.owned_value_at(5)),
3358                                     Token::from(yystack.owned_value_at(4)),
3359                                     NodeList::from(yystack.owned_value_at(3)),
3360                                     Token::from(yystack.owned_value_at(2))
3361                                ),
3362                                 Token::from(yystack.owned_value_at(1)),
3363                                 BoxedNode::from(yystack.owned_value_at(0))
3364                            )?
3365                        );
3366                    },
3367
3368
3369  43 =>  /* command_asgn: primary_value call_op "local variable or method" "operator-assignment" command_rhs  */
3370  /* "src/parser/parse.y":741  */
3371                    {
3372                        yyval = Value::Node(
3373                            self.builder.op_assign(
3374                                self.builder.call_method(
3375                                    Some( BoxedNode::from(yystack.owned_value_at(4))),
3376                                    Some( Token::from(yystack.owned_value_at(3))),
3377                                    Some( Token::from(yystack.owned_value_at(2))),
3378                                    None,
3379                                    vec![],
3380                                    None
3381                                ),
3382                                 Token::from(yystack.owned_value_at(1)),
3383                                 BoxedNode::from(yystack.owned_value_at(0))
3384                            )?
3385                        );
3386                    },
3387
3388
3389  44 =>  /* command_asgn: primary_value call_op "constant" "operator-assignment" command_rhs  */
3390  /* "src/parser/parse.y":758  */
3391                    {
3392                        yyval = Value::Node(
3393                            self.builder.op_assign(
3394                                self.builder.call_method(
3395                                    Some( BoxedNode::from(yystack.owned_value_at(4))),
3396                                    Some( Token::from(yystack.owned_value_at(3))),
3397                                    Some( Token::from(yystack.owned_value_at(2))),
3398                                    None,
3399                                    vec![],
3400                                    None
3401                                ),
3402                                 Token::from(yystack.owned_value_at(1)),
3403                                 BoxedNode::from(yystack.owned_value_at(0))
3404                            )?
3405                        );
3406                    },
3407
3408
3409  45 =>  /* command_asgn: primary_value "::" "constant" "operator-assignment" command_rhs  */
3410  /* "src/parser/parse.y":775  */
3411                    {
3412                        let const_ = self.builder.const_op_assignable(
3413                            self.builder.const_fetch(
3414                                 BoxedNode::from(yystack.owned_value_at(4)),
3415                                 Token::from(yystack.owned_value_at(3)),
3416                                 Token::from(yystack.owned_value_at(2))
3417                            )
3418                        );
3419                        yyval = Value::Node(
3420                            self.builder.op_assign(
3421                                const_,
3422                                 Token::from(yystack.owned_value_at(1)),
3423                                 BoxedNode::from(yystack.owned_value_at(0))
3424                            )?
3425                        );
3426                    },
3427
3428
3429  46 =>  /* command_asgn: primary_value "::" "local variable or method" "operator-assignment" command_rhs  */
3430  /* "src/parser/parse.y":792  */
3431                    {
3432                        yyval = Value::Node(
3433                            self.builder.op_assign(
3434                                self.builder.call_method(
3435                                    Some( BoxedNode::from(yystack.owned_value_at(4))),
3436                                    Some( Token::from(yystack.owned_value_at(3))),
3437                                    Some( Token::from(yystack.owned_value_at(2))),
3438                                    None,
3439                                    vec![],
3440                                    None
3441                                ),
3442                                 Token::from(yystack.owned_value_at(1)),
3443                                 BoxedNode::from(yystack.owned_value_at(0))
3444                            )?
3445                        );
3446                    },
3447
3448
3449  47 =>  /* command_asgn: defn_head f_opt_paren_args "=" command  */
3450  /* "src/parser/parse.y":809  */
3451                    {
3452                        let DefnHead { def_t, name_t } =  DefnHead::from(yystack.owned_value_at(3));
3453                        let TokenWithContext { token: name_t, ctx } = name_t;
3454                        self.validate_endless_method_name(&name_t)?;
3455
3456                        yyval = Value::Node(
3457                            self.builder.def_endless_method(
3458                                def_t,
3459                                name_t,
3460                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
3461                                 Token::from(yystack.owned_value_at(1)),
3462                                Some( BoxedNode::from(yystack.owned_value_at(0))),
3463                            )?
3464                        );
3465
3466                        self.local_pop();
3467                        self.current_arg_stack.pop();
3468                        self.context.set_in_def(ctx.in_def());
3469                    },
3470
3471
3472  48 =>  /* command_asgn: defn_head f_opt_paren_args "=" command "`rescue' modifier" arg  */
3473  /* "src/parser/parse.y":829  */
3474                    {
3475                        let DefnHead { def_t, name_t } =  DefnHead::from(yystack.owned_value_at(5));
3476                        let TokenWithContext { token: name_t, ctx } = name_t;
3477                        self.validate_endless_method_name(&name_t)?;
3478
3479                        let rescue_body = self.builder.rescue_body(
3480                             Token::from(yystack.owned_value_at(1)),
3481                            None,
3482                            None,
3483                            None,
3484                            None,
3485                            Some( BoxedNode::from(yystack.owned_value_at(0))),
3486                        );
3487
3488                        let method_body = self.builder.begin_body(
3489                            Some( BoxedNode::from(yystack.owned_value_at(2))),
3490                            vec![ *rescue_body ],
3491                            None,
3492                            None,
3493                        );
3494
3495                        yyval = Value::Node(
3496                            self.builder.def_endless_method(
3497                                def_t,
3498                                name_t,
3499                                 MaybeBoxedNode::from(yystack.owned_value_at(4)),
3500                                 Token::from(yystack.owned_value_at(3)),
3501                                method_body,
3502                            )?
3503                        );
3504
3505                        self.local_pop();
3506                        self.current_arg_stack.pop();
3507                        self.context.set_in_def(ctx.in_def());
3508                    },
3509
3510
3511  49 =>  /* command_asgn: defs_head f_opt_paren_args "=" command  */
3512  /* "src/parser/parse.y":865  */
3513                    {
3514                        let DefsHead { def_t, definee, dot_t, name_t } =  DefsHead::from(yystack.owned_value_at(3));
3515                        let TokenWithContext { token: name_t, ctx } = name_t;
3516                        self.validate_endless_method_name(&name_t)?;
3517
3518                        yyval = Value::Node(
3519                            self.builder.def_endless_singleton(
3520                                def_t,
3521                                definee,
3522                                dot_t,
3523                                name_t,
3524                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
3525                                 Token::from(yystack.owned_value_at(1)),
3526                                Some( BoxedNode::from(yystack.owned_value_at(0))),
3527                            )?
3528                        );
3529
3530                        self.local_pop();
3531                        self.current_arg_stack.pop();
3532                        self.context.set_in_def(ctx.in_def());
3533                    },
3534
3535
3536  50 =>  /* command_asgn: defs_head f_opt_paren_args "=" command "`rescue' modifier" arg  */
3537  /* "src/parser/parse.y":887  */
3538                    {
3539                        let DefsHead { def_t, definee, dot_t, name_t } =  DefsHead::from(yystack.owned_value_at(5));
3540                        let TokenWithContext { token: name_t, ctx } = name_t;
3541                        self.validate_endless_method_name(&name_t)?;
3542
3543                        let rescue_body = self.builder.rescue_body(
3544                             Token::from(yystack.owned_value_at(1)),
3545                            None,
3546                            None,
3547                            None,
3548                            None,
3549                            Some( BoxedNode::from(yystack.owned_value_at(0))),
3550                        );
3551
3552                        let method_body = self.builder.begin_body(
3553                            Some( BoxedNode::from(yystack.owned_value_at(2))),
3554                            vec![ *rescue_body ],
3555                            None,
3556                            None,
3557                        );
3558
3559                        yyval = Value::Node(
3560                            self.builder.def_endless_singleton(
3561                                def_t,
3562                                definee,
3563                                dot_t,
3564                                name_t,
3565                                 MaybeBoxedNode::from(yystack.owned_value_at(4)),
3566                                 Token::from(yystack.owned_value_at(3)),
3567                                method_body,
3568                            )?
3569                        );
3570
3571                        self.local_pop();
3572                        self.current_arg_stack.pop();
3573                        self.context.set_in_def(ctx.in_def());
3574                    },
3575
3576
3577  51 =>  /* command_asgn: backref "operator-assignment" command_rhs  */
3578  /* "src/parser/parse.y":925  */
3579                    {
3580                        yyval = Value::Node(
3581                            self.builder.op_assign(
3582                                 BoxedNode::from(yystack.owned_value_at(2)),
3583                                 Token::from(yystack.owned_value_at(1)),
3584                                 BoxedNode::from(yystack.owned_value_at(0))
3585                            )?
3586                        );
3587                    },
3588
3589
3590  52 =>  /* command_rhs: command_call  */
3591  /* "src/parser/parse.y":937  */
3592                    {
3593                        let command_call =  BoxedNode::from(yystack.owned_value_at(0));
3594                        self.value_expr(&command_call)?;
3595                        yyval = Value::Node(command_call);
3596                    },
3597
3598
3599  53 =>  /* command_rhs: command_call "`rescue' modifier" stmt  */
3600  /* "src/parser/parse.y":943  */
3601                    {
3602                        let command_call =  BoxedNode::from(yystack.owned_value_at(2));
3603                        self.value_expr(&command_call)?;
3604
3605                        let rescue_body = self.builder.rescue_body(
3606                             Token::from(yystack.owned_value_at(1)),
3607                            None,
3608                            None,
3609                            None,
3610                            None,
3611                            Some( BoxedNode::from(yystack.owned_value_at(0)))
3612                        );
3613
3614                        yyval = Value::Node(
3615                            self.builder.begin_body(
3616                                Some(command_call),
3617                                vec![ *rescue_body ],
3618                                None,
3619                                None,
3620                            ).expect("expected begin_body to return Some (compound_stmt was given)")
3621                        );
3622                    },
3623
3624
3625  54 =>  /* command_rhs: command_asgn  */
3626  /* "src/parser/parse.y":966  */
3627                    {
3628                        yyval =  yystack.owned_value_at(0);
3629                    },
3630
3631
3632  55 =>  /* expr: command_call  */
3633  /* "src/parser/parse.y":972  */
3634                    {
3635                        yyval =  yystack.owned_value_at(0);
3636                    },
3637
3638
3639  56 =>  /* expr: expr "`and'" expr  */
3640  /* "src/parser/parse.y":976  */
3641                    {
3642                        yyval = Value::Node(
3643                            self.builder.logical_op(
3644                                LogicalOp::And,
3645                                 BoxedNode::from(yystack.owned_value_at(2)),
3646                                 Token::from(yystack.owned_value_at(1)),
3647                                 BoxedNode::from(yystack.owned_value_at(0))
3648                            )?
3649                        );
3650                    },
3651
3652
3653  57 =>  /* expr: expr "`or'" expr  */
3654  /* "src/parser/parse.y":987  */
3655                    {
3656                        yyval = Value::Node(
3657                            self.builder.logical_op(
3658                                LogicalOp::Or,
3659                                 BoxedNode::from(yystack.owned_value_at(2)),
3660                                 Token::from(yystack.owned_value_at(1)),
3661                                 BoxedNode::from(yystack.owned_value_at(0))
3662                            )?
3663                        );
3664                    },
3665
3666
3667  58 =>  /* expr: "`not'" opt_nl expr  */
3668  /* "src/parser/parse.y":998  */
3669                    {
3670                        yyval = Value::Node(
3671                            self.builder.not_op(
3672                                 Token::from(yystack.owned_value_at(2)),
3673                                None,
3674                                Some( BoxedNode::from(yystack.owned_value_at(0))),
3675                                None
3676                            )?
3677                        );
3678                    },
3679
3680
3681  59 =>  /* expr: "!" command_call  */
3682  /* "src/parser/parse.y":1009  */
3683                    {
3684                        yyval = Value::Node(
3685                            self.builder.not_op(
3686                                 Token::from(yystack.owned_value_at(1)),
3687                                None,
3688                                Some( BoxedNode::from(yystack.owned_value_at(0))),
3689                                None
3690                            )?
3691                        );
3692                    },
3693
3694
3695  60 =>  /* @4: %empty  */
3696  /* "src/parser/parse.y":1020  */
3697                    {
3698                        let arg = match yystack.borrow_value_at(1) {
3699                            Value::Node(node) => node,
3700                            other => unreachable!("expected Node, got {:?}", other)
3701                        };
3702                        self.value_expr(arg)?;
3703
3704                        self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
3705                        self.yylexer.command_start = false;
3706                        self.pattern_variables.push();
3707                        self.pattern_hash_keys.push();
3708
3709                        yyval = Value::Bool(self.context.in_kwarg());
3710                        self.context.set_in_kwarg(true);
3711                    },
3712
3713
3714  61 =>  /* expr: arg "=>" @4 p_top_expr_body  */
3715  /* "src/parser/parse.y":1036  */
3716                    {
3717                        self.pattern_variables.pop();
3718                        self.pattern_hash_keys.pop();
3719                        self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(1)));
3720
3721                        yyval = Value::Node(
3722                            self.builder.match_pattern(
3723                                 BoxedNode::from(yystack.owned_value_at(3)),
3724                                 Token::from(yystack.owned_value_at(2)),
3725                                 BoxedNode::from(yystack.owned_value_at(0))
3726                            )
3727                        );
3728                    },
3729
3730
3731  62 =>  /* @5: %empty  */
3732  /* "src/parser/parse.y":1050  */
3733                    {
3734                        let arg = match yystack.borrow_value_at(1) {
3735                            Value::Node(node) => node,
3736                            other => unreachable!("expected Node, got {:?}", other)
3737                        };
3738                        self.value_expr(arg)?;
3739
3740                        self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
3741                        self.yylexer.command_start = false;
3742                        self.pattern_variables.push();
3743                        self.pattern_hash_keys.push();
3744
3745                        yyval = Value::Bool(self.context.in_kwarg());
3746                        self.context.set_in_kwarg(true);
3747                    },
3748
3749
3750  63 =>  /* expr: arg "`in'" @5 p_top_expr_body  */
3751  /* "src/parser/parse.y":1066  */
3752                    {
3753                        self.pattern_variables.pop();
3754                        self.pattern_hash_keys.pop();
3755                        self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(1)));
3756
3757                        yyval = Value::Node(
3758                            self.builder.match_pattern_p(
3759                                 BoxedNode::from(yystack.owned_value_at(3)),
3760                                 Token::from(yystack.owned_value_at(2)),
3761                                 BoxedNode::from(yystack.owned_value_at(0))
3762                            )
3763                        );
3764                    },
3765
3766
3767  64 =>  /* expr: arg  */
3768  /* "src/parser/parse.y":1080  */
3769                    {
3770                        yyval =  yystack.owned_value_at(0);
3771                    },
3772
3773
3774  65 =>  /* def_name: fname  */
3775  /* "src/parser/parse.y":1086  */
3776                    {
3777                        self.local_push();
3778                        self.current_arg_stack.push(None);
3779
3780                        yyval = Value::TokenWithContext(
3781                            Box::new(
3782                                TokenWithContext {
3783                                    token:  Token::from(yystack.owned_value_at(0)),
3784                                    ctx: self.context.dump()
3785                                }
3786                            )
3787                        );
3788
3789                        self.context.set_in_def(true);
3790                    },
3791
3792
3793  66 =>  /* defn_head: k_def def_name  */
3794  /* "src/parser/parse.y":1104  */
3795                    {
3796                        yyval = Value::new_defn_head(
3797                            DefnHead {
3798                                def_t:  Token::from(yystack.owned_value_at(1)),
3799                                name_t:  TokenWithContext::from(yystack.owned_value_at(0))
3800                            }
3801                        );
3802                    },
3803
3804
3805  67 =>  /* @6: %empty  */
3806  /* "src/parser/parse.y":1115  */
3807                    {
3808                        self.yylexer.lex_state.set(EXPR_FNAME);
3809                        self.context.set_in_argdef(true);
3810                        yyval = Value::None;
3811                    },
3812
3813
3814  68 =>  /* defs_head: k_def singleton dot_or_colon @6 def_name  */
3815  /* "src/parser/parse.y":1121  */
3816                    {
3817                        self.yylexer.lex_state.set(EXPR_ENDFN|EXPR_LABEL);
3818
3819                        yyval = Value::new_defs_head(
3820                            DefsHead {
3821                                def_t:  Token::from(yystack.owned_value_at(4)),
3822                                definee:  BoxedNode::from(yystack.owned_value_at(3)),
3823                                dot_t:  Token::from(yystack.owned_value_at(2)),
3824                                name_t:  TokenWithContext::from(yystack.owned_value_at(0))
3825                            }
3826                        );
3827                    },
3828
3829
3830  69 =>  /* expr_value: expr  */
3831  /* "src/parser/parse.y":1136  */
3832                    {
3833                        let expr =  BoxedNode::from(yystack.owned_value_at(0));
3834                        self.value_expr(&expr)?;
3835                        yyval = Value::Node(expr);
3836                    },
3837
3838
3839  70 =>  /* @7: %empty  */
3840  /* "src/parser/parse.y":1143  */
3841                    {
3842                        self.yylexer.cond.push(true);
3843                        yyval = Value::None;
3844                    },
3845
3846
3847  71 =>  /* expr_value_do: @7 expr_value do  */
3848  /* "src/parser/parse.y":1148  */
3849                    {
3850                        self.yylexer.cond.pop();
3851
3852                        yyval = Value::new_expr_value_do(
3853                            ExprValueDo {
3854                                value:  BoxedNode::from(yystack.owned_value_at(1)),
3855                                do_t:  Token::from(yystack.owned_value_at(0))
3856                            }
3857                        );
3858                    },
3859
3860
3861  72 =>  /* command_call: command  */
3862  /* "src/parser/parse.y":1162  */
3863                    {
3864                        yyval =  yystack.owned_value_at(0);
3865                    },
3866
3867
3868  73 =>  /* command_call: block_command  */
3869  /* "src/parser/parse.y":1166  */
3870                    {
3871                        yyval =  yystack.owned_value_at(0);
3872                    },
3873
3874
3875  74 =>  /* block_command: block_call  */
3876  /* "src/parser/parse.y":1172  */
3877                    {
3878                        yyval =  yystack.owned_value_at(0);
3879                    },
3880
3881
3882  75 =>  /* block_command: block_call call_op2 operation2 command_args  */
3883  /* "src/parser/parse.y":1176  */
3884                    {
3885                        yyval = Value::Node(
3886                            self.builder.call_method(
3887                                Some( BoxedNode::from(yystack.owned_value_at(3))),
3888                                Some( Token::from(yystack.owned_value_at(2))),
3889                                Some( Token::from(yystack.owned_value_at(1))),
3890                                None,
3891                                 NodeList::from(yystack.owned_value_at(0)),
3892                                None
3893                            )
3894                        );
3895                    },
3896
3897
3898  76 =>  /* @8: %empty  */
3899  /* "src/parser/parse.y":1191  */
3900                    {
3901                        yyval = Value::Context(self.context.dump());
3902                        self.context.set_in_block(true);
3903                    },
3904
3905
3906  77 =>  /* cmd_brace_block: "{ arg" @8 brace_body "}"  */
3907  /* "src/parser/parse.y":1196  */
3908                    {
3909                        self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
3910                        let BraceBody { args_type, body } =  BraceBody::from(yystack.owned_value_at(1));
3911                        yyval = Value::new_cmd_brace_block(
3912                            CmdBraceBlock {
3913                                begin_t:  Token::from(yystack.owned_value_at(3)),
3914                                args_type,
3915                                body,
3916                                end_t:  Token::from(yystack.owned_value_at(0))
3917                            }
3918                        );
3919                    },
3920
3921
3922  78 =>  /* fcall: operation  */
3923  /* "src/parser/parse.y":1211  */
3924                    {
3925                        yyval =  yystack.owned_value_at(0);
3926                    },
3927
3928
3929  79 =>  /* command: fcall command_args  */
3930  /* "src/parser/parse.y":1217  */
3931                    {
3932                        yyval = Value::Node(
3933                            self.builder.call_method(
3934                                None,
3935                                None,
3936                                Some( Token::from(yystack.owned_value_at(1))),
3937                                None,
3938                                 NodeList::from(yystack.owned_value_at(0)),
3939                                None
3940                            )
3941                        );
3942                    },
3943
3944
3945  80 =>  /* command: fcall command_args cmd_brace_block  */
3946  /* "src/parser/parse.y":1230  */
3947                    {
3948                        let method_call = self.builder.call_method(
3949                            None,
3950                            None,
3951                            Some( Token::from(yystack.owned_value_at(2))),
3952                            None,
3953                             NodeList::from(yystack.owned_value_at(1)),
3954                            None
3955                        );
3956                        let CmdBraceBlock { begin_t, args_type, body, end_t } =  CmdBraceBlock::from(yystack.owned_value_at(0));
3957
3958                        yyval = Value::Node(
3959                            self.builder.block(
3960                                method_call,
3961                                begin_t,
3962                                args_type,
3963                                body,
3964                                end_t
3965                            )?
3966                        );
3967                    },
3968
3969
3970  81 =>  /* command: primary_value call_op operation2 command_args  */
3971  /* "src/parser/parse.y":1252  */
3972                    {
3973                        yyval = Value::Node(
3974                            self.builder.call_method(
3975                                Some( BoxedNode::from(yystack.owned_value_at(3))),
3976                                Some( Token::from(yystack.owned_value_at(2))),
3977                                Some( Token::from(yystack.owned_value_at(1))),
3978                                None,
3979                                 NodeList::from(yystack.owned_value_at(0)),
3980                                None
3981                            )
3982                        );
3983                    },
3984
3985
3986  82 =>  /* command: primary_value call_op operation2 command_args cmd_brace_block  */
3987  /* "src/parser/parse.y":1265  */
3988                    {
3989                        let method_call = self.builder.call_method(
3990                            Some( BoxedNode::from(yystack.owned_value_at(4))),
3991                            Some( Token::from(yystack.owned_value_at(3))),
3992                            Some( Token::from(yystack.owned_value_at(2))),
3993                            None,
3994                             NodeList::from(yystack.owned_value_at(1)),
3995                            None
3996                        );
3997                        let CmdBraceBlock { begin_t, args_type, body, end_t } =  CmdBraceBlock::from(yystack.owned_value_at(0));
3998
3999                        yyval = Value::Node(
4000                            self.builder.block(
4001                                method_call,
4002                                begin_t,
4003                                args_type,
4004                                body,
4005                                end_t
4006                            )?
4007                        );
4008                    },
4009
4010
4011  83 =>  /* command: primary_value "::" operation2 command_args  */
4012  /* "src/parser/parse.y":1287  */
4013                    {
4014                        yyval = Value::Node(
4015                            self.builder.call_method(
4016                                Some( BoxedNode::from(yystack.owned_value_at(3))),
4017                                Some( Token::from(yystack.owned_value_at(2))),
4018                                Some( Token::from(yystack.owned_value_at(1))),
4019                                None,
4020                                 NodeList::from(yystack.owned_value_at(0)),
4021                                None
4022                            )
4023                        );
4024                    },
4025
4026
4027  84 =>  /* command: primary_value "::" operation2 command_args cmd_brace_block  */
4028  /* "src/parser/parse.y":1300  */
4029                    {
4030                        let method_call = self.builder.call_method(
4031                            Some( BoxedNode::from(yystack.owned_value_at(4))),
4032                            Some( Token::from(yystack.owned_value_at(3))),
4033                            Some( Token::from(yystack.owned_value_at(2))),
4034                            None,
4035                             NodeList::from(yystack.owned_value_at(1)),
4036                            None
4037                        );
4038                        let CmdBraceBlock { begin_t, args_type, body, end_t } =  CmdBraceBlock::from(yystack.owned_value_at(0));
4039
4040                        yyval = Value::Node(
4041                            self.builder.block(
4042                                method_call,
4043                                begin_t,
4044                                args_type,
4045                                body,
4046                                end_t
4047                            )?
4048                        );
4049                    },
4050
4051
4052  85 =>  /* command: "`super'" command_args  */
4053  /* "src/parser/parse.y":1322  */
4054                    {
4055                        yyval = Value::Node(
4056                            self.builder.keyword_cmd(
4057                                KeywordCmd::Super,
4058                                 Token::from(yystack.owned_value_at(1)),
4059                                None,
4060                                 NodeList::from(yystack.owned_value_at(0)),
4061                                None
4062                            )?
4063                        );
4064                    },
4065
4066
4067  86 =>  /* command: "`yield'" command_args  */
4068  /* "src/parser/parse.y":1334  */
4069                    {
4070                        yyval = Value::Node(
4071                            self.builder.keyword_cmd(
4072                                KeywordCmd::Yield,
4073                                 Token::from(yystack.owned_value_at(1)),
4074                                None,
4075                                 NodeList::from(yystack.owned_value_at(0)),
4076                                None
4077                            )?
4078                        );
4079                    },
4080
4081
4082  87 =>  /* command: k_return call_args  */
4083  /* "src/parser/parse.y":1346  */
4084                    {
4085                        yyval = Value::Node(
4086                            self.builder.keyword_cmd(
4087                                KeywordCmd::Return,
4088                                 Token::from(yystack.owned_value_at(1)),
4089                                None,
4090                                 NodeList::from(yystack.owned_value_at(0)),
4091                                None
4092                            )?
4093                        );
4094                    },
4095
4096
4097  88 =>  /* command: "`break'" call_args  */
4098  /* "src/parser/parse.y":1358  */
4099                    {
4100                        yyval = Value::Node(
4101                            self.builder.keyword_cmd(
4102                                KeywordCmd::Break,
4103                                 Token::from(yystack.owned_value_at(1)),
4104                                None,
4105                                 NodeList::from(yystack.owned_value_at(0)),
4106                                None
4107                            )?
4108                        );
4109                    },
4110
4111
4112  89 =>  /* command: "`next'" call_args  */
4113  /* "src/parser/parse.y":1370  */
4114                    {
4115                        yyval = Value::Node(
4116                            self.builder.keyword_cmd(
4117                                KeywordCmd::Next,
4118                                 Token::from(yystack.owned_value_at(1)),
4119                                None,
4120                                 NodeList::from(yystack.owned_value_at(0)),
4121                                None
4122                            )?
4123                        );
4124                    },
4125
4126
4127  90 =>  /* mlhs: mlhs_basic  */
4128  /* "src/parser/parse.y":1384  */
4129                    {
4130                        yyval = Value::Node(
4131                            self.builder.multi_lhs(
4132                                None,
4133                                 NodeList::from(yystack.owned_value_at(0)),
4134                                None
4135                            )
4136                        );
4137                    },
4138
4139
4140  91 =>  /* mlhs: "(" mlhs_inner rparen  */
4141  /* "src/parser/parse.y":1394  */
4142                    {
4143                        yyval = Value::Node(
4144                            self.builder.begin(
4145                                 Token::from(yystack.owned_value_at(2)),
4146                                Some( BoxedNode::from(yystack.owned_value_at(1))),
4147                                 Token::from(yystack.owned_value_at(0))
4148                            )
4149                        );
4150                    },
4151
4152
4153  92 =>  /* mlhs_inner: mlhs_basic  */
4154  /* "src/parser/parse.y":1406  */
4155                    {
4156                        yyval = Value::Node(
4157                            self.builder.multi_lhs(
4158                                None,
4159                                 NodeList::from(yystack.owned_value_at(0)),
4160                                None
4161                            )
4162                        );
4163                    },
4164
4165
4166  93 =>  /* mlhs_inner: "(" mlhs_inner rparen  */
4167  /* "src/parser/parse.y":1416  */
4168                    {
4169                        let mlhs_inner =  Node::from(yystack.owned_value_at(1));
4170                        let mlhs_items = match mlhs_inner {
4171                            Node::Mlhs(nodes::Mlhs { items, .. }) => {
4172                                items
4173                            }
4174                            other => {
4175                                unreachable!("unsupported mlhs item {:?}", other)
4176                            }
4177                        };
4178
4179                        yyval = Value::Node(
4180                            self.builder.multi_lhs(
4181                                Some( Token::from(yystack.owned_value_at(2))),
4182                                mlhs_items,
4183                                Some( Token::from(yystack.owned_value_at(0)))
4184                            )
4185                        );
4186                    },
4187
4188
4189  94 =>  /* mlhs_basic: mlhs_head  */
4190  /* "src/parser/parse.y":1438  */
4191                    {
4192                        yyval =  yystack.owned_value_at(0);
4193                    },
4194
4195
4196  95 =>  /* mlhs_basic: mlhs_head mlhs_item  */
4197  /* "src/parser/parse.y":1442  */
4198                    {
4199                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
4200                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
4201                        yyval = Value::NodeList(nodes);
4202                    },
4203
4204
4205  96 =>  /* mlhs_basic: mlhs_head "*" mlhs_node  */
4206  /* "src/parser/parse.y":1448  */
4207                    {
4208                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
4209                        let mlhs_node = *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))));
4210                        nodes.push(mlhs_node);
4211                        yyval = Value::NodeList(nodes);
4212                    },
4213
4214
4215  97 =>  /* mlhs_basic: mlhs_head "*" mlhs_node "," mlhs_post  */
4216  /* "src/parser/parse.y":1455  */
4217                    {
4218                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(4));
4219                        let mlhs_node = *self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( BoxedNode::from(yystack.owned_value_at(2))));
4220                        let mut mlhs_post =  NodeList::from(yystack.owned_value_at(0));
4221
4222                        nodes.reserve(1 + mlhs_post.len());
4223                        nodes.push(mlhs_node);
4224                        nodes.append(&mut mlhs_post);
4225
4226                        yyval = Value::NodeList(nodes);
4227                    },
4228
4229
4230  98 =>  /* mlhs_basic: mlhs_head "*"  */
4231  /* "src/parser/parse.y":1467  */
4232                    {
4233                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
4234                        let splat = *self.builder.splat( Token::from(yystack.owned_value_at(0)), None);
4235                        nodes.push(splat);
4236                        yyval = Value::NodeList(nodes);
4237                    },
4238
4239
4240  99 =>  /* mlhs_basic: mlhs_head "*" "," mlhs_post  */
4241  /* "src/parser/parse.y":1474  */
4242                    {
4243                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
4244                        let splat = *self.builder.splat( Token::from(yystack.owned_value_at(2)), None);
4245                        let mut mlhs_post =  NodeList::from(yystack.owned_value_at(0));
4246
4247                        nodes.reserve(1 + mlhs_post.len());
4248                        nodes.push(splat);
4249                        nodes.append(&mut mlhs_post);
4250
4251                        yyval = Value::NodeList(nodes);
4252                    },
4253
4254
4255  100 =>  /* mlhs_basic: "*" mlhs_node  */
4256  /* "src/parser/parse.y":1486  */
4257                    {
4258                        yyval = Value::NodeList(
4259                            Box::new(
4260                                vec![
4261                                    *self.builder.splat(
4262                                         Token::from(yystack.owned_value_at(1)),
4263                                        Some( BoxedNode::from(yystack.owned_value_at(0)))
4264                                    )
4265                                ]
4266                            )
4267                        );
4268                    },
4269
4270
4271  101 =>  /* mlhs_basic: "*" mlhs_node "," mlhs_post  */
4272  /* "src/parser/parse.y":1499  */
4273                    {
4274                        let splat = *self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( BoxedNode::from(yystack.owned_value_at(2))));
4275                        let mut mlhs_post =  NodeList::from(yystack.owned_value_at(0));
4276
4277                        let mut nodes = Box::new(Vec::with_capacity(1 + mlhs_post.len()));
4278                        nodes.push(splat);
4279                        nodes.append(&mut mlhs_post);
4280
4281                        yyval = Value::NodeList(nodes);
4282                    },
4283
4284
4285  102 =>  /* mlhs_basic: "*"  */
4286  /* "src/parser/parse.y":1510  */
4287                    {
4288                        yyval = Value::NodeList(
4289                            Box::new(
4290                                vec![
4291                                    *self.builder.splat(
4292                                         Token::from(yystack.owned_value_at(0)),
4293                                        None
4294                                    )
4295                                ]
4296                            )
4297                        );
4298                    },
4299
4300
4301  103 =>  /* mlhs_basic: "*" "," mlhs_post  */
4302  /* "src/parser/parse.y":1523  */
4303                    {
4304                        let splat = *self.builder.splat( Token::from(yystack.owned_value_at(2)), None);
4305                        let mut mlhs_post =  NodeList::from(yystack.owned_value_at(0));
4306
4307                        let mut nodes = Box::new(Vec::with_capacity(1 + mlhs_post.len()));
4308                        nodes.push(splat);
4309                        nodes.append(&mut mlhs_post);
4310
4311                        yyval = Value::NodeList(nodes);
4312                    },
4313
4314
4315  104 =>  /* mlhs_item: mlhs_node  */
4316  /* "src/parser/parse.y":1536  */
4317                    {
4318                        yyval =  yystack.owned_value_at(0);
4319                    },
4320
4321
4322  105 =>  /* mlhs_item: "(" mlhs_inner rparen  */
4323  /* "src/parser/parse.y":1540  */
4324                    {
4325                        yyval = Value::Node(
4326                            self.builder.begin(
4327                                 Token::from(yystack.owned_value_at(2)),
4328                                Some( BoxedNode::from(yystack.owned_value_at(1))),
4329                                 Token::from(yystack.owned_value_at(0))
4330                            )
4331                        );
4332                    },
4333
4334
4335  106 =>  /* mlhs_head: mlhs_item ","  */
4336  /* "src/parser/parse.y":1552  */
4337                    {
4338                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(1)) ]) );
4339                    },
4340
4341
4342  107 =>  /* mlhs_head: mlhs_head mlhs_item ","  */
4343  /* "src/parser/parse.y":1556  */
4344                    {
4345                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
4346                        nodes.push(  Node::from(yystack.owned_value_at(1)) );
4347                        yyval = Value::NodeList(nodes);
4348                    },
4349
4350
4351  108 =>  /* mlhs_post: mlhs_item  */
4352  /* "src/parser/parse.y":1564  */
4353                    {
4354                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
4355                    },
4356
4357
4358  109 =>  /* mlhs_post: mlhs_post "," mlhs_item  */
4359  /* "src/parser/parse.y":1568  */
4360                    {
4361                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
4362                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
4363                        yyval = Value::NodeList(nodes);
4364                    },
4365
4366
4367  110 =>  /* mlhs_node: user_variable  */
4368  /* "src/parser/parse.y":1576  */
4369                    {
4370                        yyval = Value::Node(
4371                            self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4372                        );
4373                    },
4374
4375
4376  111 =>  /* mlhs_node: keyword_variable  */
4377  /* "src/parser/parse.y":1582  */
4378                    {
4379                        yyval = Value::Node(
4380                            self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4381                        );
4382                    },
4383
4384
4385  112 =>  /* mlhs_node: primary_value "[ (tLBRACK2)" opt_call_args rbracket  */
4386  /* "src/parser/parse.y":1588  */
4387                    {
4388                        yyval = Value::Node(
4389                            self.builder.index_asgn(
4390                                 BoxedNode::from(yystack.owned_value_at(3)),
4391                                 Token::from(yystack.owned_value_at(2)),
4392                                 NodeList::from(yystack.owned_value_at(1)),
4393                                 Token::from(yystack.owned_value_at(0))
4394                            )
4395                        );
4396                    },
4397
4398
4399  113 =>  /* mlhs_node: primary_value call_op "local variable or method"  */
4400  /* "src/parser/parse.y":1599  */
4401                    {
4402                        let op_t =  Token::from(yystack.owned_value_at(1));
4403                        if op_t.token_type == Lexer::tANDDOT {
4404                            return self.yyerror(yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn {});
4405                        }
4406
4407                        yyval = Value::Node(
4408                            self.builder.attr_asgn(
4409                                 BoxedNode::from(yystack.owned_value_at(2)),
4410                                op_t,
4411                                 Token::from(yystack.owned_value_at(0))
4412                            )
4413                        );
4414                    },
4415
4416
4417  114 =>  /* mlhs_node: primary_value "::" "local variable or method"  */
4418  /* "src/parser/parse.y":1614  */
4419                    {
4420                        yyval = Value::Node(
4421                            self.builder.attr_asgn(
4422                                 BoxedNode::from(yystack.owned_value_at(2)),
4423                                 Token::from(yystack.owned_value_at(1)),
4424                                 Token::from(yystack.owned_value_at(0))
4425                            )
4426                        );
4427                    },
4428
4429
4430  115 =>  /* mlhs_node: primary_value call_op "constant"  */
4431  /* "src/parser/parse.y":1624  */
4432                    {
4433                        let op_t =  Token::from(yystack.owned_value_at(1));
4434                        if op_t.token_type == Lexer::tANDDOT {
4435                            return self.yyerror(yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn {});
4436                        }
4437
4438                        yyval = Value::Node(
4439                            self.builder.attr_asgn(
4440                                 BoxedNode::from(yystack.owned_value_at(2)),
4441                                op_t,
4442                                 Token::from(yystack.owned_value_at(0))
4443                            )
4444                        );
4445                    },
4446
4447
4448  116 =>  /* mlhs_node: primary_value "::" "constant"  */
4449  /* "src/parser/parse.y":1639  */
4450                    {
4451                        yyval = Value::Node(
4452                            self.builder.assignable(
4453                                self.builder.const_fetch(
4454                                     BoxedNode::from(yystack.owned_value_at(2)),
4455                                     Token::from(yystack.owned_value_at(1)),
4456                                     Token::from(yystack.owned_value_at(0))
4457                                )
4458                            )?
4459                        );
4460                    },
4461
4462
4463  117 =>  /* mlhs_node: ":: at EXPR_BEG" "constant"  */
4464  /* "src/parser/parse.y":1651  */
4465                    {
4466                        yyval = Value::Node(
4467                            self.builder.assignable(
4468                                self.builder.const_global(
4469                                     Token::from(yystack.owned_value_at(1)),
4470                                     Token::from(yystack.owned_value_at(0))
4471                                )
4472                            )?
4473                        );
4474                    },
4475
4476
4477  118 =>  /* mlhs_node: backref  */
4478  /* "src/parser/parse.y":1662  */
4479                    {
4480                        yyval = Value::Node(
4481                            self.builder.assignable(
4482                                 BoxedNode::from(yystack.owned_value_at(0))
4483                            )?
4484                        );
4485                    },
4486
4487
4488  119 =>  /* lhs: user_variable  */
4489  /* "src/parser/parse.y":1672  */
4490                    {
4491                        yyval = Value::Node(
4492                            self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4493                        );
4494                    },
4495
4496
4497  120 =>  /* lhs: keyword_variable  */
4498  /* "src/parser/parse.y":1678  */
4499                    {
4500                        yyval = Value::Node(
4501                            self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4502                        );
4503                    },
4504
4505
4506  121 =>  /* lhs: primary_value "[ (tLBRACK2)" opt_call_args rbracket  */
4507  /* "src/parser/parse.y":1684  */
4508                    {
4509                        yyval = Value::Node(
4510                            self.builder.index_asgn(
4511                                 BoxedNode::from(yystack.owned_value_at(3)),
4512                                 Token::from(yystack.owned_value_at(2)),
4513                                 NodeList::from(yystack.owned_value_at(1)),
4514                                 Token::from(yystack.owned_value_at(0))
4515                            )
4516                        )
4517                    },
4518
4519
4520  122 =>  /* lhs: primary_value call_op "local variable or method"  */
4521  /* "src/parser/parse.y":1695  */
4522                    {
4523                        yyval = Value::Node(
4524                            self.builder.attr_asgn(
4525                                 BoxedNode::from(yystack.owned_value_at(2)),
4526                                 Token::from(yystack.owned_value_at(1)),
4527                                 Token::from(yystack.owned_value_at(0))
4528                            )
4529                        );
4530                    },
4531
4532
4533  123 =>  /* lhs: primary_value "::" "local variable or method"  */
4534  /* "src/parser/parse.y":1705  */
4535                    {
4536                        yyval = Value::Node(
4537                            self.builder.attr_asgn(
4538                                 BoxedNode::from(yystack.owned_value_at(2)),
4539                                 Token::from(yystack.owned_value_at(1)),
4540                                 Token::from(yystack.owned_value_at(0))
4541                            )
4542                        );
4543                    },
4544
4545
4546  124 =>  /* lhs: primary_value call_op "constant"  */
4547  /* "src/parser/parse.y":1715  */
4548                    {
4549                        yyval = Value::Node(
4550                            self.builder.attr_asgn(
4551                                 BoxedNode::from(yystack.owned_value_at(2)),
4552                                 Token::from(yystack.owned_value_at(1)),
4553                                 Token::from(yystack.owned_value_at(0))
4554                            )
4555                        );
4556                    },
4557
4558
4559  125 =>  /* lhs: primary_value "::" "constant"  */
4560  /* "src/parser/parse.y":1725  */
4561                    {
4562                        yyval = Value::Node(
4563                            self.builder.assignable(
4564                                self.builder.const_fetch(
4565                                     BoxedNode::from(yystack.owned_value_at(2)),
4566                                     Token::from(yystack.owned_value_at(1)),
4567                                     Token::from(yystack.owned_value_at(0)),
4568                                )
4569                            )?
4570                        );
4571                    },
4572
4573
4574  126 =>  /* lhs: ":: at EXPR_BEG" "constant"  */
4575  /* "src/parser/parse.y":1737  */
4576                    {
4577                        yyval = Value::Node(
4578                            self.builder.assignable(
4579                                self.builder.const_global(
4580                                     Token::from(yystack.owned_value_at(1)),
4581                                     Token::from(yystack.owned_value_at(0)),
4582                                )
4583                            )?
4584                        );
4585                    },
4586
4587
4588  127 =>  /* lhs: backref  */
4589  /* "src/parser/parse.y":1748  */
4590                    {
4591                        yyval = Value::Node(
4592                            self.builder.assignable(
4593                                 BoxedNode::from(yystack.owned_value_at(0))
4594                            )?
4595                        );
4596                    },
4597
4598
4599  128 =>  /* cname: "local variable or method"  */
4600  /* "src/parser/parse.y":1758  */
4601                    {
4602                        return self.yyerror(yystack.location_at (0), DiagnosticMessage::ClassOrModuleNameMustBeConstant {});
4603                    },
4604
4605
4606  129 =>  /* cname: "constant"  */
4607  /* "src/parser/parse.y":1762  */
4608                    {
4609                        yyval =  yystack.owned_value_at(0);
4610                    },
4611
4612
4613  130 =>  /* cpath: ":: at EXPR_BEG" cname  */
4614  /* "src/parser/parse.y":1768  */
4615                    {
4616                        yyval = Value::Node(
4617                            self.builder.const_global( Token::from(yystack.owned_value_at(1)),  Token::from(yystack.owned_value_at(0)))
4618                        );
4619                    },
4620
4621
4622  131 =>  /* cpath: cname  */
4623  /* "src/parser/parse.y":1774  */
4624                    {
4625                        yyval = Value::Node(
4626                            self.builder.const_( Token::from(yystack.owned_value_at(0)))
4627                        );
4628                    },
4629
4630
4631  132 =>  /* cpath: primary_value "::" cname  */
4632  /* "src/parser/parse.y":1780  */
4633                    {
4634                        yyval = Value::Node(
4635                            self.builder.const_fetch(
4636                                 BoxedNode::from(yystack.owned_value_at(2)),
4637                                 Token::from(yystack.owned_value_at(1)),
4638                                 Token::from(yystack.owned_value_at(0)),
4639                            )
4640                        );
4641                    },
4642
4643
4644  133 =>  /* fname: "local variable or method"  */
4645  /* "src/parser/parse.y":1792  */
4646                    {
4647                        yyval =  yystack.owned_value_at(0);
4648                    },
4649
4650
4651  134 =>  /* fname: "constant"  */
4652  /* "src/parser/parse.y":1796  */
4653                    {
4654                        yyval =  yystack.owned_value_at(0);
4655                    },
4656
4657
4658  135 =>  /* fname: "method"  */
4659  /* "src/parser/parse.y":1800  */
4660                    {
4661                        yyval =  yystack.owned_value_at(0);
4662                    },
4663
4664
4665  136 =>  /* fname: op  */
4666  /* "src/parser/parse.y":1804  */
4667                    {
4668                        self.yylexer.lex_state.set(EXPR_ENDFN);
4669                        yyval =  yystack.owned_value_at(0);
4670                    },
4671
4672
4673  137 =>  /* fname: reswords  */
4674  /* "src/parser/parse.y":1809  */
4675                    {
4676                        yyval =  yystack.owned_value_at(0);
4677                    },
4678
4679
4680  138 =>  /* fitem: fname  */
4681  /* "src/parser/parse.y":1815  */
4682                    {
4683                        yyval = Value::Node(
4684                            self.builder.symbol_internal( Token::from(yystack.owned_value_at(0)))
4685                        );
4686                    },
4687
4688
4689  139 =>  /* fitem: symbol  */
4690  /* "src/parser/parse.y":1821  */
4691                    {
4692                        yyval =  yystack.owned_value_at(0);
4693                    },
4694
4695
4696  140 =>  /* undef_list: fitem  */
4697  /* "src/parser/parse.y":1827  */
4698                    {
4699                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
4700                    },
4701
4702
4703  141 =>  /* @9: %empty  */
4704  /* "src/parser/parse.y":1831  */
4705                    {
4706                        self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
4707                        yyval = Value::None;
4708                    },
4709
4710
4711  142 =>  /* undef_list: undef_list "," @9 fitem  */
4712  /* "src/parser/parse.y":1836  */
4713                    {
4714                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
4715                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
4716                        yyval = Value::NodeList(nodes);
4717                    },
4718
4719
4720  143 =>  /* op: "|"  */
4721  /* "src/parser/parse.y":1843  */
4722                             { yyval =  yystack.owned_value_at(0); },
4723
4724
4725  144 =>  /* op: "^"  */
4726  /* "src/parser/parse.y":1844  */
4727                             { yyval =  yystack.owned_value_at(0); },
4728
4729
4730  145 =>  /* op: "& (tAMPER2)"  */
4731  /* "src/parser/parse.y":1845  */
4732                             { yyval =  yystack.owned_value_at(0); },
4733
4734
4735  146 =>  /* op: "<=>"  */
4736  /* "src/parser/parse.y":1846  */
4737                             { yyval =  yystack.owned_value_at(0); },
4738
4739
4740  147 =>  /* op: "=="  */
4741  /* "src/parser/parse.y":1847  */
4742                             { yyval =  yystack.owned_value_at(0); },
4743
4744
4745  148 =>  /* op: "==="  */
4746  /* "src/parser/parse.y":1848  */
4747                             { yyval =  yystack.owned_value_at(0); },
4748
4749
4750  149 =>  /* op: "=~"  */
4751  /* "src/parser/parse.y":1849  */
4752                             { yyval =  yystack.owned_value_at(0); },
4753
4754
4755  150 =>  /* op: "!~"  */
4756  /* "src/parser/parse.y":1850  */
4757                             { yyval =  yystack.owned_value_at(0); },
4758
4759
4760  151 =>  /* op: ">"  */
4761  /* "src/parser/parse.y":1851  */
4762                             { yyval =  yystack.owned_value_at(0); },
4763
4764
4765  152 =>  /* op: ">="  */
4766  /* "src/parser/parse.y":1852  */
4767                             { yyval =  yystack.owned_value_at(0); },
4768
4769
4770  153 =>  /* op: "<"  */
4771  /* "src/parser/parse.y":1853  */
4772                             { yyval =  yystack.owned_value_at(0); },
4773
4774
4775  154 =>  /* op: "<="  */
4776  /* "src/parser/parse.y":1854  */
4777                             { yyval =  yystack.owned_value_at(0); },
4778
4779
4780  155 =>  /* op: "!="  */
4781  /* "src/parser/parse.y":1855  */
4782                             { yyval =  yystack.owned_value_at(0); },
4783
4784
4785  156 =>  /* op: "<<"  */
4786  /* "src/parser/parse.y":1856  */
4787                             { yyval =  yystack.owned_value_at(0); },
4788
4789
4790  157 =>  /* op: ">>"  */
4791  /* "src/parser/parse.y":1857  */
4792                             { yyval =  yystack.owned_value_at(0); },
4793
4794
4795  158 =>  /* op: "+"  */
4796  /* "src/parser/parse.y":1858  */
4797                             { yyval =  yystack.owned_value_at(0); },
4798
4799
4800  159 =>  /* op: "-"  */
4801  /* "src/parser/parse.y":1859  */
4802                             { yyval =  yystack.owned_value_at(0); },
4803
4804
4805  160 =>  /* op: "* (tSTAR2)"  */
4806  /* "src/parser/parse.y":1860  */
4807                             { yyval =  yystack.owned_value_at(0); },
4808
4809
4810  161 =>  /* op: "*"  */
4811  /* "src/parser/parse.y":1861  */
4812                             { yyval =  yystack.owned_value_at(0); },
4813
4814
4815  162 =>  /* op: "/"  */
4816  /* "src/parser/parse.y":1862  */
4817                             { yyval =  yystack.owned_value_at(0); },
4818
4819
4820  163 =>  /* op: "%"  */
4821  /* "src/parser/parse.y":1863  */
4822                             { yyval =  yystack.owned_value_at(0); },
4823
4824
4825  164 =>  /* op: "**"  */
4826  /* "src/parser/parse.y":1864  */
4827                             { yyval =  yystack.owned_value_at(0); },
4828
4829
4830  165 =>  /* op: "**arg"  */
4831  /* "src/parser/parse.y":1865  */
4832                             { yyval =  yystack.owned_value_at(0); },
4833
4834
4835  166 =>  /* op: "!"  */
4836  /* "src/parser/parse.y":1866  */
4837                             { yyval =  yystack.owned_value_at(0); },
4838
4839
4840  167 =>  /* op: "~"  */
4841  /* "src/parser/parse.y":1867  */
4842                             { yyval =  yystack.owned_value_at(0); },
4843
4844
4845  168 =>  /* op: "unary+"  */
4846  /* "src/parser/parse.y":1868  */
4847                             { yyval =  yystack.owned_value_at(0); },
4848
4849
4850  169 =>  /* op: "unary-"  */
4851  /* "src/parser/parse.y":1869  */
4852                             { yyval =  yystack.owned_value_at(0); },
4853
4854
4855  170 =>  /* op: "[]"  */
4856  /* "src/parser/parse.y":1870  */
4857                             { yyval =  yystack.owned_value_at(0); },
4858
4859
4860  171 =>  /* op: "[]="  */
4861  /* "src/parser/parse.y":1871  */
4862                             { yyval =  yystack.owned_value_at(0); },
4863
4864
4865  172 =>  /* op: "`"  */
4866  /* "src/parser/parse.y":1872  */
4867                             { yyval =  yystack.owned_value_at(0); },
4868
4869
4870  173 =>  /* reswords: "`__LINE__'"  */
4871  /* "src/parser/parse.y":1875  */
4872                                { yyval =  yystack.owned_value_at(0); },
4873
4874
4875  174 =>  /* reswords: "`__FILE__'"  */
4876  /* "src/parser/parse.y":1876  */
4877                                { yyval =  yystack.owned_value_at(0); },
4878
4879
4880  175 =>  /* reswords: "`__ENCODING__'"  */
4881  /* "src/parser/parse.y":1877  */
4882                                { yyval =  yystack.owned_value_at(0); },
4883
4884
4885  176 =>  /* reswords: "`BEGIN'"  */
4886  /* "src/parser/parse.y":1878  */
4887                                { yyval =  yystack.owned_value_at(0); },
4888
4889
4890  177 =>  /* reswords: "`END'"  */
4891  /* "src/parser/parse.y":1879  */
4892                                { yyval =  yystack.owned_value_at(0); },
4893
4894
4895  178 =>  /* reswords: "`alias'"  */
4896  /* "src/parser/parse.y":1880  */
4897                                { yyval =  yystack.owned_value_at(0); },
4898
4899
4900  179 =>  /* reswords: "`and'"  */
4901  /* "src/parser/parse.y":1881  */
4902                                { yyval =  yystack.owned_value_at(0); },
4903
4904
4905  180 =>  /* reswords: "`begin'"  */
4906  /* "src/parser/parse.y":1882  */
4907                                { yyval =  yystack.owned_value_at(0); },
4908
4909
4910  181 =>  /* reswords: "`break'"  */
4911  /* "src/parser/parse.y":1883  */
4912                                { yyval =  yystack.owned_value_at(0); },
4913
4914
4915  182 =>  /* reswords: "`case'"  */
4916  /* "src/parser/parse.y":1884  */
4917                                { yyval =  yystack.owned_value_at(0); },
4918
4919
4920  183 =>  /* reswords: "`class'"  */
4921  /* "src/parser/parse.y":1885  */
4922                                { yyval =  yystack.owned_value_at(0); },
4923
4924
4925  184 =>  /* reswords: "`def'"  */
4926  /* "src/parser/parse.y":1886  */
4927                                { yyval =  yystack.owned_value_at(0); },
4928
4929
4930  185 =>  /* reswords: "`defined?'"  */
4931  /* "src/parser/parse.y":1887  */
4932                                { yyval =  yystack.owned_value_at(0); },
4933
4934
4935  186 =>  /* reswords: "`do'"  */
4936  /* "src/parser/parse.y":1888  */
4937                                { yyval =  yystack.owned_value_at(0); },
4938
4939
4940  187 =>  /* reswords: "`else'"  */
4941  /* "src/parser/parse.y":1889  */
4942                                { yyval =  yystack.owned_value_at(0); },
4943
4944
4945  188 =>  /* reswords: "`elsif'"  */
4946  /* "src/parser/parse.y":1890  */
4947                                { yyval =  yystack.owned_value_at(0); },
4948
4949
4950  189 =>  /* reswords: "`end'"  */
4951  /* "src/parser/parse.y":1891  */
4952                                { yyval =  yystack.owned_value_at(0); },
4953
4954
4955  190 =>  /* reswords: "`ensure'"  */
4956  /* "src/parser/parse.y":1892  */
4957                                { yyval =  yystack.owned_value_at(0); },
4958
4959
4960  191 =>  /* reswords: "`false'"  */
4961  /* "src/parser/parse.y":1893  */
4962                                { yyval =  yystack.owned_value_at(0); },
4963
4964
4965  192 =>  /* reswords: "`for'"  */
4966  /* "src/parser/parse.y":1894  */
4967                                { yyval =  yystack.owned_value_at(0); },
4968
4969
4970  193 =>  /* reswords: "`in'"  */
4971  /* "src/parser/parse.y":1895  */
4972                                { yyval =  yystack.owned_value_at(0); },
4973
4974
4975  194 =>  /* reswords: "`module'"  */
4976  /* "src/parser/parse.y":1896  */
4977                                { yyval =  yystack.owned_value_at(0); },
4978
4979
4980  195 =>  /* reswords: "`next'"  */
4981  /* "src/parser/parse.y":1897  */
4982                                { yyval =  yystack.owned_value_at(0); },
4983
4984
4985  196 =>  /* reswords: "`nil'"  */
4986  /* "src/parser/parse.y":1898  */
4987                                { yyval =  yystack.owned_value_at(0); },
4988
4989
4990  197 =>  /* reswords: "`not'"  */
4991  /* "src/parser/parse.y":1899  */
4992                                { yyval =  yystack.owned_value_at(0); },
4993
4994
4995  198 =>  /* reswords: "`or'"  */
4996  /* "src/parser/parse.y":1900  */
4997                                { yyval =  yystack.owned_value_at(0); },
4998
4999
5000  199 =>  /* reswords: "`redo'"  */
5001  /* "src/parser/parse.y":1901  */
5002                                { yyval =  yystack.owned_value_at(0); },
5003
5004
5005  200 =>  /* reswords: "`rescue'"  */
5006  /* "src/parser/parse.y":1902  */
5007                                { yyval =  yystack.owned_value_at(0); },
5008
5009
5010  201 =>  /* reswords: "`retry'"  */
5011  /* "src/parser/parse.y":1903  */
5012                                { yyval =  yystack.owned_value_at(0); },
5013
5014
5015  202 =>  /* reswords: "`return'"  */
5016  /* "src/parser/parse.y":1904  */
5017                                { yyval =  yystack.owned_value_at(0); },
5018
5019
5020  203 =>  /* reswords: "`self'"  */
5021  /* "src/parser/parse.y":1905  */
5022                                { yyval =  yystack.owned_value_at(0); },
5023
5024
5025  204 =>  /* reswords: "`super'"  */
5026  /* "src/parser/parse.y":1906  */
5027                                { yyval =  yystack.owned_value_at(0); },
5028
5029
5030  205 =>  /* reswords: "`then'"  */
5031  /* "src/parser/parse.y":1907  */
5032                                { yyval =  yystack.owned_value_at(0); },
5033
5034
5035  206 =>  /* reswords: "`true'"  */
5036  /* "src/parser/parse.y":1908  */
5037                                { yyval =  yystack.owned_value_at(0); },
5038
5039
5040  207 =>  /* reswords: "`undef'"  */
5041  /* "src/parser/parse.y":1909  */
5042                                { yyval =  yystack.owned_value_at(0); },
5043
5044
5045  208 =>  /* reswords: "`when'"  */
5046  /* "src/parser/parse.y":1910  */
5047                                { yyval =  yystack.owned_value_at(0); },
5048
5049
5050  209 =>  /* reswords: "`yield'"  */
5051  /* "src/parser/parse.y":1911  */
5052                                { yyval =  yystack.owned_value_at(0); },
5053
5054
5055  210 =>  /* reswords: "`if'"  */
5056  /* "src/parser/parse.y":1912  */
5057                                { yyval =  yystack.owned_value_at(0); },
5058
5059
5060  211 =>  /* reswords: "`unless'"  */
5061  /* "src/parser/parse.y":1913  */
5062                                { yyval =  yystack.owned_value_at(0); },
5063
5064
5065  212 =>  /* reswords: "`while'"  */
5066  /* "src/parser/parse.y":1914  */
5067                                { yyval =  yystack.owned_value_at(0); },
5068
5069
5070  213 =>  /* reswords: "`until'"  */
5071  /* "src/parser/parse.y":1915  */
5072                                { yyval =  yystack.owned_value_at(0); },
5073
5074
5075  214 =>  /* arg: lhs "=" arg_rhs  */
5076  /* "src/parser/parse.y":1919  */
5077                    {
5078                        yyval = Value::Node(
5079                            self.builder.assign(
5080                                 BoxedNode::from(yystack.owned_value_at(2)),
5081                                 Token::from(yystack.owned_value_at(1)),
5082                                 BoxedNode::from(yystack.owned_value_at(0))
5083                            )
5084                        );
5085                    },
5086
5087
5088  215 =>  /* arg: var_lhs "operator-assignment" arg_rhs  */
5089  /* "src/parser/parse.y":1929  */
5090                    {
5091                        yyval = Value::Node(
5092                            self.builder.op_assign(
5093                                 BoxedNode::from(yystack.owned_value_at(2)),
5094                                 Token::from(yystack.owned_value_at(1)),
5095                                 BoxedNode::from(yystack.owned_value_at(0))
5096                            )?
5097                        );
5098                    },
5099
5100
5101  216 =>  /* arg: primary_value "[ (tLBRACK2)" opt_call_args rbracket "operator-assignment" arg_rhs  */
5102  /* "src/parser/parse.y":1939  */
5103                    {
5104                        yyval = Value::Node(
5105                            self.builder.op_assign(
5106                                self.builder.index(
5107                                     BoxedNode::from(yystack.owned_value_at(5)),
5108                                     Token::from(yystack.owned_value_at(4)),
5109                                     NodeList::from(yystack.owned_value_at(3)),
5110                                     Token::from(yystack.owned_value_at(2))
5111                                ),
5112                                 Token::from(yystack.owned_value_at(1)),
5113                                 BoxedNode::from(yystack.owned_value_at(0))
5114                            )?
5115                        );
5116                    },
5117
5118
5119  217 =>  /* arg: primary_value call_op "local variable or method" "operator-assignment" arg_rhs  */
5120  /* "src/parser/parse.y":1954  */
5121                    {
5122                        yyval = Value::Node(
5123                            self.builder.op_assign(
5124                                self.builder.call_method(
5125                                    Some( BoxedNode::from(yystack.owned_value_at(4))),
5126                                    Some( Token::from(yystack.owned_value_at(3))),
5127                                    Some( Token::from(yystack.owned_value_at(2))),
5128                                    None,
5129                                    vec![],
5130                                    None
5131                                ),
5132                                 Token::from(yystack.owned_value_at(1)),
5133                                 BoxedNode::from(yystack.owned_value_at(0))
5134                            )?
5135                        );
5136                    },
5137
5138
5139  218 =>  /* arg: primary_value call_op "constant" "operator-assignment" arg_rhs  */
5140  /* "src/parser/parse.y":1971  */
5141                    {
5142                        yyval = Value::Node(
5143                            self.builder.op_assign(
5144                                self.builder.call_method(
5145                                    Some( BoxedNode::from(yystack.owned_value_at(4))),
5146                                    Some( Token::from(yystack.owned_value_at(3))),
5147                                    Some( Token::from(yystack.owned_value_at(2))),
5148                                    None,
5149                                    vec![],
5150                                    None
5151                                ),
5152                                 Token::from(yystack.owned_value_at(1)),
5153                                 BoxedNode::from(yystack.owned_value_at(0))
5154                            )?
5155                        );
5156                    },
5157
5158
5159  219 =>  /* arg: primary_value "::" "local variable or method" "operator-assignment" arg_rhs  */
5160  /* "src/parser/parse.y":1988  */
5161                    {
5162                        yyval = Value::Node(
5163                            self.builder.op_assign(
5164                                self.builder.call_method(
5165                                    Some( BoxedNode::from(yystack.owned_value_at(4))),
5166                                    Some( Token::from(yystack.owned_value_at(3))),
5167                                    Some( Token::from(yystack.owned_value_at(2))),
5168                                    None,
5169                                    vec![],
5170                                    None
5171                                ),
5172                                 Token::from(yystack.owned_value_at(1)),
5173                                 BoxedNode::from(yystack.owned_value_at(0))
5174                            )?
5175                        );
5176                    },
5177
5178
5179  220 =>  /* arg: primary_value "::" "constant" "operator-assignment" arg_rhs  */
5180  /* "src/parser/parse.y":2005  */
5181                    {
5182                        let const_ = self.builder.const_op_assignable(
5183                            self.builder.const_fetch(
5184                                 BoxedNode::from(yystack.owned_value_at(4)),
5185                                 Token::from(yystack.owned_value_at(3)),
5186                                 Token::from(yystack.owned_value_at(2))
5187                            )
5188                        );
5189                        yyval = Value::Node(
5190                            self.builder.op_assign(
5191                                const_,
5192                                 Token::from(yystack.owned_value_at(1)),
5193                                 BoxedNode::from(yystack.owned_value_at(0))
5194                            )?
5195                        );
5196                    },
5197
5198
5199  221 =>  /* arg: ":: at EXPR_BEG" "constant" "operator-assignment" arg_rhs  */
5200  /* "src/parser/parse.y":2022  */
5201                    {
5202                        let const_ = self.builder.const_op_assignable(
5203                            self.builder.const_global(
5204                                 Token::from(yystack.owned_value_at(3)),
5205                                 Token::from(yystack.owned_value_at(2))
5206                            )
5207                        );
5208                        yyval = Value::Node(
5209                            self.builder.op_assign(
5210                                const_,
5211                                 Token::from(yystack.owned_value_at(1)),
5212                                 BoxedNode::from(yystack.owned_value_at(0))
5213                            )?
5214                        );
5215                    },
5216
5217
5218  222 =>  /* arg: backref "operator-assignment" arg_rhs  */
5219  /* "src/parser/parse.y":2038  */
5220                    {
5221                        yyval = Value::Node(
5222                            self.builder.op_assign(
5223                                 BoxedNode::from(yystack.owned_value_at(2)),
5224                                 Token::from(yystack.owned_value_at(1)),
5225                                 BoxedNode::from(yystack.owned_value_at(0))
5226                            )?
5227                        );
5228                    },
5229
5230
5231  223 =>  /* arg: arg ".." arg  */
5232  /* "src/parser/parse.y":2048  */
5233                    {
5234                        let left =  BoxedNode::from(yystack.owned_value_at(2));
5235                        self.value_expr(&left)?;
5236
5237                        let right =  BoxedNode::from(yystack.owned_value_at(0));
5238                        self.value_expr(&right)?;
5239
5240                        yyval = Value::Node(
5241                            self.builder.range_inclusive(
5242                                Some(left),
5243                                 Token::from(yystack.owned_value_at(1)),
5244                                Some(right)
5245                            )
5246                        );
5247                    },
5248
5249
5250  224 =>  /* arg: arg "..." arg  */
5251  /* "src/parser/parse.y":2064  */
5252                    {
5253                        let left =  BoxedNode::from(yystack.owned_value_at(2));
5254                        self.value_expr(&left)?;
5255
5256                        let right =  BoxedNode::from(yystack.owned_value_at(0));
5257                        self.value_expr(&right)?;
5258
5259                        yyval = Value::Node(
5260                            self.builder.range_exclusive(
5261                                Some(left),
5262                                 Token::from(yystack.owned_value_at(1)),
5263                                Some(right)
5264                            )
5265                        );
5266                    },
5267
5268
5269  225 =>  /* arg: arg ".."  */
5270  /* "src/parser/parse.y":2080  */
5271                    {
5272                        let left =  BoxedNode::from(yystack.owned_value_at(1));
5273                        self.value_expr(&left)?;
5274
5275                        yyval = Value::Node(
5276                            self.builder.range_inclusive(
5277                                Some(left),
5278                                 Token::from(yystack.owned_value_at(0)),
5279                                None
5280                            )
5281                        );
5282                    },
5283
5284
5285  226 =>  /* arg: arg "..."  */
5286  /* "src/parser/parse.y":2093  */
5287                    {
5288                        let left =  BoxedNode::from(yystack.owned_value_at(1));
5289                        self.value_expr(&left)?;
5290
5291                        yyval = Value::Node(
5292                            self.builder.range_exclusive(
5293                                Some(left),
5294                                 Token::from(yystack.owned_value_at(0)),
5295                                None
5296                            )
5297                        );
5298                    },
5299
5300
5301  227 =>  /* arg: "(.." arg  */
5302  /* "src/parser/parse.y":2106  */
5303                    {
5304                        let right =  BoxedNode::from(yystack.owned_value_at(0));
5305                        self.value_expr(&right)?;
5306
5307                        yyval = Value::Node(
5308                            self.builder.range_inclusive(
5309                                None,
5310                                 Token::from(yystack.owned_value_at(1)),
5311                                Some(right)
5312                            )
5313                        );
5314                    },
5315
5316
5317  228 =>  /* arg: "(..." arg  */
5318  /* "src/parser/parse.y":2119  */
5319                    {
5320                        let right =  BoxedNode::from(yystack.owned_value_at(0));
5321                        self.value_expr(&right)?;
5322
5323                        yyval = Value::Node(
5324                            self.builder.range_exclusive(
5325                                None,
5326                                 Token::from(yystack.owned_value_at(1)),
5327                                Some(right)
5328                            )
5329                        );
5330                    },
5331
5332
5333  229 =>  /* arg: arg "+" arg  */
5334  /* "src/parser/parse.y":2132  */
5335                    {
5336                        yyval = Value::Node(
5337                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5338                        );
5339                    },
5340
5341
5342  230 =>  /* arg: arg "-" arg  */
5343  /* "src/parser/parse.y":2138  */
5344                    {
5345                        yyval = Value::Node(
5346                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5347                        );
5348                    },
5349
5350
5351  231 =>  /* arg: arg "* (tSTAR2)" arg  */
5352  /* "src/parser/parse.y":2144  */
5353                    {
5354                        yyval = Value::Node(
5355                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5356                        );
5357                    },
5358
5359
5360  232 =>  /* arg: arg "/" arg  */
5361  /* "src/parser/parse.y":2150  */
5362                    {
5363                        yyval = Value::Node(
5364                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5365                        );
5366                    },
5367
5368
5369  233 =>  /* arg: arg "%" arg  */
5370  /* "src/parser/parse.y":2156  */
5371                    {
5372                        yyval = Value::Node(
5373                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5374                        );
5375                    },
5376
5377
5378  234 =>  /* arg: arg "**" arg  */
5379  /* "src/parser/parse.y":2162  */
5380                    {
5381                        yyval = Value::Node(
5382                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5383                        );
5384                    },
5385
5386
5387  235 =>  /* arg: tUMINUS_NUM simple_numeric "**" arg  */
5388  /* "src/parser/parse.y":2168  */
5389                    {
5390                        yyval = Value::Node(
5391                            self.builder.unary_op(
5392                                 Token::from(yystack.owned_value_at(3)),
5393                                self.builder.binary_op(
5394                                     BoxedNode::from(yystack.owned_value_at(2)),
5395                                     Token::from(yystack.owned_value_at(1)),
5396                                     BoxedNode::from(yystack.owned_value_at(0))
5397                                )?
5398                            )?
5399                        );
5400                    },
5401
5402
5403  236 =>  /* arg: "unary+" arg  */
5404  /* "src/parser/parse.y":2181  */
5405                    {
5406                        yyval = Value::Node(
5407                            self.builder.unary_op(
5408                                 Token::from(yystack.owned_value_at(1)),
5409                                 BoxedNode::from(yystack.owned_value_at(0))
5410                            )?
5411                        );
5412                    },
5413
5414
5415  237 =>  /* arg: "unary-" arg  */
5416  /* "src/parser/parse.y":2190  */
5417                    {
5418                        yyval = Value::Node(
5419                            self.builder.unary_op(
5420                                 Token::from(yystack.owned_value_at(1)),
5421                                 BoxedNode::from(yystack.owned_value_at(0))
5422                            )?
5423                        );
5424                    },
5425
5426
5427  238 =>  /* arg: arg "|" arg  */
5428  /* "src/parser/parse.y":2199  */
5429                    {
5430                        yyval = Value::Node(
5431                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5432                        );
5433                    },
5434
5435
5436  239 =>  /* arg: arg "^" arg  */
5437  /* "src/parser/parse.y":2205  */
5438                    {
5439                        yyval = Value::Node(
5440                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5441                        );
5442                    },
5443
5444
5445  240 =>  /* arg: arg "& (tAMPER2)" arg  */
5446  /* "src/parser/parse.y":2211  */
5447                    {
5448                        yyval = Value::Node(
5449                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5450                        );
5451                    },
5452
5453
5454  241 =>  /* arg: arg "<=>" arg  */
5455  /* "src/parser/parse.y":2217  */
5456                    {
5457                        yyval = Value::Node(
5458                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5459                        );
5460                    },
5461
5462
5463  242 =>  /* arg: rel_expr  */
5464  /* "src/parser/parse.y":2223  */
5465                    {
5466                        yyval =  yystack.owned_value_at(0);
5467                    },
5468
5469
5470  243 =>  /* arg: arg "==" arg  */
5471  /* "src/parser/parse.y":2227  */
5472                    {
5473                        yyval = Value::Node(
5474                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5475                        );
5476                    },
5477
5478
5479  244 =>  /* arg: arg "===" arg  */
5480  /* "src/parser/parse.y":2233  */
5481                    {
5482                        yyval = Value::Node(
5483                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5484                        );
5485                    },
5486
5487
5488  245 =>  /* arg: arg "!=" arg  */
5489  /* "src/parser/parse.y":2239  */
5490                    {
5491                        yyval = Value::Node(
5492                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5493                        );
5494                    },
5495
5496
5497  246 =>  /* arg: arg "=~" arg  */
5498  /* "src/parser/parse.y":2245  */
5499                    {
5500                        yyval = Value::Node(
5501                            self.builder.match_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5502                        );
5503                    },
5504
5505
5506  247 =>  /* arg: arg "!~" arg  */
5507  /* "src/parser/parse.y":2251  */
5508                    {
5509                        yyval = Value::Node(
5510                            self.builder.binary_op(
5511                                 BoxedNode::from(yystack.owned_value_at(2)),
5512                                 Token::from(yystack.owned_value_at(1)),
5513                                 BoxedNode::from(yystack.owned_value_at(0))
5514                            )?
5515                        );
5516                    },
5517
5518
5519  248 =>  /* arg: "!" arg  */
5520  /* "src/parser/parse.y":2261  */
5521                    {
5522                        yyval = Value::Node(
5523                            self.builder.not_op(
5524                                 Token::from(yystack.owned_value_at(1)),
5525                                None,
5526                                Some( BoxedNode::from(yystack.owned_value_at(0))),
5527                                None
5528                            )?
5529                        );
5530                    },
5531
5532
5533  249 =>  /* arg: "~" arg  */
5534  /* "src/parser/parse.y":2272  */
5535                    {
5536                        yyval = Value::Node(
5537                            self.builder.unary_op(
5538                                 Token::from(yystack.owned_value_at(1)),
5539                                 BoxedNode::from(yystack.owned_value_at(0))
5540                            )?
5541                        );
5542                    },
5543
5544
5545  250 =>  /* arg: arg "<<" arg  */
5546  /* "src/parser/parse.y":2281  */
5547                    {
5548                        yyval = Value::Node(
5549                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5550                        );
5551                    },
5552
5553
5554  251 =>  /* arg: arg ">>" arg  */
5555  /* "src/parser/parse.y":2287  */
5556                    {
5557                        yyval = Value::Node(
5558                            self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)),  Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
5559                        );
5560                    },
5561
5562
5563  252 =>  /* arg: arg "&&" arg  */
5564  /* "src/parser/parse.y":2293  */
5565                    {
5566                        yyval = Value::Node(
5567                            self.builder.logical_op(
5568                                LogicalOp::And,
5569                                 BoxedNode::from(yystack.owned_value_at(2)),
5570                                 Token::from(yystack.owned_value_at(1)),
5571                                 BoxedNode::from(yystack.owned_value_at(0))
5572                            )?
5573                        );
5574                    },
5575
5576
5577  253 =>  /* arg: arg "||" arg  */
5578  /* "src/parser/parse.y":2304  */
5579                    {
5580                        yyval = Value::Node(
5581                            self.builder.logical_op(
5582                                LogicalOp::Or,
5583                                 BoxedNode::from(yystack.owned_value_at(2)),
5584                                 Token::from(yystack.owned_value_at(1)),
5585                                 BoxedNode::from(yystack.owned_value_at(0))
5586                            )?
5587                        );
5588                    },
5589
5590
5591  254 =>  /* @10: %empty  */
5592  /* "src/parser/parse.y":2315  */
5593                    {
5594                        self.context.set_in_defined(true);
5595                        yyval = Value::None;
5596                    },
5597
5598
5599  255 =>  /* arg: "`defined?'" opt_nl @10 arg  */
5600  /* "src/parser/parse.y":2320  */
5601                    {
5602                        self.context.set_in_defined(false);
5603                        yyval = Value::Node(
5604                            self.builder.keyword_cmd(
5605                                KeywordCmd::Defined,
5606                                 Token::from(yystack.owned_value_at(3)),
5607                                None,
5608                                vec![  Node::from(yystack.owned_value_at(0)) ],
5609                                None
5610                            )?
5611                        );
5612                    },
5613
5614
5615  256 =>  /* arg: arg tEH arg opt_nl tCOLON arg  */
5616  /* "src/parser/parse.y":2333  */
5617                    {
5618                        let expr =  BoxedNode::from(yystack.owned_value_at(5));
5619                        self.value_expr(&expr)?;
5620
5621                        yyval = Value::Node(
5622                            self.builder.ternary(
5623                                expr,
5624                                 Token::from(yystack.owned_value_at(4)),
5625                                 BoxedNode::from(yystack.owned_value_at(3)),
5626                                 Token::from(yystack.owned_value_at(1)),
5627                                 BoxedNode::from(yystack.owned_value_at(0))
5628                            )
5629                        );
5630                    },
5631
5632
5633  257 =>  /* arg: defn_head f_opt_paren_args "=" arg  */
5634  /* "src/parser/parse.y":2348  */
5635                    {
5636                        let DefnHead { def_t, name_t } =  DefnHead::from(yystack.owned_value_at(3));
5637                        let TokenWithContext { token: name_t, ctx } = name_t;
5638                        self.validate_endless_method_name(&name_t)?;
5639
5640                        yyval = Value::Node(
5641                            self.builder.def_endless_method(
5642                                def_t,
5643                                name_t,
5644                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
5645                                 Token::from(yystack.owned_value_at(1)),
5646                                Some( BoxedNode::from(yystack.owned_value_at(0)))
5647                            )?
5648                        );
5649
5650                        self.local_pop();
5651                        self.current_arg_stack.pop();
5652                        self.context.set_in_def(ctx.in_def());
5653                    },
5654
5655
5656  258 =>  /* arg: defn_head f_opt_paren_args "=" arg "`rescue' modifier" arg  */
5657  /* "src/parser/parse.y":2368  */
5658                    {
5659                        let DefnHead { def_t, name_t } =  DefnHead::from(yystack.owned_value_at(5));
5660                        let TokenWithContext { token: name_t, ctx } = name_t;
5661                        self.validate_endless_method_name(&name_t)?;
5662
5663                        let rescue_body = self.builder.rescue_body(
5664                             Token::from(yystack.owned_value_at(1)),
5665                            None,
5666                            None,
5667                            None,
5668                            None,
5669                            Some( BoxedNode::from(yystack.owned_value_at(0)))
5670                        );
5671
5672                        let method_body = self.builder.begin_body(
5673                            Some( BoxedNode::from(yystack.owned_value_at(2))),
5674                            vec![ *rescue_body ],
5675                            None,
5676                            None,
5677                        );
5678
5679                        yyval = Value::Node(
5680                            self.builder.def_endless_method(
5681                                def_t,
5682                                name_t,
5683                                 MaybeBoxedNode::from(yystack.owned_value_at(4)),
5684                                 Token::from(yystack.owned_value_at(3)),
5685                                method_body
5686                            )?
5687                        );
5688
5689                        self.local_pop();
5690                        self.current_arg_stack.pop();
5691                        self.context.set_in_def(ctx.in_def());
5692                    },
5693
5694
5695  259 =>  /* arg: defs_head f_opt_paren_args "=" arg  */
5696  /* "src/parser/parse.y":2404  */
5697                    {
5698                        let DefsHead { def_t, definee, dot_t, name_t } =  DefsHead::from(yystack.owned_value_at(3));
5699                        let TokenWithContext { token: name_t, ctx } = name_t;
5700                        self.validate_endless_method_name(&name_t)?;
5701
5702                        yyval = Value::Node(
5703                            self.builder.def_endless_singleton(
5704                                def_t,
5705                                definee,
5706                                dot_t,
5707                                name_t,
5708                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
5709                                 Token::from(yystack.owned_value_at(1)),
5710                                Some( BoxedNode::from(yystack.owned_value_at(0)))
5711                            )?
5712                        );
5713
5714                        self.local_pop();
5715                        self.current_arg_stack.pop();
5716                        self.context.set_in_def(ctx.in_def());
5717                    },
5718
5719
5720  260 =>  /* arg: defs_head f_opt_paren_args "=" arg "`rescue' modifier" arg  */
5721  /* "src/parser/parse.y":2426  */
5722                    {
5723                        let DefsHead { def_t, definee, dot_t, name_t } =  DefsHead::from(yystack.owned_value_at(5));
5724                        let TokenWithContext { token: name_t, ctx } = name_t;
5725                        self.validate_endless_method_name(&name_t)?;
5726
5727                        let rescue_body = self.builder.rescue_body(
5728                             Token::from(yystack.owned_value_at(1)),
5729                            None,
5730                            None,
5731                            None,
5732                            None,
5733                            Some( BoxedNode::from(yystack.owned_value_at(0)))
5734                        );
5735
5736                        let method_body = self.builder.begin_body(
5737                            Some( BoxedNode::from(yystack.owned_value_at(2))),
5738                            vec![ *rescue_body ],
5739                            None,
5740                            None,
5741                        );
5742
5743                        yyval = Value::Node(
5744                            self.builder.def_endless_singleton(
5745                                def_t,
5746                                definee,
5747                                dot_t,
5748                                name_t,
5749                                 MaybeBoxedNode::from(yystack.owned_value_at(4)),
5750                                 Token::from(yystack.owned_value_at(3)),
5751                                method_body
5752                            )?
5753                        );
5754
5755                        self.local_pop();
5756                        self.current_arg_stack.pop();
5757                        self.context.set_in_def(ctx.in_def());
5758                    },
5759
5760
5761  261 =>  /* arg: primary  */
5762  /* "src/parser/parse.y":2464  */
5763                    {
5764                        yyval =  yystack.owned_value_at(0);
5765                    },
5766
5767
5768  262 =>  /* relop: ">"  */
5769  /* "src/parser/parse.y":2470  */
5770                    {
5771                        yyval =  yystack.owned_value_at(0);
5772                    },
5773
5774
5775  263 =>  /* relop: "<"  */
5776  /* "src/parser/parse.y":2474  */
5777                    {
5778                        yyval =  yystack.owned_value_at(0);
5779                    },
5780
5781
5782  264 =>  /* relop: ">="  */
5783  /* "src/parser/parse.y":2478  */
5784                    {
5785                        yyval =  yystack.owned_value_at(0);
5786                    },
5787
5788
5789  265 =>  /* relop: "<="  */
5790  /* "src/parser/parse.y":2482  */
5791                    {
5792                        yyval =  yystack.owned_value_at(0);
5793                    },
5794
5795
5796  266 =>  /* rel_expr: arg relop arg  */
5797  /* "src/parser/parse.y":2488  */
5798                    {
5799                        yyval = Value::Node(
5800                            self.builder.binary_op(
5801                                 BoxedNode::from(yystack.owned_value_at(2)),
5802                                 Token::from(yystack.owned_value_at(1)),
5803                                 BoxedNode::from(yystack.owned_value_at(0))
5804                            )?
5805                        );
5806                    },
5807
5808
5809  267 =>  /* rel_expr: rel_expr relop arg  */
5810  /* "src/parser/parse.y":2498  */
5811                    {
5812                        let op_t =  Token::from(yystack.owned_value_at(1));
5813                        self.warn(
5814                            yystack.location_at (1),
5815                            DiagnosticMessage::ComparisonAfterComparison { comparison: clone_value(&op_t) }
5816                        );
5817                        yyval = Value::Node(
5818                            self.builder.binary_op(
5819                                 BoxedNode::from(yystack.owned_value_at(2)),
5820                                op_t,
5821                                 BoxedNode::from(yystack.owned_value_at(0))
5822                            )?
5823                        );
5824                    },
5825
5826
5827  268 =>  /* arg_value: arg  */
5828  /* "src/parser/parse.y":2515  */
5829                    {
5830                        let arg =  BoxedNode::from(yystack.owned_value_at(0));
5831                        self.value_expr(&arg)?;
5832                        yyval = Value::Node(arg);
5833                    },
5834
5835
5836  269 =>  /* aref_args: none  */
5837  /* "src/parser/parse.y":2523  */
5838                    {
5839                        yyval = Value::NodeList( Box::default() );
5840                    },
5841
5842
5843  270 =>  /* aref_args: args trailer  */
5844  /* "src/parser/parse.y":2527  */
5845                    {
5846                        yyval =  yystack.owned_value_at(1);
5847                    },
5848
5849
5850  271 =>  /* aref_args: args "," assocs trailer  */
5851  /* "src/parser/parse.y":2531  */
5852                    {
5853                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
5854                        nodes.push(
5855                            *self.builder.associate(
5856                                None,
5857                                 NodeList::from(yystack.owned_value_at(1)),
5858                                None
5859                            )
5860                        );
5861                        yyval = Value::NodeList(nodes);
5862                    },
5863
5864
5865  272 =>  /* aref_args: assocs trailer  */
5866  /* "src/parser/parse.y":2543  */
5867                    {
5868                        yyval = Value::NodeList(
5869                            Box::new(
5870                                vec![
5871                                    *self.builder.associate(
5872                                        None,
5873                                         NodeList::from(yystack.owned_value_at(1)),
5874                                        None
5875                                    )
5876                                ]
5877                            )
5878                        );
5879                    },
5880
5881
5882  273 =>  /* arg_rhs: arg  */
5883  /* "src/parser/parse.y":2559  */
5884                    {
5885                        let arg =  BoxedNode::from(yystack.owned_value_at(0));
5886                        self.value_expr(&arg)?;
5887                        yyval = Value::Node(arg);
5888                    },
5889
5890
5891  274 =>  /* arg_rhs: arg "`rescue' modifier" arg  */
5892  /* "src/parser/parse.y":2565  */
5893                    {
5894                        let arg =  BoxedNode::from(yystack.owned_value_at(2));
5895                        self.value_expr(&arg)?;
5896
5897                        let rescue_body = self.builder.rescue_body(
5898                             Token::from(yystack.owned_value_at(1)),
5899                            None,
5900                            None,
5901                            None,
5902                            None,
5903                            Some( BoxedNode::from(yystack.owned_value_at(0)))
5904                        );
5905
5906                        yyval = Value::Node(
5907                            self.builder.begin_body(
5908                                Some(arg),
5909                                vec![ *rescue_body ],
5910                                None,
5911                                None,
5912                            ).expect("expected begin_body to return Some (compound_stmt was given)")
5913                        );
5914                    },
5915
5916
5917  275 =>  /* paren_args: "( (tLPAREN2)" opt_call_args rparen  */
5918  /* "src/parser/parse.y":2590  */
5919                    {
5920                        yyval = Value::new_paren_args(
5921                            ParenArgs {
5922                                begin_t:  Token::from(yystack.owned_value_at(2)),
5923                                args:  NodeList::from(yystack.owned_value_at(1)),
5924                                end_t:  Token::from(yystack.owned_value_at(0))
5925                            }
5926                        );
5927                    },
5928
5929
5930  276 =>  /* paren_args: "( (tLPAREN2)" args "," args_forward rparen  */
5931  /* "src/parser/parse.y":2600  */
5932                    {
5933                        if !self.static_env.is_forward_args_declared() {
5934                            return self.yyerror(
5935                                yystack.location_at (1),
5936                                DiagnosticMessage::UnexpectedToken { token_name: "tBDOT3".to_string() }
5937                            );
5938                        }
5939
5940                        let mut args =  NodeList::from(yystack.owned_value_at(3));
5941                        let forwarded_args = *self.builder.forwarded_args( Token::from(yystack.owned_value_at(1)));
5942                        args.push(forwarded_args);
5943
5944                        yyval = Value::new_paren_args(
5945                            ParenArgs {
5946                                begin_t:  Token::from(yystack.owned_value_at(4)),
5947                                args,
5948                                end_t:  Token::from(yystack.owned_value_at(0))
5949                            }
5950                        );
5951                    },
5952
5953
5954  277 =>  /* paren_args: "( (tLPAREN2)" args_forward rparen  */
5955  /* "src/parser/parse.y":2621  */
5956                    {
5957                        if !self.static_env.is_forward_args_declared() {
5958                            return self.yyerror(yystack.location_at (1), DiagnosticMessage::UnexpectedToken { token_name: "tBDOT3".to_string() });
5959                        }
5960
5961                        yyval = Value::new_paren_args(
5962                            ParenArgs {
5963                                begin_t:  Token::from(yystack.owned_value_at(2)),
5964                                args: vec![ *self.builder.forwarded_args( Token::from(yystack.owned_value_at(1))) ],
5965                                end_t:  Token::from(yystack.owned_value_at(0))
5966                            }
5967                        );
5968                    },
5969
5970
5971  278 =>  /* opt_paren_args: none  */
5972  /* "src/parser/parse.y":2637  */
5973                    {
5974                        yyval = Value::new_opt_paren_args(
5975                            OptParenArgs {
5976                                begin_t: None,
5977                                args: vec![],
5978                                end_t: None
5979                            }
5980                        );
5981                    },
5982
5983
5984  279 =>  /* opt_paren_args: paren_args  */
5985  /* "src/parser/parse.y":2647  */
5986                    {
5987                        let ParenArgs { begin_t, args, end_t } =  ParenArgs::from(yystack.owned_value_at(0));
5988                        yyval = Value::new_opt_paren_args(
5989                            OptParenArgs {
5990                                begin_t: Some(begin_t),
5991                                args,
5992                                end_t: Some(end_t)
5993                            }
5994                        );
5995                    },
5996
5997
5998  280 =>  /* opt_call_args: none  */
5999  /* "src/parser/parse.y":2660  */
6000                    {
6001                        yyval = Value::NodeList( Box::default() );
6002                    },
6003
6004
6005  281 =>  /* opt_call_args: call_args  */
6006  /* "src/parser/parse.y":2664  */
6007                    {
6008                        yyval =  yystack.owned_value_at(0);
6009                    },
6010
6011
6012  282 =>  /* opt_call_args: args ","  */
6013  /* "src/parser/parse.y":2668  */
6014                    {
6015                        yyval =  yystack.owned_value_at(1);
6016                    },
6017
6018
6019  283 =>  /* opt_call_args: args "," assocs ","  */
6020  /* "src/parser/parse.y":2672  */
6021                    {
6022                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
6023                        let pair = *self.builder.associate(None,  NodeList::from(yystack.owned_value_at(1)), None);
6024                        nodes.push(pair);
6025                        yyval = Value::NodeList(nodes);
6026                    },
6027
6028
6029  284 =>  /* opt_call_args: assocs ","  */
6030  /* "src/parser/parse.y":2679  */
6031                    {
6032                        yyval = Value::NodeList(
6033                            Box::new(
6034                                vec![
6035                                    *self.builder.associate(
6036                                        None,
6037                                         NodeList::from(yystack.owned_value_at(1)),
6038                                        None
6039                                    )
6040                                ]
6041                            )
6042                        );
6043                    },
6044
6045
6046  285 =>  /* call_args: command  */
6047  /* "src/parser/parse.y":2695  */
6048                    {
6049                        let command =  Node::from(yystack.owned_value_at(0));
6050                        self.value_expr(&command)?;
6051                        yyval = Value::NodeList( Box::new(vec![ command ]) );
6052                    },
6053
6054
6055  286 =>  /* call_args: args opt_block_arg  */
6056  /* "src/parser/parse.y":2701  */
6057                    {
6058                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
6059                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
6060
6061                        yyval = Value::NodeList(nodes);
6062                    },
6063
6064
6065  287 =>  /* call_args: assocs opt_block_arg  */
6066  /* "src/parser/parse.y":2708  */
6067                    {
6068                        let hash = *self.builder.associate(None,  NodeList::from(yystack.owned_value_at(1)), None);
6069                        let mut opt_block_arg =  NodeList::from(yystack.owned_value_at(0));
6070
6071                        let mut nodes = Box::new(Vec::with_capacity(1 + opt_block_arg.len()));
6072                        nodes.push(hash);
6073                        nodes.append(&mut opt_block_arg);
6074
6075                        yyval = Value::NodeList(nodes);
6076                    },
6077
6078
6079  288 =>  /* call_args: args "," assocs opt_block_arg  */
6080  /* "src/parser/parse.y":2719  */
6081                    {
6082                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
6083                        let hash = *self.builder.associate(None,  NodeList::from(yystack.owned_value_at(1)), None);
6084                        let mut opt_block_arg =  NodeList::from(yystack.owned_value_at(0));
6085
6086                        nodes.reserve(1 + opt_block_arg.len());
6087                        nodes.push(hash);
6088                        nodes.append(&mut opt_block_arg);
6089
6090                        yyval = Value::NodeList(nodes);
6091                    },
6092
6093
6094  289 =>  /* call_args: block_arg  */
6095  /* "src/parser/parse.y":2731  */
6096                    {
6097                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
6098                    },
6099
6100
6101  290 =>  /* @11: %empty  */
6102  /* "src/parser/parse.y":2736  */
6103                    {
6104                        let lookahead =
6105                            matches!(
6106                                self.last_token_type,
6107                                Lexer::tLPAREN2
6108                                    | Lexer::tLPAREN
6109                                    | Lexer:: tLPAREN_ARG
6110                                    | Lexer::tLBRACK2
6111                                    | Lexer::tLBRACK
6112                            );
6113
6114                        if lookahead { self.yylexer.cmdarg.pop() }
6115                        self.yylexer.cmdarg.push(true);
6116                        if lookahead { self.yylexer.cmdarg.push(false) }
6117                        yyval = Value::None;
6118                    },
6119
6120
6121  291 =>  /* command_args: @11 call_args  */
6122  /* "src/parser/parse.y":2753  */
6123                    {
6124                        let lookahead = matches!(self.last_token_type, Lexer::tLBRACE_ARG);
6125
6126                        if lookahead { self.yylexer.cmdarg.pop() }
6127                        self.yylexer.cmdarg.pop();
6128                        if lookahead { self.yylexer.cmdarg.push(false) }
6129
6130                        yyval =  yystack.owned_value_at(0);
6131                    },
6132
6133
6134  292 =>  /* block_arg: "&" arg_value  */
6135  /* "src/parser/parse.y":2765  */
6136                    {
6137                        yyval = Value::Node(
6138                            self.builder.block_pass(
6139                                 Token::from(yystack.owned_value_at(1)),
6140                                Some( BoxedNode::from(yystack.owned_value_at(0)))
6141                            )
6142                        );
6143                    },
6144
6145
6146  293 =>  /* block_arg: "&"  */
6147  /* "src/parser/parse.y":2774  */
6148                    {
6149                        if !self.static_env.is_anonymous_blockarg_declared() {
6150                            return self.yyerror(yystack.location_at (0), DiagnosticMessage::NoAnonymousBlockarg {});
6151                        }
6152
6153                        yyval = Value::Node(
6154                            self.builder.block_pass(
6155                                 Token::from(yystack.owned_value_at(0)),
6156                                None,
6157                            )
6158                        );
6159                    },
6160
6161
6162  294 =>  /* opt_block_arg: "," block_arg  */
6163  /* "src/parser/parse.y":2789  */
6164                    {
6165                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
6166                    },
6167
6168
6169  295 =>  /* opt_block_arg: none  */
6170  /* "src/parser/parse.y":2793  */
6171                    {
6172                        yyval = Value::NodeList( Box::default() );
6173                    },
6174
6175
6176  296 =>  /* args: arg_value  */
6177  /* "src/parser/parse.y":2799  */
6178                    {
6179                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
6180                    },
6181
6182
6183  297 =>  /* args: "*" arg_value  */
6184  /* "src/parser/parse.y":2803  */
6185                    {
6186                        yyval = Value::NodeList(
6187                            Box::new(
6188                                vec![
6189                                    *self.builder.splat(
6190                                         Token::from(yystack.owned_value_at(1)),
6191                                        Some( BoxedNode::from(yystack.owned_value_at(0)))
6192                                    )
6193                                ]
6194                            )
6195                        );
6196                    },
6197
6198
6199  298 =>  /* args: args "," arg_value  */
6200  /* "src/parser/parse.y":2816  */
6201                    {
6202                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
6203                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
6204                        yyval = Value::NodeList(nodes);
6205                    },
6206
6207
6208  299 =>  /* args: args "," "*" arg_value  */
6209  /* "src/parser/parse.y":2822  */
6210                    {
6211                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
6212                        let splat = *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))));
6213                        nodes.push(splat);
6214                        yyval = Value::NodeList(nodes);
6215                    },
6216
6217
6218  300 =>  /* mrhs_arg: mrhs  */
6219  /* "src/parser/parse.y":2831  */
6220                    {
6221                        yyval = Value::Node(
6222                            self.builder.array(None,  NodeList::from(yystack.owned_value_at(0)), None)
6223                        );
6224                    },
6225
6226
6227  301 =>  /* mrhs_arg: arg_value  */
6228  /* "src/parser/parse.y":2837  */
6229                    {
6230                        yyval =  yystack.owned_value_at(0);
6231                    },
6232
6233
6234  302 =>  /* mrhs: args "," arg_value  */
6235  /* "src/parser/parse.y":2843  */
6236                    {
6237                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
6238                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
6239                        yyval = Value::NodeList(nodes);
6240                    },
6241
6242
6243  303 =>  /* mrhs: args "," "*" arg_value  */
6244  /* "src/parser/parse.y":2849  */
6245                    {
6246                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
6247                        nodes.push(
6248                            *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))))
6249                        );
6250                        yyval = Value::NodeList(nodes);
6251                    },
6252
6253
6254  304 =>  /* mrhs: "*" arg_value  */
6255  /* "src/parser/parse.y":2857  */
6256                    {
6257                        yyval = Value::NodeList(
6258                            Box::new(
6259                                vec![
6260                                    *self.builder.splat(
6261                                         Token::from(yystack.owned_value_at(1)),
6262                                        Some( BoxedNode::from(yystack.owned_value_at(0)))
6263                                    )
6264                                ]
6265                            )
6266                        );
6267                    },
6268
6269
6270  305 =>  /* primary: literal  */
6271  /* "src/parser/parse.y":2872  */
6272                    {
6273                        yyval =  yystack.owned_value_at(0);
6274                    },
6275
6276
6277  306 =>  /* primary: strings  */
6278  /* "src/parser/parse.y":2876  */
6279                    {
6280                        yyval =  yystack.owned_value_at(0);
6281                    },
6282
6283
6284  307 =>  /* primary: xstring  */
6285  /* "src/parser/parse.y":2880  */
6286                    {
6287                        yyval =  yystack.owned_value_at(0);
6288                    },
6289
6290
6291  308 =>  /* primary: regexp  */
6292  /* "src/parser/parse.y":2884  */
6293                    {
6294                        yyval =  yystack.owned_value_at(0);
6295                    },
6296
6297
6298  309 =>  /* primary: words  */
6299  /* "src/parser/parse.y":2888  */
6300                    {
6301                        yyval =  yystack.owned_value_at(0);
6302                    },
6303
6304
6305  310 =>  /* primary: qwords  */
6306  /* "src/parser/parse.y":2892  */
6307                    {
6308                        yyval =  yystack.owned_value_at(0);
6309                    },
6310
6311
6312  311 =>  /* primary: symbols  */
6313  /* "src/parser/parse.y":2896  */
6314                    {
6315                        yyval =  yystack.owned_value_at(0);
6316                    },
6317
6318
6319  312 =>  /* primary: qsymbols  */
6320  /* "src/parser/parse.y":2900  */
6321                    {
6322                        yyval =  yystack.owned_value_at(0);
6323                    },
6324
6325
6326  313 =>  /* primary: var_ref  */
6327  /* "src/parser/parse.y":2904  */
6328                    {
6329                        yyval =  yystack.owned_value_at(0);
6330                    },
6331
6332
6333  314 =>  /* primary: backref  */
6334  /* "src/parser/parse.y":2908  */
6335                    {
6336                        yyval =  yystack.owned_value_at(0);
6337                    },
6338
6339
6340  315 =>  /* primary: "method"  */
6341  /* "src/parser/parse.y":2912  */
6342                    {
6343                        yyval = Value::Node(
6344                            self.builder.call_method(
6345                                None,
6346                                None,
6347                                Some( Token::from(yystack.owned_value_at(0))),
6348                                None,
6349                                vec![],
6350                                None
6351                            )
6352                        );
6353                    },
6354
6355
6356  316 =>  /* @12: %empty  */
6357  /* "src/parser/parse.y":2925  */
6358                    {
6359                        self.yylexer.cmdarg.push(false);
6360                        yyval = Value::None;
6361                    },
6362
6363
6364  317 =>  /* primary: k_begin @12 bodystmt k_end  */
6365  /* "src/parser/parse.y":2931  */
6366                    {
6367                        self.yylexer.cmdarg.pop();
6368
6369                        yyval = Value::Node(
6370                            self.builder.begin_keyword( Token::from(yystack.owned_value_at(3)),  MaybeBoxedNode::from(yystack.owned_value_at(1)),  Token::from(yystack.owned_value_at(0)))
6371                        );
6372                    },
6373
6374
6375  318 =>  /* @13: %empty  */
6376  /* "src/parser/parse.y":2938  */
6377                              { self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
6378
6379
6380  319 =>  /* primary: "( arg" @13 rparen  */
6381  /* "src/parser/parse.y":2939  */
6382                    {
6383                        yyval = Value::Node(
6384                            self.builder.begin(
6385                                 Token::from(yystack.owned_value_at(2)),
6386                                None,
6387                                 Token::from(yystack.owned_value_at(0))
6388                            )
6389                        );
6390                    },
6391
6392
6393  320 =>  /* @14: %empty  */
6394  /* "src/parser/parse.y":2948  */
6395                                   { self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
6396
6397
6398  321 =>  /* primary: "( arg" stmt @14 rparen  */
6399  /* "src/parser/parse.y":2949  */
6400                    {
6401                        yyval = Value::Node(
6402                            self.builder.begin(
6403                                 Token::from(yystack.owned_value_at(3)),
6404                                Some( BoxedNode::from(yystack.owned_value_at(2))),
6405                                 Token::from(yystack.owned_value_at(0))
6406                            )
6407                        );
6408                    },
6409
6410
6411  322 =>  /* primary: "(" compstmt ")"  */
6412  /* "src/parser/parse.y":2959  */
6413                    {
6414                        yyval = Value::Node(
6415                            self.builder.begin(
6416                                 Token::from(yystack.owned_value_at(2)),
6417                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6418                                 Token::from(yystack.owned_value_at(0))
6419                            )
6420                        );
6421                    },
6422
6423
6424  323 =>  /* primary: primary_value "::" "constant"  */
6425  /* "src/parser/parse.y":2969  */
6426                    {
6427                        yyval = Value::Node(
6428                            self.builder.const_fetch(
6429                                 BoxedNode::from(yystack.owned_value_at(2)),
6430                                 Token::from(yystack.owned_value_at(1)),
6431                                 Token::from(yystack.owned_value_at(0)),
6432                            )
6433                        );
6434                    },
6435
6436
6437  324 =>  /* primary: ":: at EXPR_BEG" "constant"  */
6438  /* "src/parser/parse.y":2979  */
6439                    {
6440                        yyval = Value::Node(
6441                            self.builder.const_global( Token::from(yystack.owned_value_at(1)),  Token::from(yystack.owned_value_at(0)))
6442                        );
6443                    },
6444
6445
6446  325 =>  /* primary: "[" aref_args "]"  */
6447  /* "src/parser/parse.y":2985  */
6448                    {
6449                        yyval = Value::Node(
6450                            self.builder.array(
6451                                Some( Token::from(yystack.owned_value_at(2))),
6452                                 NodeList::from(yystack.owned_value_at(1)),
6453                                Some( Token::from(yystack.owned_value_at(0)))
6454                            )
6455                        );
6456                    },
6457
6458
6459  326 =>  /* primary: "{" assoc_list "}"  */
6460  /* "src/parser/parse.y":2995  */
6461                    {
6462                        yyval = Value::Node(
6463                            self.builder.associate(
6464                                Some( Token::from(yystack.owned_value_at(2))),
6465                                 NodeList::from(yystack.owned_value_at(1)),
6466                                Some( Token::from(yystack.owned_value_at(0)))
6467                            )
6468                        );
6469                    },
6470
6471
6472  327 =>  /* primary: k_return  */
6473  /* "src/parser/parse.y":3005  */
6474                    {
6475                        yyval = Value::Node(
6476                            self.builder.keyword_cmd(
6477                                KeywordCmd::Return,
6478                                 Token::from(yystack.owned_value_at(0)),
6479                                None,
6480                                vec![],
6481                                None
6482                            )?
6483                        );
6484                    },
6485
6486
6487  328 =>  /* primary: "`yield'" "( (tLPAREN2)" call_args rparen  */
6488  /* "src/parser/parse.y":3017  */
6489                    {
6490                        yyval = Value::Node(
6491                            self.builder.keyword_cmd(
6492                                KeywordCmd::Yield,
6493                                 Token::from(yystack.owned_value_at(3)),
6494                                Some( Token::from(yystack.owned_value_at(2))),
6495                                 NodeList::from(yystack.owned_value_at(1)),
6496                                Some( Token::from(yystack.owned_value_at(0)))
6497                            )?
6498                        );
6499                    },
6500
6501
6502  329 =>  /* primary: "`yield'" "( (tLPAREN2)" rparen  */
6503  /* "src/parser/parse.y":3029  */
6504                    {
6505                        yyval = Value::Node(
6506                            self.builder.keyword_cmd(
6507                                KeywordCmd::Yield,
6508                                 Token::from(yystack.owned_value_at(2)),
6509                                Some( Token::from(yystack.owned_value_at(1))),
6510                                vec![],
6511                                Some( Token::from(yystack.owned_value_at(0)))
6512                            )?
6513                        );
6514                    },
6515
6516
6517  330 =>  /* primary: "`yield'"  */
6518  /* "src/parser/parse.y":3041  */
6519                    {
6520                        yyval = Value::Node(
6521                            self.builder.keyword_cmd(
6522                                KeywordCmd::Yield,
6523                                 Token::from(yystack.owned_value_at(0)),
6524                                None,
6525                                vec![],
6526                                None
6527                            )?
6528                        );
6529                    },
6530
6531
6532  331 =>  /* @15: %empty  */
6533  /* "src/parser/parse.y":3053  */
6534                    {
6535                        self.context.set_in_defined(true);
6536                        yyval = Value::None;
6537                    },
6538
6539
6540  332 =>  /* primary: "`defined?'" opt_nl "( (tLPAREN2)" @15 expr rparen  */
6541  /* "src/parser/parse.y":3058  */
6542                    {
6543                        self.context.set_in_defined(false);
6544                        yyval = Value::Node(
6545                            self.builder.keyword_cmd(
6546                                KeywordCmd::Defined,
6547                                 Token::from(yystack.owned_value_at(5)),
6548                                Some( Token::from(yystack.owned_value_at(3))),
6549                                vec![  Node::from(yystack.owned_value_at(1)) ],
6550                                Some( Token::from(yystack.owned_value_at(0)))
6551                            )?
6552                        );
6553                    },
6554
6555
6556  333 =>  /* primary: "`not'" "( (tLPAREN2)" expr rparen  */
6557  /* "src/parser/parse.y":3071  */
6558                    {
6559                        yyval = Value::Node(
6560                            self.builder.not_op(
6561                                 Token::from(yystack.owned_value_at(3)),
6562                                Some( Token::from(yystack.owned_value_at(2))),
6563                                Some( BoxedNode::from(yystack.owned_value_at(1))),
6564                                Some( Token::from(yystack.owned_value_at(0)))
6565                            )?
6566                        );
6567                    },
6568
6569
6570  334 =>  /* primary: "`not'" "( (tLPAREN2)" rparen  */
6571  /* "src/parser/parse.y":3082  */
6572                    {
6573                        yyval = Value::Node(
6574                            self.builder.not_op(
6575                                 Token::from(yystack.owned_value_at(2)),
6576                                Some( Token::from(yystack.owned_value_at(1))),
6577                                None,
6578                                Some( Token::from(yystack.owned_value_at(0)))
6579                            )?
6580                        );
6581                    },
6582
6583
6584  335 =>  /* primary: fcall brace_block  */
6585  /* "src/parser/parse.y":3093  */
6586                    {
6587                        let method_call = self.builder.call_method(
6588                            None,
6589                            None,
6590                            Some( Token::from(yystack.owned_value_at(1))),
6591                            None,
6592                            vec![],
6593                            None
6594                        );
6595                        let BraceBlock { begin_t, args_type, body, end_t } =  BraceBlock::from(yystack.owned_value_at(0));
6596
6597                        yyval = Value::Node(
6598                            self.builder.block(
6599                                method_call,
6600                                begin_t,
6601                                args_type,
6602                                body,
6603                                end_t
6604                            )?
6605                        );
6606                    },
6607
6608
6609  336 =>  /* primary: method_call  */
6610  /* "src/parser/parse.y":3115  */
6611                    {
6612                        yyval =  yystack.owned_value_at(0);
6613                    },
6614
6615
6616  337 =>  /* primary: method_call brace_block  */
6617  /* "src/parser/parse.y":3119  */
6618                    {
6619                        let BraceBlock { begin_t, args_type, body, end_t } =  BraceBlock::from(yystack.owned_value_at(0));
6620                        yyval = Value::Node(
6621                            self.builder.block(
6622                                 BoxedNode::from(yystack.owned_value_at(1)),
6623                                begin_t,
6624                                args_type,
6625                                body,
6626                                end_t
6627                            )?
6628                        );
6629                    },
6630
6631
6632  338 =>  /* primary: lambda  */
6633  /* "src/parser/parse.y":3132  */
6634                    {
6635                        yyval =  yystack.owned_value_at(0);
6636                    },
6637
6638
6639  339 =>  /* primary: k_if expr_value then compstmt if_tail k_end  */
6640  /* "src/parser/parse.y":3139  */
6641                    {
6642                        let IfTail { keyword_t, body: else_body } =  IfTail::from(yystack.owned_value_at(1));
6643
6644                        yyval = Value::Node(
6645                            self.builder.condition(
6646                                 Token::from(yystack.owned_value_at(5)),
6647                                 BoxedNode::from(yystack.owned_value_at(4)),
6648                                 Token::from(yystack.owned_value_at(3)),
6649                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6650                                keyword_t,
6651                                else_body,
6652                                Some( Token::from(yystack.owned_value_at(0)))
6653                            )
6654                        );
6655                    },
6656
6657
6658  340 =>  /* primary: k_unless expr_value then compstmt opt_else k_end  */
6659  /* "src/parser/parse.y":3158  */
6660                    {
6661                        let (else_t, body) =  OptElse::from(yystack.owned_value_at(1)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6662
6663                        yyval = Value::Node(
6664                            self.builder.condition(
6665                                 Token::from(yystack.owned_value_at(5)),
6666                                 BoxedNode::from(yystack.owned_value_at(4)),
6667                                 Token::from(yystack.owned_value_at(3)),
6668                                body,
6669                                else_t,
6670                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6671                                Some( Token::from(yystack.owned_value_at(0)))
6672                            )
6673                        );
6674                    },
6675
6676
6677  341 =>  /* primary: k_while expr_value_do compstmt k_end  */
6678  /* "src/parser/parse.y":3176  */
6679                    {
6680                        let ExprValueDo { value, do_t } =  ExprValueDo::from(yystack.owned_value_at(2));
6681                        yyval = Value::Node(
6682                            self.builder.loop_(
6683                                LoopType::While,
6684                                 Token::from(yystack.owned_value_at(3)),
6685                                value,
6686                                do_t,
6687                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6688                                 Token::from(yystack.owned_value_at(0))
6689                            )
6690                        );
6691                    },
6692
6693
6694  342 =>  /* primary: k_until expr_value_do compstmt k_end  */
6695  /* "src/parser/parse.y":3192  */
6696                    {
6697                        let ExprValueDo { value, do_t } =  ExprValueDo::from(yystack.owned_value_at(2));
6698                        yyval = Value::Node(
6699                            self.builder.loop_(
6700                                LoopType::Until,
6701                                 Token::from(yystack.owned_value_at(3)),
6702                                value,
6703                                do_t,
6704                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6705                                 Token::from(yystack.owned_value_at(0))
6706                            )
6707                        );
6708                    },
6709
6710
6711  343 =>  /* @16: %empty  */
6712  /* "src/parser/parse.y":3206  */
6713                    {
6714                        // TODO: there's a warning that wq/parser doesn't trigger,
6715                        // search for `p->case_labels`
6716                        yyval = Value::None;
6717                    },
6718
6719
6720  344 =>  /* primary: k_case expr_value opt_terms @16 case_body k_end  */
6721  /* "src/parser/parse.y":3213  */
6722                    {
6723                        let CaseBody { when_bodies, opt_else } =  CaseBody::from(yystack.owned_value_at(1));
6724                        let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6725
6726                        yyval = Value::Node(
6727                            self.builder.case(
6728                                 Token::from(yystack.owned_value_at(5)),
6729                                Some( BoxedNode::from(yystack.owned_value_at(4))),
6730                                when_bodies,
6731                                else_t,
6732                                else_body,
6733                                 Token::from(yystack.owned_value_at(0))
6734                            )
6735                        );
6736                    },
6737
6738
6739  345 =>  /* @17: %empty  */
6740  /* "src/parser/parse.y":3229  */
6741                    {
6742                        // TODO: there's a warning that wq/parser doesn't trigger,
6743                        // search for `p->case_labels`
6744                        yyval = Value::None;
6745                    },
6746
6747
6748  346 =>  /* primary: k_case opt_terms @17 case_body k_end  */
6749  /* "src/parser/parse.y":3236  */
6750                    {
6751                        let CaseBody { when_bodies, opt_else } =  CaseBody::from(yystack.owned_value_at(1));
6752                        let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6753
6754                        yyval = Value::Node(
6755                            self.builder.case(
6756                                 Token::from(yystack.owned_value_at(4)),
6757                                None,
6758                                when_bodies,
6759                                else_t,
6760                                else_body,
6761                                 Token::from(yystack.owned_value_at(0))
6762                            )
6763                        );
6764                    },
6765
6766
6767  347 =>  /* primary: k_case expr_value opt_terms p_case_body k_end  */
6768  /* "src/parser/parse.y":3254  */
6769                    {
6770                        let PCaseBody { in_bodies, opt_else } =  PCaseBody::from(yystack.owned_value_at(1));
6771                        let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6772
6773                        yyval = Value::Node(
6774                            self.builder.case_match(
6775                                 Token::from(yystack.owned_value_at(4)),
6776                                 BoxedNode::from(yystack.owned_value_at(3)),
6777                                in_bodies,
6778                                else_t,
6779                                else_body,
6780                                 Token::from(yystack.owned_value_at(0))
6781                            )
6782                        );
6783                    },
6784
6785
6786  348 =>  /* primary: k_for for_var "`in'" expr_value_do compstmt k_end  */
6787  /* "src/parser/parse.y":3272  */
6788                    {
6789                        let ExprValueDo { value, do_t } =  ExprValueDo::from(yystack.owned_value_at(2));
6790                        yyval = Value::Node(
6791                            self.builder.for_(
6792                                 Token::from(yystack.owned_value_at(5)),
6793                                 BoxedNode::from(yystack.owned_value_at(4)),
6794                                 Token::from(yystack.owned_value_at(3)),
6795                                value,
6796                                do_t,
6797                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6798                                 Token::from(yystack.owned_value_at(0))
6799                            )
6800                        );
6801                    },
6802
6803
6804  349 =>  /* @18: %empty  */
6805  /* "src/parser/parse.y":3287  */
6806                    {
6807                        self.local_push();
6808                        self.context.set_in_class(true);
6809                        yyval = Value::None;
6810                    },
6811
6812
6813  350 =>  /* primary: k_class cpath superclass @18 bodystmt k_end  */
6814  /* "src/parser/parse.y":3294  */
6815                    {
6816                        let TokenWithContext { token: k_class, ctx } =  TokenWithContext::from(yystack.owned_value_at(5));
6817                        if self.context.in_def() {
6818                            return self.yyerror(&k_class.loc, DiagnosticMessage::ClassDefinitionInMethodBody {});
6819                        }
6820
6821                        let Superclass { lt_t, value } =  Superclass::from(yystack.owned_value_at(3));
6822
6823                        yyval = Value::Node(
6824                            self.builder.def_class(
6825                                k_class,
6826                                 BoxedNode::from(yystack.owned_value_at(4)),
6827                                lt_t,
6828                                value,
6829                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6830                                 Token::from(yystack.owned_value_at(0))
6831                            )
6832                        );
6833
6834                        self.local_pop();
6835                        self.context.set_in_class(ctx.in_class());
6836                    },
6837
6838
6839  351 =>  /* @19: %empty  */
6840  /* "src/parser/parse.y":3317  */
6841                    {
6842                        self.context.set_in_def(false);
6843                        self.context.set_in_class(false);
6844                        self.local_push();
6845                        yyval = Value::None;
6846                    },
6847
6848
6849  352 =>  /* primary: k_class "<<" expr @19 term bodystmt k_end  */
6850  /* "src/parser/parse.y":3326  */
6851                    {
6852                        let TokenWithContext { token: k_class, ctx } =  TokenWithContext::from(yystack.owned_value_at(6));
6853                        yyval = Value::Node(
6854                            self.builder.def_sclass(
6855                                k_class,
6856                                 Token::from(yystack.owned_value_at(5)),
6857                                 BoxedNode::from(yystack.owned_value_at(4)),
6858                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6859                                 Token::from(yystack.owned_value_at(0))
6860                            )
6861                        );
6862
6863                        self.local_pop();
6864                        self.context.set_in_def(ctx.in_def());
6865                        self.context.set_in_class(ctx.in_class());
6866                    },
6867
6868
6869  353 =>  /* @20: %empty  */
6870  /* "src/parser/parse.y":3343  */
6871                    {
6872                        self.local_push();
6873                        self.context.set_in_class(true);
6874                        yyval = Value::None;
6875                    },
6876
6877
6878  354 =>  /* primary: k_module cpath @20 bodystmt k_end  */
6879  /* "src/parser/parse.y":3350  */
6880                    {
6881                        let TokenWithContext { token: k_module, ctx } =  TokenWithContext::from(yystack.owned_value_at(4));
6882                        if self.context.in_def() {
6883                            return self.yyerror(&k_module.loc, DiagnosticMessage::ModuleDefinitionInMethodBody {});
6884                        }
6885
6886                        yyval = Value::Node(
6887                            self.builder.def_module(
6888                                k_module,
6889                                 BoxedNode::from(yystack.owned_value_at(3)),
6890                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6891                                 Token::from(yystack.owned_value_at(0))
6892                            )
6893                        );
6894
6895                        self.local_pop();
6896                        self.context.set_in_class(ctx.in_class());
6897                    },
6898
6899
6900  355 =>  /* primary: defn_head f_arglist bodystmt k_end  */
6901  /* "src/parser/parse.y":3369  */
6902                    {
6903                        let DefnHead { def_t, name_t } =  DefnHead::from(yystack.owned_value_at(3));
6904                        let TokenWithContext { token: name_t, ctx } = name_t;
6905
6906                        yyval = Value::Node(
6907                            self.builder.def_method(
6908                                def_t,
6909                                name_t,
6910                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6911                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6912                                 Token::from(yystack.owned_value_at(0))
6913                            )?
6914                        );
6915
6916                        self.local_pop();
6917                        self.current_arg_stack.pop();
6918                        self.context.set_in_def(ctx.in_def());
6919                    },
6920
6921
6922  356 =>  /* primary: defs_head f_arglist bodystmt k_end  */
6923  /* "src/parser/parse.y":3388  */
6924                    {
6925                        let DefsHead { def_t, definee, dot_t, name_t } =  DefsHead::from(yystack.owned_value_at(3));
6926                        let TokenWithContext { token: name_t, ctx } = name_t;
6927
6928                        yyval = Value::Node(
6929                            self.builder.def_singleton(
6930                                def_t,
6931                                definee,
6932                                dot_t,
6933                                name_t,
6934                                 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6935                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6936                                 Token::from(yystack.owned_value_at(0))
6937                            )?
6938                        );
6939
6940                        self.local_pop();
6941                        self.current_arg_stack.pop();
6942                        self.context.set_in_def(ctx.in_def());
6943                    },
6944
6945
6946  357 =>  /* primary: "`break'"  */
6947  /* "src/parser/parse.y":3409  */
6948                    {
6949                        yyval = Value::Node(
6950                            self.builder.keyword_cmd(
6951                                KeywordCmd::Break,
6952                                 Token::from(yystack.owned_value_at(0)),
6953                                None,
6954                                vec![],
6955                                None
6956                            )?
6957                        );
6958                    },
6959
6960
6961  358 =>  /* primary: "`next'"  */
6962  /* "src/parser/parse.y":3421  */
6963                    {
6964                        yyval = Value::Node(
6965                            self.builder.keyword_cmd(
6966                                KeywordCmd::Next,
6967                                 Token::from(yystack.owned_value_at(0)),
6968                                None,
6969                                vec![],
6970                                None
6971                            )?
6972                        );
6973                    },
6974
6975
6976  359 =>  /* primary: "`redo'"  */
6977  /* "src/parser/parse.y":3433  */
6978                    {
6979                        yyval = Value::Node(
6980                            self.builder.keyword_cmd(
6981                                KeywordCmd::Redo,
6982                                 Token::from(yystack.owned_value_at(0)),
6983                                None,
6984                                vec![],
6985                                None
6986                            )?
6987                        );
6988                    },
6989
6990
6991  360 =>  /* primary: "`retry'"  */
6992  /* "src/parser/parse.y":3445  */
6993                    {
6994                        yyval = Value::Node(
6995                            self.builder.keyword_cmd(
6996                                KeywordCmd::Retry,
6997                                 Token::from(yystack.owned_value_at(0)),
6998                                None,
6999                                vec![],
7000                                None
7001                            )?
7002                        );
7003                    },
7004
7005
7006  361 =>  /* primary_value: primary  */
7007  /* "src/parser/parse.y":3459  */
7008                    {
7009                        let primary =  BoxedNode::from(yystack.owned_value_at(0));
7010                        self.value_expr(&primary)?;
7011                        yyval = Value::Node(primary);
7012                    },
7013
7014
7015  362 =>  /* k_begin: "`begin'"  */
7016  /* "src/parser/parse.y":3467  */
7017                    {
7018                        yyval =  yystack.owned_value_at(0);
7019                    },
7020
7021
7022  363 =>  /* k_if: "`if'"  */
7023  /* "src/parser/parse.y":3473  */
7024                    {
7025                        self.warn_eol(yystack.location_at (0), "if");
7026                        yyval =  yystack.owned_value_at(0);
7027                    },
7028
7029
7030  364 =>  /* k_unless: "`unless'"  */
7031  /* "src/parser/parse.y":3480  */
7032                    {
7033                        yyval =  yystack.owned_value_at(0);
7034                    },
7035
7036
7037  365 =>  /* k_while: "`while'"  */
7038  /* "src/parser/parse.y":3486  */
7039                    {
7040                        yyval =  yystack.owned_value_at(0);
7041                    },
7042
7043
7044  366 =>  /* k_until: "`until'"  */
7045  /* "src/parser/parse.y":3492  */
7046                    {
7047                        yyval =  yystack.owned_value_at(0);
7048                    },
7049
7050
7051  367 =>  /* k_case: "`case'"  */
7052  /* "src/parser/parse.y":3498  */
7053                    {
7054                        yyval =  yystack.owned_value_at(0);
7055                    },
7056
7057
7058  368 =>  /* k_for: "`for'"  */
7059  /* "src/parser/parse.y":3504  */
7060                    {
7061                        yyval =  yystack.owned_value_at(0);
7062                    },
7063
7064
7065  369 =>  /* k_class: "`class'"  */
7066  /* "src/parser/parse.y":3510  */
7067                    {
7068                        yyval = Value::TokenWithContext(
7069                            Box::new(
7070                                TokenWithContext {
7071                                    token:  Token::from(yystack.owned_value_at(0)),
7072                                    ctx: self.context.dump(),
7073                                }
7074                            )
7075                        );
7076                    },
7077
7078
7079  370 =>  /* k_module: "`module'"  */
7080  /* "src/parser/parse.y":3523  */
7081                    {
7082                        yyval = Value::TokenWithContext(
7083                            Box::new(
7084                                TokenWithContext {
7085                                    token:  Token::from(yystack.owned_value_at(0)),
7086                                    ctx: self.context.dump(),
7087                                }
7088                            )
7089                        );
7090                    },
7091
7092
7093  371 =>  /* k_def: "`def'"  */
7094  /* "src/parser/parse.y":3536  */
7095                    {
7096                        yyval =  yystack.owned_value_at(0);
7097                        self.context.set_in_argdef(true);
7098                    },
7099
7100
7101  372 =>  /* k_do: "`do'"  */
7102  /* "src/parser/parse.y":3543  */
7103                    {
7104                        yyval =  yystack.owned_value_at(0);
7105                    },
7106
7107
7108  373 =>  /* k_do_block: "`do' for block"  */
7109  /* "src/parser/parse.y":3549  */
7110                    {
7111                        yyval =  yystack.owned_value_at(0);
7112                    },
7113
7114
7115  374 =>  /* k_rescue: "`rescue'"  */
7116  /* "src/parser/parse.y":3555  */
7117                    {
7118                        yyval =  yystack.owned_value_at(0);
7119                    },
7120
7121
7122  375 =>  /* k_ensure: "`ensure'"  */
7123  /* "src/parser/parse.y":3561  */
7124                    {
7125                        yyval =  yystack.owned_value_at(0);
7126                    },
7127
7128
7129  376 =>  /* k_when: "`when'"  */
7130  /* "src/parser/parse.y":3567  */
7131                    {
7132                        yyval =  yystack.owned_value_at(0);
7133                    },
7134
7135
7136  377 =>  /* k_else: "`else'"  */
7137  /* "src/parser/parse.y":3573  */
7138                    {
7139                        yyval =  yystack.owned_value_at(0);
7140                    },
7141
7142
7143  378 =>  /* k_elsif: "`elsif'"  */
7144  /* "src/parser/parse.y":3579  */
7145                    {
7146                        self.warn_eol(yystack.location_at (0), "elsif");
7147                        yyval =  yystack.owned_value_at(0);
7148                    },
7149
7150
7151  379 =>  /* k_end: "`end'"  */
7152  /* "src/parser/parse.y":3586  */
7153                    {
7154                        yyval =  yystack.owned_value_at(0);
7155                    },
7156
7157
7158  380 =>  /* k_return: "`return'"  */
7159  /* "src/parser/parse.y":3592  */
7160                    {
7161                        if self.context.in_class() && !self.context.in_def() && !(self.context.in_block() || self.context.in_lambda()) {
7162                            return self.yyerror(yystack.location_at (0), DiagnosticMessage::InvalidReturnInClassOrModuleBody {});
7163                        }
7164                        yyval =  yystack.owned_value_at(0);
7165                    },
7166
7167
7168  381 =>  /* then: term  */
7169  /* "src/parser/parse.y":3601  */
7170                    {
7171                        yyval =  yystack.owned_value_at(0);
7172                    },
7173
7174
7175  382 =>  /* then: "`then'"  */
7176  /* "src/parser/parse.y":3605  */
7177                    {
7178                        yyval =  yystack.owned_value_at(0);
7179                    },
7180
7181
7182  383 =>  /* then: term "`then'"  */
7183  /* "src/parser/parse.y":3609  */
7184                    {
7185                        yyval =  yystack.owned_value_at(0);
7186                    },
7187
7188
7189  384 =>  /* do: term  */
7190  /* "src/parser/parse.y":3615  */
7191                    {
7192                        yyval =  yystack.owned_value_at(0);
7193                    },
7194
7195
7196  385 =>  /* do: "`do' for condition"  */
7197  /* "src/parser/parse.y":3619  */
7198                    {
7199                        yyval =  yystack.owned_value_at(0);
7200                    },
7201
7202
7203  386 =>  /* if_tail: opt_else  */
7204  /* "src/parser/parse.y":3625  */
7205                    {
7206                        let (keyword_t, body) =  OptElse::from(yystack.owned_value_at(0)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
7207                        yyval = Value::new_if_tail(IfTail { keyword_t, body });
7208                    },
7209
7210
7211  387 =>  /* if_tail: k_elsif expr_value then compstmt if_tail  */
7212  /* "src/parser/parse.y":3632  */
7213                    {
7214                        let IfTail { keyword_t, body: else_body } =  IfTail::from(yystack.owned_value_at(0));
7215
7216                        let elsif_t =  Token::from(yystack.owned_value_at(4));
7217
7218                        yyval = Value::new_if_tail(
7219                            IfTail {
7220                                keyword_t: Some(elsif_t.clone()),
7221                                body: Some(
7222                                    self.builder.condition(
7223                                        elsif_t,
7224                                         BoxedNode::from(yystack.owned_value_at(3)),
7225                                         Token::from(yystack.owned_value_at(2)),
7226                                         MaybeBoxedNode::from(yystack.owned_value_at(1)),
7227                                        keyword_t,
7228                                        else_body,
7229                                        None
7230                                    )
7231                                )
7232                            }
7233                        );
7234                    },
7235
7236
7237  388 =>  /* opt_else: none  */
7238  /* "src/parser/parse.y":3657  */
7239                    {
7240                        yyval = Value::new_opt_else(None);
7241                    },
7242
7243
7244  389 =>  /* opt_else: k_else compstmt  */
7245  /* "src/parser/parse.y":3661  */
7246                    {
7247                        let else_t =  Token::from(yystack.owned_value_at(1));
7248                        let body   =  MaybeBoxedNode::from(yystack.owned_value_at(0));
7249                        yyval = Value::new_opt_else(Some(Else { else_t, body }));
7250                    },
7251
7252
7253  390 =>  /* for_var: lhs  */
7254  /* "src/parser/parse.y":3669  */
7255                    {
7256                        yyval =  yystack.owned_value_at(0);
7257                    },
7258
7259
7260  391 =>  /* for_var: mlhs  */
7261  /* "src/parser/parse.y":3673  */
7262                    {
7263                        yyval =  yystack.owned_value_at(0);
7264                    },
7265
7266
7267  392 =>  /* f_marg: f_norm_arg  */
7268  /* "src/parser/parse.y":3679  */
7269                    {
7270                        yyval = Value::Node(
7271                            self.builder.arg( Token::from(yystack.owned_value_at(0)))?
7272                        );
7273                    },
7274
7275
7276  393 =>  /* f_marg: "(" f_margs rparen  */
7277  /* "src/parser/parse.y":3685  */
7278                    {
7279                        yyval = Value::Node(
7280                            self.builder.multi_lhs(
7281                                Some( Token::from(yystack.owned_value_at(2))),
7282                                 NodeList::from(yystack.owned_value_at(1)),
7283                                Some( Token::from(yystack.owned_value_at(0)))
7284                            )
7285                        );
7286                    },
7287
7288
7289  394 =>  /* f_marg_list: f_marg  */
7290  /* "src/parser/parse.y":3697  */
7291                    {
7292                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
7293                    },
7294
7295
7296  395 =>  /* f_marg_list: f_marg_list "," f_marg  */
7297  /* "src/parser/parse.y":3701  */
7298                    {
7299                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
7300                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
7301                        yyval = Value::NodeList(nodes);
7302                    },
7303
7304
7305  396 =>  /* f_margs: f_marg_list  */
7306  /* "src/parser/parse.y":3709  */
7307                    {
7308                        yyval =  yystack.owned_value_at(0);
7309                    },
7310
7311
7312  397 =>  /* f_margs: f_marg_list "," f_rest_marg  */
7313  /* "src/parser/parse.y":3713  */
7314                    {
7315                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
7316                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
7317                        yyval = Value::NodeList(nodes);
7318                    },
7319
7320
7321  398 =>  /* f_margs: f_marg_list "," f_rest_marg "," f_marg_list  */
7322  /* "src/parser/parse.y":3719  */
7323                    {
7324                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(4));
7325                        let f_rest_marg =  Node::from(yystack.owned_value_at(2));
7326                        let mut f_marg_list =  NodeList::from(yystack.owned_value_at(0));
7327
7328                        nodes.reserve(1 + f_marg_list.len());
7329                        nodes.push(f_rest_marg);
7330                        nodes.append(&mut f_marg_list);
7331
7332                        yyval = Value::NodeList(nodes);
7333                    },
7334
7335
7336  399 =>  /* f_margs: f_rest_marg  */
7337  /* "src/parser/parse.y":3731  */
7338                    {
7339                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
7340                    },
7341
7342
7343  400 =>  /* f_margs: f_rest_marg "," f_marg_list  */
7344  /* "src/parser/parse.y":3735  */
7345                    {
7346                        let f_rest_marg =  Node::from(yystack.owned_value_at(2));
7347                        let mut f_marg_list =  NodeList::from(yystack.owned_value_at(0));
7348
7349                        let mut nodes = Box::new( Vec::with_capacity(1 + f_marg_list.len()) );
7350                        nodes.push(f_rest_marg);
7351                        nodes.append(&mut f_marg_list);
7352
7353                        yyval = Value::NodeList(nodes);
7354                    },
7355
7356
7357  401 =>  /* f_rest_marg: "*" f_norm_arg  */
7358  /* "src/parser/parse.y":3748  */
7359                    {
7360                        yyval = Value::Node(
7361                            self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
7362                        );
7363                    },
7364
7365
7366  402 =>  /* f_rest_marg: "*"  */
7367  /* "src/parser/parse.y":3754  */
7368                    {
7369                        yyval = Value::Node(
7370                            self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?
7371                        );
7372                    },
7373
7374
7375  403 =>  /* f_any_kwrest: f_kwrest  */
7376  /* "src/parser/parse.y":3762  */
7377                    {
7378                        yyval =  yystack.owned_value_at(0);
7379                    },
7380
7381
7382  404 =>  /* f_any_kwrest: f_no_kwarg  */
7383  /* "src/parser/parse.y":3766  */
7384                    {
7385                        yyval =  yystack.owned_value_at(0);
7386                    },
7387
7388
7389  405 =>  /* @21: %empty  */
7390  /* "src/parser/parse.y":3771  */
7391                    {
7392                        self.context.set_in_argdef(false);
7393                        yyval = Value::None;
7394                    },
7395
7396
7397  406 =>  /* f_eq: @21 "="  */
7398  /* "src/parser/parse.y":3776  */
7399                    {
7400                        yyval =  yystack.owned_value_at(0);
7401                    },
7402
7403
7404  407 =>  /* block_args_tail: f_block_kwarg "," f_kwrest opt_f_block_arg  */
7405  /* "src/parser/parse.y":3782  */
7406                    {
7407                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
7408                        let mut f_kwrest =  NodeList::from(yystack.owned_value_at(1));
7409                        let mut opt_f_block_arg =  NodeList::from(yystack.owned_value_at(0));
7410
7411                        nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
7412                        nodes.append(&mut f_kwrest);
7413                        nodes.append(&mut opt_f_block_arg);
7414
7415                        yyval = Value::NodeList(nodes);
7416                    },
7417
7418
7419  408 =>  /* block_args_tail: f_block_kwarg opt_f_block_arg  */
7420  /* "src/parser/parse.y":3794  */
7421                    {
7422                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
7423                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
7424
7425                        yyval = Value::NodeList(nodes);
7426                    },
7427
7428
7429  409 =>  /* block_args_tail: f_any_kwrest opt_f_block_arg  */
7430  /* "src/parser/parse.y":3801  */
7431                    {
7432                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
7433                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
7434
7435                        yyval = Value::NodeList(nodes);
7436                    },
7437
7438
7439  410 =>  /* block_args_tail: f_block_arg  */
7440  /* "src/parser/parse.y":3808  */
7441                    {
7442                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
7443                    },
7444
7445
7446  411 =>  /* opt_block_args_tail: "," block_args_tail  */
7447  /* "src/parser/parse.y":3815  */
7448                    {
7449                        yyval =  yystack.owned_value_at(0);
7450                    },
7451
7452
7453  412 =>  /* opt_block_args_tail: %empty  */
7454  /* "src/parser/parse.y":3819  */
7455                    {
7456                        yyval = Value::NodeList( Box::default() );
7457                    },
7458
7459
7460  413 =>  /* excessed_comma: ","  */
7461  /* "src/parser/parse.y":3825  */
7462                    {
7463                        yyval =  yystack.owned_value_at(0);
7464                    },
7465
7466
7467  414 =>  /* block_param: f_arg "," f_block_optarg "," f_rest_arg opt_block_args_tail  */
7468  /* "src/parser/parse.y":3831  */
7469                    {
7470                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
7471                        let mut f_block_optarg =  NodeList::from(yystack.owned_value_at(3));
7472                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(1));
7473                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7474
7475                        nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + opt_block_args_tail.len());
7476                        nodes.append(&mut f_block_optarg);
7477                        nodes.append(&mut f_rest_arg);
7478                        nodes.append(&mut opt_block_args_tail);
7479
7480                        yyval = Value::NodeList(nodes);
7481                    },
7482
7483
7484  415 =>  /* block_param: f_arg "," f_block_optarg "," f_rest_arg "," f_arg opt_block_args_tail  */
7485  /* "src/parser/parse.y":3845  */
7486                    {
7487                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(7));
7488                        let mut f_block_optarg =  NodeList::from(yystack.owned_value_at(5));
7489                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(3));
7490                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
7491                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7492
7493                        nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
7494                        nodes.append(&mut f_block_optarg);
7495                        nodes.append(&mut f_rest_arg);
7496                        nodes.append(&mut f_arg);
7497                        nodes.append(&mut opt_block_args_tail);
7498
7499                        yyval = Value::NodeList(nodes);
7500                    },
7501
7502
7503  416 =>  /* block_param: f_arg "," f_block_optarg opt_block_args_tail  */
7504  /* "src/parser/parse.y":3861  */
7505                    {
7506                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
7507                        let mut f_block_optarg =  NodeList::from(yystack.owned_value_at(1));
7508                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7509
7510                        nodes.reserve(f_block_optarg.len() + opt_block_args_tail.len());
7511                        nodes.append(&mut f_block_optarg);
7512                        nodes.append(&mut opt_block_args_tail);
7513
7514                        yyval = Value::NodeList(nodes);
7515                    },
7516
7517
7518  417 =>  /* block_param: f_arg "," f_block_optarg "," f_arg opt_block_args_tail  */
7519  /* "src/parser/parse.y":3873  */
7520                    {
7521                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
7522                        let mut f_block_optarg =  NodeList::from(yystack.owned_value_at(3));
7523                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
7524                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7525
7526                        nodes.reserve(f_block_optarg.len() + f_arg.len() + opt_block_args_tail.len());
7527                        nodes.append(&mut f_block_optarg);
7528                        nodes.append(&mut f_arg);
7529                        nodes.append(&mut opt_block_args_tail);
7530
7531                        yyval = Value::NodeList(nodes);
7532                    },
7533
7534
7535  418 =>  /* block_param: f_arg "," f_rest_arg opt_block_args_tail  */
7536  /* "src/parser/parse.y":3887  */
7537                    {
7538                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
7539                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(1));
7540                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7541
7542                        nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
7543                        nodes.append(&mut f_rest_arg);
7544                        nodes.append(&mut opt_block_args_tail);
7545
7546                        yyval = Value::NodeList(nodes);
7547                    },
7548
7549
7550  419 =>  /* block_param: f_arg excessed_comma  */
7551  /* "src/parser/parse.y":3899  */
7552                    {
7553                        yyval =  yystack.owned_value_at(1);
7554                    },
7555
7556
7557  420 =>  /* block_param: f_arg "," f_rest_arg "," f_arg opt_block_args_tail  */
7558  /* "src/parser/parse.y":3903  */
7559                    {
7560                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
7561                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(3));
7562                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
7563                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7564
7565                        nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
7566                        nodes.append(&mut f_rest_arg);
7567                        nodes.append(&mut f_arg);
7568                        nodes.append(&mut opt_block_args_tail);
7569
7570                        yyval = Value::NodeList(nodes);
7571                    },
7572
7573
7574  421 =>  /* block_param: f_arg opt_block_args_tail  */
7575  /* "src/parser/parse.y":3917  */
7576                    {
7577                        let f_arg =  BoxedNodeList::from(yystack.owned_value_at(1));
7578                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7579                        let mut nodes;
7580
7581                        if opt_block_args_tail.is_empty() && f_arg.len() == 1 {
7582                            let procarg0 = *self.builder.procarg0(
7583                                Box::new(f_arg.into_iter().next().unwrap())
7584                            );
7585                            nodes = Box::new( vec![ procarg0 ] );
7586                        } else {
7587                            nodes = f_arg;
7588                            nodes.append(&mut opt_block_args_tail);
7589                        }
7590
7591                        yyval = Value::NodeList(nodes);
7592                    },
7593
7594
7595  422 =>  /* block_param: f_block_optarg "," f_rest_arg opt_block_args_tail  */
7596  /* "src/parser/parse.y":3935  */
7597                    {
7598                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
7599                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(1));
7600                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7601
7602                        nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
7603                        nodes.append(&mut f_rest_arg);
7604                        nodes.append(&mut opt_block_args_tail);
7605
7606                        yyval = Value::NodeList(nodes);
7607                    },
7608
7609
7610  423 =>  /* block_param: f_block_optarg "," f_rest_arg "," f_arg opt_block_args_tail  */
7611  /* "src/parser/parse.y":3947  */
7612                    {
7613                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
7614                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(3));
7615                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
7616                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7617
7618                        nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
7619                        nodes.append(&mut f_rest_arg);
7620                        nodes.append(&mut f_arg);
7621                        nodes.append(&mut opt_block_args_tail);
7622
7623                        yyval = Value::NodeList(nodes);
7624                    },
7625
7626
7627  424 =>  /* block_param: f_block_optarg opt_block_args_tail  */
7628  /* "src/parser/parse.y":3961  */
7629                    {
7630                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
7631                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
7632
7633                        yyval = Value::NodeList(nodes);
7634                    },
7635
7636
7637  425 =>  /* block_param: f_block_optarg "," f_arg opt_block_args_tail  */
7638  /* "src/parser/parse.y":3968  */
7639                    {
7640                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
7641                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
7642                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7643
7644                        nodes.reserve(f_arg.len() + opt_block_args_tail.len());
7645                        nodes.append(&mut f_arg);
7646                        nodes.append(&mut opt_block_args_tail);
7647
7648                        yyval = Value::NodeList(nodes);
7649                    },
7650
7651
7652  426 =>  /* block_param: f_rest_arg opt_block_args_tail  */
7653  /* "src/parser/parse.y":3980  */
7654                    {
7655                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
7656                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
7657
7658                        yyval = Value::NodeList(nodes);
7659                    },
7660
7661
7662  427 =>  /* block_param: f_rest_arg "," f_arg opt_block_args_tail  */
7663  /* "src/parser/parse.y":3987  */
7664                    {
7665                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
7666                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
7667                        let mut opt_block_args_tail =  NodeList::from(yystack.owned_value_at(0));
7668
7669                        nodes.reserve(f_arg.len() + opt_block_args_tail.len());
7670                        nodes.append(&mut f_arg);
7671                        nodes.append(&mut opt_block_args_tail);
7672
7673                        yyval = Value::NodeList(nodes);
7674                    },
7675
7676
7677  428 =>  /* block_param: block_args_tail  */
7678  /* "src/parser/parse.y":3999  */
7679                    {
7680                        yyval =  yystack.owned_value_at(0);
7681                    },
7682
7683
7684  429 =>  /* opt_block_param: none  */
7685  /* "src/parser/parse.y":4005  */
7686                    {
7687                        yyval = Value::MaybeNode(
7688                            self.builder.args(None, vec![], None)
7689                        );
7690                    },
7691
7692
7693  430 =>  /* opt_block_param: block_param_def  */
7694  /* "src/parser/parse.y":4011  */
7695                    {
7696                        self.yylexer.command_start = true;
7697                        yyval =  yystack.owned_value_at(0);
7698                    },
7699
7700
7701  431 =>  /* block_param_def: "|" opt_bv_decl "|"  */
7702  /* "src/parser/parse.y":4018  */
7703                    {
7704                        self.max_numparam_stack.set_has_ordinary_params();
7705                        self.current_arg_stack.set(None);
7706                        self.context.set_in_argdef(false);
7707
7708                        yyval = Value::MaybeNode(
7709                            self.builder.args(
7710                                Some( Token::from(yystack.owned_value_at(2))),
7711                                 NodeList::from(yystack.owned_value_at(1)),
7712                                Some( Token::from(yystack.owned_value_at(0)))
7713                            )
7714                        );
7715                    },
7716
7717
7718  432 =>  /* block_param_def: "|" block_param opt_bv_decl "|"  */
7719  /* "src/parser/parse.y":4032  */
7720                    {
7721                        self.max_numparam_stack.set_has_ordinary_params();
7722                        self.current_arg_stack.set(None);
7723                        self.context.set_in_argdef(false);
7724
7725                        let mut nodes =  NodeList::from(yystack.owned_value_at(2));
7726                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(1)));
7727
7728                        yyval = Value::MaybeNode(
7729                            self.builder.args(
7730                                Some( Token::from(yystack.owned_value_at(3))),
7731                                nodes,
7732                                Some( Token::from(yystack.owned_value_at(0)))
7733                            )
7734                        );
7735                    },
7736
7737
7738  433 =>  /* opt_bv_decl: opt_nl  */
7739  /* "src/parser/parse.y":4052  */
7740                    {
7741                        yyval = Value::NodeList( Box::default() );
7742                    },
7743
7744
7745  434 =>  /* opt_bv_decl: opt_nl ";" bv_decls opt_nl  */
7746  /* "src/parser/parse.y":4056  */
7747                    {
7748                        yyval =  yystack.owned_value_at(1);
7749                    },
7750
7751
7752  435 =>  /* bv_decls: bvar  */
7753  /* "src/parser/parse.y":4062  */
7754                    {
7755                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
7756                    },
7757
7758
7759  436 =>  /* bv_decls: bv_decls "," bvar  */
7760  /* "src/parser/parse.y":4066  */
7761                    {
7762                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
7763                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
7764                        yyval = Value::NodeList(nodes);
7765                    },
7766
7767
7768  437 =>  /* bvar: "local variable or method"  */
7769  /* "src/parser/parse.y":4074  */
7770                    {
7771                        let ident_t =  Token::from(yystack.owned_value_at(0));
7772                        self.static_env.declare(clone_value(&ident_t).as_str());
7773                        yyval = Value::Node(
7774                            self.builder.shadowarg(ident_t)?
7775                        );
7776                    },
7777
7778
7779  438 =>  /* bvar: f_bad_arg  */
7780  /* "src/parser/parse.y":4082  */
7781                    {
7782                        yyval = Value::None;
7783                    },
7784
7785
7786  439 =>  /* @22: %empty  */
7787  /* "src/parser/parse.y":4088  */
7788                    {
7789                        self.static_env.extend_dynamic();
7790                        self.max_numparam_stack.push(false);
7791                        yyval = Value::Num(self.yylexer.lpar_beg);
7792                        self.yylexer.lpar_beg = self.yylexer.paren_nest;
7793                    },
7794
7795
7796  440 =>  /* @23: %empty  */
7797  /* "src/parser/parse.y":4094  */
7798                    {
7799                        yyval = Value::Context(self.context.dump());
7800                        self.context.set_in_lambda(true);
7801                    },
7802
7803
7804  441 =>  /* @24: %empty  */
7805  /* "src/parser/parse.y":4099  */
7806                    {
7807                        self.yylexer.cmdarg.push(false);
7808                        yyval = Value::None;
7809                    },
7810
7811
7812  442 =>  /* lambda: "->" @22 @23 f_larglist @24 lambda_body  */
7813  /* "src/parser/parse.y":4104  */
7814                    {
7815                        self.yylexer.lpar_beg =  Num::from(yystack.owned_value_at(4));
7816
7817                        let lambda_call = self.builder.call_lambda( Token::from(yystack.owned_value_at(5)));
7818                        let args = if self.max_numparam_stack.has_numparams() {
7819                            ArgsType::Numargs(self.max_numparam_stack.top() as u8)
7820                        } else {
7821                            ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(2)))
7822                        };
7823                        let LambdaBody { begin_t, body, end_t } =  LambdaBody::from(yystack.owned_value_at(0));
7824
7825                        self.max_numparam_stack.pop();
7826                        self.static_env.unextend();
7827                        self.yylexer.cmdarg.pop();
7828                        self.context.set_in_lambda( Context::from(yystack.owned_value_at(3)).in_lambda());
7829
7830                        yyval = Value::Node(
7831                            self.builder.block(
7832                                lambda_call,
7833                                begin_t,
7834                                args,
7835                                body,
7836                                end_t
7837                            )?
7838                        );
7839                    },
7840
7841
7842  443 =>  /* f_larglist: "( (tLPAREN2)" f_args opt_bv_decl ")"  */
7843  /* "src/parser/parse.y":4133  */
7844                    {
7845                        self.context.set_in_argdef(false);
7846                        self.max_numparam_stack.set_has_ordinary_params();
7847
7848                        let mut nodes =  NodeList::from(yystack.owned_value_at(2));
7849                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(1)));
7850
7851                        yyval = Value::MaybeNode(
7852                            self.builder.args(
7853                                Some( Token::from(yystack.owned_value_at(3))),
7854                                nodes,
7855                                Some( Token::from(yystack.owned_value_at(0)))
7856                            )
7857                        );
7858                    },
7859
7860
7861  444 =>  /* f_larglist: f_args  */
7862  /* "src/parser/parse.y":4149  */
7863                    {
7864                        self.context.set_in_argdef(false);
7865                        let args =  NodeList::from(yystack.owned_value_at(0));
7866                        if !args.is_empty() {
7867                            self.max_numparam_stack.set_has_ordinary_params();
7868                        }
7869                        yyval = Value::MaybeNode(
7870                            self.builder.args(None, args, None)
7871                        );
7872                    },
7873
7874
7875  445 =>  /* @25: %empty  */
7876  /* "src/parser/parse.y":4162  */
7877                    {
7878                        yyval = Value::Context(self.context.dump());
7879                        self.context.set_in_lambda(true);
7880                    },
7881
7882
7883  446 =>  /* lambda_body: tLAMBEG @25 compstmt "}"  */
7884  /* "src/parser/parse.y":4167  */
7885                    {
7886                        self.context.set_in_lambda( Context::from(yystack.owned_value_at(2)).in_lambda());
7887                        yyval = Value::new_lambda_body(
7888                            LambdaBody {
7889                                begin_t:  Token::from(yystack.owned_value_at(3)),
7890                                body:  MaybeBoxedNode::from(yystack.owned_value_at(1)),
7891                                end_t:  Token::from(yystack.owned_value_at(0))
7892                            }
7893                        );
7894                    },
7895
7896
7897  447 =>  /* @26: %empty  */
7898  /* "src/parser/parse.y":4178  */
7899                    {
7900                        yyval = Value::Context(self.context.dump());
7901                        self.context.set_in_lambda(true);
7902                    },
7903
7904
7905  448 =>  /* lambda_body: "`do' for lambda" @26 bodystmt k_end  */
7906  /* "src/parser/parse.y":4183  */
7907                    {
7908                        self.context.set_in_lambda( Context::from(yystack.owned_value_at(2)).in_lambda());
7909                        yyval = Value::new_lambda_body(
7910                            LambdaBody {
7911                                begin_t:  Token::from(yystack.owned_value_at(3)),
7912                                body:  MaybeBoxedNode::from(yystack.owned_value_at(1)),
7913                                end_t:  Token::from(yystack.owned_value_at(0))
7914                            }
7915                        );
7916                    },
7917
7918
7919  449 =>  /* @27: %empty  */
7920  /* "src/parser/parse.y":4196  */
7921                    {
7922                        yyval = Value::Context(self.context.dump());
7923                        self.context.set_in_block(true);
7924                    },
7925
7926
7927  450 =>  /* do_block: k_do_block @27 do_body k_end  */
7928  /* "src/parser/parse.y":4201  */
7929                    {
7930                        self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
7931                        let DoBody { args_type, body } =  DoBody::from(yystack.owned_value_at(1));
7932                        yyval = Value::new_do_block(
7933                            DoBlock {
7934                                begin_t:  Token::from(yystack.owned_value_at(3)),
7935                                args_type,
7936                                body,
7937                                end_t:  Token::from(yystack.owned_value_at(0))
7938                            }
7939                        );
7940                    },
7941
7942
7943  451 =>  /* block_call: command do_block  */
7944  /* "src/parser/parse.y":4216  */
7945                    {
7946                        let DoBlock { begin_t, args_type, body, end_t } =  DoBlock::from(yystack.owned_value_at(0));
7947                        yyval = Value::Node(
7948                            self.builder.block(
7949                                 BoxedNode::from(yystack.owned_value_at(1)),
7950                                begin_t,
7951                                args_type,
7952                                body,
7953                                end_t
7954                            )?
7955                        );
7956                    },
7957
7958
7959  452 =>  /* block_call: block_call call_op2 operation2 opt_paren_args  */
7960  /* "src/parser/parse.y":4229  */
7961                    {
7962                        let OptParenArgs { begin_t, args, end_t } =  OptParenArgs::from(yystack.owned_value_at(0));
7963                        yyval = Value::Node(
7964                            self.builder.call_method(
7965                                Some( BoxedNode::from(yystack.owned_value_at(3))),
7966                                Some( Token::from(yystack.owned_value_at(2))),
7967                                Some( Token::from(yystack.owned_value_at(1))),
7968                                begin_t,
7969                                args,
7970                                end_t
7971                            )
7972                        );
7973                    },
7974
7975
7976  453 =>  /* block_call: block_call call_op2 operation2 opt_paren_args brace_block  */
7977  /* "src/parser/parse.y":4243  */
7978                    {
7979                        let OptParenArgs { begin_t, args, end_t } =  OptParenArgs::from(yystack.owned_value_at(1));
7980                        let method_call = self.builder.call_method(
7981                            Some( BoxedNode::from(yystack.owned_value_at(4))),
7982                            Some( Token::from(yystack.owned_value_at(3))),
7983                            Some( Token::from(yystack.owned_value_at(2))),
7984                            begin_t,
7985                            args,
7986                            end_t
7987                        );
7988
7989                        let BraceBlock { begin_t, args_type, body, end_t } =  BraceBlock::from(yystack.owned_value_at(0));
7990                        yyval = Value::Node(
7991                            self.builder.block(
7992                                method_call,
7993                                begin_t,
7994                                args_type,
7995                                body,
7996                                end_t
7997                            )?
7998                        );
7999                    },
8000
8001
8002  454 =>  /* block_call: block_call call_op2 operation2 command_args do_block  */
8003  /* "src/parser/parse.y":4266  */
8004                    {
8005                        let method_call = self.builder.call_method(
8006                            Some( BoxedNode::from(yystack.owned_value_at(4))),
8007                            Some( Token::from(yystack.owned_value_at(3))),
8008                            Some( Token::from(yystack.owned_value_at(2))),
8009                            None,
8010                             NodeList::from(yystack.owned_value_at(1)),
8011                            None
8012                        );
8013
8014                        let DoBlock { begin_t, args_type, body, end_t } =  DoBlock::from(yystack.owned_value_at(0));
8015                        yyval = Value::Node(
8016                            self.builder.block(
8017                                method_call,
8018                                begin_t,
8019                                args_type,
8020                                body,
8021                                end_t
8022                            )?
8023                        );
8024                    },
8025
8026
8027  455 =>  /* method_call: fcall paren_args  */
8028  /* "src/parser/parse.y":4290  */
8029                    {
8030                        let ParenArgs { begin_t, args, end_t } =  ParenArgs::from(yystack.owned_value_at(0));
8031
8032                        yyval = Value::Node(
8033                            self.builder.call_method(
8034                                None,
8035                                None,
8036                                Some( Token::from(yystack.owned_value_at(1))),
8037                                Some(begin_t),
8038                                args,
8039                                Some(end_t)
8040                            )
8041                        );
8042                    },
8043
8044
8045  456 =>  /* method_call: primary_value call_op operation2 opt_paren_args  */
8046  /* "src/parser/parse.y":4305  */
8047                    {
8048                        let OptParenArgs { begin_t, args, end_t } =  OptParenArgs::from(yystack.owned_value_at(0));
8049
8050                        yyval = Value::Node(
8051                            self.builder.call_method(
8052                                Some( BoxedNode::from(yystack.owned_value_at(3))),
8053                                Some( Token::from(yystack.owned_value_at(2))),
8054                                Some( Token::from(yystack.owned_value_at(1))),
8055                                begin_t,
8056                                args,
8057                                end_t
8058                            )
8059                        );
8060                    },
8061
8062
8063  457 =>  /* method_call: primary_value "::" operation2 paren_args  */
8064  /* "src/parser/parse.y":4320  */
8065                    {
8066                        let ParenArgs { begin_t, args, end_t } =  ParenArgs::from(yystack.owned_value_at(0));
8067
8068                        yyval = Value::Node(
8069                            self.builder.call_method(
8070                                Some( BoxedNode::from(yystack.owned_value_at(3))),
8071                                Some( Token::from(yystack.owned_value_at(2))),
8072                                Some( Token::from(yystack.owned_value_at(1))),
8073                                Some(begin_t),
8074                                args,
8075                                Some(end_t)
8076                            )
8077                        );
8078                    },
8079
8080
8081  458 =>  /* method_call: primary_value "::" operation3  */
8082  /* "src/parser/parse.y":4335  */
8083                    {
8084                        yyval = Value::Node(
8085                            self.builder.call_method(
8086                                Some( BoxedNode::from(yystack.owned_value_at(2))),
8087                                Some( Token::from(yystack.owned_value_at(1))),
8088                                Some( Token::from(yystack.owned_value_at(0))),
8089                                None,
8090                                vec![],
8091                                None
8092                            )
8093                        );
8094                    },
8095
8096
8097  459 =>  /* method_call: primary_value call_op paren_args  */
8098  /* "src/parser/parse.y":4348  */
8099                    {
8100                        let ParenArgs { begin_t, args, end_t } =  ParenArgs::from(yystack.owned_value_at(0));
8101
8102                        yyval = Value::Node(
8103                            self.builder.call_method(
8104                                Some( BoxedNode::from(yystack.owned_value_at(2))),
8105                                Some( Token::from(yystack.owned_value_at(1))),
8106                                None,
8107                                Some(begin_t),
8108                                args,
8109                                Some(end_t)
8110                            )
8111                        );
8112                    },
8113
8114
8115  460 =>  /* method_call: primary_value "::" paren_args  */
8116  /* "src/parser/parse.y":4363  */
8117                    {
8118                        let ParenArgs { begin_t, args, end_t } =  ParenArgs::from(yystack.owned_value_at(0));
8119
8120                        yyval = Value::Node(
8121                            self.builder.call_method(
8122                                Some( BoxedNode::from(yystack.owned_value_at(2))),
8123                                Some( Token::from(yystack.owned_value_at(1))),
8124                                None,
8125                                Some(begin_t),
8126                                args,
8127                                Some(end_t)
8128                            )
8129                        );
8130                    },
8131
8132
8133  461 =>  /* method_call: "`super'" paren_args  */
8134  /* "src/parser/parse.y":4378  */
8135                    {
8136                        let ParenArgs { begin_t, args, end_t } =  ParenArgs::from(yystack.owned_value_at(0));
8137
8138                        yyval = Value::Node(
8139                            self.builder.keyword_cmd(
8140                                KeywordCmd::Super,
8141                                 Token::from(yystack.owned_value_at(1)),
8142                                Some(begin_t),
8143                                args,
8144                                Some(end_t)
8145                            )?
8146                        );
8147                    },
8148
8149
8150  462 =>  /* method_call: "`super'"  */
8151  /* "src/parser/parse.y":4392  */
8152                    {
8153                        yyval = Value::Node(
8154                            self.builder.keyword_cmd(
8155                                KeywordCmd::Zsuper,
8156                                 Token::from(yystack.owned_value_at(0)),
8157                                None,
8158                                vec![],
8159                                None
8160                            )?
8161                        );
8162                    },
8163
8164
8165  463 =>  /* method_call: primary_value "[ (tLBRACK2)" opt_call_args rbracket  */
8166  /* "src/parser/parse.y":4404  */
8167                    {
8168                        yyval = Value::Node(
8169                            self.builder.index(
8170                                 BoxedNode::from(yystack.owned_value_at(3)),
8171                                 Token::from(yystack.owned_value_at(2)),
8172                                 NodeList::from(yystack.owned_value_at(1)),
8173                                 Token::from(yystack.owned_value_at(0))
8174                            )
8175                        );
8176                    },
8177
8178
8179  464 =>  /* @28: %empty  */
8180  /* "src/parser/parse.y":4417  */
8181                    {
8182                        yyval = Value::Context(self.context.dump());
8183                        self.context.set_in_block(true);
8184                    },
8185
8186
8187  465 =>  /* brace_block: "{ (tLCURLY)" @28 brace_body "}"  */
8188  /* "src/parser/parse.y":4422  */
8189                    {
8190                        let BraceBody { args_type, body } =  BraceBody::from(yystack.owned_value_at(1));
8191                        self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
8192
8193                        yyval = Value::new_brace_block(
8194                            BraceBlock {
8195                                begin_t:  Token::from(yystack.owned_value_at(3)),
8196                                args_type,
8197                                body,
8198                                end_t:  Token::from(yystack.owned_value_at(0))
8199                            }
8200                        );
8201                    },
8202
8203
8204  466 =>  /* @29: %empty  */
8205  /* "src/parser/parse.y":4436  */
8206                    {
8207                        yyval = Value::Context(self.context.dump());
8208                        self.context.set_in_block(true);
8209                    },
8210
8211
8212  467 =>  /* brace_block: k_do @29 do_body k_end  */
8213  /* "src/parser/parse.y":4441  */
8214                    {
8215                        let DoBody { args_type, body } =  DoBody::from(yystack.owned_value_at(1));
8216                        self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
8217
8218                        yyval = Value::new_brace_block(
8219                            BraceBlock {
8220                                begin_t:  Token::from(yystack.owned_value_at(3)),
8221                                args_type,
8222                                body,
8223                                end_t:  Token::from(yystack.owned_value_at(0))
8224                            }
8225                        );
8226                    },
8227
8228
8229  468 =>  /* @30: %empty  */
8230  /* "src/parser/parse.y":4456  */
8231                    {
8232                        self.static_env.extend_dynamic();
8233                        self.max_numparam_stack.push(false);
8234                        yyval = Value::None;
8235                    },
8236
8237
8238  469 =>  /* brace_body: @30 opt_block_param compstmt  */
8239  /* "src/parser/parse.y":4462  */
8240                    {
8241                        let args_type = if self.max_numparam_stack.has_numparams() {
8242                            ArgsType::Numargs(self.max_numparam_stack.top() as u8)
8243                        } else {
8244                            ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(1)))
8245                        };
8246
8247                        self.max_numparam_stack.pop();
8248                        self.static_env.unextend();
8249
8250                        yyval = Value::new_brace_body(
8251                            BraceBody {
8252                                args_type,
8253                                body:  MaybeBoxedNode::from(yystack.owned_value_at(0))
8254                            }
8255                        );
8256                    },
8257
8258
8259  470 =>  /* @31: %empty  */
8260  /* "src/parser/parse.y":4481  */
8261                    {
8262                        self.static_env.extend_dynamic();
8263                        self.max_numparam_stack.push(false);
8264                        self.yylexer.cmdarg.push(false);
8265                        yyval = Value::None;
8266                    },
8267
8268
8269  471 =>  /* do_body: @31 opt_block_param bodystmt  */
8270  /* "src/parser/parse.y":4488  */
8271                    {
8272                        let args_type = if self.max_numparam_stack.has_numparams() {
8273                            ArgsType::Numargs(self.max_numparam_stack.top() as u8)
8274                        } else {
8275                            ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(1)))
8276                        };
8277
8278                        self.max_numparam_stack.pop();
8279                        self.static_env.unextend();
8280                        self.yylexer.cmdarg.pop();
8281
8282                        yyval = Value::new_do_body(
8283                            DoBody { args_type, body:  MaybeBoxedNode::from(yystack.owned_value_at(0)) }
8284                        );
8285                    },
8286
8287
8288  472 =>  /* case_args: arg_value  */
8289  /* "src/parser/parse.y":4506  */
8290                    {
8291                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
8292                    },
8293
8294
8295  473 =>  /* case_args: "*" arg_value  */
8296  /* "src/parser/parse.y":4510  */
8297                    {
8298                        yyval = Value::NodeList(
8299                            Box::new(
8300                                vec![
8301                                    *self.builder.splat(
8302                                         Token::from(yystack.owned_value_at(1)),
8303                                        Some( BoxedNode::from(yystack.owned_value_at(0)))
8304                                    )
8305                                ]
8306                            )
8307                        );
8308                    },
8309
8310
8311  474 =>  /* case_args: case_args "," arg_value  */
8312  /* "src/parser/parse.y":4523  */
8313                    {
8314                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
8315                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
8316                        yyval = Value::NodeList(nodes);
8317                    },
8318
8319
8320  475 =>  /* case_args: case_args "," "*" arg_value  */
8321  /* "src/parser/parse.y":4529  */
8322                    {
8323                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
8324                        let splat = *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))));
8325                        nodes.push(splat);
8326                        yyval = Value::NodeList(nodes);
8327                    },
8328
8329
8330  476 =>  /* case_body: k_when case_args then compstmt cases  */
8331  /* "src/parser/parse.y":4540  */
8332                    {
8333                        let when = *self.builder.when( Token::from(yystack.owned_value_at(4)),  NodeList::from(yystack.owned_value_at(3)),  Token::from(yystack.owned_value_at(2)),  MaybeBoxedNode::from(yystack.owned_value_at(1)));
8334                        let Cases { mut when_bodies, opt_else } =  Cases::from(yystack.owned_value_at(0));
8335
8336                        let mut nodes = Vec::with_capacity(1 + when_bodies.len());
8337                        nodes.push(when);
8338                        nodes.append(&mut when_bodies);
8339
8340                        yyval = Value::new_case_body(CaseBody { when_bodies: nodes, opt_else });
8341                    },
8342
8343
8344  477 =>  /* cases: opt_else  */
8345  /* "src/parser/parse.y":4553  */
8346                    {
8347                        yyval = Value::new_cases(Cases { when_bodies: vec![], opt_else:  OptElse::from(yystack.owned_value_at(0)) });
8348                    },
8349
8350
8351  478 =>  /* cases: case_body  */
8352  /* "src/parser/parse.y":4557  */
8353                    {
8354                        let CaseBody { when_bodies, opt_else } =  CaseBody::from(yystack.owned_value_at(0));
8355                        yyval = Value::new_cases(Cases { when_bodies, opt_else });
8356                    },
8357
8358
8359  479 =>  /* @32: %empty  */
8360  /* "src/parser/parse.y":4564  */
8361                    {
8362                        self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
8363                        self.yylexer.command_start = false;
8364                        self.pattern_variables.push();
8365                        self.pattern_hash_keys.push();
8366
8367                        yyval = Value::Bool(self.context.in_kwarg());
8368                        self.context.set_in_kwarg(true);
8369                    },
8370
8371
8372  480 =>  /* @33: %empty  */
8373  /* "src/parser/parse.y":4574  */
8374                    {
8375                        self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(2)));
8376                        self.pattern_variables.pop();
8377                        self.pattern_hash_keys.pop();
8378                        yyval = Value::None;
8379                    },
8380
8381
8382  481 =>  /* p_case_body: "`in'" @32 p_top_expr then @33 compstmt p_cases  */
8383  /* "src/parser/parse.y":4582  */
8384                    {
8385                        let PCases { mut in_bodies, opt_else } =  PCases::from(yystack.owned_value_at(0));
8386                        let PTopExpr { pattern, guard } =  PTopExpr::from(yystack.owned_value_at(4));
8387
8388                        let mut nodes = Vec::with_capacity(1 + in_bodies.len());
8389                        nodes.push(
8390                            *self.builder.in_pattern(
8391                                 Token::from(yystack.owned_value_at(6)),
8392                                pattern,
8393                                guard,
8394                                 Token::from(yystack.owned_value_at(3)),
8395                                 MaybeBoxedNode::from(yystack.owned_value_at(1))
8396                            )
8397                        );
8398                        nodes.append(&mut in_bodies);
8399
8400                        yyval = Value::new_p_case_body(PCaseBody { in_bodies: nodes, opt_else  });
8401                    },
8402
8403
8404  482 =>  /* p_cases: opt_else  */
8405  /* "src/parser/parse.y":4603  */
8406                    {
8407                        yyval = Value::new_p_cases(PCases { in_bodies: vec![], opt_else:  OptElse::from(yystack.owned_value_at(0)) });
8408                    },
8409
8410
8411  483 =>  /* p_cases: p_case_body  */
8412  /* "src/parser/parse.y":4607  */
8413                    {
8414                        let PCaseBody { in_bodies, opt_else } =  PCaseBody::from(yystack.owned_value_at(0));
8415                        yyval = Value::new_p_cases(PCases { in_bodies, opt_else });
8416                    },
8417
8418
8419  484 =>  /* p_top_expr: p_top_expr_body  */
8420  /* "src/parser/parse.y":4614  */
8421                    {
8422                        yyval = Value::new_p_top_expr(PTopExpr { pattern:  BoxedNode::from(yystack.owned_value_at(0)), guard: None });
8423                    },
8424
8425
8426  485 =>  /* p_top_expr: p_top_expr_body "`if' modifier" expr_value  */
8427  /* "src/parser/parse.y":4618  */
8428                    {
8429                        let guard = self.builder.if_guard( Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)));
8430                        yyval = Value::new_p_top_expr(PTopExpr { pattern:  BoxedNode::from(yystack.owned_value_at(2)), guard: Some(guard) });
8431                    },
8432
8433
8434  486 =>  /* p_top_expr: p_top_expr_body "`unless' modifier" expr_value  */
8435  /* "src/parser/parse.y":4623  */
8436                    {
8437                        let guard = self.builder.unless_guard( Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)));
8438                        yyval = Value::new_p_top_expr(PTopExpr { pattern:  BoxedNode::from(yystack.owned_value_at(2)), guard: Some(guard) });
8439                    },
8440
8441
8442  487 =>  /* p_top_expr_body: p_expr  */
8443  /* "src/parser/parse.y":4630  */
8444                    {
8445                        yyval =  yystack.owned_value_at(0);
8446                    },
8447
8448
8449  488 =>  /* p_top_expr_body: p_expr ","  */
8450  /* "src/parser/parse.y":4634  */
8451                    {
8452                        yyval = Value::Node(
8453                            self.builder.array_pattern(
8454                                None,
8455                                vec![  Node::from(yystack.owned_value_at(1)) ],
8456                                Some( Token::from(yystack.owned_value_at(0))),
8457                                None
8458                            )
8459                        );
8460                    },
8461
8462
8463  489 =>  /* p_top_expr_body: p_expr "," p_args  */
8464  /* "src/parser/parse.y":4645  */
8465                    {
8466                        let MatchPatternWithTrailingComma { mut elements, trailing_comma } =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(0));
8467
8468                        let mut nodes = Vec::with_capacity(1 + elements.len());
8469                        nodes.push( Node::from(yystack.owned_value_at(2)));
8470                        nodes.append(&mut elements);
8471
8472                        yyval = Value::Node(
8473                            self.builder.array_pattern(None, nodes, trailing_comma, None)
8474                        );
8475                    },
8476
8477
8478  490 =>  /* p_top_expr_body: p_find  */
8479  /* "src/parser/parse.y":4657  */
8480                    {
8481                        yyval = Value::Node(
8482                            self.builder.find_pattern(None,  NodeList::from(yystack.owned_value_at(0)), None)
8483                        );
8484                    },
8485
8486
8487  491 =>  /* p_top_expr_body: p_args_tail  */
8488  /* "src/parser/parse.y":4663  */
8489                    {
8490                        yyval = Value::Node(
8491                            self.builder.array_pattern(None,  NodeList::from(yystack.owned_value_at(0)), None, None)
8492                        );
8493                    },
8494
8495
8496  492 =>  /* p_top_expr_body: p_kwargs  */
8497  /* "src/parser/parse.y":4669  */
8498                    {
8499                        yyval = Value::Node(
8500                            self.builder.hash_pattern(None,  NodeList::from(yystack.owned_value_at(0)), None)
8501                        );
8502                    },
8503
8504
8505  493 =>  /* p_expr: p_as  */
8506  /* "src/parser/parse.y":4677  */
8507                    {
8508                        yyval =  yystack.owned_value_at(0);
8509                    },
8510
8511
8512  494 =>  /* p_as: p_expr "=>" p_variable  */
8513  /* "src/parser/parse.y":4683  */
8514                    {
8515                        yyval = Value::Node(
8516                            self.builder.match_as(
8517                                 BoxedNode::from(yystack.owned_value_at(2)),
8518                                 Token::from(yystack.owned_value_at(1)),
8519                                 BoxedNode::from(yystack.owned_value_at(0))
8520                            )
8521                        );
8522                    },
8523
8524
8525  495 =>  /* p_as: p_alt  */
8526  /* "src/parser/parse.y":4693  */
8527                    {
8528                        yyval =  yystack.owned_value_at(0);
8529                    },
8530
8531
8532  496 =>  /* p_alt: p_alt "|" p_expr_basic  */
8533  /* "src/parser/parse.y":4699  */
8534                    {
8535                        yyval = Value::Node(
8536                            self.builder.match_alt(
8537                                 BoxedNode::from(yystack.owned_value_at(2)),
8538                                 Token::from(yystack.owned_value_at(1)),
8539                                 BoxedNode::from(yystack.owned_value_at(0))
8540                            )
8541                        );
8542                    },
8543
8544
8545  497 =>  /* p_alt: p_expr_basic  */
8546  /* "src/parser/parse.y":4709  */
8547                    {
8548                        yyval =  yystack.owned_value_at(0);
8549                    },
8550
8551
8552  498 =>  /* p_lparen: "( (tLPAREN2)"  */
8553  /* "src/parser/parse.y":4715  */
8554                    {
8555                        yyval =  yystack.owned_value_at(0);
8556                        self.pattern_hash_keys.push();
8557                    },
8558
8559
8560  499 =>  /* p_lbracket: "[ (tLBRACK2)"  */
8561  /* "src/parser/parse.y":4722  */
8562                    {
8563                        yyval =  yystack.owned_value_at(0);
8564                        self.pattern_hash_keys.push();
8565                    },
8566
8567
8568  500 =>  /* p_expr_basic: p_value  */
8569  /* "src/parser/parse.y":4729  */
8570                    {
8571                        yyval =  yystack.owned_value_at(0);
8572                    },
8573
8574
8575  501 =>  /* p_expr_basic: p_variable  */
8576  /* "src/parser/parse.y":4733  */
8577                    {
8578                        yyval =  yystack.owned_value_at(0);
8579                    },
8580
8581
8582  502 =>  /* p_expr_basic: p_const p_lparen p_args rparen  */
8583  /* "src/parser/parse.y":4737  */
8584                    {
8585                        self.pattern_hash_keys.pop();
8586                        let MatchPatternWithTrailingComma { elements, trailing_comma } =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
8587                        let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
8588                        yyval = Value::Node(
8589                            self.builder.const_pattern(
8590                                 BoxedNode::from(yystack.owned_value_at(3)),
8591                                 Token::from(yystack.owned_value_at(2)),
8592                                pattern,
8593                                 Token::from(yystack.owned_value_at(0))
8594                            )
8595                        );
8596                    },
8597
8598
8599  503 =>  /* p_expr_basic: p_const p_lparen p_find rparen  */
8600  /* "src/parser/parse.y":4751  */
8601                    {
8602                        self.pattern_hash_keys.pop();
8603                        let pattern = self.builder.find_pattern(None,  NodeList::from(yystack.owned_value_at(1)), None);
8604                        yyval = Value::Node(
8605                            self.builder.const_pattern(
8606                                 BoxedNode::from(yystack.owned_value_at(3)),
8607                                 Token::from(yystack.owned_value_at(2)),
8608                                pattern,
8609                                 Token::from(yystack.owned_value_at(0))
8610                            )
8611                        );
8612                    },
8613
8614
8615  504 =>  /* p_expr_basic: p_const p_lparen p_kwargs rparen  */
8616  /* "src/parser/parse.y":4764  */
8617                    {
8618                        self.pattern_hash_keys.pop();
8619                        let pattern = self.builder.hash_pattern(None,  NodeList::from(yystack.owned_value_at(1)), None);
8620                        yyval = Value::Node(
8621                            self.builder.const_pattern(
8622                                 BoxedNode::from(yystack.owned_value_at(3)),
8623                                 Token::from(yystack.owned_value_at(2)),
8624                                pattern,
8625                                 Token::from(yystack.owned_value_at(0))
8626                            )
8627                        );
8628                    },
8629
8630
8631  505 =>  /* p_expr_basic: p_const "( (tLPAREN2)" rparen  */
8632  /* "src/parser/parse.y":4777  */
8633                    {
8634                        let lparen =  Token::from(yystack.owned_value_at(1));
8635                        let rparen =  Token::from(yystack.owned_value_at(0));
8636                        let pattern = self.builder.array_pattern(
8637                            Some(lparen.clone()),
8638                            vec![],
8639                            None,
8640                            Some(rparen.clone())
8641                        );
8642                        yyval = Value::Node(
8643                            self.builder.const_pattern(
8644                                 BoxedNode::from(yystack.owned_value_at(2)),
8645                                lparen,
8646                                pattern,
8647                                rparen
8648                            )
8649                        );
8650                    },
8651
8652
8653  506 =>  /* p_expr_basic: p_const p_lbracket p_args rbracket  */
8654  /* "src/parser/parse.y":4796  */
8655                    {
8656                        self.pattern_hash_keys.pop();
8657                        let MatchPatternWithTrailingComma { elements, trailing_comma } =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
8658                        let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
8659                        yyval = Value::Node(
8660                            self.builder.const_pattern(
8661                                 BoxedNode::from(yystack.owned_value_at(3)),
8662                                 Token::from(yystack.owned_value_at(2)),
8663                                pattern,
8664                                 Token::from(yystack.owned_value_at(0))
8665                            )
8666                        );
8667                    },
8668
8669
8670  507 =>  /* p_expr_basic: p_const p_lbracket p_find rbracket  */
8671  /* "src/parser/parse.y":4810  */
8672                    {
8673                        self.pattern_hash_keys.pop();
8674                        let pattern = self.builder.find_pattern(None,  NodeList::from(yystack.owned_value_at(1)), None);
8675                        yyval = Value::Node(
8676                            self.builder.const_pattern(
8677                                 BoxedNode::from(yystack.owned_value_at(3)),
8678                                 Token::from(yystack.owned_value_at(2)),
8679                                pattern,
8680                                 Token::from(yystack.owned_value_at(0))
8681                            )
8682                        );
8683                    },
8684
8685
8686  508 =>  /* p_expr_basic: p_const p_lbracket p_kwargs rbracket  */
8687  /* "src/parser/parse.y":4823  */
8688                    {
8689                        self.pattern_hash_keys.pop();
8690                        let pattern = self.builder.hash_pattern(None,  NodeList::from(yystack.owned_value_at(1)), None);
8691                        yyval = Value::Node(
8692                            self.builder.const_pattern(
8693                                 BoxedNode::from(yystack.owned_value_at(3)),
8694                                 Token::from(yystack.owned_value_at(2)),
8695                                pattern,
8696                                 Token::from(yystack.owned_value_at(0))
8697                            )
8698                        );
8699                    },
8700
8701
8702  509 =>  /* p_expr_basic: p_const "[ (tLBRACK2)" rbracket  */
8703  /* "src/parser/parse.y":4836  */
8704                    {
8705                        let lparen =  Token::from(yystack.owned_value_at(1));
8706                        let rparen =  Token::from(yystack.owned_value_at(0));
8707                        let pattern = self.builder.array_pattern(
8708                            Some(lparen.clone()),
8709                            vec![],
8710                            None,
8711                            Some(rparen.clone())
8712                        );
8713                        yyval = Value::Node(
8714                            self.builder.const_pattern(
8715                                 BoxedNode::from(yystack.owned_value_at(2)),
8716                                lparen,
8717                                pattern,
8718                                rparen
8719                            )
8720                        );
8721                    },
8722
8723
8724  510 =>  /* p_expr_basic: "[" p_args rbracket  */
8725  /* "src/parser/parse.y":4855  */
8726                    {
8727                        let MatchPatternWithTrailingComma { elements, trailing_comma } =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
8728                        yyval = Value::Node(
8729                            self.builder.array_pattern(
8730                                Some( Token::from(yystack.owned_value_at(2))),
8731                                elements,
8732                                trailing_comma,
8733                                Some( Token::from(yystack.owned_value_at(0)))
8734                            )
8735                        );
8736                    },
8737
8738
8739  511 =>  /* p_expr_basic: "[" p_find rbracket  */
8740  /* "src/parser/parse.y":4867  */
8741                    {
8742                        yyval = Value::Node(
8743                            self.builder.find_pattern(
8744                                Some( Token::from(yystack.owned_value_at(2))),
8745                                 NodeList::from(yystack.owned_value_at(1)),
8746                                Some( Token::from(yystack.owned_value_at(0)))
8747                            )
8748                        );
8749                    },
8750
8751
8752  512 =>  /* p_expr_basic: "[" rbracket  */
8753  /* "src/parser/parse.y":4877  */
8754                    {
8755                        yyval = Value::Node(
8756                            self.builder.array_pattern(
8757                                Some( Token::from(yystack.owned_value_at(1))),
8758                                vec![],
8759                                None,
8760                                Some( Token::from(yystack.owned_value_at(0)))
8761                            )
8762                        );
8763                    },
8764
8765
8766  513 =>  /* @34: %empty  */
8767  /* "src/parser/parse.y":4888  */
8768                    {
8769                        self.pattern_hash_keys.push();
8770                        yyval = Value::Bool(self.context.in_kwarg());
8771                        self.context.set_in_kwarg(false);
8772                    },
8773
8774
8775  514 =>  /* p_expr_basic: "{" @34 p_kwargs rbrace  */
8776  /* "src/parser/parse.y":4894  */
8777                    {
8778                        self.pattern_hash_keys.pop();
8779                        self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(2)));
8780                        yyval = Value::Node(
8781                            self.builder.hash_pattern(
8782                                Some( Token::from(yystack.owned_value_at(3))),
8783                                 NodeList::from(yystack.owned_value_at(1)),
8784                                Some( Token::from(yystack.owned_value_at(0)))
8785                            )
8786                        );
8787                    },
8788
8789
8790  515 =>  /* p_expr_basic: "{" rbrace  */
8791  /* "src/parser/parse.y":4906  */
8792                    {
8793                        yyval = Value::Node(
8794                            self.builder.hash_pattern(
8795                                Some( Token::from(yystack.owned_value_at(1))),
8796                                vec![],
8797                                Some( Token::from(yystack.owned_value_at(0))),
8798                            )
8799                        );
8800                    },
8801
8802
8803  516 =>  /* @35: %empty  */
8804  /* "src/parser/parse.y":4916  */
8805                    {
8806                        self.pattern_hash_keys.push();
8807                        yyval = Value::None;
8808                    },
8809
8810
8811  517 =>  /* p_expr_basic: "(" @35 p_expr rparen  */
8812  /* "src/parser/parse.y":4921  */
8813                    {
8814                        self.pattern_hash_keys.pop();
8815                        yyval = Value::Node(
8816                            self.builder.begin(
8817                                 Token::from(yystack.owned_value_at(3)),
8818                                Some( BoxedNode::from(yystack.owned_value_at(1))),
8819                                 Token::from(yystack.owned_value_at(0))
8820                            )
8821                        );
8822                    },
8823
8824
8825  518 =>  /* p_args: p_expr  */
8826  /* "src/parser/parse.y":4934  */
8827                    {
8828                        yyval = Value::new_match_pattern_with_trailing_comma(
8829                            MatchPatternWithTrailingComma {
8830                                elements: vec![  Node::from(yystack.owned_value_at(0)) ],
8831                                trailing_comma: None
8832                            }
8833                        );
8834                    },
8835
8836
8837  519 =>  /* p_args: p_args_head  */
8838  /* "src/parser/parse.y":4943  */
8839                    {
8840                        yyval =  yystack.owned_value_at(0);
8841                    },
8842
8843
8844  520 =>  /* p_args: p_args_head p_arg  */
8845  /* "src/parser/parse.y":4947  */
8846                    {
8847                        let mut elements =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements;
8848                        elements.push( Node::from(yystack.owned_value_at(0)));
8849
8850                        yyval = Value::new_match_pattern_with_trailing_comma(
8851                            MatchPatternWithTrailingComma {
8852                                elements,
8853                                trailing_comma: None
8854                            }
8855                        );
8856                    },
8857
8858
8859  521 =>  /* p_args: p_args_head p_rest  */
8860  /* "src/parser/parse.y":4959  */
8861                    {
8862                        let mut elements =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements;
8863                        let p_rest =  Node::from(yystack.owned_value_at(0));
8864                        elements.push(p_rest);
8865
8866                        yyval = Value::new_match_pattern_with_trailing_comma(
8867                            MatchPatternWithTrailingComma {
8868                                elements,
8869                                trailing_comma: None
8870                            }
8871                        );
8872                    },
8873
8874
8875  522 =>  /* p_args: p_args_head p_rest "," p_args_post  */
8876  /* "src/parser/parse.y":4972  */
8877                    {
8878                        let mut elements =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(3)).elements;
8879                        let p_rest =  Node::from(yystack.owned_value_at(2));
8880                        let mut p_args_post =  NodeList::from(yystack.owned_value_at(0));
8881
8882                        elements.reserve(1 + p_args_post.len());
8883                        elements.push(p_rest);
8884                        elements.append(&mut p_args_post);
8885
8886                        yyval = Value::new_match_pattern_with_trailing_comma(
8887                            MatchPatternWithTrailingComma {
8888                                elements,
8889                                trailing_comma: None
8890                            }
8891                        );
8892                    },
8893
8894
8895  523 =>  /* p_args: p_args_tail  */
8896  /* "src/parser/parse.y":4989  */
8897                    {
8898                        yyval = Value::new_match_pattern_with_trailing_comma(
8899                            MatchPatternWithTrailingComma {
8900                                elements:  NodeList::from(yystack.owned_value_at(0)),
8901                                trailing_comma: None
8902                            }
8903                        );
8904                    },
8905
8906
8907  524 =>  /* p_args_head: p_arg ","  */
8908  /* "src/parser/parse.y":5000  */
8909                    {
8910                        yyval = Value::new_match_pattern_with_trailing_comma(
8911                            MatchPatternWithTrailingComma {
8912                                elements: vec![ Node::from(yystack.owned_value_at(1))],
8913                                trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
8914                            }
8915                        );
8916                    },
8917
8918
8919  525 =>  /* p_args_head: p_args_head p_arg ","  */
8920  /* "src/parser/parse.y":5009  */
8921                    {
8922                        let mut elements =  MatchPatternWithTrailingComma::from(yystack.owned_value_at(2)).elements;
8923                        elements.push( Node::from(yystack.owned_value_at(1)));
8924
8925                        yyval = Value::new_match_pattern_with_trailing_comma(
8926                            MatchPatternWithTrailingComma {
8927                                elements,
8928                                trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
8929                            }
8930                        );
8931                    },
8932
8933
8934  526 =>  /* p_args_tail: p_rest  */
8935  /* "src/parser/parse.y":5023  */
8936                    {
8937                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
8938                    },
8939
8940
8941  527 =>  /* p_args_tail: p_rest "," p_args_post  */
8942  /* "src/parser/parse.y":5027  */
8943                    {
8944                        let mut p_args_post =  NodeList::from(yystack.owned_value_at(0));
8945                        let mut nodes = Box::new(Vec::with_capacity(1 + p_args_post.len()));
8946                        nodes.push( Node::from(yystack.owned_value_at(2)));
8947                        nodes.append(&mut p_args_post);
8948
8949                        yyval = Value::NodeList(nodes);
8950                    },
8951
8952
8953  528 =>  /* p_find: p_rest "," p_args_post "," p_rest  */
8954  /* "src/parser/parse.y":5038  */
8955                    {
8956                        let mut p_args_post =  NodeList::from(yystack.owned_value_at(2));
8957                        let mut nodes = Box::new(Vec::with_capacity(1 + p_args_post.len() + 1));
8958                        nodes.push( Node::from(yystack.owned_value_at(4)));
8959                        nodes.append(&mut p_args_post);
8960                        nodes.push( Node::from(yystack.owned_value_at(0)));
8961
8962                        yyval = Value::NodeList(nodes);
8963                    },
8964
8965
8966  529 =>  /* p_rest: "*" "local variable or method"  */
8967  /* "src/parser/parse.y":5051  */
8968                    {
8969                        yyval = Value::Node(
8970                            self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
8971                        );
8972                    },
8973
8974
8975  530 =>  /* p_rest: "*"  */
8976  /* "src/parser/parse.y":5057  */
8977                    {
8978                        yyval = Value::Node(
8979                            self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?
8980                        );
8981                    },
8982
8983
8984  531 =>  /* p_args_post: p_arg  */
8985  /* "src/parser/parse.y":5065  */
8986                    {
8987                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
8988                    },
8989
8990
8991  532 =>  /* p_args_post: p_args_post "," p_arg  */
8992  /* "src/parser/parse.y":5069  */
8993                    {
8994                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
8995                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
8996                        yyval = Value::NodeList(nodes);
8997                    },
8998
8999
9000  533 =>  /* p_arg: p_expr  */
9001  /* "src/parser/parse.y":5077  */
9002                    {
9003                        yyval =  yystack.owned_value_at(0);
9004                    },
9005
9006
9007  534 =>  /* p_kwargs: p_kwarg "," p_any_kwrest  */
9008  /* "src/parser/parse.y":5083  */
9009                    {
9010                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
9011                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
9012
9013                        yyval = Value::NodeList(nodes);
9014                    },
9015
9016
9017  535 =>  /* p_kwargs: p_kwarg  */
9018  /* "src/parser/parse.y":5090  */
9019                    {
9020                        yyval =  yystack.owned_value_at(0);
9021                    },
9022
9023
9024  536 =>  /* p_kwargs: p_kwarg ","  */
9025  /* "src/parser/parse.y":5094  */
9026                    {
9027                        yyval =  yystack.owned_value_at(1);
9028                    },
9029
9030
9031  537 =>  /* p_kwargs: p_any_kwrest  */
9032  /* "src/parser/parse.y":5098  */
9033                    {
9034                        yyval =  yystack.owned_value_at(0);
9035                    },
9036
9037
9038  538 =>  /* p_kwarg: p_kw  */
9039  /* "src/parser/parse.y":5104  */
9040                    {
9041                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
9042                    },
9043
9044
9045  539 =>  /* p_kwarg: p_kwarg "," p_kw  */
9046  /* "src/parser/parse.y":5108  */
9047                    {
9048                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
9049                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
9050                        yyval = Value::NodeList(nodes);
9051                    },
9052
9053
9054  540 =>  /* p_kw: p_kw_label p_expr  */
9055  /* "src/parser/parse.y":5116  */
9056                    {
9057                        yyval = Value::Node(
9058                            self.builder.match_pair(
9059                                 PKwLabel::from(yystack.owned_value_at(1)),
9060                                 BoxedNode::from(yystack.owned_value_at(0))
9061                            )?
9062                        );
9063                    },
9064
9065
9066  541 =>  /* p_kw: p_kw_label  */
9067  /* "src/parser/parse.y":5125  */
9068                    {
9069                        yyval = Value::Node(
9070                            self.builder.match_label(
9071                                 PKwLabel::from(yystack.owned_value_at(0)),
9072                            )?
9073                        );
9074                    },
9075
9076
9077  542 =>  /* p_kw_label: "label"  */
9078  /* "src/parser/parse.y":5135  */
9079                    {
9080                        yyval = Value::new_p_kw_label(
9081                            PKwLabel::PlainLabel( Token::from(yystack.owned_value_at(0)))
9082                        );
9083                    },
9084
9085
9086  543 =>  /* p_kw_label: "string begin" string_contents tLABEL_END  */
9087  /* "src/parser/parse.y":5141  */
9088                    {
9089                        yyval = Value::new_p_kw_label(
9090                            PKwLabel::QuotedLabel( ( Token::from(yystack.owned_value_at(2)),  NodeList::from(yystack.owned_value_at(1)),  Token::from(yystack.owned_value_at(0))) )
9091                        );
9092                    },
9093
9094
9095  544 =>  /* p_kwrest: kwrest_mark "local variable or method"  */
9096  /* "src/parser/parse.y":5149  */
9097                    {
9098                        yyval = Value::NodeList(
9099                            Box::new(
9100                                vec![
9101                                    *self.builder.match_rest(
9102                                         Token::from(yystack.owned_value_at(1)),
9103                                        Some( Token::from(yystack.owned_value_at(0)))
9104                                    )?
9105                                ]
9106                            )
9107                        );
9108                    },
9109
9110
9111  545 =>  /* p_kwrest: kwrest_mark  */
9112  /* "src/parser/parse.y":5162  */
9113                    {
9114                        yyval = Value::NodeList(
9115                            Box::new(
9116                                vec![
9117                                    *self.builder.match_rest(
9118                                         Token::from(yystack.owned_value_at(0)),
9119                                        None
9120                                    )?
9121                                ]
9122                            )
9123                        );
9124                    },
9125
9126
9127  546 =>  /* p_kwnorest: kwrest_mark "`nil'"  */
9128  /* "src/parser/parse.y":5177  */
9129                    {
9130                        yyval = Value::new_no_kw_rest(
9131                            NoKwRest {
9132                                kwrest_mark:  Token::from(yystack.owned_value_at(1)),
9133                                k_nil:  Token::from(yystack.owned_value_at(0))
9134                            }
9135                        );
9136                    },
9137
9138
9139  547 =>  /* p_any_kwrest: p_kwrest  */
9140  /* "src/parser/parse.y":5188  */
9141                    {
9142                        yyval =  yystack.owned_value_at(0);
9143                    },
9144
9145
9146  548 =>  /* p_any_kwrest: p_kwnorest  */
9147  /* "src/parser/parse.y":5192  */
9148                    {
9149                        let NoKwRest { kwrest_mark, k_nil } =  NoKwRest::from(yystack.owned_value_at(0));
9150                        yyval = Value::NodeList(
9151                            Box::new(
9152                                vec![
9153                                    *self.builder.match_nil_pattern(
9154                                        kwrest_mark,
9155                                        k_nil
9156                                    )
9157                                ]
9158                            )
9159                        );
9160                    },
9161
9162
9163  549 =>  /* p_value: p_primitive  */
9164  /* "src/parser/parse.y":5208  */
9165                    {
9166                        yyval =  yystack.owned_value_at(0);
9167                    },
9168
9169
9170  550 =>  /* p_value: p_primitive ".." p_primitive  */
9171  /* "src/parser/parse.y":5212  */
9172                    {
9173                        let left =  BoxedNode::from(yystack.owned_value_at(2));
9174                        self.value_expr(&left)?;
9175
9176                        let right =  BoxedNode::from(yystack.owned_value_at(0));
9177                        self.value_expr(&right)?;
9178
9179                        yyval = Value::Node(
9180                            self.builder.range_inclusive(
9181                                Some(left),
9182                                 Token::from(yystack.owned_value_at(1)),
9183                                Some(right)
9184                            )
9185                        );
9186                    },
9187
9188
9189  551 =>  /* p_value: p_primitive "..." p_primitive  */
9190  /* "src/parser/parse.y":5228  */
9191                    {
9192                        let left =  BoxedNode::from(yystack.owned_value_at(2));
9193                        self.value_expr(&left)?;
9194
9195                        let right =  BoxedNode::from(yystack.owned_value_at(0));
9196                        self.value_expr(&right)?;
9197
9198                        yyval = Value::Node(
9199                            self.builder.range_exclusive(
9200                                Some(left),
9201                                 Token::from(yystack.owned_value_at(1)),
9202                                Some(right)
9203                            )
9204                        );
9205                    },
9206
9207
9208  552 =>  /* p_value: p_primitive ".."  */
9209  /* "src/parser/parse.y":5244  */
9210                    {
9211                        let left =  BoxedNode::from(yystack.owned_value_at(1));
9212                        self.value_expr(&left)?;
9213
9214                        yyval = Value::Node(
9215                            self.builder.range_inclusive(
9216                                Some(left),
9217                                 Token::from(yystack.owned_value_at(0)),
9218                                None
9219                            )
9220                        );
9221                    },
9222
9223
9224  553 =>  /* p_value: p_primitive "..."  */
9225  /* "src/parser/parse.y":5257  */
9226                    {
9227                        let left =  BoxedNode::from(yystack.owned_value_at(1));
9228                        self.value_expr(&left)?;
9229
9230                        yyval = Value::Node(
9231                            self.builder.range_exclusive(
9232                                Some(left),
9233                                 Token::from(yystack.owned_value_at(0)),
9234                                None
9235                            )
9236                        );
9237                    },
9238
9239
9240  554 =>  /* p_value: p_var_ref  */
9241  /* "src/parser/parse.y":5270  */
9242                    {
9243                        yyval =  yystack.owned_value_at(0);
9244                    },
9245
9246
9247  555 =>  /* p_value: p_expr_ref  */
9248  /* "src/parser/parse.y":5274  */
9249                    {
9250                        yyval =  yystack.owned_value_at(0);
9251                    },
9252
9253
9254  556 =>  /* p_value: p_const  */
9255  /* "src/parser/parse.y":5278  */
9256                    {
9257                        yyval =  yystack.owned_value_at(0);
9258                    },
9259
9260
9261  557 =>  /* p_value: "(.." p_primitive  */
9262  /* "src/parser/parse.y":5282  */
9263                    {
9264                        let right =  BoxedNode::from(yystack.owned_value_at(0));
9265                        self.value_expr(&right)?;
9266
9267                        yyval = Value::Node(
9268                            self.builder.range_inclusive(
9269                                None,
9270                                 Token::from(yystack.owned_value_at(1)),
9271                                Some(right)
9272                            )
9273                        );
9274                    },
9275
9276
9277  558 =>  /* p_value: "(..." p_primitive  */
9278  /* "src/parser/parse.y":5295  */
9279                    {
9280                        let right =  BoxedNode::from(yystack.owned_value_at(0));
9281                        self.value_expr(&right)?;
9282
9283                        yyval = Value::Node(
9284                            self.builder.range_exclusive(
9285                                None,
9286                                 Token::from(yystack.owned_value_at(1)),
9287                                Some(right)
9288                            )
9289                        );
9290                    },
9291
9292
9293  559 =>  /* p_primitive: literal  */
9294  /* "src/parser/parse.y":5310  */
9295                    {
9296                        yyval =  yystack.owned_value_at(0);
9297                    },
9298
9299
9300  560 =>  /* p_primitive: strings  */
9301  /* "src/parser/parse.y":5314  */
9302                    {
9303                        yyval =  yystack.owned_value_at(0);
9304                    },
9305
9306
9307  561 =>  /* p_primitive: xstring  */
9308  /* "src/parser/parse.y":5318  */
9309                    {
9310                        yyval =  yystack.owned_value_at(0);
9311                    },
9312
9313
9314  562 =>  /* p_primitive: regexp  */
9315  /* "src/parser/parse.y":5322  */
9316                    {
9317                        yyval =  yystack.owned_value_at(0);
9318                    },
9319
9320
9321  563 =>  /* p_primitive: words  */
9322  /* "src/parser/parse.y":5326  */
9323                    {
9324                        yyval =  yystack.owned_value_at(0);
9325                    },
9326
9327
9328  564 =>  /* p_primitive: qwords  */
9329  /* "src/parser/parse.y":5330  */
9330                    {
9331                        yyval =  yystack.owned_value_at(0);
9332                    },
9333
9334
9335  565 =>  /* p_primitive: symbols  */
9336  /* "src/parser/parse.y":5334  */
9337                    {
9338                        yyval =  yystack.owned_value_at(0);
9339                    },
9340
9341
9342  566 =>  /* p_primitive: qsymbols  */
9343  /* "src/parser/parse.y":5338  */
9344                    {
9345                        yyval =  yystack.owned_value_at(0);
9346                    },
9347
9348
9349  567 =>  /* p_primitive: keyword_variable  */
9350  /* "src/parser/parse.y":5342  */
9351                    {
9352                        yyval = Value::Node(
9353                            self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
9354                        );
9355                    },
9356
9357
9358  568 =>  /* p_primitive: lambda  */
9359  /* "src/parser/parse.y":5348  */
9360                    {
9361                        yyval =  yystack.owned_value_at(0);
9362                    },
9363
9364
9365  569 =>  /* p_variable: "local variable or method"  */
9366  /* "src/parser/parse.y":5354  */
9367                    {
9368                        yyval = Value::Node(
9369                            self.builder.assignable(
9370                                self.builder.match_var( Token::from(yystack.owned_value_at(0)))?
9371                            )?
9372                        );
9373                    },
9374
9375
9376  570 =>  /* p_var_ref: "^" "local variable or method"  */
9377  /* "src/parser/parse.y":5364  */
9378                    {
9379                        let ident_t =  Token::from(yystack.owned_value_at(0));
9380                        let name = clone_value(&ident_t);
9381
9382                        if !self.static_env.is_declared(name.as_str()) {
9383                            return self.yyerror(
9384                                yystack.location_at (0),
9385                                DiagnosticMessage::NoSuchLocalVariable { var_name: name }
9386                            );
9387                        }
9388
9389                        let lvar = self.builder.accessible(self.builder.lvar(ident_t));
9390                        yyval = Value::Node(
9391                            self.builder.pin( Token::from(yystack.owned_value_at(1)), lvar)
9392                        );
9393                    },
9394
9395
9396  571 =>  /* p_var_ref: "^" nonlocal_var  */
9397  /* "src/parser/parse.y":5381  */
9398                    {
9399                        let non_lvar = self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)));
9400                        yyval = Value::Node(
9401                            self.builder.pin(
9402                                 Token::from(yystack.owned_value_at(1)),
9403                                non_lvar,
9404                            )
9405                        );
9406                    },
9407
9408
9409  572 =>  /* p_expr_ref: "^" "(" expr_value ")"  */
9410  /* "src/parser/parse.y":5393  */
9411                    {
9412                        let expr = self.builder.begin(
9413                             Token::from(yystack.owned_value_at(2)),
9414                            Some( BoxedNode::from(yystack.owned_value_at(1))),
9415                             Token::from(yystack.owned_value_at(0))
9416                        );
9417                        yyval = Value::Node(
9418                            self.builder.pin(
9419                                 Token::from(yystack.owned_value_at(3)),
9420                                expr
9421                            )
9422                        );
9423                    },
9424
9425
9426  573 =>  /* p_const: ":: at EXPR_BEG" cname  */
9427  /* "src/parser/parse.y":5409  */
9428                    {
9429                        yyval = Value::Node(
9430                            self.builder.const_global( Token::from(yystack.owned_value_at(1)),  Token::from(yystack.owned_value_at(0)))
9431                        );
9432                    },
9433
9434
9435  574 =>  /* p_const: p_const "::" cname  */
9436  /* "src/parser/parse.y":5415  */
9437                    {
9438                        yyval = Value::Node(
9439                            self.builder.const_fetch(
9440                                 BoxedNode::from(yystack.owned_value_at(2)),
9441                                 Token::from(yystack.owned_value_at(1)),
9442                                 Token::from(yystack.owned_value_at(0)),
9443                            )
9444                        );
9445                    },
9446
9447
9448  575 =>  /* p_const: "constant"  */
9449  /* "src/parser/parse.y":5425  */
9450                    {
9451                        yyval = Value::Node(self.builder.const_( Token::from(yystack.owned_value_at(0))));
9452                    },
9453
9454
9455  576 =>  /* opt_rescue: k_rescue exc_list exc_var then compstmt opt_rescue  */
9456  /* "src/parser/parse.y":5433  */
9457                    {
9458                        let ExcVar { assoc_t, exc_var } =  ExcVar::from(yystack.owned_value_at(3));
9459
9460                        let exc_list =  NodeList::from(yystack.owned_value_at(4));
9461                        let exc_list = if exc_list.is_empty() {
9462                            None
9463                        } else {
9464                            Some(self.builder.array(None, exc_list, None))
9465                        };
9466
9467                        let rescue_body = *self.builder.rescue_body(
9468                             Token::from(yystack.owned_value_at(5)),
9469                            exc_list,
9470                            assoc_t,
9471                            exc_var,
9472                            Some( Token::from(yystack.owned_value_at(2))),
9473                             MaybeBoxedNode::from(yystack.owned_value_at(1))
9474                        );
9475                        let mut opt_rescue =  NodeList::from(yystack.owned_value_at(0));
9476                        let mut nodes = Box::new(Vec::with_capacity(1 + opt_rescue.len()));
9477                        nodes.push(rescue_body);
9478                        nodes.append(&mut opt_rescue);
9479
9480                        yyval = Value::NodeList(nodes);
9481                    },
9482
9483
9484  577 =>  /* opt_rescue: none  */
9485  /* "src/parser/parse.y":5459  */
9486                    {
9487                        yyval = Value::NodeList( Box::default() );
9488                    },
9489
9490
9491  578 =>  /* exc_list: arg_value  */
9492  /* "src/parser/parse.y":5465  */
9493                    {
9494                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
9495                    },
9496
9497
9498  579 =>  /* exc_list: mrhs  */
9499  /* "src/parser/parse.y":5469  */
9500                    {
9501                        yyval =  yystack.owned_value_at(0);
9502                    },
9503
9504
9505  580 =>  /* exc_list: none  */
9506  /* "src/parser/parse.y":5473  */
9507                    {
9508                        yyval = Value::NodeList( Box::default() );
9509                    },
9510
9511
9512  581 =>  /* exc_var: "=>" lhs  */
9513  /* "src/parser/parse.y":5479  */
9514                    {
9515                        let assoc_t = Some( Token::from(yystack.owned_value_at(1)));
9516                        let exc_var = Some( BoxedNode::from(yystack.owned_value_at(0)));
9517                        yyval = Value::new_exc_var(ExcVar { assoc_t, exc_var });
9518                    },
9519
9520
9521  582 =>  /* exc_var: none  */
9522  /* "src/parser/parse.y":5485  */
9523                    {
9524                        yyval = Value::new_exc_var(ExcVar { assoc_t: None, exc_var: None });
9525                    },
9526
9527
9528  583 =>  /* opt_ensure: k_ensure compstmt  */
9529  /* "src/parser/parse.y":5491  */
9530                    {
9531                        let ensure_t =  Token::from(yystack.owned_value_at(1));
9532                        let body =  MaybeBoxedNode::from(yystack.owned_value_at(0));
9533                        yyval = Value::new_opt_ensure(Some(Ensure { ensure_t, body }));
9534                    },
9535
9536
9537  584 =>  /* opt_ensure: none  */
9538  /* "src/parser/parse.y":5497  */
9539                    {
9540                        yyval = Value::new_opt_ensure(None);
9541                    },
9542
9543
9544  585 =>  /* literal: numeric  */
9545  /* "src/parser/parse.y":5503  */
9546                    {
9547                        yyval =  yystack.owned_value_at(0);
9548                    },
9549
9550
9551  586 =>  /* literal: symbol  */
9552  /* "src/parser/parse.y":5507  */
9553                    {
9554                        yyval =  yystack.owned_value_at(0);
9555                    },
9556
9557
9558  587 =>  /* strings: string  */
9559  /* "src/parser/parse.y":5513  */
9560                    {
9561                        yyval = Value::Node(
9562                            self.builder.string_compose(
9563                                None,
9564                                 NodeList::from(yystack.owned_value_at(0)),
9565                                None
9566                            )
9567                        );
9568                    },
9569
9570
9571  588 =>  /* string: "char literal"  */
9572  /* "src/parser/parse.y":5525  */
9573                    {
9574                        yyval = Value::NodeList(
9575                            Box::new(
9576                                vec![
9577                                    *self.builder.character( Token::from(yystack.owned_value_at(0)))
9578                                ]
9579                            )
9580                        );
9581                    },
9582
9583
9584  589 =>  /* string: string1  */
9585  /* "src/parser/parse.y":5535  */
9586                    {
9587                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
9588                    },
9589
9590
9591  590 =>  /* string: string string1  */
9592  /* "src/parser/parse.y":5539  */
9593                    {
9594                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
9595                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
9596                        yyval = Value::NodeList(nodes);
9597                    },
9598
9599
9600  591 =>  /* string1: "string begin" string_contents "string end"  */
9601  /* "src/parser/parse.y":5547  */
9602                    {
9603                        let mut string = self.builder.string_compose(
9604                            Some( Token::from(yystack.owned_value_at(2))),
9605                             NodeList::from(yystack.owned_value_at(1)),
9606                            Some( Token::from(yystack.owned_value_at(0)))
9607                        );
9608                        let indent = self.yylexer.buffer.heredoc_indent;
9609                        self.yylexer.buffer.heredoc_indent = 0;
9610                        string = self.builder.heredoc_dedent(string, indent);
9611                        yyval = Value::Node(string);
9612                    },
9613
9614
9615  592 =>  /* xstring: "backtick literal" xstring_contents "string end"  */
9616  /* "src/parser/parse.y":5561  */
9617                    {
9618                        let mut string = self.builder.xstring_compose(
9619                             Token::from(yystack.owned_value_at(2)),
9620                             NodeList::from(yystack.owned_value_at(1)),
9621                             Token::from(yystack.owned_value_at(0))
9622                        );
9623                        let indent = self.yylexer.buffer.heredoc_indent;
9624                        self.yylexer.buffer.heredoc_indent = 0;
9625                        string = self.builder.heredoc_dedent(string, indent);
9626                        yyval = Value::Node(string);
9627                    },
9628
9629
9630  593 =>  /* regexp: "regexp literal" regexp_contents tREGEXP_END  */
9631  /* "src/parser/parse.y":5575  */
9632                    {
9633                        let regexp_end =  Token::from(yystack.owned_value_at(0));
9634                        let opts = self.builder.regexp_options(regexp_end.clone());
9635                        yyval = Value::Node(
9636                            self.builder.regexp_compose(
9637                                 Token::from(yystack.owned_value_at(2)),
9638                                 NodeList::from(yystack.owned_value_at(1)),
9639                                regexp_end,
9640                                opts
9641                            )
9642                        );
9643                    },
9644
9645
9646  594 =>  /* words: "word list" " " word_list "string end"  */
9647  /* "src/parser/parse.y":5590  */
9648                    {
9649                        yyval = Value::Node(
9650                            self.builder.words_compose(
9651                                 Token::from(yystack.owned_value_at(3)),
9652                                 NodeList::from(yystack.owned_value_at(1)),
9653                                 Token::from(yystack.owned_value_at(0))
9654                            )
9655                        );
9656                    },
9657
9658
9659  595 =>  /* word_list: %empty  */
9660  /* "src/parser/parse.y":5602  */
9661                    {
9662                        yyval = Value::NodeList( Box::default() );
9663
9664                    },
9665
9666
9667  596 =>  /* word_list: word_list word " "  */
9668  /* "src/parser/parse.y":5607  */
9669                    {
9670                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
9671                        nodes.push(
9672                            *self.builder.word(  NodeList::from(yystack.owned_value_at(1)) )
9673                        );
9674                        yyval = Value::NodeList(nodes);
9675                    },
9676
9677
9678  597 =>  /* word: string_content  */
9679  /* "src/parser/parse.y":5617  */
9680                    {
9681                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
9682                    },
9683
9684
9685  598 =>  /* word: word string_content  */
9686  /* "src/parser/parse.y":5621  */
9687                    {
9688                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
9689                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
9690                        yyval = Value::NodeList(nodes);
9691                    },
9692
9693
9694  599 =>  /* symbols: "symbol list" " " symbol_list "string end"  */
9695  /* "src/parser/parse.y":5629  */
9696                    {
9697                        yyval = Value::Node(
9698                            self.builder.symbols_compose(
9699                                 Token::from(yystack.owned_value_at(3)),
9700                                 NodeList::from(yystack.owned_value_at(1)),
9701                                 Token::from(yystack.owned_value_at(0))
9702                            )
9703                        );
9704                    },
9705
9706
9707  600 =>  /* symbol_list: %empty  */
9708  /* "src/parser/parse.y":5641  */
9709                    {
9710                        yyval = Value::NodeList( Box::default() );
9711                    },
9712
9713
9714  601 =>  /* symbol_list: symbol_list word " "  */
9715  /* "src/parser/parse.y":5645  */
9716                    {
9717                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
9718                        nodes.push(
9719                            *self.builder.word(  NodeList::from(yystack.owned_value_at(1)) )
9720                        );
9721                        yyval = Value::NodeList(nodes);
9722                    },
9723
9724
9725  602 =>  /* qwords: "verbatim word list" " " qword_list "string end"  */
9726  /* "src/parser/parse.y":5655  */
9727                    {
9728                        yyval = Value::Node(
9729                            self.builder.words_compose(
9730                                 Token::from(yystack.owned_value_at(3)),
9731                                 NodeList::from(yystack.owned_value_at(1)),
9732                                 Token::from(yystack.owned_value_at(0))
9733                            )
9734                        );
9735                    },
9736
9737
9738  603 =>  /* qsymbols: "verbatim symbol list" " " qsym_list "string end"  */
9739  /* "src/parser/parse.y":5667  */
9740                    {
9741                        yyval = Value::Node(
9742                            self.builder.symbols_compose(
9743                                 Token::from(yystack.owned_value_at(3)),
9744                                 NodeList::from(yystack.owned_value_at(1)),
9745                                 Token::from(yystack.owned_value_at(0))
9746                            )
9747                        );
9748                    },
9749
9750
9751  604 =>  /* qword_list: %empty  */
9752  /* "src/parser/parse.y":5679  */
9753                    {
9754                        yyval = Value::NodeList( Box::default() );
9755                    },
9756
9757
9758  605 =>  /* qword_list: qword_list "literal content" " "  */
9759  /* "src/parser/parse.y":5683  */
9760                    {
9761                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
9762                        nodes.push(
9763                            *self.builder.string_internal(  Token::from(yystack.owned_value_at(1)) )
9764                        );
9765                        yyval = Value::NodeList(nodes);
9766                    },
9767
9768
9769  606 =>  /* qsym_list: %empty  */
9770  /* "src/parser/parse.y":5693  */
9771                    {
9772                        yyval = Value::NodeList( Box::default() );
9773                    },
9774
9775
9776  607 =>  /* qsym_list: qsym_list "literal content" " "  */
9777  /* "src/parser/parse.y":5697  */
9778                    {
9779                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
9780                        nodes.push(
9781                            *self.builder.symbol_internal(  Token::from(yystack.owned_value_at(1)) )
9782                        );
9783                        yyval = Value::NodeList(nodes);
9784                    },
9785
9786
9787  608 =>  /* string_contents: %empty  */
9788  /* "src/parser/parse.y":5707  */
9789                    {
9790                        yyval = Value::NodeList( Box::default() );
9791                    },
9792
9793
9794  609 =>  /* string_contents: string_contents string_content  */
9795  /* "src/parser/parse.y":5711  */
9796                    {
9797                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
9798                        nodes.push( Node::from(yystack.owned_value_at(0)));
9799                        yyval = Value::NodeList(nodes);
9800                    },
9801
9802
9803  610 =>  /* xstring_contents: %empty  */
9804  /* "src/parser/parse.y":5719  */
9805                    {
9806                        yyval = Value::NodeList( Box::default() );
9807                    },
9808
9809
9810  611 =>  /* xstring_contents: xstring_contents string_content  */
9811  /* "src/parser/parse.y":5723  */
9812                    {
9813                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
9814                        nodes.push( Node::from(yystack.owned_value_at(0)));
9815                        yyval = Value::NodeList(nodes);
9816                    },
9817
9818
9819  612 =>  /* regexp_contents: %empty  */
9820  /* "src/parser/parse.y":5731  */
9821                    {
9822                        yyval = Value::NodeList( Box::default() );
9823                    },
9824
9825
9826  613 =>  /* regexp_contents: regexp_contents string_content  */
9827  /* "src/parser/parse.y":5735  */
9828                    {
9829                        let mut  nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
9830                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
9831                        yyval = Value::NodeList(nodes);
9832                    },
9833
9834
9835  614 =>  /* string_content: "literal content"  */
9836  /* "src/parser/parse.y":5743  */
9837                    {
9838                        yyval = Value::Node(
9839                            self.builder.string_internal( Token::from(yystack.owned_value_at(0)))
9840                        );
9841                    },
9842
9843
9844  615 =>  /* @36: %empty  */
9845  /* "src/parser/parse.y":5749  */
9846                    {
9847                        yyval = Value::MaybeStrTerm(std::mem::take(&mut self.yylexer.strterm));
9848                        self.yylexer.lex_state.set(EXPR_BEG);
9849                    },
9850
9851
9852  616 =>  /* string_content: tSTRING_DVAR @36 string_dvar  */
9853  /* "src/parser/parse.y":5754  */
9854                    {
9855                        self.yylexer.strterm =  MaybeStrTerm::from(yystack.owned_value_at(1));
9856                        yyval =  yystack.owned_value_at(0);
9857                    },
9858
9859
9860  617 =>  /* @37: %empty  */
9861  /* "src/parser/parse.y":5759  */
9862                    {
9863                        self.yylexer.cmdarg.push(false);
9864                        self.yylexer.cond.push(false);
9865                        yyval = Value::None;
9866                    },
9867
9868
9869  618 =>  /* @38: %empty  */
9870  /* "src/parser/parse.y":5764  */
9871                    {
9872                        yyval = Value::MaybeStrTerm(std::mem::take(&mut self.yylexer.strterm));
9873                    },
9874
9875
9876  619 =>  /* @39: %empty  */
9877  /* "src/parser/parse.y":5767  */
9878                    {
9879                        yyval = Value::Num( self.yylexer.lex_state.get() );
9880                        self.yylexer.lex_state.set(EXPR_BEG);
9881                    },
9882
9883
9884  620 =>  /* @40: %empty  */
9885  /* "src/parser/parse.y":5771  */
9886                    {
9887                        yyval = Value::Num( self.yylexer.brace_nest );
9888                        self.yylexer.brace_nest = 0;
9889                    },
9890
9891
9892  621 =>  /* @41: %empty  */
9893  /* "src/parser/parse.y":5775  */
9894                    {
9895                        yyval = Value::Num( self.yylexer.buffer.heredoc_indent );
9896                        self.yylexer.buffer.heredoc_indent = 0;
9897                    },
9898
9899
9900  622 =>  /* string_content: tSTRING_DBEG @37 @38 @39 @40 @41 compstmt "tRCURLY"  */
9901  /* "src/parser/parse.y":5780  */
9902                    {
9903                        self.yylexer.cond.pop();
9904                        self.yylexer.cmdarg.pop();
9905                        self.yylexer.strterm =  MaybeStrTerm::from(yystack.owned_value_at(5));
9906                        self.yylexer.lex_state.set( Num::from(yystack.owned_value_at(4)));
9907                        self.yylexer.brace_nest =  Num::from(yystack.owned_value_at(3));
9908                        self.yylexer.buffer.heredoc_indent =  Num::from(yystack.owned_value_at(2));
9909                        self.yylexer.buffer.heredoc_line_indent = -1;
9910
9911                        yyval = Value::Node(
9912                            self.builder.begin(
9913                                 Token::from(yystack.owned_value_at(7)),
9914                                 MaybeBoxedNode::from(yystack.owned_value_at(1)),
9915                                 Token::from(yystack.owned_value_at(0))
9916                            )
9917                        );
9918                    },
9919
9920
9921  623 =>  /* string_dvar: "global variable"  */
9922  /* "src/parser/parse.y":5800  */
9923                    {
9924                        yyval = Value::Node(self.builder.gvar( Token::from(yystack.owned_value_at(0))));
9925                    },
9926
9927
9928  624 =>  /* string_dvar: "instance variable"  */
9929  /* "src/parser/parse.y":5804  */
9930                    {
9931                        yyval = Value::Node(self.builder.ivar( Token::from(yystack.owned_value_at(0))));
9932
9933                    },
9934
9935
9936  625 =>  /* string_dvar: "class variable"  */
9937  /* "src/parser/parse.y":5809  */
9938                    {
9939                        yyval = Value::Node(self.builder.cvar( Token::from(yystack.owned_value_at(0))));
9940                    },
9941
9942
9943  626 =>  /* string_dvar: backref  */
9944  /* "src/parser/parse.y":5813  */
9945                    {
9946                        yyval =  yystack.owned_value_at(0);
9947                    },
9948
9949
9950  627 =>  /* symbol: ssym  */
9951  /* "src/parser/parse.y":5818  */
9952                       { yyval =  yystack.owned_value_at(0); },
9953
9954
9955  628 =>  /* symbol: dsym  */
9956  /* "src/parser/parse.y":5819  */
9957                       { yyval =  yystack.owned_value_at(0); },
9958
9959
9960  629 =>  /* ssym: "symbol literal" sym  */
9961  /* "src/parser/parse.y":5823  */
9962                    {
9963                        self.yylexer.lex_state.set(EXPR_END);
9964                        yyval = Value::Node(
9965                            self.builder.symbol( Token::from(yystack.owned_value_at(1)),  Token::from(yystack.owned_value_at(0)))
9966                        );
9967                    },
9968
9969
9970  630 =>  /* sym: fname  */
9971  /* "src/parser/parse.y":5831  */
9972                        { yyval =  yystack.owned_value_at(0); },
9973
9974
9975  631 =>  /* sym: "instance variable"  */
9976  /* "src/parser/parse.y":5832  */
9977                        { yyval =  yystack.owned_value_at(0); },
9978
9979
9980  632 =>  /* sym: "global variable"  */
9981  /* "src/parser/parse.y":5833  */
9982                        { yyval =  yystack.owned_value_at(0); },
9983
9984
9985  633 =>  /* sym: "class variable"  */
9986  /* "src/parser/parse.y":5834  */
9987                        { yyval =  yystack.owned_value_at(0); },
9988
9989
9990  634 =>  /* dsym: "symbol literal" string_contents "string end"  */
9991  /* "src/parser/parse.y":5838  */
9992                    {
9993                        self.yylexer.lex_state.set(EXPR_END);
9994                        yyval = Value::Node(
9995                            self.builder.symbol_compose( Token::from(yystack.owned_value_at(2)),  NodeList::from(yystack.owned_value_at(1)),  Token::from(yystack.owned_value_at(0)))
9996                        );
9997                    },
9998
9999
10000  635 =>  /* numeric: simple_numeric  */
10001  /* "src/parser/parse.y":5847  */
10002                    {
10003                        yyval =  yystack.owned_value_at(0);
10004                    },
10005
10006
10007  636 =>  /* numeric: tUMINUS_NUM simple_numeric  */
10008  /* "src/parser/parse.y":5851  */
10009                    {
10010                        yyval = Value::Node(
10011                            self.builder.unary_num(
10012                                 Token::from(yystack.owned_value_at(1)),
10013                                 BoxedNode::from(yystack.owned_value_at(0))
10014                            )
10015                        );
10016                    },
10017
10018
10019  637 =>  /* simple_numeric: "integer literal"  */
10020  /* "src/parser/parse.y":5862  */
10021                    {
10022                        yyval = Value::Node(
10023                            self.builder.integer( Token::from(yystack.owned_value_at(0)))
10024                        );
10025                    },
10026
10027
10028  638 =>  /* simple_numeric: "float literal"  */
10029  /* "src/parser/parse.y":5868  */
10030                    {
10031                        yyval = Value::Node(
10032                            self.builder.float( Token::from(yystack.owned_value_at(0)))
10033                        );
10034                    },
10035
10036
10037  639 =>  /* simple_numeric: "rational literal"  */
10038  /* "src/parser/parse.y":5874  */
10039                    {
10040                        yyval = Value::Node(
10041                            self.builder.rational( Token::from(yystack.owned_value_at(0)))
10042                        );
10043                    },
10044
10045
10046  640 =>  /* simple_numeric: "imaginary literal"  */
10047  /* "src/parser/parse.y":5880  */
10048                    {
10049                        yyval = Value::Node(
10050                            self.builder.complex( Token::from(yystack.owned_value_at(0)))
10051                        );
10052                    },
10053
10054
10055  641 =>  /* nonlocal_var: "instance variable"  */
10056  /* "src/parser/parse.y":5888  */
10057                    {
10058                        yyval = Value::Node(
10059                            self.builder.ivar( Token::from(yystack.owned_value_at(0)))
10060                        );
10061                    },
10062
10063
10064  642 =>  /* nonlocal_var: "global variable"  */
10065  /* "src/parser/parse.y":5894  */
10066                    {
10067                        yyval = Value::Node(
10068                            self.builder.gvar( Token::from(yystack.owned_value_at(0)))
10069                        );
10070                    },
10071
10072
10073  643 =>  /* nonlocal_var: "class variable"  */
10074  /* "src/parser/parse.y":5900  */
10075                    {
10076                        yyval = Value::Node(
10077                            self.builder.cvar( Token::from(yystack.owned_value_at(0)))
10078                        );
10079                    },
10080
10081
10082  644 =>  /* user_variable: "local variable or method"  */
10083  /* "src/parser/parse.y":5908  */
10084                    {
10085                        yyval = Value::Node(
10086                            self.builder.lvar( Token::from(yystack.owned_value_at(0)))
10087                        );
10088                    },
10089
10090
10091  645 =>  /* user_variable: "instance variable"  */
10092  /* "src/parser/parse.y":5914  */
10093                    {
10094                        yyval = Value::Node(
10095                            self.builder.ivar( Token::from(yystack.owned_value_at(0)))
10096                        );
10097                    },
10098
10099
10100  646 =>  /* user_variable: "global variable"  */
10101  /* "src/parser/parse.y":5920  */
10102                    {
10103                        yyval = Value::Node(
10104                            self.builder.gvar( Token::from(yystack.owned_value_at(0)))
10105                        );
10106                    },
10107
10108
10109  647 =>  /* user_variable: "constant"  */
10110  /* "src/parser/parse.y":5926  */
10111                    {
10112                        yyval = Value::Node(
10113                            self.builder.const_( Token::from(yystack.owned_value_at(0)))
10114                        );
10115                    },
10116
10117
10118  648 =>  /* user_variable: "class variable"  */
10119  /* "src/parser/parse.y":5932  */
10120                    {
10121                        yyval = Value::Node(
10122                            self.builder.cvar( Token::from(yystack.owned_value_at(0)))
10123                        );
10124                    },
10125
10126
10127  649 =>  /* keyword_variable: "`nil'"  */
10128  /* "src/parser/parse.y":5940  */
10129                    {
10130                        yyval = Value::Node(
10131                            self.builder.nil( Token::from(yystack.owned_value_at(0)))
10132                        );
10133                    },
10134
10135
10136  650 =>  /* keyword_variable: "`self'"  */
10137  /* "src/parser/parse.y":5946  */
10138                    {
10139                        yyval = Value::Node(
10140                            self.builder.self_( Token::from(yystack.owned_value_at(0)))
10141                        );
10142                    },
10143
10144
10145  651 =>  /* keyword_variable: "`true'"  */
10146  /* "src/parser/parse.y":5952  */
10147                    {
10148                        yyval = Value::Node(
10149                            self.builder.true_( Token::from(yystack.owned_value_at(0)))
10150                        );
10151                    },
10152
10153
10154  652 =>  /* keyword_variable: "`false'"  */
10155  /* "src/parser/parse.y":5958  */
10156                    {
10157                        yyval = Value::Node(
10158                            self.builder.false_( Token::from(yystack.owned_value_at(0)))
10159                        );
10160                    },
10161
10162
10163  653 =>  /* keyword_variable: "`__FILE__'"  */
10164  /* "src/parser/parse.y":5964  */
10165                    {
10166                        yyval = Value::Node(
10167                            self.builder.__file__( Token::from(yystack.owned_value_at(0)))
10168                        );
10169                    },
10170
10171
10172  654 =>  /* keyword_variable: "`__LINE__'"  */
10173  /* "src/parser/parse.y":5970  */
10174                    {
10175                        yyval = Value::Node(
10176                            self.builder.__line__( Token::from(yystack.owned_value_at(0)))
10177                        );
10178                    },
10179
10180
10181  655 =>  /* keyword_variable: "`__ENCODING__'"  */
10182  /* "src/parser/parse.y":5976  */
10183                    {
10184                        yyval = Value::Node(
10185                            self.builder.__encoding__( Token::from(yystack.owned_value_at(0)))
10186                        );
10187                    },
10188
10189
10190  656 =>  /* var_ref: user_variable  */
10191  /* "src/parser/parse.y":5984  */
10192                    {
10193                        yyval = Value::Node(
10194                            self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
10195                        );
10196                    },
10197
10198
10199  657 =>  /* var_ref: keyword_variable  */
10200  /* "src/parser/parse.y":5990  */
10201                    {
10202                        yyval = Value::Node(
10203                            self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
10204                        );
10205                    },
10206
10207
10208  658 =>  /* var_lhs: user_variable  */
10209  /* "src/parser/parse.y":5998  */
10210                    {
10211                        yyval = Value::Node(
10212                            self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
10213                        );
10214                    },
10215
10216
10217  659 =>  /* var_lhs: keyword_variable  */
10218  /* "src/parser/parse.y":6004  */
10219                    {
10220                        yyval = Value::Node(
10221                            self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
10222                        );
10223                    },
10224
10225
10226  660 =>  /* backref: "numbered reference"  */
10227  /* "src/parser/parse.y":6012  */
10228                    {
10229                        yyval = Value::Node(
10230                            self.builder.nth_ref( Token::from(yystack.owned_value_at(0)))
10231                        );
10232                    },
10233
10234
10235  661 =>  /* backref: "back reference"  */
10236  /* "src/parser/parse.y":6018  */
10237                    {
10238                        yyval = Value::Node(
10239                            self.builder.back_ref( Token::from(yystack.owned_value_at(0)))
10240                        );
10241                    },
10242
10243
10244  662 =>  /* @42: %empty  */
10245  /* "src/parser/parse.y":6026  */
10246                    {
10247                        self.yylexer.lex_state.set(EXPR_BEG);
10248                        self.yylexer.command_start = true;
10249                        yyval = Value::None;
10250                    },
10251
10252
10253  663 =>  /* superclass: "<" @42 expr_value term  */
10254  /* "src/parser/parse.y":6032  */
10255                    {
10256                        let lt_t  = Some( Token::from(yystack.owned_value_at(3)));
10257                        let value = Some( BoxedNode::from(yystack.owned_value_at(1)));
10258                        yyval = Value::new_superclass(
10259                            Superclass { lt_t, value }
10260                        );
10261                    },
10262
10263
10264  664 =>  /* superclass: %empty  */
10265  /* "src/parser/parse.y":6040  */
10266                    {
10267                        yyval = Value::new_superclass(Superclass { lt_t: None, value: None });
10268                    },
10269
10270
10271  665 =>  /* f_opt_paren_args: f_paren_args  */
10272  /* "src/parser/parse.y":6046  */
10273                    {
10274                        yyval =  yystack.owned_value_at(0);
10275                    },
10276
10277
10278  666 =>  /* f_opt_paren_args: none  */
10279  /* "src/parser/parse.y":6050  */
10280                    {
10281                        self.context.set_in_argdef(false);
10282                        yyval = Value::MaybeNode(None);
10283                    },
10284
10285
10286  667 =>  /* f_paren_args: "( (tLPAREN2)" f_args rparen  */
10287  /* "src/parser/parse.y":6057  */
10288                    {
10289                        yyval = Value::MaybeNode(
10290                            self.builder.args(Some( Token::from(yystack.owned_value_at(2))),  NodeList::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))
10291                        );
10292
10293                        self.yylexer.lex_state.set(EXPR_BEG);
10294                        self.yylexer.command_start = true;
10295                        self.context.set_in_argdef(false);
10296                    },
10297
10298
10299  668 =>  /* f_arglist: f_paren_args  */
10300  /* "src/parser/parse.y":6069  */
10301                    {
10302                        yyval =  yystack.owned_value_at(0);
10303                    },
10304
10305
10306  669 =>  /* @43: %empty  */
10307  /* "src/parser/parse.y":6072  */
10308                    {
10309                        yyval = Value::Context(self.context.dump());
10310                        self.context.set_in_kwarg(true);
10311                        self.context.set_in_argdef(true);
10312                        self.yylexer.lex_state.set(self.yylexer.lex_state.get()|EXPR_LABEL);
10313                    },
10314
10315
10316  670 =>  /* f_arglist: @43 f_args term  */
10317  /* "src/parser/parse.y":6079  */
10318                    {
10319                        self.context.set_in_kwarg( Context::from(yystack.owned_value_at(2)).in_kwarg());
10320                        self.context.set_in_argdef(false);
10321                        yyval = Value::MaybeNode(
10322                            self.builder.args(None,  NodeList::from(yystack.owned_value_at(1)), None)
10323                        );
10324                        self.yylexer.lex_state.set(EXPR_BEG);
10325                        self.yylexer.command_start = true;
10326                    },
10327
10328
10329  671 =>  /* args_tail: f_kwarg "," f_kwrest opt_f_block_arg  */
10330  /* "src/parser/parse.y":6091  */
10331                    {
10332                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
10333                        let mut f_kwrest =  NodeList::from(yystack.owned_value_at(1));
10334                        let mut opt_f_block_arg =  NodeList::from(yystack.owned_value_at(0));
10335
10336                        nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
10337                        nodes.append(&mut f_kwrest);
10338                        nodes.append(&mut opt_f_block_arg);
10339
10340                        yyval = Value::NodeList(nodes);
10341                    },
10342
10343
10344  672 =>  /* args_tail: f_kwarg opt_f_block_arg  */
10345  /* "src/parser/parse.y":6103  */
10346                    {
10347                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
10348                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
10349
10350                        yyval = Value::NodeList(nodes);
10351                    },
10352
10353
10354  673 =>  /* args_tail: f_any_kwrest opt_f_block_arg  */
10355  /* "src/parser/parse.y":6110  */
10356                    {
10357                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
10358                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
10359
10360                        yyval = Value::NodeList(nodes);
10361                    },
10362
10363
10364  674 =>  /* args_tail: f_block_arg  */
10365  /* "src/parser/parse.y":6117  */
10366                    {
10367                        yyval = Value::NodeList(
10368                            Box::new(
10369                                vec![  Node::from(yystack.owned_value_at(0)) ]
10370                            )
10371                        );
10372                    },
10373
10374
10375  675 =>  /* args_tail: args_forward  */
10376  /* "src/parser/parse.y":6125  */
10377                    {
10378                        let forward_arg = *self.builder.forward_arg( Token::from(yystack.owned_value_at(0)));
10379                        self.static_env.declare_forward_args();
10380                        yyval = Value::NodeList(
10381                            Box::new(
10382                                vec![ forward_arg ]
10383                            )
10384                        );
10385                    },
10386
10387
10388  676 =>  /* opt_args_tail: "," args_tail  */
10389  /* "src/parser/parse.y":6137  */
10390                    {
10391                        yyval =  yystack.owned_value_at(0);
10392                    },
10393
10394
10395  677 =>  /* opt_args_tail: %empty  */
10396  /* "src/parser/parse.y":6141  */
10397                    {
10398                        yyval = Value::NodeList( Box::default() );
10399                    },
10400
10401
10402  678 =>  /* f_args: f_arg "," f_optarg "," f_rest_arg opt_args_tail  */
10403  /* "src/parser/parse.y":6147  */
10404                    {
10405                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
10406                        let mut f_optarg =  NodeList::from(yystack.owned_value_at(3));
10407                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(1));
10408                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10409
10410                        nodes.reserve(f_optarg.len() + f_rest_arg.len() + opt_args_tail.len());
10411                        nodes.append(&mut f_optarg);
10412                        nodes.append(&mut f_rest_arg);
10413                        nodes.append(&mut opt_args_tail);
10414
10415                        yyval = Value::NodeList(nodes);
10416                    },
10417
10418
10419  679 =>  /* f_args: f_arg "," f_optarg "," f_rest_arg "," f_arg opt_args_tail  */
10420  /* "src/parser/parse.y":6161  */
10421                    {
10422                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(7));
10423                        let mut f_optarg =  NodeList::from(yystack.owned_value_at(5));
10424                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(3));
10425                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
10426                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10427
10428                        nodes.reserve(f_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
10429                        nodes.append(&mut f_optarg);
10430                        nodes.append(&mut f_rest_arg);
10431                        nodes.append(&mut f_arg);
10432                        nodes.append(&mut opt_args_tail);
10433
10434                        yyval = Value::NodeList(nodes);
10435                    },
10436
10437
10438  680 =>  /* f_args: f_arg "," f_optarg opt_args_tail  */
10439  /* "src/parser/parse.y":6177  */
10440                    {
10441                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
10442                        let mut f_optarg =  NodeList::from(yystack.owned_value_at(1));
10443                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10444
10445                        nodes.reserve(f_optarg.len() + opt_args_tail.len());
10446                        nodes.append(&mut f_optarg);
10447                        nodes.append(&mut opt_args_tail);
10448
10449                        yyval = Value::NodeList(nodes);
10450                    },
10451
10452
10453  681 =>  /* f_args: f_arg "," f_optarg "," f_arg opt_args_tail  */
10454  /* "src/parser/parse.y":6189  */
10455                    {
10456                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
10457                        let mut f_optarg =  NodeList::from(yystack.owned_value_at(3));
10458                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
10459                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10460
10461                        nodes.reserve(f_optarg.len() + f_arg.len() + opt_args_tail.len());
10462                        nodes.append(&mut f_optarg);
10463                        nodes.append(&mut f_arg);
10464                        nodes.append(&mut opt_args_tail);
10465
10466                        yyval = Value::NodeList(nodes);
10467                    },
10468
10469
10470  682 =>  /* f_args: f_arg "," f_rest_arg opt_args_tail  */
10471  /* "src/parser/parse.y":6203  */
10472                    {
10473                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
10474                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(1));
10475                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10476
10477                        nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
10478                        nodes.append(&mut f_rest_arg);
10479                        nodes.append(&mut opt_args_tail);
10480
10481                        yyval = Value::NodeList(nodes);
10482                    },
10483
10484
10485  683 =>  /* f_args: f_arg "," f_rest_arg "," f_arg opt_args_tail  */
10486  /* "src/parser/parse.y":6215  */
10487                    {
10488                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
10489                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(3));
10490                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
10491                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10492
10493                        nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
10494                        nodes.append(&mut f_rest_arg);
10495                        nodes.append(&mut f_arg);
10496                        nodes.append(&mut opt_args_tail);
10497
10498                        yyval = Value::NodeList(nodes);
10499                    },
10500
10501
10502  684 =>  /* f_args: f_arg opt_args_tail  */
10503  /* "src/parser/parse.y":6229  */
10504                    {
10505                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
10506                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
10507
10508                        yyval = Value::NodeList(nodes);
10509                    },
10510
10511
10512  685 =>  /* f_args: f_optarg "," f_rest_arg opt_args_tail  */
10513  /* "src/parser/parse.y":6236  */
10514                    {
10515                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
10516                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(1));
10517                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10518
10519                        nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
10520                        nodes.append(&mut f_rest_arg);
10521                        nodes.append(&mut opt_args_tail);
10522
10523                        yyval = Value::NodeList(nodes);
10524                    },
10525
10526
10527  686 =>  /* f_args: f_optarg "," f_rest_arg "," f_arg opt_args_tail  */
10528  /* "src/parser/parse.y":6248  */
10529                    {
10530                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(5));
10531                        let mut f_rest_arg =  NodeList::from(yystack.owned_value_at(3));
10532                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
10533                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10534
10535                        nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
10536                        nodes.append(&mut f_rest_arg);
10537                        nodes.append(&mut f_arg);
10538                        nodes.append(&mut opt_args_tail);
10539
10540                        yyval = Value::NodeList(nodes);
10541                    },
10542
10543
10544  687 =>  /* f_args: f_optarg opt_args_tail  */
10545  /* "src/parser/parse.y":6262  */
10546                    {
10547                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
10548                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
10549
10550                        yyval = Value::NodeList(nodes);
10551                    },
10552
10553
10554  688 =>  /* f_args: f_optarg "," f_arg opt_args_tail  */
10555  /* "src/parser/parse.y":6269  */
10556                    {
10557                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
10558                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
10559                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10560
10561                        nodes.reserve(f_arg.len() + opt_args_tail.len());
10562                        nodes.append(&mut f_arg);
10563                        nodes.append(&mut opt_args_tail);
10564
10565                        yyval = Value::NodeList(nodes);
10566                    },
10567
10568
10569  689 =>  /* f_args: f_rest_arg opt_args_tail  */
10570  /* "src/parser/parse.y":6281  */
10571                    {
10572                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(1));
10573                        nodes.append(&mut  NodeList::from(yystack.owned_value_at(0)));
10574
10575                        yyval = Value::NodeList(nodes);
10576                    },
10577
10578
10579  690 =>  /* f_args: f_rest_arg "," f_arg opt_args_tail  */
10580  /* "src/parser/parse.y":6288  */
10581                    {
10582                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(3));
10583                        let mut f_arg =  NodeList::from(yystack.owned_value_at(1));
10584                        let mut opt_args_tail =  NodeList::from(yystack.owned_value_at(0));
10585
10586                        nodes.reserve(f_arg.len() + opt_args_tail.len());
10587                        nodes.append(&mut f_arg);
10588                        nodes.append(&mut opt_args_tail);
10589
10590                        yyval = Value::NodeList(nodes);
10591                    },
10592
10593
10594  691 =>  /* f_args: args_tail  */
10595  /* "src/parser/parse.y":6300  */
10596                    {
10597                        yyval = Value::NodeList( BoxedNodeList::from(yystack.owned_value_at(0)));
10598                    },
10599
10600
10601  692 =>  /* f_args: %empty  */
10602  /* "src/parser/parse.y":6304  */
10603                    {
10604                        yyval = Value::NodeList( Box::default() );
10605                    },
10606
10607
10608  693 =>  /* args_forward: "(..."  */
10609  /* "src/parser/parse.y":6310  */
10610                    {
10611                        yyval =  yystack.owned_value_at(0);
10612                    },
10613
10614
10615  694 =>  /* f_bad_arg: "constant"  */
10616  /* "src/parser/parse.y":6316  */
10617                    {
10618                        return self.yyerror(yystack.location_at (0), DiagnosticMessage::ConstArgument {});
10619                    },
10620
10621
10622  695 =>  /* f_bad_arg: "instance variable"  */
10623  /* "src/parser/parse.y":6320  */
10624                    {
10625                        return self.yyerror(yystack.location_at (0), DiagnosticMessage::IvarArgument {});
10626                    },
10627
10628
10629  696 =>  /* f_bad_arg: "global variable"  */
10630  /* "src/parser/parse.y":6324  */
10631                    {
10632                        return self.yyerror(yystack.location_at (0), DiagnosticMessage::GvarArgument {});
10633                    },
10634
10635
10636  697 =>  /* f_bad_arg: "class variable"  */
10637  /* "src/parser/parse.y":6328  */
10638                    {
10639                        return self.yyerror(yystack.location_at (0), DiagnosticMessage::CvarArgument {});
10640                    },
10641
10642
10643  698 =>  /* f_norm_arg: f_bad_arg  */
10644  /* "src/parser/parse.y":6334  */
10645                    {
10646                        yyval =  yystack.owned_value_at(0);
10647                    },
10648
10649
10650  699 =>  /* f_norm_arg: "local variable or method"  */
10651  /* "src/parser/parse.y":6338  */
10652                    {
10653                        let ident_t =  Token::from(yystack.owned_value_at(0));
10654                        let name = clone_value(&ident_t);
10655                        self.static_env.declare(name.as_str());
10656                        self.max_numparam_stack.set_has_ordinary_params();
10657                        yyval = Value::Token(ident_t);
10658                    },
10659
10660
10661  700 =>  /* f_arg_asgn: f_norm_arg  */
10662  /* "src/parser/parse.y":6348  */
10663                    {
10664                        let arg_t =  Token::from(yystack.owned_value_at(0));
10665                        let arg_name = clone_value(&arg_t);
10666                        self.current_arg_stack.set(Some(arg_name));
10667                        yyval = Value::Token(arg_t);
10668                    },
10669
10670
10671  701 =>  /* f_arg_item: f_arg_asgn  */
10672  /* "src/parser/parse.y":6357  */
10673                    {
10674                        self.current_arg_stack.set(None);
10675                        yyval = Value::Node(
10676                            self.builder.arg( Token::from(yystack.owned_value_at(0)))?
10677                        );
10678                    },
10679
10680
10681  702 =>  /* f_arg_item: "(" f_margs rparen  */
10682  /* "src/parser/parse.y":6364  */
10683                    {
10684                        yyval = Value::Node(
10685                            self.builder.multi_lhs(
10686                                Some( Token::from(yystack.owned_value_at(2))),
10687                                 NodeList::from(yystack.owned_value_at(1)),
10688                                Some( Token::from(yystack.owned_value_at(0)))
10689                            )
10690                        );
10691                    },
10692
10693
10694  703 =>  /* f_arg: f_arg_item  */
10695  /* "src/parser/parse.y":6376  */
10696                    {
10697                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
10698                    },
10699
10700
10701  704 =>  /* f_arg: f_arg "," f_arg_item  */
10702  /* "src/parser/parse.y":6380  */
10703                    {
10704                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
10705                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
10706                        yyval = Value::NodeList(nodes);
10707                    },
10708
10709
10710  705 =>  /* f_label: "label"  */
10711  /* "src/parser/parse.y":6389  */
10712                    {
10713                        let ident_t =  Token::from(yystack.owned_value_at(0));
10714                        self.check_kwarg_name(&ident_t)?;
10715
10716                        let ident = clone_value(&ident_t);
10717                        self.static_env.declare(&ident);
10718
10719                        self.max_numparam_stack.set_has_ordinary_params();
10720
10721                        self.current_arg_stack.set(Some(ident));
10722                        self.context.set_in_argdef(false);
10723
10724                        yyval = Value::Token(ident_t);
10725                    },
10726
10727
10728  706 =>  /* f_kw: f_label arg_value  */
10729  /* "src/parser/parse.y":6406  */
10730                    {
10731                        self.current_arg_stack.set(None);
10732                        self.context.set_in_argdef(true);
10733                        yyval = Value::Node(
10734                            self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
10735                        );
10736                    },
10737
10738
10739  707 =>  /* f_kw: f_label  */
10740  /* "src/parser/parse.y":6414  */
10741                    {
10742                        self.current_arg_stack.set(None);
10743                        self.context.set_in_argdef(true);
10744                        yyval = Value::Node(
10745                            self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
10746                        );
10747                    },
10748
10749
10750  708 =>  /* f_block_kw: f_label primary_value  */
10751  /* "src/parser/parse.y":6424  */
10752                    {
10753                        self.context.set_in_argdef(true);
10754                        yyval = Value::Node(
10755                            self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))?
10756                        );
10757                    },
10758
10759
10760  709 =>  /* f_block_kw: f_label  */
10761  /* "src/parser/parse.y":6431  */
10762                    {
10763                        self.context.set_in_argdef(true);
10764                        yyval = Value::Node(
10765                            self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
10766                        );
10767                    },
10768
10769
10770  710 =>  /* f_block_kwarg: f_block_kw  */
10771  /* "src/parser/parse.y":6440  */
10772                    {
10773                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
10774                    },
10775
10776
10777  711 =>  /* f_block_kwarg: f_block_kwarg "," f_block_kw  */
10778  /* "src/parser/parse.y":6444  */
10779                    {
10780                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
10781                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
10782                        yyval = Value::NodeList(nodes);
10783                    },
10784
10785
10786  712 =>  /* f_kwarg: f_kw  */
10787  /* "src/parser/parse.y":6453  */
10788                    {
10789                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
10790                    },
10791
10792
10793  713 =>  /* f_kwarg: f_kwarg "," f_kw  */
10794  /* "src/parser/parse.y":6457  */
10795                    {
10796                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
10797                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
10798                        yyval = Value::NodeList(nodes);
10799                    },
10800
10801
10802  714 =>  /* kwrest_mark: "**"  */
10803  /* "src/parser/parse.y":6465  */
10804                    {
10805                        yyval =  yystack.owned_value_at(0);
10806                    },
10807
10808
10809  715 =>  /* kwrest_mark: "**arg"  */
10810  /* "src/parser/parse.y":6469  */
10811                    {
10812                        yyval =  yystack.owned_value_at(0);
10813                    },
10814
10815
10816  716 =>  /* f_no_kwarg: p_kwnorest  */
10817  /* "src/parser/parse.y":6475  */
10818                    {
10819                        let NoKwRest { kwrest_mark, k_nil } =  NoKwRest::from(yystack.owned_value_at(0));
10820                        yyval = Value::NodeList(
10821                            Box::new(
10822                                vec![
10823                                    *self.builder.kwnilarg(
10824                                        kwrest_mark,
10825                                        k_nil
10826                                    )
10827                                ]
10828                            )
10829                        );
10830                    },
10831
10832
10833  717 =>  /* f_kwrest: kwrest_mark "local variable or method"  */
10834  /* "src/parser/parse.y":6491  */
10835                    {
10836                        let ident_t =  Token::from(yystack.owned_value_at(0));
10837                        self.static_env.declare(clone_value(&ident_t).as_str());
10838                        yyval = Value::NodeList(
10839                            Box::new(
10840                                vec![
10841                                    *(self.builder.kwrestarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?)
10842                                ]
10843                            )
10844                        );
10845                    },
10846
10847
10848  718 =>  /* f_kwrest: kwrest_mark  */
10849  /* "src/parser/parse.y":6503  */
10850                    {
10851                        yyval = Value::NodeList(
10852                            Box::new(
10853                                vec![
10854                                    *(self.builder.kwrestarg( Token::from(yystack.owned_value_at(0)), None)?)
10855                                ]
10856                            )
10857                        );
10858                    },
10859
10860
10861  719 =>  /* f_opt: f_arg_asgn f_eq arg_value  */
10862  /* "src/parser/parse.y":6515  */
10863                    {
10864                        self.current_arg_stack.set(None);
10865                        self.context.set_in_argdef(true);
10866                        yyval = Value::Node(
10867                            self.builder.optarg(
10868                                 Token::from(yystack.owned_value_at(2)),
10869                                 Token::from(yystack.owned_value_at(1)),
10870                                 BoxedNode::from(yystack.owned_value_at(0))
10871                            )?
10872                        );
10873                    },
10874
10875
10876  720 =>  /* f_block_opt: f_arg_asgn f_eq primary_value  */
10877  /* "src/parser/parse.y":6529  */
10878                    {
10879                        self.current_arg_stack.set(None);
10880                        self.context.set_in_argdef(true);
10881                        yyval = Value::Node(
10882                            self.builder.optarg(
10883                                 Token::from(yystack.owned_value_at(2)),
10884                                 Token::from(yystack.owned_value_at(1)),
10885                                 BoxedNode::from(yystack.owned_value_at(0))
10886                            )?
10887                        );
10888                    },
10889
10890
10891  721 =>  /* f_block_optarg: f_block_opt  */
10892  /* "src/parser/parse.y":6543  */
10893                    {
10894                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
10895                    },
10896
10897
10898  722 =>  /* f_block_optarg: f_block_optarg "," f_block_opt  */
10899  /* "src/parser/parse.y":6547  */
10900                    {
10901                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
10902                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
10903                        yyval = Value::NodeList(nodes);
10904                    },
10905
10906
10907  723 =>  /* f_optarg: f_opt  */
10908  /* "src/parser/parse.y":6555  */
10909                    {
10910                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
10911                    },
10912
10913
10914  724 =>  /* f_optarg: f_optarg "," f_opt  */
10915  /* "src/parser/parse.y":6559  */
10916                    {
10917                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
10918                        nodes.push(  Node::from(yystack.owned_value_at(0)) );
10919                        yyval = Value::NodeList(nodes);
10920                    },
10921
10922
10923  725 =>  /* restarg_mark: "* (tSTAR2)"  */
10924  /* "src/parser/parse.y":6567  */
10925                    {
10926                        yyval =  yystack.owned_value_at(0);
10927                    },
10928
10929
10930  726 =>  /* restarg_mark: "*"  */
10931  /* "src/parser/parse.y":6571  */
10932                    {
10933                        yyval =  yystack.owned_value_at(0);
10934                    },
10935
10936
10937  727 =>  /* f_rest_arg: restarg_mark "local variable or method"  */
10938  /* "src/parser/parse.y":6577  */
10939                    {
10940                        let ident_t =  Token::from(yystack.owned_value_at(0));
10941                        self.static_env.declare(clone_value(&ident_t).as_str());
10942
10943                        yyval = Value::NodeList(
10944                            Box::new(
10945                                vec![
10946                                    *(self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?)
10947                                ]
10948                            )
10949                        );
10950                    },
10951
10952
10953  728 =>  /* f_rest_arg: restarg_mark  */
10954  /* "src/parser/parse.y":6590  */
10955                    {
10956                        yyval = Value::NodeList(
10957                            Box::new(
10958                                vec![
10959                                    *(self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?)
10960                                ]
10961                            )
10962                        );
10963                    },
10964
10965
10966  729 =>  /* blkarg_mark: "& (tAMPER2)"  */
10967  /* "src/parser/parse.y":6602  */
10968                    {
10969                        yyval =  yystack.owned_value_at(0);
10970                    },
10971
10972
10973  730 =>  /* blkarg_mark: "&"  */
10974  /* "src/parser/parse.y":6606  */
10975                    {
10976                        yyval =  yystack.owned_value_at(0);
10977                    },
10978
10979
10980  731 =>  /* f_block_arg: blkarg_mark "local variable or method"  */
10981  /* "src/parser/parse.y":6612  */
10982                    {
10983                        let ident_t =  Token::from(yystack.owned_value_at(0));
10984                        self.static_env.declare(clone_value(&ident_t).as_str());
10985                        yyval = Value::Node(
10986                            self.builder.blockarg(
10987                                 Token::from(yystack.owned_value_at(1)),
10988                                Some(ident_t),
10989                            )?
10990                        );
10991                    },
10992
10993
10994  732 =>  /* f_block_arg: blkarg_mark  */
10995  /* "src/parser/parse.y":6623  */
10996                    {
10997                        self.static_env.declare_anonymous_blockarg();
10998                        yyval = Value::Node(
10999                            self.builder.blockarg(
11000                                 Token::from(yystack.owned_value_at(0)),
11001                                None
11002                            )?
11003                        );
11004                    },
11005
11006
11007  733 =>  /* opt_f_block_arg: "," f_block_arg  */
11008  /* "src/parser/parse.y":6635  */
11009                    {
11010                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
11011                    },
11012
11013
11014  734 =>  /* opt_f_block_arg: none  */
11015  /* "src/parser/parse.y":6639  */
11016                    {
11017                        yyval = Value::NodeList( Box::default() );
11018                    },
11019
11020
11021  735 =>  /* singleton: var_ref  */
11022  /* "src/parser/parse.y":6645  */
11023                    {
11024                        let var_ref =  BoxedNode::from(yystack.owned_value_at(0));
11025                        self.value_expr(&var_ref)?;
11026                        yyval = Value::Node(var_ref);
11027                    },
11028
11029
11030  736 =>  /* @44: %empty  */
11031  /* "src/parser/parse.y":6650  */
11032                           { self.yylexer.lex_state.set(EXPR_BEG); yyval = Value::None; },
11033
11034
11035  737 =>  /* singleton: "( (tLPAREN2)" @44 expr rparen  */
11036  /* "src/parser/parse.y":6651  */
11037                    {
11038                        let expr =  BoxedNode::from(yystack.owned_value_at(1));
11039
11040                        match &*expr {
11041                            Node::Int(nodes::Int { expression_l, .. })
11042                            | Node::Float(nodes::Float { expression_l, .. })
11043                            | Node::Rational(nodes::Rational { expression_l, .. })
11044                            | Node::Complex(nodes::Complex { expression_l, .. })
11045                            | Node::Str(nodes::Str { expression_l, .. })
11046                            | Node::Dstr(nodes::Dstr { expression_l, .. })
11047                            | Node::Sym(nodes::Sym { expression_l, .. })
11048                            | Node::Dsym(nodes::Dsym { expression_l, .. })
11049                            | Node::Heredoc(nodes::Heredoc { expression_l, .. })
11050                            | Node::XHeredoc(nodes::XHeredoc { expression_l, .. })
11051                            | Node::Regexp(nodes::Regexp { expression_l, .. })
11052                            | Node::Array(nodes::Array { expression_l, .. })
11053                            | Node::Hash(nodes::Hash { expression_l, .. }) => {
11054                                self.yyerror1(
11055                                    DiagnosticMessage::SingletonLiteral {},
11056                                    *expression_l,
11057                                )?;
11058                            }
11059                            other => {
11060                                self.value_expr(other)?
11061                            }
11062                        }
11063
11064                        yyval = Value::Node(expr);
11065                    },
11066
11067
11068  738 =>  /* assoc_list: none  */
11069  /* "src/parser/parse.y":6683  */
11070                    {
11071                        yyval = Value::NodeList( Box::default() );
11072                    },
11073
11074
11075  739 =>  /* assoc_list: assocs trailer  */
11076  /* "src/parser/parse.y":6687  */
11077                    {
11078                        yyval =  yystack.owned_value_at(1);
11079                    },
11080
11081
11082  740 =>  /* assocs: assoc  */
11083  /* "src/parser/parse.y":6693  */
11084                    {
11085                        yyval = Value::NodeList( Box::new(vec![  Node::from(yystack.owned_value_at(0)) ]) );
11086                    },
11087
11088
11089  741 =>  /* assocs: assocs "," assoc  */
11090  /* "src/parser/parse.y":6697  */
11091                    {
11092                        let mut nodes =  BoxedNodeList::from(yystack.owned_value_at(2));
11093                        nodes.push( Node::from(yystack.owned_value_at(0)));
11094                        yyval = Value::NodeList(nodes);
11095                    },
11096
11097
11098  742 =>  /* assoc: arg_value "=>" arg_value  */
11099  /* "src/parser/parse.y":6705  */
11100                    {
11101                        yyval = Value::Node(
11102                            self.builder.pair(
11103                                 BoxedNode::from(yystack.owned_value_at(2)),
11104                                 Token::from(yystack.owned_value_at(1)),
11105                                 BoxedNode::from(yystack.owned_value_at(0))
11106                            )
11107                        );
11108                    },
11109
11110
11111  743 =>  /* assoc: "label" arg_value  */
11112  /* "src/parser/parse.y":6715  */
11113                    {
11114                        yyval = Value::Node(
11115                            self.builder.pair_keyword(
11116                                 Token::from(yystack.owned_value_at(1)),
11117                                 BoxedNode::from(yystack.owned_value_at(0))
11118                            )
11119                        );
11120                    },
11121
11122
11123  744 =>  /* assoc: "label"  */
11124  /* "src/parser/parse.y":6724  */
11125                    {
11126                        yyval = Value::Node(
11127                            self.builder.pair_label( Token::from(yystack.owned_value_at(0)))
11128                        );
11129                    },
11130
11131
11132  745 =>  /* assoc: "string begin" string_contents tLABEL_END arg_value  */
11133  /* "src/parser/parse.y":6730  */
11134                    {
11135                        yyval = Value::Node(
11136                            self.builder.pair_quoted(
11137                                 Token::from(yystack.owned_value_at(3)),
11138                                 NodeList::from(yystack.owned_value_at(2)),
11139                                 Token::from(yystack.owned_value_at(1)),
11140                                 BoxedNode::from(yystack.owned_value_at(0))
11141                            )
11142                        );
11143                    },
11144
11145
11146  746 =>  /* assoc: "**arg" arg_value  */
11147  /* "src/parser/parse.y":6741  */
11148                    {
11149                        yyval = Value::Node(
11150                            self.builder.kwsplat( Token::from(yystack.owned_value_at(1)),  BoxedNode::from(yystack.owned_value_at(0)))
11151                        );
11152                    },
11153
11154
11155  747 =>  /* operation: "local variable or method"  */
11156  /* "src/parser/parse.y":6749  */
11157                    {
11158                        yyval =  yystack.owned_value_at(0);
11159                    },
11160
11161
11162  748 =>  /* operation: "constant"  */
11163  /* "src/parser/parse.y":6753  */
11164                    {
11165                        yyval =  yystack.owned_value_at(0);
11166                    },
11167
11168
11169  749 =>  /* operation: "method"  */
11170  /* "src/parser/parse.y":6757  */
11171                    {
11172                        yyval =  yystack.owned_value_at(0);
11173                    },
11174
11175
11176  750 =>  /* operation2: operation  */
11177  /* "src/parser/parse.y":6763  */
11178                    {
11179                        yyval =  yystack.owned_value_at(0);
11180                    },
11181
11182
11183  751 =>  /* operation2: op  */
11184  /* "src/parser/parse.y":6767  */
11185                    {
11186                        yyval =  yystack.owned_value_at(0);
11187                    },
11188
11189
11190  752 =>  /* operation3: "local variable or method"  */
11191  /* "src/parser/parse.y":6773  */
11192                    {
11193                        yyval =  yystack.owned_value_at(0);
11194                    },
11195
11196
11197  753 =>  /* operation3: "method"  */
11198  /* "src/parser/parse.y":6777  */
11199                    {
11200                        yyval =  yystack.owned_value_at(0);
11201                    },
11202
11203
11204  754 =>  /* operation3: op  */
11205  /* "src/parser/parse.y":6781  */
11206                    {
11207                        yyval =  yystack.owned_value_at(0);
11208                    },
11209
11210
11211  755 =>  /* dot_or_colon: tDOT  */
11212  /* "src/parser/parse.y":6787  */
11213                    {
11214                        yyval =  yystack.owned_value_at(0);
11215                    },
11216
11217
11218  756 =>  /* dot_or_colon: "::"  */
11219  /* "src/parser/parse.y":6791  */
11220                    {
11221                        yyval =  yystack.owned_value_at(0);
11222                    },
11223
11224
11225  757 =>  /* call_op: tDOT  */
11226  /* "src/parser/parse.y":6797  */
11227                    {
11228                        yyval =  yystack.owned_value_at(0);
11229                    },
11230
11231
11232  758 =>  /* call_op: "&."  */
11233  /* "src/parser/parse.y":6801  */
11234                    {
11235                        yyval =  yystack.owned_value_at(0);
11236                    },
11237
11238
11239  759 =>  /* call_op2: call_op  */
11240  /* "src/parser/parse.y":6807  */
11241                    {
11242                        yyval =  yystack.owned_value_at(0);
11243                    },
11244
11245
11246  760 =>  /* call_op2: "::"  */
11247  /* "src/parser/parse.y":6811  */
11248                    {
11249                        yyval =  yystack.owned_value_at(0);
11250                    },
11251
11252
11253  761 =>  /* opt_terms: %empty  */
11254  /* "src/parser/parse.y":6817  */
11255                    {
11256                        yyval = Value::None;
11257                    },
11258
11259
11260  762 =>  /* opt_terms: terms  */
11261  /* "src/parser/parse.y":6821  */
11262                    {
11263                        yyval = Value::None;
11264                    },
11265
11266
11267  763 =>  /* opt_nl: %empty  */
11268  /* "src/parser/parse.y":6827  */
11269                    {
11270                        yyval = Value::None;
11271                    },
11272
11273
11274  764 =>  /* opt_nl: "\n"  */
11275  /* "src/parser/parse.y":6831  */
11276                    {
11277                        yyval = Value::None;
11278                    },
11279
11280
11281  765 =>  /* rparen: opt_nl ")"  */
11282  /* "src/parser/parse.y":6837  */
11283                    {
11284                        yyval =  yystack.owned_value_at(0);
11285                    },
11286
11287
11288  766 =>  /* rbracket: opt_nl "]"  */
11289  /* "src/parser/parse.y":6843  */
11290                    {
11291                        yyval =  yystack.owned_value_at(0);
11292                    },
11293
11294
11295  767 =>  /* rbrace: opt_nl "}"  */
11296  /* "src/parser/parse.y":6849  */
11297                    {
11298                        yyval =  yystack.owned_value_at(0);
11299                    },
11300
11301
11302  768 =>  /* trailer: %empty  */
11303  /* "src/parser/parse.y":6855  */
11304                    {
11305                        yyval = Value::None;
11306                    },
11307
11308
11309  769 =>  /* trailer: "\n"  */
11310  /* "src/parser/parse.y":6859  */
11311                    {
11312                        yyval = Value::None;
11313                    },
11314
11315
11316  770 =>  /* trailer: ","  */
11317  /* "src/parser/parse.y":6863  */
11318                    {
11319                        yyval = Value::None;
11320                    },
11321
11322
11323  771 =>  /* term: ";"  */
11324  /* "src/parser/parse.y":6869  */
11325                    {
11326                        yyval =  yystack.owned_value_at(0);
11327                    },
11328
11329
11330  772 =>  /* term: "\n"  */
11331  /* "src/parser/parse.y":6873  */
11332                    {
11333                        yyval =  yystack.owned_value_at(0);
11334                    },
11335
11336
11337  773 =>  /* terms: term  */
11338  /* "src/parser/parse.y":6879  */
11339                    {
11340                        yyval = Value::None;
11341                    },
11342
11343
11344  774 =>  /* terms: terms ";"  */
11345  /* "src/parser/parse.y":6883  */
11346                    {
11347                        yyval = Value::None;
11348                    },
11349
11350
11351  775 =>  /* none: %empty  */
11352  /* "src/parser/parse.y":6889  */
11353                  {
11354                        yyval = Value::None;
11355                  },
11356
11357
11358
11359/* "src/parser/parse.rs":11360  */
11360
11361            _ => {}
11362        }
11363
11364        assert!(
11365            !yyval.is_uninitialized(),
11366            "yyval is Uninitialized in rule at line {}",
11367            Self::yyrline_[i32_to_usize(yyn)],
11368        );
11369
11370        self.yy_symbol_print("-> $$ =", SymbolKind::get(Self::yyr1_[i32_to_usize(yyn)]), &yyval, &yyloc);
11371
11372        yystack.pop_n(*yylen);
11373        *yylen = 0;
11374        /* Shift the result of the reduction.  */
11375        let yystate = self.yy_lr_goto_state(yystack.state_at(0), Self::yyr1_[i32_to_usize(yyn)]);
11376        yystack.push(yystate, yyval, yyloc);
11377        Ok(Self::YYNEWSTATE)
11378    }
11379
11380    // Print this symbol on YYOUTPUT.
11381    fn yy_symbol_print(&self, s: &str, yykind: &SymbolKind, yyvalue: &YYValue, yylocation: &YYLoc) {
11382        if  self.is_debug()  {
11383            self.yycdebug(
11384                &format!("{}{} {:?} ( {:?}: {:?} )", // " fix highlighting
11385                s,
11386                if yykind.code() < Self::YYNTOKENS_ { " token " } else { " nterm " },
11387                yykind.name(),
11388                yylocation,
11389                yyvalue
11390                )
11391            )
11392        }
11393    }
11394
11395    /// Parses given input. Returns true if the parsing was successful.
11396    #[allow(clippy::manual_range_contains)]
11397    pub fn parse(&mut self) -> bool {
11398        /* @$.  */
11399        let mut yyloc: YYLoc;
11400        
11401    /* Lookahead token kind.  */
11402    let mut yychar: i32 = Self::YYEMPTY_;
11403    /* Lookahead symbol kind.  */
11404    let mut yytoken = &DYMMY_SYMBOL_KIND;
11405
11406    /* State.  */
11407    let mut yyn: i32 = 0;
11408    let mut yylen: usize = 0;
11409    let mut yystate: i32 = 0;
11410    let mut yystack = YYStack::new();
11411    let mut label: i32 = Self::YYNEWSTATE;
11412
11413    /* The location where the error started.  */
11414    let mut yyerrloc: YYLoc = YYLoc { begin: 0, end: 0 };
11415
11416    /* Location. */
11417    let mut yylloc: YYLoc = YYLoc { begin: 0, end: 0 };
11418
11419    /* Semantic value of the lookahead.  */
11420    let mut yylval: YYValue = YYValue::new_uninitialized();
11421
11422        self.yycdebug("Starting parse");
11423        self.yyerrstatus_ = 0;
11424        self.yynerrs = 0;
11425
11426        /* Initialize the stack.  */
11427        yystack.push(yystate, yylval.clone(), yylloc);
11428
11429        loop {
11430            match label {
11431                // New state.  Unlike in the C/C++ skeletons, the state is already
11432                // pushed when we come here.
11433
11434                Self::YYNEWSTATE => {
11435                    if  self.is_debug()  {
11436                        self.yycdebug(&format!("Entering state {}", yystate));
11437                        eprintln!("{}", yystack);
11438                    }
11439
11440                    /* Accept? */
11441                    if yystate == Self::YYFINAL_ {
11442                        return true;
11443                    }
11444
11445                    /* Take a decision.  First try without lookahead.  */
11446                    yyn = Self::yypact_[i32_to_usize(yystate)];
11447                    if yy_pact_value_is_default(yyn) {
11448                        label = Self::YYDEFAULT;
11449                        continue;
11450                    }
11451
11452                    /* Read a lookahead token.  */
11453                    if yychar == Self::YYEMPTY_ {
11454                        self.yycdebug("Reading a token");
11455                        let token = self.next_token();
11456                        yychar = token.token_type;
11457                        yylloc = token.loc;
11458                        yylval = YYValue::from_token(token);
11459                    }
11460
11461                    /* Convert token to internal form.  */
11462                    yytoken = Self::yytranslate_(yychar);
11463                    self.yy_symbol_print("Next token is", yytoken, &yylval, &yylloc);
11464
11465                    if yytoken == SymbolKind::get(1) {
11466                        // The scanner already issued an error message, process directly
11467                        // to error recovery.  But do not keep the error token as
11468                        // lookahead, it is too special and may lead us to an endless
11469                        // loop in error recovery. */
11470                        yychar = Lexer::YYUNDEF;
11471                        yytoken = SymbolKind::get(2);
11472                        yyerrloc = yylloc;
11473                        label = Self::YYERRLAB1;
11474                    } else {
11475                        // If the proper action on seeing token YYTOKEN is to reduce or to
11476                        // detect an error, take that action.
11477                        yyn += yytoken.code();
11478                        if yyn < 0 || Self::YYLAST_ < yyn || Self::yycheck_[i32_to_usize(yyn)] != yytoken.code() {
11479                            label = Self::YYDEFAULT;
11480                        }
11481
11482                        /* <= 0 means reduce or error.  */
11483                        else {
11484                            yyn = Self::yytable_[i32_to_usize(yyn)];
11485                            if yyn <= 0 {
11486                                if yy_table_value_is_error(yyn) {
11487                                    label = Self::YYERRLAB;
11488                                } else {
11489                                    yyn = -yyn;
11490                                    label = Self::YYREDUCE;
11491                                }
11492                            } else {
11493                                /* Shift the lookahead token.  */
11494                                self.yy_symbol_print("Shifting", yytoken, &yylval, &yylloc);
11495
11496                                /* Discard the token being shifted.  */
11497                                yychar = Self::YYEMPTY_;
11498
11499                                /* Count tokens shifted since error; after three, turn off error status.  */
11500                                if self.yyerrstatus_ > 0 {
11501                                    self.yyerrstatus_ -= 1;
11502                                }
11503
11504                                yystate = yyn;
11505                                yystack.push(yystate, std::mem::take(&mut yylval), std::mem::take(&mut yylloc));
11506                                label = Self::YYNEWSTATE;
11507                            }
11508                        }
11509                    }
11510                    continue;
11511                }, // YYNEWSTATE
11512
11513                // yydefault -- do the default action for the current state.
11514                Self::YYDEFAULT => {
11515                    yyn = Self::yydefact_[i32_to_usize(yystate)];
11516                    if yyn == 0 {
11517                        label = Self::YYERRLAB;
11518                    } else {
11519                        label = Self::YYREDUCE;
11520                    }
11521                    continue;
11522                } // YYDEFAULT
11523
11524                // yyreduce -- Do a reduction.
11525                Self::YYREDUCE => {
11526                    yylen = i32_to_usize(Self::yyr2_[i32_to_usize(yyn)]);
11527                    label = match self.yyaction(yyn, &mut yystack, &mut yylen) {
11528                        Ok(label) => label,
11529                        Err(_) => Self::YYERROR
11530                    };
11531                    yystate = yystack.state_at(0);
11532                    continue;
11533                }, // YYREDUCE
11534
11535                // yyerrlab -- here on detecting error
11536                Self::YYERRLAB => {
11537                    /* If not already recovering from an error, report this error.  */
11538                    if self.yyerrstatus_ == 0 {
11539                        self.yynerrs += 1;
11540                        if yychar == Self::YYEMPTY_ {
11541                            yytoken = &DYMMY_SYMBOL_KIND;
11542                        }
11543                        self.report_syntax_error(&yystack, yytoken, yylloc);
11544                    }
11545                    yyerrloc = yylloc;
11546                    if self.yyerrstatus_ == 3 {
11547                        // If just tried and failed to reuse lookahead token after an error, discard it.
11548
11549                        if yychar <= Lexer::END_OF_INPUT {
11550                            /* Return failure if at end of input.  */
11551                            if yychar == Lexer::END_OF_INPUT {
11552                                return false;
11553                            }
11554                        }
11555                        else {
11556                            yychar = Self::YYEMPTY_;
11557                        }
11558                    }
11559
11560                    // Else will try to reuse lookahead token after shifting the error token.
11561                    label = Self::YYERRLAB1;
11562                    continue;
11563                }, // YYERRLAB
11564
11565                // errorlab -- error raised explicitly by YYERROR.
11566                Self::YYERROR => {
11567                    /* Do not reclaim the symbols of the rule which action triggered
11568                    this YYERROR.  */
11569                    yystack.pop_n(yylen);
11570                    yylen = 0;
11571                    yystate = yystack.state_at(0);
11572                    label = Self::YYERRLAB1;
11573                    continue;
11574                }, // YYERROR
11575
11576                // yyerrlab1 -- common code for both syntax error and YYERROR.
11577                Self::YYERRLAB1 => {
11578                    self.yyerrstatus_ = 3;       /* Each real token shifted decrements this.  */
11579
11580                    // Pop stack until we find a state that shifts the error token.
11581                    loop {
11582                        yyn = Self::yypact_[i32_to_usize(yystate)];
11583                        if !yy_pact_value_is_default(yyn) {
11584                            yyn += SymbolKind { value: SymbolKind::S_YYerror }.code();
11585                            if (0..=Self::YYLAST_).contains(&yyn) {
11586                                let yyn_usize = i32_to_usize(yyn);
11587                                if Self::yycheck_[yyn_usize] == SymbolKind::S_YYerror {
11588                                    yyn = Self::yytable_[yyn_usize];
11589                                    if 0 < yyn {
11590                                        break;
11591                                    }
11592                                }
11593                            }
11594                        }
11595
11596                        // Pop the current state because it cannot handle the error token.
11597                        if yystack.len() == 1 {
11598                            return false;
11599                        }
11600
11601                        yyerrloc = *yystack.location_at(0);
11602                        yystack.pop();
11603                        yystate = yystack.state_at(0);
11604                        if  self.is_debug()  {
11605                            eprintln!("{}", yystack);
11606                        }
11607                    }
11608
11609                    if label == Self::YYABORT {
11610                        /* Leave the switch.  */
11611                        continue;
11612                    }
11613
11614                    /* Muck with the stack to setup for yylloc.  */
11615                    yystack.push(0, YYValue::new_uninitialized(), yylloc);
11616                    yystack.push(0, YYValue::new_uninitialized(), yyerrloc);
11617                    yyloc = make_yylloc(&yystack, 2);
11618                    yystack.pop_n(2);
11619
11620                    /* Shift the error token.  */
11621                    self.yy_symbol_print("Shifting", SymbolKind::get(Self::yystos_[i32_to_usize(yyn)]), &yylval, &yyloc);
11622
11623                    yystate = yyn;
11624                    yystack.push(yyn, yylval.clone(), yyloc);
11625                    label = Self::YYNEWSTATE;
11626                    continue;
11627                }, // YYERRLAB1
11628
11629                // Accept
11630                Self::YYACCEPT => {
11631                    return true;
11632                }
11633
11634                // Abort.
11635                Self::YYABORT => {
11636                    return false;
11637                },
11638
11639                _ => {
11640                    panic!("internal bison error: unknown label {}", label);
11641                }
11642            }
11643        }
11644    }
11645}
11646
11647// Whether the given `yypact_` value indicates a defaulted state.
11648fn yy_pact_value_is_default(yyvalue: i32) -> bool {
11649    yyvalue == YYPACT_NINF_
11650}
11651
11652// Whether the given `yytable_`
11653// value indicates a syntax error.
11654// yyvalue: the value to check
11655fn yy_table_value_is_error(yyvalue: i32) -> bool {
11656    yyvalue == YYTABLE_NINF_
11657}
11658
11659const YYPACT_NINF_: i32 = -1039;
11660const YYTABLE_NINF_: i32 = -776;
11661
11662impl  Parser  {
11663
11664/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
11665   STATE-NUM.  */
11666  #[allow(non_upper_case_globals)]
11667const yypact_: &'static [i32] = &[  -1039,   124,  4301, -1039,  8635, -1039, -1039, -1039, 12927, -1039,
11668   -1039, -1039, -1039, -1039, -1039, -1039,  8910,  8910, -1039, -1039,
11669   -1039,  7630,  7338, -1039, -1039, -1039, -1039,   579, 12782,    24,
11670      72,   106, -1039, -1039, -1039,  6462,  7192, -1039, -1039,  6608,
11671   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, 11104, 11104,
11672   11104, 11104,    94,  5491,  9047,  9595, 10006,  4455, -1039, 12637,
11673   -1039, -1039, -1039,   134,   145,   197,   256, 11104, 11241,  1173,
11674   -1039,   520, -1039,  1294, -1039,   484,   617,   617, -1039, -1039,
11675     176,   213,   314, -1039,   290, 11515, -1039,   334,  3059,   465,
11676     569,   641, -1039, 11378, 11378, -1039, -1039, 10143, 11637, 11759,
11677   12004, 12492,  8910, -1039,   839,    60, -1039, -1039,   444, -1039,
11678   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11679   -1039,   292,   303, -1039,   533,   593, -1039, -1039, -1039, -1039,
11680   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11681   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11682   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11683   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11684   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11685   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11686   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11687   -1039, -1039, -1039, -1039, -1039,   359, -1039, -1039, -1039,   448,
11688   11104,   544,  5629, 11104, 11104, 11104, -1039, 11104,   617,   617,
11689   -1039,   511, 14388,   576, -1039, -1039,   595,   741,     6,    40,
11690     605,    43,   643, -1039, -1039,  8772, -1039,  8910,  9184, -1039,
11691   -1039, 10281, -1039, 11378,   510, -1039,   606,  5767, -1039,  5905,
11692   -1039, -1039,   630,   675,   176, -1039,   748, -1039,   700, 14461,
11693   14461,   705, -1039, -1039,  5491,   676,   520, -1039,  1294,    24,
11694     672, -1039,  1294,    24,   682,    27,   483, -1039,   576,   708,
11695     483, -1039,    24,   803, 12126,  1173,   715,   715,   743, -1039,
11696     768,   795,   814,   844, -1039, -1039, -1039, -1039, -1039,   464,
11697   -1039,   720,   862,   650, -1039, -1039, -1039, -1039, -1039, -1039,
11698   -1039,   789, -1039, -1039, -1039, -1039,  8361, 11378, 11378, 11378,
11699   11378,  9047, 11378, 11378,  1440,   765,   773,  4639,  1440, -1039,
11700     785,  4639, -1039, -1039, -1039,   818, -1039, -1039, -1039, -1039,
11701   -1039, 10419, -1039,  5491, 11881,   792, 10419, -1039, 11104, 11104,
11702   11104, 11104, 11104, -1039, -1039, 11104, 11104, 11104, 11104, 11104,
11703   11104, 11104, 11104, -1039, 11104, 11104, -1039, -1039, 11104, 11104,
11704   11104, 11104, 11104, 11104, 11104, 11104, 11104, -1039, -1039, 13261,
11705    8910, 13334,  4639,   484,   104,   104,  6043, 11378,  6043,   520,
11706   -1039,   782,   878, -1039, -1039,   983,   921,    89,   146,   286,
11707     830,   899, 11378,    91, -1039,   816,  1008, -1039, -1039, -1039,
11708   -1039,   233,   282,   284,   385,   442,   642,   731,   825,   833,
11709   -1039, -1039, -1039, -1039,   847, -1039, -1039, -1039, 14356, -1039,
11710   -1039, 11241, 11241, -1039, -1039,    50, -1039, -1039, -1039,   766,
11711     822,   828, 11104, 11104,  9321, -1039, -1039, 13407,  8910, 13480,
11712   11104, 11104,  9732, -1039,    24,   851, -1039, -1039, 11104,    24,
11713   -1039,   853,    24,   868, -1039,    75, -1039, -1039, -1039, -1039,
11714   -1039, 12927, -1039, 11104,   842,   879, 13407, 13480, 11104,    72,
11715      24, -1039, -1039,  8498,   888,    24, -1039, -1039,  9869, -1039,
11716   -1039, 10006, -1039, -1039, -1039,   606,  1035, -1039,   895, -1039,
11717   -1039, 12126, 13553,  8910, 13626,  1268, -1039, -1039, -1039, -1039,
11718   -1039, -1039, -1039, -1039, -1039, -1039,   866,    36,   897,    71,
11719   11104, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11720   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,  1308, -1039,
11721   -1039, -1039, -1039, -1039,   901, -1039, -1039,    24, -1039, -1039,
11722   -1039,   900, -1039,   903, 11104, -1039,   908,   102, -1039, -1039,
11723   -1039,   913,   970,   916,   980, -1039, 11241,   963,  1034,   520,
11724   11241,   963, -1039, -1039, -1039, -1039, -1039, 11104, -1039,   928,
11725     930,  1012, -1039,    24, 12126,   932, -1039, -1039, -1039,  1017,
11726     936,  3757, -1039, -1039, -1039,  1038,   271,  3665,   700,  4153,
11727    4153,  4153,  4153,  4630,  3201,  4153,  4153, 14461, 14461,   616,
11728     616,  3665,  1174,  1478,  1174,   435,   435,   700,   700,   700,
11729    3086,  1694,  1694,  7776,  6754,  8068,  6900, -1039, -1039,   675,
11730   -1039,    24,   947,   804, -1039,   846, -1039, -1039,  7484,   963,
11731   -1039,  4790,  1070,  5204,   963,    93,   963,  1059,  1069,   340,
11732   13699,  8910, 13772, -1039,   484, -1039,  1035, -1039, -1039, -1039,
11733   13845,  8910, 13918,  4639, 11378, -1039, -1039, -1039, -1039, -1039,
11734    2736, -1039,  3317, -1039, -1039, -1039, 12927, 11104, 11104, 11104,
11735   -1039, 11104,   576, -1039,   643,  6316,  7046,    24,   294,   306,
11736   -1039, -1039, -1039, -1039,  9458, -1039,  9732, -1039, -1039, 11378,
11737   14388, -1039, -1039,   675,   675, -1039, -1039,   688, -1039, -1039,
11738     483, 12126,   895,   452,   639,    24,   566,   571,  1440, -1039,
11739   -1039, -1039,  1150, -1039,   480, -1039,   951, -1039, -1039,   506,
11740     959, -1039,   700,  1308,  1275, -1039,   974,    24,   976, -1039,
11741     149, -1039, -1039, -1039, 11104,   979,  1440, -1039, -1039,   406,
11742   -1039, -1039, -1039,  1440, -1039, -1039,  1740, -1039, -1039,  1066,
11743    4120, -1039, -1039, -1039, 10556,   324, -1039, -1039,  1076, 13177,
11744   -1039,   997,   996, -1039,   963,   996,   963,  1002, 10693,  9047,
11745   -1039,   895, 12126,  9047, 11241, 11104, 13991,  8910, 14064, -1039,
11746   -1039, -1039,  2470,  2470,   801, -1039,  3442,    47,  1078, -1039,
11747     673, -1039, -1039,   151, -1039,  1003, -1039, -1039, -1039,  1013,
11748   -1039,  1018, -1039, 13135, -1039, -1039, -1039, -1039,   811, -1039,
11749   -1039, -1039,   258, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11750   -1039, -1039,   186, -1039,   987, 11241, 11241, -1039,   818,  1009,
11751    1098,  9321, 11241, 11241, -1039, -1039,   818, -1039, -1039,   869,
11752   -1039,  1124, -1039, -1039, -1039, -1039, -1039, -1039,  1069,   963,
11753   -1039, 10830,   963,    59,   309,    24,   343,   372,  6043,   520,
11754   11378,  4639,   966,   639, -1039,    24,   963,    75, 13072,    60,
11755     213, -1039, -1039, -1039, -1039, 11104, 11104,   491, 11104, 11104,
11756      24,  1028,    75, -1039, -1039,   574,    24,    70, -1039, -1039,
11757   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,    24,
11758   -1039,  1308, -1039,  1186, -1039, -1039, -1039, -1039, -1039,  1031,
11759    1036, -1039,  1113,   901,  1042, -1039,  1043, -1039,  1042, 11104,
11760   11104,   928, -1039,  1071, -1039, -1039, -1039,  6043,  5353, -1039,
11761   -1039, 11104, 11104, -1039,  2257,  5905, -1039, -1039,  1046, -1039,
11762    4639, -1039, 11104,  1049, -1039,   895, -1039, 14388,  7922,  8214,
11763      24,   665,   689, -1039, -1039, -1039, -1039, 13135,   416,    24,
11764    4028, -1039,    24,  1052, -1039,   459,  1053, -1039, -1039,   893,
11765   -1039, -1039, -1039, -1039, 11378, -1039,  1129,  4028, 13135, 13135,
11766     459,  1084,  2470,  2470,   801,   561,    22,  3665,  3665, -1039,
11767   11104, -1039, -1039, -1039, -1039, -1039, -1039, 11241, -1039, -1039,
11768   -1039, -1039, -1039, -1039,  6043, 11378,   963, -1039, -1039,   963,
11769    3665,   963, -1039, 11104, -1039,   150, -1039,   374,   963,  4639,
11770     520,   963, -1039, -1039, -1039, -1039, -1039, -1039, 11104, -1039,
11771    9732, -1039,  1083,  1058, -1039, -1039, -1039, -1039, -1039, -1039,
11772    1065,  1077,  1440, -1039,  1740, -1039, -1039,  1740, -1039,  1740,
11773   -1039, -1039, 14388, 14388, 12248,   104, -1039, -1039,  1182, 14388,
11774   14388,   901, -1039,    24,  1089,   900,  1095, 12370, -1039,  1097,
11775   -1039,  1099,  1112, -1039, -1039, -1039, -1039,  1119,   711,     4,
11776   -1039,  1084,  1125,  1127, -1039, -1039, -1039,    24, -1039, -1039,
11777    1146, -1039, -1039,  1131, -1039,  1133, -1039, -1039, -1039, -1039,
11778   -1039, -1039, -1039, -1039,    24,    24,    24,    24,    24,    24,
11779   14388, -1039, -1039, -1039,   104, -1039, -1039,   104,   960, -1039,
11780   -1039, 10967,  4928, -1039,   963, -1039, -1039, -1039,  1367,  4639,
11781    5905, -1039,  1186,  1186,  1042,  1134,  1042,  1042,  1198, -1039,
11782    1044,   160,   200,   237,  4639, -1039, -1039,  1135, -1039, 12370,
11783    2230, -1039, -1039,  1205,  1051,   406, -1039,  2230, -1039,  1865,
11784   -1039, -1039, 13135, -1039,   563, -1039, -1039, 13135,  4028, -1039,
11785   -1039, -1039, -1039, -1039, -1039,  4790, -1039, 11378, 11378, 11104,
11786   -1039,   633, -1039, -1039,   501, -1039, -1039,   963,  1145,  6181,
11787    1077, -1039,  1740, -1039, -1039, -1039,   270, 14137,  8910, 14210,
11788    1034, -1039,  1051, -1039,  1151,  1154, -1039, 14283, -1039,   901,
11789    1155, -1039,  1157,  1155,  1160,  1160, -1039, -1039,   869,  5066,
11790   -1039, -1039, -1039, -1039, -1039, -1039,  1367, -1039, -1039, -1039,
11791    1166,  1042,    87,   183,    24,   276,   280, -1039,  2230, -1039,
11792    1865, -1039,  1152,  1156, -1039,  1865, -1039,  1865, -1039, -1039,
11793   13135, -1039,   493, -1039, -1039, -1039,   367,  1155,  1169,  1155,
11794    1155, -1039, -1039, -1039, -1039,  1865, -1039, -1039, -1039,  1155,
11795   -1039 ];
11796
11797/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
11798   Performed when YYTABLE does not specify something else to do.  Zero
11799   means the default is an error.  */
11800  #[allow(non_upper_case_globals)]
11801const yydefact_: &'static [i32] = &[      2,     0,     0,     1,     0,   369,   370,   371,     0,   362,
11802     363,   364,   367,   365,   366,   368,   357,   358,   359,   360,
11803     380,   290,   290,   650,   649,   651,   652,   763,     0,   763,
11804       0,     0,   654,   653,   655,   747,   749,   646,   645,   748,
11805     648,   637,   638,   639,   640,   588,   660,   661,     0,     0,
11806       0,     0,     0,     0,   318,   775,   775,   102,   439,   608,
11807     608,   610,   612,     0,     0,     0,     0,     0,     0,     0,
11808       3,   761,     6,     9,    34,    39,   669,   669,    55,    73,
11809     290,    72,     0,    90,     0,    94,   104,     0,    64,   242,
11810     261,     0,   316,     0,     0,    70,    70,   761,     0,     0,
11811       0,     0,   327,   338,    74,   336,   305,   306,   587,   589,
11812     307,   308,   309,   311,   310,   312,   586,   627,   628,   585,
11813     635,   656,   657,   313,     0,   314,    78,     5,     8,   183,
11814     194,   184,   207,   180,   200,   190,   189,   210,   211,   205,
11815     188,   187,   182,   208,   212,   213,   192,   181,   195,   199,
11816     201,   193,   186,   202,   209,   204,   203,   196,   206,   191,
11817     179,   198,   197,   178,   185,   176,   177,   173,   174,   175,
11818     133,   135,   134,   168,   169,   164,   146,   147,   148,   155,
11819     152,   154,   149,   150,   170,   171,   156,   157,   161,   165,
11820     143,   145,   151,   153,   172,   144,   158,   159,   160,   162,
11821     163,   167,   166,   138,   140,    27,   136,   137,   139,     0,
11822     744,     0,     0,     0,     0,   293,   608,     0,   669,   669,
11823     285,     0,   268,   296,    88,   289,   775,     0,   656,   657,
11824       0,   314,   775,   740,    89,   763,    86,     0,   775,   461,
11825      85,   763,   764,     0,     0,    22,   254,     0,    10,     0,
11826     357,   358,   330,   462,     0,   236,     0,   327,   237,   227,
11827     228,   324,    18,    20,     0,     0,   761,    16,    19,   763,
11828      92,    15,   320,   763,     0,   768,   768,   269,     0,     0,
11829     768,   738,   763,     0,     0,     0,   669,   669,   100,   361,
11830       0,   110,   111,   118,   440,   632,   631,   633,   630,     0,
11831     629,     0,     0,     0,   595,   604,   600,   606,   249,    59,
11832     248,   636,   771,   772,     4,   773,   762,     0,     0,     0,
11833       0,     0,     0,     0,   692,     0,   668,     0,   692,   666,
11834       0,     0,   372,   464,   455,    79,   466,   335,   373,   449,
11835     451,     0,   106,     0,    98,    95,     0,    62,     0,     0,
11836       0,     0,     0,   264,   265,     0,     0,     0,     0,   225,
11837     226,     0,     0,    60,     0,     0,   262,   263,     0,     0,
11838       0,     0,     0,     0,     0,     0,     0,   757,   758,     0,
11839     775,     0,     0,    69,     0,     0,     0,     0,     0,   761,
11840     345,   762,     0,   391,   390,     0,     0,   656,   657,   314,
11841     128,   129,     0,     0,   131,   664,     0,   656,   657,   314,
11842     353,   203,   196,   206,   191,   173,   174,   175,   133,   134,
11843     736,    66,    65,   735,     0,    87,   760,   759,     0,   337,
11844     590,     0,     0,   141,   743,   324,   297,   746,   292,     0,
11845       0,     0,     0,     0,     0,   286,   295,     0,   775,     0,
11846       0,     0,     0,   287,   763,     0,   329,   291,   693,   763,
11847     281,   775,   763,   775,   280,   763,   334,    58,    24,    26,
11848      25,     0,   331,     0,     0,     0,     0,     0,     0,     0,
11849     763,   322,    14,   762,    91,   763,   319,   325,   770,   769,
11850     270,   770,   272,   326,   739,     0,   117,   108,   103,   636,
11851     668,     0,     0,   775,     0,   692,   614,   634,   617,   615,
11852     609,   591,   592,   611,   593,   613,     0,     0,     0,     0,
11853       0,   774,     7,    28,    29,    30,    31,    32,    56,    57,
11854     699,   696,   695,   694,   697,   705,   714,   693,     0,   726,
11855     715,   730,   729,   725,   775,   716,   691,   763,   675,   698,
11856     700,   701,   703,   677,   707,   712,   775,   718,   404,   403,
11857     723,   677,   728,   677,   732,   674,     0,     0,   775,     0,
11858       0,     0,   468,    76,    80,   470,   470,     0,    35,   301,
11859       0,    38,   300,   763,     0,    96,   107,    54,    40,    52,
11860       0,   273,   296,   214,    36,     0,   314,     0,   234,   241,
11861     243,   244,   245,   252,   253,   246,   247,   223,   224,   250,
11862     251,     0,   238,   240,   239,   229,   230,   231,   232,   233,
11863     763,   266,   267,   747,   749,   748,   751,   460,   750,   290,
11864     458,   763,   775,   747,   749,   748,   751,   459,   290,     0,
11865     382,     0,   381,     0,     0,     0,     0,   343,     0,   324,
11866       0,   775,     0,    70,   351,   128,   129,   130,   662,   349,
11867       0,   775,     0,     0,     0,   755,   756,    67,   747,   748,
11868     290,    41,   273,   215,    51,   222,     0,     0,     0,     0,
11869     742,     0,   298,   294,   775,   747,   748,   763,   747,   748,
11870     741,   328,   765,   275,   282,   277,   284,   333,    23,     0,
11871     255,    11,    33,     0,   775,   221,    21,    93,    17,   321,
11872     768,     0,   101,   752,   116,   763,   747,   748,   692,   441,
11873     444,   618,     0,   594,     0,   597,     0,   602,   599,     0,
11874       0,   603,   235,     0,   402,   394,   396,   763,   399,   392,
11875       0,   673,   734,   667,     0,     0,     0,   684,   706,     0,
11876     672,   546,   717,     0,   687,   727,     0,   689,   731,    47,
11877     257,   379,   355,   374,   775,   775,   577,   670,    49,   259,
11878     356,     0,   775,   468,     0,   775,     0,   304,     0,     0,
11879     105,    99,     0,     0,     0,     0,     0,   775,     0,   569,
11880     575,   542,     0,     0,     0,   516,   763,   513,   530,   608,
11881       0,   568,    63,   487,   493,   495,   497,   491,   490,   526,
11882     492,   535,   538,   541,   547,   548,   537,   500,   549,   501,
11883     554,   555,   556,   559,   560,   561,   562,   563,   565,   564,
11884     566,   567,   545,    61,     0,     0,     0,   457,    83,     0,
11885     463,   282,     0,     0,   279,   456,    81,   278,   317,   775,
11886     383,   775,   341,   385,    71,   384,   342,   479,     0,     0,
11887     376,     0,     0,   752,   323,   763,   747,   748,     0,     0,
11888       0,     0,   128,   129,   132,   763,     0,   763,     0,   452,
11889      75,   142,   745,   299,   288,     0,     0,   463,     0,     0,
11890     763,   775,   763,   271,   109,   463,   763,     0,   619,   623,
11891     624,   625,   616,   626,   596,   598,   605,   601,   607,   763,
11892     401,     0,   702,     0,   733,   719,   406,   676,   704,   677,
11893     677,   713,   718,   775,   677,   724,   677,   701,   677,     0,
11894       0,   578,   579,   775,   580,   375,   377,     0,     0,    13,
11895     584,     0,     0,   465,   763,     0,   430,   429,     0,   467,
11896       0,   450,     0,   302,    37,    97,    53,   274,   747,   748,
11897     763,   747,   748,   557,   558,   129,   573,     0,   518,   763,
11898     519,   523,   763,     0,   512,     0,     0,   515,   529,     0,
11899     570,   642,   641,   643,     0,   571,     0,   488,     0,     0,
11900     536,   540,   552,   553,     0,   499,   498,     0,     0,   544,
11901       0,    46,   219,    45,   220,    84,   766,     0,    43,   217,
11902      44,   218,    82,   378,     0,     0,     0,   386,   388,     0,
11903       0,     0,   347,     0,   472,     0,   346,   463,     0,     0,
11904       0,     0,   463,   354,   737,    68,   453,   454,     0,   276,
11905     283,   332,     0,   433,   447,   445,   442,   620,   393,   395,
11906     397,   400,     0,   680,     0,   682,   671,     0,   688,     0,
11907     685,   690,    48,   258,     0,     0,   582,   583,   775,    50,
11908     260,   775,   428,   763,     0,   701,   412,   709,   710,   775,
11909     721,   412,   412,   410,   469,    77,   471,   303,   463,   763,
11910     510,   533,   521,   520,   511,   524,   608,   763,   767,   543,
11911       0,   494,   489,   526,   496,   527,   531,   539,   534,   550,
11912     551,   574,   509,   505,   763,   763,   763,   763,   763,   763,
11913     256,    42,   216,   389,     0,   339,   340,     0,   484,   344,
11914     473,     0,     0,   348,     0,   663,   350,   443,     0,     0,
11915       0,   621,     0,     0,   677,   677,   677,   677,     0,   581,
11916       0,   656,   657,   314,     0,    12,   409,     0,   431,     0,
11917     413,   421,   419,     0,   708,     0,   408,     0,   424,     0,
11918     426,   517,     0,   525,     0,   514,   572,     0,     0,   502,
11919     503,   504,   506,   507,   508,     0,   480,     0,     0,     0,
11920     474,   775,   352,   437,   763,   435,   438,     0,     0,     0,
11921     398,   681,     0,   678,   683,   686,   324,     0,   775,     0,
11922     775,   432,   720,   411,   412,   412,   324,     0,   711,   775,
11923     412,   722,   412,   412,   522,   527,   528,   532,   775,     0,
11924     485,   486,   475,   477,   478,   476,     0,   434,   448,   446,
11925       0,   677,   752,   323,   763,   747,   748,   576,     0,   416,
11926       0,   418,   752,   323,   407,     0,   425,     0,   422,   427,
11927       0,   387,   775,   436,   622,   679,   463,   412,   412,   412,
11928     412,   482,   483,   481,   417,     0,   414,   420,   423,   412,
11929     415 ];
11930
11931/* YYPGOTO[NTERM-NUM].  */
11932  #[allow(non_upper_case_globals)]
11933const yypgoto_: &'static [i32] = &[  -1039, -1039, -1039,  1048, -1039,    16,   817,  -306,   217, -1039,
11934     823, -1039,   126, -1039,  -225,  -340,    25, -1039, -1039,   421,
11935    2287,  2600, -1039,   -65,   -85, -1039,   -28, -1039,  -232, -1039,
11936    1287,    -9,  1202,  -149,   -27,   -49, -1039,  -419,    14,  2729,
11937    -369,  1201,   -56,    -1, -1039, -1039,     2, -1039,  3595, -1039,
11938    1219, -1039,  1138, -1039,  -273,     9,   644,  -347,    80,    -7,
11939   -1039,  -397,  -186,    90, -1039,  -309,   -41, -1039, -1039, -1039,
11940   -1039, -1039, -1039, -1039, -1039, -1039,   727, -1039, -1039, -1039,
11941   -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11942   -1039, -1039,   547, -1039,  1184,  1706,  -379, -1039,    81,  -782,
11943   -1039,  -861,  -832,   588,   431,  -888,   268, -1039,   400,   -22,
11944   -1039, -1039,   581, -1039,  -882, -1039,   118,   470, -1039, -1039,
11945   -1039, -1039, -1039, -1039, -1039,   478, -1039, -1039, -1039,   -96,
11946   -1039, -1039,   594, -1039,   796, -1039, -1039,  -819, -1039,   111,
11947   -1039, -1039, -1039, -1039,  -598,  -363, -1039, -1039, -1039, -1039,
11948     386, -1039, -1039,     7, -1039,  -545,  -702,  -854,  -619,  -771,
11949    -243, -1039,   389, -1039, -1039,  -123,   392, -1039,  -604,   397,
11950   -1039, -1039, -1039,   175, -1039, -1039,   318,   485,   891, -1039,
11951    1279,   907,  1014,  1176, -1039,   875,  1451, -1039,  1464,  1797,
11952   -1039, -1039,   -59, -1039, -1039,  -142, -1039, -1039, -1039, -1039,
11953   -1039, -1039, -1039,    -4, -1039, -1039, -1039, -1039,     1, -1039,
11954     207,    10,  1293,  3042,  2181, -1039, -1039,    21,   651,     0,
11955   -1039,  -256,  -395,  -249,  -216, -1015,  -487,  -305,  -711,  -371,
11956     -72,   647,   232, -1039, -1039,  -471, -1039,  -708,  -688, -1038,
11957     238,   655, -1039,  -615, -1039,   476,  -539, -1039, -1039, -1039,
11958      32,  -431,  -301,  -296, -1039, -1039,   -86, -1039,   -54,   156,
11959     848,   295,   308,  -238,   -69,    19,    -2 ];
11960
11961/* YYDEFGOTO[NTERM-NUM].  */
11962  #[allow(non_upper_case_globals)]
11963const yydefgoto_: &'static [i32] = &[      0,     1,     2,    70,    71,    72,   248,   567,   568,   266,
11964     267,   479,   268,   471,    74,   588,    75,   611,   597,   421,
11965     218,   219,   878,   384,   386,   387,    78,    79,   574,   773,
11966     254,    81,    82,   269,    83,    84,    85,   498,    86,   221,
11967     404,   405,   203,   204,   205,   676,   626,   207,    88,   473,
11968     375,    89,   223,   274,   593,   627,   845,   459,   460,   236,
11969     237,   225,   445,   632,   581,   582,    90,   382,   273,   485,
11970     699,   858,   648,   871,   869,   663,   256,    92,    93,    94,
11971      95,    96,    97,    98,    99,   100,   101,   336,   339,   764,
11972     937,   861,  1014,  1015,   762,   257,   641,   854,  1016,  1017,
11973     396,   735,   736,   737,   738,   544,   744,   745,  1213,  1161,
11974    1162,  1073,   945,   946,  1042,  1194,  1195,   103,   294,   505,
11975     897,   719,  1046,  1140,  1139,   340,   576,   104,   105,   337,
11976     572,   575,   771,   772,   774,   775,  1025,   862,  1235,   859,
11977    1020,  1229,  1273,  1127,   802,  1091,   804,   805,   997,   998,
11978     806,   975,   967,   969,   970,   971,   808,   809,  1105,   973,
11979     810,   811,   812,   813,   814,   545,   816,   817,   818,   819,
11980     820,   821,   822,   765,   933,  1065,   939,   106,   107,   108,
11981     109,   110,   111,   112,   516,   724,   113,   518,   114,   115,
11982     517,   519,   299,   302,   303,   510,   722,   721,   898,  1047,
11983    1141,  1199,   902,   116,   117,   300,   118,   119,   120,   985,
11984     228,   229,   123,   230,   231,   659,   870,   325,   326,   327,
11985     328,   917,   747,   547,   548,   549,   550,   927,   552,   553,
11986     554,   555,  1078,  1079,   556,   557,   558,   559,   560,  1080,
11987    1081,   561,   562,   563,   564,   565,   741,   424,   664,   279,
11988     463,   233,   126,   703,   630,   667,   662,   428,   314,   455,
11989     456,   840,   977,   490,   642,   391,   271 ];
11990
11991/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
11992   positive, shift that token.  If negative, reduce the rule whose
11993   number is the opposite.  If YYTABLE_NINF, syntax error.  */
11994  #[allow(non_upper_case_globals)]
11995const yytable_: &'static [i32] = &[    127,   301,   315,   298,   208,   381,   643,   220,   220,   429,
11996     206,   388,   122,   833,   122,   240,   289,   750,   427,   551,
11997     128,   690,   462,   551,   208,   571,   270,   245,   315,   385,
11998     206,   239,   389,   631,   657,   918,   345,   594,   492,  1021,
11999     309,   923,   494,   390,   289,   422,   453,   683,   232,   232,
12000    1049,   739,   807,   277,   281,   683,  1071,   289,   289,   289,
12001     690,   206,  1074,   122,   122,   925,   807,   292,   546,  1019,
12002     311,   288,   546,   335,   329,   329,   639,   331,   628,   569,
12003     628,  1051,   712,   629,  -123,   638,   332,   276,   280,   334,
12004     316,   671,   674,   220,   972,   292,   224,   234,   330,  1044,
12005    -123,   687,   726,   206,   986,  -658,   226,   226,   398,   408,
12006     408,   408,   322,   323,  -119,   480,  1092,   640,   383,   383,
12007     853,   587,   383,  1196,     3,  -763,   832,   628,    73,  1221,
12008      73,   920,   670,  1103,   232,  -119,   751,   730,   926,  -659,
12009     832,   449,   451,   655,   242,   275,   628,   656,   628,   478,
12010     261,   629,   488,   638,   752,   727,   715,   439,   673,   675,
12011     513,   515,   242,   640,   242,   781,   754,   489,   757,  -120,
12012     477,  -120,  -127,  -119,  -763,   628,   628,   673,   675,  -126,
12013     272,   704,   425,   243,  -114,   246,   333,   242,   963,   964,
12014     731,  1157,   226,  1045,   583,  -747,  -125,   315,   247,  1093,
12015     551,   628,   332,   628,   504,   705,   587,   587,   704,   121,
12016    1221,   121,   482,  -120,  -110,   242,   329,   329,  1106,   331,
12017     751,  1196,   122,  -747,   446,  -123,   220,  -123,   220,   220,
12018     446,   312,   249,   313,   803,   497,   464,   270,   999,   440,
12019     441,   338,   312,   289,   313,   127,   739,   910,   803,   546,
12020    -127,   986,   523,   524,   525,   526,   720,   122,   541,   122,
12021     121,   121,   239,   334,   291,   690,   465,   232,   467,   232,
12022     265,  -111,  1071,   304,   122,  1131,   987,   453,   922,  1071,
12023     542,  1071,  1049,  -126,   305,   483,   499,   331,   312,  -122,
12024     313,   874,   291,  -124,   292,  1115,  1118,   683,  -119,   683,
12025    -119,  -650,   333,   289,   865,   397,   407,   407,   407,   652,
12026    1200,  -127,   238,   578,   875,   454,   270,   457,   589,  -748,
12027     315,  -125,   645,  -125,  1226,   226,   122,   226,   461,  1082,
12028    -650,   122,   522,   935,  -125,   647,   306,   122,  -120,   936,
12029    -120,   122,   383,   383,   383,   383,   918,   528,   529,   628,
12030    -649,   628,  -651,   122,   292,   994,   704,   876,   585,   628,
12031    1071,   628,  1071,   955,   925,  -126,   704,  1071,  -122,  1071,
12032     432,   220,  1234,    73,   725,  -127,   725,  -127,   464,  -649,
12033    -121,  -651,   924,   636,  1056,   928,   995,  1071,  1109,  1110,
12034     637,  -658,   122,   888,   996,   307,   122,  -124,   122,  -121,
12035    -127,  1106,  -659,   589,   589,   889,  1106,  1227,  -126,  1233,
12036    -126,  -118,   383,   551,  -122,   342,  -122,  -110,  -124,   121,
12037    -124,  -119,  1128,  -122,   739,   966,   739,   654,  -111,   265,
12038     636,   580,  -120,   968,  -116,  -124,   580,  1145,   495,   220,
12039     960,   551,    73,   341,   683,  -748,   464,   527,   551,   918,
12040     991,   636,   497,  -652,   121,   932,   121,  1219,   637,   446,
12041     289,   446,   546,   346,   535,  -117,   475,   208,  -113,   896,
12042     698,   121,   893,   206,   815,   807,   684,  -114,   890,   636,
12043    1271,   265,  -652,   536,   433,   628,   637,   628,   815,  1227,
12044     629,   291,   638,   122,   220,  1001,  1003,  -115,   884,  -112,
12045     767,   464,  1008,  1010,   832,  -121,   636,  -121,   936,   788,
12046    -654,   292,   348,   637,   540,   541,   986,   791,   857,   832,
12047     710,   322,   323,   121,  1053,  1055,   832,   832,   121,  1058,
12048     506,  1060,  1156,  1061,   121,   497,   536,   542,   121,  -654,
12049    1166,  -533,   742,   289,   918,  1215,   506,   353,   354,   832,
12050     121,   291,  1222,  1224,   742,  -114,    60,   759,  1225,   587,
12051     265,   768,  1002,  1004,   468,  1031,   766,   540,   868,  1009,
12052    1011,  1096,   506,  1076,   469,   470,   855,  -114,   371,   372,
12053     373,  -114,   905,   507,   241,   508,   509,   905,  -747,   121,
12054    1038,  -113,  -114,   121,   292,   121,  -115,   366,   367,  -112,
12055     435,   508,   509,   644,  1089,   646,  1005,   831,   491,   690,
12056     587,   587,  1002,  1004,  1012,  1009,  1011,   587,   587,   904,
12057    -121,   831,   838,   489,   968,  1111,  1236,   508,   509,   506,
12058     446,   846,   431,  1268,   968,   968,   847,  -361,   837,  1075,
12059     442,   242,   220,   683,  1086,   907,  1132,   844,   936,   464,
12060     860,   122,   220,   122,   636,   739,   739,   803,   312,   464,
12061     313,   637,   894,   880,   636,  -361,  -361,  1121,   847,  -113,
12062     289,   637,   208,   122,  -115,   881,   443,  -112,   206,   844,
12063    1254,  1144,   446,  1146,   508,   509,  1154,  1099,  1147,   877,
12064     121,  -113,   432,   348,   922,  -113,  -115,  -361,  -763,  -112,
12065    -115,   242,   847,  -112,   450,   884,  -113,  -323,   291,   377,
12066    -653,  -115,   837,   844,  -112,   241,   506,   514,  -118,   242,
12067     444,   292,  -127,  1134,   892,   980,   891,   981,   982,    91,
12068     983,    91,  1097,   497,  1122,  -323,  -323,   378,   379,  -653,
12069     979,   289,   472,   227,   227,  1185,  -775,   551,  1186,  1201,
12070    1203,  1204,  1205,   324,  1116,  1119,   589,   369,   370,   371,
12071     372,   373,   934,   940,   842,  1122,   235,  -323,   452,   380,
12072     947,   508,   509,   947,   984,  -748,   834,   348,   220,   481,
12073      91,    91,   587,  1036,   290,   464,   506,   839,   843,   122,
12074     636,   291,   292,   122,  -122,   227,  1220,   637,  1223,  -655,
12075    1029,   -90,   831,   831,   478,  1030,   831,   589,   589,   377,
12076    1007,   238,   290,  -105,   589,   589,   377,   -91,  -124,   487,
12077     227,   227,   422,   831,   227,   395,   406,   406,  -655,   227,
12078    -117,  1241,   506,  1197,  -126,   493,   377,   378,   447,   511,
12079    -121,   508,   509,   839,   378,   476,  1265,  1018,   121,  1018,
12080     121,   324,   815,   655,   580,  1075,  -747,   965,   849,   496,
12081     851,  1244,  1075,  -656,   378,   502,   520,   815,   501,   448,
12082     121,   839,  1077,   891,   815,   815,   448,  1267,   122,  1269,
12083     206,   122,  -657,  1013,   936,   511,  1270,   508,   509,   446,
12084     677,  -656,  -656,  -644,   566,   383,   503,   815,  -644,   992,
12085     993,  -647,  -665,   842,  1279,   954,   628,   377,   628,   956,
12086    -657,  -657,  -314,   704,   570,   665,   628,   586,   291,  1100,
12087     521,   742,  -644,  -656,   573,  -748,  -644,  -644,   506,  -113,
12088    -647,  1066,   506,  -122,   649,   378,   426,   500,   500,    91,
12089    -314,  -314,  -657,  1075,   666,   843,   653,   122,   122,   658,
12090    1124,   678,   839,   976,   692,   122,  -747,   679,  -644,   506,
12091     122,  1135,   227,   506,   227,   227,  -747,  -647,   227,   701,
12092     227,  -115,  -314,   761,    91,  -124,    91,   831,   694,   589,
12093     831,   512,   887,   508,   509,   723,   121,   508,   509,   291,
12094     121,    91,  -752,   696,  1102,  -647,  -647,   831,   831,   831,
12095    1187,  1188,   831,   831,  1114,  1117,   702,   831,   831,   383,
12096     895,   290,   511,  -105,   508,   509,   728,  1099,   508,   509,
12097     711,   839,   755,   289,   122,  -748,   740,  -647,   746,  -405,
12098     831,   839,   758,   749,  -752,  -748,   289,  1174,   753,   122,
12099     383,   756,   763,    91,   227,   227,   227,   227,    91,   227,
12100     227,   377,  1043,  -296,    91,   778,   779,   782,    91,  1168,
12101    1170,   783,  -752,  -752,  1209,   784,   940,   801,   227,   742,
12102      91,   290,   841,   595,  1152,   121,   377,   742,   121,   378,
12103     650,   801,   823,   850,   857,  1028,   860,   408,  1077,   466,
12104     906,   974,  -752,  1077,  -752,  1077,   823,  1077,   908,   911,
12105    1043,   913,  -747,  -324,   378,   660,   377,   227,   916,    91,
12106     929,   651,   377,    91,   227,    91,   839,   484,   289,   377,
12107     941,   486,  1230,  1231,   943,   839,   944,  -297,   839,   227,
12108     978,  -324,  -324,   988,   378,   786,   661,  1000,   989,   936,
12109     378,  1207,   122,   990,   121,   121,  1006,   378,  1217,   122,
12110     122,   839,   121,  1040,  1067,  1068,  1052,   121,   595,   595,
12111    1027,  1054,  1084,  -324,   122,   752,   787,  1057,  1059,   408,
12112    1032,  1064,  1208,  1085,  -298,   227,  1077,  1095,  1077,   661,
12113    1098,   789,   831,  1077,   986,  1077,  1137,   831,   831,  1018,
12114    1142,   935,  1249,  1251,   278,   122,  1138,  1007,  1256,   220,
12115    1258,  1259,  1143,  1077,   899,   900,   464,   901,   766,   122,
12116      91,   636,   383,   383,    46,    47,   914,   742,   637,  1158,
12117    1160,   121,  1165,  -112,  1167,   914,  1018,  -121,   290,  1043,
12118     227,  1123,    41,    42,    43,    44,   121,  1169,   530,   122,
12119     531,   532,   533,   534,  -299,  1274,  1276,  1277,  1278,  1176,
12120    1172,   348,  1173,   976,  1206,  1088,  1177,  1280,  1178,  1202,
12121    1018,  1216,   801,   801,  1090,  1211,   801,  1094,   361,   362,
12122     831,  1151,  1239,   839,   839,   839,  1248,   823,   823,  1250,
12123    1255,   823,  1257,   801,   407,  1260,  1264,   733,  -747,    80,
12124    1112,    80,  -748,   227,  1275,   474,   706,   227,   823,  1035,
12125     393,   410,   691,    80,    80,   365,   708,   693,   376,  1261,
12126     695,   290,   938,   697,   879,   369,   370,   371,   372,   373,
12127     530,   909,   531,   532,   533,   534,   535,   530,   707,   531,
12128     532,   533,   534,   709,   317,   318,   319,   320,   321,   121,
12129      80,    80,  1050,  1159,  1072,   536,   121,   121,   434,  1191,
12130    1237,   436,   437,   438,  1263,    80,   950,  1198,  1037,   537,
12131     530,   121,   531,   532,   533,   534,   407,   948,    91,   538,
12132      91,  1210,   776,  1272,  1104,   539,   540,   541,   227,  1107,
12133      80,    80,  1108,  1101,    80,  1247,  1155,   430,   227,    80,
12134      91,   227,   121,   729,   423,   743,   921,  1218,  1214,   542,
12135     839,   919,  1228,     0,   718,  1175,   121,     0,     0,   733,
12136       0,   543,  1182,  1183,  1184,   734,  1240,     0,     0,  1193,
12137    1083,   531,   532,   533,   534,     0,   227,     0,     0,     0,
12138       0,   780,     0,     0,     0,     0,   121,   801,   290,     0,
12139     801,     0,     0,     0,     0,     0,  1262,     0,     0,     0,
12140       0,     0,   823,     0,     0,   823,     0,   801,   801,   801,
12141       0,     0,   801,   801,     0,     0,     0,   801,   801,     0,
12142       0,     0,   823,   823,   823,     0,     0,   823,   823,   579,
12143       0,     0,   823,   823,   592,     0,     0,     0,   824,     0,
12144     801,     0,   530,     0,   531,   532,   533,   534,   535,    80,
12145       0,     0,   824,     0,   825,   823,    91,     0,     0,   290,
12146      91,   595,     0,     0,   227,     0,     0,   536,   825,     0,
12147       0,     0,    80,     0,    80,    80,     0,     0,    80,     0,
12148      80,   537,     0,     0,    80,     0,    80,     0,     0,  1266,
12149       0,   538,     0,     0,     0,     0,     0,   539,   540,   541,
12150       0,    80,     0,     0,     0,   348,     0,     0,     0,     0,
12151       0,     0,   595,   595,     0,     0,     0,     0,     0,   595,
12152     595,   542,   361,   362,     0,     0,     0,     0,     0,     0,
12153       0,   680,   682,   543,     0,   912,     0,     0,     0,     0,
12154     278,     0,     0,     0,     0,    91,     0,   227,    91,     0,
12155       0,     0,     0,    80,    80,    80,    80,    80,    80,    80,
12156      80,   826,     0,     0,    80,     0,     0,     0,    80,   369,
12157     370,   371,   372,   373,     0,   826,   682,     0,    80,   278,
12158      80,     0,     0,    80,     0,     0,  1083,     0,     0,     0,
12159       0,   914,   801,  1083,     0,  1083,     0,   801,   801,     0,
12160       0,     0,     0,     0,     0,     0,     0,   823,     0,     0,
12161       0,     0,   823,   823,    91,    91,     0,    80,     0,    80,
12162       0,     0,    91,    80,    80,    80,     0,    91,     0,     0,
12163       0,     0,     0,   824,   824,     0,     0,   824,     0,    80,
12164       0,     0,   748,     0,     0,     0,     0,     0,     0,   825,
12165     825,     0,     0,   825,   824,     0,     0,     0,   102,     0,
12166     102,   227,     0,     0,     0,   777,     0,     0,    80,    80,
12167     825,     0,   102,   102,  1083,  1034,  1083,     0,     0,     0,
12168     801,  1083,     0,  1083,   595,    80,     0,     0,  1039,     0,
12169    1041,    91,   227,     0,     0,   823,     0,     0,     0,     0,
12170       0,  1083,     0,     0,     0,   770,    91,  1048,     0,   102,
12171     102,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12172      80,   348,     0,   827,   102,     0,     0,     0,     0,     0,
12173       0,     0,     0,     0,     0,     0,     0,   827,   361,   362,
12174      80,  1150,   530,     0,   531,   532,   533,   534,   535,   102,
12175     102,     0,     0,   102,  1164,     0,   826,   826,   102,     0,
12176     826,     0,     0,     0,     0,   882,     0,   536,     0,   883,
12177       0,     0,     0,   848,   364,   365,     0,   826,   852,   368,
12178     856,   537,   682,     0,   278,   369,   370,   371,   372,   373,
12179       0,   538,     0,     0,  1113,     0,     0,     0,   540,   541,
12180       0,     0,     0,    80,     0,     0,     0,    80,   824,    91,
12181       0,   824,     0,     0,     0,     0,    91,    91,     0,     0,
12182       0,   542,     0,     0,   825,     0,     0,   825,   824,   824,
12183     824,    91,   915,   824,   824,     0,  1212,     0,   824,   824,
12184       0,     0,     0,     0,   825,   825,   825,     0,     0,   825,
12185     825,     0,   931,     0,   825,   825,     0,     0,     0,     0,
12186       0,   824,    91,     0,   227,   227,   953,   530,   102,   531,
12187     532,   533,   534,   535,     0,     0,    91,   825,    80,     0,
12188      80,     0,     0,     0,     0,   227,     0,  1171,    80,     0,
12189       0,   102,   536,   102,   102,     0,     0,   102,    80,   102,
12190      80,    80,     0,   102,     0,   102,    91,     0,   949,     0,
12191     951,     0,  1179,  1180,  1181,     0,   538,     0,   827,   827,
12192     102,     0,   827,   540,   541,     0,     0,     0,     0,   682,
12193       0,   826,     0,     0,   826,     0,    80,     0,     0,   827,
12194       0,     0,     0,     0,     0,     0,   542,     0,     0,  1024,
12195       0,   826,   826,   826,     0,     0,   826,   826,     0,     0,
12196       0,   826,   826,     0,     0,     0,     0,     0,     0,     0,
12197       0,     0,   102,   102,   102,   102,   102,   102,   102,   102,
12198       0,     0,     0,   102,   826,     0,     0,   102,     0,     0,
12199       0,     0,     0,  1022,     0,     0,  1026,   102,   828,   102,
12200       0,     0,   102,     0,     0,     0,     0,     0,     0,     0,
12201    1033,   829,   828,   824,     0,     0,    80,     0,   824,   824,
12202      80,    80,     0,     0,    80,   829,     0,     0,     0,   825,
12203       0,     0,     0,     0,   825,   825,   102,     0,   102,     0,
12204    1087,     0,   102,   102,   102,     0,     0,     0,     0,     0,
12205       0,     0,     0,     0,     0,     0,     0,     0,   102,     0,
12206       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12207       0,     0,    80,    80,     0,     0,     0,     0,     0,    80,
12208      80,     0,     0,     0,     0,     0,     0,   102,   102,     0,
12209       0,     0,     0,   827,     0,     0,   827,     0,     0,     0,
12210       0,   824,     0,     0,   102,    80,     0,    80,    80,     0,
12211       0,  1130,     0,   827,   827,   827,     0,   825,   827,   827,
12212       0,     0,     0,   827,   827,     0,     0,     0,   278,     0,
12213       0,     0,     0,   125,     0,   125,   826,     0,     0,   102,
12214       0,   826,   826,     0,     0,     0,   827,     0,     0,     0,
12215    1125,     0,     0,  1126,     0,  1129,     0,     0,     0,   102,
12216       0,     0,  1133,     0,     0,  1136,     0,     0,     0,     0,
12217       0,     0,     0,     0,    80,    80,     0,     0,     0,     0,
12218       0,     0,    80,     0,   125,   125,     0,    80,   293,     0,
12219       0,     0,     0,   828,   828,     0,     0,   828,     0,     0,
12220       0,     0,     0,     0,     0,     0,   829,   829,     0,     0,
12221     829,     0,     0,     0,   828,     0,   293,     0,     0,  1190,
12222       0,    80,   102,     0,   826,     0,   102,   829,     0,   399,
12223     409,   409,   530,     0,   531,   532,   533,   534,   535,    76,
12224       0,    76,     0,     0,    80,     0,     0,     0,     0,     0,
12225       0,    80,    80,     0,     0,     0,     0,   536,     0,   530,
12226       0,   531,   532,   533,   534,   535,    80,     0,  1192,     0,
12227       0,     0,     0,     0,     0,     0,     0,  1232,     0,     0,
12228       0,   538,     0,     0,   536,     0,     0,   539,   540,   541,
12229      76,    76,     0,     0,   286,     0,     0,   102,   827,   102,
12230       0,     0,     0,   827,   827,     0,     0,   102,   538,     0,
12231       0,   542,     0,     0,   539,   540,   541,   102,     0,   102,
12232     102,     0,   286,   543,     0,     0,     0,     0,     0,     0,
12233       0,  1238,     0,     0,     0,   286,   286,   286,   542,     0,
12234       0,     0,     0,   125,   830,     0,     0,   242,     0,     0,
12235     543,     0,     0,     0,     0,   102,     0,     0,   830,     0,
12236       0,     0,     0,     0,     0,     0,     0,     0,   828,    80,
12237       0,   828,     0,     0,     0,     0,    80,    80,   125,     0,
12238     125,   829,     0,     0,   829,     0,   827,     0,   828,   828,
12239     828,    80,     0,   828,   828,   125,     0,     0,   828,   828,
12240       0,   829,   829,   829,     0,     0,   829,   829,     0,     0,
12241       0,   829,   829,     0,     0,   293,     0,     0,     0,     0,
12242       0,   828,    80,     0,    80,    80,     0,     0,     0,     0,
12243       0,     0,     0,     0,   829,   102,    80,     0,     0,   102,
12244     102,     0,     0,   102,     0,    80,     0,   125,     0,    76,
12245       0,     0,   125,    23,    24,    25,    26,     0,   125,     0,
12246       0,     0,   125,     0,     0,     0,    80,     0,     0,    32,
12247      33,    34,     0,     0,   125,   293,     0,   596,     0,    41,
12248      42,    43,    44,    45,    76,     0,    76,     0,     0,     0,
12249       0,   102,   102,     0,     0,     0,     0,     0,   102,   102,
12250       0,    76,     0,     0,     0,     0,     0,     0,     0,     0,
12251       0,     0,     0,   125,     0,     0,     0,   125,     0,   125,
12252       0,   286,     0,     0,   102,     0,   102,   102,     0,     0,
12253      58,    59,    60,    61,    62,    63,    64,    65,    66,   830,
12254     830,     0,     0,   830,     0,     0,     0,     0,     0,     0,
12255       0,     0,    77,    76,    77,     0,     0,     0,    76,     0,
12256     830,     0,   596,   596,    76,     0,     0,     0,    76,     0,
12257       0,   285,     0,   828,     0,     0,     0,     0,   828,   828,
12258      76,   286,     0,    76,     0,     0,   829,     0,     0,     0,
12259       0,   829,   829,   102,   102,     0,     0,     0,     0,     0,
12260       0,   102,     0,    77,    77,     0,   102,   287,     0,     0,
12261       0,     0,     0,     0,   125,     0,     0,     0,     0,    76,
12262       0,     0,     0,    76,     0,    76,     0,     0,     0,     0,
12263       0,     0,   293,     0,     0,   287,     0,     0,     0,     0,
12264     102,     0,     0,     0,     0,     0,     0,     0,   287,   287,
12265     287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12266       0,   828,     0,   102,     0,     0,     0,     0,    76,    76,
12267     102,   102,     0,     0,   829,     0,     0,     0,     0,     0,
12268       0,    87,     0,    87,     0,   102,  -775,     0,     0,     0,
12269       0,     0,     0,     0,  -775,  -775,  -775,     0,     0,  -775,
12270    -775,  -775,     0,  -775,     0,     0,     0,     0,     0,     0,
12271       0,  -775,  -775,  -775,   830,   293,     0,   830,     0,     0,
12272      76,     0,     0,  -775,  -775,     0,  -775,  -775,  -775,  -775,
12273    -775,     0,    87,    87,   830,   830,   830,     0,   286,   830,
12274     830,     0,     0,     0,   830,   830,     0,     0,     0,     0,
12275       0,     0,     0,     0,  -775,     0,     0,     0,     0,     0,
12276       0,     0,    77,     0,     0,     0,     0,   830,     0,     0,
12277       0,     0,   125,     0,   125,     0,     0,   394,     0,     0,
12278       0,     0,  -775,  -775,     0,     0,     0,     0,   102,  -775,
12279       0,     0,     0,     0,   125,   102,   102,    77,     0,    77,
12280       0,     0,     0,     0,     0,     0,  -775,     0,     0,     0,
12281     102,     0,  -775,  -775,    77,     0,     0,     0,     0,     0,
12282       0,   286,   238,     0,  -775,     0,  -775,     0,     0,     0,
12283       0,     0,     0,     0,   287,     0,     0,     0,     0,     0,
12284       0,   102,   293,   102,   102,     0,     0,     0,     0,     0,
12285       0,     0,     0,   903,     0,   102,     0,     0,     0,     0,
12286       0,     0,     0,     0,   102,     0,    77,     0,     0,     0,
12287       0,    77,     0,     0,     0,     0,     0,    77,    76,     0,
12288      76,    77,     0,     0,     0,   102,     0,     0,     0,     0,
12289       0,    87,     0,    77,   287,     0,    77,     0,     0,     0,
12290      76,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12291     125,     0,     0,   293,   125,   596,     0,     0,     0,   830,
12292       0,     0,     0,     0,   830,   830,    87,     0,    87,     0,
12293       0,     0,    77,     0,     0,     0,    77,     0,    77,     0,
12294       0,     0,     0,    87,     0,     0,     0,     0,   286,     0,
12295       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12296       0,     0,     0,     0,     0,     0,   596,   596,     0,     0,
12297       0,     0,     0,   596,   596,     0,     0,     0,     0,     0,
12298       0,    77,    77,     0,     0,     0,     0,     0,     0,     0,
12299       0,     0,     0,     0,   124,    87,   124,     0,     0,   125,
12300      87,     0,   125,     0,     0,     0,    87,   830,     0,     0,
12301      87,     0,     0,     0,     0,     0,    76,     0,     0,   286,
12302      76,    76,    87,     0,     0,   590,     0,     0,     0,     0,
12303       0,     0,     0,    77,   347,     0,     0,     0,     0,     0,
12304       0,     0,     0,     0,     0,   124,   124,     0,     0,     0,
12305       0,   287,     0,     0,     0,     0,     0,     0,     0,     0,
12306       0,    87,     0,     0,     0,    87,     0,    87,   125,   125,
12307       0,     0,    76,    76,     0,     0,   125,     0,     0,    76,
12308      76,   125,     0,     0,     0,     0,   348,   349,   350,   351,
12309     352,   353,   354,   355,   356,   357,   358,   359,   360,     0,
12310       0,     0,     0,   361,   362,    76,     0,     0,    76,   363,
12311     590,   590,     0,   348,   349,   350,   351,   352,   353,   354,
12312     355,   356,   357,   358,   359,   360,     0,     0,     0,     0,
12313     361,   362,     0,     0,   287,     0,     0,     0,   596,   364,
12314     365,   366,   367,     0,   368,   125,     0,     0,     0,     0,
12315     369,   370,   371,   372,   373,     0,     0,     0,   374,     0,
12316     125,     0,    87,     0,     0,     0,   364,   365,   366,   367,
12317       0,   368,     0,     0,    76,    76,   242,   369,   370,   371,
12318     372,   373,    76,     0,     0,   374,     0,    76,     0,     0,
12319       0,    77,     0,    77,     0,  1153,     0,     0,     0,     0,
12320       0,     0,     0,     0,   124,     0,     0,     0,   409,     0,
12321       0,     0,     0,    77,     0,     0,     0,     0,     0,     0,
12322       0,     0,     0,     0,     0,     0,     0,     0,   348,   349,
12323     350,   351,   352,   353,   354,   355,     0,   357,   358,   124,
12324       0,   124,     0,     0,    76,   361,   362,     0,     0,     0,
12325       0,    76,     0,     0,     0,     0,   124,     0,     0,     0,
12326       0,   287,     0,   125,     0,     0,    76,     0,     0,     0,
12327     125,   125,     0,     0,     0,     0,     0,     0,     0,     0,
12328       0,   364,   365,   366,   367,   125,   368,     0,     0,     0,
12329     409,     0,   369,   370,   371,   372,   373,     0,     0,     0,
12330       0,   286,     0,     0,     0,     0,     0,     0,   124,     0,
12331       0,   785,     0,   124,   286,     0,   125,     0,     0,   124,
12332      87,     0,    87,   124,     0,     0,     0,     0,     0,    77,
12333     125,     0,   287,    77,    77,   124,     0,     0,   124,     0,
12334       0,     0,    87,     0,   348,   349,   350,   351,   352,   353,
12335     354,   355,   356,   357,   358,   359,   360,     0,     0,     0,
12336     125,   361,   362,     0,     0,     0,     0,     0,     0,    76,
12337       0,     0,     0,     0,   124,     0,    76,    76,   124,     0,
12338     124,     0,     0,     0,     0,    77,    77,     0,     0,     0,
12339       0,    76,    77,    77,     0,     0,   286,   364,   365,   366,
12340     367,     0,   368,     0,     0,     0,     0,     0,   369,   370,
12341     371,   372,   373,     0,     0,     0,   374,     0,    77,     0,
12342       0,    77,    76,   124,   124,    23,    24,    25,    26,     0,
12343       0,     0,     0,     0,     0,     0,    76,     0,     0,     0,
12344       0,    32,    33,    34,   789,     0,     0,     0,   790,     0,
12345       0,    41,    42,    43,    44,    45,     0,     0,    87,     0,
12346       0,     0,    87,   590,     0,     0,    76,     0,     0,     0,
12347       0,     0,     0,     0,     0,   124,     0,     0,     0,     0,
12348       0,     0,   792,   793,     0,     0,     0,    77,    77,     0,
12349     794,     0,     0,   795,     0,    77,   796,   797,     0,   798,
12350      77,     0,    58,    59,    60,    61,    62,    63,    64,    65,
12351      66,     0,     0,     0,   590,   590,     0,     0,     0,     0,
12352       0,   590,   590,     0,     0,     0,     0,   800,     0,     0,
12353       0,     0,   242,     0,     0,     0,     0,     0,     0,     0,
12354       0,     0,     0,   285,     0,     0,     0,    87,     0,     0,
12355      87,     0,     0,     0,     0,     0,     0,    77,     0,     0,
12356       0,   222,   222,     0,    77,     0,     0,     0,     0,     0,
12357       0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
12358       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12359       0,     0,     0,   255,   258,   259,   260,     0,     0,     0,
12360     222,   222,     0,     0,     0,     0,     0,     0,     0,     0,
12361       0,     0,   308,   310,   287,     0,    87,    87,     0,     0,
12362       0,     0,     0,     0,    87,     0,     0,   287,     0,    87,
12363       0,     0,     0,   124,     0,   124,     0,     0,     0,     0,
12364       0,     0,     0,     0,     0,     0,     0,   222,    23,    24,
12365      25,    26,     0,     0,     0,   124,     0,     0,     0,     0,
12366       0,     0,     0,     0,    32,    33,    34,   789,     0,     0,
12367       0,   790,     0,   791,    41,    42,    43,    44,    45,     0,
12368       0,     0,    77,     0,     0,     0,   590,     0,     0,    77,
12369      77,     0,   536,    87,     0,     0,     0,     0,     0,     0,
12370       0,     0,     0,     0,    77,   792,   793,     0,    87,   287,
12371       0,     0,     0,   794,     0,     0,   795,     0,     0,   796,
12372     797,     0,   798,   540,     0,    58,    59,   799,    61,    62,
12373      63,    64,    65,    66,     0,    77,     0,     0,     0,     0,
12374       0,     0,     0,  1149,     0,     0,     0,     0,     0,    77,
12375     800,   785,     0,     0,     0,   222,     0,     0,   222,   222,
12376     222,     0,   310,     0,     0,     0,   285,     0,     0,     0,
12377       0,   124,     0,     0,     0,   124,   124,     0,     0,    77,
12378     222,     0,   222,   222,   348,   349,   350,   351,   352,   353,
12379     354,   355,   356,   357,   358,   359,   360,     0,     0,     0,
12380       0,   361,   362,     0,     0,     0,     0,     0,     0,     0,
12381       0,    87,     0,     0,     0,     0,     0,     0,    87,    87,
12382       0,     0,     0,     0,     0,     0,     0,   124,   124,     0,
12383       0,     0,  -268,    87,   124,   124,     0,   364,   365,   366,
12384     367,     0,   368,     0,     0,     0,     0,     0,   369,   370,
12385     371,   372,   373,     0,     0,     0,   374,     0,     0,     0,
12386     124,     0,     0,   124,    87,     0,     0,     0,     0,     0,
12387       0,     0,     0,     0,     0,     0,     0,     0,    87,     0,
12388       0,     0,     0,     0,     0,     0,   222,     0,     0,     0,
12389       0,   591,     0,   598,   599,   600,   601,   602,     0,     0,
12390     603,   604,   605,   606,   607,   608,   609,   610,    87,   612,
12391     613,     0,     0,   614,   615,   616,   617,   618,   619,   620,
12392     621,   622,     0,     0,     0,   222,     0,     0,     0,   124,
12393     124,     0,     0,     0,     0,     0,     0,   124,     0,     0,
12394       0,     0,   124,     0,     0,     0,     0,     0,     0,     0,
12395       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12396       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12397       0,     0,     0,     0,     0,     0,   672,   672,     0,     0,
12398       0,     0,     0,     0,     0,     0,     0,   672,   222,   222,
12399       0,     0,     0,   222,     0,   672,   672,   222,     0,   124,
12400       0,     0,     0,   260,     0,     0,   124,     0,     0,     0,
12401       0,    23,    24,    25,    26,     0,     0,     0,   700,     0,
12402       0,   124,     0,   672,     0,     0,     0,    32,    33,    34,
12403     789,     0,     0,   222,   790,     0,   222,    41,    42,    43,
12404      44,    45,     0,     0,     0,     0,     0,     0,   222,     0,
12405       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12406       0,     0,     0,     0,     0,   732,     0,     0,   792,   793,
12407       0,     0,     0,     0,     0,     0,   794,     0,     0,   795,
12408       0,     0,   796,   797,     0,   798,     0,     0,    58,    59,
12409      60,    61,    62,    63,    64,    65,    66,     0,     0,   222,
12410       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12411       0,   760,     0,   800,   930,   769,     0,     0,     0,     0,
12412       0,     0,   222,     0,   124,     0,     0,     0,     0,   285,
12413       0,   124,   124,     0,     0,     0,     0,     0,     0,     0,
12414       0,     0,     0,     0,     0,     0,   124,   348,   349,   350,
12415     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
12416       0,     0,     0,     0,   361,   362,     0,     0,     0,     0,
12417       0,     0,     0,     0,     0,     0,     0,   124,     0,     0,
12418     348,  -776,  -776,  -776,  -776,   353,   354,     0,     0,  -776,
12419    -776,   124,     0,     0,     0,     0,   222,   361,   362,     0,
12420     364,   365,   366,   367,     0,   368,   222,     0,     0,     0,
12421       0,   369,   370,   371,   372,   373,     0,     0,     0,   374,
12422       0,   124,   222,   760,   769,     0,   222,     0,     0,     0,
12423       0,     0,     0,   364,   365,   366,   367,     0,   368,   222,
12424       0,   222,     0,     0,   369,   370,   371,   372,   373,     0,
12425       0,  -775,     4,     0,     5,     6,     7,     8,     9,     0,
12426       0,     0,    10,    11,     0,     0,     0,    12,     0,    13,
12427      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
12428       0,    20,    21,    22,    23,    24,    25,    26,     0,   222,
12429      27,     0,     0,     0,     0,     0,    28,    29,    30,    31,
12430      32,    33,    34,    35,    36,    37,    38,    39,    40,   222,
12431      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
12432       0,     0,     0,   222,     0,     0,    48,    49,     0,   672,
12433     957,     0,   222,     0,     0,     0,     0,     0,     0,     0,
12434       0,    50,    51,     0,     0,     0,     0,     0,     0,    52,
12435       0,     0,    53,    54,     0,    55,    56,     0,    57,     0,
12436       0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
12437       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12438     672,   672,     0,     0,     0,     0,   222,   672,   672,  -775,
12439       0,  -775,     0,     0,     0,     0,     0,    67,    68,     0,
12440       0,     0,    69,     0,     0,     0,   222,     0,     5,     6,
12441       7,     0,     9,     0,     0,     0,    10,    11,     0,     0,
12442       0,    12,     0,    13,    14,    15,   250,   251,    18,    19,
12443     672,   672,     0,   672,   672,    20,   252,   253,    23,    24,
12444      25,    26,     0,     0,   209,     0,     0,     0,     0,     0,
12445       0,   282,     0,     0,    32,    33,    34,    35,    36,    37,
12446      38,    39,    40,     0,    41,    42,    43,    44,    45,    46,
12447      47,     0,     0,     0,  1062,  1063,     0,     0,     0,     0,
12448       0,     0,     0,     0,     0,     0,  1069,  1070,     0,     0,
12449       0,     0,     0,     0,     0,     0,     0,   222,     0,     0,
12450       0,     0,     0,   283,     0,     0,   212,    54,     0,    55,
12451      56,     0,     0,     0,     0,    58,    59,    60,    61,    62,
12452      63,    64,    65,    66,     0,     0,     0,     0,     0,     0,
12453     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12454       0,     0,     0,     0,     0,  1120,     0,     0,     0,     0,
12455       0,     0,   672,     0,     0,     0,   285,     0,     0,     0,
12456       0,     0,     0,     0,     0,     0,     0,     0,   222,     0,
12457       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12458       0,     0,     0,   672,     0,   222,     0,     0,     0,     0,
12459     262,     0,     5,     6,     7,     8,     9,  -775,  -775,  -775,
12460      10,    11,     0,     0,  -775,    12,     0,    13,    14,    15,
12461      16,    17,    18,    19,     0,     0,     0,     0,     0,    20,
12462      21,    22,    23,    24,    25,    26,     0,     0,    27,     0,
12463       0,     0,     0,     0,    28,    29,   263,    31,    32,    33,
12464      34,    35,    36,    37,    38,    39,    40,     0,    41,    42,
12465      43,    44,    45,    46,    47,     0,     0,   348,   349,   350,
12466     351,   352,   353,   354,    48,    49,   357,   358,     0,     0,
12467       0,     0,     0,     0,   361,   362,   222,     0,     0,    50,
12468      51,     0,     0,     0,     0,     0,     0,    52,     0,     0,
12469      53,    54,     0,    55,    56,     0,    57,     0,     0,    58,
12470      59,    60,    61,    62,    63,    64,    65,    66,     0,     0,
12471     364,   365,   366,   367,     0,   368,     0,     0,     0,     0,
12472       0,   369,   370,   371,   372,   373,     0,  -775,     0,  -775,
12473       0,     0,     0,     0,   222,    67,    68,     0,     0,     0,
12474      69,   262,     0,     5,     6,     7,     8,     9,     0,     0,
12475    -775,    10,    11,   222,  -775,  -775,    12,     0,    13,    14,
12476      15,    16,    17,    18,    19,     0,     0,     0,     0,     0,
12477      20,    21,    22,    23,    24,    25,    26,     0,     0,    27,
12478       0,     0,     0,     0,     0,    28,    29,   263,    31,    32,
12479      33,    34,    35,    36,    37,    38,    39,    40,     0,    41,
12480      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
12481       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
12482       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12483      50,    51,     0,     0,     0,     0,     0,     0,    52,     0,
12484       0,    53,    54,     0,    55,    56,     0,    57,     0,     0,
12485      58,    59,    60,    61,    62,    63,    64,    65,    66,     0,
12486       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12487       0,     0,     0,     0,     0,     0,     0,     0,  -775,   262,
12488    -775,     5,     6,     7,     8,     9,    67,    68,  -775,    10,
12489      11,    69,     0,  -775,    12,  -775,    13,    14,    15,    16,
12490      17,    18,    19,     0,     0,     0,     0,     0,    20,    21,
12491      22,    23,    24,    25,    26,     0,     0,    27,     0,     0,
12492       0,     0,     0,    28,    29,   263,    31,    32,    33,    34,
12493      35,    36,    37,    38,    39,    40,     0,    41,    42,    43,
12494      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
12495       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
12496       0,     0,     0,     0,     0,     0,     0,     0,    50,    51,
12497       0,     0,     0,     0,     0,     0,    52,     0,     0,    53,
12498      54,     0,    55,    56,     0,    57,     0,     0,    58,    59,
12499      60,    61,    62,    63,    64,    65,    66,     0,     0,     0,
12500       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12501       0,     0,     0,     0,     0,     0,  -775,   262,  -775,     5,
12502       6,     7,     8,     9,    67,    68,  -775,    10,    11,    69,
12503       0,  -775,    12,     0,    13,    14,    15,    16,    17,    18,
12504      19,  -775,     0,     0,     0,     0,    20,    21,    22,    23,
12505      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
12506       0,    28,    29,   263,    31,    32,    33,    34,    35,    36,
12507      37,    38,    39,    40,     0,    41,    42,    43,    44,    45,
12508      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
12509       0,    48,    49,     0,     0,     0,     0,     0,     0,     0,
12510       0,     0,     0,     0,     0,     0,    50,    51,     0,     0,
12511       0,     0,     0,     0,    52,     0,     0,    53,    54,     0,
12512      55,    56,     0,    57,     0,     0,    58,    59,    60,    61,
12513      62,    63,    64,    65,    66,     0,     0,     0,     0,     0,
12514       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12515       0,     0,     0,     0,  -775,   262,  -775,     5,     6,     7,
12516       8,     9,    67,    68,  -775,    10,    11,    69,     0,  -775,
12517      12,     0,    13,    14,    15,    16,    17,    18,    19,     0,
12518       0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
12519      26,     0,     0,    27,     0,     0,     0,     0,     0,    28,
12520      29,   263,    31,    32,    33,    34,    35,    36,    37,    38,
12521      39,    40,     0,    41,    42,    43,    44,    45,    46,    47,
12522       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
12523      49,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12524       0,     0,     0,     0,    50,    51,     0,     0,     0,     0,
12525       0,     0,    52,     0,     0,    53,    54,     0,    55,    56,
12526       0,    57,     0,     0,    58,    59,    60,    61,    62,    63,
12527      64,    65,    66,     0,     0,     0,     0,     0,     0,     0,
12528       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12529       0,     0,  -775,     0,  -775,     0,     0,     0,     0,     0,
12530      67,    68,     0,     0,   262,    69,     5,     6,     7,     8,
12531       9,     0,  -775,  -775,    10,    11,     0,     0,     0,    12,
12532       0,    13,    14,    15,    16,    17,    18,    19,     0,     0,
12533       0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
12534       0,     0,    27,     0,     0,     0,     0,     0,    28,    29,
12535     263,    31,    32,    33,    34,    35,    36,    37,    38,    39,
12536      40,     0,    41,    42,    43,    44,    45,    46,    47,     0,
12537       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
12538       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12539       0,     0,     0,    50,    51,     0,     0,     0,     0,     0,
12540       0,    52,     0,     0,    53,    54,     0,    55,    56,     0,
12541      57,     0,     0,    58,    59,    60,    61,    62,    63,    64,
12542      65,    66,     0,     0,     0,     0,     0,     0,     0,     0,
12543       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12544       0,  -775,   262,  -775,     5,     6,     7,     8,     9,    67,
12545      68,     0,    10,    11,    69,     0,     0,    12,     0,    13,
12546      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
12547       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
12548      27,     0,     0,     0,     0,     0,    28,    29,   263,    31,
12549      32,    33,    34,    35,    36,    37,    38,    39,    40,     0,
12550      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
12551       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
12552       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12553       0,    50,    51,     0,     0,     0,     0,     0,     0,    52,
12554       0,     0,   264,    54,  -775,    55,    56,     0,    57,     0,
12555       0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
12556       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12557       0,     0,     0,     0,     0,     0,     0,     0,     0,  -775,
12558     262,  -775,     5,     6,     7,     8,     9,    67,    68,     0,
12559      10,    11,    69,     0,     0,    12,     0,    13,    14,    15,
12560      16,    17,    18,    19,     0,     0,     0,     0,     0,    20,
12561      21,    22,    23,    24,    25,    26,     0,     0,    27,     0,
12562       0,     0,     0,     0,    28,    29,   263,    31,    32,    33,
12563      34,    35,    36,    37,    38,    39,    40,     0,    41,    42,
12564      43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
12565       0,     0,     0,     0,    48,    49,     0,     0,     0,     0,
12566       0,     0,     0,     0,     0,     0,     0,     0,     0,    50,
12567      51,     0,     0,     0,     0,     0,     0,    52,     0,     0,
12568      53,    54,  -775,    55,    56,     0,    57,     0,     0,    58,
12569      59,    60,    61,    62,    63,    64,    65,    66,     0,     0,
12570       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12571       0,     0,     0,     0,     0,     0,     0,  -775,     4,  -775,
12572       5,     6,     7,     8,     9,    67,    68,     0,    10,    11,
12573      69,     0,     0,    12,     0,    13,    14,    15,    16,    17,
12574      18,    19,     0,     0,     0,     0,     0,    20,    21,    22,
12575      23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
12576       0,     0,    28,    29,    30,    31,    32,    33,    34,    35,
12577      36,    37,    38,    39,    40,     0,    41,    42,    43,    44,
12578      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
12579       0,     0,    48,    49,     0,     0,     0,     0,     0,     0,
12580       0,     0,     0,     0,     0,     0,     0,    50,    51,     0,
12581       0,     0,     0,     0,     0,    52,     0,     0,    53,    54,
12582       0,    55,    56,     0,    57,     0,     0,    58,    59,    60,
12583      61,    62,    63,    64,    65,    66,     0,     0,     0,     0,
12584       0,     0,     0,     0,  -775,     0,     0,     0,     0,     0,
12585       0,     0,     0,     0,     0,  -775,   262,  -775,     5,     6,
12586       7,     8,     9,    67,    68,     0,    10,    11,    69,     0,
12587       0,    12,     0,    13,    14,    15,    16,    17,    18,    19,
12588       0,     0,     0,     0,     0,    20,    21,    22,    23,    24,
12589      25,    26,     0,     0,    27,     0,     0,     0,     0,     0,
12590      28,    29,   263,    31,    32,    33,    34,    35,    36,    37,
12591      38,    39,    40,     0,    41,    42,    43,    44,    45,    46,
12592      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12593      48,    49,     0,     0,     0,     0,     0,     0,     0,     0,
12594       0,     0,     0,     0,     0,    50,    51,     0,     0,     0,
12595       0,     0,     0,    52,     0,     0,    53,    54,     0,    55,
12596      56,     0,    57,     0,     0,    58,    59,    60,    61,    62,
12597      63,    64,    65,    66,     0,     0,     0,     0,     0,     0,
12598       0,     0,  -775,     0,     0,     0,     0,     0,     0,     0,
12599       0,     0,     0,  -775,   262,  -775,     5,     6,     7,     8,
12600       9,    67,    68,  -775,    10,    11,    69,     0,     0,    12,
12601       0,    13,    14,    15,    16,    17,    18,    19,     0,     0,
12602       0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
12603       0,     0,    27,     0,     0,     0,     0,     0,    28,    29,
12604     263,    31,    32,    33,    34,    35,    36,    37,    38,    39,
12605      40,     0,    41,    42,    43,    44,    45,    46,    47,     0,
12606       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
12607       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12608       0,     0,     0,    50,    51,     0,     0,     0,     0,     0,
12609       0,    52,     0,     0,    53,    54,     0,    55,    56,     0,
12610      57,     0,     0,    58,    59,    60,    61,    62,    63,    64,
12611      65,    66,     0,     0,     0,     0,     0,     0,     0,     0,
12612       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12613       0,  -775,   262,  -775,     5,     6,     7,     8,     9,    67,
12614      68,     0,    10,    11,    69,     0,     0,    12,     0,    13,
12615      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
12616       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
12617      27,     0,     0,     0,     0,     0,    28,    29,   263,    31,
12618      32,    33,    34,    35,    36,    37,    38,    39,    40,     0,
12619      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
12620       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
12621       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12622       0,    50,    51,     0,     0,     0,     0,     0,     0,    52,
12623       0,     0,    53,    54,     0,    55,    56,     0,    57,     0,
12624       0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
12625       0,  -775,     0,     0,     0,     0,     0,     0,     0,     0,
12626       0,     0,     0,     0,     0,     0,  -752,     0,     0,  -775,
12627       0,  -775,     0,     0,  -752,  -752,  -752,    67,    68,  -752,
12628    -752,  -752,    69,  -752,     0,     0,     0,     0,     0,     0,
12629       0,  -752,  -752,  -752,  -752,  -752,     0,     0,     0,     0,
12630       0,     0,     0,  -752,  -752,     0,  -752,  -752,  -752,  -752,
12631    -752,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12632       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12633       0,     0,     0,     0,  -752,     0,     0,     0,     0,     0,
12634       0,     0,     0,  -752,  -752,  -752,  -752,  -752,  -752,  -752,
12635    -752,  -752,  -752,  -752,  -752,  -752,     0,     0,     0,     0,
12636    -752,  -752,  -752,  -752,     0,   885,  -752,     0,     0,  -752,
12637       0,     0,  -752,     0,     0,     0,     0,     0,     0,     0,
12638       0,     0,     0,     0,     0,     0,  -752,     0,     0,  -752,
12639       0,  -752,  -752,  -752,  -752,  -123,  -752,  -752,  -752,  -752,
12640       0,  -752,     0,  -752,  -752,     0,  -752,  -752,  -752,  -752,
12641    -752,  -752,  -644,     0,     0,  -752,  -752,     0,     0,     0,
12642    -644,  -644,  -644,     0,     0,  -644,  -644,  -644,     0,  -644,
12643       0,     0,     0,     0,     0,     0,     0,  -644,     0,  -644,
12644    -644,  -644,     0,     0,     0,     0,     0,     0,     0,  -644,
12645    -644,     0,  -644,  -644,  -644,  -644,  -644,     0,     0,     0,
12646       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12647       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12648    -644,     0,     0,     0,     0,     0,     0,     0,     0,  -644,
12649    -644,  -644,  -644,  -644,  -644,  -644,  -644,  -644,  -644,  -644,
12650    -644,  -644,     0,     0,     0,     0,  -644,  -644,  -644,  -644,
12651       0,  -644,  -644,     0,     0,  -644,     0,     0,  -644,     0,
12652       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12653       0,     0,  -644,     0,     0,  -644,     0,  -644,     0,  -644,
12654    -644,  -644,  -644,  -644,  -644,  -644,     0,  -644,     0,  -644,
12655    -644,     0,  -644,  -644,  -644,  -644,  -644,  -644,  -647,     0,
12656       0,  -644,  -644,     0,     0,     0,  -647,  -647,  -647,     0,
12657       0,  -647,  -647,  -647,     0,  -647,     0,     0,     0,     0,
12658       0,     0,     0,  -647,     0,  -647,  -647,  -647,     0,     0,
12659       0,     0,     0,     0,     0,  -647,  -647,     0,  -647,  -647,
12660    -647,  -647,  -647,     0,     0,     0,     0,     0,     0,     0,
12661       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12662       0,     0,     0,     0,     0,     0,  -647,     0,     0,     0,
12663       0,     0,     0,     0,     0,  -647,  -647,  -647,  -647,  -647,
12664    -647,  -647,  -647,  -647,  -647,  -647,  -647,  -647,     0,     0,
12665       0,     0,  -647,  -647,  -647,  -647,     0,  -647,  -647,     0,
12666       0,  -647,     0,     0,  -647,     0,     0,     0,     0,     0,
12667       0,     0,     0,     0,     0,     0,     0,     0,  -647,     0,
12668       0,  -647,     0,  -647,     0,  -647,  -647,  -647,  -647,  -647,
12669    -647,  -647,     0,  -647,     0,  -647,  -647,     0,  -647,  -647,
12670    -647,  -647,  -647,  -647,  -753,     0,     0,  -647,  -647,     0,
12671       0,     0,  -753,  -753,  -753,     0,     0,  -753,  -753,  -753,
12672       0,  -753,     0,     0,     0,     0,     0,     0,     0,  -753,
12673    -753,  -753,  -753,  -753,     0,     0,     0,     0,     0,     0,
12674       0,  -753,  -753,     0,  -753,  -753,  -753,  -753,  -753,     0,
12675       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12676       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12677       0,     0,  -753,     0,     0,     0,     0,     0,     0,     0,
12678       0,  -753,  -753,  -753,  -753,  -753,  -753,  -753,  -753,  -753,
12679    -753,  -753,  -753,  -753,     0,     0,     0,     0,  -753,  -753,
12680    -753,  -753,     0,     0,  -753,     0,     0,  -753,     0,     0,
12681    -753,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12682       0,     0,     0,     0,  -753,     0,     0,  -753,     0,  -753,
12683    -753,  -753,  -753,     0,  -753,  -753,  -753,  -753,     0,  -753,
12684       0,  -753,  -753,     0,  -753,  -753,  -753,  -753,  -753,  -753,
12685    -754,     0,     0,  -753,  -753,     0,     0,     0,  -754,  -754,
12686    -754,     0,     0,  -754,  -754,  -754,     0,  -754,     0,     0,
12687       0,     0,     0,     0,     0,  -754,  -754,  -754,  -754,  -754,
12688       0,     0,     0,     0,     0,     0,     0,  -754,  -754,     0,
12689    -754,  -754,  -754,  -754,  -754,     0,     0,     0,     0,     0,
12690       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12691       0,     0,     0,     0,     0,     0,     0,     0,  -754,     0,
12692       0,     0,     0,     0,     0,     0,     0,  -754,  -754,  -754,
12693    -754,  -754,  -754,  -754,  -754,  -754,  -754,  -754,  -754,  -754,
12694       0,     0,     0,     0,  -754,  -754,  -754,  -754,     0,     0,
12695    -754,     0,     0,  -754,     0,     0,  -754,     0,     0,     0,
12696       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12697    -754,     0,     0,  -754,     0,  -754,  -754,  -754,  -754,     0,
12698    -754,  -754,  -754,  -754,     0,  -754,     0,  -754,  -754,     0,
12699    -754,  -754,  -754,  -754,  -754,  -754,  -323,     0,     0,  -754,
12700    -754,     0,     0,     0,  -323,  -323,  -323,     0,     0,  -323,
12701    -323,  -323,     0,  -323,     0,     0,     0,     0,     0,     0,
12702       0,  -323,     0,  -323,  -323,  -323,     0,     0,     0,     0,
12703       0,     0,     0,  -323,  -323,     0,  -323,  -323,  -323,  -323,
12704    -323,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12706       0,     0,     0,     0,  -323,     0,     0,     0,     0,     0,
12707       0,     0,     0,  -323,  -323,  -323,  -323,  -323,  -323,  -323,
12708    -323,  -323,  -323,  -323,  -323,  -323,     0,     0,     0,     0,
12709    -323,  -323,  -323,  -323,     0,   886,  -323,     0,     0,  -323,
12710       0,     0,  -323,     0,     0,     0,     0,     0,     0,     0,
12711       0,     0,     0,     0,     0,     0,  -323,     0,     0,  -323,
12712       0,  -323,     0,  -323,  -323,  -125,  -323,  -323,  -323,  -323,
12713       0,  -323,     0,  -323,  -323,     0,  -323,  -323,  -323,  -323,
12714    -323,  -323,  -315,     0,     0,  -323,  -323,     0,     0,     0,
12715    -315,  -315,  -315,     0,     0,  -315,  -315,  -315,     0,  -315,
12716       0,     0,     0,     0,     0,     0,     0,  -315,     0,  -315,
12717    -315,  -315,     0,     0,     0,     0,     0,     0,     0,  -315,
12718    -315,     0,  -315,  -315,  -315,  -315,  -315,     0,     0,     0,
12719       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12720       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12721    -315,     0,     0,     0,     0,     0,     0,     0,     0,  -315,
12722    -315,  -315,  -315,  -315,  -315,  -315,  -315,  -315,  -315,  -315,
12723    -315,  -315,     0,     0,     0,     0,  -315,  -315,  -315,  -315,
12724       0,     0,  -315,     0,     0,  -315,     0,     0,  -315,     0,
12725       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12726       0,     0,  -315,     0,     0,  -315,     0,  -315,     0,  -315,
12727    -315,     0,  -315,  -315,  -315,  -315,     0,  -315,     0,  -315,
12728    -315,     0,  -315,  -315,  -315,  -315,  -315,  -315,  -462,     0,
12729       0,  -315,  -315,     0,     0,     0,  -462,  -462,  -462,     0,
12730       0,  -462,  -462,  -462,     0,  -462,     0,     0,     0,     0,
12731       0,     0,     0,  -462,  -462,  -462,  -462,     0,     0,     0,
12732       0,     0,     0,     0,     0,  -462,  -462,     0,  -462,  -462,
12733    -462,  -462,  -462,     0,     0,     0,     0,     0,     0,     0,
12734       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12735       0,     0,     0,     0,     0,     0,  -462,     0,     0,     0,
12736       0,     0,     0,     0,     0,  -462,  -462,  -462,  -462,  -462,
12737    -462,  -462,  -462,  -462,  -462,  -462,  -462,  -462,     0,     0,
12738       0,     0,  -462,  -462,  -462,  -462,     0,     0,  -462,     0,
12739       0,  -462,     0,     0,  -462,     0,     0,     0,     0,     0,
12740       0,     0,     0,     0,     0,     0,     0,     0,  -462,     0,
12741       0,     0,     0,  -462,  -462,  -462,  -462,     0,  -462,  -462,
12742    -462,  -462,     0,  -462,   238,  -462,  -462,     0,  -462,  -462,
12743    -462,  -462,  -462,  -462,  -775,     0,     0,  -462,     0,     0,
12744       0,     0,  -775,  -775,  -775,     0,     0,  -775,  -775,  -775,
12745       0,  -775,     0,     0,     0,     0,     0,     0,     0,  -775,
12746    -775,  -775,  -775,     0,     0,     0,     0,     0,     0,     0,
12747       0,  -775,  -775,     0,  -775,  -775,  -775,  -775,  -775,     0,
12748       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12749       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12750       0,     0,  -775,     0,     0,     0,     0,     0,     0,     0,
12751       0,  -775,  -775,  -775,  -775,  -775,  -775,  -775,  -775,  -775,
12752    -775,  -775,  -775,  -775,     0,     0,     0,     0,  -775,  -775,
12753    -775,  -775,     0,     0,  -775,     0,     0,  -775,     0,     0,
12754    -775,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12755       0,     0,     0,     0,  -775,     0,     0,     0,     0,  -775,
12756    -775,  -775,  -775,     0,  -775,  -775,  -775,  -775,     0,  -775,
12757     238,  -775,  -775,     0,  -775,  -775,  -775,  -775,  -775,  -775,
12758    -330,     0,     0,  -775,     0,     0,     0,     0,  -330,  -330,
12759    -330,     0,     0,  -330,  -330,  -330,     0,  -330,     0,     0,
12760       0,     0,     0,     0,     0,  -330,     0,  -330,  -330,     0,
12761       0,     0,     0,     0,     0,     0,     0,  -330,  -330,     0,
12762    -330,  -330,  -330,  -330,  -330,     0,     0,     0,     0,     0,
12763       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12764       0,     0,     0,     0,     0,     0,     0,     0,  -330,     0,
12765       0,     0,     0,     0,     0,     0,     0,  -330,  -330,  -330,
12766    -330,  -330,  -330,  -330,  -330,  -330,  -330,  -330,  -330,  -330,
12767       0,     0,     0,     0,  -330,  -330,  -330,  -330,     0,     0,
12768    -330,     0,     0,  -330,     0,     0,  -330,     0,     0,     0,
12769       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12770    -330,     0,     0,     0,     0,  -330,     0,  -330,  -330,     0,
12771    -330,  -330,  -330,  -330,     0,  -330,   235,  -330,  -330,     0,
12772    -330,  -330,  -330,  -330,  -330,  -330,  -752,     0,     0,  -330,
12773       0,     0,     0,     0,  -752,  -752,  -752,     0,     0,     0,
12774    -752,  -752,     0,  -752,     0,     0,     0,     0,     0,     0,
12775       0,  -752,  -752,     0,     0,     0,     0,     0,     0,     0,
12776       0,     0,     0,  -752,  -752,     0,  -752,  -752,  -752,  -752,
12777    -752,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12778       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12779       0,     0,     0,     0,  -752,     0,     0,     0,     0,     0,
12780       0,     0,     0,  -752,  -752,  -752,  -752,  -752,  -752,  -752,
12781    -752,  -752,  -752,  -752,  -752,  -752,     0,     0,     0,     0,
12782    -752,  -752,  -752,  -752,     0,   835,  -752,     0,     0,  -752,
12783       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12784       0,     0,     0,     0,     0,     0,  -752,     0,     0,     0,
12785       0,  -114,  -752,  -752,  -752,  -123,  -752,  -752,  -752,  -752,
12786       0,  -752,     0,     0,  -752,     0,  -752,  -752,  -752,  -752,
12787    -752,  -752,  -752,     0,     0,  -752,     0,     0,     0,     0,
12788    -752,  -752,  -752,     0,     0,     0,  -752,  -752,     0,  -752,
12789       0,     0,     0,     0,     0,     0,     0,  -752,  -752,     0,
12790       0,     0,     0,     0,     0,     0,     0,     0,     0,  -752,
12791    -752,     0,  -752,  -752,  -752,  -752,  -752,     0,     0,     0,
12792       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12793       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12794    -752,     0,     0,     0,     0,     0,     0,     0,     0,  -752,
12795    -752,  -752,  -752,  -752,  -752,  -752,  -752,  -752,  -752,  -752,
12796    -752,  -752,     0,     0,     0,     0,  -752,  -752,  -752,  -752,
12797       0,   835,  -752,     0,     0,  -752,     0,     0,     0,     0,
12798       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12799       0,     0,  -752,     0,     0,     0,     0,  -752,  -752,  -752,
12800    -752,  -123,  -752,  -752,  -752,  -752,     0,  -752,     0,     0,
12801    -752,     0,  -752,  -752,  -752,  -752,  -752,  -752,  -323,     0,
12802       0,  -752,     0,     0,     0,     0,  -323,  -323,  -323,     0,
12803       0,     0,  -323,  -323,     0,  -323,     0,     0,     0,     0,
12804       0,     0,     0,  -323,     0,     0,     0,     0,     0,     0,
12805       0,     0,     0,     0,     0,  -323,  -323,     0,  -323,  -323,
12806    -323,  -323,  -323,     0,     0,     0,     0,     0,     0,     0,
12807       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12808       0,     0,     0,     0,     0,     0,  -323,     0,     0,     0,
12809       0,     0,     0,     0,     0,  -323,  -323,  -323,  -323,  -323,
12810    -323,  -323,  -323,  -323,  -323,  -323,  -323,  -323,     0,     0,
12811       0,     0,  -323,  -323,  -323,  -323,     0,   836,  -323,     0,
12812       0,  -323,     0,     0,     0,     0,     0,     0,     0,     0,
12813       0,     0,     0,     0,     0,     0,     0,     0,  -323,     0,
12814       0,     0,     0,  -116,     0,  -323,  -323,  -125,  -323,  -323,
12815    -323,  -323,     0,  -323,     0,     0,  -323,     0,  -323,  -323,
12816    -323,  -323,  -323,  -323,  -323,     0,     0,  -323,     0,     0,
12817       0,     0,  -323,  -323,  -323,     0,     0,     0,  -323,  -323,
12818       0,  -323,     0,     0,     0,     0,     0,     0,     0,  -323,
12819       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12820       0,  -323,  -323,     0,  -323,  -323,  -323,  -323,  -323,     0,
12821       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12822       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12823       0,     0,  -323,     0,     0,     0,     0,     0,     0,     0,
12824       0,  -323,  -323,  -323,  -323,  -323,  -323,  -323,  -323,  -323,
12825    -323,  -323,  -323,  -323,     0,     0,     0,     0,  -323,  -323,
12826    -323,  -323,     0,   836,  -323,     0,     0,  -323,     0,     0,
12827       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12828       0,     0,     0,     0,  -323,     0,     0,     0,     0,  -323,
12829       0,  -323,  -323,  -125,  -323,  -323,  -323,  -323,     0,  -323,
12830       0,     0,  -323,     0,  -323,  -323,  -323,  -323,  -323,  -323,
12831       0,     0,     0,  -323,     5,     6,     7,     8,     9,     0,
12832       0,     0,    10,    11,     0,     0,     0,    12,     0,    13,
12833      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
12834       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
12835      27,     0,     0,     0,     0,     0,    28,    29,    30,    31,
12836      32,    33,    34,    35,    36,    37,    38,    39,    40,     0,
12837      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
12838       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
12839       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12840       0,    50,    51,     0,     0,     0,     0,     0,     0,    52,
12841       0,     0,    53,    54,     0,    55,    56,     0,    57,     0,
12842       0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
12843       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12844       0,     0,     0,     0,     0,     0,     0,     0,     0,   521,
12845       0,     5,     6,     7,     8,     9,     0,    67,    68,    10,
12846      11,     0,    69,     0,    12,     0,    13,    14,    15,    16,
12847      17,    18,    19,     0,     0,     0,     0,     0,    20,    21,
12848      22,    23,    24,    25,    26,     0,     0,    27,     0,     0,
12849       0,     0,     0,    28,    29,   263,    31,    32,    33,    34,
12850      35,    36,    37,    38,    39,    40,     0,    41,    42,    43,
12851      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
12852       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
12853       0,     0,     0,     0,     0,     0,     0,     0,    50,    51,
12854       0,     0,     0,     0,     0,     0,    52,     0,     0,    53,
12855      54,     0,    55,    56,     0,    57,     0,     0,    58,    59,
12856      60,    61,    62,    63,    64,    65,    66,     0,     0,     0,
12857       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12858       0,     0,     0,     0,     0,     0,   521,     0,     5,     6,
12859       7,     8,     9,     0,    67,    68,    10,    11,     0,    69,
12860       0,    12,     0,    13,    14,    15,    16,    17,    18,    19,
12861       0,     0,     0,     0,     0,    20,    21,    22,    23,    24,
12862      25,    26,     0,     0,    27,     0,     0,     0,     0,     0,
12863      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
12864      38,    39,    40,     0,    41,    42,    43,    44,    45,    46,
12865      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12866      48,    49,     0,     0,     0,     0,     0,     0,     0,     0,
12867       0,     0,     0,     0,     0,    50,    51,     0,     0,     0,
12868       0,     0,     0,    52,     0,     0,    53,    54,     0,    55,
12869      56,     0,    57,     0,     0,    58,    59,    60,    61,    62,
12870      63,    64,    65,    66,     0,     0,     0,     0,     0,     0,
12871       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12872       0,     0,     0,     0,     0,     5,     6,     7,     0,     9,
12873       0,    67,    68,    10,    11,     0,    69,     0,    12,     0,
12874      13,    14,    15,    16,    17,    18,    19,     0,     0,     0,
12875       0,     0,    20,    21,    22,    23,    24,    25,    26,     0,
12876       0,   209,     0,     0,     0,     0,     0,     0,    29,     0,
12877       0,    32,    33,    34,    35,    36,    37,    38,    39,    40,
12878     210,    41,    42,    43,    44,    45,    46,    47,     0,     0,
12879       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
12880       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12881       0,     0,    50,    51,     0,     0,     0,     0,     0,     0,
12882     211,     0,     0,   212,    54,     0,    55,    56,     0,   213,
12883     214,   215,    58,    59,   216,    61,    62,    63,    64,    65,
12884      66,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12885       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12886       0,     0,   242,     5,     6,     7,     0,     9,    67,   217,
12887       0,    10,    11,    69,     0,     0,    12,     0,    13,    14,
12888      15,    16,    17,    18,    19,     0,     0,     0,     0,     0,
12889      20,    21,    22,    23,    24,    25,    26,     0,     0,   209,
12890       0,     0,     0,     0,     0,     0,    29,     0,     0,    32,
12891      33,    34,    35,    36,    37,    38,    39,    40,   210,    41,
12892      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
12893       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
12894       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12895      50,    51,     0,     0,     0,     0,     0,     0,   211,     0,
12896       0,   212,    54,     0,    55,    56,     0,   213,   214,   215,
12897      58,    59,   216,    61,    62,    63,    64,    65,    66,     0,
12898       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12899       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12900       5,     6,     7,     8,     9,     0,    67,   217,    10,    11,
12901       0,    69,     0,    12,     0,    13,    14,    15,    16,    17,
12902      18,    19,     0,     0,     0,     0,     0,    20,    21,    22,
12903      23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
12904       0,     0,    28,    29,     0,    31,    32,    33,    34,    35,
12905      36,    37,    38,    39,    40,     0,    41,    42,    43,    44,
12906      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
12907       0,     0,    48,    49,     0,     0,     0,     0,     0,     0,
12908       0,     0,     0,     0,     0,     0,     0,    50,    51,     0,
12909       0,     0,     0,     0,     0,    52,     0,     0,    53,    54,
12910       0,    55,    56,     0,    57,     0,     0,    58,    59,    60,
12911      61,    62,    63,    64,    65,    66,     0,     0,     0,     0,
12912       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12913       0,     0,     0,     0,     0,     0,     0,     5,     6,     7,
12914       0,     9,     0,    67,    68,    10,    11,     0,    69,     0,
12915      12,     0,    13,    14,    15,    16,    17,    18,    19,     0,
12916       0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
12917      26,     0,     0,   209,     0,     0,     0,     0,     0,     0,
12918      29,     0,     0,    32,    33,    34,    35,    36,    37,    38,
12919      39,    40,   210,    41,    42,    43,    44,    45,    46,    47,
12920       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
12921      49,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12922       0,     0,     0,     0,    50,   458,     0,     0,     0,     0,
12923       0,     0,   211,     0,     0,   212,    54,     0,    55,    56,
12924       0,   213,   214,   215,    58,    59,   216,    61,    62,    63,
12925      64,    65,    66,     0,     0,     0,     0,     0,     0,     0,
12926       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12927       0,     0,     0,     0,     5,     6,     7,     0,     9,     0,
12928      67,   217,    10,    11,     0,    69,     0,    12,     0,    13,
12929      14,    15,   250,   251,    18,    19,     0,     0,     0,     0,
12930       0,    20,   252,   253,    23,    24,    25,    26,     0,     0,
12931     209,     0,     0,     0,     0,     0,     0,    29,     0,     0,
12932      32,    33,    34,    35,    36,    37,    38,    39,    40,   210,
12933      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
12934       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
12935       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12936       0,    50,    51,     0,     0,     0,     0,     0,     0,   211,
12937       0,     0,   212,    54,     0,    55,    56,     0,   681,   214,
12938     215,    58,    59,   216,    61,    62,    63,    64,    65,    66,
12939       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12940       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12941       0,     5,     6,     7,     0,     9,     0,    67,   217,    10,
12942      11,     0,    69,     0,    12,     0,    13,    14,    15,   250,
12943     251,    18,    19,     0,     0,     0,     0,     0,    20,   252,
12944     253,    23,    24,    25,    26,     0,     0,   209,     0,     0,
12945       0,     0,     0,     0,    29,     0,     0,    32,    33,    34,
12946      35,    36,    37,    38,    39,    40,   210,    41,    42,    43,
12947      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
12948       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
12949       0,     0,     0,     0,     0,     0,     0,     0,    50,   458,
12950       0,     0,     0,     0,     0,     0,   211,     0,     0,   212,
12951      54,     0,    55,    56,     0,   681,   214,   215,    58,    59,
12952     216,    61,    62,    63,    64,    65,    66,     0,     0,     0,
12953       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12954       0,     0,     0,     0,     0,     0,     0,     0,     5,     6,
12955       7,     0,     9,     0,    67,   217,    10,    11,     0,    69,
12956       0,    12,     0,    13,    14,    15,   250,   251,    18,    19,
12957       0,     0,     0,     0,     0,    20,   252,   253,    23,    24,
12958      25,    26,     0,     0,   209,     0,     0,     0,     0,     0,
12959       0,    29,     0,     0,    32,    33,    34,    35,    36,    37,
12960      38,    39,    40,   210,    41,    42,    43,    44,    45,    46,
12961      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12962      48,    49,     0,     0,     0,     0,     0,     0,     0,     0,
12963       0,     0,     0,     0,     0,    50,    51,     0,     0,     0,
12964       0,     0,     0,   211,     0,     0,   212,    54,     0,    55,
12965      56,     0,   213,   214,     0,    58,    59,   216,    61,    62,
12966      63,    64,    65,    66,     0,     0,     0,     0,     0,     0,
12967       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12968       0,     0,     0,     0,     0,     5,     6,     7,     0,     9,
12969       0,    67,   217,    10,    11,     0,    69,     0,    12,     0,
12970      13,    14,    15,   250,   251,    18,    19,     0,     0,     0,
12971       0,     0,    20,   252,   253,    23,    24,    25,    26,     0,
12972       0,   209,     0,     0,     0,     0,     0,     0,    29,     0,
12973       0,    32,    33,    34,    35,    36,    37,    38,    39,    40,
12974     210,    41,    42,    43,    44,    45,    46,    47,     0,     0,
12975       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
12976       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12977       0,     0,    50,    51,     0,     0,     0,     0,     0,     0,
12978     211,     0,     0,   212,    54,     0,    55,    56,     0,     0,
12979     214,   215,    58,    59,   216,    61,    62,    63,    64,    65,
12980      66,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12981       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12982       0,     0,     5,     6,     7,     0,     9,     0,    67,   217,
12983      10,    11,     0,    69,     0,    12,     0,    13,    14,    15,
12984     250,   251,    18,    19,     0,     0,     0,     0,     0,    20,
12985     252,   253,    23,    24,    25,    26,     0,     0,   209,     0,
12986       0,     0,     0,     0,     0,    29,     0,     0,    32,    33,
12987      34,    35,    36,    37,    38,    39,    40,   210,    41,    42,
12988      43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
12989       0,     0,     0,     0,    48,    49,     0,     0,     0,     0,
12990       0,     0,     0,     0,     0,     0,     0,     0,     0,    50,
12991      51,     0,     0,     0,     0,     0,     0,   211,     0,     0,
12992     212,    54,     0,    55,    56,     0,   681,   214,     0,    58,
12993      59,   216,    61,    62,    63,    64,    65,    66,     0,     0,
12994       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
12995       0,     0,     0,     0,     0,     0,     0,     0,     0,     5,
12996       6,     7,     0,     9,     0,    67,   217,    10,    11,     0,
12997      69,     0,    12,     0,    13,    14,    15,   250,   251,    18,
12998      19,     0,     0,     0,     0,     0,    20,   252,   253,    23,
12999      24,    25,    26,     0,     0,   209,     0,     0,     0,     0,
13000       0,     0,    29,     0,     0,    32,    33,    34,    35,    36,
13001      37,    38,    39,    40,   210,    41,    42,    43,    44,    45,
13002      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
13003       0,    48,    49,     0,     0,     0,     0,     0,     0,     0,
13004       0,     0,     0,     0,     0,     0,    50,    51,     0,     0,
13005       0,     0,     0,     0,   211,     0,     0,   212,    54,     0,
13006      55,    56,     0,     0,   214,     0,    58,    59,   216,    61,
13007      62,    63,    64,    65,    66,     0,     0,     0,     0,     0,
13008       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13009       0,     0,     0,     0,     0,     0,     5,     6,     7,     0,
13010       9,     0,    67,   217,    10,    11,     0,    69,     0,    12,
13011       0,    13,    14,    15,    16,    17,    18,    19,     0,     0,
13012       0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
13013       0,     0,    27,     0,     0,     0,     0,     0,     0,    29,
13014       0,     0,    32,    33,    34,    35,    36,    37,    38,    39,
13015      40,     0,    41,    42,    43,    44,    45,    46,    47,     0,
13016       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
13017       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13018       0,     0,     0,    50,    51,     0,     0,     0,     0,     0,
13019       0,   211,     0,     0,   212,    54,     0,    55,    56,     0,
13020       0,     0,     0,    58,    59,    60,    61,    62,    63,    64,
13021      65,    66,     0,     0,     0,     0,     0,     0,     0,     0,
13022       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13023       0,   312,     0,   313,     5,     6,     7,     0,     9,    67,
13024      68,     0,    10,    11,    69,     0,     0,    12,     0,    13,
13025      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
13026       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
13027      27,     0,     0,     0,     0,     0,     0,    29,     0,     0,
13028      32,    33,    34,    35,    36,    37,    38,    39,    40,     0,
13029      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
13030       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
13031       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13032       0,    50,    51,     0,     0,     0,     0,     0,     0,   211,
13033       0,     0,   212,    54,     0,    55,    56,     0,     0,     0,
13034       0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
13035       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13036       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13037       0,   242,     5,     6,     7,     0,     9,    67,    68,     0,
13038      10,    11,    69,     0,     0,    12,     0,    13,    14,    15,
13039      16,    17,    18,    19,     0,     0,     0,     0,     0,    20,
13040      21,    22,    23,    24,    25,    26,     0,     0,   209,     0,
13041       0,     0,     0,     0,     0,    29,     0,     0,    32,    33,
13042      34,    35,    36,    37,    38,    39,    40,     0,    41,    42,
13043      43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
13044       0,     0,     0,     0,    48,    49,     0,     0,     0,     0,
13045       0,     0,     0,     0,     0,     0,     0,     0,     0,    50,
13046      51,     0,     0,     0,     0,     0,     0,   211,     0,     0,
13047     212,    54,     0,    55,    56,     0,   577,     0,     0,    58,
13048      59,    60,    61,    62,    63,    64,    65,    66,     0,     0,
13049       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13050       0,     0,     0,     0,     0,     0,     0,     0,     0,     5,
13051       6,     7,     0,     9,     0,    67,   217,    10,    11,     0,
13052      69,     0,    12,     0,    13,    14,    15,   250,   251,    18,
13053      19,     0,     0,     0,     0,     0,    20,   252,   253,    23,
13054      24,    25,    26,     0,     0,   209,     0,     0,     0,     0,
13055       0,     0,    29,     0,     0,    32,    33,    34,    35,    36,
13056      37,    38,    39,    40,     0,    41,    42,    43,    44,    45,
13057      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
13058       0,    48,    49,     0,     0,     0,     0,     0,     0,     0,
13059       0,     0,     0,     0,     0,     0,    50,    51,     0,     0,
13060       0,     0,     0,     0,   211,     0,     0,   212,    54,     0,
13061      55,    56,     0,   577,     0,     0,    58,    59,    60,    61,
13062      62,    63,    64,    65,    66,     0,     0,     0,     0,     0,
13063       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13064       0,     0,     0,     0,     0,     0,     5,     6,     7,     0,
13065       9,     0,    67,   217,    10,    11,     0,    69,     0,    12,
13066       0,    13,    14,    15,   250,   251,    18,    19,     0,     0,
13067       0,     0,     0,    20,   252,   253,    23,    24,    25,    26,
13068       0,     0,   209,     0,     0,     0,     0,     0,     0,    29,
13069       0,     0,    32,    33,    34,    35,    36,    37,    38,    39,
13070      40,     0,    41,    42,    43,    44,    45,    46,    47,     0,
13071       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
13072       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13073       0,     0,     0,    50,    51,     0,     0,     0,     0,     0,
13074       0,   211,     0,     0,   212,    54,     0,    55,    56,     0,
13075     952,     0,     0,    58,    59,    60,    61,    62,    63,    64,
13076      65,    66,     0,     0,     0,     0,     0,     0,     0,     0,
13077       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13078       0,     0,     0,     5,     6,     7,     0,     9,     0,    67,
13079     217,    10,    11,     0,    69,     0,    12,     0,    13,    14,
13080      15,   250,   251,    18,    19,     0,     0,     0,     0,     0,
13081      20,   252,   253,    23,    24,    25,    26,     0,     0,   209,
13082       0,     0,     0,     0,     0,     0,    29,     0,     0,    32,
13083      33,    34,    35,    36,    37,    38,    39,    40,     0,    41,
13084      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
13085       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
13086       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13087      50,    51,     0,     0,     0,     0,     0,     0,   211,     0,
13088       0,   212,    54,     0,    55,    56,     0,  1023,     0,     0,
13089      58,    59,    60,    61,    62,    63,    64,    65,    66,     0,
13090       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13091       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13092       5,     6,     7,     0,     9,     0,    67,   217,    10,    11,
13093       0,    69,     0,    12,     0,    13,    14,    15,   250,   251,
13094      18,    19,     0,     0,     0,     0,     0,    20,   252,   253,
13095      23,    24,    25,    26,     0,     0,   209,     0,     0,     0,
13096       0,     0,     0,    29,     0,     0,    32,    33,    34,    35,
13097      36,    37,    38,    39,    40,     0,    41,    42,    43,    44,
13098      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
13099       0,     0,    48,    49,     0,     0,     0,     0,     0,     0,
13100       0,     0,     0,     0,     0,     0,     0,    50,    51,     0,
13101       0,     0,     0,     0,     0,   211,     0,     0,   212,    54,
13102       0,    55,    56,     0,  1189,     0,     0,    58,    59,    60,
13103      61,    62,    63,    64,    65,    66,     0,     0,     0,     0,
13104       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13105       0,     0,     0,     0,     0,     0,     0,     5,     6,     7,
13106       0,     9,     0,    67,   217,    10,    11,     0,    69,     0,
13107      12,     0,    13,    14,    15,   250,   251,    18,    19,     0,
13108       0,     0,     0,     0,    20,   252,   253,    23,    24,    25,
13109      26,     0,     0,   209,     0,     0,     0,     0,     0,     0,
13110      29,     0,     0,    32,    33,    34,    35,    36,    37,    38,
13111      39,    40,     0,    41,    42,    43,    44,    45,    46,    47,
13112       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
13113      49,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13114       0,     0,     0,     0,    50,    51,     0,     0,     0,     0,
13115       0,     0,   211,     0,     0,   212,    54,     0,    55,    56,
13116       0,     0,     0,     0,    58,    59,    60,    61,    62,    63,
13117      64,    65,    66,     0,     0,     0,     0,     0,     0,     0,
13118       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13119       0,     0,     0,     0,     5,     6,     7,     0,     9,     0,
13120      67,   217,    10,    11,     0,    69,     0,    12,     0,    13,
13121      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
13122       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
13123     209,     0,     0,     0,     0,     0,     0,    29,     0,     0,
13124      32,    33,    34,    35,    36,    37,    38,    39,    40,     0,
13125      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
13126       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
13127       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13128       0,    50,    51,     0,     0,     0,     0,     0,     0,   211,
13129       0,     0,   212,    54,     0,    55,    56,     0,     0,     0,
13130       0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
13131       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13132       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13133       0,     5,     6,     7,     0,     9,     0,    67,   217,    10,
13134      11,     0,    69,     0,    12,     0,    13,    14,    15,    16,
13135      17,    18,    19,     0,     0,     0,     0,     0,    20,    21,
13136      22,    23,    24,    25,    26,     0,     0,    27,     0,     0,
13137       0,     0,     0,     0,    29,     0,     0,    32,    33,    34,
13138      35,    36,    37,    38,    39,    40,     0,    41,    42,    43,
13139      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
13140       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
13141       0,     0,     0,     0,     0,     0,     0,     0,    50,    51,
13142       0,     0,     0,     0,     0,     0,   211,     0,     0,   212,
13143      54,     0,    55,    56,     0,     0,     0,     0,    58,    59,
13144      60,    61,    62,    63,    64,    65,    66,     0,     0,     0,
13145       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13146       0,     0,     0,     0,     0,     0,     0,     0,     5,     6,
13147       7,     0,     9,     0,    67,    68,    10,    11,     0,    69,
13148       0,    12,     0,    13,    14,    15,   250,   251,    18,    19,
13149       0,     0,     0,     0,     0,    20,   252,   253,    23,    24,
13150      25,    26,     0,     0,   209,     0,     0,     0,     0,     0,
13151       0,   282,     0,     0,    32,    33,    34,    35,    36,    37,
13152      38,    39,    40,     0,    41,    42,    43,    44,    45,    46,
13153      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13154       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13155       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13156       0,     0,     0,   283,     0,     0,   343,    54,     0,    55,
13157      56,     0,   344,     0,     0,    58,    59,    60,    61,    62,
13158      63,    64,    65,    66,     0,     0,     0,     0,     0,     0,
13159       5,     6,     7,     0,     9,     0,     0,     0,    10,    11,
13160       0,     0,     0,    12,     0,    13,    14,    15,   250,   251,
13161      18,    19,     0,     0,     0,     0,   285,    20,   252,   253,
13162      23,    24,    25,    26,     0,     0,   209,     0,     0,     0,
13163       0,     0,     0,   282,     0,     0,    32,    33,    34,    35,
13164      36,    37,    38,    39,    40,     0,    41,    42,    43,    44,
13165      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
13166       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13167       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13168       0,     0,     0,     0,     0,   392,     0,     0,    53,    54,
13169       0,    55,    56,     0,    57,     0,     0,    58,    59,    60,
13170      61,    62,    63,    64,    65,    66,     0,     0,     0,     0,
13171       0,     0,     5,     6,     7,     0,     9,     0,     0,     0,
13172      10,    11,     0,     0,     0,    12,     0,    13,    14,    15,
13173     250,   251,    18,    19,     0,     0,     0,     0,   285,    20,
13174     252,   253,    23,    24,    25,    26,     0,     0,   209,     0,
13175       0,     0,     0,     0,     0,   282,     0,     0,    32,    33,
13176      34,   400,    36,    37,    38,   401,    40,     0,    41,    42,
13177      43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
13178       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13179       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13180       0,     0,     0,   402,     0,     0,     0,   403,     0,     0,
13181     212,    54,     0,    55,    56,     0,     0,     0,     0,    58,
13182      59,    60,    61,    62,    63,    64,    65,    66,     0,     0,
13183       0,     0,     0,     0,     5,     6,     7,     0,     9,     0,
13184       0,     0,    10,    11,     0,     0,     0,    12,     0,    13,
13185      14,    15,   250,   251,    18,    19,     0,     0,     0,     0,
13186     285,    20,   252,   253,    23,    24,    25,    26,     0,     0,
13187     209,     0,     0,     0,     0,     0,     0,   282,     0,     0,
13188      32,    33,    34,    35,    36,    37,    38,    39,    40,     0,
13189      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
13190       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13191       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13192       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
13193       0,     0,   212,    54,     0,    55,    56,     0,     0,     0,
13194       0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
13195       0,     0,     0,     0,     0,     0,   584,     5,     6,     7,
13196       0,     9,     0,     0,     0,    10,    11,     0,     0,     0,
13197      12,     0,    13,    14,    15,   250,   251,    18,    19,     0,
13198       0,     0,   285,     0,    20,   252,   253,    23,    24,    25,
13199      26,     0,     0,   209,     0,     0,     0,     0,     0,     0,
13200     282,     0,     0,    32,    33,    34,   400,    36,    37,    38,
13201     401,    40,     0,    41,    42,    43,    44,    45,    46,    47,
13202       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13203       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13204       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13205       0,     0,   403,     0,     0,   212,    54,     0,    55,    56,
13206       0,     0,     0,     0,    58,    59,    60,    61,    62,    63,
13207      64,    65,    66,     0,     0,     0,     0,     0,     0,     5,
13208       6,     7,     0,     9,     0,     0,     0,    10,    11,     0,
13209       0,     0,    12,     0,    13,    14,    15,   250,   251,    18,
13210      19,     0,     0,     0,     0,   285,    20,   252,   253,    23,
13211      24,    25,    26,     0,     0,   209,     0,     0,     0,     0,
13212       0,     0,   282,     0,     0,    32,    33,    34,    35,    36,
13213      37,    38,    39,    40,     0,    41,    42,    43,    44,    45,
13214      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
13215       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13216       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13217       0,     0,     0,     0,   283,     0,     0,   343,    54,     0,
13218      55,    56,     0,     0,     0,     0,    58,    59,    60,    61,
13219      62,    63,    64,    65,    66,     0,     0,     0,     0,     0,
13220       0,     5,     6,     7,     0,     9,     0,     0,     0,    10,
13221      11,     0,     0,     0,    12,     0,    13,    14,    15,   250,
13222     251,    18,    19,     0,     0,     0,     0,   285,    20,   252,
13223     253,    23,    24,    25,    26,     0,     0,   209,     0,     0,
13224       0,     0,     0,     0,   282,     0,     0,    32,    33,    34,
13225      35,    36,    37,    38,    39,    40,     0,    41,    42,    43,
13226      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
13227       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13228       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13229       0,     0,     0,     0,     0,     0,  1148,     0,     0,   212,
13230      54,     0,    55,    56,     0,     0,     0,     0,    58,    59,
13231      60,    61,    62,    63,    64,    65,    66,     0,     0,     0,
13232       0,     0,     0,     5,     6,     7,     0,     9,     0,     0,
13233       0,    10,    11,     0,     0,     0,    12,     0,    13,    14,
13234      15,   250,   251,    18,    19,     0,     0,     0,     0,   285,
13235      20,   252,   253,    23,    24,    25,    26,     0,     0,   209,
13236       0,     0,     0,     0,     0,     0,   282,     0,     0,    32,
13237      33,    34,    35,    36,    37,    38,    39,    40,     0,    41,
13238      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
13239       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13240       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13241       0,     0,     0,     0,     0,     0,     0,     0,  1163,     0,
13242       0,   212,    54,     0,    55,    56,     0,     0,     0,     0,
13243      58,    59,    60,    61,    62,    63,    64,    65,    66,     0,
13244       0,     0,     0,     0,     0,   129,   130,   131,   132,   133,
13245     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
13246     144,   145,   146,   147,   148,   149,   150,   151,   152,     0,
13247       0,   285,   153,   154,   155,   411,   412,   413,   414,   160,
13248     161,   162,     0,     0,     0,     0,     0,   163,   164,   165,
13249     166,   415,   416,   417,   418,   171,    37,    38,   419,    40,
13250       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13251       0,     0,     0,     0,     0,     0,     0,   173,   174,   175,
13252     176,   177,   178,   179,   180,   181,     0,     0,   182,   183,
13253       0,     0,     0,     0,   184,   185,   186,   187,     0,     0,
13254       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
13255     189,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13256       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13257       0,     0,   190,   191,   192,   193,   194,   195,   420,     0,
13258       0,     0,     0,   196,   197,   198,   199,   200,   201,   202,
13259     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
13260     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
13261     149,   150,   151,   152,     0,     0,     0,   153,   154,   155,
13262     156,   157,   158,   159,   160,   161,   162,     0,     0,     0,
13263       0,     0,   163,   164,   165,   166,   167,   168,   169,   170,
13264     171,   295,   296,   172,   297,     0,     0,     0,     0,     0,
13265       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13266       0,     0,   173,   174,   175,   176,   177,   178,   179,   180,
13267     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
13268     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
13269       0,     0,     0,     0,   188,   189,     0,     0,     0,     0,
13270       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13271       0,     0,     0,     0,     0,     0,     0,   190,   191,   192,
13272     193,   194,   195,     0,     0,     0,     0,     0,   196,   197,
13273     198,   199,   200,   201,   202,   129,   130,   131,   132,   133,
13274     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
13275     144,   145,   146,   147,   148,   149,   150,   151,   152,     0,
13276       0,     0,   153,   154,   155,   156,   157,   158,   159,   160,
13277     161,   162,     0,     0,     0,     0,     0,   163,   164,   165,
13278     166,   167,   168,   169,   170,   171,   244,     0,   172,     0,
13279       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13280       0,     0,     0,     0,     0,     0,     0,   173,   174,   175,
13281     176,   177,   178,   179,   180,   181,     0,     0,   182,   183,
13282       0,     0,     0,     0,   184,   185,   186,   187,     0,     0,
13283       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
13284     189,     0,     0,    59,     0,     0,     0,     0,     0,     0,
13285       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13286       0,     0,   190,   191,   192,   193,   194,   195,     0,     0,
13287       0,     0,     0,   196,   197,   198,   199,   200,   201,   202,
13288     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
13289     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
13290     149,   150,   151,   152,     0,     0,     0,   153,   154,   155,
13291     156,   157,   158,   159,   160,   161,   162,     0,     0,     0,
13292       0,     0,   163,   164,   165,   166,   167,   168,   169,   170,
13293     171,     0,     0,   172,     0,     0,     0,     0,     0,     0,
13294       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13295       0,     0,   173,   174,   175,   176,   177,   178,   179,   180,
13296     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
13297     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
13298       0,     0,     0,     0,   188,   189,     0,     0,    59,     0,
13299       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13300       0,     0,     0,     0,     0,     0,     0,   190,   191,   192,
13301     193,   194,   195,     0,     0,     0,     0,     0,   196,   197,
13302     198,   199,   200,   201,   202,   129,   130,   131,   132,   133,
13303     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
13304     144,   145,   146,   147,   148,   149,   150,   151,   152,     0,
13305       0,     0,   153,   154,   155,   156,   157,   158,   159,   160,
13306     161,   162,     0,     0,     0,     0,     0,   163,   164,   165,
13307     166,   167,   168,   169,   170,   171,     0,     0,   172,     0,
13308       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13309       0,     0,     0,     0,     0,     0,     0,   173,   174,   175,
13310     176,   177,   178,   179,   180,   181,     0,     0,   182,   183,
13311       0,     0,     0,     0,   184,   185,   186,   187,    23,    24,
13312      25,    26,     0,     0,     0,     0,     0,     0,     0,   188,
13313     189,     0,     0,     0,    32,    33,    34,   789,     0,     0,
13314       0,   790,     0,     0,    41,    42,    43,    44,    45,     0,
13315       0,     0,   190,   191,   192,   193,   194,   195,     0,     0,
13316       0,     0,     0,   196,   197,   198,   199,   200,   201,   202,
13317       0,   942,     0,     0,     0,   792,   793,     0,     0,     0,
13318       0,     0,     0,   794,     0,     0,   795,     0,     0,   796,
13319     797,     0,     0,     0,     0,    58,    59,    60,    61,    62,
13320      63,    64,    65,    66,   348,   349,   350,   351,   352,   353,
13321     354,   355,   356,   357,   358,   359,   360,     0,     0,     0,
13322     800,   361,   362,     0,     0,     0,     0,     0,     0,     0,
13323       0,     0,     0,     0,     0,     0,   285,     0,     0,     0,
13324       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13325       0,     0,     0,     0,     0,     0,     0,   364,   365,   366,
13326     367,     0,   368,   623,   624,     0,     0,   625,   369,   370,
13327     371,   372,   373,     0,     0,     0,   374,     0,     0,     0,
13328       0,     0,     0,     0,     0,     0,   173,   174,   175,   176,
13329     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
13330       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
13331       0,     0,     0,     0,     0,     0,     0,     0,   188,   189,
13332       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13333       0,     0,     0,     0,     0,     0,   633,   634,     0,     0,
13334     635,   190,   191,   192,   193,   194,   195,   238,     0,     0,
13335       0,     0,   196,   197,   198,   199,   200,   201,   202,   173,
13336     174,   175,   176,   177,   178,   179,   180,   181,     0,     0,
13337     182,   183,     0,     0,     0,     0,   184,   185,   186,   187,
13338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13339       0,   188,   189,     0,     0,     0,     0,     0,     0,     0,
13340       0,     0,     0,     0,     0,     0,     0,     0,     0,   685,
13341     624,     0,     0,   686,   190,   191,   192,   193,   194,   195,
13342     238,     0,     0,     0,     0,   196,   197,   198,   199,   200,
13343     201,   202,   173,   174,   175,   176,   177,   178,   179,   180,
13344     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
13345     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
13346       0,     0,     0,     0,   188,   189,     0,     0,     0,     0,
13347       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13348       0,     0,   688,   634,     0,     0,   689,   190,   191,   192,
13349     193,   194,   195,   238,     0,     0,     0,     0,   196,   197,
13350     198,   199,   200,   201,   202,   173,   174,   175,   176,   177,
13351     178,   179,   180,   181,     0,     0,   182,   183,     0,     0,
13352       0,     0,   184,   185,   186,   187,     0,     0,     0,     0,
13353       0,     0,     0,     0,     0,     0,     0,   188,   189,     0,
13354       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13355       0,     0,     0,     0,     0,   713,   624,     0,     0,   714,
13356     190,   191,   192,   193,   194,   195,   238,     0,     0,     0,
13357       0,   196,   197,   198,   199,   200,   201,   202,   173,   174,
13358     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
13359     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
13360       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13361     188,   189,     0,     0,     0,     0,     0,     0,     0,     0,
13362       0,     0,     0,     0,     0,     0,     0,     0,   716,   634,
13363       0,     0,   717,   190,   191,   192,   193,   194,   195,   238,
13364       0,     0,     0,     0,   196,   197,   198,   199,   200,   201,
13365     202,   173,   174,   175,   176,   177,   178,   179,   180,   181,
13366       0,     0,   182,   183,     0,     0,     0,     0,   184,   185,
13367     186,   187,     0,     0,     0,     0,     0,     0,     0,     0,
13368       0,     0,     0,   188,   189,     0,     0,     0,     0,     0,
13369       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13370       0,   863,   624,     0,     0,   864,   190,   191,   192,   193,
13371     194,   195,   238,     0,     0,     0,     0,   196,   197,   198,
13372     199,   200,   201,   202,   173,   174,   175,   176,   177,   178,
13373     179,   180,   181,     0,     0,   182,   183,     0,     0,     0,
13374       0,   184,   185,   186,   187,     0,     0,     0,     0,     0,
13375       0,     0,     0,     0,     0,     0,   188,   189,     0,     0,
13376       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13377       0,     0,     0,     0,   866,   634,     0,     0,   867,   190,
13378     191,   192,   193,   194,   195,   238,     0,     0,     0,     0,
13379     196,   197,   198,   199,   200,   201,   202,   173,   174,   175,
13380     176,   177,   178,   179,   180,   181,     0,     0,   182,   183,
13381       0,     0,     0,     0,   184,   185,   186,   187,     0,     0,
13382       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
13383     189,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13384       0,     0,     0,     0,     0,     0,     0,   872,   624,     0,
13385       0,   873,   190,   191,   192,   193,   194,   195,   238,     0,
13386       0,     0,     0,   196,   197,   198,   199,   200,   201,   202,
13387     173,   174,   175,   176,   177,   178,   179,   180,   181,     0,
13388       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
13389     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13390       0,     0,   188,   189,     0,     0,     0,     0,     0,     0,
13391       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13392     668,   634,     0,     0,   669,   190,   191,   192,   193,   194,
13393     195,   238,     0,     0,     0,     0,   196,   197,   198,   199,
13394     200,   201,   202,   173,   174,   175,   176,   177,   178,   179,
13395     180,   181,     0,     0,   182,   183,     0,     0,     0,     0,
13396     184,   185,   186,   187,     0,     0,     0,     0,     0,     0,
13397       0,     0,     0,     0,     0,   188,   189,     0,     0,     0,
13398       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13399       0,     0,     0,   958,   624,     0,     0,   959,   190,   191,
13400     192,   193,   194,   195,   238,     0,     0,     0,     0,   196,
13401     197,   198,   199,   200,   201,   202,   173,   174,   175,   176,
13402     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
13403       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
13404       0,     0,     0,     0,     0,     0,     0,     0,   188,   189,
13405       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13406       0,     0,     0,     0,     0,     0,   961,   634,     0,     0,
13407     962,   190,   191,   192,   193,   194,   195,   238,     0,     0,
13408       0,     0,   196,   197,   198,   199,   200,   201,   202,   173,
13409     174,   175,   176,   177,   178,   179,   180,   181,     0,     0,
13410     182,   183,     0,     0,     0,     0,   184,   185,   186,   187,
13411       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13412       0,   188,   189,     0,     0,     0,     0,     0,     0,     0,
13413       0,     0,     0,     0,     0,     0,     0,     0,     0,  1242,
13414     624,     0,     0,  1243,   190,   191,   192,   193,   194,   195,
13415     238,     0,     0,     0,     0,   196,   197,   198,   199,   200,
13416     201,   202,   173,   174,   175,   176,   177,   178,   179,   180,
13417     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
13418     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
13419       0,     0,     0,     0,   188,   189,     0,     0,     0,     0,
13420       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13421       0,     0,  1245,   634,     0,     0,  1246,   190,   191,   192,
13422     193,   194,   195,   238,     0,     0,     0,     0,   196,   197,
13423     198,   199,   200,   201,   202,   173,   174,   175,   176,   177,
13424     178,   179,   180,   181,     0,     0,   182,   183,     0,     0,
13425       0,     0,   184,   185,   186,   187,     0,     0,     0,     0,
13426       0,     0,     0,     0,     0,     0,     0,   188,   189,     0,
13427       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13428       0,     0,     0,     0,     0,  1252,   624,     0,     0,  1253,
13429     190,   191,   192,   193,   194,   195,   238,     0,     0,     0,
13430       0,   196,   197,   198,   199,   200,   201,   202,   173,   174,
13431     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
13432     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
13433       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13434     188,   189,     0,     0,     0,     0,     0,     0,     0,     0,
13435       0,     0,     0,     0,     0,     0,     0,     0,   668,   634,
13436       0,     0,   669,   190,   191,   192,   193,   194,   195,   238,
13437       0,     0,     0,     0,   196,   197,   198,   199,   200,   201,
13438     202,   173,   174,   175,   176,   177,   178,   179,   180,   181,
13439       0,     0,   182,   183,     0,     0,     0,     0,   184,   185,
13440     186,   187,     0,     0,     0,     0,     0,     0,     0,     0,
13441       0,     0,     0,   188,   189,   348,   349,   350,   351,   352,
13442     353,   354,   355,   356,   357,   358,   359,   360,     0,     0,
13443       0,     0,   361,   362,     0,     0,   190,   191,   192,   193,
13444     194,   195,     0,     0,     0,     0,     0,   196,   197,   198,
13445     199,   200,   201,   202,     0,     0,     0,     0,     0,     0,
13446       0,     0,     0,     0,     0,     0,     0,     0,   364,   365,
13447     366,   367,     0,   368,     0,     0,     0,     0,     0,   369,
13448     370,   371,   372,   373,     0,     0,     0,   374,   348,   349,
13449     350,   351,   352,   353,   354,   355,   356,   357,   358,  -776,
13450    -776,     0,     0,     0,     0,   361,   362,     0,     0,     0,
13451       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13452       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13453       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
13454       0,   364,   365,   366,   367,     0,   368,     0,     0,     0,
13455       0,     0,   369,   370,   371,   372,   373 ];
13456
13457#[allow(non_upper_case_globals)]
13458const yycheck_: &'static [i32] = &[      2,    60,    71,    59,     8,    91,   385,    16,    17,   105,
13459       8,    96,     2,   611,     4,    22,    57,   556,   104,   324,
13460       4,   452,   238,   328,    28,   331,    53,    28,    97,    94,
13461      28,    22,    97,   380,   403,   746,    85,   346,   276,   858,
13462      68,   749,   280,    97,    85,   101,   232,   444,    16,    17,
13463     911,   538,   597,    55,    56,   452,   944,    98,    99,   100,
13464     491,    59,   944,    53,    54,   753,   611,    57,   324,   851,
13465      69,    57,   328,    80,    76,    77,   382,    77,   379,   328,
13466     381,   913,   501,   379,    25,   381,    26,    55,    56,    80,
13467      71,   431,   432,   102,   796,    85,    16,    17,    77,    29,
13468      13,   448,    66,   101,   100,    99,    16,    17,    98,    99,
13469     100,   101,    37,    38,    25,   264,   970,    13,    93,    94,
13470      27,   346,    97,  1138,     0,   103,   597,   428,     2,  1167,
13471       4,   746,   428,   987,   102,   129,    34,    66,   753,    99,
13472     611,   227,    99,    52,   140,    55,   447,    56,   449,    99,
13473      56,   447,   125,   449,    52,   119,   503,   216,   431,   432,
13474     302,   303,   140,    13,   140,   584,   561,   140,   563,   129,
13475     256,    25,   129,    13,   127,   476,   477,   450,   451,   129,
13476      54,   477,   102,    27,   125,    29,   126,   140,   792,   793,
13477     119,  1073,   102,   123,   343,   136,    13,   266,   126,   970,
13478     505,   502,    26,   504,   290,   478,   431,   432,   504,     2,
13479    1248,     4,   266,    13,   125,   140,   218,   219,   989,   219,
13480      34,  1236,   212,   136,   226,   138,   235,   140,   237,   238,
13481     232,   138,   126,   140,   597,   284,   238,   264,    52,   218,
13482     219,    28,   138,   284,   140,   247,   733,   734,   611,   505,
13483      13,   100,   317,   318,   319,   320,   505,   247,   109,   249,
13484      53,    54,   253,   254,    57,   696,   241,   235,   243,   237,
13485      53,   125,  1160,   139,   264,   125,   125,   463,   749,  1167,
13486     131,  1169,  1143,    13,   139,   266,   285,   287,   138,    13,
13487     140,   660,    85,    13,   284,   997,   998,   694,   138,   696,
13488     140,    68,   126,   344,   651,    98,    99,   100,   101,   395,
13489    1142,    25,   136,   341,   661,   235,   343,   237,   346,   136,
13490     389,   138,   387,   140,  1178,   235,   316,   237,   238,   944,
13491      97,   321,   316,     9,    25,   389,   139,   327,   138,    15,
13492     140,   331,   317,   318,   319,   320,  1057,   322,   323,   650,
13493      68,   652,    68,   343,   344,    97,   652,   663,   344,   660,
13494    1248,   662,  1250,   782,  1052,    25,   662,  1255,    25,  1257,
13495      99,   380,  1191,   247,   516,   138,   518,   140,   380,    97,
13496      13,    97,   753,   381,   923,   756,   128,  1275,   992,   993,
13497     381,    99,   382,    99,   136,   139,   386,    25,   388,    25,
13498     129,  1172,    99,   431,   432,    99,  1177,  1178,   138,  1191,
13499     140,   125,   387,   718,   138,   125,   140,   125,   138,   212,
13500     140,   129,  1020,   129,   911,   794,   913,   402,   125,   212,
13501     428,   341,   129,   796,   125,   129,   346,  1052,   282,   448,
13502     787,   746,   316,   129,   841,   136,   448,   321,   753,  1160,
13503     813,   449,   501,    68,   247,   764,   249,  1165,   449,   461,
13504     501,   463,   718,   129,    58,   125,   249,   471,   125,   718,
13505     471,   264,   710,   471,   597,  1020,   444,    25,   694,   477,
13506    1262,   264,    97,    77,   125,   786,   477,   788,   611,  1260,
13507     786,   284,   788,   483,   503,   835,   836,   125,   684,   125,
13508     569,   503,   842,   843,   975,   138,   504,   140,    15,   595,
13509      68,   501,    77,   504,   108,   109,   100,    58,    25,   990,
13510     488,    37,    38,   316,   919,   920,   997,   998,   321,   924,
13511      66,   926,  1071,   928,   327,   584,    77,   131,   331,    97,
13512    1079,   125,   544,   584,  1255,  1160,    66,    82,    83,  1020,
13513     343,   344,  1167,  1172,   556,   103,   112,   566,  1177,   784,
13514     343,   570,   835,   836,    54,   871,   568,   108,   653,   842,
13515     843,   112,    66,   944,    64,    65,   645,   125,   143,   144,
13516     145,   129,   724,   119,   136,   121,   122,   729,   136,   382,
13517      99,    25,   140,   386,   584,   388,    25,   132,   133,    25,
13518      56,   121,   122,   386,   967,   388,   838,   597,   125,  1040,
13519     835,   836,   885,   886,   846,   888,   889,   842,   843,   139,
13520     129,   611,   629,   140,   987,   994,   125,   121,   122,    66,
13521     632,   638,    99,  1248,   997,   998,   638,    68,   629,   944,
13522     129,   140,   651,  1040,   950,   139,  1025,   638,    15,   651,
13523      17,   641,   661,   643,   652,  1142,  1143,  1020,   138,   661,
13524     140,   652,   711,   670,   662,    96,    97,  1007,   670,   103,
13525     711,   662,   676,   663,   103,   676,   100,   103,   676,   670,
13526    1219,  1052,   684,  1054,   121,   122,  1065,   124,  1059,   664,
13527     483,   125,    99,    77,  1165,   129,   125,   128,   137,   125,
13528     129,   140,   704,   129,    99,   891,   140,    68,   501,    68,
13529      68,   140,   703,   704,   140,   136,    66,    67,   125,   140,
13530     125,   711,   129,  1029,   699,    52,   694,    54,    55,     2,
13531      57,     4,   975,   782,  1007,    96,    97,    96,    97,    97,
13532     799,   782,   136,    16,    17,  1124,   129,  1052,  1127,  1144,
13533    1145,  1146,  1147,   136,   997,   998,   784,   141,   142,   143,
13534     144,   145,   764,   765,    99,  1038,   136,   128,   125,   128,
13535     772,   121,   122,   775,   101,   136,   620,    77,   787,   103,
13536      53,    54,  1007,   879,    57,   787,    66,   631,    99,   779,
13537     788,   584,   782,   783,   129,    68,  1167,   788,  1169,    68,
13538     869,   129,   792,   793,    99,   870,   796,   835,   836,    68,
13539      99,   136,    85,   125,   842,   843,    68,   129,   129,   137,
13540      93,    94,   878,   813,    97,    98,    99,   100,    97,   102,
13541     125,  1202,    66,  1139,   129,   127,    68,    96,    97,   119,
13542     129,   121,   122,   687,    96,    97,  1241,   849,   641,   851,
13543     643,   136,   975,    52,   764,  1160,    26,    56,   641,    56,
13544     643,  1208,  1167,    68,    96,    97,    77,   990,   125,   128,
13545     663,   715,   944,   841,   997,   998,   128,  1248,   868,  1250,
13546     878,   871,    68,    14,    15,   119,  1257,   121,   122,   891,
13547     124,    96,    97,    68,   129,   870,   128,  1020,    68,    88,
13548      89,    68,   129,    99,  1275,   779,  1207,    68,  1209,   783,
13549      96,    97,    68,  1209,   129,    68,  1217,   125,   711,   984,
13550     138,   923,    97,   128,   106,    26,    96,    97,    66,   125,
13551      97,   933,    66,   129,    56,    96,    97,   286,   287,   212,
13552      96,    97,   128,  1248,    97,    99,    25,   937,   938,   133,
13553    1015,   129,   796,   797,   103,   945,   126,   129,   128,    66,
13554     950,  1030,   235,    66,   237,   238,   136,    68,   241,   127,
13555     243,   125,   128,    10,   247,   129,   249,   967,   125,  1007,
13556     970,   119,   687,   121,   122,   119,   779,   121,   122,   782,
13557     783,   264,    26,   125,   987,    96,    97,   987,   988,   989,
13558      40,    41,   992,   993,   997,   998,   127,   997,   998,   984,
13559     715,   284,   119,   125,   121,   122,   119,   124,   121,   122,
13560     125,   865,    52,  1064,  1014,   126,   125,   128,   125,   129,
13561    1020,   875,    52,   125,    68,   136,  1077,  1096,   125,  1029,
13562    1015,   125,     8,   316,   317,   318,   319,   320,   321,   322,
13563     323,    68,   896,   125,   327,   125,    44,   125,   331,  1081,
13564    1082,    44,    96,    97,  1150,   129,  1068,   597,   341,  1071,
13565     343,   344,   125,   346,  1064,   868,    68,  1079,   871,    96,
13566      97,   611,   597,    13,    25,   868,    17,  1077,  1160,   241,
13567     139,   796,   126,  1165,   128,  1167,   611,  1169,   139,   125,
13568     944,   125,   136,    68,    96,    97,    68,   380,   129,   382,
13569      44,   128,    68,   386,   387,   388,   960,   269,  1159,    68,
13570      44,   273,  1187,  1188,   127,   969,   130,   125,   972,   402,
13571      52,    96,    97,   130,    96,    97,   128,   150,   125,    15,
13572      96,    97,  1132,   125,   937,   938,   137,    96,    97,  1139,
13573    1140,   995,   945,   125,   937,   938,   125,   950,   431,   432,
13574     865,   125,   945,   128,  1154,    52,   128,   125,   125,  1159,
13575     875,   100,   128,   127,   125,   448,  1248,   125,  1250,   128,
13576     127,    52,  1172,  1255,   100,  1257,   103,  1177,  1178,  1191,
13577     125,     9,  1214,  1215,    56,  1185,   138,    99,  1220,  1208,
13578    1222,  1223,   125,  1275,    54,    55,  1208,    57,  1210,  1199,
13579     483,  1209,  1187,  1188,    64,    65,   740,  1219,  1209,   130,
13580     125,  1014,   125,   125,   125,   749,  1228,   129,   501,  1073,
13581     503,  1014,    59,    60,    61,    62,  1029,   125,    52,  1229,
13582      54,    55,    56,    57,   125,  1267,  1268,  1269,  1270,   103,
13583     125,    77,   125,  1097,    56,   960,   125,  1279,   125,   125,
13584    1262,    56,   792,   793,   969,   130,   796,   972,    94,    95,
13585    1260,  1064,   127,  1117,  1118,  1119,   125,   792,   793,   125,
13586     125,   796,   125,   813,  1077,   125,   120,   101,   136,     2,
13587     995,     4,   136,   566,   125,   247,   479,   570,   813,   878,
13588      98,   100,   454,    16,    17,   131,   483,   459,    89,  1228,
13589     462,   584,   765,   465,   670,   141,   142,   143,   144,   145,
13590      52,   733,    54,    55,    56,    57,    58,    52,   480,    54,
13591      55,    56,    57,   485,    40,    41,    42,    43,    44,  1132,
13592      53,    54,   911,  1075,   944,    77,  1139,  1140,   210,  1132,
13593    1194,   213,   214,   215,  1236,    68,   775,  1140,   880,    91,
13594      52,  1154,    54,    55,    56,    57,  1159,   773,   641,   101,
13595     643,  1154,   576,  1262,   988,   107,   108,   109,   651,   990,
13596      93,    94,   990,   986,    97,  1210,  1068,   108,   661,   102,
13597     663,   664,  1185,   518,   101,   547,   749,  1165,  1160,   131,
13598    1244,   746,  1185,    -1,   136,  1097,  1199,    -1,    -1,   101,
13599      -1,   143,  1117,  1118,  1119,   107,  1199,    -1,    -1,    52,
13600     944,    54,    55,    56,    57,    -1,   699,    -1,    -1,    -1,
13601      -1,   583,    -1,    -1,    -1,    -1,  1229,   967,   711,    -1,
13602     970,    -1,    -1,    -1,    -1,    -1,  1229,    -1,    -1,    -1,
13603      -1,    -1,   967,    -1,    -1,   970,    -1,   987,   988,   989,
13604      -1,    -1,   992,   993,    -1,    -1,    -1,   997,   998,    -1,
13605      -1,    -1,   987,   988,   989,    -1,    -1,   992,   993,   341,
13606      -1,    -1,   997,   998,   346,    -1,    -1,    -1,   597,    -1,
13607    1020,    -1,    52,    -1,    54,    55,    56,    57,    58,   212,
13608      -1,    -1,   611,    -1,   597,  1020,   779,    -1,    -1,   782,
13609     783,   784,    -1,    -1,   787,    -1,    -1,    77,   611,    -1,
13610      -1,    -1,   235,    -1,   237,   238,    -1,    -1,   241,    -1,
13611     243,    91,    -1,    -1,   247,    -1,   249,    -1,    -1,  1244,
13612      -1,   101,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,
13613      -1,   264,    -1,    -1,    -1,    77,    -1,    -1,    -1,    -1,
13614      -1,    -1,   835,   836,    -1,    -1,    -1,    -1,    -1,   842,
13615     843,   131,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,
13616      -1,   443,   444,   143,    -1,   737,    -1,    -1,    -1,    -1,
13617     452,    -1,    -1,    -1,    -1,   868,    -1,   870,   871,    -1,
13618      -1,    -1,    -1,   316,   317,   318,   319,   320,   321,   322,
13619     323,   597,    -1,    -1,   327,    -1,    -1,    -1,   331,   141,
13620     142,   143,   144,   145,    -1,   611,   488,    -1,   341,   491,
13621     343,    -1,    -1,   346,    -1,    -1,  1160,    -1,    -1,    -1,
13622      -1,  1165,  1172,  1167,    -1,  1169,    -1,  1177,  1178,    -1,
13623      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1172,    -1,    -1,
13624      -1,    -1,  1177,  1178,   937,   938,    -1,   380,    -1,   382,
13625      -1,    -1,   945,   386,   387,   388,    -1,   950,    -1,    -1,
13626      -1,    -1,    -1,   792,   793,    -1,    -1,   796,    -1,   402,
13627      -1,    -1,   554,    -1,    -1,    -1,    -1,    -1,    -1,   792,
13628     793,    -1,    -1,   796,   813,    -1,    -1,    -1,     2,    -1,
13629       4,   984,    -1,    -1,    -1,   577,    -1,    -1,   431,   432,
13630     813,    -1,    16,    17,  1248,   877,  1250,    -1,    -1,    -1,
13631    1260,  1255,    -1,  1257,  1007,   448,    -1,    -1,   890,    -1,
13632     892,  1014,  1015,    -1,    -1,  1260,    -1,    -1,    -1,    -1,
13633      -1,  1275,    -1,    -1,    -1,   571,  1029,   909,    -1,    53,
13634      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13635     483,    77,    -1,   597,    68,    -1,    -1,    -1,    -1,    -1,
13636      -1,    -1,    -1,    -1,    -1,    -1,    -1,   611,    94,    95,
13637     503,  1064,    52,    -1,    54,    55,    56,    57,    58,    93,
13638      94,    -1,    -1,    97,  1077,    -1,   792,   793,   102,    -1,
13639     796,    -1,    -1,    -1,    -1,   677,    -1,    77,    -1,   681,
13640      -1,    -1,    -1,   639,   130,   131,    -1,   813,   644,   135,
13641     646,    91,   694,    -1,   696,   141,   142,   143,   144,   145,
13642      -1,   101,    -1,    -1,   996,    -1,    -1,    -1,   108,   109,
13643      -1,    -1,    -1,   566,    -1,    -1,    -1,   570,   967,  1132,
13644      -1,   970,    -1,    -1,    -1,    -1,  1139,  1140,    -1,    -1,
13645      -1,   131,    -1,    -1,   967,    -1,    -1,   970,   987,   988,
13646     989,  1154,   744,   992,   993,    -1,  1159,    -1,   997,   998,
13647      -1,    -1,    -1,    -1,   987,   988,   989,    -1,    -1,   992,
13648     993,    -1,   764,    -1,   997,   998,    -1,    -1,    -1,    -1,
13649      -1,  1020,  1185,    -1,  1187,  1188,   778,    52,   212,    54,
13650      55,    56,    57,    58,    -1,    -1,  1199,  1020,   641,    -1,
13651     643,    -1,    -1,    -1,    -1,  1208,    -1,  1089,   651,    -1,
13652      -1,   235,    77,   237,   238,    -1,    -1,   241,   661,   243,
13653     663,   664,    -1,   247,    -1,   249,  1229,    -1,   774,    -1,
13654     776,    -1,  1114,  1115,  1116,    -1,   101,    -1,   792,   793,
13655     264,    -1,   796,   108,   109,    -1,    -1,    -1,    -1,   841,
13656      -1,   967,    -1,    -1,   970,    -1,   699,    -1,    -1,   813,
13657      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,   861,
13658      -1,   987,   988,   989,    -1,    -1,   992,   993,    -1,    -1,
13659      -1,   997,   998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13660      -1,    -1,   316,   317,   318,   319,   320,   321,   322,   323,
13661      -1,    -1,    -1,   327,  1020,    -1,    -1,   331,    -1,    -1,
13662      -1,    -1,    -1,   859,    -1,    -1,   862,   341,   597,   343,
13663      -1,    -1,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13664     876,   597,   611,  1172,    -1,    -1,   779,    -1,  1177,  1178,
13665     783,   784,    -1,    -1,   787,   611,    -1,    -1,    -1,  1172,
13666      -1,    -1,    -1,    -1,  1177,  1178,   380,    -1,   382,    -1,
13667     952,    -1,   386,   387,   388,    -1,    -1,    -1,    -1,    -1,
13668      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   402,    -1,
13669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13670      -1,    -1,   835,   836,    -1,    -1,    -1,    -1,    -1,   842,
13671     843,    -1,    -1,    -1,    -1,    -1,    -1,   431,   432,    -1,
13672      -1,    -1,    -1,   967,    -1,    -1,   970,    -1,    -1,    -1,
13673      -1,  1260,    -1,    -1,   448,   868,    -1,   870,   871,    -1,
13674      -1,  1023,    -1,   987,   988,   989,    -1,  1260,   992,   993,
13675      -1,    -1,    -1,   997,   998,    -1,    -1,    -1,  1040,    -1,
13676      -1,    -1,    -1,     2,    -1,     4,  1172,    -1,    -1,   483,
13677      -1,  1177,  1178,    -1,    -1,    -1,  1020,    -1,    -1,    -1,
13678    1016,    -1,    -1,  1019,    -1,  1021,    -1,    -1,    -1,   503,
13679      -1,    -1,  1028,    -1,    -1,  1031,    -1,    -1,    -1,    -1,
13680      -1,    -1,    -1,    -1,   937,   938,    -1,    -1,    -1,    -1,
13681      -1,    -1,   945,    -1,    53,    54,    -1,   950,    57,    -1,
13682      -1,    -1,    -1,   792,   793,    -1,    -1,   796,    -1,    -1,
13683      -1,    -1,    -1,    -1,    -1,    -1,   792,   793,    -1,    -1,
13684     796,    -1,    -1,    -1,   813,    -1,    85,    -1,    -1,  1131,
13685      -1,   984,   566,    -1,  1260,    -1,   570,   813,    -1,    98,
13686      99,   100,    52,    -1,    54,    55,    56,    57,    58,     2,
13687      -1,     4,    -1,    -1,  1007,    -1,    -1,    -1,    -1,    -1,
13688      -1,  1014,  1015,    -1,    -1,    -1,    -1,    77,    -1,    52,
13689      -1,    54,    55,    56,    57,    58,  1029,    -1,  1134,    -1,
13690      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1189,    -1,    -1,
13691      -1,   101,    -1,    -1,    77,    -1,    -1,   107,   108,   109,
13692      53,    54,    -1,    -1,    57,    -1,    -1,   641,  1172,   643,
13693      -1,    -1,    -1,  1177,  1178,    -1,    -1,   651,   101,    -1,
13694      -1,   131,    -1,    -1,   107,   108,   109,   661,    -1,   663,
13695     664,    -1,    85,   143,    -1,    -1,    -1,    -1,    -1,    -1,
13696      -1,  1197,    -1,    -1,    -1,    98,    99,   100,   131,    -1,
13697      -1,    -1,    -1,   212,   597,    -1,    -1,   140,    -1,    -1,
13698     143,    -1,    -1,    -1,    -1,   699,    -1,    -1,   611,    -1,
13699      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   967,  1132,
13700      -1,   970,    -1,    -1,    -1,    -1,  1139,  1140,   247,    -1,
13701     249,   967,    -1,    -1,   970,    -1,  1260,    -1,   987,   988,
13702     989,  1154,    -1,   992,   993,   264,    -1,    -1,   997,   998,
13703      -1,   987,   988,   989,    -1,    -1,   992,   993,    -1,    -1,
13704      -1,   997,   998,    -1,    -1,   284,    -1,    -1,    -1,    -1,
13705      -1,  1020,  1185,    -1,  1187,  1188,    -1,    -1,    -1,    -1,
13706      -1,    -1,    -1,    -1,  1020,   779,  1199,    -1,    -1,   783,
13707     784,    -1,    -1,   787,    -1,  1208,    -1,   316,    -1,   212,
13708      -1,    -1,   321,    33,    34,    35,    36,    -1,   327,    -1,
13709      -1,    -1,   331,    -1,    -1,    -1,  1229,    -1,    -1,    49,
13710      50,    51,    -1,    -1,   343,   344,    -1,   346,    -1,    59,
13711      60,    61,    62,    63,   247,    -1,   249,    -1,    -1,    -1,
13712      -1,   835,   836,    -1,    -1,    -1,    -1,    -1,   842,   843,
13713      -1,   264,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13714      -1,    -1,    -1,   382,    -1,    -1,    -1,   386,    -1,   388,
13715      -1,   284,    -1,    -1,   868,    -1,   870,   871,    -1,    -1,
13716     110,   111,   112,   113,   114,   115,   116,   117,   118,   792,
13717     793,    -1,    -1,   796,    -1,    -1,    -1,    -1,    -1,    -1,
13718      -1,    -1,     2,   316,     4,    -1,    -1,    -1,   321,    -1,
13719     813,    -1,   431,   432,   327,    -1,    -1,    -1,   331,    -1,
13720      -1,   151,    -1,  1172,    -1,    -1,    -1,    -1,  1177,  1178,
13721     343,   344,    -1,   346,    -1,    -1,  1172,    -1,    -1,    -1,
13722      -1,  1177,  1178,   937,   938,    -1,    -1,    -1,    -1,    -1,
13723      -1,   945,    -1,    53,    54,    -1,   950,    57,    -1,    -1,
13724      -1,    -1,    -1,    -1,   483,    -1,    -1,    -1,    -1,   382,
13725      -1,    -1,    -1,   386,    -1,   388,    -1,    -1,    -1,    -1,
13726      -1,    -1,   501,    -1,    -1,    85,    -1,    -1,    -1,    -1,
13727     984,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    99,
13728     100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13729      -1,  1260,    -1,  1007,    -1,    -1,    -1,    -1,   431,   432,
13730    1014,  1015,    -1,    -1,  1260,    -1,    -1,    -1,    -1,    -1,
13731      -1,     2,    -1,     4,    -1,  1029,     0,    -1,    -1,    -1,
13732      -1,    -1,    -1,    -1,     8,     9,    10,    -1,    -1,    13,
13733      14,    15,    -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,
13734      -1,    25,    26,    27,   967,   584,    -1,   970,    -1,    -1,
13735     483,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
13736      44,    -1,    53,    54,   987,   988,   989,    -1,   501,   992,
13737     993,    -1,    -1,    -1,   997,   998,    -1,    -1,    -1,    -1,
13738      -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
13739      -1,    -1,   212,    -1,    -1,    -1,    -1,  1020,    -1,    -1,
13740      -1,    -1,   641,    -1,   643,    -1,    -1,    98,    -1,    -1,
13741      -1,    -1,    96,    97,    -1,    -1,    -1,    -1,  1132,   103,
13742      -1,    -1,    -1,    -1,   663,  1139,  1140,   247,    -1,   249,
13743      -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,    -1,
13744    1154,    -1,   126,   127,   264,    -1,    -1,    -1,    -1,    -1,
13745      -1,   584,   136,    -1,   138,    -1,   140,    -1,    -1,    -1,
13746      -1,    -1,    -1,    -1,   284,    -1,    -1,    -1,    -1,    -1,
13747      -1,  1185,   711,  1187,  1188,    -1,    -1,    -1,    -1,    -1,
13748      -1,    -1,    -1,   722,    -1,  1199,    -1,    -1,    -1,    -1,
13749      -1,    -1,    -1,    -1,  1208,    -1,   316,    -1,    -1,    -1,
13750      -1,   321,    -1,    -1,    -1,    -1,    -1,   327,   641,    -1,
13751     643,   331,    -1,    -1,    -1,  1229,    -1,    -1,    -1,    -1,
13752      -1,   212,    -1,   343,   344,    -1,   346,    -1,    -1,    -1,
13753     663,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13754     779,    -1,    -1,   782,   783,   784,    -1,    -1,    -1,  1172,
13755      -1,    -1,    -1,    -1,  1177,  1178,   247,    -1,   249,    -1,
13756      -1,    -1,   382,    -1,    -1,    -1,   386,    -1,   388,    -1,
13757      -1,    -1,    -1,   264,    -1,    -1,    -1,    -1,   711,    -1,
13758      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13759      -1,    -1,    -1,    -1,    -1,    -1,   835,   836,    -1,    -1,
13760      -1,    -1,    -1,   842,   843,    -1,    -1,    -1,    -1,    -1,
13761      -1,   431,   432,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13762      -1,    -1,    -1,    -1,     2,   316,     4,    -1,    -1,   868,
13763     321,    -1,   871,    -1,    -1,    -1,   327,  1260,    -1,    -1,
13764     331,    -1,    -1,    -1,    -1,    -1,   779,    -1,    -1,   782,
13765     783,   784,   343,    -1,    -1,   346,    -1,    -1,    -1,    -1,
13766      -1,    -1,    -1,   483,    25,    -1,    -1,    -1,    -1,    -1,
13767      -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    -1,    -1,
13768      -1,   501,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13769      -1,   382,    -1,    -1,    -1,   386,    -1,   388,   937,   938,
13770      -1,    -1,   835,   836,    -1,    -1,   945,    -1,    -1,   842,
13771     843,   950,    -1,    -1,    -1,    -1,    77,    78,    79,    80,
13772      81,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
13773      -1,    -1,    -1,    94,    95,   868,    -1,    -1,   871,   100,
13774     431,   432,    -1,    77,    78,    79,    80,    81,    82,    83,
13775      84,    85,    86,    87,    88,    89,    -1,    -1,    -1,    -1,
13776      94,    95,    -1,    -1,   584,    -1,    -1,    -1,  1007,   130,
13777     131,   132,   133,    -1,   135,  1014,    -1,    -1,    -1,    -1,
13778     141,   142,   143,   144,   145,    -1,    -1,    -1,   149,    -1,
13779    1029,    -1,   483,    -1,    -1,    -1,   130,   131,   132,   133,
13780      -1,   135,    -1,    -1,   937,   938,   140,   141,   142,   143,
13781     144,   145,   945,    -1,    -1,   149,    -1,   950,    -1,    -1,
13782      -1,   641,    -1,   643,    -1,  1064,    -1,    -1,    -1,    -1,
13783      -1,    -1,    -1,    -1,   212,    -1,    -1,    -1,  1077,    -1,
13784      -1,    -1,    -1,   663,    -1,    -1,    -1,    -1,    -1,    -1,
13785      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78,
13786      79,    80,    81,    82,    83,    84,    -1,    86,    87,   247,
13787      -1,   249,    -1,    -1,  1007,    94,    95,    -1,    -1,    -1,
13788      -1,  1014,    -1,    -1,    -1,    -1,   264,    -1,    -1,    -1,
13789      -1,   711,    -1,  1132,    -1,    -1,  1029,    -1,    -1,    -1,
13790    1139,  1140,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13791      -1,   130,   131,   132,   133,  1154,   135,    -1,    -1,    -1,
13792    1159,    -1,   141,   142,   143,   144,   145,    -1,    -1,    -1,
13793      -1,  1064,    -1,    -1,    -1,    -1,    -1,    -1,   316,    -1,
13794      -1,    44,    -1,   321,  1077,    -1,  1185,    -1,    -1,   327,
13795     641,    -1,   643,   331,    -1,    -1,    -1,    -1,    -1,   779,
13796    1199,    -1,   782,   783,   784,   343,    -1,    -1,   346,    -1,
13797      -1,    -1,   663,    -1,    77,    78,    79,    80,    81,    82,
13798      83,    84,    85,    86,    87,    88,    89,    -1,    -1,    -1,
13799    1229,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,  1132,
13800      -1,    -1,    -1,    -1,   382,    -1,  1139,  1140,   386,    -1,
13801     388,    -1,    -1,    -1,    -1,   835,   836,    -1,    -1,    -1,
13802      -1,  1154,   842,   843,    -1,    -1,  1159,   130,   131,   132,
13803     133,    -1,   135,    -1,    -1,    -1,    -1,    -1,   141,   142,
13804     143,   144,   145,    -1,    -1,    -1,   149,    -1,   868,    -1,
13805      -1,   871,  1185,   431,   432,    33,    34,    35,    36,    -1,
13806      -1,    -1,    -1,    -1,    -1,    -1,  1199,    -1,    -1,    -1,
13807      -1,    49,    50,    51,    52,    -1,    -1,    -1,    56,    -1,
13808      -1,    59,    60,    61,    62,    63,    -1,    -1,   779,    -1,
13809      -1,    -1,   783,   784,    -1,    -1,  1229,    -1,    -1,    -1,
13810      -1,    -1,    -1,    -1,    -1,   483,    -1,    -1,    -1,    -1,
13811      -1,    -1,    90,    91,    -1,    -1,    -1,   937,   938,    -1,
13812      98,    -1,    -1,   101,    -1,   945,   104,   105,    -1,   107,
13813     950,    -1,   110,   111,   112,   113,   114,   115,   116,   117,
13814     118,    -1,    -1,    -1,   835,   836,    -1,    -1,    -1,    -1,
13815      -1,   842,   843,    -1,    -1,    -1,    -1,   135,    -1,    -1,
13816      -1,    -1,   140,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13817      -1,    -1,    -1,   151,    -1,    -1,    -1,   868,    -1,    -1,
13818     871,    -1,    -1,    -1,    -1,    -1,    -1,  1007,    -1,    -1,
13819      -1,    16,    17,    -1,  1014,    -1,    -1,    -1,    -1,    -1,
13820      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1029,
13821      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13822      -1,    -1,    -1,    48,    49,    50,    51,    -1,    -1,    -1,
13823      55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13824      -1,    -1,    67,    68,  1064,    -1,   937,   938,    -1,    -1,
13825      -1,    -1,    -1,    -1,   945,    -1,    -1,  1077,    -1,   950,
13826      -1,    -1,    -1,   641,    -1,   643,    -1,    -1,    -1,    -1,
13827      -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,    33,    34,
13828      35,    36,    -1,    -1,    -1,   663,    -1,    -1,    -1,    -1,
13829      -1,    -1,    -1,    -1,    49,    50,    51,    52,    -1,    -1,
13830      -1,    56,    -1,    58,    59,    60,    61,    62,    63,    -1,
13831      -1,    -1,  1132,    -1,    -1,    -1,  1007,    -1,    -1,  1139,
13832    1140,    -1,    77,  1014,    -1,    -1,    -1,    -1,    -1,    -1,
13833      -1,    -1,    -1,    -1,  1154,    90,    91,    -1,  1029,  1159,
13834      -1,    -1,    -1,    98,    -1,    -1,   101,    -1,    -1,   104,
13835     105,    -1,   107,   108,    -1,   110,   111,   112,   113,   114,
13836     115,   116,   117,   118,    -1,  1185,    -1,    -1,    -1,    -1,
13837      -1,    -1,    -1,  1064,    -1,    -1,    -1,    -1,    -1,  1199,
13838     135,    44,    -1,    -1,    -1,   210,    -1,    -1,   213,   214,
13839     215,    -1,   217,    -1,    -1,    -1,   151,    -1,    -1,    -1,
13840      -1,   779,    -1,    -1,    -1,   783,   784,    -1,    -1,  1229,
13841     235,    -1,   237,   238,    77,    78,    79,    80,    81,    82,
13842      83,    84,    85,    86,    87,    88,    89,    -1,    -1,    -1,
13843      -1,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13844      -1,  1132,    -1,    -1,    -1,    -1,    -1,    -1,  1139,  1140,
13845      -1,    -1,    -1,    -1,    -1,    -1,    -1,   835,   836,    -1,
13846      -1,    -1,   125,  1154,   842,   843,    -1,   130,   131,   132,
13847     133,    -1,   135,    -1,    -1,    -1,    -1,    -1,   141,   142,
13848     143,   144,   145,    -1,    -1,    -1,   149,    -1,    -1,    -1,
13849     868,    -1,    -1,   871,  1185,    -1,    -1,    -1,    -1,    -1,
13850      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1199,    -1,
13851      -1,    -1,    -1,    -1,    -1,    -1,   341,    -1,    -1,    -1,
13852      -1,   346,    -1,   348,   349,   350,   351,   352,    -1,    -1,
13853     355,   356,   357,   358,   359,   360,   361,   362,  1229,   364,
13854     365,    -1,    -1,   368,   369,   370,   371,   372,   373,   374,
13855     375,   376,    -1,    -1,    -1,   380,    -1,    -1,    -1,   937,
13856     938,    -1,    -1,    -1,    -1,    -1,    -1,   945,    -1,    -1,
13857      -1,    -1,   950,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13858      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13859      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13860      -1,    -1,    -1,    -1,    -1,    -1,   431,   432,    -1,    -1,
13861      -1,    -1,    -1,    -1,    -1,    -1,    -1,   442,   443,   444,
13862      -1,    -1,    -1,   448,    -1,   450,   451,   452,    -1,  1007,
13863      -1,    -1,    -1,   458,    -1,    -1,  1014,    -1,    -1,    -1,
13864      -1,    33,    34,    35,    36,    -1,    -1,    -1,   473,    -1,
13865      -1,  1029,    -1,   478,    -1,    -1,    -1,    49,    50,    51,
13866      52,    -1,    -1,   488,    56,    -1,   491,    59,    60,    61,
13867      62,    63,    -1,    -1,    -1,    -1,    -1,    -1,   503,    -1,
13868      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13869      -1,    -1,    -1,    -1,    -1,   520,    -1,    -1,    90,    91,
13870      -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
13871      -1,    -1,   104,   105,    -1,   107,    -1,    -1,   110,   111,
13872     112,   113,   114,   115,   116,   117,   118,    -1,    -1,   554,
13873      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13874      -1,   566,    -1,   135,    44,   570,    -1,    -1,    -1,    -1,
13875      -1,    -1,   577,    -1,  1132,    -1,    -1,    -1,    -1,   151,
13876      -1,  1139,  1140,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13877      -1,    -1,    -1,    -1,    -1,    -1,  1154,    77,    78,    79,
13878      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
13879      -1,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,
13880      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1185,    -1,    -1,
13881      77,    78,    79,    80,    81,    82,    83,    -1,    -1,    86,
13882      87,  1199,    -1,    -1,    -1,    -1,   651,    94,    95,    -1,
13883     130,   131,   132,   133,    -1,   135,   661,    -1,    -1,    -1,
13884      -1,   141,   142,   143,   144,   145,    -1,    -1,    -1,   149,
13885      -1,  1229,   677,   678,   679,    -1,   681,    -1,    -1,    -1,
13886      -1,    -1,    -1,   130,   131,   132,   133,    -1,   135,   694,
13887      -1,   696,    -1,    -1,   141,   142,   143,   144,   145,    -1,
13888      -1,     0,     1,    -1,     3,     4,     5,     6,     7,    -1,
13889      -1,    -1,    11,    12,    -1,    -1,    -1,    16,    -1,    18,
13890      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
13891      -1,    30,    31,    32,    33,    34,    35,    36,    -1,   744,
13892      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
13893      49,    50,    51,    52,    53,    54,    55,    56,    57,   764,
13894      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
13895      -1,    -1,    -1,   778,    -1,    -1,    75,    76,    -1,   784,
13896     785,    -1,   787,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13897      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,
13898      -1,    -1,   101,   102,    -1,   104,   105,    -1,   107,    -1,
13899      -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
13900      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13901     835,   836,    -1,    -1,    -1,    -1,   841,   842,   843,   138,
13902      -1,   140,    -1,    -1,    -1,    -1,    -1,   146,   147,    -1,
13903      -1,    -1,   151,    -1,    -1,    -1,   861,    -1,     3,     4,
13904       5,    -1,     7,    -1,    -1,    -1,    11,    12,    -1,    -1,
13905      -1,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
13906     885,   886,    -1,   888,   889,    30,    31,    32,    33,    34,
13907      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
13908      -1,    46,    -1,    -1,    49,    50,    51,    52,    53,    54,
13909      55,    56,    57,    -1,    59,    60,    61,    62,    63,    64,
13910      65,    -1,    -1,    -1,   929,   930,    -1,    -1,    -1,    -1,
13911      -1,    -1,    -1,    -1,    -1,    -1,   941,   942,    -1,    -1,
13912      -1,    -1,    -1,    -1,    -1,    -1,    -1,   952,    -1,    -1,
13913      -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,
13914     105,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
13915     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
13916     125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13917      -1,    -1,    -1,    -1,    -1,  1000,    -1,    -1,    -1,    -1,
13918      -1,    -1,  1007,    -1,    -1,    -1,   151,    -1,    -1,    -1,
13919      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,
13920      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13921      -1,    -1,    -1,  1038,    -1,  1040,    -1,    -1,    -1,    -1,
13922       1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
13923      11,    12,    -1,    -1,    15,    16,    -1,    18,    19,    20,
13924      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
13925      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
13926      -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,    50,
13927      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
13928      61,    62,    63,    64,    65,    -1,    -1,    77,    78,    79,
13929      80,    81,    82,    83,    75,    76,    86,    87,    -1,    -1,
13930      -1,    -1,    -1,    -1,    94,    95,  1131,    -1,    -1,    90,
13931      91,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,
13932     101,   102,    -1,   104,   105,    -1,   107,    -1,    -1,   110,
13933     111,   112,   113,   114,   115,   116,   117,   118,    -1,    -1,
13934     130,   131,   132,   133,    -1,   135,    -1,    -1,    -1,    -1,
13935      -1,   141,   142,   143,   144,   145,    -1,   138,    -1,   140,
13936      -1,    -1,    -1,    -1,  1189,   146,   147,    -1,    -1,    -1,
13937     151,     1,    -1,     3,     4,     5,     6,     7,    -1,    -1,
13938      10,    11,    12,  1208,    14,    15,    16,    -1,    18,    19,
13939      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
13940      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
13941      -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,
13942      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
13943      60,    61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,
13944      -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
13945      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13946      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,
13947      -1,   101,   102,    -1,   104,   105,    -1,   107,    -1,    -1,
13948     110,   111,   112,   113,   114,   115,   116,   117,   118,    -1,
13949      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13950      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,     1,
13951     140,     3,     4,     5,     6,     7,   146,   147,    10,    11,
13952      12,   151,    -1,    15,    16,    17,    18,    19,    20,    21,
13953      22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
13954      32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
13955      -1,    -1,    -1,    45,    46,    47,    48,    49,    50,    51,
13956      52,    53,    54,    55,    56,    57,    -1,    59,    60,    61,
13957      62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
13958      -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
13959      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
13960      -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
13961     102,    -1,   104,   105,    -1,   107,    -1,    -1,   110,   111,
13962     112,   113,   114,   115,   116,   117,   118,    -1,    -1,    -1,
13963      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13964      -1,    -1,    -1,    -1,    -1,    -1,   138,     1,   140,     3,
13965       4,     5,     6,     7,   146,   147,    10,    11,    12,   151,
13966      -1,    15,    16,    -1,    18,    19,    20,    21,    22,    23,
13967      24,    25,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
13968      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
13969      -1,    45,    46,    47,    48,    49,    50,    51,    52,    53,
13970      54,    55,    56,    57,    -1,    59,    60,    61,    62,    63,
13971      64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13972      -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13973      -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
13974      -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,
13975     104,   105,    -1,   107,    -1,    -1,   110,   111,   112,   113,
13976     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
13977      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13978      -1,    -1,    -1,    -1,   138,     1,   140,     3,     4,     5,
13979       6,     7,   146,   147,    10,    11,    12,   151,    -1,    15,
13980      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
13981      -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
13982      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,
13983      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
13984      56,    57,    -1,    59,    60,    61,    62,    63,    64,    65,
13985      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,
13986      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13987      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
13988      -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,
13989      -1,   107,    -1,    -1,   110,   111,   112,   113,   114,   115,
13990     116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
13992      -1,    -1,   138,    -1,   140,    -1,    -1,    -1,    -1,    -1,
13993     146,   147,    -1,    -1,     1,   151,     3,     4,     5,     6,
13994       7,    -1,     9,    10,    11,    12,    -1,    -1,    -1,    16,
13995      -1,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
13996      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
13997      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,
13998      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
13999      57,    -1,    59,    60,    61,    62,    63,    64,    65,    -1,
14000      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,
14001      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14002      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
14003      -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,    -1,
14004     107,    -1,    -1,   110,   111,   112,   113,   114,   115,   116,
14005     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14006      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14007      -1,   138,     1,   140,     3,     4,     5,     6,     7,   146,
14008     147,    -1,    11,    12,   151,    -1,    -1,    16,    -1,    18,
14009      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
14010      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
14011      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
14012      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
14013      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
14014      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,
14015      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14016      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,
14017      -1,    -1,   101,   102,   103,   104,   105,    -1,   107,    -1,
14018      -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
14019      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14020      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,
14021       1,   140,     3,     4,     5,     6,     7,   146,   147,    -1,
14022      11,    12,   151,    -1,    -1,    16,    -1,    18,    19,    20,
14023      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
14024      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
14025      -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,    50,
14026      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
14027      61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
14028      -1,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
14029      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,
14030      91,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,
14031     101,   102,   103,   104,   105,    -1,   107,    -1,    -1,   110,
14032     111,   112,   113,   114,   115,   116,   117,   118,    -1,    -1,
14033      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14034      -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,     1,   140,
14035       3,     4,     5,     6,     7,   146,   147,    -1,    11,    12,
14036     151,    -1,    -1,    16,    -1,    18,    19,    20,    21,    22,
14037      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
14038      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
14039      -1,    -1,    45,    46,    47,    48,    49,    50,    51,    52,
14040      53,    54,    55,    56,    57,    -1,    59,    60,    61,    62,
14041      63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14042      -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
14043      -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
14044      -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,
14045      -1,   104,   105,    -1,   107,    -1,    -1,   110,   111,   112,
14046     113,   114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
14047      -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,    -1,
14048      -1,    -1,    -1,    -1,    -1,   138,     1,   140,     3,     4,
14049       5,     6,     7,   146,   147,    -1,    11,    12,   151,    -1,
14050      -1,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
14051      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
14052      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
14053      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
14054      55,    56,    57,    -1,    59,    60,    61,    62,    63,    64,
14055      65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14056      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14057      -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,
14058      -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,
14059     105,    -1,   107,    -1,    -1,   110,   111,   112,   113,   114,
14060     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
14061      -1,    -1,   127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14062      -1,    -1,    -1,   138,     1,   140,     3,     4,     5,     6,
14063       7,   146,   147,    10,    11,    12,   151,    -1,    -1,    16,
14064      -1,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
14065      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
14066      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,
14067      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
14068      57,    -1,    59,    60,    61,    62,    63,    64,    65,    -1,
14069      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,
14070      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14071      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
14072      -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,    -1,
14073     107,    -1,    -1,   110,   111,   112,   113,   114,   115,   116,
14074     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14075      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14076      -1,   138,     1,   140,     3,     4,     5,     6,     7,   146,
14077     147,    -1,    11,    12,   151,    -1,    -1,    16,    -1,    18,
14078      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
14079      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
14080      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
14081      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
14082      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
14083      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,
14084      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14085      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,
14086      -1,    -1,   101,   102,    -1,   104,   105,    -1,   107,    -1,
14087      -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
14088      -1,   120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14089      -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,   138,
14090      -1,   140,    -1,    -1,     8,     9,    10,   146,   147,    13,
14091      14,    15,   151,    17,    -1,    -1,    -1,    -1,    -1,    -1,
14092      -1,    25,    26,    27,    28,    29,    -1,    -1,    -1,    -1,
14093      -1,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
14094      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14095      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14096      -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
14097      -1,    -1,    -1,    77,    78,    79,    80,    81,    82,    83,
14098      84,    85,    86,    87,    88,    89,    -1,    -1,    -1,    -1,
14099      94,    95,    96,    97,    -1,    99,   100,    -1,    -1,   103,
14100      -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14101      -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,   123,
14102      -1,   125,   126,   127,   128,   129,   130,   131,   132,   133,
14103      -1,   135,    -1,   137,   138,    -1,   140,   141,   142,   143,
14104     144,   145,     0,    -1,    -1,   149,   150,    -1,    -1,    -1,
14105       8,     9,    10,    -1,    -1,    13,    14,    15,    -1,    17,
14106      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    -1,    27,
14107      28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
14108      38,    -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,
14109      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14110      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14111      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,
14112      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
14113      88,    89,    -1,    -1,    -1,    -1,    94,    95,    96,    97,
14114      -1,    99,   100,    -1,    -1,   103,    -1,    -1,   106,    -1,
14115      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14116      -1,    -1,   120,    -1,    -1,   123,    -1,   125,    -1,   127,
14117     128,   129,   130,   131,   132,   133,    -1,   135,    -1,   137,
14118     138,    -1,   140,   141,   142,   143,   144,   145,     0,    -1,
14119      -1,   149,   150,    -1,    -1,    -1,     8,     9,    10,    -1,
14120      -1,    13,    14,    15,    -1,    17,    -1,    -1,    -1,    -1,
14121      -1,    -1,    -1,    25,    -1,    27,    28,    29,    -1,    -1,
14122      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    41,
14123      42,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14124      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14125      -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
14126      -1,    -1,    -1,    -1,    -1,    77,    78,    79,    80,    81,
14127      82,    83,    84,    85,    86,    87,    88,    89,    -1,    -1,
14128      -1,    -1,    94,    95,    96,    97,    -1,    99,   100,    -1,
14129      -1,   103,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,
14130      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,
14131      -1,   123,    -1,   125,    -1,   127,   128,   129,   130,   131,
14132     132,   133,    -1,   135,    -1,   137,   138,    -1,   140,   141,
14133     142,   143,   144,   145,     0,    -1,    -1,   149,   150,    -1,
14134      -1,    -1,     8,     9,    10,    -1,    -1,    13,    14,    15,
14135      -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
14136      26,    27,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,
14137      -1,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
14138      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14139      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14140      -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14141      -1,    77,    78,    79,    80,    81,    82,    83,    84,    85,
14142      86,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    95,
14143      96,    97,    -1,    -1,   100,    -1,    -1,   103,    -1,    -1,
14144     106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14145      -1,    -1,    -1,    -1,   120,    -1,    -1,   123,    -1,   125,
14146     126,   127,   128,    -1,   130,   131,   132,   133,    -1,   135,
14147      -1,   137,   138,    -1,   140,   141,   142,   143,   144,   145,
14148       0,    -1,    -1,   149,   150,    -1,    -1,    -1,     8,     9,
14149      10,    -1,    -1,    13,    14,    15,    -1,    17,    -1,    -1,
14150      -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,
14151      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
14152      40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
14153      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14154      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
14155      -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    79,
14156      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
14157      -1,    -1,    -1,    -1,    94,    95,    96,    97,    -1,    -1,
14158     100,    -1,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
14159      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14160     120,    -1,    -1,   123,    -1,   125,   126,   127,   128,    -1,
14161     130,   131,   132,   133,    -1,   135,    -1,   137,   138,    -1,
14162     140,   141,   142,   143,   144,   145,     0,    -1,    -1,   149,
14163     150,    -1,    -1,    -1,     8,     9,    10,    -1,    -1,    13,
14164      14,    15,    -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,
14165      -1,    25,    -1,    27,    28,    29,    -1,    -1,    -1,    -1,
14166      -1,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
14167      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14168      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14169      -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
14170      -1,    -1,    -1,    77,    78,    79,    80,    81,    82,    83,
14171      84,    85,    86,    87,    88,    89,    -1,    -1,    -1,    -1,
14172      94,    95,    96,    97,    -1,    99,   100,    -1,    -1,   103,
14173      -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14174      -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,   123,
14175      -1,   125,    -1,   127,   128,   129,   130,   131,   132,   133,
14176      -1,   135,    -1,   137,   138,    -1,   140,   141,   142,   143,
14177     144,   145,     0,    -1,    -1,   149,   150,    -1,    -1,    -1,
14178       8,     9,    10,    -1,    -1,    13,    14,    15,    -1,    17,
14179      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    -1,    27,
14180      28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
14181      38,    -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,
14182      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14183      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14184      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,
14185      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
14186      88,    89,    -1,    -1,    -1,    -1,    94,    95,    96,    97,
14187      -1,    -1,   100,    -1,    -1,   103,    -1,    -1,   106,    -1,
14188      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14189      -1,    -1,   120,    -1,    -1,   123,    -1,   125,    -1,   127,
14190     128,    -1,   130,   131,   132,   133,    -1,   135,    -1,   137,
14191     138,    -1,   140,   141,   142,   143,   144,   145,     0,    -1,
14192      -1,   149,   150,    -1,    -1,    -1,     8,     9,    10,    -1,
14193      -1,    13,    14,    15,    -1,    17,    -1,    -1,    -1,    -1,
14194      -1,    -1,    -1,    25,    26,    27,    28,    -1,    -1,    -1,
14195      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    41,
14196      42,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14197      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14198      -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
14199      -1,    -1,    -1,    -1,    -1,    77,    78,    79,    80,    81,
14200      82,    83,    84,    85,    86,    87,    88,    89,    -1,    -1,
14201      -1,    -1,    94,    95,    96,    97,    -1,    -1,   100,    -1,
14202      -1,   103,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,
14203      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,
14204      -1,    -1,    -1,   125,   126,   127,   128,    -1,   130,   131,
14205     132,   133,    -1,   135,   136,   137,   138,    -1,   140,   141,
14206     142,   143,   144,   145,     0,    -1,    -1,   149,    -1,    -1,
14207      -1,    -1,     8,     9,    10,    -1,    -1,    13,    14,    15,
14208      -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
14209      26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14210      -1,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
14211      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14212      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14213      -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14214      -1,    77,    78,    79,    80,    81,    82,    83,    84,    85,
14215      86,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    95,
14216      96,    97,    -1,    -1,   100,    -1,    -1,   103,    -1,    -1,
14217     106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14218      -1,    -1,    -1,    -1,   120,    -1,    -1,    -1,    -1,   125,
14219     126,   127,   128,    -1,   130,   131,   132,   133,    -1,   135,
14220     136,   137,   138,    -1,   140,   141,   142,   143,   144,   145,
14221       0,    -1,    -1,   149,    -1,    -1,    -1,    -1,     8,     9,
14222      10,    -1,    -1,    13,    14,    15,    -1,    17,    -1,    -1,
14223      -1,    -1,    -1,    -1,    -1,    25,    -1,    27,    28,    -1,
14224      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
14225      40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
14226      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14227      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
14228      -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    79,
14229      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
14230      -1,    -1,    -1,    -1,    94,    95,    96,    97,    -1,    -1,
14231     100,    -1,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
14232      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14233     120,    -1,    -1,    -1,    -1,   125,    -1,   127,   128,    -1,
14234     130,   131,   132,   133,    -1,   135,   136,   137,   138,    -1,
14235     140,   141,   142,   143,   144,   145,     0,    -1,    -1,   149,
14236      -1,    -1,    -1,    -1,     8,     9,    10,    -1,    -1,    -1,
14237      14,    15,    -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,
14238      -1,    25,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14239      -1,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
14240      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14241      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14242      -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
14243      -1,    -1,    -1,    77,    78,    79,    80,    81,    82,    83,
14244      84,    85,    86,    87,    88,    89,    -1,    -1,    -1,    -1,
14245      94,    95,    96,    97,    -1,    99,   100,    -1,    -1,   103,
14246      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14247      -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,    -1,
14248      -1,   125,   126,   127,   128,   129,   130,   131,   132,   133,
14249      -1,   135,    -1,    -1,   138,    -1,   140,   141,   142,   143,
14250     144,   145,     0,    -1,    -1,   149,    -1,    -1,    -1,    -1,
14251       8,     9,    10,    -1,    -1,    -1,    14,    15,    -1,    17,
14252      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,
14253      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
14254      38,    -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,
14255      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14256      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14257      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,
14258      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
14259      88,    89,    -1,    -1,    -1,    -1,    94,    95,    96,    97,
14260      -1,    99,   100,    -1,    -1,   103,    -1,    -1,    -1,    -1,
14261      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14262      -1,    -1,   120,    -1,    -1,    -1,    -1,   125,   126,   127,
14263     128,   129,   130,   131,   132,   133,    -1,   135,    -1,    -1,
14264     138,    -1,   140,   141,   142,   143,   144,   145,     0,    -1,
14265      -1,   149,    -1,    -1,    -1,    -1,     8,     9,    10,    -1,
14266      -1,    -1,    14,    15,    -1,    17,    -1,    -1,    -1,    -1,
14267      -1,    -1,    -1,    25,    -1,    -1,    -1,    -1,    -1,    -1,
14268      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    41,
14269      42,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14270      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14271      -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
14272      -1,    -1,    -1,    -1,    -1,    77,    78,    79,    80,    81,
14273      82,    83,    84,    85,    86,    87,    88,    89,    -1,    -1,
14274      -1,    -1,    94,    95,    96,    97,    -1,    99,   100,    -1,
14275      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14276      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,
14277      -1,    -1,    -1,   125,    -1,   127,   128,   129,   130,   131,
14278     132,   133,    -1,   135,    -1,    -1,   138,    -1,   140,   141,
14279     142,   143,   144,   145,     0,    -1,    -1,   149,    -1,    -1,
14280      -1,    -1,     8,     9,    10,    -1,    -1,    -1,    14,    15,
14281      -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
14282      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14283      -1,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
14284      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14285      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14286      -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14287      -1,    77,    78,    79,    80,    81,    82,    83,    84,    85,
14288      86,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    95,
14289      96,    97,    -1,    99,   100,    -1,    -1,   103,    -1,    -1,
14290      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14291      -1,    -1,    -1,    -1,   120,    -1,    -1,    -1,    -1,   125,
14292      -1,   127,   128,   129,   130,   131,   132,   133,    -1,   135,
14293      -1,    -1,   138,    -1,   140,   141,   142,   143,   144,   145,
14294      -1,    -1,    -1,   149,     3,     4,     5,     6,     7,    -1,
14295      -1,    -1,    11,    12,    -1,    -1,    -1,    16,    -1,    18,
14296      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
14297      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
14298      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
14299      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
14300      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
14301      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,
14302      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14303      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,
14304      -1,    -1,   101,   102,    -1,   104,   105,    -1,   107,    -1,
14305      -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
14306      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14307      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,
14308      -1,     3,     4,     5,     6,     7,    -1,   146,   147,    11,
14309      12,    -1,   151,    -1,    16,    -1,    18,    19,    20,    21,
14310      22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
14311      32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
14312      -1,    -1,    -1,    45,    46,    47,    48,    49,    50,    51,
14313      52,    53,    54,    55,    56,    57,    -1,    59,    60,    61,
14314      62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
14315      -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
14316      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
14317      -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
14318     102,    -1,   104,   105,    -1,   107,    -1,    -1,   110,   111,
14319     112,   113,   114,   115,   116,   117,   118,    -1,    -1,    -1,
14320      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14321      -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,     3,     4,
14322       5,     6,     7,    -1,   146,   147,    11,    12,    -1,   151,
14323      -1,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
14324      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
14325      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
14326      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
14327      55,    56,    57,    -1,    59,    60,    61,    62,    63,    64,
14328      65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14329      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14330      -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,
14331      -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,
14332     105,    -1,   107,    -1,    -1,   110,   111,   112,   113,   114,
14333     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
14334      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14335      -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,
14336      -1,   146,   147,    11,    12,    -1,   151,    -1,    16,    -1,
14337      18,    19,    20,    21,    22,    23,    24,    -1,    -1,    -1,
14338      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
14339      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,
14340      -1,    49,    50,    51,    52,    53,    54,    55,    56,    57,
14341      58,    59,    60,    61,    62,    63,    64,    65,    -1,    -1,
14342      -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,
14343      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14344      -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
14345      98,    -1,    -1,   101,   102,    -1,   104,   105,    -1,   107,
14346     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
14347     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14348      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14349      -1,    -1,   140,     3,     4,     5,    -1,     7,   146,   147,
14350      -1,    11,    12,   151,    -1,    -1,    16,    -1,    18,    19,
14351      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
14352      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
14353      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
14354      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
14355      60,    61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,
14356      -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
14357      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14358      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,
14359      -1,   101,   102,    -1,   104,   105,    -1,   107,   108,   109,
14360     110,   111,   112,   113,   114,   115,   116,   117,   118,    -1,
14361      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14362      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14363       3,     4,     5,     6,     7,    -1,   146,   147,    11,    12,
14364      -1,   151,    -1,    16,    -1,    18,    19,    20,    21,    22,
14365      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
14366      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
14367      -1,    -1,    45,    46,    -1,    48,    49,    50,    51,    52,
14368      53,    54,    55,    56,    57,    -1,    59,    60,    61,    62,
14369      63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14370      -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
14371      -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
14372      -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,
14373      -1,   104,   105,    -1,   107,    -1,    -1,   110,   111,   112,
14374     113,   114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
14375      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14376      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
14377      -1,     7,    -1,   146,   147,    11,    12,    -1,   151,    -1,
14378      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
14379      -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
14380      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
14381      46,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
14382      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
14383      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,
14384      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14385      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
14386      -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,
14387      -1,   107,   108,   109,   110,   111,   112,   113,   114,   115,
14388     116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14389      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14390      -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,
14391     146,   147,    11,    12,    -1,   151,    -1,    16,    -1,    18,
14392      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
14393      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
14394      39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
14395      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
14396      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
14397      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,
14398      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14399      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,
14400      -1,    -1,   101,   102,    -1,   104,   105,    -1,   107,   108,
14401     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
14402      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14403      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14404      -1,     3,     4,     5,    -1,     7,    -1,   146,   147,    11,
14405      12,    -1,   151,    -1,    16,    -1,    18,    19,    20,    21,
14406      22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
14407      32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
14408      -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
14409      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
14410      62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
14411      -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
14412      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
14413      -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
14414     102,    -1,   104,   105,    -1,   107,   108,   109,   110,   111,
14415     112,   113,   114,   115,   116,   117,   118,    -1,    -1,    -1,
14416      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14417      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
14418       5,    -1,     7,    -1,   146,   147,    11,    12,    -1,   151,
14419      -1,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
14420      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
14421      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
14422      -1,    46,    -1,    -1,    49,    50,    51,    52,    53,    54,
14423      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
14424      65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14425      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14426      -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,
14427      -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,
14428     105,    -1,   107,   108,    -1,   110,   111,   112,   113,   114,
14429     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
14430      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14431      -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,
14432      -1,   146,   147,    11,    12,    -1,   151,    -1,    16,    -1,
14433      18,    19,    20,    21,    22,    23,    24,    -1,    -1,    -1,
14434      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
14435      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,
14436      -1,    49,    50,    51,    52,    53,    54,    55,    56,    57,
14437      58,    59,    60,    61,    62,    63,    64,    65,    -1,    -1,
14438      -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,
14439      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14440      -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
14441      98,    -1,    -1,   101,   102,    -1,   104,   105,    -1,    -1,
14442     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
14443     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14444      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14445      -1,    -1,     3,     4,     5,    -1,     7,    -1,   146,   147,
14446      11,    12,    -1,   151,    -1,    16,    -1,    18,    19,    20,
14447      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
14448      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
14449      -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
14450      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
14451      61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
14452      -1,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
14453      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,
14454      91,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,
14455     101,   102,    -1,   104,   105,    -1,   107,   108,    -1,   110,
14456     111,   112,   113,   114,   115,   116,   117,   118,    -1,    -1,
14457      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14458      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
14459       4,     5,    -1,     7,    -1,   146,   147,    11,    12,    -1,
14460     151,    -1,    16,    -1,    18,    19,    20,    21,    22,    23,
14461      24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
14462      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
14463      -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,    53,
14464      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
14465      64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14466      -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14467      -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
14468      -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,
14469     104,   105,    -1,    -1,   108,    -1,   110,   111,   112,   113,
14470     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
14471      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14472      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,
14473       7,    -1,   146,   147,    11,    12,    -1,   151,    -1,    16,
14474      -1,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
14475      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
14476      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,
14477      -1,    -1,    49,    50,    51,    52,    53,    54,    55,    56,
14478      57,    -1,    59,    60,    61,    62,    63,    64,    65,    -1,
14479      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,
14480      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14481      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
14482      -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,    -1,
14483      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,   116,
14484     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14485      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14486      -1,   138,    -1,   140,     3,     4,     5,    -1,     7,   146,
14487     147,    -1,    11,    12,   151,    -1,    -1,    16,    -1,    18,
14488      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
14489      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
14490      39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
14491      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
14492      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
14493      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,
14494      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14495      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,
14496      -1,    -1,   101,   102,    -1,   104,   105,    -1,    -1,    -1,
14497      -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
14498      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14499      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14500      -1,   140,     3,     4,     5,    -1,     7,   146,   147,    -1,
14501      11,    12,   151,    -1,    -1,    16,    -1,    18,    19,    20,
14502      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
14503      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
14504      -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
14505      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
14506      61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
14507      -1,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
14508      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,
14509      91,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,
14510     101,   102,    -1,   104,   105,    -1,   107,    -1,    -1,   110,
14511     111,   112,   113,   114,   115,   116,   117,   118,    -1,    -1,
14512      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14513      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
14514       4,     5,    -1,     7,    -1,   146,   147,    11,    12,    -1,
14515     151,    -1,    16,    -1,    18,    19,    20,    21,    22,    23,
14516      24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
14517      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
14518      -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,    53,
14519      54,    55,    56,    57,    -1,    59,    60,    61,    62,    63,
14520      64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14521      -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14522      -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
14523      -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,
14524     104,   105,    -1,   107,    -1,    -1,   110,   111,   112,   113,
14525     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
14526      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14527      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,
14528       7,    -1,   146,   147,    11,    12,    -1,   151,    -1,    16,
14529      -1,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
14530      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
14531      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,
14532      -1,    -1,    49,    50,    51,    52,    53,    54,    55,    56,
14533      57,    -1,    59,    60,    61,    62,    63,    64,    65,    -1,
14534      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,
14535      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14536      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
14537      -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,    -1,
14538     107,    -1,    -1,   110,   111,   112,   113,   114,   115,   116,
14539     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14540      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14541      -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,   146,
14542     147,    11,    12,    -1,   151,    -1,    16,    -1,    18,    19,
14543      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
14544      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
14545      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
14546      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
14547      60,    61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,
14548      -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
14549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14550      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,
14551      -1,   101,   102,    -1,   104,   105,    -1,   107,    -1,    -1,
14552     110,   111,   112,   113,   114,   115,   116,   117,   118,    -1,
14553      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14554      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14555       3,     4,     5,    -1,     7,    -1,   146,   147,    11,    12,
14556      -1,   151,    -1,    16,    -1,    18,    19,    20,    21,    22,
14557      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
14558      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
14559      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,
14560      53,    54,    55,    56,    57,    -1,    59,    60,    61,    62,
14561      63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14562      -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
14563      -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
14564      -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,
14565      -1,   104,   105,    -1,   107,    -1,    -1,   110,   111,   112,
14566     113,   114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
14567      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14568      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
14569      -1,     7,    -1,   146,   147,    11,    12,    -1,   151,    -1,
14570      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
14571      -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
14572      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
14573      46,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
14574      56,    57,    -1,    59,    60,    61,    62,    63,    64,    65,
14575      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,
14576      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14577      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
14578      -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,
14579      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
14580     116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14581      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14582      -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,
14583     146,   147,    11,    12,    -1,   151,    -1,    16,    -1,    18,
14584      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
14585      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
14586      39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
14587      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
14588      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
14589      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    -1,    -1,
14590      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14591      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    98,
14592      -1,    -1,   101,   102,    -1,   104,   105,    -1,    -1,    -1,
14593      -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
14594      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14595      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14596      -1,     3,     4,     5,    -1,     7,    -1,   146,   147,    11,
14597      12,    -1,   151,    -1,    16,    -1,    18,    19,    20,    21,
14598      22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
14599      32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
14600      -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
14601      52,    53,    54,    55,    56,    57,    -1,    59,    60,    61,
14602      62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
14603      -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
14604      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
14605      -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
14606     102,    -1,   104,   105,    -1,    -1,    -1,    -1,   110,   111,
14607     112,   113,   114,   115,   116,   117,   118,    -1,    -1,    -1,
14608      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14609      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
14610       5,    -1,     7,    -1,   146,   147,    11,    12,    -1,   151,
14611      -1,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
14612      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
14613      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
14614      -1,    46,    -1,    -1,    49,    50,    51,    52,    53,    54,
14615      55,    56,    57,    -1,    59,    60,    61,    62,    63,    64,
14616      65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14617      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14618      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14619      -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,
14620     105,    -1,   107,    -1,    -1,   110,   111,   112,   113,   114,
14621     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
14622       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
14623      -1,    -1,    -1,    16,    -1,    18,    19,    20,    21,    22,
14624      23,    24,    -1,    -1,    -1,    -1,   151,    30,    31,    32,
14625      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
14626      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,
14627      53,    54,    55,    56,    57,    -1,    59,    60,    61,    62,
14628      63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14629      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14630      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14631      -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,
14632      -1,   104,   105,    -1,   107,    -1,    -1,   110,   111,   112,
14633     113,   114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
14634      -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,
14635      11,    12,    -1,    -1,    -1,    16,    -1,    18,    19,    20,
14636      21,    22,    23,    24,    -1,    -1,    -1,    -1,   151,    30,
14637      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
14638      -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
14639      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
14640      61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
14641      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14643      -1,    -1,    -1,    94,    -1,    -1,    -1,    98,    -1,    -1,
14644     101,   102,    -1,   104,   105,    -1,    -1,    -1,    -1,   110,
14645     111,   112,   113,   114,   115,   116,   117,   118,    -1,    -1,
14646      -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,
14647      -1,    -1,    11,    12,    -1,    -1,    -1,    16,    -1,    18,
14648      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
14649     151,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
14650      39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
14651      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
14652      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
14653      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14654      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14655      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,
14656      -1,    -1,   101,   102,    -1,   104,   105,    -1,    -1,    -1,
14657      -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
14658      -1,    -1,    -1,    -1,    -1,    -1,   125,     3,     4,     5,
14659      -1,     7,    -1,    -1,    -1,    11,    12,    -1,    -1,    -1,
14660      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
14661      -1,    -1,   151,    -1,    30,    31,    32,    33,    34,    35,
14662      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
14663      46,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
14664      56,    57,    -1,    59,    60,    61,    62,    63,    64,    65,
14665      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14666      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14667      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14668      -1,    -1,    98,    -1,    -1,   101,   102,    -1,   104,   105,
14669      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
14670     116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,     3,
14671       4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,    -1,
14672      -1,    -1,    16,    -1,    18,    19,    20,    21,    22,    23,
14673      24,    -1,    -1,    -1,    -1,   151,    30,    31,    32,    33,
14674      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
14675      -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,    53,
14676      54,    55,    56,    57,    -1,    59,    60,    61,    62,    63,
14677      64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14678      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14679      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14680      -1,    -1,    -1,    -1,    98,    -1,    -1,   101,   102,    -1,
14681     104,   105,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
14682     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
14683      -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,
14684      12,    -1,    -1,    -1,    16,    -1,    18,    19,    20,    21,
14685      22,    23,    24,    -1,    -1,    -1,    -1,   151,    30,    31,
14686      32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
14687      -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
14688      52,    53,    54,    55,    56,    57,    -1,    59,    60,    61,
14689      62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
14690      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14691      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14692      -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
14693     102,    -1,   104,   105,    -1,    -1,    -1,    -1,   110,   111,
14694     112,   113,   114,   115,   116,   117,   118,    -1,    -1,    -1,
14695      -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,
14696      -1,    11,    12,    -1,    -1,    -1,    16,    -1,    18,    19,
14697      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,   151,
14698      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
14699      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
14700      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
14701      60,    61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,
14702      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14703      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14704      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,
14705      -1,   101,   102,    -1,   104,   105,    -1,    -1,    -1,    -1,
14706     110,   111,   112,   113,   114,   115,   116,   117,   118,    -1,
14707      -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
14708       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
14709      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
14710      -1,   151,    30,    31,    32,    33,    34,    35,    36,    37,
14711      38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
14712      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
14713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14714      -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
14715      78,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
14716      -1,    -1,    -1,    -1,    92,    93,    94,    95,    -1,    -1,
14717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
14718     108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14719      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14720      -1,    -1,   130,   131,   132,   133,   134,   135,   136,    -1,
14721      -1,    -1,    -1,   141,   142,   143,   144,   145,   146,   147,
14722       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
14723      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
14724      23,    24,    25,    26,    -1,    -1,    -1,    30,    31,    32,
14725      33,    34,    35,    36,    37,    38,    39,    -1,    -1,    -1,
14726      -1,    -1,    45,    46,    47,    48,    49,    50,    51,    52,
14727      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    -1,
14728      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14729      -1,    -1,    75,    76,    77,    78,    79,    80,    81,    82,
14730      83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
14731      93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14732      -1,    -1,    -1,    -1,   107,   108,    -1,    -1,    -1,    -1,
14733      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14734      -1,    -1,    -1,    -1,    -1,    -1,    -1,   130,   131,   132,
14735     133,   134,   135,    -1,    -1,    -1,    -1,    -1,   141,   142,
14736     143,   144,   145,   146,   147,     3,     4,     5,     6,     7,
14737       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
14738      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
14739      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    37,
14740      38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
14741      48,    49,    50,    51,    52,    53,    54,    -1,    56,    -1,
14742      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14743      -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
14744      78,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
14745      -1,    -1,    -1,    -1,    92,    93,    94,    95,    -1,    -1,
14746      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
14747     108,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
14748      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14749      -1,    -1,   130,   131,   132,   133,   134,   135,    -1,    -1,
14750      -1,    -1,    -1,   141,   142,   143,   144,   145,   146,   147,
14751       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
14752      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
14753      23,    24,    25,    26,    -1,    -1,    -1,    30,    31,    32,
14754      33,    34,    35,    36,    37,    38,    39,    -1,    -1,    -1,
14755      -1,    -1,    45,    46,    47,    48,    49,    50,    51,    52,
14756      53,    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,
14757      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14758      -1,    -1,    75,    76,    77,    78,    79,    80,    81,    82,
14759      83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
14760      93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14761      -1,    -1,    -1,    -1,   107,   108,    -1,    -1,   111,    -1,
14762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14763      -1,    -1,    -1,    -1,    -1,    -1,    -1,   130,   131,   132,
14764     133,   134,   135,    -1,    -1,    -1,    -1,    -1,   141,   142,
14765     143,   144,   145,   146,   147,     3,     4,     5,     6,     7,
14766       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
14767      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
14768      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    37,
14769      38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
14770      48,    49,    50,    51,    52,    53,    -1,    -1,    56,    -1,
14771      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14772      -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
14773      78,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
14774      -1,    -1,    -1,    -1,    92,    93,    94,    95,    33,    34,
14775      35,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
14776     108,    -1,    -1,    -1,    49,    50,    51,    52,    -1,    -1,
14777      -1,    56,    -1,    -1,    59,    60,    61,    62,    63,    -1,
14778      -1,    -1,   130,   131,   132,   133,   134,   135,    -1,    -1,
14779      -1,    -1,    -1,   141,   142,   143,   144,   145,   146,   147,
14780      -1,    44,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,
14781      -1,    -1,    -1,    98,    -1,    -1,   101,    -1,    -1,   104,
14782     105,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
14783     115,   116,   117,   118,    77,    78,    79,    80,    81,    82,
14784      83,    84,    85,    86,    87,    88,    89,    -1,    -1,    -1,
14785     135,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14786      -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,    -1,    -1,
14787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14788      -1,    -1,    -1,    -1,    -1,    -1,    -1,   130,   131,   132,
14789     133,    -1,   135,    52,    53,    -1,    -1,    56,   141,   142,
14790     143,   144,   145,    -1,    -1,    -1,   149,    -1,    -1,    -1,
14791      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
14792      79,    80,    81,    82,    83,    -1,    -1,    86,    87,    -1,
14793      -1,    -1,    -1,    92,    93,    94,    95,    -1,    -1,    -1,
14794      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,
14795      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14796      -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,
14797      56,   130,   131,   132,   133,   134,   135,   136,    -1,    -1,
14798      -1,    -1,   141,   142,   143,   144,   145,   146,   147,    75,
14799      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
14800      86,    87,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
14801      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14802      -1,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14803      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,
14804      53,    -1,    -1,    56,   130,   131,   132,   133,   134,   135,
14805     136,    -1,    -1,    -1,    -1,   141,   142,   143,   144,   145,
14806     146,   147,    75,    76,    77,    78,    79,    80,    81,    82,
14807      83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
14808      93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14809      -1,    -1,    -1,    -1,   107,   108,    -1,    -1,    -1,    -1,
14810      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14811      -1,    -1,    52,    53,    -1,    -1,    56,   130,   131,   132,
14812     133,   134,   135,   136,    -1,    -1,    -1,    -1,   141,   142,
14813     143,   144,   145,   146,   147,    75,    76,    77,    78,    79,
14814      80,    81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,
14815      -1,    -1,    92,    93,    94,    95,    -1,    -1,    -1,    -1,
14816      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,
14817      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14818      -1,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    56,
14819     130,   131,   132,   133,   134,   135,   136,    -1,    -1,    -1,
14820      -1,   141,   142,   143,   144,   145,   146,   147,    75,    76,
14821      77,    78,    79,    80,    81,    82,    83,    -1,    -1,    86,
14822      87,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    -1,
14823      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14824     107,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14825      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    53,
14826      -1,    -1,    56,   130,   131,   132,   133,   134,   135,   136,
14827      -1,    -1,    -1,    -1,   141,   142,   143,   144,   145,   146,
14828     147,    75,    76,    77,    78,    79,    80,    81,    82,    83,
14829      -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,    93,
14830      94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14831      -1,    -1,    -1,   107,   108,    -1,    -1,    -1,    -1,    -1,
14832      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14833      -1,    52,    53,    -1,    -1,    56,   130,   131,   132,   133,
14834     134,   135,   136,    -1,    -1,    -1,    -1,   141,   142,   143,
14835     144,   145,   146,   147,    75,    76,    77,    78,    79,    80,
14836      81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
14837      -1,    92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,
14838      -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,
14839      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14840      -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    56,   130,
14841     131,   132,   133,   134,   135,   136,    -1,    -1,    -1,    -1,
14842     141,   142,   143,   144,   145,   146,   147,    75,    76,    77,
14843      78,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
14844      -1,    -1,    -1,    -1,    92,    93,    94,    95,    -1,    -1,
14845      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
14846     108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14847      -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    -1,
14848      -1,    56,   130,   131,   132,   133,   134,   135,   136,    -1,
14849      -1,    -1,    -1,   141,   142,   143,   144,   145,   146,   147,
14850      75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
14851      -1,    86,    87,    -1,    -1,    -1,    -1,    92,    93,    94,
14852      95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14853      -1,    -1,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,
14854      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14855      52,    53,    -1,    -1,    56,   130,   131,   132,   133,   134,
14856     135,   136,    -1,    -1,    -1,    -1,   141,   142,   143,   144,
14857     145,   146,   147,    75,    76,    77,    78,    79,    80,    81,
14858      82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
14859      92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,
14860      -1,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,    -1,
14861      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14862      -1,    -1,    -1,    52,    53,    -1,    -1,    56,   130,   131,
14863     132,   133,   134,   135,   136,    -1,    -1,    -1,    -1,   141,
14864     142,   143,   144,   145,   146,   147,    75,    76,    77,    78,
14865      79,    80,    81,    82,    83,    -1,    -1,    86,    87,    -1,
14866      -1,    -1,    -1,    92,    93,    94,    95,    -1,    -1,    -1,
14867      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,
14868      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14869      -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,
14870      56,   130,   131,   132,   133,   134,   135,   136,    -1,    -1,
14871      -1,    -1,   141,   142,   143,   144,   145,   146,   147,    75,
14872      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
14873      86,    87,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
14874      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14875      -1,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14876      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,
14877      53,    -1,    -1,    56,   130,   131,   132,   133,   134,   135,
14878     136,    -1,    -1,    -1,    -1,   141,   142,   143,   144,   145,
14879     146,   147,    75,    76,    77,    78,    79,    80,    81,    82,
14880      83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
14881      93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14882      -1,    -1,    -1,    -1,   107,   108,    -1,    -1,    -1,    -1,
14883      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14884      -1,    -1,    52,    53,    -1,    -1,    56,   130,   131,   132,
14885     133,   134,   135,   136,    -1,    -1,    -1,    -1,   141,   142,
14886     143,   144,   145,   146,   147,    75,    76,    77,    78,    79,
14887      80,    81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,
14888      -1,    -1,    92,    93,    94,    95,    -1,    -1,    -1,    -1,
14889      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,
14890      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14891      -1,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    56,
14892     130,   131,   132,   133,   134,   135,   136,    -1,    -1,    -1,
14893      -1,   141,   142,   143,   144,   145,   146,   147,    75,    76,
14894      77,    78,    79,    80,    81,    82,    83,    -1,    -1,    86,
14895      87,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    -1,
14896      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14897     107,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14898      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    53,
14899      -1,    -1,    56,   130,   131,   132,   133,   134,   135,   136,
14900      -1,    -1,    -1,    -1,   141,   142,   143,   144,   145,   146,
14901     147,    75,    76,    77,    78,    79,    80,    81,    82,    83,
14902      -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,    93,
14903      94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14904      -1,    -1,    -1,   107,   108,    77,    78,    79,    80,    81,
14905      82,    83,    84,    85,    86,    87,    88,    89,    -1,    -1,
14906      -1,    -1,    94,    95,    -1,    -1,   130,   131,   132,   133,
14907     134,   135,    -1,    -1,    -1,    -1,    -1,   141,   142,   143,
14908     144,   145,   146,   147,    -1,    -1,    -1,    -1,    -1,    -1,
14909      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   130,   131,
14910     132,   133,    -1,   135,    -1,    -1,    -1,    -1,    -1,   141,
14911     142,   143,   144,   145,    -1,    -1,    -1,   149,    77,    78,
14912      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
14913      89,    -1,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,
14914      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14915      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14916      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
14917      -1,   130,   131,   132,   133,    -1,   135,    -1,    -1,    -1,
14918      -1,    -1,   141,   142,   143,   144,   145 ];
14919
14920/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
14921   state STATE-NUM.  */
14922  #[allow(non_upper_case_globals)]
14923const yystos_: &'static [i32] = &[      0,   154,   155,     0,     1,     3,     4,     5,     6,     7,
14924      11,    12,    16,    18,    19,    20,    21,    22,    23,    24,
14925      30,    31,    32,    33,    34,    35,    36,    39,    45,    46,
14926      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
14927      57,    59,    60,    61,    62,    63,    64,    65,    75,    76,
14928      90,    91,    98,   101,   102,   104,   105,   107,   110,   111,
14929     112,   113,   114,   115,   116,   117,   118,   146,   147,   151,
14930     156,   157,   158,   165,   167,   169,   173,   174,   179,   180,
14931     183,   184,   185,   187,   188,   189,   191,   192,   201,   204,
14932     219,   229,   230,   231,   232,   233,   234,   235,   236,   237,
14933     238,   239,   248,   270,   280,   281,   330,   331,   332,   333,
14934     334,   335,   336,   339,   341,   342,   356,   357,   359,   360,
14935     361,   363,   364,   365,   366,   367,   405,   419,   158,     3,
14936       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
14937      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
14938      24,    25,    26,    30,    31,    32,    33,    34,    35,    36,
14939      37,    38,    39,    45,    46,    47,    48,    49,    50,    51,
14940      52,    53,    56,    75,    76,    77,    78,    79,    80,    81,
14941      82,    83,    86,    87,    92,    93,    94,    95,   107,   108,
14942     130,   131,   132,   133,   134,   135,   141,   142,   143,   144,
14943     145,   146,   147,   195,   196,   197,   199,   200,   356,    39,
14944      58,    98,   101,   107,   108,   109,   112,   147,   173,   174,
14945     184,   192,   201,   205,   211,   214,   216,   229,   363,   364,
14946     366,   367,   403,   404,   211,   136,   212,   213,   136,   208,
14947     212,   136,   140,   412,    54,   196,   412,   126,   159,   126,
14948      21,    22,    31,    32,   183,   201,   229,   248,   201,   201,
14949     201,    56,     1,    47,   101,   161,   162,   163,   165,   186,
14950     187,   419,   165,   221,   206,   216,   403,   419,   205,   402,
14951     403,   419,    46,    98,   125,   151,   173,   174,   191,   219,
14952     229,   363,   364,   367,   271,    54,    55,    57,   195,   345,
14953     358,   345,   346,   347,   139,   139,   139,   139,   201,   179,
14954     201,   361,   138,   140,   411,   417,   418,    40,    41,    42,
14955      43,    44,    37,    38,   136,   370,   371,   372,   373,   419,
14956     370,   372,    26,   126,   208,   212,   240,   282,    28,   241,
14957     278,   129,   125,   101,   107,   188,   129,    25,    77,    78,
14958      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
14959      89,    94,    95,   100,   130,   131,   132,   133,   135,   141,
14960     142,   143,   144,   145,   149,   203,   203,    68,    96,    97,
14961     128,   409,   220,   169,   176,   176,   177,   178,   177,   176,
14962     411,   418,    98,   185,   192,   229,   253,   363,   364,   367,
14963      52,    56,    94,    98,   193,   194,   229,   363,   364,   367,
14964     194,    33,    34,    35,    36,    49,    50,    51,    52,    56,
14965     136,   172,   195,   365,   400,   211,    97,   409,   410,   282,
14966     333,    99,    99,   125,   205,    56,   205,   205,   205,   345,
14967     370,   370,   129,   100,   125,   215,   419,    97,   128,   409,
14968      99,    99,   125,   215,   211,   412,   413,   211,    91,   210,
14969     211,   216,   377,   403,   419,   169,   413,   169,    54,    64,
14970      65,   166,   136,   202,   156,   161,    97,   409,    99,   164,
14971     186,   103,   411,   418,   413,   222,   413,   137,   125,   140,
14972     416,   125,   416,   127,   416,   412,    56,   188,   190,   361,
14973     371,   125,    97,   128,   409,   272,    66,   119,   121,   122,
14974     348,   119,   119,   348,    67,   348,   337,   343,   340,   344,
14975      77,   138,   158,   176,   176,   176,   176,   165,   169,   169,
14976      52,    54,    55,    56,    57,    58,    77,    91,   101,   107,
14977     108,   109,   131,   143,   258,   318,   374,   376,   377,   378,
14978     379,   380,   381,   382,   383,   384,   387,   388,   389,   390,
14979     391,   394,   395,   396,   397,   398,   129,   160,   161,   376,
14980     129,   160,   283,   106,   181,   284,   279,   107,   179,   205,
14981     216,   217,   218,   186,   125,   191,   125,   167,   168,   179,
14982     192,   201,   205,   207,   218,   229,   367,   171,   201,   201,
14983     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
14984     201,   170,   201,   201,   201,   201,   201,   201,   201,   201,
14985     201,   201,   201,    52,    53,    56,   199,   208,   405,   406,
14986     407,   210,   216,    52,    53,    56,   199,   208,   406,   160,
14987      13,   249,   417,   249,   161,   176,   161,   411,   225,    56,
14988      97,   128,   409,    25,   169,    52,    56,   193,   133,   368,
14989      97,   128,   409,   228,   401,    68,    97,   408,    52,    56,
14990     406,   168,   201,   207,   168,   207,   198,   124,   129,   129,
14991     205,   107,   205,   214,   403,    52,    56,   210,    52,    56,
14992     404,   413,   103,   413,   125,   413,   125,   413,   196,   223,
14993     201,   127,   127,   406,   406,   207,   159,   413,   163,   413,
14994     403,   125,   190,    52,    56,   210,    52,    56,   136,   274,
14995     376,   350,   349,   119,   338,   348,    66,   119,   119,   338,
14996      66,   119,   201,   101,   107,   254,   255,   256,   257,   379,
14997     125,   399,   419,   413,   259,   260,   125,   375,   205,   125,
14998     399,    34,    52,   125,   375,    52,   125,   375,    52,   184,
14999     201,    10,   247,     8,   242,   326,   419,   417,   184,   201,
15000     247,   285,   286,   182,   287,   288,   287,   205,   125,    44,
15001     413,   190,   125,    44,   129,    44,    97,   128,   409,    52,
15002      56,    58,    90,    91,    98,   101,   104,   105,   107,   112,
15003     135,   270,   297,   298,   299,   300,   303,   308,   309,   310,
15004     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
15005     323,   324,   325,   330,   331,   334,   335,   336,   339,   341,
15006     342,   364,   388,   297,   412,    99,    99,   208,   212,   412,
15007     414,   125,    99,    99,   208,   209,   212,   419,   247,   161,
15008      13,   161,   247,    27,   250,   417,   247,    25,   224,   292,
15009      17,   244,   290,    52,    56,   210,    52,    56,   177,   227,
15010     369,   226,    52,    56,   193,   210,   160,   169,   175,   209,
15011     212,   196,   205,   205,   215,    99,    99,   414,    99,    99,
15012     377,   403,   169,   416,   188,   414,   376,   273,   351,    54,
15013      55,    57,   355,   367,   139,   348,   139,   139,   139,   256,
15014     379,   125,   413,   125,   398,   205,   129,   374,   381,   394,
15015     396,   384,   388,   390,   382,   391,   396,   380,   382,    44,
15016      44,   205,   218,   327,   419,     9,    15,   243,   245,   329,
15017     419,    44,    44,   127,   130,   265,   266,   419,   285,   247,
15018     265,   247,   107,   205,   165,   190,   165,   201,    52,    56,
15019     210,    52,    56,   321,   321,    56,   193,   305,   298,   306,
15020     307,   308,   309,   312,   414,   304,   412,   415,    52,   345,
15021      52,    54,    55,    57,   101,   362,   100,   125,   130,   125,
15022     125,   298,    88,    89,    97,   128,   136,   301,   302,    52,
15023     150,   168,   207,   168,   207,   181,   137,    99,   168,   207,
15024     168,   207,   181,    14,   245,   246,   251,   252,   419,   252,
15025     293,   290,   247,   107,   205,   289,   247,   414,   161,   417,
15026     176,   160,   414,   247,   413,   172,   282,   278,    99,   413,
15027     125,   413,   267,   412,    29,   123,   275,   352,   413,   254,
15028     257,   255,   125,   375,   125,   375,   399,   125,   375,   125,
15029     375,   375,   201,   201,   100,   328,   419,   161,   161,   201,
15030     201,   258,   261,   264,   267,   380,   382,   383,   385,   386,
15031     392,   393,   396,   398,   161,   127,   160,   205,   414,   298,
15032     414,   298,   310,   312,   414,   125,   112,   313,   127,   124,
15033     176,   322,   306,   310,   303,   311,   312,   315,   319,   321,
15034     321,   193,   414,   413,   306,   309,   313,   306,   309,   313,
15035     201,   168,   207,   161,   176,   247,   247,   296,   297,   247,
15036     205,   125,   249,   247,   160,   417,   247,   103,   138,   277,
15037     276,   353,   125,   125,   382,   396,   382,   382,    98,   192,
15038     229,   363,   364,   367,   249,   329,   399,   267,   130,   259,
15039     125,   262,   263,    98,   229,   125,   399,   125,   262,   125,
15040     262,   413,   125,   125,   345,   415,   103,   125,   125,   413,
15041     413,   413,   414,   414,   414,   249,   249,    40,    41,   107,
15042     205,   161,   247,    52,   268,   269,   378,   160,   161,   354,
15043     255,   375,   125,   375,   375,   375,    56,    97,   128,   409,
15044     161,   130,   229,   261,   393,   396,    56,    97,   385,   390,
15045     382,   392,   396,   382,   311,   311,   310,   312,   161,   294,
15046     176,   176,   205,   252,   290,   291,   125,   412,   247,   127,
15047     161,   382,    52,    56,   210,    52,    56,   326,   125,   262,
15048     125,   262,    52,    56,   399,   125,   262,   125,   262,   262,
15049     125,   251,   161,   269,   120,   375,   414,   382,   396,   382,
15050     382,   252,   292,   295,   262,   125,   262,   262,   262,   382,
15051     262 ];
15052
15053/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
15054  #[allow(non_upper_case_globals)]
15055const yyr1_: &'static [i32] = &[      0,   153,   155,   154,   156,   157,   157,   157,   157,   158,
15056     158,   159,   160,   160,   161,   162,   162,   162,   162,   163,
15057     164,   163,   166,   165,   165,   165,   165,   165,   165,   165,
15058     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
15059     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
15060     167,   167,   168,   168,   168,   169,   169,   169,   169,   169,
15061     170,   169,   171,   169,   169,   172,   173,   175,   174,   176,
15062     178,   177,   179,   179,   180,   180,   182,   181,   183,   184,
15063     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
15064     185,   185,   186,   186,   187,   187,   187,   187,   187,   187,
15065     187,   187,   187,   187,   188,   188,   189,   189,   190,   190,
15066     191,   191,   191,   191,   191,   191,   191,   191,   191,   192,
15067     192,   192,   192,   192,   192,   192,   192,   192,   193,   193,
15068     194,   194,   194,   195,   195,   195,   195,   195,   196,   196,
15069     197,   198,   197,   199,   199,   199,   199,   199,   199,   199,
15070     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
15071     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
15072     199,   199,   199,   200,   200,   200,   200,   200,   200,   200,
15073     200,   200,   200,   200,   200,   200,   200,   200,   200,   200,
15074     200,   200,   200,   200,   200,   200,   200,   200,   200,   200,
15075     200,   200,   200,   200,   200,   200,   200,   200,   200,   200,
15076     200,   200,   200,   200,   201,   201,   201,   201,   201,   201,
15077     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
15078     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
15079     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
15080     201,   201,   201,   201,   202,   201,   201,   201,   201,   201,
15081     201,   201,   203,   203,   203,   203,   204,   204,   205,   206,
15082     206,   206,   206,   207,   207,   208,   208,   208,   209,   209,
15083     210,   210,   210,   210,   210,   211,   211,   211,   211,   211,
15084     213,   212,   214,   214,   215,   215,   216,   216,   216,   216,
15085     217,   217,   218,   218,   218,   219,   219,   219,   219,   219,
15086     219,   219,   219,   219,   219,   219,   220,   219,   221,   219,
15087     222,   219,   219,   219,   219,   219,   219,   219,   219,   219,
15088     219,   223,   219,   219,   219,   219,   219,   219,   219,   219,
15089     219,   219,   219,   224,   219,   225,   219,   219,   219,   226,
15090     219,   227,   219,   228,   219,   219,   219,   219,   219,   219,
15091     219,   229,   230,   231,   232,   233,   234,   235,   236,   237,
15092     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
15093     248,   249,   249,   249,   250,   250,   251,   251,   252,   252,
15094     253,   253,   254,   254,   255,   255,   256,   256,   256,   256,
15095     256,   257,   257,   258,   258,   260,   259,   261,   261,   261,
15096     261,   262,   262,   263,   264,   264,   264,   264,   264,   264,
15097     264,   264,   264,   264,   264,   264,   264,   264,   264,   265,
15098     265,   266,   266,   267,   267,   268,   268,   269,   269,   271,
15099     272,   273,   270,   274,   274,   276,   275,   277,   275,   279,
15100     278,   280,   280,   280,   280,   281,   281,   281,   281,   281,
15101     281,   281,   281,   281,   283,   282,   284,   282,   286,   285,
15102     288,   287,   289,   289,   289,   289,   290,   291,   291,   293,
15103     294,   292,   295,   295,   296,   296,   296,   297,   297,   297,
15104     297,   297,   297,   298,   299,   299,   300,   300,   301,   302,
15105     303,   303,   303,   303,   303,   303,   303,   303,   303,   303,
15106     303,   303,   303,   304,   303,   303,   305,   303,   306,   306,
15107     306,   306,   306,   306,   307,   307,   308,   308,   309,   310,
15108     310,   311,   311,   312,   313,   313,   313,   313,   314,   314,
15109     315,   315,   316,   316,   317,   317,   318,   319,   319,   320,
15110     320,   320,   320,   320,   320,   320,   320,   320,   320,   321,
15111     321,   321,   321,   321,   321,   321,   321,   321,   321,   322,
15112     323,   323,   324,   325,   325,   325,   326,   326,   327,   327,
15113     327,   328,   328,   329,   329,   330,   330,   331,   332,   332,
15114     332,   333,   334,   335,   336,   337,   337,   338,   338,   339,
15115     340,   340,   341,   342,   343,   343,   344,   344,   345,   345,
15116     346,   346,   347,   347,   348,   349,   348,   350,   351,   352,
15117     353,   354,   348,   355,   355,   355,   355,   356,   356,   357,
15118     358,   358,   358,   358,   359,   360,   360,   361,   361,   361,
15119     361,   362,   362,   362,   363,   363,   363,   363,   363,   364,
15120     364,   364,   364,   364,   364,   364,   365,   365,   366,   366,
15121     367,   367,   369,   368,   368,   370,   370,   371,   372,   373,
15122     372,   374,   374,   374,   374,   374,   375,   375,   376,   376,
15123     376,   376,   376,   376,   376,   376,   376,   376,   376,   376,
15124     376,   376,   376,   377,   378,   378,   378,   378,   379,   379,
15125     380,   381,   381,   382,   382,   383,   384,   384,   385,   385,
15126     386,   386,   387,   387,   388,   388,   389,   390,   390,   391,
15127     392,   393,   393,   394,   394,   395,   395,   396,   396,   397,
15128     397,   398,   398,   399,   399,   400,   401,   400,   402,   402,
15129     403,   403,   404,   404,   404,   404,   404,   405,   405,   405,
15130     406,   406,   407,   407,   407,   408,   408,   409,   409,   410,
15131     410,   411,   411,   412,   412,   413,   414,   415,   416,   416,
15132     416,   417,   417,   418,   418,   419 ];
15133
15134/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
15135  #[allow(non_upper_case_globals)]
15136const yyr2_: &'static [i32] = &[      0,     2,     0,     2,     2,     1,     1,     3,     2,     1,
15137       2,     3,     5,     3,     2,     1,     1,     3,     1,     1,
15138       0,     3,     0,     4,     3,     3,     3,     2,     3,     3,
15139       3,     3,     3,     4,     1,     3,     3,     5,     3,     1,
15140       3,     3,     6,     5,     5,     5,     5,     4,     6,     4,
15141       6,     3,     1,     3,     1,     1,     3,     3,     3,     2,
15142       0,     4,     0,     4,     1,     1,     2,     0,     5,     1,
15143       0,     3,     1,     1,     1,     4,     0,     4,     1,     2,
15144       3,     4,     5,     4,     5,     2,     2,     2,     2,     2,
15145       1,     3,     1,     3,     1,     2,     3,     5,     2,     4,
15146       2,     4,     1,     3,     1,     3,     2,     3,     1,     3,
15147       1,     1,     4,     3,     3,     3,     3,     2,     1,     1,
15148       1,     4,     3,     3,     3,     3,     2,     1,     1,     1,
15149       2,     1,     3,     1,     1,     1,     1,     1,     1,     1,
15150       1,     0,     4,     1,     1,     1,     1,     1,     1,     1,
15151       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15152       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15153       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15154       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15155       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15156       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15157       1,     1,     1,     1,     3,     3,     6,     5,     5,     5,
15158       5,     4,     3,     3,     3,     2,     2,     2,     2,     3,
15159       3,     3,     3,     3,     3,     4,     2,     2,     3,     3,
15160       3,     3,     1,     3,     3,     3,     3,     3,     2,     2,
15161       3,     3,     3,     3,     0,     4,     6,     4,     6,     4,
15162       6,     1,     1,     1,     1,     1,     3,     3,     1,     1,
15163       2,     4,     2,     1,     3,     3,     5,     3,     1,     1,
15164       1,     1,     2,     4,     2,     1,     2,     2,     4,     1,
15165       0,     2,     2,     1,     2,     1,     1,     2,     3,     4,
15166       1,     1,     3,     4,     2,     1,     1,     1,     1,     1,
15167       1,     1,     1,     1,     1,     1,     0,     4,     0,     3,
15168       0,     4,     3,     3,     2,     3,     3,     1,     4,     3,
15169       1,     0,     6,     4,     3,     2,     1,     2,     1,     6,
15170       6,     4,     4,     0,     6,     0,     5,     5,     6,     0,
15171       6,     0,     7,     0,     5,     4,     4,     1,     1,     1,
15172       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15173       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15174       1,     1,     1,     2,     1,     1,     1,     5,     1,     2,
15175       1,     1,     1,     3,     1,     3,     1,     3,     5,     1,
15176       3,     2,     1,     1,     1,     0,     2,     4,     2,     2,
15177       1,     2,     0,     1,     6,     8,     4,     6,     4,     2,
15178       6,     2,     4,     6,     2,     4,     2,     4,     1,     1,
15179       1,     3,     4,     1,     4,     1,     3,     1,     1,     0,
15180       0,     0,     6,     4,     1,     0,     4,     0,     4,     0,
15181       4,     2,     4,     5,     5,     2,     4,     4,     3,     3,
15182       3,     2,     1,     4,     0,     4,     0,     4,     0,     3,
15183       0,     3,     1,     2,     3,     4,     5,     1,     1,     0,
15184       0,     7,     1,     1,     1,     3,     3,     1,     2,     3,
15185       1,     1,     1,     1,     3,     1,     3,     1,     1,     1,
15186       1,     1,     4,     4,     4,     3,     4,     4,     4,     3,
15187       3,     3,     2,     0,     4,     2,     0,     4,     1,     1,
15188       2,     2,     4,     1,     2,     3,     1,     3,     5,     2,
15189       1,     1,     3,     1,     3,     1,     2,     1,     1,     3,
15190       2,     1,     1,     3,     2,     1,     2,     1,     1,     1,
15191       3,     3,     2,     2,     1,     1,     1,     2,     2,     1,
15192       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15193       2,     2,     4,     2,     3,     1,     6,     1,     1,     1,
15194       1,     2,     1,     2,     1,     1,     1,     1,     1,     1,
15195       2,     3,     3,     3,     4,     0,     3,     1,     2,     4,
15196       0,     3,     4,     4,     0,     3,     0,     3,     0,     2,
15197       0,     2,     0,     2,     1,     0,     3,     0,     0,     0,
15198       0,     0,     8,     1,     1,     1,     1,     1,     1,     2,
15199       1,     1,     1,     1,     3,     1,     2,     1,     1,     1,
15200       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15201       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15202       1,     1,     0,     4,     0,     1,     1,     3,     1,     0,
15203       3,     4,     2,     2,     1,     1,     2,     0,     6,     8,
15204       4,     6,     4,     6,     2,     4,     6,     2,     4,     2,
15205       4,     1,     0,     1,     1,     1,     1,     1,     1,     1,
15206       1,     1,     3,     1,     3,     1,     2,     1,     2,     1,
15207       1,     3,     1,     3,     1,     1,     1,     2,     1,     3,
15208       3,     1,     3,     1,     3,     1,     1,     2,     1,     1,
15209       1,     2,     1,     2,     1,     1,     0,     4,     1,     2,
15210       1,     3,     3,     2,     1,     4,     2,     1,     1,     1,
15211       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
15212       1,     0,     1,     0,     1,     2,     2,     2,     0,     1,
15213       1,     1,     1,     1,     2,     0 ];
15214
15215
15216/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
15217  #[allow(non_upper_case_globals)]
15218const yyrline_: &'static [i32] = &[      0,   346,   346,   346,   364,   373,   377,   381,   387,   393,
15219     397,   406,   418,   441,   460,   469,   473,   477,   483,   489,
15220     494,   493,   504,   503,   514,   524,   534,   538,   547,   558,
15221     569,   580,   591,   611,   626,   630,   643,   660,   689,   699,
15222     705,   715,   725,   740,   757,   774,   791,   808,   828,   864,
15223     886,   924,   936,   942,   965,   971,   975,   986,   997,  1008,
15224    1020,  1019,  1050,  1049,  1079,  1085,  1103,  1115,  1114,  1135,
15225    1143,  1143,  1161,  1165,  1171,  1175,  1191,  1190,  1210,  1216,
15226    1229,  1251,  1264,  1286,  1299,  1321,  1333,  1345,  1357,  1369,
15227    1383,  1393,  1405,  1415,  1437,  1441,  1447,  1454,  1466,  1473,
15228    1485,  1498,  1509,  1522,  1535,  1539,  1551,  1555,  1563,  1567,
15229    1575,  1581,  1587,  1598,  1613,  1623,  1638,  1650,  1661,  1671,
15230    1677,  1683,  1694,  1704,  1714,  1724,  1736,  1747,  1757,  1761,
15231    1767,  1773,  1779,  1791,  1795,  1799,  1803,  1808,  1814,  1820,
15232    1826,  1831,  1830,  1843,  1844,  1845,  1846,  1847,  1848,  1849,
15233    1850,  1851,  1852,  1853,  1854,  1855,  1856,  1857,  1858,  1859,
15234    1860,  1861,  1862,  1863,  1864,  1865,  1866,  1867,  1868,  1869,
15235    1870,  1871,  1872,  1875,  1876,  1877,  1878,  1879,  1880,  1881,
15236    1882,  1883,  1884,  1885,  1886,  1887,  1888,  1889,  1890,  1891,
15237    1892,  1893,  1894,  1895,  1896,  1897,  1898,  1899,  1900,  1901,
15238    1902,  1903,  1904,  1905,  1906,  1907,  1908,  1909,  1910,  1911,
15239    1912,  1913,  1914,  1915,  1918,  1928,  1938,  1953,  1970,  1987,
15240    2004,  2021,  2037,  2047,  2063,  2079,  2092,  2105,  2118,  2131,
15241    2137,  2143,  2149,  2155,  2161,  2167,  2180,  2189,  2198,  2204,
15242    2210,  2216,  2222,  2226,  2232,  2238,  2244,  2250,  2260,  2271,
15243    2280,  2286,  2292,  2303,  2315,  2314,  2332,  2347,  2367,  2403,
15244    2425,  2463,  2469,  2473,  2477,  2481,  2487,  2497,  2514,  2522,
15245    2526,  2530,  2542,  2558,  2564,  2589,  2599,  2620,  2636,  2646,
15246    2659,  2663,  2667,  2671,  2678,  2694,  2700,  2707,  2718,  2730,
15247    2736,  2736,  2764,  2773,  2788,  2792,  2798,  2802,  2815,  2821,
15248    2830,  2836,  2842,  2848,  2856,  2871,  2875,  2879,  2883,  2887,
15249    2891,  2895,  2899,  2903,  2907,  2911,  2925,  2924,  2938,  2938,
15250    2948,  2948,  2958,  2968,  2978,  2984,  2994,  3004,  3016,  3028,
15251    3040,  3053,  3052,  3070,  3081,  3092,  3114,  3118,  3131,  3135,
15252    3154,  3173,  3189,  3206,  3205,  3229,  3228,  3251,  3269,  3287,
15253    3286,  3317,  3316,  3343,  3342,  3368,  3387,  3408,  3420,  3432,
15254    3444,  3458,  3466,  3472,  3479,  3485,  3491,  3497,  3503,  3509,
15255    3522,  3535,  3542,  3548,  3554,  3560,  3566,  3572,  3578,  3585,
15256    3591,  3600,  3604,  3608,  3614,  3618,  3624,  3629,  3656,  3660,
15257    3668,  3672,  3678,  3684,  3696,  3700,  3708,  3712,  3718,  3730,
15258    3734,  3747,  3753,  3761,  3765,  3771,  3771,  3781,  3793,  3800,
15259    3807,  3814,  3819,  3824,  3830,  3844,  3860,  3872,  3886,  3898,
15260    3902,  3916,  3934,  3946,  3960,  3967,  3979,  3986,  3998,  4004,
15261    4010,  4017,  4031,  4051,  4055,  4061,  4065,  4073,  4081,  4088,
15262    4094,  4099,  4087,  4132,  4148,  4162,  4161,  4178,  4177,  4196,
15263    4195,  4215,  4228,  4242,  4265,  4289,  4304,  4319,  4334,  4347,
15264    4362,  4377,  4391,  4403,  4417,  4416,  4436,  4435,  4456,  4456,
15265    4481,  4481,  4505,  4509,  4522,  4528,  4537,  4552,  4556,  4564,
15266    4574,  4563,  4602,  4606,  4613,  4617,  4622,  4629,  4633,  4644,
15267    4656,  4662,  4668,  4676,  4682,  4692,  4698,  4708,  4714,  4721,
15268    4728,  4732,  4736,  4750,  4763,  4776,  4795,  4809,  4822,  4835,
15269    4854,  4866,  4876,  4888,  4887,  4905,  4916,  4915,  4933,  4942,
15270    4946,  4958,  4971,  4988,  4999,  5008,  5022,  5026,  5037,  5050,
15271    5056,  5064,  5068,  5076,  5082,  5089,  5093,  5097,  5103,  5107,
15272    5115,  5124,  5134,  5140,  5148,  5161,  5176,  5187,  5191,  5207,
15273    5211,  5227,  5243,  5256,  5269,  5273,  5277,  5281,  5294,  5309,
15274    5313,  5317,  5321,  5325,  5329,  5333,  5337,  5341,  5347,  5353,
15275    5363,  5380,  5392,  5408,  5414,  5424,  5430,  5458,  5464,  5468,
15276    5472,  5478,  5484,  5490,  5496,  5502,  5506,  5512,  5524,  5534,
15277    5538,  5546,  5560,  5574,  5589,  5602,  5606,  5616,  5620,  5628,
15278    5641,  5644,  5654,  5666,  5679,  5682,  5693,  5696,  5707,  5710,
15279    5719,  5722,  5731,  5734,  5742,  5749,  5748,  5759,  5764,  5767,
15280    5771,  5775,  5758,  5799,  5803,  5808,  5812,  5818,  5819,  5822,
15281    5831,  5832,  5833,  5834,  5837,  5846,  5850,  5861,  5867,  5873,
15282    5879,  5887,  5893,  5899,  5907,  5913,  5919,  5925,  5931,  5939,
15283    5945,  5951,  5957,  5963,  5969,  5975,  5983,  5989,  5997,  6003,
15284    6011,  6017,  6026,  6025,  6040,  6045,  6049,  6056,  6068,  6072,
15285    6072,  6090,  6102,  6109,  6116,  6124,  6136,  6141,  6146,  6160,
15286    6176,  6188,  6202,  6214,  6228,  6235,  6247,  6261,  6268,  6280,
15287    6287,  6299,  6304,  6309,  6315,  6319,  6323,  6327,  6333,  6337,
15288    6347,  6356,  6363,  6375,  6379,  6388,  6405,  6413,  6423,  6430,
15289    6439,  6443,  6452,  6456,  6464,  6468,  6474,  6490,  6502,  6514,
15290    6528,  6542,  6546,  6554,  6558,  6566,  6570,  6576,  6589,  6601,
15291    6605,  6611,  6622,  6634,  6638,  6644,  6650,  6650,  6682,  6686,
15292    6692,  6696,  6704,  6714,  6723,  6729,  6740,  6748,  6752,  6756,
15293    6762,  6766,  6772,  6776,  6780,  6786,  6790,  6796,  6800,  6806,
15294    6810,  6817,  6820,  6827,  6830,  6836,  6842,  6848,  6855,  6858,
15295    6862,  6868,  6872,  6878,  6882,  6889 ];
15296
15297
15298  // Report on the debug stream that the rule yyrule is going to be reduced.
15299  fn yy_reduce_print(&self, yyrule: i32, yystack: &YYStack) {
15300        if !( self.is_debug() ) {
15301            return;
15302        }
15303
15304        let yylno = Self::yyrline_[i32_to_usize(yyrule)];
15305        let yynrhs = Self::yyr2_[i32_to_usize(yyrule)];
15306        // Print the symbols being reduced, and their result.
15307        self.yycdebug(&format!("Reducing stack by rule {} (line {}):", /* " fix */ yyrule - 1, yylno));
15308
15309        // The symbols being reduced.
15310        for yyi in 0..yynrhs {
15311            let state: usize = i32_to_usize(yystack.state_at(i32_to_usize(yynrhs - (yyi + 1))));
15312            self.yy_symbol_print(
15313                &format!("   ${} =", yyi + 1),
15314                SymbolKind::get(Self::yystos_[state]),
15315                yystack.borrow_value_at(i32_to_usize(yynrhs - (yyi + 1))),
15316                yystack.location_at(i32_to_usize(yynrhs - (yyi + 1)))
15317            );
15318        }
15319  }
15320
15321  /* YYTRANSLATE_(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
15322     as returned by yylex, with out-of-bounds checking.  */
15323  fn yytranslate_(t: i32) -> &'static SymbolKind
15324  {
15325        // Last valid token kind.
15326        let code_max: i32 = 407;
15327        if t <= 0 {
15328            SymbolKind::get(0)
15329        } else if t <= code_max {
15330            let t = i32_to_usize(t);
15331            SymbolKind::get(Self::yytranslate_table_[t])
15332        } else {
15333            SymbolKind::get(2)
15334        }
15335  }
15336  #[allow(non_upper_case_globals)]
15337const yytranslate_table_: &'static [i32] = &[      0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15338       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15339       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15340       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15341       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15342       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15343       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15344       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15345       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15346       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15347       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15348       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15349       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15350       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15351       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15352       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15353       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15354       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15355       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15356       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15357       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15358       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15359       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15360       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15361       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
15362       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
15363       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
15364      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
15365      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
15366      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
15367      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
15368      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
15369      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
15370      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
15371      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
15372      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
15373     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
15374     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
15375     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
15376     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
15377     145,   146,   147,   148,   149,   150,   151,   152 ];
15378
15379
15380const YYLAST_: i32 = 14606;
15381const YYEMPTY_: i32 = -2;
15382const YYFINAL_: i32 = 3;
15383const YYNTOKENS_: i32 = 153;
15384
15385
15386}
15387
15388/* Unqualified %code blocks.  */
15389/* "src/parser/parse.y":73  */
15390
15391    // pre-code
15392
15393/* "src/parser/parse.rs":15394  */
15394
15395
15396/* "src/parser/parse.y":6894  */
15397
15398
15399impl Parser {
15400    /// Constructs a parser with given `input` and `options`.
15401    ///
15402    /// Returns an error if given `input` is invalid.
15403    pub fn new<TInput>(input: TInput, options: ParserOptions) -> Self
15404    where
15405        TInput: Into<Vec<u8>>
15406    {
15407        let ParserOptions {
15408            buffer_name,
15409            decoder,
15410            record_tokens,
15411        } = options;
15412
15413        let context = ParserContext::new();
15414        let current_arg_stack = CurrentArgStack::new();
15415        let max_numparam_stack = MaxNumparamStack::new();
15416        let pattern_variables = VariablesStack::new();
15417        let pattern_hash_keys = VariablesStack::new();
15418        let static_env = StaticEnvironment::new();
15419        let diagnostics = Diagnostics::new();
15420        let tokens_pool = Pool::new();
15421
15422        let input: Vec<u8> = input.into();
15423        let buffer_name: String = buffer_name;
15424
15425        let mut lexer = Lexer::new(input, buffer_name, decoder);
15426        lexer.context = context.clone();
15427        lexer.static_env = static_env.clone();
15428        lexer.diagnostics = diagnostics.clone();
15429        lexer.tokens_factory = tokens_pool.factory();
15430
15431        let builder = Builder::new(
15432            static_env.clone(),
15433            context.clone(),
15434            current_arg_stack.clone(),
15435            max_numparam_stack.clone(),
15436            pattern_variables.clone(),
15437            pattern_hash_keys.clone(),
15438            diagnostics.clone(),
15439            tokens_pool.factory(),
15440        );
15441
15442        let last_token_type = 0;
15443
15444        Self {
15445            yy_error_verbose: true,
15446            yynerrs: 0,
15447            yyerrstatus_: 0,
15448            result: None,
15449
15450            builder,
15451            context,
15452            current_arg_stack,
15453            max_numparam_stack,
15454            pattern_variables,
15455            pattern_hash_keys,
15456            static_env,
15457            last_token_type,
15458            tokens: vec![],
15459            diagnostics,
15460            yylexer: lexer,
15461            record_tokens,
15462            tokens_pool,
15463        }
15464    }
15465
15466    /// Parses given input and returns:
15467    ///
15468    /// 1. AST
15469    /// 2. tokens
15470    /// 3. diagnostics
15471    /// 4. comments
15472    /// 5. magic comments
15473    pub fn do_parse(mut self) -> ParserResult  {
15474        self.parse();
15475
15476        ParserResult {
15477            ast: self.result,
15478            tokens: self.tokens,
15479            diagnostics: self.diagnostics.take_inner(),
15480            comments: self.yylexer.comments,
15481            magic_comments: self.yylexer.magic_comments,
15482            input: self.yylexer.buffer.input.decoded,
15483        }
15484    }
15485
15486    #[doc(hidden)]
15487    pub fn do_parse_with_state_validation(mut self) -> ParserResult {
15488        self.parse();
15489
15490        self.assert_state_is_final();
15491
15492        ParserResult {
15493            ast: self.result,
15494            tokens: self.tokens,
15495            diagnostics: self.diagnostics.take_inner(),
15496            comments: self.yylexer.comments,
15497            magic_comments: self.yylexer.magic_comments,
15498            input: self.yylexer.buffer.input.decoded,
15499        }
15500    }
15501
15502    fn warn(&mut self, loc: &Loc, message: DiagnosticMessage) {
15503        let diagnostic = Diagnostic {
15504            level: ErrorLevel::Warning,
15505            message,
15506            loc: *loc,
15507        };
15508        self.diagnostics.emit(diagnostic);
15509    }
15510
15511    fn yylex(&mut self) -> PoolValue<Token> {
15512        self.yylexer.yylex()
15513    }
15514
15515    fn next_token(&mut self) -> PoolValue<Token> {
15516        let token = self.yylex();
15517
15518        self.last_token_type = token.token_type;
15519
15520        if self.record_tokens {
15521            let mut token = token.clone();
15522            self.tokens.push(token.take_value());
15523        }
15524
15525        token
15526    }
15527
15528    fn check_kwarg_name(&self, ident_t: &Token) -> Result<(), ()> {
15529        let name = clone_value(ident_t);
15530        let first_char = name.as_str().chars().next().expect("kwarg name can't be empty");
15531        if first_char.is_lowercase() || first_char == '_' {
15532            Ok(())
15533        } else {
15534            let loc = ident_t.loc;
15535            self.diagnostics.emit(
15536                Diagnostic {
15537                    level: ErrorLevel::Error,
15538                    message: DiagnosticMessage::ConstArgument {},
15539                    loc
15540                }
15541            );
15542            Err(())
15543        }
15544    }
15545
15546    fn validate_endless_method_name(&mut self, name_t: &Token) -> Result<(), ()> {
15547        let name = clone_value(name_t);
15548        match &name[..] {
15549            "==" | "===" | ">=" | "<=" | "!=" => Ok(()),
15550            other if other.ends_with('=') => {
15551                self.yyerror(&name_t.loc, DiagnosticMessage::EndlessSetterDefinition {}).map(|_| ())
15552            }
15553            _ => Ok(())
15554        }
15555    }
15556
15557    fn yyerror(&mut self, loc: &Loc, message: DiagnosticMessage) -> Result<i32, ()> {
15558        self.yyerror1(
15559            message,
15560            *loc
15561        )
15562    }
15563
15564    fn yyerror1(&mut self, message: DiagnosticMessage, loc: Loc) -> Result<i32, ()> {
15565        let diagnostic = Diagnostic { level: ErrorLevel::Error, message, loc };
15566        self.diagnostics.emit(diagnostic);
15567        Err(())
15568    }
15569
15570    fn report_syntax_error(&mut self, _stack: &YYStack, yytoken: &SymbolKind, loc: YYLoc) {
15571        let id: usize = yytoken.code().try_into().expect("failed to convert token code into i32, is it too big?");
15572        let diagnostic = Diagnostic {
15573            level: ErrorLevel::Error,
15574            message: DiagnosticMessage::UnexpectedToken {
15575                token_name: Lexer::TOKEN_NAMES[id].to_string()
15576            },
15577            loc,
15578        };
15579        self.diagnostics.emit(diagnostic);
15580    }
15581
15582    fn warn_eol(&mut self, loc: &Loc, tok: &str) {
15583        if self.yylexer.buffer.is_looking_at_eol() {
15584            self.warn(loc, DiagnosticMessage::TokAtEolWithoutExpression { token_name: tok.to_string() });
15585        }
15586    }
15587
15588    fn value_expr(&self, node: &Node) -> Result<(), ()> {
15589        self.builder.value_expr(node)
15590    }
15591
15592    #[doc(hidden)]
15593    fn assert_state_is_final(&self) {
15594        assert!(self.yylexer.cmdarg.is_empty());
15595        assert!(self.yylexer.cond.is_empty());
15596        assert!(self.yylexer.paren_nest == 0);
15597
15598        assert!(self.static_env.is_empty());
15599        assert!(self.context.is_empty());
15600        assert!(self.max_numparam_stack.is_empty());
15601        assert!(self.current_arg_stack.is_empty());
15602        assert!(self.pattern_variables.is_empty());
15603        assert!(self.pattern_hash_keys.is_empty());
15604    }
15605
15606    #[inline]
15607    fn is_debug(&self) -> bool {
15608        cfg!(feature = "debug-parser")
15609    }
15610
15611    fn local_push(&mut self) {
15612        self.static_env.extend_static();
15613        self.yylexer.cmdarg.push(false);
15614        self.yylexer.cond.push(false);
15615        self.max_numparam_stack.push(true);
15616    }
15617
15618    fn local_pop(&mut self) {
15619        self.static_env.unextend();
15620        self.yylexer.cmdarg.pop();
15621        self.yylexer.cond.pop();
15622        self.max_numparam_stack.pop();
15623    }
15624}