use std::convert::TryInto;
use crate::{ParserOptions, ParserResult};
use crate::{Token, TokenValue};
use crate::{Lexer, Builder, CurrentArgStack, StaticEnvironment, MaxNumparamStack, VariablesStack};
use crate::lex_states::*;
use crate::{Context as ParserContext, ContextItem};
use crate::builder::{LoopType, KeywordCmd, LogicalOp, PKwLabel, ArgsType};
use crate::builder::clone_value;
use crate::parse_value::ParseValue as Value;
use crate::parse_value::*;
use crate::Node;
use crate::source::Range;
use crate::{Diagnostic, DiagnosticMessage, ErrorLevel};
use crate::error::Diagnostics;
#[derive(Debug)]
pub struct Parser {
pub yylexer: Lexer,
#[allow(dead_code)]
yy_error_verbose: bool,
yynerrs: i32,
pub yydebug: bool,
yyerrstatus_: i32,
result: Option<Node>,
builder: Builder,
current_arg_stack: CurrentArgStack,
pub static_env: StaticEnvironment,
context: ParserContext,
last_token: Token,
max_numparam_stack: MaxNumparamStack,
pattern_variables: VariablesStack,
pattern_hash_keys: VariablesStack,
tokens: Vec<Token>,
diagnostics: Diagnostics,
}
#[inline]
fn i32_to_usize(v: i32) -> usize {
v.try_into().unwrap()
}
pub fn token_name(id: i32) -> String {
let first_token = Lexer::YYerror;
if id > first_token + 1 {
let pos: usize = (id - first_token + 1)
.try_into()
.expect("failed to cast token id into usize, is it negative?");
Lexer::TOKEN_NAMES[pos].to_owned()
} else if id == 0 {
"EOF".to_owned()
} else {
panic!("token_name fails, {} (first token = {})", id, first_token)
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct Loc {
pub begin: usize,
pub end: usize,
}
type YYLoc = Loc ;
impl YYLoc {
pub fn to_range(&self) -> std::ops::Range<usize> {
self.begin..self.end
}
}
impl Default for YYLoc {
fn default() -> Self {
Self { begin: 0, end: 0 }
}
}
impl Parser {
#[allow(dead_code)]
const BISON_VERSION: &'static str = "3.7.3";
}
fn make_yylloc(rhs: &YYStack, n: usize) -> YYLoc {
if 0 < n {
YYLoc { begin: rhs.location_at(n - 1).begin, end: rhs.location_at(0).end }
} else {
YYLoc { begin: rhs.location_at(0).end, end: rhs.location_at(0).end }
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct SymbolKind { value: i32 }
impl SymbolKind {
#[allow(non_upper_case_globals)]
const S_YYEOF: i32 = 0;
#[allow(non_upper_case_globals)]
const S_YYerror: i32 = 1;
#[allow(non_upper_case_globals)]
const S_YYUNDEF: i32 = 2;
#[allow(non_upper_case_globals)]
const S_kCLASS: i32 = 3;
#[allow(non_upper_case_globals)]
const S_kMODULE: i32 = 4;
#[allow(non_upper_case_globals)]
const S_kDEF: i32 = 5;
#[allow(non_upper_case_globals)]
const S_kUNDEF: i32 = 6;
#[allow(non_upper_case_globals)]
const S_kBEGIN: i32 = 7;
#[allow(non_upper_case_globals)]
const S_kRESCUE: i32 = 8;
#[allow(non_upper_case_globals)]
const S_kENSURE: i32 = 9;
#[allow(non_upper_case_globals)]
const S_kEND: i32 = 10;
#[allow(non_upper_case_globals)]
const S_kIF: i32 = 11;
#[allow(non_upper_case_globals)]
const S_kUNLESS: i32 = 12;
#[allow(non_upper_case_globals)]
const S_kTHEN: i32 = 13;
#[allow(non_upper_case_globals)]
const S_kELSIF: i32 = 14;
#[allow(non_upper_case_globals)]
const S_kELSE: i32 = 15;
#[allow(non_upper_case_globals)]
const S_kCASE: i32 = 16;
#[allow(non_upper_case_globals)]
const S_kWHEN: i32 = 17;
#[allow(non_upper_case_globals)]
const S_kWHILE: i32 = 18;
#[allow(non_upper_case_globals)]
const S_kUNTIL: i32 = 19;
#[allow(non_upper_case_globals)]
const S_kFOR: i32 = 20;
#[allow(non_upper_case_globals)]
const S_kBREAK: i32 = 21;
#[allow(non_upper_case_globals)]
const S_kNEXT: i32 = 22;
#[allow(non_upper_case_globals)]
const S_kREDO: i32 = 23;
#[allow(non_upper_case_globals)]
const S_kRETRY: i32 = 24;
#[allow(non_upper_case_globals)]
const S_kIN: i32 = 25;
#[allow(non_upper_case_globals)]
const S_kDO: i32 = 26;
#[allow(non_upper_case_globals)]
const S_kDO_COND: i32 = 27;
#[allow(non_upper_case_globals)]
const S_kDO_BLOCK: i32 = 28;
#[allow(non_upper_case_globals)]
const S_kDO_LAMBDA: i32 = 29;
#[allow(non_upper_case_globals)]
const S_kRETURN: i32 = 30;
#[allow(non_upper_case_globals)]
const S_kYIELD: i32 = 31;
#[allow(non_upper_case_globals)]
const S_kSUPER: i32 = 32;
#[allow(non_upper_case_globals)]
const S_kSELF: i32 = 33;
#[allow(non_upper_case_globals)]
const S_kNIL: i32 = 34;
#[allow(non_upper_case_globals)]
const S_kTRUE: i32 = 35;
#[allow(non_upper_case_globals)]
const S_kFALSE: i32 = 36;
#[allow(non_upper_case_globals)]
const S_kAND: i32 = 37;
#[allow(non_upper_case_globals)]
const S_kOR: i32 = 38;
#[allow(non_upper_case_globals)]
const S_kNOT: i32 = 39;
#[allow(non_upper_case_globals)]
const S_kIF_MOD: i32 = 40;
#[allow(non_upper_case_globals)]
const S_kUNLESS_MOD: i32 = 41;
#[allow(non_upper_case_globals)]
const S_kWHILE_MOD: i32 = 42;
#[allow(non_upper_case_globals)]
const S_kUNTIL_MOD: i32 = 43;
#[allow(non_upper_case_globals)]
const S_kRESCUE_MOD: i32 = 44;
#[allow(non_upper_case_globals)]
const S_kALIAS: i32 = 45;
#[allow(non_upper_case_globals)]
const S_kDEFINED: i32 = 46;
#[allow(non_upper_case_globals)]
const S_klBEGIN: i32 = 47;
#[allow(non_upper_case_globals)]
const S_klEND: i32 = 48;
#[allow(non_upper_case_globals)]
const S_k__LINE__: i32 = 49;
#[allow(non_upper_case_globals)]
const S_k__FILE__: i32 = 50;
#[allow(non_upper_case_globals)]
const S_k__ENCODING__: i32 = 51;
#[allow(non_upper_case_globals)]
const S_tIDENTIFIER: i32 = 52;
#[allow(non_upper_case_globals)]
const S_tFID: i32 = 53;
#[allow(non_upper_case_globals)]
const S_tGVAR: i32 = 54;
#[allow(non_upper_case_globals)]
const S_tIVAR: i32 = 55;
#[allow(non_upper_case_globals)]
const S_tCONSTANT: i32 = 56;
#[allow(non_upper_case_globals)]
const S_tCVAR: i32 = 57;
#[allow(non_upper_case_globals)]
const S_tLABEL: i32 = 58;
#[allow(non_upper_case_globals)]
const S_tINTEGER: i32 = 59;
#[allow(non_upper_case_globals)]
const S_tFLOAT: i32 = 60;
#[allow(non_upper_case_globals)]
const S_tRATIONAL: i32 = 61;
#[allow(non_upper_case_globals)]
const S_tIMAGINARY: i32 = 62;
#[allow(non_upper_case_globals)]
const S_tCHAR: i32 = 63;
#[allow(non_upper_case_globals)]
const S_tNTH_REF: i32 = 64;
#[allow(non_upper_case_globals)]
const S_tBACK_REF: i32 = 65;
#[allow(non_upper_case_globals)]
const S_tSTRING_CONTENT: i32 = 66;
#[allow(non_upper_case_globals)]
const S_tREGEXP_END: i32 = 67;
#[allow(non_upper_case_globals)]
const S_tDOT: i32 = 68;
#[allow(non_upper_case_globals)]
const S_tBACKSLASH: i32 = 69;
#[allow(non_upper_case_globals)]
const S_tSP: i32 = 70;
#[allow(non_upper_case_globals)]
const S_tSLASH_T: i32 = 71;
#[allow(non_upper_case_globals)]
const S_tSLASH_F: i32 = 72;
#[allow(non_upper_case_globals)]
const S_tSLASH_R: i32 = 73;
#[allow(non_upper_case_globals)]
const S_tVTAB: i32 = 74;
#[allow(non_upper_case_globals)]
const S_tUPLUS: i32 = 75;
#[allow(non_upper_case_globals)]
const S_tUMINUS: i32 = 76;
#[allow(non_upper_case_globals)]
const S_tPOW: i32 = 77;
#[allow(non_upper_case_globals)]
const S_tCMP: i32 = 78;
#[allow(non_upper_case_globals)]
const S_tEQ: i32 = 79;
#[allow(non_upper_case_globals)]
const S_tEQQ: i32 = 80;
#[allow(non_upper_case_globals)]
const S_tNEQ: i32 = 81;
#[allow(non_upper_case_globals)]
const S_tGEQ: i32 = 82;
#[allow(non_upper_case_globals)]
const S_tLEQ: i32 = 83;
#[allow(non_upper_case_globals)]
const S_tANDOP: i32 = 84;
#[allow(non_upper_case_globals)]
const S_tOROP: i32 = 85;
#[allow(non_upper_case_globals)]
const S_tMATCH: i32 = 86;
#[allow(non_upper_case_globals)]
const S_tNMATCH: i32 = 87;
#[allow(non_upper_case_globals)]
const S_tDOT2: i32 = 88;
#[allow(non_upper_case_globals)]
const S_tDOT3: i32 = 89;
#[allow(non_upper_case_globals)]
const S_tBDOT2: i32 = 90;
#[allow(non_upper_case_globals)]
const S_tBDOT3: i32 = 91;
#[allow(non_upper_case_globals)]
const S_tAREF: i32 = 92;
#[allow(non_upper_case_globals)]
const S_tASET: i32 = 93;
#[allow(non_upper_case_globals)]
const S_tLSHFT: i32 = 94;
#[allow(non_upper_case_globals)]
const S_tRSHFT: i32 = 95;
#[allow(non_upper_case_globals)]
const S_tANDDOT: i32 = 96;
#[allow(non_upper_case_globals)]
const S_tCOLON2: i32 = 97;
#[allow(non_upper_case_globals)]
const S_tCOLON3: i32 = 98;
#[allow(non_upper_case_globals)]
const S_tOP_ASGN: i32 = 99;
#[allow(non_upper_case_globals)]
const S_tASSOC: i32 = 100;
#[allow(non_upper_case_globals)]
const S_tLPAREN: i32 = 101;
#[allow(non_upper_case_globals)]
const S_tLPAREN_ARG: i32 = 102;
#[allow(non_upper_case_globals)]
const S_tRPAREN: i32 = 103;
#[allow(non_upper_case_globals)]
const S_tLBRACK: i32 = 104;
#[allow(non_upper_case_globals)]
const S_tLBRACE: i32 = 105;
#[allow(non_upper_case_globals)]
const S_tLBRACE_ARG: i32 = 106;
#[allow(non_upper_case_globals)]
const S_tSTAR: i32 = 107;
#[allow(non_upper_case_globals)]
const S_tDSTAR: i32 = 108;
#[allow(non_upper_case_globals)]
const S_tAMPER: i32 = 109;
#[allow(non_upper_case_globals)]
const S_tLAMBDA: i32 = 110;
#[allow(non_upper_case_globals)]
const S_tSYMBEG: i32 = 111;
#[allow(non_upper_case_globals)]
const S_tSTRING_BEG: i32 = 112;
#[allow(non_upper_case_globals)]
const S_tXSTRING_BEG: i32 = 113;
#[allow(non_upper_case_globals)]
const S_tREGEXP_BEG: i32 = 114;
#[allow(non_upper_case_globals)]
const S_tWORDS_BEG: i32 = 115;
#[allow(non_upper_case_globals)]
const S_tQWORDS_BEG: i32 = 116;
#[allow(non_upper_case_globals)]
const S_tSYMBOLS_BEG: i32 = 117;
#[allow(non_upper_case_globals)]
const S_tQSYMBOLS_BEG: i32 = 118;
#[allow(non_upper_case_globals)]
const S_tSTRING_END: i32 = 119;
#[allow(non_upper_case_globals)]
const S_tSTRING_DEND: i32 = 120;
#[allow(non_upper_case_globals)]
const S_tSTRING_DBEG: i32 = 121;
#[allow(non_upper_case_globals)]
const S_tSTRING_DVAR: i32 = 122;
#[allow(non_upper_case_globals)]
const S_tLAMBEG: i32 = 123;
#[allow(non_upper_case_globals)]
const S_tLABEL_END: i32 = 124;
#[allow(non_upper_case_globals)]
const S_tCOMMA: i32 = 125;
#[allow(non_upper_case_globals)]
const S_tLCURLY: i32 = 126;
#[allow(non_upper_case_globals)]
const S_tRCURLY: i32 = 127;
#[allow(non_upper_case_globals)]
const S_tLBRACK2: i32 = 128;
#[allow(non_upper_case_globals)]
const S_tEQL: i32 = 129;
#[allow(non_upper_case_globals)]
const S_tPIPE: i32 = 130;
#[allow(non_upper_case_globals)]
const S_tAMPER2: i32 = 131;
#[allow(non_upper_case_globals)]
const S_tGT: i32 = 132;
#[allow(non_upper_case_globals)]
const S_tLT: i32 = 133;
#[allow(non_upper_case_globals)]
const S_tBACK_REF2: i32 = 134;
#[allow(non_upper_case_globals)]
const S_tCARET: i32 = 135;
#[allow(non_upper_case_globals)]
const S_tLPAREN2: i32 = 136;
#[allow(non_upper_case_globals)]
const S_tRBRACK: i32 = 137;
#[allow(non_upper_case_globals)]
const S_tSEMI: i32 = 138;
#[allow(non_upper_case_globals)]
const S_tSPACE: i32 = 139;
#[allow(non_upper_case_globals)]
const S_tNL: i32 = 140;
#[allow(non_upper_case_globals)]
const S_tPLUS: i32 = 141;
#[allow(non_upper_case_globals)]
const S_tMINUS: i32 = 142;
#[allow(non_upper_case_globals)]
const S_tSTAR2: i32 = 143;
#[allow(non_upper_case_globals)]
const S_tDIVIDE: i32 = 144;
#[allow(non_upper_case_globals)]
const S_tPERCENT: i32 = 145;
#[allow(non_upper_case_globals)]
const S_tTILDE: i32 = 146;
#[allow(non_upper_case_globals)]
const S_tBANG: i32 = 147;
#[allow(non_upper_case_globals)]
const S_tLOWEST: i32 = 148;
#[allow(non_upper_case_globals)]
const S_tEH: i32 = 149;
#[allow(non_upper_case_globals)]
const S_tCOLON: i32 = 150;
#[allow(non_upper_case_globals)]
const S_tUMINUS_NUM: i32 = 151;
#[allow(non_upper_case_globals)]
const S_tLAST_TOKEN: i32 = 152;
#[allow(non_upper_case_globals)]
const S_YYACCEPT: i32 = 153;
#[allow(non_upper_case_globals)]
const S_program: i32 = 154;
#[allow(non_upper_case_globals)]
const S_155_1: i32 = 155;
#[allow(non_upper_case_globals)]
const S_top_compstmt: i32 = 156;
#[allow(non_upper_case_globals)]
const S_top_stmts: i32 = 157;
#[allow(non_upper_case_globals)]
const S_top_stmt: i32 = 158;
#[allow(non_upper_case_globals)]
const S_begin_block: i32 = 159;
#[allow(non_upper_case_globals)]
const S_bodystmt: i32 = 160;
#[allow(non_upper_case_globals)]
const S_compstmt: i32 = 161;
#[allow(non_upper_case_globals)]
const S_stmts: i32 = 162;
#[allow(non_upper_case_globals)]
const S_stmt_or_begin: i32 = 163;
#[allow(non_upper_case_globals)]
const S_164_2: i32 = 164;
#[allow(non_upper_case_globals)]
const S_stmt: i32 = 165;
#[allow(non_upper_case_globals)]
const S_166_3: i32 = 166;
#[allow(non_upper_case_globals)]
const S_command_asgn: i32 = 167;
#[allow(non_upper_case_globals)]
const S_command_rhs: i32 = 168;
#[allow(non_upper_case_globals)]
const S_expr: i32 = 169;
#[allow(non_upper_case_globals)]
const S_170_4: i32 = 170;
#[allow(non_upper_case_globals)]
const S_def_name: i32 = 171;
#[allow(non_upper_case_globals)]
const S_defn_head: i32 = 172;
#[allow(non_upper_case_globals)]
const S_defs_head: i32 = 173;
#[allow(non_upper_case_globals)]
const S_174_5: i32 = 174;
#[allow(non_upper_case_globals)]
const S_expr_value: i32 = 175;
#[allow(non_upper_case_globals)]
const S_expr_value_do: i32 = 176;
#[allow(non_upper_case_globals)]
const S_177_6: i32 = 177;
#[allow(non_upper_case_globals)]
const S_command_call: i32 = 178;
#[allow(non_upper_case_globals)]
const S_block_command: i32 = 179;
#[allow(non_upper_case_globals)]
const S_cmd_brace_block: i32 = 180;
#[allow(non_upper_case_globals)]
const S_181_7: i32 = 181;
#[allow(non_upper_case_globals)]
const S_fcall: i32 = 182;
#[allow(non_upper_case_globals)]
const S_command: i32 = 183;
#[allow(non_upper_case_globals)]
const S_mlhs: i32 = 184;
#[allow(non_upper_case_globals)]
const S_mlhs_inner: i32 = 185;
#[allow(non_upper_case_globals)]
const S_mlhs_basic: i32 = 186;
#[allow(non_upper_case_globals)]
const S_mlhs_item: i32 = 187;
#[allow(non_upper_case_globals)]
const S_mlhs_head: i32 = 188;
#[allow(non_upper_case_globals)]
const S_mlhs_post: i32 = 189;
#[allow(non_upper_case_globals)]
const S_mlhs_node: i32 = 190;
#[allow(non_upper_case_globals)]
const S_lhs: i32 = 191;
#[allow(non_upper_case_globals)]
const S_cname: i32 = 192;
#[allow(non_upper_case_globals)]
const S_cpath: i32 = 193;
#[allow(non_upper_case_globals)]
const S_fname: i32 = 194;
#[allow(non_upper_case_globals)]
const S_fitem: i32 = 195;
#[allow(non_upper_case_globals)]
const S_undef_list: i32 = 196;
#[allow(non_upper_case_globals)]
const S_197_8: i32 = 197;
#[allow(non_upper_case_globals)]
const S_op: i32 = 198;
#[allow(non_upper_case_globals)]
const S_reswords: i32 = 199;
#[allow(non_upper_case_globals)]
const S_arg: i32 = 200;
#[allow(non_upper_case_globals)]
const S_relop: i32 = 201;
#[allow(non_upper_case_globals)]
const S_rel_expr: i32 = 202;
#[allow(non_upper_case_globals)]
const S_arg_value: i32 = 203;
#[allow(non_upper_case_globals)]
const S_aref_args: i32 = 204;
#[allow(non_upper_case_globals)]
const S_arg_rhs: i32 = 205;
#[allow(non_upper_case_globals)]
const S_paren_args: i32 = 206;
#[allow(non_upper_case_globals)]
const S_opt_paren_args: i32 = 207;
#[allow(non_upper_case_globals)]
const S_opt_call_args: i32 = 208;
#[allow(non_upper_case_globals)]
const S_call_args: i32 = 209;
#[allow(non_upper_case_globals)]
const S_command_args: i32 = 210;
#[allow(non_upper_case_globals)]
const S_211_9: i32 = 211;
#[allow(non_upper_case_globals)]
const S_block_arg: i32 = 212;
#[allow(non_upper_case_globals)]
const S_opt_block_arg: i32 = 213;
#[allow(non_upper_case_globals)]
const S_args: i32 = 214;
#[allow(non_upper_case_globals)]
const S_mrhs_arg: i32 = 215;
#[allow(non_upper_case_globals)]
const S_mrhs: i32 = 216;
#[allow(non_upper_case_globals)]
const S_primary: i32 = 217;
#[allow(non_upper_case_globals)]
const S_218_10: i32 = 218;
#[allow(non_upper_case_globals)]
const S_219_11: i32 = 219;
#[allow(non_upper_case_globals)]
const S_220_12: i32 = 220;
#[allow(non_upper_case_globals)]
const S_221_13: i32 = 221;
#[allow(non_upper_case_globals)]
const S_222_14: i32 = 222;
#[allow(non_upper_case_globals)]
const S_223_15: i32 = 223;
#[allow(non_upper_case_globals)]
const S_224_16: i32 = 224;
#[allow(non_upper_case_globals)]
const S_225_17: i32 = 225;
#[allow(non_upper_case_globals)]
const S_primary_value: i32 = 226;
#[allow(non_upper_case_globals)]
const S_k_begin: i32 = 227;
#[allow(non_upper_case_globals)]
const S_k_if: i32 = 228;
#[allow(non_upper_case_globals)]
const S_k_unless: i32 = 229;
#[allow(non_upper_case_globals)]
const S_k_while: i32 = 230;
#[allow(non_upper_case_globals)]
const S_k_until: i32 = 231;
#[allow(non_upper_case_globals)]
const S_k_case: i32 = 232;
#[allow(non_upper_case_globals)]
const S_k_for: i32 = 233;
#[allow(non_upper_case_globals)]
const S_k_class: i32 = 234;
#[allow(non_upper_case_globals)]
const S_k_module: i32 = 235;
#[allow(non_upper_case_globals)]
const S_k_def: i32 = 236;
#[allow(non_upper_case_globals)]
const S_k_do: i32 = 237;
#[allow(non_upper_case_globals)]
const S_k_do_block: i32 = 238;
#[allow(non_upper_case_globals)]
const S_k_rescue: i32 = 239;
#[allow(non_upper_case_globals)]
const S_k_ensure: i32 = 240;
#[allow(non_upper_case_globals)]
const S_k_when: i32 = 241;
#[allow(non_upper_case_globals)]
const S_k_else: i32 = 242;
#[allow(non_upper_case_globals)]
const S_k_elsif: i32 = 243;
#[allow(non_upper_case_globals)]
const S_k_end: i32 = 244;
#[allow(non_upper_case_globals)]
const S_k_return: i32 = 245;
#[allow(non_upper_case_globals)]
const S_then: i32 = 246;
#[allow(non_upper_case_globals)]
const S_do: i32 = 247;
#[allow(non_upper_case_globals)]
const S_if_tail: i32 = 248;
#[allow(non_upper_case_globals)]
const S_opt_else: i32 = 249;
#[allow(non_upper_case_globals)]
const S_for_var: i32 = 250;
#[allow(non_upper_case_globals)]
const S_f_marg: i32 = 251;
#[allow(non_upper_case_globals)]
const S_f_marg_list: i32 = 252;
#[allow(non_upper_case_globals)]
const S_f_margs: i32 = 253;
#[allow(non_upper_case_globals)]
const S_f_rest_marg: i32 = 254;
#[allow(non_upper_case_globals)]
const S_f_any_kwrest: i32 = 255;
#[allow(non_upper_case_globals)]
const S_block_args_tail: i32 = 256;
#[allow(non_upper_case_globals)]
const S_opt_block_args_tail: i32 = 257;
#[allow(non_upper_case_globals)]
const S_excessed_comma: i32 = 258;
#[allow(non_upper_case_globals)]
const S_block_param: i32 = 259;
#[allow(non_upper_case_globals)]
const S_opt_block_param: i32 = 260;
#[allow(non_upper_case_globals)]
const S_block_param_def: i32 = 261;
#[allow(non_upper_case_globals)]
const S_opt_bv_decl: i32 = 262;
#[allow(non_upper_case_globals)]
const S_bv_decls: i32 = 263;
#[allow(non_upper_case_globals)]
const S_bvar: i32 = 264;
#[allow(non_upper_case_globals)]
const S_lambda: i32 = 265;
#[allow(non_upper_case_globals)]
const S_266_18: i32 = 266;
#[allow(non_upper_case_globals)]
const S_267_19: i32 = 267;
#[allow(non_upper_case_globals)]
const S_f_larglist: i32 = 268;
#[allow(non_upper_case_globals)]
const S_lambda_body: i32 = 269;
#[allow(non_upper_case_globals)]
const S_270_20: i32 = 270;
#[allow(non_upper_case_globals)]
const S_271_21: i32 = 271;
#[allow(non_upper_case_globals)]
const S_do_block: i32 = 272;
#[allow(non_upper_case_globals)]
const S_273_22: i32 = 273;
#[allow(non_upper_case_globals)]
const S_block_call: i32 = 274;
#[allow(non_upper_case_globals)]
const S_method_call: i32 = 275;
#[allow(non_upper_case_globals)]
const S_brace_block: i32 = 276;
#[allow(non_upper_case_globals)]
const S_277_23: i32 = 277;
#[allow(non_upper_case_globals)]
const S_278_24: i32 = 278;
#[allow(non_upper_case_globals)]
const S_brace_body: i32 = 279;
#[allow(non_upper_case_globals)]
const S_280_25: i32 = 280;
#[allow(non_upper_case_globals)]
const S_do_body: i32 = 281;
#[allow(non_upper_case_globals)]
const S_282_26: i32 = 282;
#[allow(non_upper_case_globals)]
const S_case_args: i32 = 283;
#[allow(non_upper_case_globals)]
const S_case_body: i32 = 284;
#[allow(non_upper_case_globals)]
const S_cases: i32 = 285;
#[allow(non_upper_case_globals)]
const S_p_case_body: i32 = 286;
#[allow(non_upper_case_globals)]
const S_287_27: i32 = 287;
#[allow(non_upper_case_globals)]
const S_288_28: i32 = 288;
#[allow(non_upper_case_globals)]
const S_p_cases: i32 = 289;
#[allow(non_upper_case_globals)]
const S_p_top_expr: i32 = 290;
#[allow(non_upper_case_globals)]
const S_p_top_expr_body: i32 = 291;
#[allow(non_upper_case_globals)]
const S_p_expr: i32 = 292;
#[allow(non_upper_case_globals)]
const S_p_as: i32 = 293;
#[allow(non_upper_case_globals)]
const S_p_alt: i32 = 294;
#[allow(non_upper_case_globals)]
const S_p_lparen: i32 = 295;
#[allow(non_upper_case_globals)]
const S_p_lbracket: i32 = 296;
#[allow(non_upper_case_globals)]
const S_p_expr_basic: i32 = 297;
#[allow(non_upper_case_globals)]
const S_298_29: i32 = 298;
#[allow(non_upper_case_globals)]
const S_299_30: i32 = 299;
#[allow(non_upper_case_globals)]
const S_p_args: i32 = 300;
#[allow(non_upper_case_globals)]
const S_p_args_head: i32 = 301;
#[allow(non_upper_case_globals)]
const S_p_args_tail: i32 = 302;
#[allow(non_upper_case_globals)]
const S_p_find: i32 = 303;
#[allow(non_upper_case_globals)]
const S_p_rest: i32 = 304;
#[allow(non_upper_case_globals)]
const S_p_args_post: i32 = 305;
#[allow(non_upper_case_globals)]
const S_p_arg: i32 = 306;
#[allow(non_upper_case_globals)]
const S_p_kwargs: i32 = 307;
#[allow(non_upper_case_globals)]
const S_p_kwarg: i32 = 308;
#[allow(non_upper_case_globals)]
const S_p_kw: i32 = 309;
#[allow(non_upper_case_globals)]
const S_p_kw_label: i32 = 310;
#[allow(non_upper_case_globals)]
const S_p_kwrest: i32 = 311;
#[allow(non_upper_case_globals)]
const S_p_kwnorest: i32 = 312;
#[allow(non_upper_case_globals)]
const S_p_any_kwrest: i32 = 313;
#[allow(non_upper_case_globals)]
const S_p_value: i32 = 314;
#[allow(non_upper_case_globals)]
const S_p_primitive: i32 = 315;
#[allow(non_upper_case_globals)]
const S_p_variable: i32 = 316;
#[allow(non_upper_case_globals)]
const S_p_var_ref: i32 = 317;
#[allow(non_upper_case_globals)]
const S_p_const: i32 = 318;
#[allow(non_upper_case_globals)]
const S_opt_rescue: i32 = 319;
#[allow(non_upper_case_globals)]
const S_exc_list: i32 = 320;
#[allow(non_upper_case_globals)]
const S_exc_var: i32 = 321;
#[allow(non_upper_case_globals)]
const S_opt_ensure: i32 = 322;
#[allow(non_upper_case_globals)]
const S_literal: i32 = 323;
#[allow(non_upper_case_globals)]
const S_strings: i32 = 324;
#[allow(non_upper_case_globals)]
const S_string: i32 = 325;
#[allow(non_upper_case_globals)]
const S_string1: i32 = 326;
#[allow(non_upper_case_globals)]
const S_xstring: i32 = 327;
#[allow(non_upper_case_globals)]
const S_regexp: i32 = 328;
#[allow(non_upper_case_globals)]
const S_words: i32 = 329;
#[allow(non_upper_case_globals)]
const S_word_list: i32 = 330;
#[allow(non_upper_case_globals)]
const S_word: i32 = 331;
#[allow(non_upper_case_globals)]
const S_symbols: i32 = 332;
#[allow(non_upper_case_globals)]
const S_symbol_list: i32 = 333;
#[allow(non_upper_case_globals)]
const S_qwords: i32 = 334;
#[allow(non_upper_case_globals)]
const S_qsymbols: i32 = 335;
#[allow(non_upper_case_globals)]
const S_qword_list: i32 = 336;
#[allow(non_upper_case_globals)]
const S_qsym_list: i32 = 337;
#[allow(non_upper_case_globals)]
const S_string_contents: i32 = 338;
#[allow(non_upper_case_globals)]
const S_xstring_contents: i32 = 339;
#[allow(non_upper_case_globals)]
const S_regexp_contents: i32 = 340;
#[allow(non_upper_case_globals)]
const S_string_content: i32 = 341;
#[allow(non_upper_case_globals)]
const S_342_31: i32 = 342;
#[allow(non_upper_case_globals)]
const S_343_32: i32 = 343;
#[allow(non_upper_case_globals)]
const S_344_33: i32 = 344;
#[allow(non_upper_case_globals)]
const S_345_34: i32 = 345;
#[allow(non_upper_case_globals)]
const S_346_35: i32 = 346;
#[allow(non_upper_case_globals)]
const S_347_36: i32 = 347;
#[allow(non_upper_case_globals)]
const S_string_dvar: i32 = 348;
#[allow(non_upper_case_globals)]
const S_symbol: i32 = 349;
#[allow(non_upper_case_globals)]
const S_ssym: i32 = 350;
#[allow(non_upper_case_globals)]
const S_sym: i32 = 351;
#[allow(non_upper_case_globals)]
const S_dsym: i32 = 352;
#[allow(non_upper_case_globals)]
const S_numeric: i32 = 353;
#[allow(non_upper_case_globals)]
const S_simple_numeric: i32 = 354;
#[allow(non_upper_case_globals)]
const S_user_variable: i32 = 355;
#[allow(non_upper_case_globals)]
const S_keyword_variable: i32 = 356;
#[allow(non_upper_case_globals)]
const S_var_ref: i32 = 357;
#[allow(non_upper_case_globals)]
const S_var_lhs: i32 = 358;
#[allow(non_upper_case_globals)]
const S_backref: i32 = 359;
#[allow(non_upper_case_globals)]
const S_superclass: i32 = 360;
#[allow(non_upper_case_globals)]
const S_361_37: i32 = 361;
#[allow(non_upper_case_globals)]
const S_f_opt_paren_args: i32 = 362;
#[allow(non_upper_case_globals)]
const S_f_paren_args: i32 = 363;
#[allow(non_upper_case_globals)]
const S_f_arglist: i32 = 364;
#[allow(non_upper_case_globals)]
const S_365_38: i32 = 365;
#[allow(non_upper_case_globals)]
const S_args_tail: i32 = 366;
#[allow(non_upper_case_globals)]
const S_opt_args_tail: i32 = 367;
#[allow(non_upper_case_globals)]
const S_f_args: i32 = 368;
#[allow(non_upper_case_globals)]
const S_args_forward: i32 = 369;
#[allow(non_upper_case_globals)]
const S_f_bad_arg: i32 = 370;
#[allow(non_upper_case_globals)]
const S_f_norm_arg: i32 = 371;
#[allow(non_upper_case_globals)]
const S_f_arg_asgn: i32 = 372;
#[allow(non_upper_case_globals)]
const S_f_arg_item: i32 = 373;
#[allow(non_upper_case_globals)]
const S_f_arg: i32 = 374;
#[allow(non_upper_case_globals)]
const S_f_label: i32 = 375;
#[allow(non_upper_case_globals)]
const S_f_kw: i32 = 376;
#[allow(non_upper_case_globals)]
const S_f_block_kw: i32 = 377;
#[allow(non_upper_case_globals)]
const S_f_block_kwarg: i32 = 378;
#[allow(non_upper_case_globals)]
const S_f_kwarg: i32 = 379;
#[allow(non_upper_case_globals)]
const S_kwrest_mark: i32 = 380;
#[allow(non_upper_case_globals)]
const S_f_no_kwarg: i32 = 381;
#[allow(non_upper_case_globals)]
const S_f_kwrest: i32 = 382;
#[allow(non_upper_case_globals)]
const S_f_opt: i32 = 383;
#[allow(non_upper_case_globals)]
const S_f_block_opt: i32 = 384;
#[allow(non_upper_case_globals)]
const S_f_block_optarg: i32 = 385;
#[allow(non_upper_case_globals)]
const S_f_optarg: i32 = 386;
#[allow(non_upper_case_globals)]
const S_restarg_mark: i32 = 387;
#[allow(non_upper_case_globals)]
const S_f_rest_arg: i32 = 388;
#[allow(non_upper_case_globals)]
const S_blkarg_mark: i32 = 389;
#[allow(non_upper_case_globals)]
const S_f_block_arg: i32 = 390;
#[allow(non_upper_case_globals)]
const S_opt_f_block_arg: i32 = 391;
#[allow(non_upper_case_globals)]
const S_singleton: i32 = 392;
#[allow(non_upper_case_globals)]
const S_393_39: i32 = 393;
#[allow(non_upper_case_globals)]
const S_assoc_list: i32 = 394;
#[allow(non_upper_case_globals)]
const S_assocs: i32 = 395;
#[allow(non_upper_case_globals)]
const S_assoc: i32 = 396;
#[allow(non_upper_case_globals)]
const S_operation: i32 = 397;
#[allow(non_upper_case_globals)]
const S_operation2: i32 = 398;
#[allow(non_upper_case_globals)]
const S_operation3: i32 = 399;
#[allow(non_upper_case_globals)]
const S_dot_or_colon: i32 = 400;
#[allow(non_upper_case_globals)]
const S_call_op: i32 = 401;
#[allow(non_upper_case_globals)]
const S_call_op2: i32 = 402;
#[allow(non_upper_case_globals)]
const S_opt_terms: i32 = 403;
#[allow(non_upper_case_globals)]
const S_opt_nl: i32 = 404;
#[allow(non_upper_case_globals)]
const S_rparen: i32 = 405;
#[allow(non_upper_case_globals)]
const S_rbracket: i32 = 406;
#[allow(non_upper_case_globals)]
const S_rbrace: i32 = 407;
#[allow(non_upper_case_globals)]
const S_trailer: i32 = 408;
#[allow(non_upper_case_globals)]
const S_term: i32 = 409;
#[allow(non_upper_case_globals)]
const S_terms: i32 = 410;
#[allow(non_upper_case_globals)]
const S_none: i32 = 411;
const VALUES_: &'static [SymbolKind] = &[
SymbolKind { value: SymbolKind::S_YYEOF },
SymbolKind { value: SymbolKind::S_YYerror },
SymbolKind { value: SymbolKind::S_YYUNDEF },
SymbolKind { value: SymbolKind::S_kCLASS },
SymbolKind { value: SymbolKind::S_kMODULE },
SymbolKind { value: SymbolKind::S_kDEF },
SymbolKind { value: SymbolKind::S_kUNDEF },
SymbolKind { value: SymbolKind::S_kBEGIN },
SymbolKind { value: SymbolKind::S_kRESCUE },
SymbolKind { value: SymbolKind::S_kENSURE },
SymbolKind { value: SymbolKind::S_kEND },
SymbolKind { value: SymbolKind::S_kIF },
SymbolKind { value: SymbolKind::S_kUNLESS },
SymbolKind { value: SymbolKind::S_kTHEN },
SymbolKind { value: SymbolKind::S_kELSIF },
SymbolKind { value: SymbolKind::S_kELSE },
SymbolKind { value: SymbolKind::S_kCASE },
SymbolKind { value: SymbolKind::S_kWHEN },
SymbolKind { value: SymbolKind::S_kWHILE },
SymbolKind { value: SymbolKind::S_kUNTIL },
SymbolKind { value: SymbolKind::S_kFOR },
SymbolKind { value: SymbolKind::S_kBREAK },
SymbolKind { value: SymbolKind::S_kNEXT },
SymbolKind { value: SymbolKind::S_kREDO },
SymbolKind { value: SymbolKind::S_kRETRY },
SymbolKind { value: SymbolKind::S_kIN },
SymbolKind { value: SymbolKind::S_kDO },
SymbolKind { value: SymbolKind::S_kDO_COND },
SymbolKind { value: SymbolKind::S_kDO_BLOCK },
SymbolKind { value: SymbolKind::S_kDO_LAMBDA },
SymbolKind { value: SymbolKind::S_kRETURN },
SymbolKind { value: SymbolKind::S_kYIELD },
SymbolKind { value: SymbolKind::S_kSUPER },
SymbolKind { value: SymbolKind::S_kSELF },
SymbolKind { value: SymbolKind::S_kNIL },
SymbolKind { value: SymbolKind::S_kTRUE },
SymbolKind { value: SymbolKind::S_kFALSE },
SymbolKind { value: SymbolKind::S_kAND },
SymbolKind { value: SymbolKind::S_kOR },
SymbolKind { value: SymbolKind::S_kNOT },
SymbolKind { value: SymbolKind::S_kIF_MOD },
SymbolKind { value: SymbolKind::S_kUNLESS_MOD },
SymbolKind { value: SymbolKind::S_kWHILE_MOD },
SymbolKind { value: SymbolKind::S_kUNTIL_MOD },
SymbolKind { value: SymbolKind::S_kRESCUE_MOD },
SymbolKind { value: SymbolKind::S_kALIAS },
SymbolKind { value: SymbolKind::S_kDEFINED },
SymbolKind { value: SymbolKind::S_klBEGIN },
SymbolKind { value: SymbolKind::S_klEND },
SymbolKind { value: SymbolKind::S_k__LINE__ },
SymbolKind { value: SymbolKind::S_k__FILE__ },
SymbolKind { value: SymbolKind::S_k__ENCODING__ },
SymbolKind { value: SymbolKind::S_tIDENTIFIER },
SymbolKind { value: SymbolKind::S_tFID },
SymbolKind { value: SymbolKind::S_tGVAR },
SymbolKind { value: SymbolKind::S_tIVAR },
SymbolKind { value: SymbolKind::S_tCONSTANT },
SymbolKind { value: SymbolKind::S_tCVAR },
SymbolKind { value: SymbolKind::S_tLABEL },
SymbolKind { value: SymbolKind::S_tINTEGER },
SymbolKind { value: SymbolKind::S_tFLOAT },
SymbolKind { value: SymbolKind::S_tRATIONAL },
SymbolKind { value: SymbolKind::S_tIMAGINARY },
SymbolKind { value: SymbolKind::S_tCHAR },
SymbolKind { value: SymbolKind::S_tNTH_REF },
SymbolKind { value: SymbolKind::S_tBACK_REF },
SymbolKind { value: SymbolKind::S_tSTRING_CONTENT },
SymbolKind { value: SymbolKind::S_tREGEXP_END },
SymbolKind { value: SymbolKind::S_tDOT },
SymbolKind { value: SymbolKind::S_tBACKSLASH },
SymbolKind { value: SymbolKind::S_tSP },
SymbolKind { value: SymbolKind::S_tSLASH_T },
SymbolKind { value: SymbolKind::S_tSLASH_F },
SymbolKind { value: SymbolKind::S_tSLASH_R },
SymbolKind { value: SymbolKind::S_tVTAB },
SymbolKind { value: SymbolKind::S_tUPLUS },
SymbolKind { value: SymbolKind::S_tUMINUS },
SymbolKind { value: SymbolKind::S_tPOW },
SymbolKind { value: SymbolKind::S_tCMP },
SymbolKind { value: SymbolKind::S_tEQ },
SymbolKind { value: SymbolKind::S_tEQQ },
SymbolKind { value: SymbolKind::S_tNEQ },
SymbolKind { value: SymbolKind::S_tGEQ },
SymbolKind { value: SymbolKind::S_tLEQ },
SymbolKind { value: SymbolKind::S_tANDOP },
SymbolKind { value: SymbolKind::S_tOROP },
SymbolKind { value: SymbolKind::S_tMATCH },
SymbolKind { value: SymbolKind::S_tNMATCH },
SymbolKind { value: SymbolKind::S_tDOT2 },
SymbolKind { value: SymbolKind::S_tDOT3 },
SymbolKind { value: SymbolKind::S_tBDOT2 },
SymbolKind { value: SymbolKind::S_tBDOT3 },
SymbolKind { value: SymbolKind::S_tAREF },
SymbolKind { value: SymbolKind::S_tASET },
SymbolKind { value: SymbolKind::S_tLSHFT },
SymbolKind { value: SymbolKind::S_tRSHFT },
SymbolKind { value: SymbolKind::S_tANDDOT },
SymbolKind { value: SymbolKind::S_tCOLON2 },
SymbolKind { value: SymbolKind::S_tCOLON3 },
SymbolKind { value: SymbolKind::S_tOP_ASGN },
SymbolKind { value: SymbolKind::S_tASSOC },
SymbolKind { value: SymbolKind::S_tLPAREN },
SymbolKind { value: SymbolKind::S_tLPAREN_ARG },
SymbolKind { value: SymbolKind::S_tRPAREN },
SymbolKind { value: SymbolKind::S_tLBRACK },
SymbolKind { value: SymbolKind::S_tLBRACE },
SymbolKind { value: SymbolKind::S_tLBRACE_ARG },
SymbolKind { value: SymbolKind::S_tSTAR },
SymbolKind { value: SymbolKind::S_tDSTAR },
SymbolKind { value: SymbolKind::S_tAMPER },
SymbolKind { value: SymbolKind::S_tLAMBDA },
SymbolKind { value: SymbolKind::S_tSYMBEG },
SymbolKind { value: SymbolKind::S_tSTRING_BEG },
SymbolKind { value: SymbolKind::S_tXSTRING_BEG },
SymbolKind { value: SymbolKind::S_tREGEXP_BEG },
SymbolKind { value: SymbolKind::S_tWORDS_BEG },
SymbolKind { value: SymbolKind::S_tQWORDS_BEG },
SymbolKind { value: SymbolKind::S_tSYMBOLS_BEG },
SymbolKind { value: SymbolKind::S_tQSYMBOLS_BEG },
SymbolKind { value: SymbolKind::S_tSTRING_END },
SymbolKind { value: SymbolKind::S_tSTRING_DEND },
SymbolKind { value: SymbolKind::S_tSTRING_DBEG },
SymbolKind { value: SymbolKind::S_tSTRING_DVAR },
SymbolKind { value: SymbolKind::S_tLAMBEG },
SymbolKind { value: SymbolKind::S_tLABEL_END },
SymbolKind { value: SymbolKind::S_tCOMMA },
SymbolKind { value: SymbolKind::S_tLCURLY },
SymbolKind { value: SymbolKind::S_tRCURLY },
SymbolKind { value: SymbolKind::S_tLBRACK2 },
SymbolKind { value: SymbolKind::S_tEQL },
SymbolKind { value: SymbolKind::S_tPIPE },
SymbolKind { value: SymbolKind::S_tAMPER2 },
SymbolKind { value: SymbolKind::S_tGT },
SymbolKind { value: SymbolKind::S_tLT },
SymbolKind { value: SymbolKind::S_tBACK_REF2 },
SymbolKind { value: SymbolKind::S_tCARET },
SymbolKind { value: SymbolKind::S_tLPAREN2 },
SymbolKind { value: SymbolKind::S_tRBRACK },
SymbolKind { value: SymbolKind::S_tSEMI },
SymbolKind { value: SymbolKind::S_tSPACE },
SymbolKind { value: SymbolKind::S_tNL },
SymbolKind { value: SymbolKind::S_tPLUS },
SymbolKind { value: SymbolKind::S_tMINUS },
SymbolKind { value: SymbolKind::S_tSTAR2 },
SymbolKind { value: SymbolKind::S_tDIVIDE },
SymbolKind { value: SymbolKind::S_tPERCENT },
SymbolKind { value: SymbolKind::S_tTILDE },
SymbolKind { value: SymbolKind::S_tBANG },
SymbolKind { value: SymbolKind::S_tLOWEST },
SymbolKind { value: SymbolKind::S_tEH },
SymbolKind { value: SymbolKind::S_tCOLON },
SymbolKind { value: SymbolKind::S_tUMINUS_NUM },
SymbolKind { value: SymbolKind::S_tLAST_TOKEN },
SymbolKind { value: SymbolKind::S_YYACCEPT },
SymbolKind { value: SymbolKind::S_program },
SymbolKind { value: SymbolKind::S_155_1 },
SymbolKind { value: SymbolKind::S_top_compstmt },
SymbolKind { value: SymbolKind::S_top_stmts },
SymbolKind { value: SymbolKind::S_top_stmt },
SymbolKind { value: SymbolKind::S_begin_block },
SymbolKind { value: SymbolKind::S_bodystmt },
SymbolKind { value: SymbolKind::S_compstmt },
SymbolKind { value: SymbolKind::S_stmts },
SymbolKind { value: SymbolKind::S_stmt_or_begin },
SymbolKind { value: SymbolKind::S_164_2 },
SymbolKind { value: SymbolKind::S_stmt },
SymbolKind { value: SymbolKind::S_166_3 },
SymbolKind { value: SymbolKind::S_command_asgn },
SymbolKind { value: SymbolKind::S_command_rhs },
SymbolKind { value: SymbolKind::S_expr },
SymbolKind { value: SymbolKind::S_170_4 },
SymbolKind { value: SymbolKind::S_def_name },
SymbolKind { value: SymbolKind::S_defn_head },
SymbolKind { value: SymbolKind::S_defs_head },
SymbolKind { value: SymbolKind::S_174_5 },
SymbolKind { value: SymbolKind::S_expr_value },
SymbolKind { value: SymbolKind::S_expr_value_do },
SymbolKind { value: SymbolKind::S_177_6 },
SymbolKind { value: SymbolKind::S_command_call },
SymbolKind { value: SymbolKind::S_block_command },
SymbolKind { value: SymbolKind::S_cmd_brace_block },
SymbolKind { value: SymbolKind::S_181_7 },
SymbolKind { value: SymbolKind::S_fcall },
SymbolKind { value: SymbolKind::S_command },
SymbolKind { value: SymbolKind::S_mlhs },
SymbolKind { value: SymbolKind::S_mlhs_inner },
SymbolKind { value: SymbolKind::S_mlhs_basic },
SymbolKind { value: SymbolKind::S_mlhs_item },
SymbolKind { value: SymbolKind::S_mlhs_head },
SymbolKind { value: SymbolKind::S_mlhs_post },
SymbolKind { value: SymbolKind::S_mlhs_node },
SymbolKind { value: SymbolKind::S_lhs },
SymbolKind { value: SymbolKind::S_cname },
SymbolKind { value: SymbolKind::S_cpath },
SymbolKind { value: SymbolKind::S_fname },
SymbolKind { value: SymbolKind::S_fitem },
SymbolKind { value: SymbolKind::S_undef_list },
SymbolKind { value: SymbolKind::S_197_8 },
SymbolKind { value: SymbolKind::S_op },
SymbolKind { value: SymbolKind::S_reswords },
SymbolKind { value: SymbolKind::S_arg },
SymbolKind { value: SymbolKind::S_relop },
SymbolKind { value: SymbolKind::S_rel_expr },
SymbolKind { value: SymbolKind::S_arg_value },
SymbolKind { value: SymbolKind::S_aref_args },
SymbolKind { value: SymbolKind::S_arg_rhs },
SymbolKind { value: SymbolKind::S_paren_args },
SymbolKind { value: SymbolKind::S_opt_paren_args },
SymbolKind { value: SymbolKind::S_opt_call_args },
SymbolKind { value: SymbolKind::S_call_args },
SymbolKind { value: SymbolKind::S_command_args },
SymbolKind { value: SymbolKind::S_211_9 },
SymbolKind { value: SymbolKind::S_block_arg },
SymbolKind { value: SymbolKind::S_opt_block_arg },
SymbolKind { value: SymbolKind::S_args },
SymbolKind { value: SymbolKind::S_mrhs_arg },
SymbolKind { value: SymbolKind::S_mrhs },
SymbolKind { value: SymbolKind::S_primary },
SymbolKind { value: SymbolKind::S_218_10 },
SymbolKind { value: SymbolKind::S_219_11 },
SymbolKind { value: SymbolKind::S_220_12 },
SymbolKind { value: SymbolKind::S_221_13 },
SymbolKind { value: SymbolKind::S_222_14 },
SymbolKind { value: SymbolKind::S_223_15 },
SymbolKind { value: SymbolKind::S_224_16 },
SymbolKind { value: SymbolKind::S_225_17 },
SymbolKind { value: SymbolKind::S_primary_value },
SymbolKind { value: SymbolKind::S_k_begin },
SymbolKind { value: SymbolKind::S_k_if },
SymbolKind { value: SymbolKind::S_k_unless },
SymbolKind { value: SymbolKind::S_k_while },
SymbolKind { value: SymbolKind::S_k_until },
SymbolKind { value: SymbolKind::S_k_case },
SymbolKind { value: SymbolKind::S_k_for },
SymbolKind { value: SymbolKind::S_k_class },
SymbolKind { value: SymbolKind::S_k_module },
SymbolKind { value: SymbolKind::S_k_def },
SymbolKind { value: SymbolKind::S_k_do },
SymbolKind { value: SymbolKind::S_k_do_block },
SymbolKind { value: SymbolKind::S_k_rescue },
SymbolKind { value: SymbolKind::S_k_ensure },
SymbolKind { value: SymbolKind::S_k_when },
SymbolKind { value: SymbolKind::S_k_else },
SymbolKind { value: SymbolKind::S_k_elsif },
SymbolKind { value: SymbolKind::S_k_end },
SymbolKind { value: SymbolKind::S_k_return },
SymbolKind { value: SymbolKind::S_then },
SymbolKind { value: SymbolKind::S_do },
SymbolKind { value: SymbolKind::S_if_tail },
SymbolKind { value: SymbolKind::S_opt_else },
SymbolKind { value: SymbolKind::S_for_var },
SymbolKind { value: SymbolKind::S_f_marg },
SymbolKind { value: SymbolKind::S_f_marg_list },
SymbolKind { value: SymbolKind::S_f_margs },
SymbolKind { value: SymbolKind::S_f_rest_marg },
SymbolKind { value: SymbolKind::S_f_any_kwrest },
SymbolKind { value: SymbolKind::S_block_args_tail },
SymbolKind { value: SymbolKind::S_opt_block_args_tail },
SymbolKind { value: SymbolKind::S_excessed_comma },
SymbolKind { value: SymbolKind::S_block_param },
SymbolKind { value: SymbolKind::S_opt_block_param },
SymbolKind { value: SymbolKind::S_block_param_def },
SymbolKind { value: SymbolKind::S_opt_bv_decl },
SymbolKind { value: SymbolKind::S_bv_decls },
SymbolKind { value: SymbolKind::S_bvar },
SymbolKind { value: SymbolKind::S_lambda },
SymbolKind { value: SymbolKind::S_266_18 },
SymbolKind { value: SymbolKind::S_267_19 },
SymbolKind { value: SymbolKind::S_f_larglist },
SymbolKind { value: SymbolKind::S_lambda_body },
SymbolKind { value: SymbolKind::S_270_20 },
SymbolKind { value: SymbolKind::S_271_21 },
SymbolKind { value: SymbolKind::S_do_block },
SymbolKind { value: SymbolKind::S_273_22 },
SymbolKind { value: SymbolKind::S_block_call },
SymbolKind { value: SymbolKind::S_method_call },
SymbolKind { value: SymbolKind::S_brace_block },
SymbolKind { value: SymbolKind::S_277_23 },
SymbolKind { value: SymbolKind::S_278_24 },
SymbolKind { value: SymbolKind::S_brace_body },
SymbolKind { value: SymbolKind::S_280_25 },
SymbolKind { value: SymbolKind::S_do_body },
SymbolKind { value: SymbolKind::S_282_26 },
SymbolKind { value: SymbolKind::S_case_args },
SymbolKind { value: SymbolKind::S_case_body },
SymbolKind { value: SymbolKind::S_cases },
SymbolKind { value: SymbolKind::S_p_case_body },
SymbolKind { value: SymbolKind::S_287_27 },
SymbolKind { value: SymbolKind::S_288_28 },
SymbolKind { value: SymbolKind::S_p_cases },
SymbolKind { value: SymbolKind::S_p_top_expr },
SymbolKind { value: SymbolKind::S_p_top_expr_body },
SymbolKind { value: SymbolKind::S_p_expr },
SymbolKind { value: SymbolKind::S_p_as },
SymbolKind { value: SymbolKind::S_p_alt },
SymbolKind { value: SymbolKind::S_p_lparen },
SymbolKind { value: SymbolKind::S_p_lbracket },
SymbolKind { value: SymbolKind::S_p_expr_basic },
SymbolKind { value: SymbolKind::S_298_29 },
SymbolKind { value: SymbolKind::S_299_30 },
SymbolKind { value: SymbolKind::S_p_args },
SymbolKind { value: SymbolKind::S_p_args_head },
SymbolKind { value: SymbolKind::S_p_args_tail },
SymbolKind { value: SymbolKind::S_p_find },
SymbolKind { value: SymbolKind::S_p_rest },
SymbolKind { value: SymbolKind::S_p_args_post },
SymbolKind { value: SymbolKind::S_p_arg },
SymbolKind { value: SymbolKind::S_p_kwargs },
SymbolKind { value: SymbolKind::S_p_kwarg },
SymbolKind { value: SymbolKind::S_p_kw },
SymbolKind { value: SymbolKind::S_p_kw_label },
SymbolKind { value: SymbolKind::S_p_kwrest },
SymbolKind { value: SymbolKind::S_p_kwnorest },
SymbolKind { value: SymbolKind::S_p_any_kwrest },
SymbolKind { value: SymbolKind::S_p_value },
SymbolKind { value: SymbolKind::S_p_primitive },
SymbolKind { value: SymbolKind::S_p_variable },
SymbolKind { value: SymbolKind::S_p_var_ref },
SymbolKind { value: SymbolKind::S_p_const },
SymbolKind { value: SymbolKind::S_opt_rescue },
SymbolKind { value: SymbolKind::S_exc_list },
SymbolKind { value: SymbolKind::S_exc_var },
SymbolKind { value: SymbolKind::S_opt_ensure },
SymbolKind { value: SymbolKind::S_literal },
SymbolKind { value: SymbolKind::S_strings },
SymbolKind { value: SymbolKind::S_string },
SymbolKind { value: SymbolKind::S_string1 },
SymbolKind { value: SymbolKind::S_xstring },
SymbolKind { value: SymbolKind::S_regexp },
SymbolKind { value: SymbolKind::S_words },
SymbolKind { value: SymbolKind::S_word_list },
SymbolKind { value: SymbolKind::S_word },
SymbolKind { value: SymbolKind::S_symbols },
SymbolKind { value: SymbolKind::S_symbol_list },
SymbolKind { value: SymbolKind::S_qwords },
SymbolKind { value: SymbolKind::S_qsymbols },
SymbolKind { value: SymbolKind::S_qword_list },
SymbolKind { value: SymbolKind::S_qsym_list },
SymbolKind { value: SymbolKind::S_string_contents },
SymbolKind { value: SymbolKind::S_xstring_contents },
SymbolKind { value: SymbolKind::S_regexp_contents },
SymbolKind { value: SymbolKind::S_string_content },
SymbolKind { value: SymbolKind::S_342_31 },
SymbolKind { value: SymbolKind::S_343_32 },
SymbolKind { value: SymbolKind::S_344_33 },
SymbolKind { value: SymbolKind::S_345_34 },
SymbolKind { value: SymbolKind::S_346_35 },
SymbolKind { value: SymbolKind::S_347_36 },
SymbolKind { value: SymbolKind::S_string_dvar },
SymbolKind { value: SymbolKind::S_symbol },
SymbolKind { value: SymbolKind::S_ssym },
SymbolKind { value: SymbolKind::S_sym },
SymbolKind { value: SymbolKind::S_dsym },
SymbolKind { value: SymbolKind::S_numeric },
SymbolKind { value: SymbolKind::S_simple_numeric },
SymbolKind { value: SymbolKind::S_user_variable },
SymbolKind { value: SymbolKind::S_keyword_variable },
SymbolKind { value: SymbolKind::S_var_ref },
SymbolKind { value: SymbolKind::S_var_lhs },
SymbolKind { value: SymbolKind::S_backref },
SymbolKind { value: SymbolKind::S_superclass },
SymbolKind { value: SymbolKind::S_361_37 },
SymbolKind { value: SymbolKind::S_f_opt_paren_args },
SymbolKind { value: SymbolKind::S_f_paren_args },
SymbolKind { value: SymbolKind::S_f_arglist },
SymbolKind { value: SymbolKind::S_365_38 },
SymbolKind { value: SymbolKind::S_args_tail },
SymbolKind { value: SymbolKind::S_opt_args_tail },
SymbolKind { value: SymbolKind::S_f_args },
SymbolKind { value: SymbolKind::S_args_forward },
SymbolKind { value: SymbolKind::S_f_bad_arg },
SymbolKind { value: SymbolKind::S_f_norm_arg },
SymbolKind { value: SymbolKind::S_f_arg_asgn },
SymbolKind { value: SymbolKind::S_f_arg_item },
SymbolKind { value: SymbolKind::S_f_arg },
SymbolKind { value: SymbolKind::S_f_label },
SymbolKind { value: SymbolKind::S_f_kw },
SymbolKind { value: SymbolKind::S_f_block_kw },
SymbolKind { value: SymbolKind::S_f_block_kwarg },
SymbolKind { value: SymbolKind::S_f_kwarg },
SymbolKind { value: SymbolKind::S_kwrest_mark },
SymbolKind { value: SymbolKind::S_f_no_kwarg },
SymbolKind { value: SymbolKind::S_f_kwrest },
SymbolKind { value: SymbolKind::S_f_opt },
SymbolKind { value: SymbolKind::S_f_block_opt },
SymbolKind { value: SymbolKind::S_f_block_optarg },
SymbolKind { value: SymbolKind::S_f_optarg },
SymbolKind { value: SymbolKind::S_restarg_mark },
SymbolKind { value: SymbolKind::S_f_rest_arg },
SymbolKind { value: SymbolKind::S_blkarg_mark },
SymbolKind { value: SymbolKind::S_f_block_arg },
SymbolKind { value: SymbolKind::S_opt_f_block_arg },
SymbolKind { value: SymbolKind::S_singleton },
SymbolKind { value: SymbolKind::S_393_39 },
SymbolKind { value: SymbolKind::S_assoc_list },
SymbolKind { value: SymbolKind::S_assocs },
SymbolKind { value: SymbolKind::S_assoc },
SymbolKind { value: SymbolKind::S_operation },
SymbolKind { value: SymbolKind::S_operation2 },
SymbolKind { value: SymbolKind::S_operation3 },
SymbolKind { value: SymbolKind::S_dot_or_colon },
SymbolKind { value: SymbolKind::S_call_op },
SymbolKind { value: SymbolKind::S_call_op2 },
SymbolKind { value: SymbolKind::S_opt_terms },
SymbolKind { value: SymbolKind::S_opt_nl },
SymbolKind { value: SymbolKind::S_rparen },
SymbolKind { value: SymbolKind::S_rbracket },
SymbolKind { value: SymbolKind::S_rbrace },
SymbolKind { value: SymbolKind::S_trailer },
SymbolKind { value: SymbolKind::S_term },
SymbolKind { value: SymbolKind::S_terms },
SymbolKind { value: SymbolKind::S_none }
];
pub(crate) fn get(n: i32) -> &'static SymbolKind {
&Self::VALUES_[i32_to_usize(n)]
}
pub(crate) fn code(&self) -> i32 {
self.value
}
#[allow(non_upper_case_globals)]
const yynames_: &'static [&'static str] = &[ "end-of-input", "error", "invalid token", "`class'", "`module'",
"`def'", "`undef'", "`begin'", "`rescue'", "`ensure'", "`end'", "`if'",
"`unless'", "`then'", "`elsif'", "`else'", "`case'", "`when'", "`while'",
"`until'", "`for'", "`break'", "`next'", "`redo'", "`retry'", "`in'",
"`do'", "`do' for condition", "`do' for block", "`do' for lambda",
"`return'", "`yield'", "`super'", "`self'", "`nil'", "`true'", "`false'",
"`and'", "`or'", "`not'", "`if' modifier", "`unless' modifier",
"`while' modifier", "`until' modifier", "`rescue' modifier", "`alias'",
"`defined?'", "`BEGIN'", "`END'", "`__LINE__'", "`__FILE__'",
"`__ENCODING__'", "local variable or method", "method",
"global variable", "instance variable", "constant", "class variable",
"label", "integer literal", "float literal", "rational literal",
"imaginary literal", "char literal", "numbered reference",
"back reference", "literal content", "tREGEXP_END", "tDOT", "backslash",
"escaped space", "escaped horizontal tab", "escaped form feed",
"escaped carriage return", "escaped vertical tab", "unary+", "unary-",
"**", "<=>", "==", "===", "!=", ">=", "<=", "&&", "||", "=~", "!~", "..",
"...", "(..", "(...", "[]", "[]=", "<<", ">>", "&.", "::",
":: at EXPR_BEG", "operator-assignment", "=>", "(", "( arg", ")", "[",
"{", "{ arg", "*", "**arg", "&", "->", "symbol literal", "string begin",
"backtick literal", "regexp literal", "word list", "verbatim word list",
"symbol list", "verbatim symbol list", "string end", "tRCURLY",
"tSTRING_DBEG", "tSTRING_DVAR", "tLAMBEG", "tLABEL_END", ",",
"{ (tLCURLY)", "}", "[ (tLBRACK2)", "=", "|", "& (tAMPER2)", ">", "<",
"`", "^", "( (tLPAREN2)", "]", ";", " ", "\n", "+", "-", "* (tSTAR2)",
"/", "%", "~", "!", "tLOWEST", "tEH", "tCOLON", "tUMINUS_NUM",
"tLAST_TOKEN", "$accept", "program", "@1", "top_compstmt", "top_stmts",
"top_stmt", "begin_block", "bodystmt", "compstmt", "stmts",
"stmt_or_begin", "$@2", "stmt", "@3", "command_asgn", "command_rhs",
"expr", "@4", "def_name", "defn_head", "defs_head", "@5", "expr_value",
"expr_value_do", "@6", "command_call", "block_command",
"cmd_brace_block", "@7", "fcall", "command", "mlhs", "mlhs_inner",
"mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post", "mlhs_node", "lhs",
"cname", "cpath", "fname", "fitem", "undef_list", "@8", "op", "reswords",
"arg", "relop", "rel_expr", "arg_value", "aref_args", "arg_rhs",
"paren_args", "opt_paren_args", "opt_call_args", "call_args",
"command_args", "@9", "block_arg", "opt_block_arg", "args", "mrhs_arg",
"mrhs", "primary", "@10", "@11", "@12", "@13", "@14", "@15", "@16",
"@17", "primary_value", "k_begin", "k_if", "k_unless", "k_while",
"k_until", "k_case", "k_for", "k_class", "k_module", "k_def", "k_do",
"k_do_block", "k_rescue", "k_ensure", "k_when", "k_else", "k_elsif",
"k_end", "k_return", "then", "do", "if_tail", "opt_else", "for_var",
"f_marg", "f_marg_list", "f_margs", "f_rest_marg", "f_any_kwrest",
"block_args_tail", "opt_block_args_tail", "excessed_comma",
"block_param", "opt_block_param", "block_param_def", "opt_bv_decl",
"bv_decls", "bvar", "lambda", "@18", "@19", "f_larglist", "lambda_body",
"@20", "@21", "do_block", "@22", "block_call", "method_call",
"brace_block", "@23", "@24", "brace_body", "@25", "do_body", "@26",
"case_args", "case_body", "cases", "p_case_body", "@27", "@28",
"p_cases", "p_top_expr", "p_top_expr_body", "p_expr", "p_as", "p_alt",
"p_lparen", "p_lbracket", "p_expr_basic", "@29", "@30", "p_args",
"p_args_head", "p_args_tail", "p_find", "p_rest", "p_args_post", "p_arg",
"p_kwargs", "p_kwarg", "p_kw", "p_kw_label", "p_kwrest", "p_kwnorest",
"p_any_kwrest", "p_value", "p_primitive", "p_variable", "p_var_ref",
"p_const", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
"strings", "string", "string1", "xstring", "regexp", "words",
"word_list", "word", "symbols", "symbol_list", "qwords", "qsymbols",
"qword_list", "qsym_list", "string_contents", "xstring_contents",
"regexp_contents", "string_content", "@31", "@32", "@33", "@34", "@35",
"@36", "string_dvar", "symbol", "ssym", "sym", "dsym", "numeric",
"simple_numeric", "user_variable", "keyword_variable", "var_ref",
"var_lhs", "backref", "superclass", "@37", "f_opt_paren_args",
"f_paren_args", "f_arglist", "@38", "args_tail", "opt_args_tail",
"f_args", "args_forward", "f_bad_arg", "f_norm_arg", "f_arg_asgn",
"f_arg_item", "f_arg", "f_label", "f_kw", "f_block_kw", "f_block_kwarg",
"f_kwarg", "kwrest_mark", "f_no_kwarg", "f_kwrest", "f_opt",
"f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark",
"f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg",
"singleton", "@39", "assoc_list", "assocs", "assoc", "operation",
"operation2", "operation3", "dot_or_colon", "call_op", "call_op2",
"opt_terms", "opt_nl", "rparen", "rbracket", "rbrace", "trailer", "term",
"terms", "none", "<<NULL>>" ] ;
pub(crate) fn name(&self) -> String {
let code: usize = self.code().try_into().unwrap();
Self::yynames_[code].to_owned()
}
}
const DYMMY_SYMBOL_KIND: SymbolKind = SymbolKind { value: 0 };
impl Lexer {
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const END_OF_INPUT: i32 = 0;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const YYerror: i32 = 256;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const YYUNDEF: i32 = 257;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kCLASS: i32 = 258;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kMODULE: i32 = 259;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDEF: i32 = 260;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNDEF: i32 = 261;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kBEGIN: i32 = 262;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRESCUE: i32 = 263;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kENSURE: i32 = 264;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kEND: i32 = 265;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kIF: i32 = 266;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNLESS: i32 = 267;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kTHEN: i32 = 268;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kELSIF: i32 = 269;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kELSE: i32 = 270;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kCASE: i32 = 271;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kWHEN: i32 = 272;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kWHILE: i32 = 273;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNTIL: i32 = 274;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kFOR: i32 = 275;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kBREAK: i32 = 276;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kNEXT: i32 = 277;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kREDO: i32 = 278;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRETRY: i32 = 279;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kIN: i32 = 280;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO: i32 = 281;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO_COND: i32 = 282;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO_BLOCK: i32 = 283;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDO_LAMBDA: i32 = 284;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRETURN: i32 = 285;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kYIELD: i32 = 286;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kSUPER: i32 = 287;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kSELF: i32 = 288;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kNIL: i32 = 289;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kTRUE: i32 = 290;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kFALSE: i32 = 291;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kAND: i32 = 292;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kOR: i32 = 293;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kNOT: i32 = 294;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kIF_MOD: i32 = 295;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNLESS_MOD: i32 = 296;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kWHILE_MOD: i32 = 297;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kUNTIL_MOD: i32 = 298;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kRESCUE_MOD: i32 = 299;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kALIAS: i32 = 300;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const kDEFINED: i32 = 301;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const klBEGIN: i32 = 302;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const klEND: i32 = 303;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const k__LINE__: i32 = 304;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const k__FILE__: i32 = 305;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const k__ENCODING__: i32 = 306;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tIDENTIFIER: i32 = 307;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tFID: i32 = 308;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tGVAR: i32 = 309;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tIVAR: i32 = 310;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCONSTANT: i32 = 311;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCVAR: i32 = 312;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLABEL: i32 = 313;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tINTEGER: i32 = 314;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tFLOAT: i32 = 315;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRATIONAL: i32 = 316;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tIMAGINARY: i32 = 317;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCHAR: i32 = 318;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNTH_REF: i32 = 319;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBACK_REF: i32 = 320;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_CONTENT: i32 = 321;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tREGEXP_END: i32 = 322;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDOT: i32 = 323;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBACKSLASH: i32 = 324;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSP: i32 = 325;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSLASH_T: i32 = 326;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSLASH_F: i32 = 327;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSLASH_R: i32 = 328;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tVTAB: i32 = 329;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tUPLUS: i32 = 330;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tUMINUS: i32 = 331;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPOW: i32 = 332;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCMP: i32 = 333;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEQ: i32 = 334;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEQQ: i32 = 335;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNEQ: i32 = 336;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tGEQ: i32 = 337;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLEQ: i32 = 338;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tANDOP: i32 = 339;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tOROP: i32 = 340;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tMATCH: i32 = 341;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNMATCH: i32 = 342;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDOT2: i32 = 343;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDOT3: i32 = 344;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBDOT2: i32 = 345;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBDOT3: i32 = 346;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tAREF: i32 = 347;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tASET: i32 = 348;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLSHFT: i32 = 349;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRSHFT: i32 = 350;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tANDDOT: i32 = 351;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOLON2: i32 = 352;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOLON3: i32 = 353;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tOP_ASGN: i32 = 354;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tASSOC: i32 = 355;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLPAREN: i32 = 356;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLPAREN_ARG: i32 = 357;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRPAREN: i32 = 358;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACK: i32 = 359;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACE: i32 = 360;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACE_ARG: i32 = 361;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTAR: i32 = 362;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDSTAR: i32 = 363;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tAMPER: i32 = 364;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLAMBDA: i32 = 365;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSYMBEG: i32 = 366;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_BEG: i32 = 367;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tXSTRING_BEG: i32 = 368;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tREGEXP_BEG: i32 = 369;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tWORDS_BEG: i32 = 370;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tQWORDS_BEG: i32 = 371;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSYMBOLS_BEG: i32 = 372;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tQSYMBOLS_BEG: i32 = 373;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_END: i32 = 374;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_DEND: i32 = 375;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_DBEG: i32 = 376;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTRING_DVAR: i32 = 377;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLAMBEG: i32 = 378;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLABEL_END: i32 = 379;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOMMA: i32 = 380;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLCURLY: i32 = 381;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRCURLY: i32 = 382;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLBRACK2: i32 = 383;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEQL: i32 = 384;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPIPE: i32 = 385;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tAMPER2: i32 = 386;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tGT: i32 = 387;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLT: i32 = 388;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBACK_REF2: i32 = 389;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCARET: i32 = 390;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLPAREN2: i32 = 391;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tRBRACK: i32 = 392;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSEMI: i32 = 393;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSPACE: i32 = 394;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tNL: i32 = 395;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPLUS: i32 = 396;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tMINUS: i32 = 397;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tSTAR2: i32 = 398;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tDIVIDE: i32 = 399;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tPERCENT: i32 = 400;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tTILDE: i32 = 401;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tBANG: i32 = 402;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLOWEST: i32 = 403;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tEH: i32 = 404;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tCOLON: i32 = 405;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tUMINUS_NUM: i32 = 406;
#[allow(non_upper_case_globals, dead_code)]
pub(crate) const tLAST_TOKEN: i32 = 407;
#[allow(dead_code)]
const EOF: i32 = Self::END_OF_INPUT;
#[allow(dead_code)]
pub(crate) const TOKEN_NAMES: &'static [&'static str] = & [
"END_OF_INPUT",
"YYerror",
"YYUNDEF",
"kCLASS",
"kMODULE",
"kDEF",
"kUNDEF",
"kBEGIN",
"kRESCUE",
"kENSURE",
"kEND",
"kIF",
"kUNLESS",
"kTHEN",
"kELSIF",
"kELSE",
"kCASE",
"kWHEN",
"kWHILE",
"kUNTIL",
"kFOR",
"kBREAK",
"kNEXT",
"kREDO",
"kRETRY",
"kIN",
"kDO",
"kDO_COND",
"kDO_BLOCK",
"kDO_LAMBDA",
"kRETURN",
"kYIELD",
"kSUPER",
"kSELF",
"kNIL",
"kTRUE",
"kFALSE",
"kAND",
"kOR",
"kNOT",
"kIF_MOD",
"kUNLESS_MOD",
"kWHILE_MOD",
"kUNTIL_MOD",
"kRESCUE_MOD",
"kALIAS",
"kDEFINED",
"klBEGIN",
"klEND",
"k__LINE__",
"k__FILE__",
"k__ENCODING__",
"tIDENTIFIER",
"tFID",
"tGVAR",
"tIVAR",
"tCONSTANT",
"tCVAR",
"tLABEL",
"tINTEGER",
"tFLOAT",
"tRATIONAL",
"tIMAGINARY",
"tCHAR",
"tNTH_REF",
"tBACK_REF",
"tSTRING_CONTENT",
"tREGEXP_END",
"tDOT",
"tBACKSLASH",
"tSP",
"tSLASH_T",
"tSLASH_F",
"tSLASH_R",
"tVTAB",
"tUPLUS",
"tUMINUS",
"tPOW",
"tCMP",
"tEQ",
"tEQQ",
"tNEQ",
"tGEQ",
"tLEQ",
"tANDOP",
"tOROP",
"tMATCH",
"tNMATCH",
"tDOT2",
"tDOT3",
"tBDOT2",
"tBDOT3",
"tAREF",
"tASET",
"tLSHFT",
"tRSHFT",
"tANDDOT",
"tCOLON2",
"tCOLON3",
"tOP_ASGN",
"tASSOC",
"tLPAREN",
"tLPAREN_ARG",
"tRPAREN",
"tLBRACK",
"tLBRACE",
"tLBRACE_ARG",
"tSTAR",
"tDSTAR",
"tAMPER",
"tLAMBDA",
"tSYMBEG",
"tSTRING_BEG",
"tXSTRING_BEG",
"tREGEXP_BEG",
"tWORDS_BEG",
"tQWORDS_BEG",
"tSYMBOLS_BEG",
"tQSYMBOLS_BEG",
"tSTRING_END",
"tSTRING_DEND",
"tSTRING_DBEG",
"tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tCOMMA",
"tLCURLY",
"tRCURLY",
"tLBRACK2",
"tEQL",
"tPIPE",
"tAMPER2",
"tGT",
"tLT",
"tBACK_REF2",
"tCARET",
"tLPAREN2",
"tRBRACK",
"tSEMI",
"tSPACE",
"tNL",
"tPLUS",
"tMINUS",
"tSTAR2",
"tDIVIDE",
"tPERCENT",
"tTILDE",
"tBANG",
"tLOWEST",
"tEH",
"tCOLON",
"tUMINUS_NUM",
"tLAST_TOKEN",
]
;
}
impl Parser {
fn yycdebug(&self, s: &str) {
if self.yydebug {
eprintln!("{}", s);
}
}
}
type YYValue = Value ;
#[derive(Clone, Debug)]
pub struct YYStack {
state_stack: Vec<i32>,
loc_stack: Vec<YYLoc>,
value_stack: Vec<YYValue>,
}
impl YYStack {
pub(crate) fn new() -> Self {
Self {
state_stack: Vec::with_capacity(20),
loc_stack: Vec::with_capacity(20),
value_stack: Vec::with_capacity(20),
}
}
pub(crate) fn push(&mut self, state: i32, value: YYValue, loc: YYLoc) {
self.state_stack.push(state);
self.loc_stack.push(loc);
self.value_stack.push(value);
}
pub(crate) fn pop(&mut self) {
self.pop_n(1);
}
pub(crate) fn pop_n(&mut self, num: usize) {
let len = self.state_stack.len() - num;
self.state_stack.truncate(len);
self.loc_stack.truncate(len);
self.value_stack.truncate(len);
}
pub(crate) fn state_at(&self, i: usize) -> i32 {
self.state_stack[self.len() - 1 - i]
}
pub(crate) fn location_at(&self, i: usize) -> &YYLoc {
&self.loc_stack[self.len() - 1 - i]
}
pub(crate) fn borrow_value_at(&self, i: usize) -> &YYValue {
&self.value_stack[self.len() - 1 - i]
}
pub(crate) fn owned_value_at(&mut self, i: usize) -> YYValue {
let len = self.len();
std::mem::take(&mut self.value_stack[len - 1 - i])
}
pub(crate) fn len(&self) -> usize {
self.state_stack.len()
}
}
impl std::fmt::Display for YYStack {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let state = self.state_stack.iter().map(|e| e.to_string()).collect::<Vec<String>>().join(" ");
f.write_fmt(format_args!("Stack now states = {} / values = {:?} ", state, self.value_stack))
}
}
impl Parser {
pub(crate) const YYACCEPT: i32 = 0;
pub(crate) const YYABORT: i32 = 1;
pub(crate) const YYERROR: i32 = 2;
pub(crate) const YYERRLAB: i32 = 3;
pub(crate) const YYNEWSTATE: i32 = 4;
pub(crate) const YYDEFAULT: i32 = 5;
pub(crate) const YYREDUCE: i32 = 6;
pub(crate) const YYERRLAB1: i32 = 7;
#[allow(dead_code)]
pub(crate) const YYRETURN: i32 = 8;
#[allow(dead_code)]
pub(crate) fn recovering(&self) -> bool {
self.yyerrstatus_ == 0
}
fn yy_lr_goto_state(&self, yystate: i32, yysym: i32) -> i32 {
let idx = i32_to_usize(yysym - Self::YYNTOKENS_);
let yyr = Self::yypgoto_[idx] + yystate;
if 0 <= yyr && yyr <= Self::YYLAST_ {
let yyr = i32_to_usize(yyr);
if Self::yycheck_[yyr] == yystate {
return Self::yytable_[yyr];
}
}
Self::yydefgoto_[idx]
}
fn yyaction(&mut self, yyn: i32, yystack: &mut YYStack, yylen: &mut usize) -> Result<i32, ()> {
#[allow(unused_assignments)]
let mut yyval: YYValue = YYValue::Uninitialized;
let yyloc: YYLoc = make_yylloc(&yystack, *yylen);
self.yy_reduce_print(yyn, yystack);
match yyn {
2 =>
{
self.yylexer.lex_state.set(EXPR_BEG);
yyval = Value::None;
},
3 =>
{
let _trigger_locs = yystack.location_at (0);
self.result = MaybeNode::boxed_from(yystack.owned_value_at(0));
yyval = Value::None;
},
4 =>
{
yyval = Value::MaybeNode(
self.builder.compstmt( NodeList::boxed_from(yystack.owned_value_at(1)))
);
},
5 =>
{
yyval = Value::NodeList( vec![] );
},
6 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
7 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
8 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
9 =>
{
yyval = yystack.owned_value_at(0);
},
10 =>
{
let BeginBlock { begin_t, body, end_t } = BeginBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.preexe( Token::boxed_from(yystack.owned_value_at(1)), begin_t, body, end_t)
);
},
11 =>
{
yyval = Value::new_begin_block(
BeginBlock {
begin_t: Token::boxed_from(yystack.owned_value_at(2)),
body: MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
12 =>
{
let compound_stmt = MaybeBoxedNode::boxed_from(yystack.owned_value_at(4));
let rescue_bodies = NodeList::boxed_from(yystack.owned_value_at(3));
if rescue_bodies.is_empty() {
return self.yyerror(&yystack.location_at (2), DiagnosticMessage::ElseWithoutRescue);
}
let else_ = Some(( Token::boxed_from(yystack.owned_value_at(2)), MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)) ));
let ensure = OptEnsure::boxed_from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
yyval = Value::MaybeNode(
self.builder.begin_body(
compound_stmt,
rescue_bodies,
else_,
ensure
)
);
},
13 =>
{
let compound_stmt = MaybeBoxedNode::boxed_from(yystack.owned_value_at(2));
let rescue_bodies = NodeList::boxed_from(yystack.owned_value_at(1));
let ensure = OptEnsure::boxed_from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
yyval = Value::MaybeNode(
self.builder.begin_body(
compound_stmt,
rescue_bodies,
None,
ensure
)
);
},
14 =>
{
yyval = Value::MaybeNode(
self.builder.compstmt( NodeList::boxed_from(yystack.owned_value_at(1)))
);
},
15 =>
{
yyval = Value::NodeList( vec![] );
},
16 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
17 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
18 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
19 =>
{
yyval = yystack.owned_value_at(0);
},
20 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::BeginNotAtTopLevel);
},
21 =>
{
yyval = Value::None;
},
22 =>
{
self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
yyval = Value::None;
},
23 =>
{
yyval = Value::Node(
self.builder.alias( Token::boxed_from(yystack.owned_value_at(3)), BoxedNode::boxed_from(yystack.owned_value_at(2)), BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
},
24 =>
{
yyval = Value::Node(
self.builder.alias(
Token::boxed_from(yystack.owned_value_at(2)),
self.builder.gvar( Token::boxed_from(yystack.owned_value_at(1))),
self.builder.gvar( Token::boxed_from(yystack.owned_value_at(0))),
)
)
},
25 =>
{
yyval = Value::Node(
self.builder.alias(
Token::boxed_from(yystack.owned_value_at(2)),
self.builder.gvar( Token::boxed_from(yystack.owned_value_at(1))),
self.builder.back_ref( Token::boxed_from(yystack.owned_value_at(0))),
)
)
},
26 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::AliasNthRef);
},
27 =>
{
yyval = Value::Node(
self.builder.undef_method(
Token::boxed_from(yystack.owned_value_at(1)),
NodeList::boxed_from(yystack.owned_value_at(0))
)
)
},
28 =>
{
yyval = Value::Node(
self.builder.condition_mod(
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
None,
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0)),
)
);
},
29 =>
{
yyval = Value::Node(
self.builder.condition_mod(
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0)),
)
);
},
30 =>
{
yyval = Value::Node(
self.builder.loop_mod(
LoopType::While,
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0)),
)
);
},
31 =>
{
yyval = Value::Node(
self.builder.loop_mod(
LoopType::Until,
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0)),
)
);
},
32 =>
{
let rescue_body = self.builder.rescue_body(
Token::boxed_from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
vec![*rescue_body],
None,
None,
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
33 =>
{
if self.context.is_in_def() {
self.warn(&yystack.location_at (3), DiagnosticMessage::EndInMethod);
}
yyval = Value::Node(
self.builder.postexe(
Token::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0)),
)
);
},
34 =>
{
yyval = yystack.owned_value_at(0);
},
35 =>
{
let command_call = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&command_call)?;
yyval = Value::Node(
self.builder.multi_assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
command_call
)
);
},
36 =>
{
let mrhs = self.builder.array(
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
);
self.value_expr(&mrhs)?;
yyval = Value::Node(
self.builder.assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
mrhs
)
);
},
37 =>
{
let rescue_body = self.builder.rescue_body(
Token::boxed_from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
let mrhs_arg = BoxedNode::boxed_from(yystack.owned_value_at(2));
self.value_expr(&mrhs_arg)?;
let begin_body = self.builder.begin_body(
Some(mrhs_arg),
vec![ *rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)");
yyval = Value::Node(
self.builder.multi_assign(
BoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
begin_body
)
);
},
38 =>
{
yyval = Value::Node(
self.builder.multi_assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
39 =>
{
yyval = yystack.owned_value_at(0);
},
40 =>
{
yyval = Value::Node(
self.builder.assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
41 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
42 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.index(
BoxedNode::boxed_from(yystack.owned_value_at(5)),
Token::boxed_from(yystack.owned_value_at(4)),
NodeList::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2))
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
43 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
44 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
45 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_fetch(
BoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
46 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
47 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
48 =>
{
let command_call = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&command_call)?;
yyval = Value::Node(command_call);
},
49 =>
{
let command_call = BoxedNode::boxed_from(yystack.owned_value_at(2));
self.value_expr(&command_call)?;
let rescue_body = self.builder.rescue_body(
Token::boxed_from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some(command_call),
vec![ *rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
50 =>
{
yyval = yystack.owned_value_at(0);
},
51 =>
{
yyval = yystack.owned_value_at(0);
},
52 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::And,
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
53 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::Or,
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
54 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::boxed_from(yystack.owned_value_at(2)),
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0))),
None
)?
);
},
55 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::boxed_from(yystack.owned_value_at(1)),
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0))),
None
)?
);
},
56 =>
{
let arg = match yystack.borrow_value_at(1) {
Value::Node(node) => node,
other => unreachable!("expected Node, got {:?}", other)
};
self.value_expr(arg)?;
self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
self.yylexer.command_start = true;
self.pattern_variables.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
},
57 =>
{
self.pattern_variables.pop();
self.yylexer.in_kwarg = Bool::boxed_from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.in_match(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
58 =>
{
yyval = yystack.owned_value_at(0);
},
59 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.current_arg_stack.push(None);
yyval = yystack.owned_value_at(0);
},
60 =>
{
self.context.push_def();
yyval = Value::new_defn_head(
DefnHead {
def_t: Token::boxed_from(yystack.owned_value_at(1)),
name_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
61 =>
{
self.yylexer.lex_state.set(EXPR_FNAME);
yyval = Value::None;
},
62 =>
{
self.yylexer.lex_state.set(EXPR_ENDFN|EXPR_LABEL);
self.context.push_defs();
yyval = Value::new_defs_head(
DefsHead {
def_t: Token::boxed_from(yystack.owned_value_at(4)),
definee: BoxedNode::boxed_from(yystack.owned_value_at(3)),
dot_t: Token::boxed_from(yystack.owned_value_at(2)),
name_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
63 =>
{
let expr = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&expr)?;
yyval = Value::Node(expr);
},
64 =>
{
self.yylexer.cond.push(true);
yyval = Value::None;
},
65 =>
{
self.yylexer.cond.pop();
yyval = Value::new_expr_value_do(
ExprValueDo {
value: BoxedNode::boxed_from(yystack.owned_value_at(1)),
do_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
66 =>
{
yyval = yystack.owned_value_at(0);
},
67 =>
{
yyval = yystack.owned_value_at(0);
},
68 =>
{
yyval = yystack.owned_value_at(0);
},
69 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
70 =>
{
self.context.push_block();
yyval = Value::None;
},
71 =>
{
self.context.pop();
let BraceBody { args_type, body } = BraceBody::boxed_from(yystack.owned_value_at(1));
yyval = Value::new_cmd_brace_block(
CmdBraceBlock {
begin_t: Token::boxed_from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
72 =>
{
yyval = yystack.owned_value_at(0);
},
73 =>
{
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
74 =>
{
let method_call = self.builder.call_method(
None,
None,
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
NodeList::boxed_from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
75 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
76 =>
{
let method_call = self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
NodeList::boxed_from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
77 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
78 =>
{
let method_call = self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
NodeList::boxed_from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
79 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Super,
Token::boxed_from(yystack.owned_value_at(1)),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)?
);
},
80 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::boxed_from(yystack.owned_value_at(1)),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)?
);
},
81 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Return,
Token::boxed_from(yystack.owned_value_at(1)),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)?
);
},
82 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Break,
Token::boxed_from(yystack.owned_value_at(1)),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)?
);
},
83 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Next,
Token::boxed_from(yystack.owned_value_at(1)),
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)?
);
},
84 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
85 =>
{
yyval = Value::Node(
self.builder.begin(
Token::boxed_from(yystack.owned_value_at(2)),
Some( BoxedNode::boxed_from(yystack.owned_value_at(1))),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
86 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
87 =>
{
let mlhs_items: Vec<Node> = match Node::boxed_from(yystack.owned_value_at(1)) {
Node::Mlhs(mlhs) => mlhs.items,
other => unreachable!("unsupported mlhs item {:?}", other)
};
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::boxed_from(yystack.owned_value_at(2))),
mlhs_items,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
88 =>
{
yyval = yystack.owned_value_at(0);
},
89 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
90 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( *self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
91 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(4));
let mlhs_node = self.builder.splat( Token::boxed_from(yystack.owned_value_at(3)), Some( BoxedNode::boxed_from(yystack.owned_value_at(2))));
let mut mlhs_post = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(1 + mlhs_post.len());
nodes.push(*mlhs_node);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
92 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.push( *self.builder.splat( Token::boxed_from(yystack.owned_value_at(0)), None) );
yyval = Value::NodeList(nodes);
},
93 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let splat = self.builder.splat( Token::boxed_from(yystack.owned_value_at(2)), None);
let mut mlhs_post = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(1 + mlhs_post.len());
nodes.push(*splat);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
94 =>
{
yyval = Value::NodeList(vec![ *self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))) ]);
},
95 =>
{
let mut nodes;
let splat = self.builder.splat( Token::boxed_from(yystack.owned_value_at(3)), Some( BoxedNode::boxed_from(yystack.owned_value_at(2))));
let mut mlhs_post = NodeList::boxed_from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + mlhs_post.len());
nodes.push(*splat);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
96 =>
{
yyval = Value::NodeList(vec![ *self.builder.splat( Token::boxed_from(yystack.owned_value_at(0)), None) ]);
},
97 =>
{
let mut nodes;
let splat = self.builder.splat( Token::boxed_from(yystack.owned_value_at(2)), None);
let mut mlhs_post = NodeList::boxed_from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + mlhs_post.len());
nodes.push(*splat);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
98 =>
{
yyval = yystack.owned_value_at(0);
},
99 =>
{
yyval = Value::Node(
self.builder.begin(
Token::boxed_from(yystack.owned_value_at(2)),
Some( BoxedNode::boxed_from(yystack.owned_value_at(1))),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
100 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(1)) ]);
},
101 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(1)) );
yyval = Value::NodeList(nodes);
},
102 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
103 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
104 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
105 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
106 =>
{
yyval = Value::Node(
self.builder.index_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
NodeList::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
107 =>
{
let op_t = Token::boxed_from(yystack.owned_value_at(1));
if op_t.token_type == Lexer::tANDDOT {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn);
}
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
op_t,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
108 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
109 =>
{
let op_t = Token::boxed_from(yystack.owned_value_at(1));
if op_t.token_type == Lexer::tANDDOT {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn);
}
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
op_t,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
110 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_fetch(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
)?
);
},
111 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_global(
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
)?
);
},
112 =>
{
yyval = Value::Node(
self.builder.assignable(
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
113 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
114 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
115 =>
{
yyval = Value::Node(
self.builder.index_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
NodeList::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
)
},
116 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
117 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
118 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
119 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_fetch(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0)),
)
)?
);
},
120 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_global(
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0)),
)
)?
);
},
121 =>
{
yyval = Value::Node(
self.builder.assignable(
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
122 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::ClassOrModuleNameMustBeConstant);
},
123 =>
{
yyval = yystack.owned_value_at(0);
},
124 =>
{
yyval = Value::Node(
self.builder.const_global( Token::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
);
},
125 =>
{
yyval = Value::Node(
self.builder.const_( Token::boxed_from(yystack.owned_value_at(0)))
);
},
126 =>
{
yyval = Value::Node(
self.builder.const_fetch(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0)),
)
);
},
127 =>
{
yyval = yystack.owned_value_at(0);
},
128 =>
{
yyval = yystack.owned_value_at(0);
},
129 =>
{
yyval = yystack.owned_value_at(0);
},
130 =>
{
self.yylexer.lex_state.set(EXPR_ENDFN);
yyval = yystack.owned_value_at(0);
},
131 =>
{
yyval = yystack.owned_value_at(0);
},
132 =>
{
yyval = Value::Node(
self.builder.symbol_internal( Token::boxed_from(yystack.owned_value_at(0)))
);
},
133 =>
{
yyval = yystack.owned_value_at(0);
},
134 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
135 =>
{
self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
yyval = Value::None;
},
136 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
137 =>
{ yyval = yystack.owned_value_at(0); },
138 =>
{ yyval = yystack.owned_value_at(0); },
139 =>
{ yyval = yystack.owned_value_at(0); },
140 =>
{ yyval = yystack.owned_value_at(0); },
141 =>
{ yyval = yystack.owned_value_at(0); },
142 =>
{ yyval = yystack.owned_value_at(0); },
143 =>
{ yyval = yystack.owned_value_at(0); },
144 =>
{ yyval = yystack.owned_value_at(0); },
145 =>
{ yyval = yystack.owned_value_at(0); },
146 =>
{ yyval = yystack.owned_value_at(0); },
147 =>
{ yyval = yystack.owned_value_at(0); },
148 =>
{ yyval = yystack.owned_value_at(0); },
149 =>
{ yyval = yystack.owned_value_at(0); },
150 =>
{ yyval = yystack.owned_value_at(0); },
151 =>
{ yyval = yystack.owned_value_at(0); },
152 =>
{ yyval = yystack.owned_value_at(0); },
153 =>
{ yyval = yystack.owned_value_at(0); },
154 =>
{ yyval = yystack.owned_value_at(0); },
155 =>
{ yyval = yystack.owned_value_at(0); },
156 =>
{ yyval = yystack.owned_value_at(0); },
157 =>
{ yyval = yystack.owned_value_at(0); },
158 =>
{ yyval = yystack.owned_value_at(0); },
159 =>
{ yyval = yystack.owned_value_at(0); },
160 =>
{ yyval = yystack.owned_value_at(0); },
161 =>
{ yyval = yystack.owned_value_at(0); },
162 =>
{ yyval = yystack.owned_value_at(0); },
163 =>
{ yyval = yystack.owned_value_at(0); },
164 =>
{ yyval = yystack.owned_value_at(0); },
165 =>
{ yyval = yystack.owned_value_at(0); },
166 =>
{ yyval = yystack.owned_value_at(0); },
167 =>
{ yyval = yystack.owned_value_at(0); },
168 =>
{ yyval = yystack.owned_value_at(0); },
169 =>
{ yyval = yystack.owned_value_at(0); },
170 =>
{ yyval = yystack.owned_value_at(0); },
171 =>
{ yyval = yystack.owned_value_at(0); },
172 =>
{ yyval = yystack.owned_value_at(0); },
173 =>
{ yyval = yystack.owned_value_at(0); },
174 =>
{ yyval = yystack.owned_value_at(0); },
175 =>
{ yyval = yystack.owned_value_at(0); },
176 =>
{ yyval = yystack.owned_value_at(0); },
177 =>
{ yyval = yystack.owned_value_at(0); },
178 =>
{ yyval = yystack.owned_value_at(0); },
179 =>
{ yyval = yystack.owned_value_at(0); },
180 =>
{ yyval = yystack.owned_value_at(0); },
181 =>
{ yyval = yystack.owned_value_at(0); },
182 =>
{ yyval = yystack.owned_value_at(0); },
183 =>
{ yyval = yystack.owned_value_at(0); },
184 =>
{ yyval = yystack.owned_value_at(0); },
185 =>
{ yyval = yystack.owned_value_at(0); },
186 =>
{ yyval = yystack.owned_value_at(0); },
187 =>
{ yyval = yystack.owned_value_at(0); },
188 =>
{ yyval = yystack.owned_value_at(0); },
189 =>
{ yyval = yystack.owned_value_at(0); },
190 =>
{ yyval = yystack.owned_value_at(0); },
191 =>
{ yyval = yystack.owned_value_at(0); },
192 =>
{ yyval = yystack.owned_value_at(0); },
193 =>
{ yyval = yystack.owned_value_at(0); },
194 =>
{ yyval = yystack.owned_value_at(0); },
195 =>
{ yyval = yystack.owned_value_at(0); },
196 =>
{ yyval = yystack.owned_value_at(0); },
197 =>
{ yyval = yystack.owned_value_at(0); },
198 =>
{ yyval = yystack.owned_value_at(0); },
199 =>
{ yyval = yystack.owned_value_at(0); },
200 =>
{ yyval = yystack.owned_value_at(0); },
201 =>
{ yyval = yystack.owned_value_at(0); },
202 =>
{ yyval = yystack.owned_value_at(0); },
203 =>
{ yyval = yystack.owned_value_at(0); },
204 =>
{ yyval = yystack.owned_value_at(0); },
205 =>
{ yyval = yystack.owned_value_at(0); },
206 =>
{ yyval = yystack.owned_value_at(0); },
207 =>
{ yyval = yystack.owned_value_at(0); },
208 =>
{
yyval = Value::Node(
self.builder.assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
209 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
210 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.index(
BoxedNode::boxed_from(yystack.owned_value_at(5)),
Token::boxed_from(yystack.owned_value_at(4)),
NodeList::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2))
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
211 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
212 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
213 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
214 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_fetch(
BoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
215 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_global(
Token::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
216 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
217 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
218 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
219 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
220 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
221 =>
{
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
None,
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
222 =>
{
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
None,
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
223 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
224 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
225 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
226 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
227 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
228 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
229 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::boxed_from(yystack.owned_value_at(3)),
self.builder.binary_op(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
)?
);
},
230 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
231 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
232 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
233 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
234 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
235 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
236 =>
{
yyval = yystack.owned_value_at(0);
},
237 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
238 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
239 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
240 =>
{
yyval = Value::Node(
self.builder.match_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
241 =>
{
yyval = Value::Node(
self.builder.binary_op(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
242 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::boxed_from(yystack.owned_value_at(1)),
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0))),
None
)?
);
},
243 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
244 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
245 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
246 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::And,
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
247 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::Or,
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
248 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Defined,
Token::boxed_from(yystack.owned_value_at(2)),
None,
vec![ Node::boxed_from(yystack.owned_value_at(0)) ],
None
)?
);
},
249 =>
{
let expr = BoxedNode::boxed_from(yystack.owned_value_at(5));
self.value_expr(&expr)?;
yyval = Value::Node(
self.builder.ternary(
expr,
Token::boxed_from(yystack.owned_value_at(4)),
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
250 =>
{
let DefnHead { def_t, name_t } = DefnHead::boxed_from(yystack.owned_value_at(3));
self.validate_endless_method_name(&name_t)?;
yyval = Value::Node(
self.builder.def_endless_method(
def_t,
name_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
251 =>
{
let DefnHead { def_t, name_t } = DefnHead::boxed_from(yystack.owned_value_at(5));
self.validate_endless_method_name(&name_t)?;
let rescue_body = self.builder.rescue_body(
Token::boxed_from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
let method_body = self.builder.begin_body(
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
vec![ *rescue_body ],
None,
None
);
yyval = Value::Node(
self.builder.def_endless_method(
def_t,
name_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
method_body
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
252 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::boxed_from(yystack.owned_value_at(3));
self.validate_endless_method_name(&name_t)?;
yyval = Value::Node(
self.builder.def_endless_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
253 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::boxed_from(yystack.owned_value_at(5));
self.validate_endless_method_name(&name_t)?;
let rescue_body = self.builder.rescue_body(
Token::boxed_from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
let method_body = self.builder.begin_body(
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
vec![ *rescue_body ],
None,
None
);
yyval = Value::Node(
self.builder.def_endless_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
method_body
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
254 =>
{
yyval = yystack.owned_value_at(0);
},
255 =>
{
yyval = yystack.owned_value_at(0);
},
256 =>
{
yyval = yystack.owned_value_at(0);
},
257 =>
{
yyval = yystack.owned_value_at(0);
},
258 =>
{
yyval = yystack.owned_value_at(0);
},
259 =>
{
yyval = Value::Node(
self.builder.binary_op(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
260 =>
{
let op_t = Token::boxed_from(yystack.owned_value_at(1));
self.warn(&yystack.location_at (1), DiagnosticMessage::ComparisonAfterComparison(clone_value(&op_t)));
yyval = Value::Node(
self.builder.binary_op(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
op_t,
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
261 =>
{
let arg = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&arg)?;
yyval = Value::Node(arg);
},
262 =>
{
yyval = Value::NodeList( vec![] );
},
263 =>
{
yyval = yystack.owned_value_at(1);
},
264 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
nodes.push(
*self.builder.associate(None, NodeList::boxed_from(yystack.owned_value_at(1)), None)
);
yyval = Value::NodeList(nodes);
},
265 =>
{
yyval = Value::NodeList(
vec![
*self.builder.associate(None, NodeList::boxed_from(yystack.owned_value_at(1)), None)
]
);
},
266 =>
{
let arg = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&arg)?;
yyval = Value::Node(arg);
},
267 =>
{
let arg = BoxedNode::boxed_from(yystack.owned_value_at(2));
self.value_expr(&arg)?;
let rescue_body = self.builder.rescue_body(
Token::boxed_from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some(arg),
vec![ *rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
268 =>
{
yyval = Value::new_paren_args(
ParenArgs {
begin_t: Token::boxed_from(yystack.owned_value_at(2)),
args: NodeList::boxed_from(yystack.owned_value_at(1)),
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
269 =>
{
if !self.static_env.is_forward_args_declared() {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::UnexpectedToken("tBDOT3".to_owned()));
}
let mut args = NodeList::boxed_from(yystack.owned_value_at(3));
args.push(*self.builder.forwarded_args( Token::boxed_from(yystack.owned_value_at(1))));
yyval = Value::new_paren_args(
ParenArgs {
begin_t: Token::boxed_from(yystack.owned_value_at(4)),
args,
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
270 =>
{
if !self.static_env.is_forward_args_declared() {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::UnexpectedToken("tBDOT3".to_owned()));
}
yyval = Value::new_paren_args(
ParenArgs {
begin_t: Token::boxed_from(yystack.owned_value_at(2)),
args: vec![ *self.builder.forwarded_args( Token::boxed_from(yystack.owned_value_at(1))) ],
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
271 =>
{
yyval = Value::new_opt_paren_args(
OptParenArgs {
begin_t: None,
args: vec![],
end_t: None
}
);
},
272 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::new_opt_paren_args(
OptParenArgs {
begin_t: Some(begin_t),
args,
end_t: Some(end_t)
}
);
},
273 =>
{
yyval = Value::NodeList( vec![] );
},
274 =>
{
yyval = yystack.owned_value_at(0);
},
275 =>
{
yyval = yystack.owned_value_at(1);
},
276 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
nodes.push( *self.builder.associate(None, NodeList::boxed_from(yystack.owned_value_at(1)), None) );
yyval = Value::NodeList(nodes);
},
277 =>
{
yyval = Value::NodeList(
vec![
*self.builder.associate(None, NodeList::boxed_from(yystack.owned_value_at(1)), None)
]
);
},
278 =>
{
let command = Node::boxed_from(yystack.owned_value_at(0));
self.value_expr(&command)?;
yyval = Value::NodeList( vec![ command ] );
},
279 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
280 =>
{
let mut nodes;
let hash = self.builder.associate(None, NodeList::boxed_from(yystack.owned_value_at(1)), None);
let mut opt_block_arg = NodeList::boxed_from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + opt_block_arg.len());
nodes.push(*hash);
nodes.append(&mut opt_block_arg);
yyval = Value::NodeList(nodes);
},
281 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let hash = self.builder.associate(None, NodeList::boxed_from(yystack.owned_value_at(1)), None);
let mut opt_block_arg = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(1 + opt_block_arg.len());
nodes.push(*hash);
nodes.append(&mut opt_block_arg);
yyval = Value::NodeList(nodes);
},
282 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
283 =>
{
let lookahead =
matches!(
self.last_token.token_type,
Lexer::tLPAREN2
| Lexer::tLPAREN
| Lexer:: tLPAREN_ARG
| Lexer::tLBRACK2
| Lexer::tLBRACK
);
if lookahead { self.yylexer.cmdarg.pop() }
self.yylexer.cmdarg.push(true);
if lookahead { self.yylexer.cmdarg.push(false) }
yyval = Value::None;
},
284 =>
{
let lookahead = matches!(self.last_token.token_type, Lexer::tLBRACE_ARG);
if lookahead { self.yylexer.cmdarg.pop() }
self.yylexer.cmdarg.pop();
if lookahead { self.yylexer.cmdarg.push(false) }
yyval = yystack.owned_value_at(0);
},
285 =>
{
yyval = Value::Node(
self.builder.block_pass(
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
286 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
287 =>
{
yyval = Value::NodeList( vec![] );
},
288 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
289 =>
{
yyval = Value::NodeList(
vec![
*self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0))))
]
);
},
290 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
291 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
nodes.push( *self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
292 =>
{
yyval = Value::Node(
self.builder.array(None, NodeList::boxed_from(yystack.owned_value_at(0)), None)
);
},
293 =>
{
yyval = yystack.owned_value_at(0);
},
294 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
295 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
nodes.push(
*self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0))))
);
yyval = Value::NodeList(nodes);
},
296 =>
{
yyval = Value::NodeList(
vec![
*self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0))))
]
);
},
297 =>
{
yyval = yystack.owned_value_at(0);
},
298 =>
{
yyval = yystack.owned_value_at(0);
},
299 =>
{
yyval = yystack.owned_value_at(0);
},
300 =>
{
yyval = yystack.owned_value_at(0);
},
301 =>
{
yyval = yystack.owned_value_at(0);
},
302 =>
{
yyval = yystack.owned_value_at(0);
},
303 =>
{
yyval = yystack.owned_value_at(0);
},
304 =>
{
yyval = yystack.owned_value_at(0);
},
305 =>
{
yyval = yystack.owned_value_at(0);
},
306 =>
{
yyval = yystack.owned_value_at(0);
},
307 =>
{
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::boxed_from(yystack.owned_value_at(0))),
None,
vec![],
None
)
);
},
308 =>
{
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
309 =>
{
self.yylexer.cmdarg.pop();
yyval = Value::Node(
self.builder.begin_keyword( Token::boxed_from(yystack.owned_value_at(3)), MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
);
},
310 =>
{ self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
311 =>
{
yyval = Value::Node(
self.builder.begin(
Token::boxed_from(yystack.owned_value_at(2)),
None,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
312 =>
{ self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
313 =>
{
yyval = Value::Node(
self.builder.begin(
Token::boxed_from(yystack.owned_value_at(3)),
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
314 =>
{
yyval = Value::Node(
self.builder.begin(
Token::boxed_from(yystack.owned_value_at(2)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
315 =>
{
yyval = Value::Node(
self.builder.const_fetch(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0)),
)
);
},
316 =>
{
yyval = Value::Node(
self.builder.const_global( Token::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
);
},
317 =>
{
yyval = Value::Node(
self.builder.array(
Some( Token::boxed_from(yystack.owned_value_at(2))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
318 =>
{
yyval = Value::Node(
self.builder.associate(
Some( Token::boxed_from(yystack.owned_value_at(2))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
319 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Return,
Token::boxed_from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
320 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::boxed_from(yystack.owned_value_at(3)),
Some( Token::boxed_from(yystack.owned_value_at(2))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)?
);
},
321 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::boxed_from(yystack.owned_value_at(2)),
Some( Token::boxed_from(yystack.owned_value_at(1))),
vec![],
Some( Token::boxed_from(yystack.owned_value_at(0)))
)?
);
},
322 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::boxed_from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
323 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Defined,
Token::boxed_from(yystack.owned_value_at(4)),
Some( Token::boxed_from(yystack.owned_value_at(2))),
vec![ Node::boxed_from(yystack.owned_value_at(1)) ],
Some( Token::boxed_from(yystack.owned_value_at(0)))
)?
);
},
324 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::boxed_from(yystack.owned_value_at(3)),
Some( Token::boxed_from(yystack.owned_value_at(2))),
Some( BoxedNode::boxed_from(yystack.owned_value_at(1))),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)?
);
},
325 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::boxed_from(yystack.owned_value_at(2)),
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)?
);
},
326 =>
{
let method_call = self.builder.call_method(
None,
None,
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
vec![],
None
);
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
327 =>
{
yyval = yystack.owned_value_at(0);
},
328 =>
{
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
BoxedNode::boxed_from(yystack.owned_value_at(1)),
begin_t,
args_type,
body,
end_t
)?
);
},
329 =>
{
yyval = yystack.owned_value_at(0);
},
330 =>
{
let IfTail { keyword_t, body: else_body } = IfTail::boxed_from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.condition(
Token::boxed_from(yystack.owned_value_at(5)),
BoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(2)),
keyword_t,
else_body,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
331 =>
{
let (else_t, body) = OptElse::boxed_from(yystack.owned_value_at(1)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.condition(
Token::boxed_from(yystack.owned_value_at(5)),
BoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
body,
else_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(2)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
332 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::boxed_from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.loop_(
LoopType::While,
Token::boxed_from(yystack.owned_value_at(3)),
value,
do_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
333 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::boxed_from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.loop_(
LoopType::Until,
Token::boxed_from(yystack.owned_value_at(3)),
value,
do_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
334 =>
{
yyval = Value::None;
},
335 =>
{
let CaseBody { when_bodies, opt_else } = CaseBody::boxed_from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case(
Token::boxed_from(yystack.owned_value_at(5)),
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
when_bodies,
else_t,
else_body,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
336 =>
{
yyval = Value::None;
},
337 =>
{
let CaseBody { when_bodies, opt_else } = CaseBody::boxed_from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case(
Token::boxed_from(yystack.owned_value_at(4)),
None,
when_bodies,
else_t,
else_body,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
338 =>
{
let PCaseBody { in_bodies, opt_else } = PCaseBody::boxed_from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case_match(
Token::boxed_from(yystack.owned_value_at(4)),
BoxedNode::boxed_from(yystack.owned_value_at(3)),
in_bodies,
else_t,
else_body,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
339 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::boxed_from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.for_(
Token::boxed_from(yystack.owned_value_at(5)),
BoxedNode::boxed_from(yystack.owned_value_at(4)),
Token::boxed_from(yystack.owned_value_at(3)),
value,
do_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
340 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.context.push_class();
yyval = Value::None;
},
341 =>
{
if !self.context.is_class_definition_allowed() {
return self.yyerror(&yystack.location_at (5), DiagnosticMessage::ClassDefinitionInMethodBody);
}
let Superclass { lt_t, value } = Superclass::boxed_from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_class(
Token::boxed_from(yystack.owned_value_at(5)),
BoxedNode::boxed_from(yystack.owned_value_at(4)),
lt_t,
value,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
},
342 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.context.push_sclass();
yyval = Value::None;
},
343 =>
{
yyval = Value::Node(
self.builder.def_sclass(
Token::boxed_from(yystack.owned_value_at(6)),
Token::boxed_from(yystack.owned_value_at(5)),
BoxedNode::boxed_from(yystack.owned_value_at(4)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
},
344 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.context.push_module();
yyval = Value::None;
},
345 =>
{
if !self.context.is_module_definition_allowed() {
return self.yyerror(&yystack.location_at (4), DiagnosticMessage::ModuleDefinitionInMethodBody);
}
yyval = Value::Node(
self.builder.def_module(
Token::boxed_from(yystack.owned_value_at(4)),
BoxedNode::boxed_from(yystack.owned_value_at(3)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.static_env.unextend();
self.context.pop();
},
346 =>
{
let DefnHead { def_t, name_t } = DefnHead::boxed_from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_method(
def_t,
name_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(2)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
347 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::boxed_from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeBoxedNode::boxed_from(yystack.owned_value_at(2)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
348 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Break,
Token::boxed_from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
349 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Next,
Token::boxed_from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
350 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Redo,
Token::boxed_from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
351 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Retry,
Token::boxed_from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
352 =>
{
let primary = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&primary)?;
yyval = Value::Node(primary);
},
353 =>
{
yyval = yystack.owned_value_at(0);
},
354 =>
{
self.warn_eol(&yystack.location_at (0), "if");
yyval = yystack.owned_value_at(0);
},
355 =>
{
yyval = yystack.owned_value_at(0);
},
356 =>
{
yyval = yystack.owned_value_at(0);
},
357 =>
{
yyval = yystack.owned_value_at(0);
},
358 =>
{
yyval = yystack.owned_value_at(0);
},
359 =>
{
yyval = yystack.owned_value_at(0);
},
360 =>
{
yyval = yystack.owned_value_at(0);
},
361 =>
{
yyval = yystack.owned_value_at(0);
},
362 =>
{
yyval = yystack.owned_value_at(0);
},
363 =>
{
yyval = yystack.owned_value_at(0);
},
364 =>
{
yyval = yystack.owned_value_at(0);
},
365 =>
{
yyval = yystack.owned_value_at(0);
},
366 =>
{
yyval = yystack.owned_value_at(0);
},
367 =>
{
yyval = yystack.owned_value_at(0);
},
368 =>
{
yyval = yystack.owned_value_at(0);
},
369 =>
{
self.warn_eol(&yystack.location_at (0), "elsif");
yyval = yystack.owned_value_at(0);
},
370 =>
{
yyval = yystack.owned_value_at(0);
},
371 =>
{
if self.context.is_in_class() {
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::InvalidReturnInClassOrModuleBody);
}
yyval = yystack.owned_value_at(0);
},
372 =>
{
yyval = yystack.owned_value_at(0);
},
373 =>
{
yyval = yystack.owned_value_at(0);
},
374 =>
{
yyval = yystack.owned_value_at(0);
},
375 =>
{
yyval = yystack.owned_value_at(0);
},
376 =>
{
yyval = yystack.owned_value_at(0);
},
377 =>
{
let (keyword_t, body) = OptElse::boxed_from(yystack.owned_value_at(0)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::new_if_tail(IfTail { keyword_t, body });
},
378 =>
{
let IfTail { keyword_t, body: else_body } = IfTail::boxed_from(yystack.owned_value_at(0));
let elsif_t = Token::boxed_from(yystack.owned_value_at(4));
yyval = Value::new_if_tail(
IfTail {
keyword_t: Some(elsif_t.clone()),
body: Some(
self.builder.condition(
elsif_t,
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
keyword_t,
else_body,
None
)
)
}
);
},
379 =>
{
yyval = Value::new_opt_else(None);
},
380 =>
{
let else_t = Token::boxed_from(yystack.owned_value_at(1));
let body = MaybeBoxedNode::boxed_from(yystack.owned_value_at(0));
yyval = Value::new_opt_else(Some(Else { else_t, body }));
},
381 =>
{
yyval = yystack.owned_value_at(0);
},
382 =>
{
yyval = yystack.owned_value_at(0);
},
383 =>
{
yyval = Value::Node(
self.builder.arg( Token::boxed_from(yystack.owned_value_at(0)))?
);
},
384 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::boxed_from(yystack.owned_value_at(2))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
385 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
386 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
387 =>
{
yyval = yystack.owned_value_at(0);
},
388 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
389 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(4));
let f_rest_marg = Node::boxed_from(yystack.owned_value_at(2));
let mut f_marg_list = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(1 + f_marg_list.len());
nodes.push(f_rest_marg);
nodes.append(&mut f_marg_list);
yyval = Value::NodeList(nodes);
},
390 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
391 =>
{
let mut nodes;
let f_rest_marg = Node::boxed_from(yystack.owned_value_at(2));
let mut f_marg_list = NodeList::boxed_from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + f_marg_list.len());
nodes.push(f_rest_marg);
nodes.append(&mut f_marg_list);
yyval = Value::NodeList(nodes);
},
392 =>
{
yyval = Value::Node(
self.builder.restarg( Token::boxed_from(yystack.owned_value_at(1)), Some( Token::boxed_from(yystack.owned_value_at(0))))?
);
},
393 =>
{
yyval = Value::Node(
self.builder.restarg( Token::boxed_from(yystack.owned_value_at(0)), None)?
);
},
394 =>
{
yyval = yystack.owned_value_at(0);
},
395 =>
{
yyval = yystack.owned_value_at(0);
},
396 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_kwrest = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_f_block_arg = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
nodes.append(&mut f_kwrest);
nodes.append(&mut opt_f_block_arg);
yyval = Value::NodeList(nodes);
},
397 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
398 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
399 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
400 =>
{
yyval = yystack.owned_value_at(0);
},
401 =>
{
yyval = Value::NodeList( vec![] );
},
402 =>
{
yyval = yystack.owned_value_at(0);
},
403 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_block_optarg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
404 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(7));
let mut f_block_optarg = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
405 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_block_optarg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
406 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_block_optarg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
407 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
408 =>
{
yyval = yystack.owned_value_at(1);
},
409 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
410 =>
{
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
let mut nodes: Vec<Node>;
if opt_block_args_tail.is_empty() && f_arg.len() == 1 {
nodes = vec![ *self.builder.procarg0(Box::new(f_arg.pop().expect("f_arg is non empty"))) ];
} else {
nodes = f_arg;
nodes.append(&mut opt_block_args_tail);
}
yyval = Value::NodeList(nodes);
},
411 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
412 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
413 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
414 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
415 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
416 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
417 =>
{
yyval = yystack.owned_value_at(0);
},
418 =>
{
yyval = Value::MaybeNode(
self.builder.args(None, vec![], None)
);
},
419 =>
{
self.yylexer.command_start = true;
yyval = yystack.owned_value_at(0);
},
420 =>
{
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(None);
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::boxed_from(yystack.owned_value_at(2))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
421 =>
{
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(None);
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(1)));
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::boxed_from(yystack.owned_value_at(3))),
nodes,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
422 =>
{
yyval = Value::NodeList( vec![] );
},
423 =>
{
yyval = yystack.owned_value_at(1);
},
424 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
425 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
426 =>
{
let ident_t = Token::boxed_from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::Node(
self.builder.shadowarg(ident_t)?
);
},
427 =>
{
yyval = Value::None;
},
428 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
self.context.push_lambda();
yyval = Value::Num(self.yylexer.lpar_beg);
self.yylexer.lpar_beg = self.yylexer.paren_nest;
},
429 =>
{
self.context.pop();
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
430 =>
{
self.yylexer.lpar_beg = Num::boxed_from(yystack.owned_value_at(3));
let lambda_call = self.builder.call_lambda( Token::boxed_from(yystack.owned_value_at(4)));
let args = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeBoxedNode::boxed_from(yystack.owned_value_at(2)))
};
let LambdaBody { begin_t, body, end_t } = LambdaBody::boxed_from(yystack.owned_value_at(0));
self.max_numparam_stack.pop();
self.static_env.unextend();
self.yylexer.cmdarg.pop();
yyval = Value::Node(
self.builder.block(
lambda_call,
begin_t,
args,
body,
end_t
)?
);
},
431 =>
{
self.max_numparam_stack.set_has_ordinary_params();
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(1)));
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::boxed_from(yystack.owned_value_at(3))),
nodes,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
432 =>
{
let args = NodeList::boxed_from(yystack.owned_value_at(0));
if !args.is_empty() {
self.max_numparam_stack.set_has_ordinary_params();
}
yyval = Value::MaybeNode(
self.builder.args(None, args, None)
);
},
433 =>
{
self.context.push_lambda();
yyval = Value::None;
},
434 =>
{
self.context.pop();
yyval = Value::new_lambda_body(
LambdaBody {
begin_t: Token::boxed_from(yystack.owned_value_at(3)),
body: MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
435 =>
{
self.context.push_lambda();
yyval = Value::None;
},
436 =>
{
self.context.pop();
yyval = Value::new_lambda_body(
LambdaBody {
begin_t: Token::boxed_from(yystack.owned_value_at(3)),
body: MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
437 =>
{
self.context.push_block();
yyval = Value::None;
},
438 =>
{
let DoBody { args_type, body } = DoBody::boxed_from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::new_do_block(
DoBlock {
begin_t: Token::boxed_from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
439 =>
{
let DoBlock { begin_t, args_type, body, end_t } = DoBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
BoxedNode::boxed_from(yystack.owned_value_at(1)),
begin_t,
args_type,
body,
end_t
)?
);
},
440 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
begin_t,
args,
end_t
)
);
},
441 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::boxed_from(yystack.owned_value_at(1));
let method_call = self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
begin_t,
args,
end_t
);
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
442 =>
{
let method_call = self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(4))),
Some( Token::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
None,
NodeList::boxed_from(yystack.owned_value_at(1)),
None
);
let DoBlock { begin_t, args_type, body, end_t } = DoBlock::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
443 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::boxed_from(yystack.owned_value_at(1))),
Some(begin_t),
args,
Some(end_t)
)
);
},
444 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
begin_t,
args,
end_t
)
);
},
445 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(3))),
Some( Token::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
Some(begin_t),
args,
Some(end_t)
)
);
},
446 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
Some( Token::boxed_from(yystack.owned_value_at(0))),
None,
vec![],
None
)
);
},
447 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
Some(begin_t),
args,
Some(end_t)
)
);
},
448 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::boxed_from(yystack.owned_value_at(2))),
Some( Token::boxed_from(yystack.owned_value_at(1))),
None,
Some(begin_t),
args,
Some(end_t)
)
);
},
449 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::boxed_from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Super,
Token::boxed_from(yystack.owned_value_at(1)),
Some(begin_t),
args,
Some(end_t)
)?
);
},
450 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Zsuper,
Token::boxed_from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
451 =>
{
yyval = Value::Node(
self.builder.index(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
NodeList::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
452 =>
{
self.context.push_block();
yyval = Value::None;
},
453 =>
{
let BraceBody { args_type, body } = BraceBody::boxed_from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::new_brace_block(
BraceBlock {
begin_t: Token::boxed_from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
454 =>
{
self.context.push_block();
yyval = Value::None;
},
455 =>
{
let DoBody { args_type, body } = DoBody::boxed_from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::new_brace_block(
BraceBlock {
begin_t: Token::boxed_from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::boxed_from(yystack.owned_value_at(0))
}
);
},
456 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
yyval = Value::None;
},
457 =>
{
let args_type = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)))
};
self.max_numparam_stack.pop();
self.static_env.unextend();
yyval = Value::new_brace_body(
BraceBody {
args_type,
body: MaybeBoxedNode::boxed_from(yystack.owned_value_at(0))
}
);
},
458 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
459 =>
{
let args_type = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)))
};
self.max_numparam_stack.pop();
self.static_env.unextend();
self.yylexer.cmdarg.pop();
yyval = Value::new_do_body(
DoBody { args_type, body: MaybeBoxedNode::boxed_from(yystack.owned_value_at(0)) }
);
},
460 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
461 =>
{
yyval = Value::NodeList(
vec![
*self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0))))
]
);
},
462 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
463 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
nodes.push( *self.builder.splat( Token::boxed_from(yystack.owned_value_at(1)), Some( BoxedNode::boxed_from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
464 =>
{
let when = *self.builder.when( Token::boxed_from(yystack.owned_value_at(4)), NodeList::boxed_from(yystack.owned_value_at(3)), Token::boxed_from(yystack.owned_value_at(2)), MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)));
let Cases { mut when_bodies, opt_else } = Cases::boxed_from(yystack.owned_value_at(0));
let mut nodes = Vec::with_capacity(1 + when_bodies.len());
nodes.push(when);
nodes.append(&mut when_bodies);
yyval = Value::new_case_body(CaseBody { when_bodies: nodes, opt_else });
},
465 =>
{
yyval = Value::new_cases(Cases { when_bodies: vec![], opt_else: OptElse::boxed_from(yystack.owned_value_at(0)) });
},
466 =>
{
let CaseBody { when_bodies, .. } = CaseBody::boxed_from(yystack.owned_value_at(0));
yyval = Value::new_cases(Cases { when_bodies, opt_else: None });
},
467 =>
{
self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
self.yylexer.command_start = false;
self.pattern_variables.push();
self.pattern_hash_keys.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
},
468 =>
{
self.yylexer.in_kwarg = Bool::boxed_from(yystack.owned_value_at(2));
yyval = Value::None;
},
469 =>
{
let PCases { mut in_bodies, opt_else } = PCases::boxed_from(yystack.owned_value_at(0));
let PTopExpr { pattern, guard } = PTopExpr::boxed_from(yystack.owned_value_at(4));
let mut nodes = Vec::with_capacity(1 + in_bodies.len());
nodes.push(
*self.builder.in_pattern(
Token::boxed_from(yystack.owned_value_at(6)),
pattern,
guard,
Token::boxed_from(yystack.owned_value_at(3)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1))
)
);
nodes.append(&mut in_bodies);
yyval = Value::new_p_case_body(PCaseBody { in_bodies: nodes, opt_else });
},
470 =>
{
yyval = Value::new_p_cases(PCases { in_bodies: vec![], opt_else: OptElse::boxed_from(yystack.owned_value_at(0)) });
},
471 =>
{
let PCaseBody { in_bodies, .. } = PCaseBody::boxed_from(yystack.owned_value_at(0));
yyval = Value::new_p_cases(PCases { in_bodies, opt_else: None });
},
472 =>
{
yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::boxed_from(yystack.owned_value_at(0)), guard: None });
},
473 =>
{
let guard = self.builder.if_guard( Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)));
yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::boxed_from(yystack.owned_value_at(2)), guard: Some(guard) });
},
474 =>
{
let guard = self.builder.unless_guard( Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)));
yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::boxed_from(yystack.owned_value_at(2)), guard: Some(guard) });
},
475 =>
{
yyval = yystack.owned_value_at(0);
},
476 =>
{
yyval = Value::Node(
self.builder.array_pattern(
None,
vec![ Node::boxed_from(yystack.owned_value_at(1)) ],
Some( Token::boxed_from(yystack.owned_value_at(0))),
None
)
);
},
477 =>
{
let MatchPatternWithTrailingComma { mut elements, trailing_comma } = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(0));
let mut nodes = Vec::with_capacity(1 + elements.len());
nodes.push( Node::boxed_from(yystack.owned_value_at(2)));
nodes.append(&mut elements);
yyval = Value::Node(
self.builder.array_pattern(None, nodes, trailing_comma, None)
);
},
478 =>
{
yyval = Value::Node(
self.builder.find_pattern(None, NodeList::boxed_from(yystack.owned_value_at(0)), None)
);
},
479 =>
{
yyval = Value::Node(
self.builder.array_pattern(None, NodeList::boxed_from(yystack.owned_value_at(0)), None, None)
);
},
480 =>
{
yyval = Value::Node(
self.builder.hash_pattern(None, NodeList::boxed_from(yystack.owned_value_at(0)), None)
);
},
481 =>
{
yyval = yystack.owned_value_at(0);
},
482 =>
{
yyval = Value::Node(
self.builder.match_as(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
483 =>
{
yyval = yystack.owned_value_at(0);
},
484 =>
{
yyval = Value::Node(
self.builder.match_alt(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
485 =>
{
yyval = yystack.owned_value_at(0);
},
486 =>
{
yyval = yystack.owned_value_at(0);
self.pattern_hash_keys.push();
},
487 =>
{
yyval = yystack.owned_value_at(0);
self.pattern_hash_keys.push();
},
488 =>
{
yyval = yystack.owned_value_at(0);
},
489 =>
{
self.pattern_hash_keys.pop();
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(1));
let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
pattern,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
490 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.find_pattern(None, NodeList::boxed_from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
pattern,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
491 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.hash_pattern(None, NodeList::boxed_from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
pattern,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
492 =>
{
let lparen = Token::boxed_from(yystack.owned_value_at(1));
let rparen = Token::boxed_from(yystack.owned_value_at(0));
let pattern = self.builder.array_pattern(Some(lparen.clone()), vec![], None, Some(rparen.clone()));
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
lparen,
pattern,
rparen
)
);
},
493 =>
{
self.pattern_hash_keys.pop();
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(1));
let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
pattern,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
494 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.find_pattern(None, NodeList::boxed_from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
pattern,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
495 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.hash_pattern(None, NodeList::boxed_from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(3)),
Token::boxed_from(yystack.owned_value_at(2)),
pattern,
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
496 =>
{
let lparen = Token::boxed_from(yystack.owned_value_at(1));
let rparen = Token::boxed_from(yystack.owned_value_at(0));
let pattern = self.builder.array_pattern(Some(lparen.clone()), vec![], None, Some(rparen.clone()));
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
lparen,
pattern,
rparen
)
);
},
497 =>
{
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.array_pattern(
Some( Token::boxed_from(yystack.owned_value_at(2))),
elements,
trailing_comma,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
498 =>
{
yyval = Value::Node(
self.builder.find_pattern(
Some( Token::boxed_from(yystack.owned_value_at(2))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
499 =>
{
yyval = Value::Node(
self.builder.array_pattern(
Some( Token::boxed_from(yystack.owned_value_at(1))),
vec![],
None,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
500 =>
{
self.pattern_hash_keys.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = false;
},
501 =>
{
self.pattern_hash_keys.pop();
self.yylexer.in_kwarg = Bool::boxed_from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.hash_pattern(
Some( Token::boxed_from(yystack.owned_value_at(3))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
502 =>
{
yyval = Value::Node(
self.builder.hash_pattern(
Some( Token::boxed_from(yystack.owned_value_at(1))),
vec![],
Some( Token::boxed_from(yystack.owned_value_at(0))),
)
);
},
503 =>
{
self.pattern_hash_keys.push();
yyval = Value::None;
},
504 =>
{
self.pattern_hash_keys.pop();
yyval = Value::Node(
self.builder.begin(
Token::boxed_from(yystack.owned_value_at(3)),
Some( BoxedNode::boxed_from(yystack.owned_value_at(1))),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
505 =>
{
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements: vec![ Node::boxed_from(yystack.owned_value_at(0)) ],
trailing_comma: None
}
);
},
506 =>
{
yyval = yystack.owned_value_at(0);
},
507 =>
{
let mut elements = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(1)).elements;
elements.push( Node::boxed_from(yystack.owned_value_at(0)));
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
508 =>
{
let match_rest = self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(1)), Some( Token::boxed_from(yystack.owned_value_at(0))))?;
let mut elements = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(2)).elements;
elements.push(*match_rest);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
509 =>
{
let match_rest = self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(3)), Some( Token::boxed_from(yystack.owned_value_at(2))))?;
let mut elements = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(4)).elements;
let mut p_args_post = NodeList::boxed_from(yystack.owned_value_at(0));
elements.reserve(1 + p_args_post.len());
elements.push(*match_rest);
elements.append(&mut p_args_post);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
510 =>
{
let match_rest = self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(0)), None)?;
let mut elements = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(1)).elements;
elements.push(*match_rest);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
511 =>
{
let match_rest = self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(2)), None)?;
let mut elements = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(3)).elements;
let mut p_args_post = NodeList::boxed_from(yystack.owned_value_at(0));
elements.push(*match_rest);
elements.append(&mut p_args_post);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
512 =>
{
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements: NodeList::boxed_from(yystack.owned_value_at(0)),
trailing_comma: None
}
);
},
513 =>
{
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements: vec![ Node::boxed_from(yystack.owned_value_at(1))],
trailing_comma: Some( Token::boxed_from(yystack.owned_value_at(0))),
}
);
},
514 =>
{
let mut elements = MatchPatternWithTrailingComma::boxed_from(yystack.owned_value_at(2)).elements;
elements.push( Node::boxed_from(yystack.owned_value_at(1)));
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: Some( Token::boxed_from(yystack.owned_value_at(0))),
}
);
},
515 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
516 =>
{
let mut nodes;
let mut p_args_post = NodeList::boxed_from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + p_args_post.len());
nodes.push( Node::boxed_from(yystack.owned_value_at(2)));
nodes.append(&mut p_args_post);
yyval = Value::NodeList(nodes);
},
517 =>
{
let mut nodes;
let mut p_args_post = NodeList::boxed_from(yystack.owned_value_at(2));
nodes = Vec::with_capacity(1 + p_args_post.len() + 1);
nodes.push( Node::boxed_from(yystack.owned_value_at(4)));
nodes.append(&mut p_args_post);
nodes.push( Node::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
518 =>
{
yyval = Value::Node(
self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(1)), Some( Token::boxed_from(yystack.owned_value_at(0))))?
);
},
519 =>
{
yyval = Value::Node(
self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(0)), None)?
);
},
520 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
521 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
522 =>
{
yyval = yystack.owned_value_at(0);
},
523 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
524 =>
{
yyval = yystack.owned_value_at(0);
},
525 =>
{
yyval = yystack.owned_value_at(1);
},
526 =>
{
yyval = yystack.owned_value_at(0);
},
527 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
528 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
529 =>
{
yyval = Value::Node(
self.builder.match_pair(
PKwLabel::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
530 =>
{
yyval = Value::Node(
self.builder.match_label(
PKwLabel::boxed_from(yystack.owned_value_at(0)),
)?
);
},
531 =>
{
yyval = Value::new_p_kw_label(
PKwLabel::PlainLabel( Token::boxed_from(yystack.owned_value_at(0)))
);
},
532 =>
{
yyval = Value::new_p_kw_label(
PKwLabel::QuotedLabel( ( Token::boxed_from(yystack.owned_value_at(2)), NodeList::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0))) )
);
},
533 =>
{
yyval = Value::NodeList(
vec![
*self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(1)), Some( Token::boxed_from(yystack.owned_value_at(0))))?
]
);
},
534 =>
{
yyval = Value::NodeList(
vec![
*self.builder.match_rest( Token::boxed_from(yystack.owned_value_at(0)), None)?
]
);
},
535 =>
{
yyval = Value::NodeList(
vec![
*self.builder.match_nil_pattern( Token::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
]
);
},
536 =>
{
yyval = yystack.owned_value_at(0);
},
537 =>
{
yyval = yystack.owned_value_at(0);
},
538 =>
{
yyval = yystack.owned_value_at(0);
},
539 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
540 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
541 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
542 =>
{
let left = BoxedNode::boxed_from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
543 =>
{
yyval = yystack.owned_value_at(0);
},
544 =>
{
yyval = yystack.owned_value_at(0);
},
545 =>
{
yyval = yystack.owned_value_at(0);
},
546 =>
{
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
None,
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
547 =>
{
let right = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
None,
Token::boxed_from(yystack.owned_value_at(1)),
Some(right)
)
);
},
548 =>
{
yyval = yystack.owned_value_at(0);
},
549 =>
{
yyval = yystack.owned_value_at(0);
},
550 =>
{
yyval = yystack.owned_value_at(0);
},
551 =>
{
yyval = yystack.owned_value_at(0);
},
552 =>
{
yyval = yystack.owned_value_at(0);
},
553 =>
{
yyval = yystack.owned_value_at(0);
},
554 =>
{
yyval = yystack.owned_value_at(0);
},
555 =>
{
yyval = yystack.owned_value_at(0);
},
556 =>
{
yyval = Value::Node(
self.builder.accessible( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
},
557 =>
{
yyval = yystack.owned_value_at(0);
},
558 =>
{
yyval = Value::Node(
self.builder.match_var( Token::boxed_from(yystack.owned_value_at(0)))?
);
},
559 =>
{
let ident_t = Token::boxed_from(yystack.owned_value_at(0));
let name = clone_value(&ident_t);
if !self.static_env.is_declared(&name) {
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::NoSuchLocalVariable(name));
}
let lvar = self.builder.accessible(self.builder.lvar(ident_t));
yyval = Value::Node(
self.builder.pin( Token::boxed_from(yystack.owned_value_at(1)), lvar)
);
},
560 =>
{
yyval = Value::Node(
self.builder.const_global( Token::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
);
},
561 =>
{
yyval = Value::Node(
self.builder.const_fetch(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0)),
)
);
},
562 =>
{
yyval = Value::Node(self.builder.const_( Token::boxed_from(yystack.owned_value_at(0))));
},
563 =>
{
let ExcVar { assoc_t, exc_var } = ExcVar::boxed_from(yystack.owned_value_at(3));
let exc_list = NodeList::boxed_from(yystack.owned_value_at(4));
let exc_list = if exc_list.is_empty() {
None
} else {
Some(self.builder.array(None, exc_list, None))
};
let rescue_body = self.builder.rescue_body(
Token::boxed_from(yystack.owned_value_at(5)),
exc_list,
assoc_t,
exc_var,
Some( Token::boxed_from(yystack.owned_value_at(2))),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1))
);
let mut nodes;
let mut opt_rescue = NodeList::boxed_from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + opt_rescue.len());
nodes.push(*rescue_body);
nodes.append(&mut opt_rescue);
yyval = Value::NodeList(nodes);
},
564 =>
{
yyval = Value::NodeList( vec![] );
},
565 =>
{
yyval = Value::NodeList(vec![ Node::boxed_from(yystack.owned_value_at(0)) ]);
},
566 =>
{
yyval = yystack.owned_value_at(0);
},
567 =>
{
yyval = Value::NodeList( vec![] );
},
568 =>
{
let assoc_t = Some( Token::boxed_from(yystack.owned_value_at(1)));
let exc_var = Some( BoxedNode::boxed_from(yystack.owned_value_at(0)));
yyval = Value::new_exc_var(ExcVar { assoc_t, exc_var });
},
569 =>
{
yyval = Value::new_exc_var(ExcVar { assoc_t: None, exc_var: None });
},
570 =>
{
let ensure_t = Token::boxed_from(yystack.owned_value_at(1));
let body = MaybeBoxedNode::boxed_from(yystack.owned_value_at(0));
yyval = Value::new_opt_ensure(Some(Ensure { ensure_t, body }));
},
571 =>
{
yyval = Value::new_opt_ensure(None);
},
572 =>
{
yyval = yystack.owned_value_at(0);
},
573 =>
{
yyval = yystack.owned_value_at(0);
},
574 =>
{
yyval = Value::Node(
self.builder.string_compose(
None,
NodeList::boxed_from(yystack.owned_value_at(0)),
None
)
);
},
575 =>
{
yyval = Value::NodeList(
vec![
*self.builder.character( Token::boxed_from(yystack.owned_value_at(0)))
]
);
},
576 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
577 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
578 =>
{
let mut string = self.builder.string_compose(Some( Token::boxed_from(yystack.owned_value_at(2))), NodeList::boxed_from(yystack.owned_value_at(1)), Some( Token::boxed_from(yystack.owned_value_at(0))));
let indent = self.yylexer.buffer.heredoc_indent;
self.yylexer.buffer.heredoc_indent = 0;
self.builder.heredoc_dedent(&mut string, indent);
yyval = Value::Node(string);
},
579 =>
{
let mut string = self.builder.xstring_compose( Token::boxed_from(yystack.owned_value_at(2)), NodeList::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)));
let indent = self.yylexer.buffer.heredoc_indent;
self.yylexer.buffer.heredoc_indent = 0;
self.builder.heredoc_dedent(&mut string, indent);
yyval = Value::Node(string);
},
580 =>
{
let regexp_end = Token::boxed_from(yystack.owned_value_at(0));
let opts = self.builder.regexp_options(regexp_end.clone());
yyval = Value::Node(
self.builder.regexp_compose(
Token::boxed_from(yystack.owned_value_at(2)),
NodeList::boxed_from(yystack.owned_value_at(1)),
regexp_end,
opts
)
);
},
581 =>
{
yyval = Value::Node(
self.builder.words_compose(
Token::boxed_from(yystack.owned_value_at(3)),
NodeList::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
582 =>
{
yyval = Value::NodeList( vec![] );
},
583 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push(
*self.builder.word( NodeList::boxed_from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
584 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
585 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
586 =>
{
yyval = Value::Node(
self.builder.symbols_compose(
Token::boxed_from(yystack.owned_value_at(3)),
NodeList::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
587 =>
{
yyval = Value::NodeList( vec![] );
},
588 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push(
*self.builder.word( NodeList::boxed_from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
589 =>
{
yyval = Value::Node(
self.builder.words_compose(
Token::boxed_from(yystack.owned_value_at(3)),
NodeList::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
590 =>
{
yyval = Value::Node(
self.builder.symbols_compose(
Token::boxed_from(yystack.owned_value_at(3)),
NodeList::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
591 =>
{
yyval = Value::NodeList( vec![] );
},
592 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push(
*self.builder.string_internal( Token::boxed_from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
593 =>
{
yyval = Value::NodeList( vec![] );
},
594 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push(
*self.builder.symbol_internal( Token::boxed_from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
595 =>
{
yyval = Value::NodeList( vec![] );
},
596 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
597 =>
{
yyval = Value::NodeList( vec![] );
},
598 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
599 =>
{
yyval = Value::NodeList( vec![] );
},
600 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
601 =>
{
yyval = Value::Node(
self.builder.string_internal( Token::boxed_from(yystack.owned_value_at(0)))
);
},
602 =>
{
yyval = Value::MaybeStrTerm(Box::new(std::mem::take(&mut self.yylexer.strterm)));
self.yylexer.lex_state.set(EXPR_BEG);
},
603 =>
{
self.yylexer.strterm = MaybeStrTerm::boxed_from(yystack.owned_value_at(1));
yyval = yystack.owned_value_at(0);
},
604 =>
{
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
yyval = Value::None;
},
605 =>
{
yyval = Value::MaybeStrTerm(Box::new(std::mem::take(&mut self.yylexer.strterm)));
},
606 =>
{
yyval = Value::Num( self.yylexer.lex_state.get() );
self.yylexer.lex_state.set(EXPR_BEG);
},
607 =>
{
yyval = Value::Num( self.yylexer.brace_nest );
self.yylexer.brace_nest = 0;
},
608 =>
{
yyval = Value::Num( self.yylexer.buffer.heredoc_indent );
self.yylexer.buffer.heredoc_indent = 0;
},
609 =>
{
self.yylexer.cond.pop();
self.yylexer.cmdarg.pop();
self.yylexer.strterm = MaybeStrTerm::boxed_from(yystack.owned_value_at(5));
self.yylexer.lex_state.set( Num::boxed_from(yystack.owned_value_at(4)));
self.yylexer.brace_nest = Num::boxed_from(yystack.owned_value_at(3));
self.yylexer.buffer.heredoc_indent = Num::boxed_from(yystack.owned_value_at(2));
self.yylexer.buffer.heredoc_line_indent = -1;
yyval = Value::Node(
self.builder.begin(
Token::boxed_from(yystack.owned_value_at(7)),
MaybeBoxedNode::boxed_from(yystack.owned_value_at(1)),
Token::boxed_from(yystack.owned_value_at(0))
)
);
},
610 =>
{
yyval = Value::Node(self.builder.gvar( Token::boxed_from(yystack.owned_value_at(0))));
},
611 =>
{
yyval = Value::Node(self.builder.ivar( Token::boxed_from(yystack.owned_value_at(0))));
},
612 =>
{
yyval = Value::Node(self.builder.cvar( Token::boxed_from(yystack.owned_value_at(0))));
},
613 =>
{
yyval = yystack.owned_value_at(0);
},
614 =>
{ yyval = yystack.owned_value_at(0); },
615 =>
{ yyval = yystack.owned_value_at(0); },
616 =>
{
self.yylexer.lex_state.set(EXPR_END);
yyval = Value::Node(
self.builder.symbol( Token::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
);
},
617 =>
{ yyval = yystack.owned_value_at(0); },
618 =>
{ yyval = yystack.owned_value_at(0); },
619 =>
{ yyval = yystack.owned_value_at(0); },
620 =>
{ yyval = yystack.owned_value_at(0); },
621 =>
{
self.yylexer.lex_state.set(EXPR_END);
yyval = Value::Node(
self.builder.symbol_compose( Token::boxed_from(yystack.owned_value_at(2)), NodeList::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
);
},
622 =>
{
yyval = yystack.owned_value_at(0);
},
623 =>
{
yyval = Value::Node(
self.builder.unary_num(
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
624 =>
{
yyval = Value::Node(
self.builder.integer( Token::boxed_from(yystack.owned_value_at(0)))
);
},
625 =>
{
yyval = Value::Node(
self.builder.float( Token::boxed_from(yystack.owned_value_at(0)))
);
},
626 =>
{
yyval = Value::Node(
self.builder.rational( Token::boxed_from(yystack.owned_value_at(0)))
);
},
627 =>
{
yyval = Value::Node(
self.builder.complex( Token::boxed_from(yystack.owned_value_at(0)))
);
},
628 =>
{
yyval = Value::Node(
self.builder.lvar( Token::boxed_from(yystack.owned_value_at(0)))
);
},
629 =>
{
yyval = Value::Node(
self.builder.ivar( Token::boxed_from(yystack.owned_value_at(0)))
);
},
630 =>
{
yyval = Value::Node(
self.builder.gvar( Token::boxed_from(yystack.owned_value_at(0)))
);
},
631 =>
{
yyval = Value::Node(
self.builder.const_( Token::boxed_from(yystack.owned_value_at(0)))
);
},
632 =>
{
yyval = Value::Node(
self.builder.cvar( Token::boxed_from(yystack.owned_value_at(0)))
);
},
633 =>
{
yyval = Value::Node(
self.builder.nil( Token::boxed_from(yystack.owned_value_at(0)))
);
},
634 =>
{
yyval = Value::Node(
self.builder.self_( Token::boxed_from(yystack.owned_value_at(0)))
);
},
635 =>
{
yyval = Value::Node(
self.builder.true_( Token::boxed_from(yystack.owned_value_at(0)))
);
},
636 =>
{
yyval = Value::Node(
self.builder.false_( Token::boxed_from(yystack.owned_value_at(0)))
);
},
637 =>
{
yyval = Value::Node(
self.builder.__file__( Token::boxed_from(yystack.owned_value_at(0)))
);
},
638 =>
{
yyval = Value::Node(
self.builder.__line__( Token::boxed_from(yystack.owned_value_at(0)))
);
},
639 =>
{
yyval = Value::Node(
self.builder.__encoding__( Token::boxed_from(yystack.owned_value_at(0)))
);
},
640 =>
{
let node = BoxedNode::boxed_from(yystack.owned_value_at(0));
if let Node::Lvar(node) = &*node {
let name = &node.name;
match name.chars().collect::<Vec<_>>()[..] {
['_', n] if n >= '1' && n <= '9' => {
if !self.static_env.is_declared(&name) && self.context.is_in_dynamic_block() {
if self.max_numparam_stack.has_ordinary_params() {
return self.yyerror(
&yystack.location_at (0),
DiagnosticMessage::OrdinaryParamDefined,
);
}
let mut raw_context = self.context.inner_clone();
let mut raw_max_numparam_stack = self.max_numparam_stack.inner_clone();
raw_context.pop();
raw_max_numparam_stack.pop();
for outer_scope in raw_context.iter().rev() {
if *outer_scope == ContextItem::Block || *outer_scope == ContextItem::Lambda {
let outer_scope_has_numparams = raw_max_numparam_stack
.pop()
.expect("expected numparam stack to have element") > 0;
if outer_scope_has_numparams {
return self.yyerror(
&yystack.location_at (0),
DiagnosticMessage::NumparamUsed,
);
} else {
}
} else {
break;
}
}
self.static_env.declare(&name);
self.max_numparam_stack.register(n.to_digit(10).expect("numparam must have a digit after _") as i32)
}
},
_ => {}
}
}
yyval = Value::Node(
self.builder.accessible(node)
);
},
641 =>
{
yyval = Value::Node(
self.builder.accessible( BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
},
642 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
643 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
644 =>
{
yyval = Value::Node(
self.builder.nth_ref( Token::boxed_from(yystack.owned_value_at(0)))
);
},
645 =>
{
yyval = Value::Node(
self.builder.back_ref( Token::boxed_from(yystack.owned_value_at(0)))
);
},
646 =>
{
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
yyval = Value::None;
},
647 =>
{
let lt_t = Some( Token::boxed_from(yystack.owned_value_at(3)));
let value = Some( BoxedNode::boxed_from(yystack.owned_value_at(1)));
yyval = Value::new_superclass(
Superclass { lt_t, value }
);
},
648 =>
{
yyval = Value::new_superclass(Superclass { lt_t: None, value: None });
},
649 =>
{
yyval = yystack.owned_value_at(0);
},
650 =>
{
yyval = Value::MaybeNode(None);
},
651 =>
{
yyval = Value::MaybeNode(
self.builder.args(Some( Token::boxed_from(yystack.owned_value_at(2))), NodeList::boxed_from(yystack.owned_value_at(1)), Some( Token::boxed_from(yystack.owned_value_at(0))))
);
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
652 =>
{
let mut args = NodeList::boxed_from(yystack.owned_value_at(3));
args.push(*self.builder.forward_arg( Token::boxed_from(yystack.owned_value_at(1))));
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::boxed_from(yystack.owned_value_at(4))),
args,
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
self.static_env.declare_forward_args();
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
653 =>
{
yyval = Value::MaybeNode(
Some(
self.builder.forward_only_args( Token::boxed_from(yystack.owned_value_at(2)), Token::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
)
);
self.static_env.declare_forward_args();
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
654 =>
{
yyval = yystack.owned_value_at(0);
},
655 =>
{
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
self.yylexer.lex_state.set(self.yylexer.lex_state.get()|EXPR_LABEL);
},
656 =>
{
self.yylexer.in_kwarg = Bool::boxed_from(yystack.owned_value_at(2));
yyval = Value::MaybeNode(
self.builder.args(None, NodeList::boxed_from(yystack.owned_value_at(1)), None)
);
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
657 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_kwrest = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_f_block_arg = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
nodes.append(&mut f_kwrest);
nodes.append(&mut opt_f_block_arg);
yyval = Value::NodeList(nodes);
},
658 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
659 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
660 =>
{
yyval = Value::NodeList(vec![ Node::boxed_from(yystack.owned_value_at(0)) ]);
},
661 =>
{
yyval = yystack.owned_value_at(0);
},
662 =>
{
yyval = Value::NodeList( vec![] );
},
663 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_optarg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + f_rest_arg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
664 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(7));
let mut f_optarg = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
665 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_optarg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
666 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_optarg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
667 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
668 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
669 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
670 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
671 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
672 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
673 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
674 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
675 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(3));
let mut f_arg = NodeList::boxed_from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::boxed_from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
676 =>
{
yyval = Value::NodeList( NodeList::boxed_from(yystack.owned_value_at(0)));
},
677 =>
{
yyval = Value::NodeList( vec![] );
},
678 =>
{
yyval = yystack.owned_value_at(0);
},
679 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::ConstArgument);
},
680 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::IvarArgument);
},
681 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::GvarArgument);
},
682 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::CvarArgument);
},
683 =>
{
yyval = yystack.owned_value_at(0);
},
684 =>
{
let ident_t = Token::boxed_from(yystack.owned_value_at(0));
let name = clone_value(&ident_t);
self.static_env.declare(&name);
self.max_numparam_stack.set_has_ordinary_params();
yyval = Value::Token(ident_t);
},
685 =>
{
let arg_t = Token::boxed_from(yystack.owned_value_at(0));
let arg_name = clone_value(&arg_t);
self.current_arg_stack.set(Some(arg_name));
yyval = Value::Token(arg_t);
},
686 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.arg( Token::boxed_from(yystack.owned_value_at(0)))?
);
},
687 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::boxed_from(yystack.owned_value_at(2))),
NodeList::boxed_from(yystack.owned_value_at(1)),
Some( Token::boxed_from(yystack.owned_value_at(0)))
)
);
},
688 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
689 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
690 =>
{
let ident_t = Token::boxed_from(yystack.owned_value_at(0));
self.check_kwarg_name(&ident_t)?;
let ident = clone_value(&ident_t);
self.static_env.declare(&ident);
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(Some(ident));
yyval = Value::Token(ident_t);
},
691 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.kwoptarg( Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
692 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.kwarg( Token::boxed_from(yystack.owned_value_at(0)))?
);
},
693 =>
{
yyval = Value::Node(
self.builder.kwoptarg( Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))?
);
},
694 =>
{
yyval = Value::Node(
self.builder.kwarg( Token::boxed_from(yystack.owned_value_at(0)))?
);
},
695 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
696 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
697 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
698 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
699 =>
{
yyval = yystack.owned_value_at(0);
},
700 =>
{
yyval = yystack.owned_value_at(0);
},
701 =>
{
yyval = Value::NodeList(
vec![
*self.builder.kwnilarg( Token::boxed_from(yystack.owned_value_at(1)), Token::boxed_from(yystack.owned_value_at(0)))
]
);
},
702 =>
{
let ident_t = Token::boxed_from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::NodeList(
vec![
*self.builder.kwrestarg( Token::boxed_from(yystack.owned_value_at(1)), Some(ident_t))?
]
);
},
703 =>
{
yyval = Value::NodeList(
vec![
*self.builder.kwrestarg( Token::boxed_from(yystack.owned_value_at(0)), None)?
]
);
},
704 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.optarg(
Token::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
705 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.optarg(
Token::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)?
);
},
706 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
707 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
708 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
709 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
710 =>
{
yyval = yystack.owned_value_at(0);
},
711 =>
{
yyval = yystack.owned_value_at(0);
},
712 =>
{
let ident_t = Token::boxed_from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::NodeList(
vec![
*self.builder.restarg( Token::boxed_from(yystack.owned_value_at(1)), Some(ident_t))?
]
);
},
713 =>
{
yyval = Value::NodeList(
vec![
*self.builder.restarg( Token::boxed_from(yystack.owned_value_at(0)), None)?
]
);
},
714 =>
{
yyval = yystack.owned_value_at(0);
},
715 =>
{
yyval = yystack.owned_value_at(0);
},
716 =>
{
let ident_t = Token::boxed_from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::Node(
self.builder.blockarg( Token::boxed_from(yystack.owned_value_at(1)), ident_t)?
);
},
717 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] )
},
718 =>
{
yyval = Value::NodeList( vec![] );
},
719 =>
{
let var_ref = BoxedNode::boxed_from(yystack.owned_value_at(0));
self.value_expr(&var_ref)?;
yyval = Value::Node(var_ref);
},
720 =>
{ self.yylexer.lex_state.set(EXPR_BEG); yyval = Value::None; },
721 =>
{
let expr = BoxedNode::boxed_from(yystack.owned_value_at(1));
match &*expr {
Node::Int(_)
| Node::Float(_)
| Node::Rational(_)
| Node::Complex(_)
| Node::Str(_)
| Node::Dstr(_)
| Node::Sym(_)
| Node::Dsym(_)
| Node::Heredoc(_)
| Node::XHeredoc(_)
| Node::Regexp(_)
| Node::Array(_)
| Node::Hash(_) => {
self.yyerror1(
DiagnosticMessage::SingletonLiteral,
expr.expression().clone(),
)?;
}
other => {
self.value_expr(other)?
},
}
yyval = Value::Node(expr);
},
722 =>
{
yyval = Value::NodeList(vec![]);
},
723 =>
{
yyval = yystack.owned_value_at(1);
},
724 =>
{
yyval = Value::NodeList( vec![ Node::boxed_from(yystack.owned_value_at(0)) ] );
},
725 =>
{
let mut nodes = NodeList::boxed_from(yystack.owned_value_at(2));
nodes.push( Node::boxed_from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
726 =>
{
yyval = Value::Node(
self.builder.pair(
BoxedNode::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
727 =>
{
yyval = Value::Node(
self.builder.pair_keyword(
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
728 =>
{
yyval = Value::Node(
self.builder.pair_quoted(
Token::boxed_from(yystack.owned_value_at(3)),
NodeList::boxed_from(yystack.owned_value_at(2)),
Token::boxed_from(yystack.owned_value_at(1)),
BoxedNode::boxed_from(yystack.owned_value_at(0))
)
);
},
729 =>
{
yyval = Value::Node(
self.builder.kwsplat( Token::boxed_from(yystack.owned_value_at(1)), BoxedNode::boxed_from(yystack.owned_value_at(0)))
);
},
730 =>
{
yyval = yystack.owned_value_at(0);
},
731 =>
{
yyval = yystack.owned_value_at(0);
},
732 =>
{
yyval = yystack.owned_value_at(0);
},
733 =>
{
yyval = yystack.owned_value_at(0);
},
734 =>
{
yyval = yystack.owned_value_at(0);
},
735 =>
{
yyval = yystack.owned_value_at(0);
},
736 =>
{
yyval = yystack.owned_value_at(0);
},
737 =>
{
yyval = yystack.owned_value_at(0);
},
738 =>
{
yyval = yystack.owned_value_at(0);
},
739 =>
{
yyval = yystack.owned_value_at(0);
},
740 =>
{
yyval = yystack.owned_value_at(0);
},
741 =>
{
yyval = yystack.owned_value_at(0);
},
742 =>
{
yyval = yystack.owned_value_at(0);
},
743 =>
{
yyval = yystack.owned_value_at(0);
},
744 =>
{
yyval = yystack.owned_value_at(0);
},
745 =>
{
yyval = yystack.owned_value_at(0);
},
746 =>
{
yyval = Value::None;
},
747 =>
{
yyval = Value::None;
},
748 =>
{
yyval = Value::None;
},
749 =>
{
yyval = Value::None;
},
750 =>
{
yyval = yystack.owned_value_at(0);
},
751 =>
{
yyval = yystack.owned_value_at(0);
},
752 =>
{
yyval = yystack.owned_value_at(0);
},
753 =>
{
yyval = Value::None;
},
754 =>
{
yyval = Value::None;
},
755 =>
{
yyval = Value::None;
},
756 =>
{
yyval = yystack.owned_value_at(0);
},
757 =>
{
yyval = yystack.owned_value_at(0);
},
758 =>
{
yyval = Value::TokenList(vec![]);
},
759 =>
{
yyval = Value::TokenList(vec![]);
},
760 =>
{
yyval = Value::None;
},
_ => {}
}
if let YYValue::Uninitialized = yyval {
panic!("yyval is Uninitialized in rule at line {}", Self::yyrline_[i32_to_usize(yyn)]);
}
self.yy_symbol_print("-> $$ =", SymbolKind::get(Self::yyr1_[i32_to_usize(yyn)]), &yyval, &yyloc);
yystack.pop_n(*yylen);
*yylen = 0;
let yystate = self.yy_lr_goto_state(yystack.state_at(0), Self::yyr1_[i32_to_usize(yyn)]);
yystack.push(yystate, yyval, yyloc);
Ok(Self::YYNEWSTATE)
}
fn yy_symbol_print(&self, s: &str, yykind: &SymbolKind, yyvalue: &YYValue, yylocation: &YYLoc) {
if self.yydebug {
self.yycdebug(
&format!("{}{} {:?} ( {:?}: {:?} )",
s,
if yykind.code() < Self::YYNTOKENS_ { " token " } else { " nterm " },
yykind.name(),
yylocation,
yyvalue
)
)
}
}
pub fn parse(&mut self) -> bool {
let mut yyloc: YYLoc;
let mut yychar: i32 = Self::YYEMPTY_;
let mut yytoken = &DYMMY_SYMBOL_KIND;
let mut yyn: i32 = 0;
let mut yylen: usize = 0;
let mut yystate: i32 = 0;
let mut yystack = YYStack::new();
let mut label: i32 = Self::YYNEWSTATE;
let mut yyerrloc: YYLoc = YYLoc { begin: 0, end: 0};
let mut yylloc: YYLoc = YYLoc { begin: 0, end: 0 };
let mut yylval: YYValue = YYValue::Uninitialized;
self.yycdebug("Starting parse");
self.yyerrstatus_ = 0;
self.yynerrs = 0;
yystack.push(yystate, yylval.clone(), yylloc.clone());
loop {
match label {
Self::YYNEWSTATE => {
if self.yydebug {
self.yycdebug(&format!("Entering state {}", yystate));
eprintln!("{}", yystack);
}
if yystate == Self::YYFINAL_ {
return true;
}
yyn = Self::yypact_[i32_to_usize(yystate)];
if yy_pact_value_is_default(yyn) {
label = Self::YYDEFAULT;
continue;
}
if yychar == Self::YYEMPTY_ {
self.yycdebug("Reading a token");
let token = self.next_token();
yychar = token.token_type;
yylloc = token.loc.clone();
yylval = YYValue::from_token(token);
}
yytoken = Self::yytranslate_(yychar);
self.yy_symbol_print("Next token is", &yytoken, &yylval, &yylloc);
if yytoken == SymbolKind::get(1) {
yychar = Lexer::YYUNDEF;
yytoken = SymbolKind::get(2);
yyerrloc = yylloc.clone();
label = Self::YYERRLAB1;
} else {
yyn += yytoken.code();
if yyn < 0 || Self::YYLAST_ < yyn || Self::yycheck_[i32_to_usize(yyn)] != yytoken.code() {
label = Self::YYDEFAULT;
}
else {
yyn = Self::yytable_[i32_to_usize(yyn)];
if yyn <= 0 {
if yy_table_value_is_error(yyn) {
label = Self::YYERRLAB;
} else {
yyn = -yyn;
label = Self::YYREDUCE;
}
} else {
self.yy_symbol_print("Shifting", &yytoken, &yylval, &yylloc);
yychar = Self::YYEMPTY_;
if self.yyerrstatus_ > 0 {
self.yyerrstatus_ -= 1;
}
yystate = yyn;
yystack.push(yystate, std::mem::take(&mut yylval), std::mem::take(&mut yylloc));
label = Self::YYNEWSTATE;
}
}
}
continue;
},
Self::YYDEFAULT => {
yyn = Self::yydefact_[i32_to_usize(yystate)];
if yyn == 0 {
label = Self::YYERRLAB;
} else {
label = Self::YYREDUCE;
}
continue;
}
Self::YYREDUCE => {
yylen = i32_to_usize(Self::yyr2_[i32_to_usize(yyn)]);
label = match self.yyaction(yyn, &mut yystack, &mut yylen) {
Ok(label) => label,
Err(_) => Self::YYERROR
};
yystate = yystack.state_at(0);
continue;
},
Self::YYERRLAB => {
if self.yyerrstatus_ == 0 {
self.yynerrs += 1;
if yychar == Self::YYEMPTY_ {
yytoken = &DYMMY_SYMBOL_KIND;
}
self.report_syntax_error(&Context::new(yystack.clone(), yytoken.clone(), yylloc.clone()));
}
yyerrloc = yylloc.clone();
if self.yyerrstatus_ == 3 {
if yychar <= Lexer::END_OF_INPUT {
if yychar == Lexer::END_OF_INPUT {
return false;
}
}
else {
yychar = Self::YYEMPTY_;
}
}
label = Self::YYERRLAB1;
continue;
},
Self::YYERROR => {
yystack.pop_n(yylen);
yylen = 0;
yystate = yystack.state_at(0);
label = Self::YYERRLAB1;
continue;
},
Self::YYERRLAB1 => {
self.yyerrstatus_ = 3;
loop {
yyn = Self::yypact_[i32_to_usize(yystate)];
if !yy_pact_value_is_default(yyn) {
yyn += SymbolKind { value: SymbolKind::S_YYerror }.code();
if 0 <= yyn && yyn <= Self::YYLAST_ {
let yyn_usize = i32_to_usize(yyn);
if Self::yycheck_[yyn_usize] == SymbolKind::S_YYerror {
yyn = Self::yytable_[yyn_usize];
if 0 < yyn {
break;
}
}
}
}
if yystack.len() == 1 {
return false;
}
yyerrloc = yystack.location_at(0).clone();
yystack.pop();
yystate = yystack.state_at(0);
if self.yydebug {
eprintln!("{}", yystack);
}
}
if label == Self::YYABORT {
continue;
}
yystack.push(0, YYValue::Uninitialized, yylloc.clone());
yystack.push(0, YYValue::Uninitialized, yyerrloc.clone());
yyloc = make_yylloc(&yystack, 2);
yystack.pop_n(2);
self.yy_symbol_print("Shifting", SymbolKind::get(Self::yystos_[i32_to_usize(yyn)]), &yylval, &yyloc);
yystate = yyn;
yystack.push(yyn, yylval.clone(), yyloc.clone());
label = Self::YYNEWSTATE;
continue;
},
Self::YYACCEPT => {
return true;
}
Self::YYABORT => {
return false;
},
_ => {
panic!("internal bison error: unknown label {}", label);
}
}
}
}
}
#[derive(Debug)]
pub(crate) struct Context {
yystack: YYStack,
yytoken: SymbolKind,
loc: YYLoc
}
impl Context {
pub(crate) fn new(stack: YYStack, token: SymbolKind, loc: YYLoc) -> Self {
Self { yystack: stack, yytoken: token, loc }
}
#[allow(dead_code)]
pub(crate) fn token(&self) -> &SymbolKind {
&self.yytoken
}
#[allow(dead_code)]
pub(crate) fn location(&self) -> &YYLoc {
&self.loc
}
}
fn yy_pact_value_is_default(yyvalue: i32) -> bool {
yyvalue == YYPACT_NINF_
}
fn yy_table_value_is_error(yyvalue: i32) -> bool {
yyvalue == YYTABLE_NINF_
}
const YYPACT_NINF_: i32 = -1068;
const YYTABLE_NINF_: i32 = -761;
impl Parser {
#[allow(non_upper_case_globals)]
const yypact_: &'static [i32] = &[ -1068, 220, 4318, -1068, 8025, -1068, -1068, -1068, 12577, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, 8300, 8300, -1068, -1068,
-1068, 7020, 4168, -1068, -1068, -1068, -1068, 477, 12432, 49,
109, 138, -1068, -1068, -1068, 4009, 6728, -1068, -1068, 6144,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 10631, 10631,
10631, 10631, 222, 5319, 8437, 8985, 9396, 11042, -1068, 12287,
-1068, -1068, -1068, 191, 309, 337, 344, 10631, 10768, 974,
-1068, 417, -1068, 1342, -1068, 849, 22, 22, -1068, -1068,
160, 386, 381, -1068, 380, 11165, -1068, 387, 14309, 389,
328, 533, -1068, 10905, 10905, -1068, -1068, 9533, 11287, 11409,
11654, 12142, 8300, -1068, 405, 93, -1068, -1068, 438, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, 444, 462, -1068, 468, 483, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, 464, -1068, -1068, -1068, 458,
10631, 585, 5457, 10631, 10631, 10631, -1068, 10631, -1068, 535,
14406, 531, -1068, -1068, 570, 543, 212, 230, 612, 400,
576, -1068, -1068, 8162, -1068, 8300, 8574, -1068, -1068, 9671,
-1068, 10905, 925, -1068, 9809, 5595, -1068, 5733, -1068, -1068,
582, 591, 160, -1068, 637, -1068, 662, 14426, 14426, 564,
8437, -1068, 5319, 649, 417, -1068, 1342, 49, 629, -1068,
1342, 49, 651, 367, 431, -1068, 531, 669, 431, -1068,
49, 722, 11776, 974, 667, 667, 689, -1068, 645, 657,
711, 726, 988, -1068, -1068, -1068, -1068, 678, -1068, 831,
882, 95, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 743,
-1068, -1068, -1068, -1068, 7751, 10905, 10905, 10905, 10905, 8437,
10905, 10905, 1280, 700, 721, 4480, 1712, -1068, 744, 4480,
-1068, -1068, -1068, 756, -1068, -1068, -1068, -1068, -1068, 9946,
-1068, 5319, 11531, 755, 9946, 10631, 10631, 10631, 10631, 10631,
-1068, -1068, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631,
-1068, 10631, 10631, -1068, -1068, 10631, 10631, 10631, 10631, 10631,
10631, 10631, 10631, 10631, -1068, -1068, 13143, 8300, 13216, 4480,
849, 117, 117, 5871, 10905, 5871, 417, -1068, 757, 833,
-1068, -1068, 751, 876, 101, 124, 167, 506, 588, 10905,
699, -1068, 771, 787, -1068, -1068, -1068, -1068, 311, 319,
354, 541, 694, 745, 747, 788, 795, -1068, -1068, -1068,
-1068, 810, -1068, -1068, -1068, 14238, -1068, -1068, 10768, 10768,
-1068, -1068, 410, -1068, -1068, -1068, 502, 10631, 10631, 8711,
-1068, -1068, 13289, 8300, 13362, 10631, 10631, 9122, -1068, 49,
814, -1068, -1068, 10631, 49, -1068, 794, 49, 796, -1068,
74, -1068, -1068, -1068, -1068, -1068, 12577, 10905, 14406, 786,
806, 13289, 13362, 10631, 1342, 109, 49, -1068, -1068, 7888,
811, 49, -1068, -1068, 9259, -1068, -1068, 9396, -1068, -1068,
-1068, 803, 797, -1068, 821, -1068, -1068, 11776, 13435, 8300,
13508, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 1243, -1068,
-1068, -1068, -1068, 1712, -1068, 824, -1068, -1068, -1068, -1068,
-1068, 825, -1068, 839, 10631, -1068, 842, 116, -1068, -1068,
-1068, 846, 908, 850, 924, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, 899, 89, 1028, 267,
10631, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, 49, 49, 857, 10631, 981, 976, 417, 10631, 981,
-1068, -1068, -1068, -1068, -1068, 10631, -1068, 869, 873, 958,
-1068, 49, 11776, 881, -1068, -1068, -1068, 965, 884, 3529,
-1068, -1068, -1068, 809, 448, 662, 3218, 3218, 3218, 3218,
4309, 2886, 3218, 3218, 14426, 14426, 454, 454, 12959, 996,
1217, 996, 57, 57, 662, 662, 662, 14333, 1900, 1900,
7166, 6290, 7458, 6436, -1068, 591, -1068, 49, 889, 578,
-1068, 632, -1068, -1068, 6874, 981, -1068, 4618, 1003, 5032,
981, 83, 981, 998, 1009, 285, 13581, 8300, 13654, -1068,
849, -1068, 797, -1068, -1068, -1068, 13727, 8300, 13800, 4480,
10905, -1068, -1068, -1068, -1068, -1068, 2074, -1068, 12957, -1068,
-1068, -1068, 12577, 10631, -1068, 10631, 531, -1068, 576, 3856,
6582, 49, 487, 489, -1068, -1068, -1068, -1068, 8848, -1068,
9122, -1068, -1068, 74, -1068, -1068, 591, 591, -1068, -1068,
641, -1068, -1068, 431, 11776, 821, 364, 602, 49, 265,
408, 1243, 1132, -1068, 905, 49, 913, -1068, 49, 275,
-1068, -1068, 80, 10631, 1712, -1068, -1068, 404, -1068, -1068,
-1068, 1712, -1068, -1068, 1125, -1068, -1068, -1068, 1050, -1068,
357, -1068, 900, -1068, -1068, 376, 916, -1068, 662, -1068,
-1068, 1280, 13034, -1068, -1068, -1068, 10083, 419, -1068, -1068,
13059, -1068, 933, 931, -1068, 981, 931, 981, 939, 10220,
8437, -1068, 821, 11776, 8437, 10768, 10631, 13873, 8300, 13946,
-1068, -1068, 2248, 2248, 746, -1068, 3706, 39, 1014, -1068,
968, -1068, 941, -1068, -1068, 780, -1068, -1068, 224, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 928, 10768,
10768, -1068, 756, 944, 696, 8711, 10768, 10768, -1068, -1068,
756, -1068, -1068, 895, -1068, 1068, -1068, -1068, -1068, -1068,
-1068, -1068, 1009, 981, -1068, 10357, 981, 221, 257, 49,
330, 336, 5871, 417, 10905, 4480, 802, 602, -1068, 49,
981, 74, 12722, 93, 386, -1068, -1068, -1068, -1068, 10631,
10631, 546, 10631, 10631, 49, 959, -1068, -1068, -1068, 435,
49, -1068, 1243, -1068, 1151, 984, 950, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, 967, 975, -1068, 1049, 824, 978,
-1068, 986, -1068, 978, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, 49, 10631, 869, -1068, 1006,
-1068, -1068, -1068, 5871, 5181, -1068, -1068, 10631, -1068, 1461,
5733, -1068, -1068, 982, -1068, 4480, -1068, 10631, 997, -1068,
821, -1068, 14406, 7312, 7604, 49, 559, 567, -1068, -1068,
-1068, -1068, 12959, 1069, 48, 49, 3425, -1068, 49, 1000,
1001, -1068, 82, 1016, -1068, -1068, 1078, 12959, 2248, 2248,
746, 672, 151, 12785, 12785, 10631, -1068, -1068, -1068, -1068,
-1068, -1068, 10768, -1068, -1068, -1068, -1068, -1068, -1068, 5871,
10905, 981, -1068, -1068, 981, 12785, 981, -1068, 10631, -1068,
104, -1068, 345, 981, 4480, 417, 981, -1068, -1068, -1068,
-1068, -1068, -1068, 10631, -1068, 9122, -1068, -1068, 1011, 1019,
-1068, 1218, 4480, 5733, 1712, -1068, 1125, -1068, -1068, 1125,
-1068, 1125, -1068, -1068, -1068, -1068, 14406, 11898, 117, -1068,
-1068, 1136, 14406, 824, -1068, 49, 1022, 1017, 1029, 12020,
-1068, 1032, -1068, 1039, 1041, -1068, -1068, -1068, -1068, 1042,
607, 45, -1068, -1068, 62, 968, 1043, -1068, 12959, -1068,
-1068, -1068, 49, 1045, -1068, 12959, -1068, -1068, -1068, 456,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 49,
49, 49, 49, 49, 49, 14406, -1068, -1068, -1068, 117,
-1068, -1068, 117, 886, 295, -1068, -1068, -1068, -1068, -1068,
10494, 4756, -1068, 981, -1068, -1068, 1151, 1151, -1068, 575,
-1068, -1068, 981, 1026, 978, 1046, 978, 978, -1068, 1119,
-1068, 835, 123, 159, 168, 4480, -1068, -1068, 1055, -1068,
12020, 1712, -1068, -1068, 1137, 891, 404, -1068, 1712, -1068,
1125, -1068, -1068, 1067, 12959, -1068, 1070, -1068, 457, -1068,
82, 968, -1068, -1068, 624, -1068, -1068, -1068, -1068, -1068,
-1068, 4618, -1068, 10905, 10905, 12872, 10631, -1068, 844, -1068,
1019, 1218, -1068, -1068, -1068, -1068, 1125, -1068, -1068, -1068,
6009, 182, 14019, 8300, 14092, 976, -1068, 891, -1068, 1071,
1076, -1068, 14165, -1068, 824, 1088, -1068, 1092, 1088, 12959,
1094, 12872, -1068, -1068, -1068, 895, 4894, -1068, -1068, -1068,
1097, -1068, -1068, -1068, -1068, -1068, 978, 1103, 73, 143,
49, 234, 238, -1068, 1712, -1068, 1125, -1068, 1089, 1091,
-1068, 1125, -1068, 1125, -1068, -1068, 1094, 12959, -1068, -1068,
-1068, 416, 12959, -1068, -1068, 261, 1088, 1099, 1088, 1088,
-1068, -1068, -1068, 1094, -1068, 1125, -1068, -1068, -1068, 1088,
-1068 ];
#[allow(non_upper_case_globals)]
const yydefact_: &'static [i32] = &[ 2, 0, 0, 1, 0, 360, 361, 362, 0, 353,
354, 355, 358, 356, 357, 359, 348, 349, 350, 351,
371, 283, 283, 634, 633, 635, 636, 748, 0, 748,
0, 0, 638, 637, 639, 730, 732, 630, 629, 731,
632, 624, 625, 626, 627, 575, 644, 645, 0, 0,
0, 0, 0, 0, 310, 760, 760, 96, 428, 595,
595, 597, 599, 0, 0, 0, 0, 0, 0, 0,
3, 746, 6, 9, 34, 39, 655, 655, 51, 67,
283, 66, 0, 84, 0, 88, 98, 0, 58, 236,
254, 0, 308, 0, 0, 64, 64, 746, 0, 0,
0, 0, 319, 329, 68, 327, 297, 298, 574, 576,
299, 300, 301, 303, 302, 304, 573, 614, 615, 572,
622, 640, 641, 305, 0, 306, 72, 5, 8, 177,
188, 178, 201, 174, 194, 184, 183, 204, 205, 199,
182, 181, 176, 202, 206, 207, 186, 175, 189, 193,
195, 187, 180, 196, 203, 198, 197, 190, 200, 185,
173, 192, 191, 172, 179, 170, 171, 167, 168, 169,
127, 129, 128, 162, 163, 158, 140, 141, 142, 149,
146, 148, 143, 144, 164, 165, 150, 151, 155, 159,
137, 139, 145, 147, 166, 138, 152, 153, 154, 156,
157, 161, 160, 132, 134, 27, 130, 131, 133, 0,
0, 0, 0, 0, 0, 0, 595, 0, 278, 0,
261, 288, 82, 282, 760, 0, 640, 641, 0, 306,
760, 724, 83, 748, 80, 0, 760, 449, 79, 748,
749, 0, 0, 22, 0, 0, 10, 0, 348, 349,
322, 450, 0, 230, 0, 319, 231, 221, 222, 316,
0, 20, 0, 0, 746, 16, 19, 748, 86, 15,
312, 748, 0, 753, 753, 262, 0, 0, 753, 722,
748, 0, 0, 0, 655, 655, 94, 352, 0, 104,
105, 112, 677, 619, 618, 620, 617, 0, 616, 0,
0, 0, 582, 591, 587, 593, 243, 55, 242, 623,
756, 757, 4, 758, 747, 0, 0, 0, 0, 0,
0, 0, 677, 0, 654, 0, 677, 650, 0, 0,
363, 452, 443, 73, 454, 326, 364, 437, 439, 0,
100, 0, 92, 89, 0, 0, 0, 0, 0, 0,
257, 258, 0, 0, 0, 0, 219, 220, 0, 0,
56, 0, 0, 255, 256, 0, 0, 0, 0, 0,
0, 0, 0, 0, 742, 743, 0, 760, 0, 0,
63, 0, 0, 0, 0, 0, 746, 336, 747, 0,
382, 381, 0, 0, 640, 641, 306, 122, 123, 0,
0, 125, 648, 0, 640, 641, 306, 344, 197, 190,
200, 185, 167, 168, 169, 127, 128, 720, 60, 59,
719, 0, 81, 745, 744, 0, 328, 577, 0, 0,
135, 727, 316, 289, 729, 285, 0, 0, 0, 0,
279, 287, 0, 760, 0, 0, 0, 0, 280, 748,
0, 321, 284, 678, 748, 274, 760, 748, 760, 273,
748, 325, 54, 24, 26, 25, 0, 0, 248, 0,
0, 0, 0, 0, 18, 0, 748, 314, 14, 747,
85, 748, 311, 317, 755, 754, 263, 755, 265, 318,
723, 0, 111, 102, 97, 623, 654, 0, 0, 760,
0, 684, 681, 680, 679, 682, 690, 699, 0, 711,
700, 715, 714, 677, 710, 760, 429, 676, 432, 683,
685, 686, 688, 662, 692, 697, 760, 703, 395, 394,
708, 662, 713, 662, 0, 660, 601, 621, 604, 602,
596, 578, 579, 598, 580, 600, 0, 0, 0, 0,
0, 759, 7, 28, 29, 30, 31, 32, 52, 53,
678, 748, 748, 662, 0, 0, 760, 0, 0, 0,
456, 70, 74, 458, 458, 0, 35, 293, 0, 38,
292, 748, 0, 90, 101, 50, 40, 48, 0, 266,
288, 208, 36, 0, 306, 228, 235, 237, 238, 239,
246, 247, 240, 241, 217, 218, 244, 245, 0, 232,
234, 233, 223, 224, 225, 226, 227, 748, 259, 260,
733, 735, 734, 736, 448, 283, 446, 748, 760, 733,
735, 734, 736, 447, 283, 0, 373, 0, 372, 0,
0, 0, 0, 334, 0, 316, 0, 760, 0, 64,
342, 122, 123, 124, 646, 340, 0, 760, 0, 0,
0, 740, 741, 61, 733, 734, 283, 41, 266, 209,
47, 216, 0, 0, 726, 0, 290, 286, 760, 733,
734, 748, 733, 734, 725, 320, 750, 268, 275, 270,
277, 324, 23, 748, 11, 33, 0, 760, 215, 21,
87, 17, 313, 753, 0, 95, 737, 110, 748, 733,
734, 0, 393, 385, 387, 748, 390, 383, 748, 0,
659, 718, 0, 0, 0, 669, 691, 0, 658, 701,
702, 0, 672, 712, 0, 674, 716, 605, 0, 581,
0, 584, 0, 589, 586, 0, 0, 590, 229, 651,
653, 0, 250, 370, 346, 365, 760, 760, 564, 656,
252, 347, 0, 760, 456, 0, 760, 0, 296, 0,
0, 99, 93, 0, 0, 0, 0, 0, 760, 0,
558, 562, 0, 0, 0, 503, 748, 500, 0, 557,
57, 481, 483, 485, 488, 538, 543, 544, 545, 548,
549, 550, 551, 552, 554, 553, 555, 556, 0, 0,
0, 445, 77, 0, 451, 275, 0, 0, 272, 444,
75, 271, 309, 760, 374, 760, 332, 376, 65, 375,
333, 467, 0, 0, 367, 0, 0, 737, 315, 748,
733, 734, 0, 0, 0, 0, 122, 123, 126, 748,
0, 748, 0, 440, 69, 136, 728, 291, 281, 0,
0, 451, 0, 0, 748, 760, 323, 264, 103, 451,
748, 392, 0, 687, 0, 0, 422, 717, 435, 433,
430, 704, 661, 689, 662, 662, 698, 703, 760, 662,
709, 662, 686, 662, 606, 610, 611, 612, 603, 613,
583, 585, 592, 588, 594, 748, 0, 565, 566, 760,
567, 366, 368, 0, 0, 13, 571, 0, 453, 748,
0, 419, 418, 0, 455, 0, 438, 0, 294, 37,
91, 49, 267, 733, 734, 748, 733, 734, 546, 547,
123, 560, 0, 519, 505, 748, 506, 512, 748, 515,
0, 499, 0, 0, 502, 559, 0, 0, 541, 542,
0, 487, 486, 0, 0, 0, 46, 213, 45, 214,
78, 751, 0, 43, 211, 44, 212, 76, 369, 0,
0, 0, 377, 379, 0, 0, 0, 338, 0, 460,
0, 337, 451, 0, 0, 0, 0, 451, 345, 721,
62, 441, 442, 0, 269, 276, 384, 386, 388, 391,
431, 0, 0, 0, 0, 665, 0, 667, 657, 0,
673, 0, 670, 675, 607, 652, 251, 0, 0, 569,
570, 760, 253, 760, 417, 748, 0, 686, 401, 694,
695, 760, 706, 401, 401, 399, 457, 71, 459, 295,
451, 748, 518, 497, 510, 522, 507, 498, 0, 513,
531, 595, 748, 524, 527, 530, 536, 537, 526, 534,
752, 482, 484, 539, 540, 561, 496, 492, 595, 748,
748, 748, 748, 748, 748, 249, 42, 210, 380, 0,
330, 331, 0, 472, 475, 479, 478, 480, 335, 461,
0, 0, 339, 0, 647, 341, 0, 0, 426, 748,
424, 427, 0, 0, 662, 662, 662, 662, 608, 0,
568, 0, 640, 641, 306, 0, 12, 398, 0, 420,
0, 402, 410, 408, 0, 693, 0, 397, 0, 413,
0, 415, 504, 508, 0, 514, 516, 520, 0, 501,
525, 529, 535, 533, 0, 489, 490, 491, 493, 494,
495, 0, 468, 0, 0, 476, 0, 462, 760, 343,
389, 0, 423, 436, 434, 666, 0, 663, 668, 671,
0, 316, 0, 760, 0, 760, 421, 705, 400, 401,
401, 316, 0, 696, 760, 401, 707, 401, 401, 0,
511, 0, 532, 528, 523, 760, 0, 473, 474, 477,
515, 463, 465, 466, 464, 425, 662, 0, 737, 315,
748, 733, 734, 563, 0, 405, 0, 407, 737, 315,
396, 0, 414, 0, 411, 416, 509, 0, 517, 521,
378, 760, 0, 664, 609, 451, 401, 401, 401, 401,
470, 471, 469, 516, 406, 0, 403, 409, 412, 401,
404 ];
#[allow(non_upper_case_globals)]
const yypgoto_: &'static [i32] = &[ -1068, -1068, -1068, 991, -1068, 44, 766, -303, -32, -1068,
764, -1068, 90, -1068, -251, -372, 27, -1068, 392, -54,
-10, -1068, -84, -79, -1068, 36, -1068, -92, -1068, 1212,
-11, 1149, -123, -3, -76, -1068, -436, -14, 2353, -367,
1148, -47, -13, -1068, -1068, 14, -1068, 3355, 1160, -1068,
1270, -1068, 429, -15, 584, -342, 136, 42, -1068, -415,
-210, 68, -1068, -321, 43, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, 733, -1068, -1068, -1068, -1068, -1068, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 497,
-1068, 516, 1570, -363, -1068, 50, -766, -1068, -814, -812,
548, 385, 179, 349, 539, -1068, -1068, 503, -1068, -847,
-1068, 92, 739, -1068, -1068, -1068, -1068, -1068, -1068, 422,
-1068, -1068, -1068, -97, -1068, -1068, 514, -1068, 705, -1068,
-1068, -803, -1068, 41, -1068, -1068, -1068, -1068, -1068, -545,
-1068, -1068, -1068, -1068, 327, -1068, -1068, -858, -1068, 300,
-401, -994, -1067, -875, -311, -1068, 137, -1068, -1068, -1068,
140, -1068, -645, 340, -1068, -1068, 108, -1068, -1068, 255,
1182, 1202, -1068, 1193, 1463, 1646, 1660, -1068, 754, 1976,
-1068, 1986, 2176, -1068, -1068, -56, -1068, -1068, -96, -1068,
-1068, -1068, -1068, -1068, -1068, -1068, 8, -1068, -1068, -1068,
-1068, 1, 2178, -2, 1203, 2477, 1874, -1068, -1068, 1226,
658, 10, -1068, -159, -340, -195, -297, -932, -459, -197,
-685, -304, 122, 580, 172, -1068, -1068, -687, -1068, -689,
-678, -1025, 185, -577, -1068, -555, -1068, 189, -515, -1068,
-1068, -1068, 52, -420, -1068, -260, -1068, -1068, -90, -1068,
-67, 51, 761, 316, 251, -237, -37, 3, 26 ];
#[allow(non_upper_case_globals)]
const yydefgoto_: &'static [i32] = &[ -1, 1, 2, 70, 71, 72, 246, 565, 566, 264,
265, 475, 266, 466, 74, 586, 75, 608, 418, 76,
77, 852, 381, 383, 384, 78, 79, 572, 764, 252,
81, 82, 267, 83, 84, 85, 494, 86, 219, 401,
402, 203, 204, 205, 672, 623, 207, 88, 372, 89,
221, 272, 591, 624, 819, 454, 455, 234, 235, 223,
440, 628, 579, 580, 90, 379, 271, 481, 832, 644,
845, 843, 659, 254, 92, 93, 94, 95, 96, 97,
98, 99, 100, 101, 334, 337, 756, 913, 835, 979,
980, 754, 255, 637, 828, 981, 982, 393, 713, 714,
715, 716, 515, 1188, 1132, 1133, 1035, 920, 921, 875,
1109, 1110, 103, 292, 722, 516, 880, 1013, 1012, 338,
574, 104, 105, 335, 570, 573, 762, 763, 765, 766,
990, 836, 1214, 833, 985, 1206, 1252, 1092, 1093, 1055,
791, 792, 963, 964, 793, 952, 942, 945, 946, 947,
948, 949, 1146, 950, 1062, 1063, 1064, 1065, 1066, 1067,
1068, 794, 795, 796, 797, 798, 757, 909, 1028, 915,
106, 107, 108, 109, 110, 111, 112, 546, 740, 113,
548, 114, 115, 547, 549, 297, 300, 301, 540, 738,
737, 894, 1024, 1118, 1180, 898, 116, 117, 298, 118,
119, 120, 226, 227, 123, 228, 229, 655, 844, 323,
324, 325, 326, 882, 725, 518, 457, 519, 520, 892,
522, 523, 524, 525, 1040, 1041, 526, 527, 528, 529,
530, 1042, 1043, 531, 532, 533, 534, 535, 720, 421,
660, 277, 458, 231, 126, 696, 626, 663, 658, 425,
312, 450, 451, 814, 954, 486, 638, 388, 269 ];
#[allow(non_upper_case_globals)]
const yytable_: &'static [i32] = &[ 122, 378, 122, 284, 299, 218, 218, 237, 426, 343,
382, 728, 296, 386, 424, 243, 208, 385, 563, 639,
448, 263, 206, 592, 677, 562, 569, 684, 127, 986,
387, 284, 677, 653, 313, 627, 208, 488, 888, 883,
887, 490, 206, 286, 284, 284, 284, 285, 128, 717,
268, 122, 122, 890, 419, 290, 667, 670, 1007, 984,
313, 705, 1009, 790, 238, 332, 883, 684, 230, 230,
309, 1056, 1036, 206, 314, 285, 635, 1200, 241, 1111,
244, 275, 279, 290, 224, 224, -117, 329, 285, 285,
285, 218, 73, 585, 73, 521, 395, 405, 405, 405,
287, 681, 327, 327, 307, 1079, 1082, 274, 278, 878,
827, 320, 321, 1196, 1143, 206, 625, 636, 634, 330,
380, 380, 333, 273, 380, 521, -113, 561, 287, 521,
636, 567, 1236, 517, 345, 444, -113, 938, 939, 476,
1060, 287, 287, 287, 270, 956, 772, 884, 956, -114,
729, -760, 222, 232, 230, 742, -119, 708, 322, 507,
436, 536, 544, 517, 472, 666, -748, 517, 730, 885,
224, 1210, -114, -522, 884, 1253, 891, 585, 585, 240,
263, -121, 625, 1147, 634, 240, 330, 1144, 1128, 240,
510, 732, -121, 735, 1061, -120, 885, 478, 500, 1196,
368, 369, 370, 879, 543, 545, 493, 1238, 743, -733,
122, -117, 697, -117, 240, 470, 538, 539, 581, 331,
3, 310, 218, 311, 218, 218, -104, 313, 284, 1100,
263, 553, 554, 555, 556, 245, 237, 332, 422, 1111,
697, 944, 310, 122, 311, 122, -117, -116, 448, -105,
441, -118, 717, 871, -748, 310, 441, 311, 122, 268,
122, -113, 459, -113, 247, 1069, 460, 479, 462, 1147,
684, 127, 285, 677, -115, 677, 1069, 1069, 259, -734,
290, -119, -119, -119, 495, 230, 331, 230, 284, 848,
-107, 240, -112, 1007, 1170, 329, 236, -114, 1069, -114,
641, 224, 648, 224, 456, 839, -121, 1209, -121, 263,
-120, -642, 122, 1073, 1074, 849, 521, 122, 718, 643,
-120, 960, -120, 122, 1147, 287, 1239, 122, 583, -643,
302, 491, 285, 746, 883, 73, 890, 930, 268, 122,
290, -113, 380, 380, 380, 380, -108, 558, 559, 313,
474, 640, 961, 642, 517, -116, 850, -733, 552, -114,
962, -118, 1239, 633, 1044, 1213, 218, 1147, -107, 449,
-115, 452, -116, 1018, -116, 576, -118, 122, -118, -634,
587, 122, -110, 122, 511, 287, 747, -633, 697, -108,
-107, 864, 632, -734, -107, 956, -352, 1051, 697, -115,
677, -115, 1212, 459, 73, -107, 512, 578, -634, 557,
-111, 380, 578, 717, 336, 717, -633, 941, 944, 944,
1165, 493, -635, 536, -352, -352, 650, 889, 911, 633,
893, 912, 218, -109, 912, 908, 935, 966, 968, 632,
1094, 831, 536, 284, 973, 975, 883, 1194, 303, 887,
741, -635, 741, 692, 905, -107, -352, 633, 632, 1115,
-106, -109, 506, 1069, 587, 587, 867, -108, 858, 459,
-106, 350, 351, 374, 208, 1250, 304, 122, 538, 539,
206, 507, 441, 305, 441, 633, 632, 285, 218, -108,
1152, 678, 484, -108, 693, 290, 900, 538, 539, 446,
-733, 375, 423, 779, -108, 340, 493, 485, 1153, 473,
339, -109, 510, 511, 632, 903, 344, 625, 1127, 634,
1151, 363, 364, 536, 585, 459, 1137, 521, 284, -121,
759, 345, -730, -109, 521, 512, 703, -109, -106, -120,
287, 721, 996, -642, 1015, 1017, 883, 429, -109, 1020,
60, 1022, 721, 1023, 521, 310, 487, 311, 585, 585,
-106, -643, 1080, 1083, -106, 585, 585, 428, 536, -104,
842, 485, 285, -113, -628, -106, 1190, -121, 538, 539,
290, 1202, 429, 1197, 1096, 684, 862, -105, 863, 430,
677, -114, 758, 1075, 239, 366, 367, 368, 369, 370,
1086, 374, -628, -628, 829, 823, 807, 825, -112, -636,
811, 374, -121, 239, -731, 1038, -116, 240, -118, 818,
944, 541, 1048, 538, 539, 287, 673, 1101, 868, 375,
376, 438, -730, 633, -628, 122, 218, 122, -636, 375,
442, 432, -730, 633, 901, 1003, 218, 717, 717, 901,
284, 818, 1081, 1084, 441, 858, -631, 122, 816, 855,
821, 377, 632, 473, 437, 1125, 817, 812, 808, 1247,
-315, 443, 632, 459, 1097, -115, 820, 816, 813, 1230,
208, 811, 818, 459, -631, -631, 206, 851, -116, -111,
536, 1103, 821, -120, 285, 439, -118, 493, -315, -315,
1171, 447, 290, -107, 441, 374, 972, -116, 854, 1112,
1114, 445, 1116, 374, -731, 240, -631, 1117, 233, 284,
970, 585, 1037, 821, -731, -640, 1161, 236, 977, 1162,
-315, 817, 813, 375, 471, 91, -115, 91, -734, 345,
865, 375, 498, 541, 536, 538, 539, 287, 1202, 225,
225, 651, 477, -640, -640, 652, 1001, -109, -84, 813,
995, -118, -638, 285, 633, 443, -99, 218, 122, 876,
-85, 290, 122, 499, 1175, 1177, 1178, 1179, 492, -641,
807, 807, 910, 916, 807, -640, 91, 91, 483, 922,
288, -638, 922, 632, -306, 972, 489, 537, 651, 538,
539, 225, 940, 322, 459, 419, 994, -641, -641, -748,
993, 587, 240, -637, 497, -639, 287, 521, 288, 374,
550, -106, -306, -306, 578, -115, 225, 225, -737, 564,
225, 392, 403, 403, 1195, 225, 1198, 813, 953, -641,
122, 1220, -637, 122, -639, 587, 587, 375, 646, 983,
-649, 983, 587, 587, -306, 374, -628, 669, 671, 912,
929, 834, 571, -631, 931, -316, 206, 865, 958, 959,
-737, 380, 1216, 568, 669, 671, 1243, 374, 661, 647,
584, 1030, 1031, 375, 656, -628, 320, 321, 1046, 645,
813, 441, -631, -316, -316, 551, 1089, 536, -737, -737,
813, 649, 698, 374, 654, 375, 777, 662, 877, 978,
912, 122, 122, 694, 721, 657, 877, 686, 122, 688,
1246, 690, 1248, 122, 697, -316, 1163, 1164, -737, 1249,
-737, 375, 1182, 695, 1037, 1029, -99, 778, -733, 467,
807, 1037, 496, 496, 807, 91, 704, 1088, 536, 719,
541, 1259, 538, 539, 723, 807, 807, 807, 1104, 374,
733, 807, 807, 1183, 724, 536, 225, 727, 225, 225,
876, 731, 225, 284, 225, 734, 736, 122, 91, 463,
91, 1113, 751, 807, 755, 284, 813, 375, 1192, 464,
465, 753, 122, 91, -288, 91, 813, 861, 769, 813,
461, 542, 770, 538, 539, 1148, 773, 380, 587, 774,
122, 122, 813, 775, 815, 288, 824, 285, 739, 657,
538, 539, 1154, 831, 869, 1123, 834, 1037, 480, 285,
872, 1184, 482, 41, 42, 43, 44, 405, 874, 902,
501, 1039, 502, 503, 504, 505, 506, 91, 225, 225,
225, 225, 91, 225, 225, 904, 807, 916, 91, 721,
918, 919, 91, 807, -289, 507, 955, 721, 956, 1168,
287, 957, 225, 345, 91, 288, 284, 593, 965, 1207,
1208, 971, 287, 912, 1005, 761, 876, 1010, 1011, 508,
358, 359, 1014, 1185, 536, 509, 510, 511, 1033, 122,
1016, 730, 951, 1019, 895, 896, 1027, 897, 1045, 1047,
225, 1021, 91, 953, 46, 47, 91, 225, 91, 512,
285, 1052, -290, 122, 513, 1058, 1059, 362, 405, 1205,
780, 514, 225, 813, 813, 813, 1106, 366, 367, 368,
369, 370, 807, 1070, 1107, 911, 1130, 744, 1217, 538,
539, 822, 1129, 1174, 1131, 992, 826, 1136, 830, 122,
1172, 593, 593, 807, 1138, 997, 1140, -291, 1145, 633,
1150, 1176, 218, 287, 1241, 1181, 225, 501, 122, 502,
503, 504, 505, 506, 501, 1186, 502, 503, 504, 505,
380, 380, 1199, 1191, 983, 1201, 1224, 807, 632, 807,
225, 1226, 507, 501, 122, 502, 503, 504, 505, 459,
685, 758, 91, 1231, 80, 687, 80, 1233, 689, 1237,
721, 691, 1242, 1244, 1255, -733, 508, -734, 80, 80,
288, 983, 225, 510, 511, 807, 469, 700, 967, 969,
807, 699, 702, 701, 1000, 974, 976, 390, 407, 373,
853, 1050, 711, 1039, 914, 1240, 512, 1008, 1039, 870,
1039, 1053, 1039, 1215, 1057, 80, 80, 983, 1034, 925,
1108, 813, 502, 503, 504, 505, 1002, 1076, 923, 767,
80, 924, 1251, 926, 1072, 1095, 1126, 1203, 967, 969,
1204, 974, 976, 1223, 345, 501, 1071, 502, 503, 504,
505, 427, 745, 328, 420, 80, 80, 886, 1193, 80,
1033, 358, 359, 1149, 80, 288, 1189, 1033, 0, 1033,
1045, 0, 749, 750, 0, 877, 276, 1045, 0, 1045,
0, 0, 501, 0, 502, 503, 504, 505, 506, 0,
0, 0, 771, 0, 711, 0, 1039, 789, 1039, 987,
712, 0, 991, 1039, 0, 1039, 0, 507, 366, 367,
368, 369, 370, 0, 0, 0, 998, 0, 0, 0,
91, 560, 91, 0, 0, 0, 0, 1039, 0, 0,
225, 508, 315, 316, 317, 318, 319, 509, 510, 511,
225, 0, 91, 225, 0, 0, 0, 0, 1158, 1159,
1160, 1087, 0, 1033, 0, 1033, 0, 0, 0, 0,
1033, 512, 1033, 1045, 0, 1045, 0, 0, 0, 0,
1045, 0, 1045, 514, 80, 0, 0, 0, 0, 0,
0, 0, 1087, 0, 1033, 0, 0, 288, 0, 0,
0, 0, 0, 0, 1045, 80, 0, 80, 80, 0,
0, 80, 0, 80, 866, 0, 0, 80, 0, 80,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 80, 0, 80, 0, 873, 0, 0, 0,
431, 0, 0, 433, 434, 435, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1090, 0, 0,
1091, 0, 1098, 91, 0, 0, 288, 91, 593, 1102,
0, 225, 1105, 501, 0, 502, 503, 504, 505, 506,
0, 789, 789, 0, 0, 789, 80, 80, 80, 80,
80, 80, 80, 80, 0, 0, 1245, 80, 507, 0,
0, 80, 593, 593, 0, 0, 0, 0, 0, 593,
593, 80, 0, 80, 0, 0, 80, 0, 0, 0,
0, 0, 508, 0, 0, 0, 0, 0, 509, 510,
511, 0, 102, 0, 102, 91, 0, 225, 91, 0,
0, 0, 1139, 1141, 0, 0, 102, 102, 0, 80,
0, 80, 512, 0, 0, 80, 80, 80, 0, 0,
0, 240, 0, 0, 514, 0, 0, 0, 0, 577,
0, 80, 999, 0, 590, 0, 0, 0, 0, 1169,
0, 0, 0, 102, 102, 1004, 0, 0, 1173, 0,
0, 1006, 0, 0, 0, 0, 0, 0, 102, 0,
80, 80, 0, 0, 0, 0, 91, 91, 0, 0,
0, 0, 0, 91, 0, 80, 0, 0, 91, 0,
0, 0, 0, 102, 102, 0, 1025, 102, 0, 0,
0, 0, 102, 0, 0, 0, 0, 0, 0, 80,
0, 789, 0, 0, 0, 789, 0, 0, 0, 0,
0, 80, 0, 0, 0, 0, 789, 789, 789, 0,
0, 0, 789, 789, 0, 593, 0, 0, 674, 676,
0, 80, 91, 225, 0, 0, 0, 276, 0, 0,
0, 0, 0, 1077, 789, 0, 0, 91, 1225, 1227,
0, 0, 0, 0, 1232, 0, 1234, 1235, 0, 0,
0, 0, 0, 0, 0, 91, 91, 0, 0, 0,
0, 0, 0, 0, 676, 0, 0, 276, 0, 0,
1121, 0, 0, 0, 501, 0, 502, 503, 504, 505,
506, 0, 1135, 0, 0, 0, 0, 0, 0, 0,
0, 0, 102, 0, 0, 1254, 1256, 1257, 1258, 507,
799, 0, 0, 0, 726, 0, 0, 789, 1260, 0,
0, 0, 0, 102, 789, 102, 102, 0, 0, 102,
800, 102, 1142, 508, 0, 102, 0, 102, 0, 509,
510, 511, 0, 0, 0, 0, 0, 0, 0, 0,
102, 0, 102, 0, 91, 0, 0, 0, 0, 0,
1155, 1156, 1157, 512, 0, 768, 0, 0, 0, 80,
0, 80, 0, 0, 0, 514, 0, 0, 91, 80,
0, 0, 0, 1187, 0, 0, 0, 0, 0, 80,
0, 80, 80, 0, 0, 0, 125, 0, 125, 0,
0, 0, 0, 789, 102, 102, 102, 102, 102, 102,
102, 102, 0, 0, 91, 102, 225, 225, 0, 102,
0, 0, 0, 0, 789, 0, 0, 0, 0, 102,
0, 102, 0, 91, 102, 0, 225, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 125, 125, 0,
0, 291, 0, 0, 0, 0, 0, 0, 789, 91,
789, 0, 0, 856, 0, 857, 0, 102, 0, 102,
0, 0, 0, 102, 102, 102, 0, 0, 676, 291,
276, 0, 0, 0, 799, 799, 0, 0, 799, 102,
0, 0, 396, 406, 406, 0, 789, 345, 0, 0,
0, 789, 80, 0, 800, 800, 80, 80, 800, 0,
80, 0, 0, 881, 358, 359, 0, 0, 102, 102,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 102, 0, 0, 0, 0, 0, 0,
0, 80, 80, 0, 0, 0, 907, 0, 80, 80,
361, 362, 0, 0, 0, 365, 0, 102, 0, 928,
0, 366, 367, 368, 369, 370, 0, 0, 0, 102,
0, 0, 0, 0, 80, 0, 80, 80, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 102,
0, 801, 0, 0, -760, 0, 0, 0, 0, 0,
0, 0, -760, -760, -760, 676, 125, -760, -760, -760,
0, -760, 0, 0, 0, 0, 0, 0, 0, -760,
-760, -760, 0, 0, 0, 989, 0, 0, 0, 0,
0, -760, -760, 0, -760, -760, -760, -760, -760, 125,
0, 125, 0, 0, 799, 80, 80, 0, 799, 0,
0, 0, 80, 0, 125, 0, 125, 80, 0, 799,
799, 799, -760, 0, 800, 799, 799, 0, 800, 0,
0, 0, 0, 0, 0, 0, 291, 0, 0, 800,
800, 800, 0, 0, 0, 800, 800, 799, 0, 0,
-760, -760, 0, 0, 0, 0, 0, -760, 0, 0,
121, 0, 121, 0, 80, 0, 0, 800, 125, 0,
0, 80, 80, 125, -760, 0, 0, 1049, 0, 125,
-760, -760, 0, 125, 0, 0, 80, 102, 0, 102,
236, 0, -760, 0, -760, 125, 291, 102, 594, 0,
0, 0, 0, 0, 80, 80, 0, 102, 0, 102,
102, 121, 121, 0, 0, 289, 0, 0, 0, 0,
799, 0, 0, 0, 0, 801, 801, 799, 0, 801,
0, 0, 0, 125, 802, 0, 0, 125, 1099, 125,
800, 0, 0, 289, 0, 0, 0, 800, 803, 0,
0, 0, 0, 0, 0, 276, 394, 404, 404, 404,
0, 23, 24, 25, 26, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
0, 0, 594, 594, 0, 0, 0, 41, 42, 43,
44, 45, 0, 80, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 799, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
102, 0, 0, 0, 102, 102, 800, 799, 102, 0,
0, 0, 0, 125, 0, 87, 0, 87, 58, 59,
60, 61, 62, 63, 64, 65, 66, 800, 0, 0,
1167, 291, 0, 80, 0, 80, 80, 0, 0, 102,
102, 799, 0, 799, 0, 0, 102, 102, 0, 0,
121, 0, 80, 0, 0, 80, 0, 0, 0, 283,
0, 800, 0, 800, 0, 801, 87, 87, 0, 801,
0, 0, 102, 0, 102, 102, 0, 0, 80, 799,
801, 801, 801, 121, 799, 121, 801, 801, 802, 802,
0, 0, 802, 0, 0, 0, 1211, 0, 121, 800,
121, 0, 803, 803, 800, 0, 803, 0, 801, 0,
0, 391, 0, 0, 0, 0, 291, 0, 0, 0,
289, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
0, 124, 0, 102, 102, 0, 0, 0, 0, 0,
102, 0, 121, 0, 0, 102, 0, 121, 0, 0,
0, 0, 0, 121, 0, 0, 0, 121, 0, 0,
0, 125, 0, 125, 0, 0, 0, 0, 0, 121,
289, 801, 0, 0, 0, 0, 0, 0, 801, 0,
124, 124, 0, 125, 0, 0, 0, 0, 0, 0,
0, 0, 102, 0, 0, 0, 0, 0, 0, 102,
102, 0, 0, 0, 0, 0, 0, 121, 0, 0,
0, 121, 0, 121, 102, 87, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 291, 0,
0, 0, 102, 102, 804, 0, 0, 0, 802, 0,
0, 0, 802, 0, 805, 0, 0, 0, 87, 0,
87, 0, 803, 802, 802, 802, 803, 801, 0, 802,
802, 0, 899, 87, 0, 87, 0, 803, 803, 803,
0, 0, 0, 803, 803, 0, 0, 0, 801, 0,
0, 802, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 125, 803, 0, 291, 125, 594,
0, 0, 0, 0, 0, 0, 0, 121, 0, 0,
0, 0, 801, 0, 801, 0, 0, 87, 0, 0,
0, 102, 87, 0, 0, 289, 0, 0, 87, 0,
0, 0, 87, 594, 594, 0, 0, 0, 0, 124,
594, 594, 0, 0, 87, 102, 0, 588, 0, 0,
801, 0, 0, 0, 802, 801, 0, 0, 0, 0,
0, 802, 0, 0, 0, 0, 125, 0, 803, 125,
0, 0, 124, 0, 124, 803, 0, 0, 0, 0,
0, 102, 87, 102, 102, 0, 87, 124, 87, 124,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
102, 0, 0, 102, 0, 0, 0, 0, 804, 804,
289, 0, 804, 0, 0, 0, 0, 0, 805, 805,
0, 0, 805, 0, 0, 0, 102, 0, 0, 0,
0, 588, 588, 0, 806, 0, 0, 125, 125, 0,
802, 124, 0, 0, 125, 0, 124, 0, 0, 125,
0, 0, 124, 0, 803, 0, 124, 0, 0, 0,
0, 802, 0, 0, 0, 121, 0, 121, 124, 0,
0, 124, 0, 0, 0, 803, 0, 0, 0, 0,
0, 0, 87, 0, 0, 0, 0, 121, 0, 0,
0, 0, 0, 0, 0, 802, 594, 802, 0, 0,
0, 0, 0, 125, 0, 0, 124, 0, 0, 803,
124, 803, 124, 0, 0, 0, 0, 0, 125, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 289, 802, 0, 0, 125, 125, 802, 0,
0, 0, 0, 0, 0, 0, 0, 803, 0, 0,
0, 1124, 803, 0, 0, 124, 124, 0, 0, 0,
0, 0, 0, 406, 0, 0, 0, 0, 804, 0,
0, 0, 804, 0, 0, 0, 0, 0, 805, 0,
0, 0, 805, 804, 804, 804, 0, 0, 0, 804,
804, 0, 0, 805, 805, 805, 0, 0, 121, 805,
805, 289, 121, 0, 0, 0, 124, 0, 806, 806,
0, 804, 806, 345, 346, 347, 348, 349, 350, 351,
352, 805, 354, 355, 0, 125, 0, 0, 0, 0,
358, 359, 0, 0, 0, 0, 0, 0, 0, 0,
87, 0, 87, 0, 0, 0, 0, 0, 0, 125,
0, 0, 0, 0, 406, 0, 0, 0, 0, 0,
0, 0, 87, 0, 0, 0, 361, 362, 363, 364,
121, 365, 0, 121, 0, 0, 0, 366, 367, 368,
369, 370, 0, 0, 804, 125, 0, 0, 0, 0,
0, 804, 0, 0, 805, 0, 0, 0, 0, 0,
0, 805, 0, 0, 125, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 121, 121, 0, 0, 0, 0, 0, 121, 0,
0, 0, 0, 121, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 124, 0, 124, 0, 806, 0,
804, 0, 806, 87, 0, 0, 0, 87, 588, 0,
805, 0, 0, 806, 806, 806, 124, 0, 0, 806,
806, 804, 0, 0, 0, 0, 0, 0, 0, 0,
0, 805, 0, 0, 0, 0, 0, 121, 0, 0,
0, 806, 588, 588, 0, 0, 0, 0, 0, 588,
588, 0, 121, 0, 0, 804, 0, 804, 0, 0,
0, 0, 0, 0, 0, 805, 0, 805, 0, 0,
121, 121, 0, 0, 0, 87, 0, 0, 87, 0,
0, 0, 0, 0, 0, 1122, 0, 0, 0, 0,
0, 0, 0, 804, 0, 0, 0, 404, 804, 0,
0, 0, 0, 805, 0, 0, 0, 0, 805, 0,
0, 0, 0, 0, 806, 0, 0, 0, 0, 0,
0, 806, 0, 0, 0, 0, 0, 124, 0, 0,
0, 124, 124, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 87, 87, 0, 0,
0, 0, 0, 87, 0, 0, 0, 0, 87, 121,
0, 0, 0, 0, 0, 0, 124, 124, 0, 0,
0, 0, 0, 124, 124, 345, -761, -761, -761, -761,
350, 351, 0, 121, -761, -761, 0, 0, 404, 0,
0, 0, 358, 359, 0, 0, 0, 0, 0, 124,
806, 0, 124, 0, 0, 588, 0, 0, 0, 0,
0, 0, 87, 0, 0, 0, 0, 0, 0, 121,
0, 806, 0, 0, 0, 0, 0, 87, 361, 362,
363, 364, 0, 365, 0, 0, 0, 0, 121, 366,
367, 368, 369, 370, 0, 87, 87, 0, 0, 0,
0, 220, 220, 0, 0, 806, 0, 806, 0, 0,
1120, 0, 0, 0, 121, 0, 0, 0, 0, 0,
124, 124, 0, 0, 0, 0, 0, 124, 0, 0,
0, 0, 124, 253, 256, 257, 258, 0, 0, 0,
220, 220, 0, 806, 0, 0, 0, 0, 806, 0,
0, 0, 306, 308, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
0, 0, 0, 0, 87, 0, 124, 220, 23, 24,
25, 26, 0, 0, 0, 0, 0, 0, 0, 0,
0, 124, 0, 0, 32, 33, 34, 780, 87, 0,
0, 781, 0, 0, 41, 42, 43, 44, 45, 124,
124, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 87, 782, 783, 0, 0, 0,
0, 0, 0, 784, 0, 0, 785, 0, 0, 786,
787, 0, 1054, 87, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
788, 0, 0, 0, 0, 220, 0, 0, 220, 220,
220, 0, 308, 776, 0, 0, 283, 0, 124, 0,
0, 0, 0, 0, 0, 0, 0, 0, 220, 0,
220, 220, 0, 0, 0, 0, 0, 0, 0, 468,
0, 0, 124, 0, 0, 0, 345, 346, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, 0,
0, 0, 0, 358, 359, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -261, 0, 0, 124, 0, 361,
362, 363, 364, 0, 365, 0, 0, 0, 0, 0,
366, 367, 368, 369, 370, 0, 0, 0, 371, 0,
0, 0, 0, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 220, 0, 0, 0, 0, 589,
595, 596, 597, 598, 599, 0, 0, 600, 601, 602,
603, 604, 605, 606, 607, 0, 609, 610, 0, 0,
611, 612, 613, 614, 615, 616, 617, 618, 619, 0,
0, 0, 220, 0, 0, 0, 0, 0, 0, 23,
24, 25, 26, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 32, 33, 34, 780, 0,
0, 0, 781, 0, 0, 41, 42, 43, 44, 45,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 668, 668, 0, 0, 0, 0, 0,
0, 0, 668, 220, 220, 0, 782, 783, 220, 0,
668, 668, 220, 0, 784, 0, 0, 785, 258, 0,
786, 787, 0, 943, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 668, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
0, 788, 220, 0, 0, 0, 240, 0, 0, 0,
0, 0, 0, 0, 220, 0, -737, 283, 0, 0,
0, 0, 0, 0, -737, -737, -737, 0, 0, -737,
-737, -737, 0, -737, 0, 0, 0, 0, 0, 220,
0, -737, -737, -737, -737, -737, 0, 0, 0, 0,
0, 0, 0, -737, -737, 0, -737, -737, -737, -737,
-737, 0, 0, 0, 0, 748, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 752,
0, 0, 0, 760, -737, 0, 0, 0, 0, 0,
220, 0, 0, -737, -737, -737, -737, -737, -737, -737,
-737, -737, -737, -737, -737, -737, 0, 0, 0, 0,
-737, -737, -737, -737, 0, 859, -737, 0, 0, -737,
0, 0, -737, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -737, 0, 0, -737,
0, -737, -737, -737, -737, -117, -737, -737, -737, -737,
0, -737, 0, -737, -737, 0, -737, -737, -737, -737,
-737, -737, 220, 0, 0, -737, -737, 0, 0, -628,
0, 0, 220, 0, 0, 0, 0, -628, -628, -628,
0, 0, -628, -628, -628, 0, -628, 0, 220, 0,
220, 0, 0, 0, -628, 0, -628, -628, -628, 0,
0, 0, 0, 220, 0, 220, -628, -628, 0, -628,
-628, -628, -628, -628, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -628, 220, 0,
0, 0, 0, 0, 0, 0, -628, -628, -628, -628,
-628, -628, -628, -628, -628, -628, -628, -628, -628, 0,
0, 0, 0, -628, -628, -628, -628, 0, -628, -628,
0, 220, -628, 0, 0, -628, 0, 0, 0, 0,
0, 0, 0, 0, 220, 0, 0, 0, 0, -628,
668, 932, -628, 220, -628, 0, -628, -628, -628, -628,
-628, -628, -628, 0, -628, 0, -628, -628, 0, -628,
-628, -628, -628, -628, -628, 0, 0, 0, -628, -628,
0, 0, 0, 0, 668, 668, 0, 0, -450, 0,
220, 668, 668, 0, 0, 0, -450, -450, -450, 0,
0, -450, -450, -450, 0, -450, 0, 0, 0, 0,
220, 0, 0, -450, -450, -450, -450, 0, 0, 0,
0, 0, 0, 0, 0, -450, -450, 0, -450, -450,
-450, -450, -450, 0, 668, 668, 0, 668, 668, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -450, 0, 0, 0,
0, 0, 0, 0, 0, -450, -450, -450, -450, -450,
-450, -450, -450, -450, -450, -450, -450, -450, 0, 0,
0, 1026, -450, -450, -450, -450, 0, 0, -450, 0,
0, -450, 1032, 0, -450, 0, 0, 0, 0, 0,
0, 0, 220, 0, 0, 0, 0, 0, -450, 0,
0, 0, 0, -450, -450, -450, -450, 0, -450, -450,
-450, -450, 0, -450, 236, -450, -450, 0, -450, -450,
-450, -450, -450, -450, 0, 0, 0, -450, -760, 4,
1085, 5, 6, 7, 8, 9, 0, 668, 0, 10,
11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
17, 18, 19, 220, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 27, 668, 0,
220, 0, 0, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 345, 346, 347, 348,
349, 350, 351, 48, 49, 354, 355, 0, 0, 0,
0, 0, 0, 358, 359, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 361,
362, 363, 364, 0, 365, 0, 0, 0, 0, 0,
366, 367, 368, 369, 370, 220, -760, 0, -760, 0,
0, 0, 0, 0, 67, 68, 0, 0, 0, 69,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 260, 0, 5, 6, 7, 8, 9, -760, -760,
-760, 10, 11, 0, 0, -760, 12, 0, 13, 14,
15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
0, 220, 0, 0, 0, 28, 29, 261, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 220, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -760, 260,
-760, 5, 6, 7, 8, 9, 67, 68, -760, 10,
11, 69, -760, -760, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 0, 28, 29, 261, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -760, 260, -760, 5,
6, 7, 8, 9, 67, 68, -760, 10, 11, 69,
0, -760, 12, -760, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -760, 260, -760, 5, 6, 7,
8, 9, 67, 68, -760, 10, 11, 69, 0, -760,
12, 0, 13, 14, 15, 16, 17, 18, 19, -760,
0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
29, 261, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -760, 260, -760, 5, 6, 7, 8, 9,
67, 68, -760, 10, 11, 69, 0, -760, 12, 0,
13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-760, 0, -760, 0, 0, 0, 0, 0, 67, 68,
0, 0, 260, 69, 5, 6, 7, 8, 9, 0,
-760, -760, 10, 11, 0, 0, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 28, 29, 261, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -760,
260, -760, 5, 6, 7, 8, 9, 67, 68, 0,
10, 11, 69, 0, 0, 12, 0, 13, 14, 15,
16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
0, 0, 0, 0, 28, 29, 261, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
262, 54, -760, 55, 56, 0, 57, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -760, 260, -760,
5, 6, 7, 8, 9, 67, 68, 0, 10, 11,
69, 0, 0, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
0, 0, 28, 29, 261, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
-760, 55, 56, 0, 57, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -760, 4, -760, 5, 6,
7, 8, 9, 67, 68, 0, 10, 11, 69, 0,
0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, -760, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -760, 260, -760, 5, 6, 7, 8,
9, 67, 68, 0, 10, 11, 69, 0, 0, 12,
0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
261, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
-760, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -760, 260, -760, 5, 6, 7, 8, 9, 67,
68, -760, 10, 11, 69, 0, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 28, 29, 261, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -760,
260, -760, 5, 6, 7, 8, 9, 67, 68, 0,
10, 11, 69, 0, 0, 12, 0, 13, 14, 15,
16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
0, 0, 0, 0, 28, 29, 261, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, -760,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -631, 0, 0, -760, 0, -760,
0, 0, -631, -631, -631, 67, 68, -631, -631, -631,
69, -631, 0, 0, 0, 0, 0, 0, 0, -631,
0, -631, -631, -631, 0, 0, 0, 0, 0, 0,
0, -631, -631, 0, -631, -631, -631, -631, -631, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -631, 0, 0, 0, 0, 0, 0, 0,
0, -631, -631, -631, -631, -631, -631, -631, -631, -631,
-631, -631, -631, -631, 0, 0, 0, 0, -631, -631,
-631, -631, 0, -631, -631, 0, 0, -631, 0, 0,
-631, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -631, 0, 0, -631, 0, -631,
0, -631, -631, -631, -631, -631, -631, -631, 0, -631,
0, -631, -631, 0, -631, -631, -631, -631, -631, -631,
-738, 0, 0, -631, -631, 0, 0, 0, -738, -738,
-738, 0, 0, -738, -738, -738, 0, -738, 0, 0,
0, 0, 0, 0, 0, -738, -738, -738, -738, -738,
0, 0, 0, 0, 0, 0, 0, -738, -738, 0,
-738, -738, -738, -738, -738, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -738, 0,
0, 0, 0, 0, 0, 0, 0, -738, -738, -738,
-738, -738, -738, -738, -738, -738, -738, -738, -738, -738,
0, 0, 0, 0, -738, -738, -738, -738, 0, 0,
-738, 0, 0, -738, 0, 0, -738, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-738, 0, 0, -738, 0, -738, -738, -738, -738, 0,
-738, -738, -738, -738, 0, -738, 0, -738, -738, 0,
-738, -738, -738, -738, -738, -738, -739, 0, 0, -738,
-738, 0, 0, 0, -739, -739, -739, 0, 0, -739,
-739, -739, 0, -739, 0, 0, 0, 0, 0, 0,
0, -739, -739, -739, -739, -739, 0, 0, 0, 0,
0, 0, 0, -739, -739, 0, -739, -739, -739, -739,
-739, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -739, 0, 0, 0, 0, 0,
0, 0, 0, -739, -739, -739, -739, -739, -739, -739,
-739, -739, -739, -739, -739, -739, 0, 0, 0, 0,
-739, -739, -739, -739, 0, 0, -739, 0, 0, -739,
0, 0, -739, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -739, 0, 0, -739,
0, -739, -739, -739, -739, 0, -739, -739, -739, -739,
0, -739, 0, -739, -739, 0, -739, -739, -739, -739,
-739, -739, -315, 0, 0, -739, -739, 0, 0, 0,
-315, -315, -315, 0, 0, -315, -315, -315, 0, -315,
0, 0, 0, 0, 0, 0, 0, -315, 0, -315,
-315, -315, 0, 0, 0, 0, 0, 0, 0, -315,
-315, 0, -315, -315, -315, -315, -315, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-315, 0, 0, 0, 0, 0, 0, 0, 0, -315,
-315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
-315, -315, 0, 0, 0, 0, -315, -315, -315, -315,
0, 860, -315, 0, 0, -315, 0, 0, -315, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -315, 0, 0, -315, 0, -315, 0, -315,
-315, -119, -315, -315, -315, -315, 0, -315, 0, -315,
-315, 0, -315, -315, -315, -315, -315, -315, -307, 0,
0, -315, -315, 0, 0, 0, -307, -307, -307, 0,
0, -307, -307, -307, 0, -307, 0, 0, 0, 0,
0, 0, 0, -307, 0, -307, -307, -307, 0, 0,
0, 0, 0, 0, 0, -307, -307, 0, -307, -307,
-307, -307, -307, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -307, 0, 0, 0,
0, 0, 0, 0, 0, -307, -307, -307, -307, -307,
-307, -307, -307, -307, -307, -307, -307, -307, 0, 0,
0, 0, -307, -307, -307, -307, 0, 0, -307, 0,
0, -307, 0, 0, -307, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -307, 0,
0, -307, 0, -307, 0, -307, -307, 0, -307, -307,
-307, -307, 0, -307, 0, -307, -307, 0, -307, -307,
-307, -307, -307, -307, -760, 0, 0, -307, -307, 0,
0, 0, -760, -760, -760, 0, 0, -760, -760, -760,
0, -760, 0, 0, 0, 0, 0, 0, 0, -760,
-760, -760, -760, 0, 0, 0, 0, 0, 0, 0,
0, -760, -760, 0, -760, -760, -760, -760, -760, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -760, 0, 0, 0, 0, 0, 0, 0,
0, -760, -760, -760, -760, -760, -760, -760, -760, -760,
-760, -760, -760, -760, 0, 0, 0, 0, -760, -760,
-760, -760, 0, 0, -760, 0, 0, -760, 0, 0,
-760, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -760, 0, 0, 0, 0, -760,
-760, -760, -760, 0, -760, -760, -760, -760, 0, -760,
236, -760, -760, 0, -760, -760, -760, -760, -760, -760,
-322, 0, 0, -760, 0, 0, 0, 0, -322, -322,
-322, 0, 0, -322, -322, -322, 0, -322, 0, 0,
0, 0, 0, 0, 0, -322, 0, -322, -322, 0,
0, 0, 0, 0, 0, 0, 0, -322, -322, 0,
-322, -322, -322, -322, -322, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -322, 0,
0, 0, 0, 0, 0, 0, 0, -322, -322, -322,
-322, -322, -322, -322, -322, -322, -322, -322, -322, -322,
0, 0, 0, 0, -322, -322, -322, -322, 0, 0,
-322, 0, 0, -322, 0, 0, -322, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-322, 0, 0, 0, 0, -322, 0, -322, -322, 0,
-322, -322, -322, -322, 0, -322, 233, -322, -322, 0,
-322, -322, -322, -322, -322, -322, -737, 0, 0, -322,
0, 0, 0, 0, -737, -737, -737, 0, 0, 0,
-737, -737, 0, -737, 0, 0, 0, 0, 0, 0,
0, -737, -737, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -737, -737, 0, -737, -737, -737, -737,
-737, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -737, 0, 0, 0, 0, 0,
0, 0, 0, -737, -737, -737, -737, -737, -737, -737,
-737, -737, -737, -737, -737, -737, 0, 0, 0, 0,
-737, -737, -737, -737, 0, 809, -737, 0, 0, -737,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -737, 0, 0, 0,
0, -108, -737, -737, -737, -117, -737, -737, -737, -737,
0, -737, 0, 0, -737, 0, -737, -737, -737, -737,
-737, -737, -737, 0, 0, -737, 0, 0, 0, 0,
-737, -737, -737, 0, 0, 0, -737, -737, 0, -737,
0, 0, 0, 0, 0, 0, 0, -737, -737, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -737,
-737, 0, -737, -737, -737, -737, -737, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-737, 0, 0, 0, 0, 0, 0, 0, 0, -737,
-737, -737, -737, -737, -737, -737, -737, -737, -737, -737,
-737, -737, 0, 0, 0, 0, -737, -737, -737, -737,
0, 809, -737, 0, 0, -737, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -737, 0, 0, 0, 0, -737, -737, -737,
-737, -117, -737, -737, -737, -737, 0, -737, 0, 0,
-737, 0, -737, -737, -737, -737, -737, -737, -315, 0,
0, -737, 0, 0, 0, 0, -315, -315, -315, 0,
0, 0, -315, -315, 0, -315, 0, 0, 0, 0,
0, 0, 0, -315, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -315, -315, 0, -315, -315,
-315, -315, -315, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -315, 0, 0, 0,
0, 0, 0, 0, 0, -315, -315, -315, -315, -315,
-315, -315, -315, -315, -315, -315, -315, -315, 0, 0,
0, 0, -315, -315, -315, -315, 0, 810, -315, 0,
0, -315, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -315, 0,
0, 0, 0, -110, 0, -315, -315, -119, -315, -315,
-315, -315, 0, -315, 0, 0, -315, 0, -315, -315,
-315, -315, -315, -315, -315, 0, 0, -315, 0, 0,
0, 0, -315, -315, -315, 0, 0, 0, -315, -315,
0, -315, 0, 0, 0, 0, 0, 0, 0, -315,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -315, -315, 0, -315, -315, -315, -315, -315, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -315, 0, 0, 0, 0, 0, 0, 0,
0, -315, -315, -315, -315, -315, -315, -315, -315, -315,
-315, -315, -315, -315, 0, 0, 0, 0, -315, -315,
-315, -315, 0, 810, -315, 0, 0, -315, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -315, 0, 0, 0, 0, -315,
0, -315, -315, -119, -315, -315, -315, -315, 0, -315,
0, 0, -315, 0, -315, -315, -315, -315, -315, -315,
0, 0, 0, -315, 5, 6, 7, 8, 9, 0,
0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 551,
0, 5, 6, 7, 8, 9, 0, 67, 68, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 0, 28, 29, 261, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 551, 0, 5, 6,
7, 8, 9, 0, 67, 68, 10, 11, 0, 69,
0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
0, 67, 68, 10, 11, 0, 69, 0, 12, 0,
13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
210, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
211, 0, 0, 212, 54, 0, 55, 56, 0, 213,
214, 215, 58, 59, 216, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 240, 5, 6, 7, 0, 9, 67, 217,
0, 10, 11, 69, 0, 0, 12, 0, 13, 14,
15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 0, 0, 209,
0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 210, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
0, 212, 54, 0, 55, 56, 0, 213, 214, 215,
58, 59, 216, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5, 6, 7, 8, 9, 0, 67, 217, 10, 11,
0, 69, 0, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
0, 0, 28, 29, 0, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
0, 9, 0, 67, 68, 10, 11, 0, 69, 0,
12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
39, 40, 210, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 453, 0, 0, 0, 0,
0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
0, 213, 214, 215, 58, 59, 216, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
67, 217, 10, 11, 0, 69, 0, 12, 0, 13,
14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
0, 0, 212, 54, 0, 55, 56, 0, 675, 214,
215, 58, 59, 216, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 67, 217, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 248,
249, 18, 19, 0, 0, 0, 0, 0, 20, 250,
251, 23, 24, 25, 26, 0, 0, 209, 0, 0,
0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 453,
0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
54, 0, 55, 56, 0, 675, 214, 215, 58, 59,
216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
7, 0, 9, 0, 67, 217, 10, 11, 0, 69,
0, 12, 0, 13, 14, 15, 248, 249, 18, 19,
0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
56, 0, 213, 214, 0, 58, 59, 216, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
0, 67, 217, 10, 11, 0, 69, 0, 12, 0,
13, 14, 15, 248, 249, 18, 19, 0, 0, 0,
0, 0, 20, 250, 251, 23, 24, 25, 26, 0,
0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
210, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
211, 0, 0, 212, 54, 0, 55, 56, 0, 0,
214, 215, 58, 59, 216, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 9, 0, 67, 217,
10, 11, 0, 69, 0, 12, 0, 13, 14, 15,
248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
212, 54, 0, 55, 56, 0, 675, 214, 0, 58,
59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
6, 7, 0, 9, 0, 67, 217, 10, 11, 0,
69, 0, 12, 0, 13, 14, 15, 248, 249, 18,
19, 0, 0, 0, 0, 0, 20, 250, 251, 23,
24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 210, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
55, 56, 0, 0, 214, 0, 58, 59, 216, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
9, 0, 67, 217, 10, 11, 0, 69, 0, 12,
0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 310, 0, 311, 5, 6, 7, 0, 9, 67,
68, 0, 10, 11, 69, 0, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 240, 5, 6, 7, 0, 9, 67, 68, 0,
10, 11, 69, 0, 0, 12, 0, 13, 14, 15,
248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 467, 0, 0, 0, 5,
6, 7, 0, 9, 0, 67, 217, 10, 11, 0,
69, 0, 12, 0, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
55, 56, 0, 575, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
9, 0, 67, 217, 10, 11, 0, 69, 0, 12,
0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
575, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 5, 6, 7, 0, 9, 0, 67,
217, 10, 11, 0, 69, 0, 12, 0, 13, 14,
15, 248, 249, 18, 19, 0, 0, 0, 0, 0,
20, 250, 251, 23, 24, 25, 26, 0, 0, 209,
0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
0, 212, 54, 0, 55, 56, 0, 927, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 67, 217, 10, 11,
0, 69, 0, 12, 0, 13, 14, 15, 248, 249,
18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
0, 55, 56, 0, 988, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
0, 9, 0, 67, 217, 10, 11, 0, 69, 0,
12, 0, 13, 14, 15, 248, 249, 18, 19, 0,
0, 0, 0, 0, 20, 250, 251, 23, 24, 25,
26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
0, 1166, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
67, 217, 10, 11, 0, 69, 0, 12, 0, 13,
14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 67, 217, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 209, 0, 0,
0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
7, 0, 9, 0, 67, 217, 10, 11, 0, 69,
0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
0, 67, 68, 10, 11, 0, 69, 0, 12, 0,
13, 14, 15, 248, 249, 18, 19, 0, 0, 0,
0, 0, 20, 250, 251, 23, 24, 25, 26, 0,
0, 209, 0, 0, 0, 0, 0, 0, 280, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
281, 0, 0, 212, 54, 0, 55, 56, 0, 0,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 282, 5, 6,
7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
0, 12, 0, 13, 14, 15, 248, 249, 18, 19,
0, 0, 0, 283, 0, 20, 250, 251, 23, 24,
25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
0, 280, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 281, 0, 0, 341, 54, 0, 55,
56, 0, 342, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
0, 0, 0, 12, 0, 13, 14, 15, 248, 249,
18, 19, 0, 0, 0, 0, 283, 20, 250, 251,
23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
0, 0, 0, 280, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 389, 0, 0, 53, 54,
0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
248, 249, 18, 19, 0, 0, 0, 0, 283, 20,
250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
0, 0, 0, 0, 0, 280, 0, 0, 32, 33,
34, 397, 36, 37, 38, 398, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 399, 0, 0, 0, 400, 0, 0,
212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
283, 20, 250, 251, 23, 24, 25, 26, 0, 0,
209, 0, 0, 0, 0, 0, 0, 280, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 281,
0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 582, 5, 6, 7,
0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
12, 0, 13, 14, 15, 248, 249, 18, 19, 0,
0, 0, 283, 0, 20, 250, 251, 23, 24, 25,
26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
280, 0, 0, 32, 33, 34, 397, 36, 37, 38,
398, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 400, 0, 0, 212, 54, 0, 55, 56,
0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
0, 0, 12, 0, 13, 14, 15, 248, 249, 18,
19, 0, 0, 0, 0, 283, 20, 250, 251, 23,
24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
0, 0, 280, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 281, 0, 0, 341, 54, 0,
55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
11, 0, 0, 0, 12, 0, 13, 14, 15, 248,
249, 18, 19, 0, 0, 0, 0, 283, 20, 250,
251, 23, 24, 25, 26, 0, 0, 209, 0, 0,
0, 0, 0, 0, 280, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1119, 0, 0, 212,
54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
15, 248, 249, 18, 19, 0, 0, 0, 0, 283,
20, 250, 251, 23, 24, 25, 26, 0, 0, 209,
0, 0, 0, 0, 0, 0, 280, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1134, 0,
0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 129, 130, 131, 132, 133,
134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
0, 283, 153, 154, 155, 408, 409, 410, 411, 160,
161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
166, 412, 413, 414, 415, 171, 37, 38, 416, 40,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 190, 191, 192, 193, 194, 195, 417, 0,
0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
171, 293, 294, 172, 295, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
193, 194, 195, 0, 0, 0, 0, 0, 196, 197,
198, 199, 200, 201, 202, 129, 130, 131, 132, 133,
134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
166, 167, 168, 169, 170, 171, 242, 0, 172, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
189, 0, 0, 59, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 190, 191, 192, 193, 194, 195, 0, 0,
0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
171, 0, 0, 172, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 188, 189, 0, 0, 59, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
193, 194, 195, 0, 0, 0, 0, 0, 196, 197,
198, 199, 200, 201, 202, 129, 130, 131, 132, 133,
134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
166, 167, 168, 169, 170, 171, 0, 0, 172, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
0, 0, 0, 0, 184, 185, 186, 187, 23, 24,
25, 26, 0, 0, 0, 0, 0, 0, 0, 188,
189, 0, 0, 0, 32, 33, 34, 780, 0, 0,
0, 781, 0, 1060, 41, 42, 43, 44, 45, 0,
0, 0, 190, 191, 192, 193, 194, 195, 0, 0,
0, 0, 507, 196, 197, 198, 199, 200, 201, 202,
0, 0, 0, 0, 0, 782, 783, 0, 0, 0,
0, 0, 0, 784, 0, 0, 785, 0, 0, 786,
787, 0, 943, 510, 0, 58, 59, 1078, 61, 62,
63, 64, 65, 66, 0, 23, 24, 25, 26, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
788, 32, 33, 34, 780, 0, 0, 0, 781, 0,
0, 41, 42, 43, 44, 45, 283, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 782, 783, 0, 0, 0, 0, 0, 0,
784, 0, 0, 785, 0, 0, 786, 787, 0, 943,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 23, 24, 25, 26, 0, 0, 0, 0,
0, 776, 0, 0, 0, 0, 0, 788, 32, 33,
34, 780, 0, 0, 0, 781, 0, 0, 41, 42,
43, 44, 45, 283, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 345, 346, 347, 348, 349, 350,
351, 352, 353, 354, 355, 356, 357, 0, 0, 782,
783, 358, 359, 0, 0, 0, 0, 784, 0, 0,
785, 0, 0, 786, 787, 0, 0, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 906, 0,
0, 0, 0, 0, 0, 0, 0, 361, 362, 363,
364, 0, 365, 0, 788, 0, 0, 0, 366, 367,
368, 369, 370, 917, 0, 0, 371, 0, 0, 0,
283, 345, 346, 347, 348, 349, 350, 351, 352, 353,
354, 355, 356, 357, 0, 0, 0, 0, 358, 359,
0, 0, 0, 0, 0, 0, 345, 346, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, 0,
0, 0, 0, 358, 359, 0, 0, 0, 0, 0,
0, 0, 0, 0, 361, 362, 363, 364, 0, 365,
0, 0, 0, 0, 0, 366, 367, 368, 369, 370,
0, 0, 0, 371, 0, 0, 0, 0, 0, 361,
362, 363, 364, 0, 365, 620, 621, 0, 0, 622,
366, 367, 368, 369, 370, 0, 0, 0, 371, 0,
0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 629, 630,
0, 0, 631, 190, 191, 192, 193, 194, 195, 236,
0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
202, 173, 174, 175, 176, 177, 178, 179, 180, 181,
0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 188, 189, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 679, 621, 0, 0, 680, 190, 191, 192, 193,
194, 195, 236, 0, 0, 0, 0, 196, 197, 198,
199, 200, 201, 202, 173, 174, 175, 176, 177, 178,
179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 682, 630, 0, 0, 683, 190,
191, 192, 193, 194, 195, 236, 0, 0, 0, 0,
196, 197, 198, 199, 200, 201, 202, 173, 174, 175,
176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 706, 621, 0,
0, 707, 190, 191, 192, 193, 194, 195, 236, 0,
0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709, 630, 0, 0, 710, 190, 191, 192, 193, 194,
195, 236, 0, 0, 0, 0, 196, 197, 198, 199,
200, 201, 202, 173, 174, 175, 176, 177, 178, 179,
180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 837, 621, 0, 0, 838, 190, 191,
192, 193, 194, 195, 236, 0, 0, 0, 0, 196,
197, 198, 199, 200, 201, 202, 173, 174, 175, 176,
177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 840, 630, 0, 0,
841, 190, 191, 192, 193, 194, 195, 236, 0, 0,
0, 0, 196, 197, 198, 199, 200, 201, 202, 173,
174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 846,
621, 0, 0, 847, 190, 191, 192, 193, 194, 195,
236, 0, 0, 0, 0, 196, 197, 198, 199, 200,
201, 202, 173, 174, 175, 176, 177, 178, 179, 180,
181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 664, 630, 0, 0, 665, 190, 191, 192,
193, 194, 195, 236, 0, 0, 0, 0, 196, 197,
198, 199, 200, 201, 202, 173, 174, 175, 176, 177,
178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 933, 621, 0, 0, 934,
190, 191, 192, 193, 194, 195, 236, 0, 0, 0,
0, 196, 197, 198, 199, 200, 201, 202, 173, 174,
175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 936, 630,
0, 0, 937, 190, 191, 192, 193, 194, 195, 236,
0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
202, 173, 174, 175, 176, 177, 178, 179, 180, 181,
0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 188, 189, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1218, 621, 0, 0, 1219, 190, 191, 192, 193,
194, 195, 236, 0, 0, 0, 0, 196, 197, 198,
199, 200, 201, 202, 173, 174, 175, 176, 177, 178,
179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1221, 630, 0, 0, 1222, 190,
191, 192, 193, 194, 195, 236, 0, 0, 0, 0,
196, 197, 198, 199, 200, 201, 202, 173, 174, 175,
176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1228, 621, 0,
0, 1229, 190, 191, 192, 193, 194, 195, 236, 0,
0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
664, 630, 0, 0, 665, 190, 191, 192, 193, 194,
195, 236, 0, 0, 0, 0, 196, 197, 198, 199,
200, 201, 202, 173, 174, 175, 176, 177, 178, 179,
180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
192, 193, 194, 195, 0, 0, 0, 0, 0, 196,
197, 198, 199, 200, 201, 202, 345, 346, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, 0,
0, 0, 0, 358, 359, 0, 0, 0, 0, 360,
345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 0, 0, 0, 0, 358, 359, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 361,
362, 363, 364, 0, 365, 0, 0, 0, 0, 0,
366, 367, 368, 369, 370, 0, 0, 0, 371, 0,
0, 0, 0, 361, 362, 363, 364, 0, 365, 0,
0, 0, 0, 240, 366, 367, 368, 369, 370, 0,
0, 0, 371, 345, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 0, 0, 0, 0,
358, 359, 0, 345, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, -761, -761, 0, 0, 0, 0,
358, 359, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 361, 362, 363, 364,
0, 365, 0, 0, 0, 0, 0, 366, 367, 368,
369, 370, 0, 0, 0, 371, 361, 362, 363, 364,
0, 365, 0, 0, 0, 0, 0, 366, 367, 368,
369, 370 ];
#[allow(non_upper_case_globals)]
const yycheck_: &'static [i32] = &[ 2, 91, 4, 57, 60, 16, 17, 22, 105, 85,
94, 526, 59, 97, 104, 28, 8, 96, 322, 382,
230, 53, 8, 344, 439, 322, 329, 447, 2, 832,
97, 85, 447, 400, 71, 377, 28, 274, 727, 724,
727, 278, 28, 57, 98, 99, 100, 57, 4, 508,
53, 53, 54, 731, 101, 57, 428, 429, 872, 825,
97, 497, 874, 608, 22, 80, 751, 487, 16, 17,
69, 946, 919, 59, 71, 85, 379, 1144, 27, 1011,
29, 55, 56, 85, 16, 17, 13, 77, 98, 99,
100, 102, 2, 344, 4, 292, 98, 99, 100, 101,
57, 443, 76, 77, 68, 963, 964, 55, 56, 29,
27, 37, 38, 1138, 52, 101, 376, 13, 378, 26,
93, 94, 80, 55, 97, 322, 25, 322, 85, 326,
13, 326, 1199, 292, 77, 225, 13, 782, 783, 262,
58, 98, 99, 100, 54, 100, 582, 724, 100, 25,
34, 129, 16, 17, 102, 66, 13, 499, 136, 77,
216, 66, 67, 322, 254, 425, 127, 326, 52, 724,
102, 1165, 13, 125, 751, 1242, 731, 428, 429, 140,
212, 13, 442, 1058, 444, 140, 26, 125, 1035, 140,
108, 531, 25, 533, 112, 13, 751, 264, 288, 1224,
143, 144, 145, 123, 300, 301, 282, 1201, 119, 136,
212, 138, 472, 140, 140, 247, 121, 122, 341, 126,
0, 138, 233, 140, 235, 236, 125, 264, 282, 125,
262, 315, 316, 317, 318, 126, 251, 252, 102, 1171,
500, 786, 138, 245, 140, 247, 25, 13, 458, 125,
224, 13, 711, 712, 103, 138, 230, 140, 260, 262,
262, 138, 236, 140, 126, 952, 239, 264, 241, 1144,
690, 245, 282, 688, 13, 690, 963, 964, 56, 136,
282, 138, 25, 140, 283, 233, 126, 235, 342, 656,
25, 140, 125, 1107, 1106, 285, 136, 138, 985, 140,
384, 233, 392, 235, 236, 647, 138, 1165, 140, 341,
25, 99, 314, 958, 959, 657, 513, 319, 513, 386,
138, 97, 140, 325, 1199, 282, 1201, 329, 342, 99,
139, 280, 342, 66, 1019, 245, 1014, 773, 341, 341,
342, 129, 315, 316, 317, 318, 125, 320, 321, 386,
260, 383, 128, 385, 513, 25, 659, 136, 314, 129,
136, 25, 1237, 378, 919, 1168, 377, 1242, 103, 233,
25, 235, 138, 888, 140, 339, 138, 379, 140, 68,
344, 383, 125, 385, 109, 342, 119, 68, 648, 25,
125, 688, 378, 136, 129, 100, 68, 942, 658, 138,
815, 140, 1168, 377, 314, 140, 131, 339, 97, 319,
125, 384, 344, 872, 28, 874, 97, 784, 963, 964,
125, 497, 68, 66, 96, 97, 399, 731, 9, 444,
734, 15, 443, 25, 15, 756, 778, 809, 810, 425,
985, 25, 66, 497, 816, 817, 1131, 1136, 139, 1136,
546, 97, 548, 466, 751, 125, 128, 472, 444, 1014,
25, 125, 58, 1150, 428, 429, 703, 103, 678, 443,
125, 82, 83, 68, 466, 1241, 139, 479, 121, 122,
466, 77, 456, 139, 458, 500, 472, 497, 499, 125,
34, 439, 125, 129, 467, 497, 139, 121, 122, 99,
136, 96, 97, 593, 140, 125, 582, 140, 52, 99,
129, 103, 108, 109, 500, 139, 129, 777, 1033, 779,
1065, 132, 133, 66, 775, 499, 1041, 724, 582, 129,
567, 77, 26, 125, 731, 131, 484, 129, 103, 129,
497, 515, 845, 99, 884, 885, 1231, 99, 140, 889,
112, 891, 526, 893, 751, 138, 125, 140, 809, 810,
125, 99, 963, 964, 129, 816, 817, 99, 66, 125,
649, 140, 582, 129, 68, 140, 1131, 129, 121, 122,
582, 124, 99, 1138, 985, 1005, 99, 125, 99, 125,
1005, 129, 566, 960, 136, 141, 142, 143, 144, 145,
972, 68, 96, 97, 641, 637, 608, 639, 125, 68,
625, 68, 129, 136, 26, 919, 129, 140, 129, 634,
1165, 119, 925, 121, 122, 582, 124, 990, 704, 96,
97, 100, 126, 648, 128, 637, 647, 639, 97, 96,
97, 56, 136, 658, 740, 99, 657, 1106, 1107, 745,
704, 666, 963, 964, 628, 865, 68, 659, 99, 672,
634, 128, 648, 99, 129, 1028, 99, 625, 617, 1224,
68, 128, 658, 647, 985, 129, 634, 99, 627, 1194,
672, 696, 697, 657, 96, 97, 672, 660, 129, 125,
66, 994, 666, 129, 704, 125, 129, 773, 96, 97,
125, 125, 704, 125, 678, 68, 99, 129, 666, 1012,
1014, 99, 1016, 68, 126, 140, 128, 1021, 136, 773,
812, 972, 919, 697, 136, 68, 1089, 136, 820, 1092,
128, 99, 681, 96, 97, 2, 129, 4, 136, 77,
688, 96, 97, 119, 66, 121, 122, 704, 124, 16,
17, 52, 103, 96, 97, 56, 853, 125, 129, 708,
844, 129, 68, 773, 779, 128, 125, 778, 770, 718,
129, 773, 774, 128, 1114, 1115, 1116, 1117, 56, 68,
782, 783, 756, 757, 786, 128, 53, 54, 137, 763,
57, 97, 766, 779, 68, 99, 127, 119, 52, 121,
122, 68, 56, 136, 778, 852, 843, 96, 97, 137,
842, 775, 140, 68, 125, 68, 773, 1014, 85, 68,
77, 125, 96, 97, 756, 129, 93, 94, 26, 129,
97, 98, 99, 100, 1138, 102, 1140, 786, 787, 128,
842, 1183, 97, 845, 97, 809, 810, 96, 97, 823,
129, 825, 816, 817, 128, 68, 68, 428, 429, 15,
770, 17, 106, 68, 774, 68, 852, 815, 88, 89,
68, 844, 1176, 129, 445, 446, 1216, 68, 68, 128,
125, 913, 914, 96, 97, 97, 37, 38, 920, 56,
839, 865, 97, 96, 97, 138, 980, 66, 96, 97,
849, 25, 473, 68, 133, 96, 97, 97, 719, 14,
15, 913, 914, 127, 888, 128, 727, 103, 920, 125,
1224, 125, 1226, 925, 1184, 128, 40, 41, 126, 1233,
128, 96, 97, 127, 1131, 909, 125, 128, 136, 136,
942, 1138, 284, 285, 946, 212, 125, 979, 66, 125,
119, 1255, 121, 122, 129, 957, 958, 959, 995, 68,
52, 963, 964, 128, 125, 66, 233, 125, 235, 236,
919, 125, 239, 1027, 241, 125, 52, 979, 245, 54,
247, 1013, 125, 985, 8, 1039, 935, 96, 97, 64,
65, 10, 994, 260, 125, 262, 945, 681, 125, 948,
239, 119, 44, 121, 122, 1061, 125, 980, 972, 44,
1012, 1013, 961, 129, 125, 282, 13, 1027, 119, 128,
121, 122, 1078, 25, 708, 1027, 17, 1224, 267, 1039,
125, 1121, 271, 59, 60, 61, 62, 1039, 125, 139,
52, 919, 54, 55, 56, 57, 58, 314, 315, 316,
317, 318, 319, 320, 321, 139, 1058, 1031, 325, 1033,
127, 130, 329, 1065, 125, 77, 52, 1041, 100, 1101,
1027, 130, 339, 77, 341, 342, 1130, 344, 150, 1163,
1164, 137, 1039, 15, 125, 569, 1035, 103, 138, 101,
94, 95, 125, 1125, 66, 107, 108, 109, 919, 1101,
125, 52, 786, 125, 54, 55, 100, 57, 919, 127,
377, 125, 379, 1062, 64, 65, 383, 384, 385, 131,
1130, 52, 125, 1125, 136, 125, 125, 131, 1130, 1161,
52, 143, 399, 1082, 1083, 1084, 125, 141, 142, 143,
144, 145, 1144, 127, 125, 9, 129, 119, 1180, 121,
122, 635, 130, 127, 125, 839, 640, 125, 642, 1161,
1109, 428, 429, 1165, 125, 849, 125, 125, 125, 1184,
125, 125, 1183, 1130, 1206, 56, 443, 52, 1180, 54,
55, 56, 57, 58, 52, 130, 54, 55, 56, 57,
1163, 1164, 125, 56, 1168, 125, 125, 1199, 1184, 1201,
467, 125, 77, 52, 1206, 54, 55, 56, 57, 1183,
449, 1185, 479, 125, 2, 454, 4, 125, 457, 125,
1194, 460, 125, 120, 125, 136, 101, 136, 16, 17,
497, 1205, 499, 108, 109, 1237, 245, 476, 809, 810,
1242, 475, 481, 479, 852, 816, 817, 98, 100, 89,
666, 935, 101, 1131, 757, 1205, 131, 872, 1136, 711,
1138, 945, 1140, 1171, 948, 53, 54, 1241, 919, 766,
52, 1220, 54, 55, 56, 57, 854, 961, 764, 574,
68, 765, 1241, 767, 957, 985, 1031, 1150, 859, 860,
1150, 862, 863, 1185, 77, 52, 956, 54, 55, 56,
57, 108, 548, 77, 101, 93, 94, 727, 1136, 97,
1131, 94, 95, 1062, 102, 582, 1131, 1138, -1, 1140,
1131, -1, 561, 562, -1, 1136, 56, 1138, -1, 1140,
-1, -1, 52, -1, 54, 55, 56, 57, 58, -1,
-1, -1, 581, -1, 101, -1, 1224, 608, 1226, 833,
107, -1, 836, 1231, -1, 1233, -1, 77, 141, 142,
143, 144, 145, -1, -1, -1, 850, -1, -1, -1,
637, 91, 639, -1, -1, -1, -1, 1255, -1, -1,
647, 101, 40, 41, 42, 43, 44, 107, 108, 109,
657, -1, 659, 660, -1, -1, -1, -1, 1082, 1083,
1084, 972, -1, 1224, -1, 1226, -1, -1, -1, -1,
1231, 131, 1233, 1224, -1, 1226, -1, -1, -1, -1,
1231, -1, 1233, 143, 212, -1, -1, -1, -1, -1,
-1, -1, 1003, -1, 1255, -1, -1, 704, -1, -1,
-1, -1, -1, -1, 1255, 233, -1, 235, 236, -1,
-1, 239, -1, 241, 693, -1, -1, 245, -1, 247,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 260, -1, 262, -1, 715, -1, -1, -1,
210, -1, -1, 213, 214, 215, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 981, -1, -1,
984, -1, 986, 770, -1, -1, 773, 774, 775, 993,
-1, 778, 996, 52, -1, 54, 55, 56, 57, 58,
-1, 782, 783, -1, -1, 786, 314, 315, 316, 317,
318, 319, 320, 321, -1, -1, 1220, 325, 77, -1,
-1, 329, 809, 810, -1, -1, -1, -1, -1, 816,
817, 339, -1, 341, -1, -1, 344, -1, -1, -1,
-1, -1, 101, -1, -1, -1, -1, -1, 107, 108,
109, -1, 2, -1, 4, 842, -1, 844, 845, -1,
-1, -1, 1043, 1044, -1, -1, 16, 17, -1, 377,
-1, 379, 131, -1, -1, 383, 384, 385, -1, -1,
-1, 140, -1, -1, 143, -1, -1, -1, -1, 339,
-1, 399, 851, -1, 344, -1, -1, -1, -1, 1103,
-1, -1, -1, 53, 54, 864, -1, -1, 1112, -1,
-1, 870, -1, -1, -1, -1, -1, -1, 68, -1,
428, 429, -1, -1, -1, -1, 913, 914, -1, -1,
-1, -1, -1, 920, -1, 443, -1, -1, 925, -1,
-1, -1, -1, 93, 94, -1, 905, 97, -1, -1,
-1, -1, 102, -1, -1, -1, -1, -1, -1, 467,
-1, 942, -1, -1, -1, 946, -1, -1, -1, -1,
-1, 479, -1, -1, -1, -1, 957, 958, 959, -1,
-1, -1, 963, 964, -1, 972, -1, -1, 438, 439,
-1, 499, 979, 980, -1, -1, -1, 447, -1, -1,
-1, -1, -1, 962, 985, -1, -1, 994, 1189, 1190,
-1, -1, -1, -1, 1195, -1, 1197, 1198, -1, -1,
-1, -1, -1, -1, -1, 1012, 1013, -1, -1, -1,
-1, -1, -1, -1, 484, -1, -1, 487, -1, -1,
1027, -1, -1, -1, 52, -1, 54, 55, 56, 57,
58, -1, 1039, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 212, -1, -1, 1246, 1247, 1248, 1249, 77,
608, -1, -1, -1, 524, -1, -1, 1058, 1259, -1,
-1, -1, -1, 233, 1065, 235, 236, -1, -1, 239,
608, 241, 1051, 101, -1, 245, -1, 247, -1, 107,
108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
260, -1, 262, -1, 1101, -1, -1, -1, -1, -1,
1079, 1080, 1081, 131, -1, 575, -1, -1, -1, 637,
-1, 639, -1, -1, -1, 143, -1, -1, 1125, 647,
-1, -1, -1, 1130, -1, -1, -1, -1, -1, 657,
-1, 659, 660, -1, -1, -1, 2, -1, 4, -1,
-1, -1, -1, 1144, 314, 315, 316, 317, 318, 319,
320, 321, -1, -1, 1161, 325, 1163, 1164, -1, 329,
-1, -1, -1, -1, 1165, -1, -1, -1, -1, 339,
-1, 341, -1, 1180, 344, -1, 1183, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 53, 54, -1,
-1, 57, -1, -1, -1, -1, -1, -1, 1199, 1206,
1201, -1, -1, 673, -1, 675, -1, 377, -1, 379,
-1, -1, -1, 383, 384, 385, -1, -1, 688, 85,
690, -1, -1, -1, 782, 783, -1, -1, 786, 399,
-1, -1, 98, 99, 100, -1, 1237, 77, -1, -1,
-1, 1242, 770, -1, 782, 783, 774, 775, 786, -1,
778, -1, -1, 723, 94, 95, -1, -1, 428, 429,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 443, -1, -1, -1, -1, -1, -1,
-1, 809, 810, -1, -1, -1, 756, -1, 816, 817,
130, 131, -1, -1, -1, 135, -1, 467, -1, 769,
-1, 141, 142, 143, 144, 145, -1, -1, -1, 479,
-1, -1, -1, -1, 842, -1, 844, 845, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 499,
-1, 608, -1, -1, 0, -1, -1, -1, -1, -1,
-1, -1, 8, 9, 10, 815, 212, 13, 14, 15,
-1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
26, 27, -1, -1, -1, 835, -1, -1, -1, -1,
-1, 37, 38, -1, 40, 41, 42, 43, 44, 245,
-1, 247, -1, -1, 942, 913, 914, -1, 946, -1,
-1, -1, 920, -1, 260, -1, 262, 925, -1, 957,
958, 959, 68, -1, 942, 963, 964, -1, 946, -1,
-1, -1, -1, -1, -1, -1, 282, -1, -1, 957,
958, 959, -1, -1, -1, 963, 964, 985, -1, -1,
96, 97, -1, -1, -1, -1, -1, 103, -1, -1,
2, -1, 4, -1, 972, -1, -1, 985, 314, -1,
-1, 979, 980, 319, 120, -1, -1, 927, -1, 325,
126, 127, -1, 329, -1, -1, 994, 637, -1, 639,
136, -1, 138, -1, 140, 341, 342, 647, 344, -1,
-1, -1, -1, -1, 1012, 1013, -1, 657, -1, 659,
660, 53, 54, -1, -1, 57, -1, -1, -1, -1,
1058, -1, -1, -1, -1, 782, 783, 1065, -1, 786,
-1, -1, -1, 379, 608, -1, -1, 383, 988, 385,
1058, -1, -1, 85, -1, -1, -1, 1065, 608, -1,
-1, -1, -1, -1, -1, 1005, 98, 99, 100, 101,
-1, 33, 34, 35, 36, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
-1, -1, 428, 429, -1, -1, -1, 59, 60, 61,
62, 63, -1, 1101, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 1144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1125, -1, -1,
770, -1, -1, -1, 774, 775, 1144, 1165, 778, -1,
-1, -1, -1, 479, -1, 2, -1, 4, 110, 111,
112, 113, 114, 115, 116, 117, 118, 1165, -1, -1,
1100, 497, -1, 1161, -1, 1163, 1164, -1, -1, 809,
810, 1199, -1, 1201, -1, -1, 816, 817, -1, -1,
212, -1, 1180, -1, -1, 1183, -1, -1, -1, 151,
-1, 1199, -1, 1201, -1, 942, 53, 54, -1, 946,
-1, -1, 842, -1, 844, 845, -1, -1, 1206, 1237,
957, 958, 959, 245, 1242, 247, 963, 964, 782, 783,
-1, -1, 786, -1, -1, -1, 1166, -1, 260, 1237,
262, -1, 782, 783, 1242, -1, 786, -1, 985, -1,
-1, 98, -1, -1, -1, -1, 582, -1, -1, -1,
282, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 2,
-1, 4, -1, 913, 914, -1, -1, -1, -1, -1,
920, -1, 314, -1, -1, 925, -1, 319, -1, -1,
-1, -1, -1, 325, -1, -1, -1, 329, -1, -1,
-1, 637, -1, 639, -1, -1, -1, -1, -1, 341,
342, 1058, -1, -1, -1, -1, -1, -1, 1065, -1,
53, 54, -1, 659, -1, -1, -1, -1, -1, -1,
-1, -1, 972, -1, -1, -1, -1, -1, -1, 979,
980, -1, -1, -1, -1, -1, -1, 379, -1, -1,
-1, 383, -1, 385, 994, 212, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 704, -1,
-1, -1, 1012, 1013, 608, -1, -1, -1, 942, -1,
-1, -1, 946, -1, 608, -1, -1, -1, 245, -1,
247, -1, 942, 957, 958, 959, 946, 1144, -1, 963,
964, -1, 738, 260, -1, 262, -1, 957, 958, 959,
-1, -1, -1, 963, 964, -1, -1, -1, 1165, -1,
-1, 985, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 770, 985, -1, 773, 774, 775,
-1, -1, -1, -1, -1, -1, -1, 479, -1, -1,
-1, -1, 1199, -1, 1201, -1, -1, 314, -1, -1,
-1, 1101, 319, -1, -1, 497, -1, -1, 325, -1,
-1, -1, 329, 809, 810, -1, -1, -1, -1, 212,
816, 817, -1, -1, 341, 1125, -1, 344, -1, -1,
1237, -1, -1, -1, 1058, 1242, -1, -1, -1, -1,
-1, 1065, -1, -1, -1, -1, 842, -1, 1058, 845,
-1, -1, 245, -1, 247, 1065, -1, -1, -1, -1,
-1, 1161, 379, 1163, 1164, -1, 383, 260, 385, 262,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1180, -1, -1, 1183, -1, -1, -1, -1, 782, 783,
582, -1, 786, -1, -1, -1, -1, -1, 782, 783,
-1, -1, 786, -1, -1, -1, 1206, -1, -1, -1,
-1, 428, 429, -1, 608, -1, -1, 913, 914, -1,
1144, 314, -1, -1, 920, -1, 319, -1, -1, 925,
-1, -1, 325, -1, 1144, -1, 329, -1, -1, -1,
-1, 1165, -1, -1, -1, 637, -1, 639, 341, -1,
-1, 344, -1, -1, -1, 1165, -1, -1, -1, -1,
-1, -1, 479, -1, -1, -1, -1, 659, -1, -1,
-1, -1, -1, -1, -1, 1199, 972, 1201, -1, -1,
-1, -1, -1, 979, -1, -1, 379, -1, -1, 1199,
383, 1201, 385, -1, -1, -1, -1, -1, 994, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 704, 1237, -1, -1, 1012, 1013, 1242, -1,
-1, -1, -1, -1, -1, -1, -1, 1237, -1, -1,
-1, 1027, 1242, -1, -1, 428, 429, -1, -1, -1,
-1, -1, -1, 1039, -1, -1, -1, -1, 942, -1,
-1, -1, 946, -1, -1, -1, -1, -1, 942, -1,
-1, -1, 946, 957, 958, 959, -1, -1, -1, 963,
964, -1, -1, 957, 958, 959, -1, -1, 770, 963,
964, 773, 774, -1, -1, -1, 479, -1, 782, 783,
-1, 985, 786, 77, 78, 79, 80, 81, 82, 83,
84, 985, 86, 87, -1, 1101, -1, -1, -1, -1,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
637, -1, 639, -1, -1, -1, -1, -1, -1, 1125,
-1, -1, -1, -1, 1130, -1, -1, -1, -1, -1,
-1, -1, 659, -1, -1, -1, 130, 131, 132, 133,
842, 135, -1, 845, -1, -1, -1, 141, 142, 143,
144, 145, -1, -1, 1058, 1161, -1, -1, -1, -1,
-1, 1065, -1, -1, 1058, -1, -1, -1, -1, -1,
-1, 1065, -1, -1, 1180, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1206, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 913, 914, -1, -1, -1, -1, -1, 920, -1,
-1, -1, -1, 925, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 637, -1, 639, -1, 942, -1,
1144, -1, 946, 770, -1, -1, -1, 774, 775, -1,
1144, -1, -1, 957, 958, 959, 659, -1, -1, 963,
964, 1165, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 1165, -1, -1, -1, -1, -1, 979, -1, -1,
-1, 985, 809, 810, -1, -1, -1, -1, -1, 816,
817, -1, 994, -1, -1, 1199, -1, 1201, -1, -1,
-1, -1, -1, -1, -1, 1199, -1, 1201, -1, -1,
1012, 1013, -1, -1, -1, 842, -1, -1, 845, -1,
-1, -1, -1, -1, -1, 1027, -1, -1, -1, -1,
-1, -1, -1, 1237, -1, -1, -1, 1039, 1242, -1,
-1, -1, -1, 1237, -1, -1, -1, -1, 1242, -1,
-1, -1, -1, -1, 1058, -1, -1, -1, -1, -1,
-1, 1065, -1, -1, -1, -1, -1, 770, -1, -1,
-1, 774, 775, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 913, 914, -1, -1,
-1, -1, -1, 920, -1, -1, -1, -1, 925, 1101,
-1, -1, -1, -1, -1, -1, 809, 810, -1, -1,
-1, -1, -1, 816, 817, 77, 78, 79, 80, 81,
82, 83, -1, 1125, 86, 87, -1, -1, 1130, -1,
-1, -1, 94, 95, -1, -1, -1, -1, -1, 842,
1144, -1, 845, -1, -1, 972, -1, -1, -1, -1,
-1, -1, 979, -1, -1, -1, -1, -1, -1, 1161,
-1, 1165, -1, -1, -1, -1, -1, 994, 130, 131,
132, 133, -1, 135, -1, -1, -1, -1, 1180, 141,
142, 143, 144, 145, -1, 1012, 1013, -1, -1, -1,
-1, 16, 17, -1, -1, 1199, -1, 1201, -1, -1,
1027, -1, -1, -1, 1206, -1, -1, -1, -1, -1,
913, 914, -1, -1, -1, -1, -1, 920, -1, -1,
-1, -1, 925, 48, 49, 50, 51, -1, -1, -1,
55, 56, -1, 1237, -1, -1, -1, -1, 1242, -1,
-1, -1, 67, 68, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 972,
-1, -1, -1, -1, 1101, -1, 979, 102, 33, 34,
35, 36, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 994, -1, -1, 49, 50, 51, 52, 1125, -1,
-1, 56, -1, -1, 59, 60, 61, 62, 63, 1012,
1013, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 1161, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, -1, -1, 104,
105, -1, 107, 1180, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 1206,
135, -1, -1, -1, -1, 210, -1, -1, 213, 214,
215, -1, 217, 44, -1, -1, 151, -1, 1101, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 233, -1,
235, 236, -1, -1, -1, -1, -1, -1, -1, 244,
-1, -1, 1125, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 1161, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 125, -1, -1, 1180, -1, 130,
131, 132, 133, -1, 135, -1, -1, -1, -1, -1,
141, 142, 143, 144, 145, -1, -1, -1, 149, -1,
-1, -1, -1, 1206, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 339, -1, -1, -1, -1, 344,
345, 346, 347, 348, 349, -1, -1, 352, 353, 354,
355, 356, 357, 358, 359, -1, 361, 362, -1, -1,
365, 366, 367, 368, 369, 370, 371, 372, 373, -1,
-1, -1, 377, -1, -1, -1, -1, -1, -1, 33,
34, 35, 36, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 49, 50, 51, 52, -1,
-1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 428, 429, -1, -1, -1, -1, -1,
-1, -1, 437, 438, 439, -1, 90, 91, 443, -1,
445, 446, 447, -1, 98, -1, -1, 101, 453, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, 473, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 484,
-1, 135, 487, -1, -1, -1, 140, -1, -1, -1,
-1, -1, -1, -1, 499, -1, 0, 151, -1, -1,
-1, -1, -1, -1, 8, 9, 10, -1, -1, 13,
14, 15, -1, 17, -1, -1, -1, -1, -1, 524,
-1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
-1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
44, -1, -1, -1, -1, 550, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 564,
-1, -1, -1, 568, 68, -1, -1, -1, -1, -1,
575, -1, -1, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
94, 95, 96, 97, -1, 99, 100, -1, -1, 103,
-1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 120, -1, -1, 123,
-1, 125, 126, 127, 128, 129, 130, 131, 132, 133,
-1, 135, -1, 137, 138, -1, 140, 141, 142, 143,
144, 145, 647, -1, -1, 149, 150, -1, -1, 0,
-1, -1, 657, -1, -1, -1, -1, 8, 9, 10,
-1, -1, 13, 14, 15, -1, 17, -1, 673, -1,
675, -1, -1, -1, 25, -1, 27, 28, 29, -1,
-1, -1, -1, 688, -1, 690, 37, 38, -1, 40,
41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 68, 723, -1,
-1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
-1, 756, 103, -1, -1, 106, -1, -1, -1, -1,
-1, -1, -1, -1, 769, -1, -1, -1, -1, 120,
775, 776, 123, 778, 125, -1, 127, 128, 129, 130,
131, 132, 133, -1, 135, -1, 137, 138, -1, 140,
141, 142, 143, 144, 145, -1, -1, -1, 149, 150,
-1, -1, -1, -1, 809, 810, -1, -1, 0, -1,
815, 816, 817, -1, -1, -1, 8, 9, 10, -1,
-1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
835, -1, -1, 25, 26, 27, 28, -1, -1, -1,
-1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
42, 43, 44, -1, 859, 860, -1, 862, 863, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
-1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
-1, 906, 94, 95, 96, 97, -1, -1, 100, -1,
-1, 103, 917, -1, 106, -1, -1, -1, -1, -1,
-1, -1, 927, -1, -1, -1, -1, -1, 120, -1,
-1, -1, -1, 125, 126, 127, 128, -1, 130, 131,
132, 133, -1, 135, 136, 137, 138, -1, 140, 141,
142, 143, 144, 145, -1, -1, -1, 149, 0, 1,
965, 3, 4, 5, 6, 7, -1, 972, -1, 11,
12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, 988, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, 1003, -1,
1005, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, 77, 78, 79, 80,
81, 82, 83, 75, 76, 86, 87, -1, -1, -1,
-1, -1, -1, 94, 95, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, 130,
131, 132, 133, -1, 135, -1, -1, -1, -1, -1,
141, 142, 143, 144, 145, 1100, 138, -1, 140, -1,
-1, -1, -1, -1, 146, 147, -1, -1, -1, 151,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 1, -1, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, 1166, -1, -1, -1, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 1183, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 138, 1,
140, 3, 4, 5, 6, 7, 146, 147, 10, 11,
12, 151, 14, 15, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 138, 1, 140, 3,
4, 5, 6, 7, 146, 147, 10, 11, 12, 151,
-1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 138, 1, 140, 3, 4, 5,
6, 7, 146, 147, 10, 11, 12, 151, -1, 15,
16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 138, 1, 140, 3, 4, 5, 6, 7,
146, 147, 10, 11, 12, 151, -1, 15, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
138, -1, 140, -1, -1, -1, -1, -1, 146, 147,
-1, -1, 1, 151, 3, 4, 5, 6, 7, -1,
9, 10, 11, 12, -1, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
1, 140, 3, 4, 5, 6, 7, 146, 147, -1,
11, 12, 151, -1, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, 103, 104, 105, -1, 107, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 138, 1, 140,
3, 4, 5, 6, 7, 146, 147, -1, 11, 12,
151, -1, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
103, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 138, 1, 140, 3, 4,
5, 6, 7, 146, 147, -1, 11, 12, 151, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, 127, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 138, 1, 140, 3, 4, 5, 6,
7, 146, 147, -1, 11, 12, 151, -1, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
127, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 138, 1, 140, 3, 4, 5, 6, 7, 146,
147, 10, 11, 12, 151, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
1, 140, 3, 4, 5, 6, 7, 146, 147, -1,
11, 12, 151, -1, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, 120,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 0, -1, -1, 138, -1, 140,
-1, -1, 8, 9, 10, 146, 147, 13, 14, 15,
151, 17, -1, -1, -1, -1, -1, -1, -1, 25,
-1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
-1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
96, 97, -1, 99, 100, -1, -1, 103, -1, -1,
106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 120, -1, -1, 123, -1, 125,
-1, 127, 128, 129, 130, 131, 132, 133, -1, 135,
-1, 137, 138, -1, 140, 141, 142, 143, 144, 145,
0, -1, -1, 149, 150, -1, -1, -1, 8, 9,
10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
-1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
-1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
-1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
100, -1, -1, 103, -1, -1, 106, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
120, -1, -1, 123, -1, 125, 126, 127, 128, -1,
130, 131, 132, 133, -1, 135, -1, 137, 138, -1,
140, 141, 142, 143, 144, 145, 0, -1, -1, 149,
150, -1, -1, -1, 8, 9, 10, -1, -1, 13,
14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
-1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
-1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
-1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
94, 95, 96, 97, -1, -1, 100, -1, -1, 103,
-1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 120, -1, -1, 123,
-1, 125, 126, 127, 128, -1, 130, 131, 132, 133,
-1, 135, -1, 137, 138, -1, 140, 141, 142, 143,
144, 145, 0, -1, -1, 149, 150, -1, -1, -1,
8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
-1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
-1, 99, 100, -1, -1, 103, -1, -1, 106, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 120, -1, -1, 123, -1, 125, -1, 127,
128, 129, 130, 131, 132, 133, -1, 135, -1, 137,
138, -1, 140, 141, 142, 143, 144, 145, 0, -1,
-1, 149, 150, -1, -1, -1, 8, 9, 10, -1,
-1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
-1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
-1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
-1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
-1, -1, 94, 95, 96, 97, -1, -1, 100, -1,
-1, 103, -1, -1, 106, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
-1, 123, -1, 125, -1, 127, 128, -1, 130, 131,
132, 133, -1, 135, -1, 137, 138, -1, 140, 141,
142, 143, 144, 145, 0, -1, -1, 149, 150, -1,
-1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
-1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
-1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
96, 97, -1, -1, 100, -1, -1, 103, -1, -1,
106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
126, 127, 128, -1, 130, 131, 132, 133, -1, 135,
136, 137, 138, -1, 140, 141, 142, 143, 144, 145,
0, -1, -1, 149, -1, -1, -1, -1, 8, 9,
10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
-1, -1, -1, -1, -1, 25, -1, 27, 28, -1,
-1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
-1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
100, -1, -1, 103, -1, -1, 106, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
120, -1, -1, -1, -1, 125, -1, 127, 128, -1,
130, 131, 132, 133, -1, 135, 136, 137, 138, -1,
140, 141, 142, 143, 144, 145, 0, -1, -1, 149,
-1, -1, -1, -1, 8, 9, 10, -1, -1, -1,
14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
-1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
-1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
94, 95, 96, 97, -1, 99, 100, -1, -1, 103,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
-1, 125, 126, 127, 128, 129, 130, 131, 132, 133,
-1, 135, -1, -1, 138, -1, 140, 141, 142, 143,
144, 145, 0, -1, -1, 149, -1, -1, -1, -1,
8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
-1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
-1, 99, 100, -1, -1, 103, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 120, -1, -1, -1, -1, 125, 126, 127,
128, 129, 130, 131, 132, 133, -1, 135, -1, -1,
138, -1, 140, 141, 142, 143, 144, 145, 0, -1,
-1, 149, -1, -1, -1, -1, 8, 9, 10, -1,
-1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
-1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
-1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
-1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
-1, 103, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
-1, -1, -1, 125, -1, 127, 128, 129, 130, 131,
132, 133, -1, 135, -1, -1, 138, -1, 140, 141,
142, 143, 144, 145, 0, -1, -1, 149, -1, -1,
-1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
-1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
96, 97, -1, 99, 100, -1, -1, 103, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
-1, 127, 128, 129, 130, 131, 132, 133, -1, 135,
-1, -1, 138, -1, 140, 141, 142, 143, 144, 145,
-1, -1, -1, 149, 3, 4, 5, 6, 7, -1,
-1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
-1, 3, 4, 5, 6, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 138, -1, 3, 4,
5, 6, 7, -1, 146, 147, 11, 12, -1, 151,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
-1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 140, 3, 4, 5, -1, 7, 146, 147,
-1, 11, 12, 151, -1, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 5, 6, 7, -1, 146, 147, 11, 12,
-1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, 45, 46, -1, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
-1, 7, -1, 146, 147, 11, 12, -1, 151, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5, -1, 7, -1, 146, 147, 11, 12, -1, 151,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
-1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 3, 4, 5, -1, 7, -1, 146, 147,
11, 12, -1, 151, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, 107, 108, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4, 5, -1, 7, -1, 146, 147, 11, 12, -1,
151, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, -1, 108, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
-1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
-1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 138, -1, 140, 3, 4, 5, -1, 7, 146,
147, -1, 11, 12, 151, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 140, 3, 4, 5, -1, 7, 146, 147, -1,
11, 12, 151, -1, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 136, -1, -1, -1, 3,
4, 5, -1, 7, -1, 146, 147, 11, 12, -1,
151, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
-1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 3, 4, 5, -1, 7, -1, 146,
147, 11, 12, -1, 151, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, 146, 147, 11, 12,
-1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
-1, 7, -1, 146, 147, 11, 12, -1, 151, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5, -1, 7, -1, 146, 147, 11, 12, -1, 151,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
-1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, 125, 3, 4,
5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, 151, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
-1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, 151, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, 151, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 94, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
-1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
151, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, 125, 3, 4, 5,
-1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, 151, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, 151, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, 151, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
-1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, 151,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
-1, 151, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 130, 131, 132, 133, 134, 135, 136, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
133, 134, 135, -1, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, 111, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 130, 131, 132, 133, 134, 135, -1, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
133, 134, 135, -1, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, 33, 34,
35, 36, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, 49, 50, 51, 52, -1, -1,
-1, 56, -1, 58, 59, 60, 61, 62, 63, -1,
-1, -1, 130, 131, 132, 133, 134, 135, -1, -1,
-1, -1, 77, 141, 142, 143, 144, 145, 146, 147,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, -1, -1, 104,
105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, 33, 34, 35, 36, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
135, 49, 50, 51, 52, -1, -1, -1, 56, -1,
-1, 59, 60, 61, 62, 63, 151, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, -1, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, 33, 34, 35, 36, -1, -1, -1, -1,
-1, 44, -1, -1, -1, -1, -1, 135, 49, 50,
51, 52, -1, -1, -1, 56, -1, -1, 59, 60,
61, 62, 63, 151, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, -1, -1, 90,
91, 94, 95, -1, -1, -1, -1, 98, -1, -1,
101, -1, -1, 104, 105, -1, -1, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, 44, -1,
-1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
133, -1, 135, -1, 135, -1, -1, -1, 141, 142,
143, 144, 145, 44, -1, -1, 149, -1, -1, -1,
151, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
-1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 130, 131, 132, 133, -1, 135,
-1, -1, -1, -1, -1, 141, 142, 143, 144, 145,
-1, -1, -1, 149, -1, -1, -1, -1, -1, 130,
131, 132, 133, -1, 135, 52, 53, -1, -1, 56,
141, 142, 143, 144, 145, -1, -1, -1, 149, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
-1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 52, 53, -1, -1, 56, 130, 131, 132, 133,
134, 135, 136, -1, -1, -1, -1, 141, 142, 143,
144, 145, 146, 147, 75, 76, 77, 78, 79, 80,
81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
-1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 52, 53, -1, -1, 56, 130,
131, 132, 133, 134, 135, 136, -1, -1, -1, -1,
141, 142, 143, 144, 145, 146, 147, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
-1, 56, 130, 131, 132, 133, 134, 135, 136, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
-1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
52, 53, -1, -1, 56, 130, 131, 132, 133, 134,
135, 136, -1, -1, -1, -1, 141, 142, 143, 144,
145, 146, 147, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 52, 53, -1, -1, 56, 130, 131,
132, 133, 134, 135, 136, -1, -1, -1, -1, 141,
142, 143, 144, 145, 146, 147, 75, 76, 77, 78,
79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
-1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 52, 53, -1, -1,
56, 130, 131, 132, 133, 134, 135, 136, -1, -1,
-1, -1, 141, 142, 143, 144, 145, 146, 147, 75,
76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
53, -1, -1, 56, 130, 131, 132, 133, 134, 135,
136, -1, -1, -1, -1, 141, 142, 143, 144, 145,
146, 147, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 52, 53, -1, -1, 56, 130, 131, 132,
133, 134, 135, 136, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 75, 76, 77, 78, 79,
80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
-1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
130, 131, 132, 133, 134, 135, 136, -1, -1, -1,
-1, 141, 142, 143, 144, 145, 146, 147, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
-1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 52, 53, -1, -1, 56, 130, 131, 132, 133,
134, 135, 136, -1, -1, -1, -1, 141, 142, 143,
144, 145, 146, 147, 75, 76, 77, 78, 79, 80,
81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
-1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 52, 53, -1, -1, 56, 130,
131, 132, 133, 134, 135, 136, -1, -1, -1, -1,
141, 142, 143, 144, 145, 146, 147, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
-1, 56, 130, 131, 132, 133, 134, 135, 136, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
-1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
52, 53, -1, -1, 56, 130, 131, 132, 133, 134,
135, 136, -1, -1, -1, -1, 141, 142, 143, 144,
145, 146, 147, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 130, 131,
132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
142, 143, 144, 145, 146, 147, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, -1, -1, -1, -1, 100,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
87, 88, 89, -1, -1, -1, -1, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 130,
131, 132, 133, -1, 135, -1, -1, -1, -1, -1,
141, 142, 143, 144, 145, -1, -1, -1, 149, -1,
-1, -1, -1, 130, 131, 132, 133, -1, 135, -1,
-1, -1, -1, 140, 141, 142, 143, 144, 145, -1,
-1, -1, 149, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
94, 95, -1, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 130, 131, 132, 133,
-1, 135, -1, -1, -1, -1, -1, 141, 142, 143,
144, 145, -1, -1, -1, 149, 130, 131, 132, 133,
-1, 135, -1, -1, -1, -1, -1, 141, 142, 143,
144, 145 ];
#[allow(non_upper_case_globals)]
const yystos_: &'static [i32] = &[ 0, 154, 155, 0, 1, 3, 4, 5, 6, 7,
11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
112, 113, 114, 115, 116, 117, 118, 146, 147, 151,
156, 157, 158, 165, 167, 169, 172, 173, 178, 179,
182, 183, 184, 186, 187, 188, 190, 191, 200, 202,
217, 226, 227, 228, 229, 230, 231, 232, 233, 234,
235, 236, 245, 265, 274, 275, 323, 324, 325, 326,
327, 328, 329, 332, 334, 335, 349, 350, 352, 353,
354, 355, 356, 357, 358, 359, 397, 411, 158, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
52, 53, 56, 75, 76, 77, 78, 79, 80, 81,
82, 83, 86, 87, 92, 93, 94, 95, 107, 108,
130, 131, 132, 133, 134, 135, 141, 142, 143, 144,
145, 146, 147, 194, 195, 196, 198, 199, 349, 39,
58, 98, 101, 107, 108, 109, 112, 147, 183, 191,
200, 203, 209, 212, 214, 226, 355, 356, 358, 359,
395, 396, 209, 136, 210, 211, 136, 206, 210, 136,
140, 404, 54, 195, 404, 126, 159, 126, 21, 22,
31, 32, 182, 200, 226, 245, 200, 200, 200, 56,
1, 47, 101, 161, 162, 163, 165, 185, 186, 411,
165, 219, 204, 214, 395, 411, 203, 394, 395, 411,
46, 98, 125, 151, 172, 173, 190, 217, 226, 355,
356, 359, 266, 54, 55, 57, 194, 338, 351, 338,
339, 340, 139, 139, 139, 139, 200, 178, 200, 354,
138, 140, 403, 409, 410, 40, 41, 42, 43, 44,
37, 38, 136, 362, 363, 364, 365, 411, 362, 364,
26, 126, 206, 210, 237, 276, 28, 238, 272, 129,
125, 101, 107, 187, 129, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 94, 95,
100, 130, 131, 132, 133, 135, 141, 142, 143, 144,
145, 149, 201, 201, 68, 96, 97, 128, 401, 218,
169, 175, 175, 176, 177, 176, 175, 403, 410, 98,
184, 191, 226, 250, 355, 356, 359, 52, 56, 94,
98, 192, 193, 226, 355, 356, 359, 193, 33, 34,
35, 36, 49, 50, 51, 52, 56, 136, 171, 194,
357, 392, 209, 97, 401, 402, 276, 326, 99, 99,
125, 203, 56, 203, 203, 203, 338, 129, 100, 125,
213, 411, 97, 128, 401, 99, 99, 125, 213, 209,
404, 405, 209, 91, 208, 209, 214, 369, 395, 411,
169, 405, 169, 54, 64, 65, 166, 136, 200, 156,
161, 97, 401, 99, 165, 164, 185, 103, 403, 410,
405, 220, 405, 137, 125, 140, 408, 125, 408, 127,
408, 404, 56, 187, 189, 354, 363, 125, 97, 128,
401, 52, 54, 55, 56, 57, 58, 77, 101, 107,
108, 109, 131, 136, 143, 255, 268, 366, 368, 370,
371, 372, 373, 374, 375, 376, 379, 380, 381, 382,
383, 386, 387, 388, 389, 390, 66, 119, 121, 122,
341, 119, 119, 341, 67, 341, 330, 336, 333, 337,
77, 138, 158, 175, 175, 175, 175, 165, 169, 169,
91, 368, 369, 374, 129, 160, 161, 368, 129, 160,
277, 106, 180, 278, 273, 107, 178, 203, 214, 215,
216, 185, 125, 190, 125, 167, 168, 178, 191, 200,
203, 205, 216, 226, 359, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 170, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
52, 53, 56, 198, 206, 398, 399, 208, 214, 52,
53, 56, 198, 206, 398, 160, 13, 246, 409, 246,
161, 175, 161, 403, 222, 56, 97, 128, 401, 25,
169, 52, 56, 192, 133, 360, 97, 128, 401, 225,
393, 68, 97, 400, 52, 56, 398, 168, 200, 205,
168, 205, 197, 124, 203, 107, 203, 212, 395, 52,
56, 208, 52, 56, 396, 405, 103, 405, 125, 405,
125, 405, 195, 169, 127, 127, 398, 398, 205, 159,
405, 163, 405, 395, 125, 189, 52, 56, 208, 52,
56, 101, 107, 251, 252, 253, 254, 371, 368, 125,
391, 411, 267, 129, 125, 367, 203, 125, 391, 34,
52, 125, 367, 52, 125, 367, 52, 343, 342, 119,
331, 341, 66, 119, 119, 331, 66, 119, 200, 405,
405, 125, 200, 10, 244, 8, 239, 319, 411, 409,
200, 244, 279, 280, 181, 281, 282, 281, 203, 125,
44, 405, 189, 125, 44, 129, 44, 97, 128, 401,
52, 56, 90, 91, 98, 101, 104, 105, 135, 265,
292, 293, 294, 297, 314, 315, 316, 317, 318, 323,
324, 327, 328, 329, 332, 334, 335, 356, 404, 99,
99, 206, 210, 404, 406, 125, 99, 99, 206, 207,
210, 411, 244, 161, 13, 161, 244, 27, 247, 409,
244, 25, 221, 286, 17, 241, 284, 52, 56, 208,
52, 56, 176, 224, 361, 223, 52, 56, 192, 208,
160, 169, 174, 207, 210, 195, 203, 203, 213, 99,
99, 406, 99, 99, 369, 395, 405, 408, 187, 406,
253, 371, 125, 405, 125, 262, 404, 390, 29, 123,
269, 203, 366, 373, 386, 388, 376, 380, 382, 374,
383, 388, 372, 374, 344, 54, 55, 57, 348, 359,
139, 341, 139, 139, 139, 369, 44, 203, 216, 320,
411, 9, 15, 240, 242, 322, 411, 44, 127, 130,
260, 261, 411, 279, 244, 260, 244, 107, 203, 165,
189, 165, 200, 52, 56, 208, 52, 56, 315, 315,
56, 192, 299, 107, 292, 300, 301, 302, 303, 304,
306, 406, 298, 404, 407, 52, 100, 130, 88, 89,
97, 128, 136, 295, 296, 150, 168, 205, 168, 205,
180, 137, 99, 168, 205, 168, 205, 180, 14, 242,
243, 248, 249, 411, 249, 287, 284, 244, 107, 203,
283, 244, 406, 161, 409, 175, 160, 406, 244, 405,
171, 276, 272, 99, 405, 125, 405, 251, 254, 252,
103, 138, 271, 270, 125, 367, 125, 367, 391, 125,
367, 125, 367, 367, 345, 405, 200, 100, 321, 411,
161, 161, 200, 255, 256, 259, 262, 372, 374, 375,
377, 378, 384, 385, 388, 390, 161, 127, 160, 203,
406, 292, 52, 406, 107, 292, 306, 406, 125, 125,
58, 112, 307, 308, 309, 310, 311, 312, 313, 380,
127, 316, 297, 315, 315, 192, 406, 405, 112, 300,
303, 307, 300, 303, 307, 200, 168, 205, 161, 175,
244, 244, 290, 291, 292, 302, 303, 307, 244, 203,
125, 246, 244, 160, 409, 244, 125, 125, 52, 263,
264, 370, 160, 161, 374, 388, 374, 374, 346, 98,
191, 226, 355, 356, 359, 246, 322, 391, 262, 130,
129, 125, 257, 258, 98, 226, 125, 391, 125, 257,
125, 257, 405, 52, 125, 125, 305, 306, 338, 407,
125, 292, 34, 52, 338, 405, 405, 405, 406, 406,
406, 246, 246, 40, 41, 125, 107, 203, 161, 244,
252, 125, 404, 244, 127, 367, 125, 367, 367, 367,
347, 56, 97, 128, 401, 161, 130, 226, 256, 385,
388, 56, 97, 377, 382, 374, 384, 388, 374, 125,
305, 125, 124, 309, 313, 161, 288, 175, 175, 300,
304, 203, 249, 284, 285, 264, 374, 161, 52, 56,
208, 52, 56, 319, 125, 257, 125, 257, 52, 56,
391, 125, 257, 125, 257, 257, 305, 125, 304, 306,
248, 161, 125, 367, 120, 406, 374, 388, 374, 374,
249, 286, 289, 305, 257, 125, 257, 257, 257, 374,
257 ];
#[allow(non_upper_case_globals)]
const yyr1_: &'static [i32] = &[ 0, 153, 155, 154, 156, 157, 157, 157, 157, 158,
158, 159, 160, 160, 161, 162, 162, 162, 162, 163,
164, 163, 166, 165, 165, 165, 165, 165, 165, 165,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
167, 167, 167, 167, 167, 167, 167, 167, 168, 168,
168, 169, 169, 169, 169, 169, 170, 169, 169, 171,
172, 174, 173, 175, 177, 176, 178, 178, 179, 179,
181, 180, 182, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 184, 184, 185, 185, 186, 186,
186, 186, 186, 186, 186, 186, 186, 186, 187, 187,
188, 188, 189, 189, 190, 190, 190, 190, 190, 190,
190, 190, 190, 191, 191, 191, 191, 191, 191, 191,
191, 191, 192, 192, 193, 193, 193, 194, 194, 194,
194, 194, 195, 195, 196, 197, 196, 198, 198, 198,
198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
198, 198, 198, 198, 198, 198, 198, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 201, 201, 201, 201, 202,
202, 203, 204, 204, 204, 204, 205, 205, 206, 206,
206, 207, 207, 208, 208, 208, 208, 208, 209, 209,
209, 209, 209, 211, 210, 212, 213, 213, 214, 214,
214, 214, 215, 215, 216, 216, 216, 217, 217, 217,
217, 217, 217, 217, 217, 217, 217, 217, 218, 217,
219, 217, 220, 217, 217, 217, 217, 217, 217, 217,
217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
217, 217, 217, 217, 221, 217, 222, 217, 217, 217,
223, 217, 224, 217, 225, 217, 217, 217, 217, 217,
217, 217, 226, 227, 228, 229, 230, 231, 232, 233,
234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
244, 245, 246, 246, 246, 247, 247, 248, 248, 249,
249, 250, 250, 251, 251, 252, 252, 253, 253, 253,
253, 253, 254, 254, 255, 255, 256, 256, 256, 256,
257, 257, 258, 259, 259, 259, 259, 259, 259, 259,
259, 259, 259, 259, 259, 259, 259, 259, 260, 260,
261, 261, 262, 262, 263, 263, 264, 264, 266, 267,
265, 268, 268, 270, 269, 271, 269, 273, 272, 274,
274, 274, 274, 275, 275, 275, 275, 275, 275, 275,
275, 275, 277, 276, 278, 276, 280, 279, 282, 281,
283, 283, 283, 283, 284, 285, 285, 287, 288, 286,
289, 289, 290, 290, 290, 291, 291, 291, 291, 291,
291, 292, 293, 293, 294, 294, 295, 296, 297, 297,
297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
298, 297, 297, 299, 297, 300, 300, 300, 300, 300,
300, 300, 300, 301, 301, 302, 302, 303, 304, 304,
305, 305, 306, 307, 307, 307, 307, 308, 308, 309,
309, 310, 310, 311, 311, 312, 313, 313, 314, 314,
314, 314, 314, 314, 314, 314, 314, 314, 315, 315,
315, 315, 315, 315, 315, 315, 315, 315, 316, 317,
318, 318, 318, 319, 319, 320, 320, 320, 321, 321,
322, 322, 323, 323, 324, 325, 325, 325, 326, 327,
328, 329, 330, 330, 331, 331, 332, 333, 333, 334,
335, 336, 336, 337, 337, 338, 338, 339, 339, 340,
340, 341, 342, 341, 343, 344, 345, 346, 347, 341,
348, 348, 348, 348, 349, 349, 350, 351, 351, 351,
351, 352, 353, 353, 354, 354, 354, 354, 355, 355,
355, 355, 355, 356, 356, 356, 356, 356, 356, 356,
357, 357, 358, 358, 359, 359, 361, 360, 360, 362,
362, 363, 363, 363, 364, 365, 364, 366, 366, 366,
366, 367, 367, 368, 368, 368, 368, 368, 368, 368,
368, 368, 368, 368, 368, 368, 368, 368, 369, 370,
370, 370, 370, 371, 371, 372, 373, 373, 374, 374,
375, 376, 376, 377, 377, 378, 378, 379, 379, 380,
380, 381, 382, 382, 383, 384, 385, 385, 386, 386,
387, 387, 388, 388, 389, 389, 390, 391, 391, 392,
393, 392, 394, 394, 395, 395, 396, 396, 396, 396,
397, 397, 397, 398, 398, 398, 398, 399, 399, 399,
400, 400, 401, 401, 402, 402, 403, 403, 404, 404,
405, 406, 407, 408, 408, 408, 409, 409, 410, 410,
411 ];
#[allow(non_upper_case_globals)]
const yyr2_: &'static [i32] = &[ 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
2, 3, 5, 3, 2, 1, 1, 3, 2, 1,
0, 3, 0, 4, 3, 3, 3, 2, 3, 3,
3, 3, 3, 4, 1, 3, 3, 5, 3, 1,
3, 3, 6, 5, 5, 5, 5, 3, 1, 3,
1, 1, 3, 3, 3, 2, 0, 4, 1, 1,
2, 0, 5, 1, 0, 3, 1, 1, 1, 4,
0, 4, 1, 2, 3, 4, 5, 4, 5, 2,
2, 2, 2, 2, 1, 3, 1, 3, 1, 2,
3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
2, 3, 1, 3, 1, 1, 4, 3, 3, 3,
3, 2, 1, 1, 1, 4, 3, 3, 3, 3,
2, 1, 1, 1, 2, 1, 3, 1, 1, 1,
1, 1, 1, 1, 1, 0, 4, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 3, 3,
6, 5, 5, 5, 5, 4, 3, 3, 3, 2,
2, 2, 2, 3, 3, 3, 3, 3, 3, 4,
2, 2, 3, 3, 3, 3, 1, 3, 3, 3,
3, 3, 2, 2, 3, 3, 3, 3, 3, 6,
4, 6, 4, 6, 1, 1, 1, 1, 1, 3,
3, 1, 1, 2, 4, 2, 1, 3, 3, 5,
3, 1, 1, 1, 1, 2, 4, 2, 1, 2,
2, 4, 1, 0, 2, 2, 2, 1, 1, 2,
3, 4, 1, 1, 3, 4, 2, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
0, 3, 0, 4, 3, 3, 2, 3, 3, 1,
4, 3, 1, 5, 4, 3, 2, 1, 2, 1,
6, 6, 4, 4, 0, 6, 0, 5, 5, 6,
0, 6, 0, 7, 0, 5, 4, 4, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 1, 1, 1, 5, 1,
2, 1, 1, 1, 3, 1, 3, 1, 3, 5,
1, 3, 2, 1, 1, 1, 4, 2, 2, 1,
2, 0, 1, 6, 8, 4, 6, 4, 2, 6,
2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
3, 4, 1, 4, 1, 3, 1, 1, 0, 0,
5, 4, 1, 0, 4, 0, 4, 0, 4, 2,
4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
1, 4, 0, 4, 0, 4, 0, 3, 0, 3,
1, 2, 3, 4, 5, 1, 1, 0, 0, 7,
1, 1, 1, 3, 3, 1, 2, 3, 1, 1,
1, 1, 3, 1, 3, 1, 1, 1, 1, 4,
4, 4, 3, 4, 4, 4, 3, 3, 3, 2,
0, 4, 2, 0, 4, 1, 1, 2, 3, 5,
2, 4, 1, 2, 3, 1, 3, 5, 2, 1,
1, 3, 1, 3, 1, 2, 1, 1, 3, 2,
1, 1, 3, 2, 1, 2, 1, 1, 1, 3,
3, 2, 2, 1, 1, 1, 2, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2, 3, 1, 6, 1, 1, 1, 1, 2, 1,
2, 1, 1, 1, 1, 1, 1, 2, 3, 3,
3, 4, 0, 3, 1, 2, 4, 0, 3, 4,
4, 0, 3, 0, 3, 0, 2, 0, 2, 0,
2, 1, 0, 3, 0, 0, 0, 0, 0, 8,
1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1, 3, 1, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 4, 0, 1,
1, 3, 5, 3, 1, 0, 3, 4, 2, 2,
1, 2, 0, 6, 8, 4, 6, 4, 6, 2,
4, 6, 2, 4, 2, 4, 1, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 3, 1, 3,
1, 2, 1, 2, 1, 1, 3, 1, 3, 1,
1, 2, 2, 1, 3, 3, 1, 3, 1, 3,
1, 1, 2, 1, 1, 1, 2, 2, 1, 1,
0, 4, 1, 2, 1, 3, 3, 2, 4, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
2, 2, 2, 0, 1, 1, 1, 1, 1, 2,
0 ];
#[allow(non_upper_case_globals)]
const yyrline_: &'static [i32] = &[ 0, 311, 311, 311, 323, 332, 336, 340, 346, 352,
356, 365, 377, 400, 419, 428, 432, 436, 442, 448,
453, 452, 463, 462, 473, 483, 493, 497, 506, 517,
528, 539, 550, 570, 585, 589, 602, 619, 648, 658,
664, 674, 684, 699, 716, 733, 750, 767, 779, 785,
808, 814, 818, 829, 840, 851, 863, 862, 890, 896,
907, 921, 920, 941, 949, 949, 967, 971, 977, 981,
997, 996, 1016, 1022, 1035, 1057, 1070, 1092, 1105, 1127,
1139, 1151, 1163, 1175, 1189, 1199, 1211, 1221, 1238, 1242,
1248, 1254, 1266, 1272, 1284, 1288, 1300, 1304, 1318, 1322,
1334, 1338, 1346, 1350, 1358, 1364, 1370, 1381, 1396, 1406,
1421, 1433, 1444, 1454, 1460, 1466, 1477, 1487, 1497, 1507,
1519, 1530, 1540, 1544, 1550, 1556, 1562, 1574, 1578, 1582,
1586, 1591, 1597, 1603, 1609, 1614, 1613, 1626, 1627, 1628,
1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638,
1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648,
1649, 1650, 1651, 1652, 1653, 1654, 1655, 1658, 1659, 1660,
1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670,
1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680,
1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690,
1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1701, 1711,
1721, 1736, 1753, 1770, 1787, 1804, 1820, 1830, 1846, 1862,
1875, 1888, 1901, 1914, 1920, 1926, 1932, 1938, 1944, 1950,
1963, 1972, 1981, 1987, 1993, 1999, 2005, 2009, 2015, 2021,
2027, 2033, 2043, 2054, 2063, 2069, 2075, 2086, 2097, 2109,
2124, 2145, 2182, 2205, 2244, 2250, 2254, 2258, 2262, 2268,
2278, 2292, 2300, 2304, 2308, 2316, 2326, 2332, 2357, 2367,
2384, 2400, 2410, 2423, 2427, 2431, 2435, 2441, 2451, 2457,
2464, 2476, 2488, 2494, 2494, 2522, 2533, 2537, 2543, 2547,
2555, 2561, 2569, 2575, 2581, 2587, 2595, 2605, 2609, 2613,
2617, 2621, 2625, 2629, 2633, 2637, 2641, 2645, 2659, 2658,
2672, 2672, 2682, 2682, 2692, 2702, 2712, 2718, 2728, 2738,
2750, 2762, 2774, 2786, 2798, 2809, 2820, 2842, 2846, 2859,
2863, 2882, 2901, 2917, 2934, 2933, 2957, 2956, 2979, 2997,
3015, 3014, 3048, 3047, 3075, 3074, 3101, 3124, 3149, 3161,
3173, 3185, 3199, 3207, 3213, 3220, 3226, 3232, 3238, 3244,
3250, 3256, 3262, 3268, 3274, 3280, 3286, 3292, 3298, 3304,
3311, 3317, 3326, 3330, 3334, 3340, 3344, 3350, 3355, 3382,
3386, 3394, 3398, 3404, 3410, 3422, 3426, 3434, 3438, 3444,
3456, 3460, 3474, 3480, 3488, 3492, 3498, 3510, 3517, 3524,
3531, 3536, 3541, 3547, 3561, 3577, 3589, 3603, 3615, 3619,
3633, 3648, 3660, 3674, 3681, 3693, 3700, 3712, 3718, 3724,
3731, 3744, 3763, 3767, 3773, 3777, 3785, 3793, 3800, 3808,
3799, 3841, 3856, 3869, 3868, 3885, 3884, 3903, 3902, 3922,
3935, 3949, 3972, 3996, 4011, 4026, 4041, 4054, 4069, 4084,
4098, 4110, 4124, 4123, 4143, 4142, 4163, 4163, 4188, 4188,
4212, 4216, 4224, 4230, 4238, 4253, 4257, 4265, 4275, 4264,
4301, 4305, 4312, 4316, 4321, 4328, 4332, 4343, 4355, 4361,
4367, 4375, 4381, 4391, 4397, 4407, 4413, 4420, 4427, 4431,
4445, 4458, 4471, 4485, 4499, 4512, 4525, 4539, 4551, 4561,
4573, 4572, 4590, 4601, 4600, 4618, 4627, 4631, 4643, 4657,
4674, 4688, 4704, 4715, 4724, 4738, 4742, 4754, 4768, 4774,
4782, 4786, 4794, 4800, 4807, 4811, 4815, 4821, 4825, 4833,
4842, 4852, 4858, 4866, 4874, 4884, 4894, 4898, 4904, 4908,
4924, 4940, 4953, 4966, 4970, 4974, 4978, 4991, 5006, 5010,
5014, 5018, 5022, 5026, 5030, 5034, 5038, 5044, 5050, 5058,
5074, 5080, 5090, 5096, 5125, 5131, 5135, 5139, 5145, 5151,
5157, 5163, 5169, 5173, 5179, 5191, 5199, 5203, 5211, 5221,
5231, 5246, 5259, 5263, 5273, 5277, 5285, 5298, 5301, 5311,
5323, 5336, 5339, 5350, 5353, 5364, 5367, 5376, 5379, 5388,
5391, 5399, 5406, 5405, 5416, 5421, 5424, 5428, 5432, 5415,
5456, 5460, 5465, 5469, 5475, 5476, 5479, 5488, 5489, 5490,
5491, 5494, 5503, 5507, 5518, 5524, 5530, 5536, 5544, 5550,
5556, 5562, 5568, 5576, 5582, 5588, 5594, 5600, 5606, 5612,
5620, 5678, 5686, 5692, 5700, 5706, 5715, 5714, 5729, 5734,
5738, 5744, 5753, 5770, 5784, 5788, 5788, 5804, 5816, 5823,
5830, 5836, 5841, 5846, 5860, 5876, 5888, 5902, 5914, 5928,
5935, 5947, 5961, 5968, 5980, 5987, 5999, 6004, 6009, 6015,
6019, 6023, 6027, 6033, 6037, 6047, 6056, 6063, 6075, 6079,
6088, 6104, 6111, 6120, 6126, 6134, 6138, 6147, 6151, 6159,
6163, 6169, 6179, 6189, 6199, 6212, 6225, 6229, 6237, 6241,
6249, 6253, 6259, 6270, 6280, 6284, 6290, 6300, 6304, 6310,
6316, 6316, 6346, 6350, 6356, 6360, 6368, 6378, 6387, 6398,
6406, 6410, 6414, 6420, 6424, 6428, 6432, 6438, 6442, 6446,
6452, 6456, 6462, 6466, 6472, 6476, 6483, 6486, 6493, 6496,
6502, 6508, 6514, 6521, 6524, 6528, 6534, 6538, 6544, 6548,
6555 ];
fn yy_reduce_print(&self, yyrule: i32, yystack: &YYStack) {
if !self.yydebug {
return;
}
let yylno = Self::yyrline_[i32_to_usize(yyrule)];
let yynrhs = Self::yyr2_[i32_to_usize(yyrule)];
self.yycdebug(&format!("Reducing stack by rule {} (line {}):", yyrule - 1, yylno));
for yyi in 0..yynrhs {
let state: usize = i32_to_usize(yystack.state_at(i32_to_usize(yynrhs - (yyi + 1))));
self.yy_symbol_print(
&format!(" ${} =", yyi + 1),
SymbolKind::get(Self::yystos_[state]),
yystack.borrow_value_at(i32_to_usize(yynrhs - (yyi + 1))),
yystack.location_at(i32_to_usize(yynrhs - (yyi + 1)))
);
}
}
fn yytranslate_(t: i32) -> &'static SymbolKind
{
let code_max: i32 = 407;
if t <= 0 {
SymbolKind::get(0)
} else if t <= code_max {
let t = i32_to_usize(t);
SymbolKind::get(Self::yytranslate_table_[t])
} else {
SymbolKind::get(2)
}
}
#[allow(non_upper_case_globals)]
const yytranslate_table_: &'static [i32] = &[ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152 ];
const YYLAST_: i32 = 14571;
const YYEMPTY_: i32 = -2;
const YYFINAL_: i32 = 3;
const YYNTOKENS_: i32 = 153;
}
impl Parser {
pub fn new(input: &[u8], options: ParserOptions) -> Self {
let ParserOptions {
buffer_name,
debug,
decoder,
} = options;
let mut lexer = Lexer::new(input, &buffer_name, decoder);
lexer.set_debug(debug);
let current_arg_stack = CurrentArgStack::new();
let max_numparam_stack = MaxNumparamStack::new();
let pattern_variables = VariablesStack::new();
let pattern_hash_keys = VariablesStack::new();
let builder = Builder::new(
lexer.static_env.clone(),
lexer.context.clone(),
current_arg_stack.clone(),
max_numparam_stack.clone(),
pattern_variables.clone(),
pattern_hash_keys.clone(),
lexer.diagnostics.clone(),
);
let last_token = Token {
token_type: 0,
token_value: TokenValue::String("".to_owned()),
loc: Loc { begin: 0, end: 0 }
};
Self {
yy_error_verbose: true,
yynerrs: 0,
yydebug: debug,
yyerrstatus_: 0,
result: None,
builder,
context: lexer.context.clone(),
current_arg_stack,
max_numparam_stack,
pattern_variables,
pattern_hash_keys,
static_env: lexer.static_env.clone(),
last_token,
tokens: vec![],
diagnostics: lexer.diagnostics.clone(),
yylexer: lexer,
}
}
pub fn do_parse(mut self) -> ParserResult {
self.parse();
ParserResult {
ast: self.result,
tokens: std::mem::take(&mut self.tokens),
diagnostics: self.diagnostics.take(),
comments: self.yylexer.comments,
magic_comments: self.yylexer.magic_comments,
input: self.yylexer.buffer.input,
}
}
pub fn set_debug(&mut self, debug: bool) {
self.yydebug = debug;
self.yylexer.set_debug(debug);
}
fn warn(&mut self, loc: &Loc, message: DiagnosticMessage) {
let diagnostic = Diagnostic::new(
ErrorLevel::Warning,
message,
Range::new(loc.begin, loc.end)
);
self.diagnostics.emit(diagnostic);
}
fn next_token(&mut self) -> Token {
let token = self.yylexer.yylex();
self.last_token = token.clone();
self.tokens.push(token.clone());
token
}
fn check_kwarg_name(&self, ident_t: &Token) -> Result<(), ()> {
let name = clone_value(&ident_t);
let first_char = name.chars().next().expect("kwarg name can't be empty");
if first_char.is_lowercase() || first_char == '_' {
Ok(())
} else {
let range = Range::new(ident_t.loc.begin, ident_t.loc.end);
self.diagnostics.emit(
Diagnostic::new(
ErrorLevel::Error,
DiagnosticMessage::ConstArgument,
range
)
);
Err(())
}
}
fn validate_endless_method_name(&mut self, name_t: &Token) -> Result<(), ()> {
let name = clone_value(&name_t);
if name.ends_with('=') {
self.yyerror(&name_t.loc, DiagnosticMessage::EndlessSetterDefinition).map(|_| ())
} else {
Ok(())
}
}
fn yyerror(&mut self, loc: &Loc, message: DiagnosticMessage) -> Result<i32, ()> {
self.yyerror1(
message,
Range::new(loc.begin, loc.end)
)
}
fn yyerror1(&mut self, message: DiagnosticMessage, range: Range) -> Result<i32, ()> {
let diagnostic = Diagnostic::new(ErrorLevel::Error, message, range);
self.diagnostics.emit(diagnostic);
Err(())
}
fn report_syntax_error(&mut self, ctx: &Context) {
let id: usize = ctx.token().code().try_into().expect("failed to convert token code into i32, is it too big?");
let diagnostic = Diagnostic::new(
ErrorLevel::Error,
DiagnosticMessage::UnexpectedToken(Lexer::TOKEN_NAMES[id].to_owned()),
Range::new(ctx.location().begin, ctx.location().end)
);
self.diagnostics.emit(diagnostic);
}
fn warn_eol(&mut self, loc: &Loc, tok: &str) {
if self.yylexer.buffer.is_looking_at_eol() {
self.warn(loc, DiagnosticMessage::TokAtEolWithoutExpression(tok.to_owned()));
}
}
fn value_expr(&self, node: &Node) -> Result<(), ()> {
self.builder.value_expr(node)
}
}