From f29924c8387dd0b47e7cac925a9625065665223f Mon Sep 17 00:00:00 2001 From: mimaki Date: Fri, 7 Jan 2022 14:15:50 +0900 Subject: [PATCH 01/22] Update version to `3.1.0RC`. --- README.md | 2 +- include/mruby/version.h | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ccf6c6c70..30e3277fa 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ of the Ministry of Economy, Trade and Industry of Japan. ## How to get mruby -The stable version 3.0.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.0.0.zip](https://github.com/mruby/mruby/archive/3.0.0.zip) +The release candidate version 3.1.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.1.0-rc.zip](https://github.com/mruby/mruby/archive/3.1.0-rc.zip) The latest development version of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/zipball/master](https://github.com/mruby/mruby/zipball/master) diff --git a/include/mruby/version.h b/include/mruby/version.h index 185263f32..84af1614d 100644 --- a/include/mruby/version.h +++ b/include/mruby/version.h @@ -27,7 +27,7 @@ MRB_BEGIN_DECL /* * The version of Ruby used by mruby. */ -#define MRUBY_RUBY_VERSION "3.0" +#define MRUBY_RUBY_VERSION "3.1" /* * Ruby engine. @@ -42,7 +42,7 @@ MRB_BEGIN_DECL /* * Minor release version number. */ -#define MRUBY_RELEASE_MINOR 0 +#define MRUBY_RELEASE_MINOR 1 /* * Tiny release version number. @@ -57,7 +57,7 @@ MRB_BEGIN_DECL /* * Patch level string. (optional) */ -#define MRUBY_PATCHLEVEL_STR "" +#define MRUBY_PATCHLEVEL_STR "RC" #ifndef MRUBY_PATCHLEVEL_STR # if MRUBY_PATCHLEVEL < 0 @@ -80,17 +80,17 @@ MRB_BEGIN_DECL /* * Release year. */ -#define MRUBY_RELEASE_YEAR 2021 +#define MRUBY_RELEASE_YEAR 2022 /* * Release month. */ -#define MRUBY_RELEASE_MONTH 3 +#define MRUBY_RELEASE_MONTH 1 /* * Release day. */ -#define MRUBY_RELEASE_DAY 5 +#define MRUBY_RELEASE_DAY 7 /* * Release date as a string. From 64d3f4c7302cb8c0252770d713aedf81b4e109ba Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 12 Jan 2022 12:44:23 +0900 Subject: [PATCH 02/22] vm.c: need to adjust argument after packing keyword args; fix #5632 It was caused by #5628. --- src/vm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index 698f59d0e..b0cd9428d 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1729,6 +1729,7 @@ RETRY_TRY_BLOCK: } mrb_assert(bidx < irep->nregs); + blk = regs[bidx]; uint8_t nk = (b >> 4) & 0x0f; if (nk > 0 && nk < CALL_MAXARGS) { /* pack keyword arguments */ uint8_t n = b & 0x0f; @@ -1737,6 +1738,8 @@ RETRY_TRY_BLOCK: regs[kidx] = kdict; nk = 15; b = n | (nk<<4); + bidx = kidx + 1; + regs[bidx] = blk; } if (mid == 0 || !target_class) { @@ -1761,7 +1764,6 @@ RETRY_TRY_BLOCK: mrb_exc_set(mrb, exc); goto L_RAISE; } - blk = regs[bidx]; if (!mrb_nil_p(blk) && !mrb_proc_p(blk)) { blk = mrb_type_convert(mrb, blk, MRB_TT_PROC, MRB_SYM(to_proc)); /* The stack or ci stack might have been reallocated during From 9424e4d4cf90cbbf783454820491cd157880a4d2 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 16 Feb 2022 13:54:19 +0900 Subject: [PATCH 03/22] parse.y: revert 9e064f2; fix #5647 Need to declare unnamed parameter when argument decomposition used. --- mrbgems/mruby-compiler/core/parse.y | 11 +- mrbgems/mruby-compiler/core/y.tab.c | 3229 ++++++++++++++------------- 2 files changed, 1629 insertions(+), 1611 deletions(-) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 71cdddf68..e443312d7 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -2962,6 +2962,7 @@ f_margs : f_arg } | f_arg ',' tSTAR { + local_add_f(p, intern_op(mul)); $$ = list3($1, nint(-1), 0); } | f_arg ',' tSTAR ',' f_arg @@ -2978,11 +2979,16 @@ f_margs : f_arg } | tSTAR { + local_add_f(p, intern_op(mul)); $$ = list3(0, nint(-1), 0); } - | tSTAR ',' f_arg + | tSTAR ',' { - $$ = list3(0, nint(-1), $3); + local_add_f(p, intern_op(mul)); + } + f_arg + { + $$ = list3(0, nint(-1), $4); } ; @@ -3864,6 +3870,7 @@ f_arg_item : f_norm_arg { $$ = new_masgn_param(p, $3, p->locals->car); local_resume(p, $2); + local_add_f(p, 0); } ; diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index d4ef4b618..948f80350 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -2000,11 +2000,11 @@ union yyalloc /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 149 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 175 +#define YYNNTS 176 /* YYNRULES -- Number of rules. */ -#define YYNRULES 612 +#define YYNRULES 613 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1077 +#define YYNSTATES 1078 #define YYUNDEFTOK 2 #define YYMAXUTOK 377 @@ -2098,33 +2098,33 @@ static const yytype_int16 yyrline[] = 2792, 2792, 2792, 2799, 2805, 2810, 2812, 2809, 2821, 2819, 2837, 2842, 2835, 2859, 2857, 2873, 2883, 2894, 2898, 2902, 2906, 2912, 2919, 2920, 2921, 2924, 2925, 2928, 2929, 2937, - 2938, 2944, 2948, 2951, 2955, 2959, 2963, 2967, 2971, 2975, - 2979, 2983, 2989, 2993, 2997, 3001, 3007, 3012, 3017, 3021, - 3025, 3029, 3033, 3037, 3041, 3045, 3049, 3053, 3057, 3061, - 3065, 3069, 3073, 3079, 3084, 3091, 3091, 3095, 3100, 3107, - 3111, 3117, 3118, 3121, 3126, 3129, 3133, 3139, 3143, 3150, - 3149, 3164, 3174, 3178, 3183, 3190, 3194, 3198, 3202, 3206, - 3210, 3214, 3218, 3222, 3229, 3228, 3243, 3242, 3258, 3266, - 3275, 3278, 3285, 3288, 3292, 3293, 3296, 3300, 3303, 3307, - 3310, 3311, 3312, 3313, 3316, 3317, 3323, 3324, 3325, 3329, - 3342, 3343, 3349, 3354, 3353, 3364, 3368, 3374, 3378, 3391, - 3395, 3401, 3404, 3405, 3408, 3414, 3420, 3421, 3424, 3431, - 3430, 3444, 3448, 3462, 3467, 3481, 3487, 3488, 3489, 3490, - 3491, 3495, 3501, 3505, 3515, 3516, 3517, 3521, 3527, 3531, - 3535, 3539, 3543, 3549, 3553, 3559, 3563, 3567, 3571, 3575, - 3579, 3587, 3594, 3600, 3601, 3605, 3609, 3608, 3625, 3626, - 3629, 3635, 3639, 3645, 3646, 3650, 3654, 3660, 3666, 3672, - 3679, 3685, 3692, 3696, 3702, 3706, 3712, 3713, 3716, 3720, - 3726, 3730, 3734, 3738, 3744, 3749, 3754, 3758, 3762, 3766, - 3770, 3774, 3778, 3782, 3786, 3790, 3794, 3798, 3802, 3806, - 3811, 3817, 3822, 3827, 3832, 3837, 3844, 3848, 3855, 3860, - 3859, 3870, 3874, 3880, 3888, 3896, 3904, 3908, 3914, 3918, - 3924, 3925, 3928, 3933, 3940, 3941, 3944, 3948, 3954, 3958, - 3964, 3969, 3969, 3994, 3995, 4001, 4006, 4012, 4018, 4023, - 4027, 4037, 4044, 4045, 4046, 4049, 4050, 4051, 4052, 4055, - 4056, 4057, 4060, 4061, 4064, 4068, 4074, 4075, 4081, 4082, - 4085, 4086, 4089, 4092, 4093, 4094, 4097, 4098, 4101, 4106, - 4109, 4110, 4114 + 2938, 2944, 2948, 2951, 2955, 2959, 2963, 2968, 2972, 2976, + 2980, 2986, 2985, 2995, 2999, 3003, 3007, 3013, 3018, 3023, + 3027, 3031, 3035, 3039, 3043, 3047, 3051, 3055, 3059, 3063, + 3067, 3071, 3075, 3079, 3085, 3090, 3097, 3097, 3101, 3106, + 3113, 3117, 3123, 3124, 3127, 3132, 3135, 3139, 3145, 3149, + 3156, 3155, 3170, 3180, 3184, 3189, 3196, 3200, 3204, 3208, + 3212, 3216, 3220, 3224, 3228, 3235, 3234, 3249, 3248, 3264, + 3272, 3281, 3284, 3291, 3294, 3298, 3299, 3302, 3306, 3309, + 3313, 3316, 3317, 3318, 3319, 3322, 3323, 3329, 3330, 3331, + 3335, 3348, 3349, 3355, 3360, 3359, 3370, 3374, 3380, 3384, + 3397, 3401, 3407, 3410, 3411, 3414, 3420, 3426, 3427, 3430, + 3437, 3436, 3450, 3454, 3468, 3473, 3487, 3493, 3494, 3495, + 3496, 3497, 3501, 3507, 3511, 3521, 3522, 3523, 3527, 3533, + 3537, 3541, 3545, 3549, 3555, 3559, 3565, 3569, 3573, 3577, + 3581, 3585, 3593, 3600, 3606, 3607, 3611, 3615, 3614, 3631, + 3632, 3635, 3641, 3645, 3651, 3652, 3656, 3660, 3666, 3672, + 3678, 3685, 3691, 3698, 3702, 3708, 3712, 3718, 3719, 3722, + 3726, 3732, 3736, 3740, 3744, 3750, 3755, 3760, 3764, 3768, + 3772, 3776, 3780, 3784, 3788, 3792, 3796, 3800, 3804, 3808, + 3812, 3817, 3823, 3828, 3833, 3838, 3843, 3850, 3854, 3861, + 3866, 3865, 3877, 3881, 3887, 3895, 3903, 3911, 3915, 3921, + 3925, 3931, 3932, 3935, 3940, 3947, 3948, 3951, 3955, 3961, + 3965, 3971, 3976, 3976, 4001, 4002, 4008, 4013, 4019, 4025, + 4030, 4034, 4044, 4051, 4052, 4053, 4056, 4057, 4058, 4059, + 4062, 4063, 4064, 4067, 4068, 4071, 4075, 4081, 4082, 4088, + 4089, 4092, 4093, 4096, 4099, 4100, 4101, 4104, 4105, 4108, + 4113, 4116, 4117, 4121 }; #endif @@ -2175,25 +2175,25 @@ static const char *const yytname[] = "mrhs", "primary", "@8", "@9", "$@10", "$@11", "@12", "@13", "$@14", "$@15", "$@16", "$@17", "$@18", "$@19", "@20", "@21", "@22", "@23", "primary_value", "then", "do", "if_tail", "opt_else", "for_var", - "f_margs", "block_args_tail", "opt_block_args_tail", "block_param", - "opt_block_param", "block_param_def", "$@24", "opt_bv_decl", "bv_decls", - "bvar", "f_larglist", "lambda_body", "do_block", "$@25", "block_call", - "method_call", "brace_block", "@26", "@27", "case_body", "cases", - "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal", "string", - "string_fragment", "string_rep", "string_interp", "@28", "xstring", - "regexp", "heredoc", "heredoc_bodies", "heredoc_body", - "heredoc_string_rep", "heredoc_string_interp", "@29", "words", "symbol", - "basic_symbol", "sym", "symbols", "numeric", "variable", "var_lhs", - "var_ref", "backref", "superclass", "$@30", "f_opt_arglist_paren", - "f_arglist_paren", "f_arglist", "f_label", "f_kw", "f_block_kw", - "f_block_kwarg", "f_kwarg", "kwrest_mark", "f_kwrest", "args_tail", - "opt_args_tail", "f_args", "f_bad_arg", "f_norm_arg", "f_arg_item", - "@31", "f_arg", "f_opt_asgn", "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", "$@32", "assoc_list", "assocs", "assoc", - "operation", "operation2", "operation3", "dot_or_colon", "call_op", - "call_op2", "opt_terms", "opt_nl", "rparen", "trailer", "term", "nl", - "terms", "none", YY_NULLPTR + "f_margs", "$@24", "block_args_tail", "opt_block_args_tail", + "block_param", "opt_block_param", "block_param_def", "$@25", + "opt_bv_decl", "bv_decls", "bvar", "f_larglist", "lambda_body", + "do_block", "$@26", "block_call", "method_call", "brace_block", "@27", + "@28", "case_body", "cases", "opt_rescue", "exc_list", "exc_var", + "opt_ensure", "literal", "string", "string_fragment", "string_rep", + "string_interp", "@29", "xstring", "regexp", "heredoc", "heredoc_bodies", + "heredoc_body", "heredoc_string_rep", "heredoc_string_interp", "@30", + "words", "symbol", "basic_symbol", "sym", "symbols", "numeric", + "variable", "var_lhs", "var_ref", "backref", "superclass", "$@31", + "f_opt_arglist_paren", "f_arglist_paren", "f_arglist", "f_label", "f_kw", + "f_block_kw", "f_block_kwarg", "f_kwarg", "kwrest_mark", "f_kwrest", + "args_tail", "opt_args_tail", "f_args", "f_bad_arg", "f_norm_arg", + "f_arg_item", "@32", "f_arg", "f_opt_asgn", "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", "$@33", + "assoc_list", "assocs", "assoc", "operation", "operation2", "operation3", + "dot_or_colon", "call_op", "call_op2", "opt_terms", "opt_nl", "rparen", + "trailer", "term", "nl", "terms", "none", YY_NULLPTR }; #endif @@ -2220,12 +2220,12 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-865) +#define YYPACT_NINF (-873) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-613) +#define YYTABLE_NINF (-614) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -2234,114 +2234,114 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -865, 141, 3686, -865, 8674, 10798, 11140, 6982, -865, 10444, - 10444, -865, -865, 10912, 8164, 6598, 8910, 8910, -865, -865, - 8910, 4343, 3935, -865, -865, -865, -865, 96, 8164, -865, - 39, -865, -865, -865, 7124, 3799, -865, -865, 7266, -865, - -865, -865, -865, -865, -865, -865, 145, 10562, 10562, 10562, - 10562, 140, 5857, 1267, 9382, 9736, 8446, -865, 7882, 904, - 335, 393, 1098, 1184, -865, 287, 10680, 10562, -865, 1179, - -865, 1356, -865, 382, 1301, 1301, -865, -865, 221, 89, - -865, 117, 11026, -865, 186, 13068, 124, 134, 56, 100, - -865, 314, -865, -865, -865, -865, -865, -865, -865, -865, - -865, 51, 248, -865, 251, 36, -865, -865, -865, -865, - -865, 207, 207, 96, 623, 946, -865, 10444, 239, 5976, - 415, 1435, 1435, -865, 258, -865, 323, -865, -865, 36, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, 23, 44, - 52, 57, -865, -865, -865, -865, -865, -865, 72, 76, - 157, 182, -865, 190, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, 203, - 5035, 321, 382, 1301, 1301, 102, 268, 13192, 497, 233, - 305, 316, 102, 10444, 10444, 669, 360, -865, -865, 712, - 378, 58, 74, -865, -865, -865, -865, -865, -865, -865, - -865, -865, 8023, -865, -865, 299, -865, -865, -865, -865, - -865, -865, 1179, -865, 213, -865, 427, -865, -865, 1179, - 4071, 10562, 10562, 10562, 10562, -865, 13130, -865, -865, 337, - 399, 337, -865, -865, -865, 9028, -865, -865, -865, 8910, - -865, -865, -865, 6598, 6836, -865, 355, 6095, -865, 785, - 410, 13254, 13254, 461, 8792, 5857, 370, 1179, 1356, 1179, - 416, -865, 8792, 1179, 414, 1324, 1324, -865, 13130, 422, - 1324, -865, 526, 11254, 441, 813, 924, 941, 1610, -865, - -865, -865, -865, 1212, -865, -865, -865, -865, -865, -865, - 315, 1247, -865, -865, 776, -865, 553, -865, 1252, -865, - 1255, 491, 492, -865, -865, -865, -865, 6360, 10444, 10444, - 10444, 10444, 8792, 10444, 10444, 47, -865, -865, -865, -865, - -865, 1179, -865, -865, -865, -865, -865, -865, -865, 1963, - 473, 477, 5035, 10562, -865, 462, 561, 479, -865, 1179, - -865, -865, -865, 484, 10562, -865, 485, 568, 494, 583, - -865, -865, 487, 5035, -865, -865, 9854, -865, 5857, 8560, - 498, 9854, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, - 10562, 10562, 10562, 10562, 10562, 10562, 592, 10562, 10562, 10562, + -873, 124, 3686, -873, 8674, 10798, 11140, 6982, -873, 10444, + 10444, -873, -873, 10912, 8164, 6598, 8910, 8910, -873, -873, + 8910, 4343, 3935, -873, -873, -873, -873, -13, 8164, -873, + -4, -873, -873, -873, 7124, 3799, -873, -873, 7266, -873, + -873, -873, -873, -873, -873, -873, 45, 10562, 10562, 10562, + 10562, 89, 5857, 585, 9382, 9736, 8446, -873, 7882, 681, + 776, 904, 1227, 1252, -873, 288, 10680, 10562, -873, 448, + -873, 1256, -873, 328, 1307, 1307, -873, -873, 152, 44, + -873, 98, 11026, -873, 87, 13068, 318, 487, 56, 117, + -873, 466, -873, -873, -873, -873, -873, -873, -873, -873, + -873, 212, 123, -873, 291, 92, -873, -873, -873, -873, + -873, 106, 106, -13, 623, 777, -873, 10444, 364, 5976, + 355, 1435, 1435, -873, 139, -873, 669, -873, -873, 92, + -873, -873, -873, -873, -873, -873, -873, -873, -873, -873, + -873, -873, -873, -873, -873, -873, -873, -873, -873, -873, + -873, -873, -873, -873, -873, -873, -873, -873, 23, 46, + 60, 82, -873, -873, -873, -873, -873, -873, 127, 191, + 203, 204, -873, 229, -873, -873, -873, -873, -873, -873, + -873, -873, -873, -873, -873, -873, -873, -873, -873, -873, + -873, -873, -873, -873, -873, -873, -873, -873, -873, -873, + -873, -873, -873, -873, -873, -873, -873, -873, -873, 253, + 5035, 211, 328, 1307, 1307, 160, 193, 13192, 712, 118, + 248, 207, 160, 10444, 10444, 887, 312, -873, -873, 908, + 347, 58, 86, -873, -873, -873, -873, -873, -873, -873, + -873, -873, 8023, -873, -873, 240, -873, -873, -873, -873, + -873, -873, 448, -873, 632, -873, 369, -873, -873, 448, + 4071, 10562, 10562, 10562, 10562, -873, 13130, -873, -873, 292, + 373, 292, -873, -873, -873, 9028, -873, -873, -873, 8910, + -873, -873, -873, 6598, 6836, -873, 309, 6095, -873, 955, + 350, 13254, 13254, 299, 8792, 5857, 325, 448, 1256, 448, + 353, -873, 8792, 448, 352, 1511, 1511, -873, 13130, 344, + 1511, -873, 434, 11254, 358, 1013, 1040, 1057, 1610, -873, + -873, -873, -873, 1255, -873, -873, -873, -873, -873, -873, + 653, 1276, -873, -873, 825, -873, 1003, -873, 1314, -873, + 1348, 396, 414, -873, -873, -873, -873, 6360, 10444, 10444, + 10444, 10444, 8792, 10444, 10444, 48, -873, -873, -873, -873, + -873, 448, -873, -873, -873, -873, -873, -873, -873, 1963, + 399, 410, 5035, 10562, -873, 392, 486, 413, -873, 448, + -873, -873, -873, 419, 10562, -873, 430, 490, 441, 530, + -873, -873, 464, 5035, -873, -873, 9854, -873, 5857, 8560, + 458, 9854, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, + 10562, 10562, 10562, 10562, 10562, 10562, 553, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 2428, - -865, 8910, -865, 3143, -865, -865, 12650, -865, -865, -865, - -865, 10680, 10680, -865, 562, -865, 382, -865, 999, -865, - -865, -865, -865, -865, -865, 11532, 8910, 11618, 5035, 10444, - -865, -865, -865, 641, 655, 344, 558, 566, -865, 5181, - 682, 10562, 11704, 8910, 11790, 10562, 10562, 5473, 167, 167, - 103, 11876, 8910, 11962, -865, 636, -865, 6095, 427, -865, - -865, 9972, 685, -865, 10562, 13192, 13192, 13192, 10562, -865, - -865, 9146, -865, 10562, -865, 9500, 6717, 559, 1179, 337, - 337, -865, -865, 759, 564, -865, -865, -865, 8164, 5592, - 563, 11704, 11790, 10562, 1356, 1179, -865, -865, 6479, 569, - 1356, -865, -865, 9618, -865, 1179, 9736, -865, -865, -865, - 999, 117, 11254, -865, 11254, 12048, 8910, 12134, 2259, -865, - -865, 570, -865, 1259, 6095, 315, -865, -865, -865, -865, - -865, -865, -865, 10562, 10562, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, 1236, 1179, 1179, 576, - 10680, 688, 13192, 54, -865, -865, -865, 198, -865, -865, - 2093, -865, 13192, 2259, -865, -865, 1289, -865, -865, 10680, - 704, 43, 10562, -865, 12784, 337, -865, 1179, 11254, 581, - -865, -865, -865, 680, 614, 2039, -865, -865, 1018, 348, + -873, 8910, -873, 3143, -873, -873, 12650, -873, -873, -873, + -873, 10680, 10680, -873, 516, -873, 328, -873, 1068, -873, + -873, -873, -873, -873, -873, 11532, 8910, 11618, 5035, 10444, + -873, -873, -873, 606, 615, 215, 509, 510, -873, 5181, + 617, 10562, 11704, 8910, 11790, 10562, 10562, 5473, 101, 101, + 115, 11876, 8910, 11962, -873, 573, -873, 6095, 369, -873, + -873, 9972, 625, -873, 10562, 13192, 13192, 13192, 10562, -873, + -873, 9146, -873, 10562, -873, 9500, 6717, 506, 448, 292, + 292, -873, -873, 838, 511, -873, -873, -873, 8164, 5592, + 522, 11704, 11790, 10562, 1256, 448, -873, -873, 6479, 500, + 1256, -873, -873, 9618, -873, 448, 9736, -873, -873, -873, + 1068, 98, 11254, -873, 11254, 12048, 8910, 12134, 2259, -873, + -873, 526, -873, 1353, 6095, 653, -873, -873, -873, -873, + -873, -873, -873, 10562, 10562, -873, -873, -873, -873, -873, + -873, -873, -873, -873, -873, -873, 1454, 448, 448, 537, + 10680, 666, 13192, 335, -873, -873, -873, 54, -873, -873, + 2093, -873, 13192, 2259, -873, -873, 1038, -873, -873, 10680, + 672, 47, 10562, -873, 12784, 292, -873, 448, 11254, 559, + -873, -873, -873, 655, 581, 2039, -873, -873, 1078, 220, 3042, 3042, 3042, 3042, 1617, 1617, 3376, 2927, 3042, 3042, - 13254, 13254, 1153, 1153, -865, 410, 13192, 1617, 1617, 1278, - 1278, 1426, 234, 234, 410, 410, 410, 4479, 7622, 4751, - 7740, -865, 207, -865, 597, 337, 509, -865, 589, -865, - -865, 4207, -865, -865, 1791, 43, 43, -865, 2539, -865, - -865, -865, -865, -865, 1179, 10444, 5035, 963, 777, -865, - 207, 599, 207, 729, 759, 8305, -865, 10090, 732, -865, - 10562, 10562, 466, -865, 7384, 7503, 606, 397, 405, 732, - -865, -865, -865, -865, 71, 86, 615, 111, 112, 10444, - 8164, 621, 747, 13192, 639, -865, 13192, 13192, 1089, 10562, - 13130, -865, 337, 13192, -865, -865, -865, -865, 9264, 9500, - -865, -865, -865, 632, -865, -865, 33, 1356, 1179, 1324, - 498, -865, 963, 777, 631, 1051, 1134, -865, 95, 2259, - -865, 637, -865, 410, 410, -865, 901, 1179, 635, -865, - -865, 2153, 734, 3255, -865, 722, -865, 479, -865, 1179, - -865, -865, 644, 646, 647, -865, 649, 722, 647, 749, - 12722, -865, -865, 2259, 5035, -865, -865, 12855, 10208, -865, - -865, 11254, 8792, 10680, 10562, 12220, 8910, 12306, 869, 10680, - 10680, -865, 562, 609, 9146, 10680, 10680, -865, 562, 100, - 221, 5035, 6095, 43, -865, 1179, 780, -865, -865, -865, - -865, 12784, -865, 705, -865, 5738, 789, -865, 10444, 795, - -865, 10562, 10562, 408, 10562, 10562, 800, 6241, 6241, 115, - 167, -865, -865, -865, 10326, 5327, 13192, -865, 6717, 337, - -865, -865, -865, 495, 673, 1380, 5035, 6095, -865, -865, - 1579, 681, -865, 1454, 1179, 10562, 10562, -865, -865, 2259, - -865, 1289, -865, 1289, -865, 1289, -865, -865, 10562, 10562, - -865, -865, -865, 11368, -865, 683, 479, 689, 11368, -865, - 693, 696, -865, 807, 10562, 12926, -865, -865, 13192, 4615, - 4887, 708, 412, 442, 10562, 10562, -865, -865, -865, -865, - -865, 10680, -865, -865, -865, -865, -865, -865, -865, 835, - 718, 6095, 5035, -865, -865, 11482, 102, -865, -865, 6241, - -865, -865, 102, -865, 10562, -865, 843, 846, -865, 13192, - 294, -865, 9500, -865, 1517, 848, 730, 731, 1579, 1118, - -865, 13192, 13192, 647, 739, 647, 647, 13192, 13192, 750, - 760, 832, 1019, 54, -865, -865, 1746, -865, 1019, 2259, - -865, 1289, -865, -865, 12997, 475, 13192, 13192, -865, -865, - -865, -865, 755, 880, 842, -865, 1046, 924, 941, 5035, - -865, 5181, -865, -865, 6241, -865, -865, -865, -865, 770, - -865, -865, -865, -865, 1579, 731, 1579, 774, -865, 1289, - -865, -865, -865, -865, -865, -865, 12392, -865, 479, 54, - -865, -865, 778, 781, 792, -865, 794, 792, -865, -865, - 999, 12478, 8910, 12564, 655, 466, 887, 1517, 1089, 731, - 1579, 647, 783, 797, -865, 2259, -865, 1289, -865, 1289, - -865, 1289, -865, -865, 963, 777, 801, 160, 753, -865, - -865, -865, -865, 731, -865, 792, 804, 792, 792, 495, - -865, 1289, -865, -865, -865, 792, -865 + 13254, 13254, 1146, 1146, -873, 350, 13192, 1617, 1617, 1427, + 1427, 1442, 378, 378, 350, 350, 350, 4479, 7622, 4751, + 7740, -873, 106, -873, 568, 292, 461, -873, 501, -873, + -873, 4207, -873, -873, 1791, 47, 47, -873, 2539, -873, + -873, -873, -873, -873, 448, 10444, 5035, 906, 51, -873, + 106, 571, 106, 703, 838, 8305, -873, 10090, 706, -873, + 10562, 10562, 439, -873, 7384, 7503, 594, 256, 282, 706, + -873, -873, -873, -873, 55, 79, 598, 126, 129, 10444, + 8164, 621, 741, 13192, 639, -873, 13192, 13192, 852, 10562, + 13130, -873, 292, 13192, -873, -873, -873, -873, 9264, 9500, + -873, -873, -873, 637, -873, -873, 138, 1256, 448, 1511, + 458, -873, 906, 51, 636, 933, 934, -873, 91, 2259, + -873, 640, -873, 350, 350, -873, 276, 448, 620, -873, + -873, 2153, 720, 3255, -873, 721, -873, 413, -873, 448, + -873, -873, 644, 646, 647, -873, 651, 721, 647, 752, + 12722, -873, -873, 2259, 5035, -873, -873, 12855, 10208, -873, + -873, 11254, 8792, 10680, 10562, 12220, 8910, 12306, 167, 10680, + 10680, -873, 516, 577, 9146, 10680, 10680, -873, 516, 117, + 152, 5035, 6095, 47, -873, 448, 795, -873, -873, -873, + -873, 12784, -873, 719, -873, 5738, 801, -873, 10444, 803, + -873, 10562, 10562, 307, 10562, 10562, 807, 6241, 6241, 130, + 101, -873, -873, -873, 10326, 5327, 13192, -873, 6717, 292, + -873, -873, -873, 497, 678, 1326, 5035, 6095, -873, -873, + -873, 683, -873, 1671, 448, 10562, 10562, -873, -873, 2259, + -873, 1038, -873, 1038, -873, 1038, -873, -873, 10562, 10562, + -873, -873, -873, 11368, -873, 689, 413, 693, 11368, -873, + 696, 708, -873, 836, 10562, 12926, -873, -873, 13192, 4615, + 4887, 716, 324, 348, 10562, 10562, -873, -873, -873, -873, + -873, 10680, -873, -873, -873, -873, -873, -873, -873, 843, + 722, 6095, 5035, -873, -873, 11482, 160, -873, -873, 6241, + -873, -873, 160, -873, 10562, -873, 848, 854, -873, 13192, + 157, -873, 9500, -873, 849, 858, 735, 1330, 1330, 342, + -873, 13192, 13192, 647, 736, 647, 647, 13192, 13192, 755, + 761, 840, 1091, 335, -873, -873, 1746, -873, 1091, 2259, + -873, 1038, -873, -873, 12997, 412, 13192, 13192, -873, -873, + -873, -873, 759, 892, 857, -873, 1117, 1040, 1057, 5035, + -873, 5181, -873, -873, 6241, -873, -873, -873, -873, 778, + -873, -873, -873, -873, 780, 780, 1330, 781, -873, 1038, + -873, -873, -873, -873, -873, -873, 12392, -873, 413, 335, + -873, -873, 784, 785, 792, -873, 794, 792, -873, -873, + 1068, 12478, 8910, 12564, 615, 439, 931, 849, 852, 1330, + 780, 1330, 647, 804, 808, -873, 2259, -873, 1038, -873, + 1038, -873, 1038, -873, -873, 906, 51, 806, 592, 753, + -873, -873, -873, -873, 780, -873, 792, 812, 792, 792, + 497, -873, 1038, -873, -873, -873, 792, -873 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2350,18 +2350,18 @@ static const yytype_int16 yypact[] = static const yytype_int16 yydefact[] = { 2, 0, 0, 1, 0, 0, 0, 0, 293, 0, - 0, 317, 320, 0, 0, 598, 337, 338, 339, 340, - 305, 270, 270, 487, 486, 488, 489, 600, 0, 10, - 0, 491, 490, 492, 478, 584, 480, 479, 482, 481, - 474, 475, 436, 437, 493, 494, 291, 0, 0, 0, - 0, 0, 0, 295, 612, 612, 88, 312, 0, 0, - 0, 0, 0, 0, 451, 0, 0, 0, 3, 598, - 6, 9, 27, 33, 540, 540, 49, 60, 59, 0, + 0, 317, 320, 0, 0, 599, 337, 338, 339, 340, + 305, 270, 270, 488, 487, 489, 490, 601, 0, 10, + 0, 492, 491, 493, 479, 585, 481, 480, 483, 482, + 475, 476, 437, 438, 494, 495, 291, 0, 0, 0, + 0, 0, 0, 295, 613, 613, 88, 312, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 0, 3, 599, + 6, 9, 27, 33, 541, 541, 49, 60, 59, 0, 76, 0, 80, 90, 0, 54, 248, 0, 61, 310, - 284, 285, 434, 286, 287, 288, 432, 431, 463, 433, - 430, 485, 0, 289, 290, 270, 5, 8, 337, 338, - 305, 612, 412, 0, 113, 114, 291, 0, 0, 0, - 0, 540, 540, 116, 495, 341, 0, 485, 290, 0, + 284, 285, 435, 286, 287, 288, 433, 432, 464, 434, + 431, 486, 0, 289, 290, 270, 5, 8, 337, 338, + 305, 613, 413, 0, 113, 114, 291, 0, 0, 0, + 0, 541, 541, 116, 496, 341, 0, 486, 290, 0, 333, 168, 178, 169, 165, 194, 195, 196, 197, 176, 191, 184, 174, 173, 189, 172, 171, 167, 192, 166, 179, 183, 185, 177, 170, 186, 193, 188, 187, 180, @@ -2369,117 +2369,117 @@ static const yytype_int16 yydefact[] = 160, 118, 120, 119, 153, 154, 131, 132, 133, 140, 137, 139, 134, 135, 155, 156, 141, 142, 146, 149, 150, 136, 138, 128, 129, 130, 143, 144, 145, 147, - 148, 151, 152, 157, 571, 55, 121, 122, 570, 0, - 0, 0, 58, 540, 540, 0, 0, 54, 0, 485, + 148, 151, 152, 157, 572, 55, 121, 122, 571, 0, + 0, 0, 58, 541, 541, 0, 0, 54, 0, 486, 0, 290, 0, 0, 0, 112, 0, 352, 351, 0, - 0, 485, 290, 187, 180, 190, 175, 158, 159, 160, - 118, 119, 0, 123, 125, 20, 124, 454, 459, 458, - 606, 608, 598, 609, 0, 456, 0, 610, 607, 599, - 582, 0, 0, 273, 0, 265, 277, 74, 269, 612, - 434, 612, 575, 75, 73, 612, 259, 306, 72, 0, - 258, 411, 71, 598, 0, 18, 0, 0, 221, 0, - 222, 209, 212, 302, 0, 0, 0, 598, 15, 598, - 78, 14, 0, 598, 0, 603, 603, 249, 0, 0, - 603, 573, 0, 0, 86, 0, 96, 103, 540, 468, - 467, 469, 470, 0, 466, 465, 438, 443, 442, 445, - 0, 0, 440, 447, 0, 449, 0, 461, 0, 472, - 0, 476, 477, 53, 236, 237, 4, 599, 0, 0, - 0, 0, 0, 0, 0, 547, 543, 542, 541, 544, - 545, 0, 549, 561, 516, 517, 565, 564, 560, 540, - 0, 503, 0, 509, 514, 612, 519, 612, 539, 0, - 546, 548, 551, 525, 0, 558, 525, 563, 525, 567, - 523, 499, 0, 0, 399, 401, 0, 92, 0, 84, + 0, 486, 290, 187, 180, 190, 175, 158, 159, 160, + 118, 119, 0, 123, 125, 20, 124, 455, 460, 459, + 607, 609, 599, 610, 0, 457, 0, 611, 608, 600, + 583, 0, 0, 273, 0, 265, 277, 74, 269, 613, + 435, 613, 576, 75, 73, 613, 259, 306, 72, 0, + 258, 412, 71, 599, 0, 18, 0, 0, 221, 0, + 222, 209, 212, 302, 0, 0, 0, 599, 15, 599, + 78, 14, 0, 599, 0, 604, 604, 249, 0, 0, + 604, 574, 0, 0, 86, 0, 96, 103, 541, 469, + 468, 470, 471, 0, 467, 466, 439, 444, 443, 446, + 0, 0, 441, 448, 0, 450, 0, 462, 0, 473, + 0, 477, 478, 53, 236, 237, 4, 600, 0, 0, + 0, 0, 0, 0, 0, 548, 544, 543, 542, 545, + 546, 0, 550, 562, 517, 518, 566, 565, 561, 541, + 0, 504, 0, 510, 515, 613, 520, 613, 540, 0, + 547, 549, 552, 526, 0, 559, 526, 564, 526, 568, + 524, 500, 0, 0, 400, 402, 0, 92, 0, 84, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 595, 612, 594, 0, 597, 596, 0, 416, 414, 311, - 435, 0, 0, 405, 65, 309, 330, 113, 114, 115, - 476, 477, 503, 496, 328, 0, 612, 0, 0, 0, - 593, 592, 56, 0, 612, 302, 0, 0, 343, 0, - 342, 0, 0, 612, 0, 0, 0, 0, 0, 0, - 302, 0, 612, 0, 325, 0, 126, 0, 0, 455, - 457, 0, 0, 611, 579, 278, 581, 272, 0, 600, - 266, 0, 275, 0, 267, 0, 598, 0, 598, 612, - 612, 260, 271, 598, 0, 308, 52, 601, 0, 0, - 0, 0, 0, 0, 17, 598, 300, 13, 599, 77, - 296, 299, 303, 605, 250, 604, 605, 252, 304, 574, - 102, 94, 0, 89, 0, 0, 612, 0, 540, 313, - 396, 525, 471, 0, 0, 446, 452, 439, 441, 448, - 450, 462, 473, 0, 0, 7, 21, 22, 23, 24, - 25, 50, 51, 507, 553, 506, 0, 598, 598, 525, - 0, 0, 508, 0, 521, 569, 518, 0, 522, 504, - 0, 532, 554, 0, 535, 562, 0, 537, 566, 0, - 0, 612, 0, 28, 30, 0, 31, 598, 0, 82, + 596, 613, 595, 0, 598, 597, 0, 417, 415, 311, + 436, 0, 0, 406, 65, 309, 330, 113, 114, 115, + 477, 478, 504, 497, 328, 0, 613, 0, 0, 0, + 594, 593, 56, 0, 613, 302, 0, 0, 343, 0, + 342, 0, 0, 613, 0, 0, 0, 0, 0, 0, + 302, 0, 613, 0, 325, 0, 126, 0, 0, 456, + 458, 0, 0, 612, 580, 278, 582, 272, 0, 601, + 266, 0, 275, 0, 267, 0, 599, 0, 599, 613, + 613, 260, 271, 599, 0, 308, 52, 602, 0, 0, + 0, 0, 0, 0, 17, 599, 300, 13, 600, 77, + 296, 299, 303, 606, 250, 605, 606, 252, 304, 575, + 102, 94, 0, 89, 0, 0, 613, 0, 541, 313, + 397, 526, 472, 0, 0, 447, 453, 440, 442, 449, + 451, 463, 474, 0, 0, 7, 21, 22, 23, 24, + 25, 50, 51, 508, 554, 507, 0, 599, 599, 526, + 0, 0, 509, 0, 522, 570, 519, 0, 523, 505, + 0, 533, 555, 0, 536, 563, 0, 538, 567, 0, + 0, 613, 0, 28, 30, 0, 31, 599, 0, 82, 93, 48, 34, 46, 0, 253, 198, 29, 0, 290, 226, 231, 232, 233, 228, 230, 240, 241, 234, 235, - 207, 210, 238, 239, 32, 218, 600, 227, 229, 223, - 224, 225, 213, 214, 215, 216, 217, 585, 590, 586, - 591, 410, 270, 408, 0, 612, 585, 587, 586, 588, - 409, 270, 585, 586, 270, 612, 612, 35, 253, 199, + 207, 210, 238, 239, 32, 218, 601, 227, 229, 223, + 224, 225, 213, 214, 215, 216, 217, 586, 591, 587, + 592, 411, 270, 409, 0, 613, 586, 588, 587, 589, + 410, 270, 586, 587, 270, 613, 613, 35, 253, 199, 45, 206, 63, 66, 0, 0, 0, 113, 114, 117, - 0, 0, 612, 0, 598, 0, 294, 612, 612, 422, - 0, 0, 612, 344, 589, 301, 0, 585, 586, 612, - 346, 318, 345, 321, 589, 301, 0, 585, 586, 0, - 0, 0, 0, 277, 0, 324, 578, 577, 276, 0, - 279, 274, 612, 580, 576, 257, 255, 261, 262, 264, - 307, 602, 19, 0, 26, 205, 79, 16, 598, 603, - 95, 87, 99, 101, 0, 98, 100, 600, 0, 0, - 464, 0, 453, 219, 220, 547, 360, 598, 353, 502, - 500, 0, 41, 244, 335, 0, 515, 612, 568, 0, - 524, 552, 525, 525, 525, 559, 525, 547, 525, 43, - 246, 336, 387, 385, 0, 384, 383, 283, 0, 91, - 85, 0, 0, 0, 0, 0, 612, 0, 0, 0, - 0, 407, 69, 413, 262, 0, 0, 406, 67, 402, - 62, 0, 0, 612, 331, 0, 0, 413, 334, 572, - 57, 423, 424, 612, 425, 0, 612, 349, 0, 0, - 347, 0, 0, 413, 0, 0, 0, 0, 0, 413, - 0, 127, 460, 323, 0, 0, 280, 268, 598, 612, - 11, 297, 251, 97, 0, 389, 0, 0, 314, 444, - 0, 358, 550, 0, 598, 0, 0, 520, 505, 0, - 528, 0, 530, 0, 536, 0, 533, 538, 0, 0, - 382, 600, 600, 511, 512, 612, 612, 367, 0, 556, - 367, 367, 365, 0, 0, 281, 83, 47, 254, 585, - 586, 0, 585, 586, 0, 0, 40, 203, 39, 204, - 70, 0, 37, 201, 38, 202, 68, 403, 404, 0, - 0, 0, 0, 497, 329, 0, 0, 427, 350, 0, - 12, 429, 0, 315, 0, 316, 0, 0, 326, 279, - 612, 256, 263, 395, 0, 0, 0, 361, 0, 356, - 501, 42, 245, 525, 525, 525, 525, 44, 247, 0, - 0, 0, 510, 0, 363, 364, 367, 375, 555, 0, - 378, 0, 380, 400, 282, 413, 243, 242, 36, 200, - 417, 415, 0, 0, 0, 426, 0, 104, 111, 0, - 428, 0, 319, 322, 0, 419, 420, 418, 393, 600, - 391, 394, 398, 397, 0, 359, 0, 354, 529, 0, - 526, 531, 534, 388, 386, 302, 0, 513, 612, 0, - 366, 373, 367, 367, 367, 557, 367, 367, 64, 332, - 110, 0, 612, 0, 612, 612, 0, 0, 390, 357, - 0, 525, 589, 301, 362, 0, 370, 0, 372, 0, - 379, 0, 376, 381, 107, 109, 0, 585, 586, 421, - 348, 327, 392, 355, 527, 367, 367, 367, 367, 105, - 371, 0, 368, 374, 377, 367, 369 + 0, 0, 613, 0, 599, 0, 294, 613, 613, 423, + 0, 0, 613, 344, 590, 301, 0, 586, 587, 613, + 346, 318, 345, 321, 590, 301, 0, 586, 587, 0, + 0, 0, 0, 277, 0, 324, 579, 578, 276, 0, + 279, 274, 613, 581, 577, 257, 255, 261, 262, 264, + 307, 603, 19, 0, 26, 205, 79, 16, 599, 604, + 95, 87, 99, 101, 0, 98, 100, 601, 0, 0, + 465, 0, 454, 219, 220, 548, 360, 599, 353, 503, + 501, 0, 41, 244, 335, 0, 516, 613, 569, 0, + 525, 553, 526, 526, 526, 560, 526, 548, 526, 43, + 246, 336, 388, 386, 0, 385, 384, 283, 0, 91, + 85, 0, 0, 0, 0, 0, 613, 0, 0, 0, + 0, 408, 69, 414, 262, 0, 0, 407, 67, 403, + 62, 0, 0, 613, 331, 0, 0, 414, 334, 573, + 57, 424, 425, 613, 426, 0, 613, 349, 0, 0, + 347, 0, 0, 414, 0, 0, 0, 0, 0, 414, + 0, 127, 461, 323, 0, 0, 280, 268, 599, 613, + 11, 297, 251, 97, 0, 390, 0, 0, 314, 445, + 361, 358, 551, 0, 599, 0, 0, 521, 506, 0, + 529, 0, 531, 0, 537, 0, 534, 539, 0, 0, + 383, 601, 601, 512, 513, 613, 613, 368, 0, 557, + 368, 368, 366, 0, 0, 281, 83, 47, 254, 586, + 587, 0, 586, 587, 0, 0, 40, 203, 39, 204, + 70, 0, 37, 201, 38, 202, 68, 404, 405, 0, + 0, 0, 0, 498, 329, 0, 0, 428, 350, 0, + 12, 430, 0, 315, 0, 316, 0, 0, 326, 279, + 613, 256, 263, 396, 0, 0, 0, 0, 0, 356, + 502, 42, 245, 526, 526, 526, 526, 44, 247, 0, + 0, 0, 511, 0, 364, 365, 368, 376, 556, 0, + 379, 0, 381, 401, 282, 414, 243, 242, 36, 200, + 418, 416, 0, 0, 0, 427, 0, 104, 111, 0, + 429, 0, 319, 322, 0, 420, 421, 419, 394, 601, + 392, 395, 399, 398, 362, 359, 0, 354, 530, 0, + 527, 532, 535, 389, 387, 302, 0, 514, 613, 0, + 367, 374, 368, 368, 368, 558, 368, 368, 64, 332, + 110, 0, 613, 0, 613, 613, 0, 0, 391, 0, + 357, 0, 526, 590, 301, 363, 0, 371, 0, 373, + 0, 380, 0, 377, 382, 107, 109, 0, 586, 587, + 422, 348, 327, 393, 355, 528, 368, 368, 368, 368, + 105, 372, 0, 369, 375, 378, 368, 370 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -865, -865, -865, 403, -865, 41, -865, -233, 137, -865, - 40, -865, -60, -215, 560, 1421, 1889, -865, 20, -57, - -865, -657, -865, 30, 934, -211, -19, -50, -286, -443, - -8, 2634, -61, 942, 9, -17, -865, -865, 42, -865, - 1196, -865, 503, 73, -141, -365, 99, -7, -865, -440, - -240, -157, 147, -363, 97, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, 8, -200, -450, -76, -620, -865, -865, 178, 154, - -865, -536, -865, -865, -309, -865, -74, -865, -865, 155, - -865, -865, -865, -88, -865, -865, -452, -865, -68, -865, - -865, -865, -865, -865, -14, 26, -148, -865, -865, -865, - -865, -865, -259, -865, 717, -865, -865, -865, 6, -865, - -865, -865, 2469, 2735, 966, 2054, -865, -865, -16, 458, - 22, -633, 398, 27, -865, -865, -865, 302, 84, -126, - -249, -864, -681, -438, -865, 29, -650, -542, -838, 17, - -527, -865, -338, -865, 181, -340, -865, -865, -865, 38, - -429, 656, -351, -865, -865, -80, -865, 66, -23, 557, - -267, 327, -258, -64, -2 + -873, -873, -873, 436, -873, 34, -873, -233, 137, -873, + 40, -873, -188, -215, 560, 1421, 1889, -873, 20, -57, + -873, -640, -873, 30, 948, -211, -19, -50, -286, -475, + -11, 2634, -61, 957, 9, -17, -873, -873, 42, -873, + 1196, -873, 503, 73, -209, -365, 99, -7, -873, -440, + -240, -157, 147, -350, 97, -873, -873, -873, -873, -873, + -873, -873, -873, -873, -873, -873, -873, -873, -873, -873, + -873, 8, -200, -450, -71, -620, -873, -873, -873, 182, + 260, -873, -536, -873, -873, -302, -873, -65, -873, -873, + 163, -873, -873, -873, -88, -873, -873, -452, -873, -53, + -873, -873, -873, -873, -873, -14, 26, -148, -873, -873, + -873, -873, -873, -259, -873, 729, -873, -873, -873, 6, + -873, -873, -873, 2469, 2735, 980, 2054, -873, -873, 24, + 504, 0, 142, 405, 27, -873, -873, -873, 302, 84, + -126, -222, -843, -697, -438, -873, 301, -721, -545, -872, + 29, -527, -873, -448, -873, 208, -340, -873, -873, -873, + 38, -429, 656, -351, -873, -873, -80, -873, 66, -23, + 557, -267, 327, -258, -64, -2 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -2492,17 +2492,17 @@ static const yytype_int16 yydefgoto[] = 85, 304, 616, 651, 277, 507, 508, 278, 279, 268, 500, 536, 655, 606, 86, 210, 302, 738, 303, 318, 748, 223, 837, 224, 838, 709, 994, 676, 674, 922, - 458, 289, 469, 701, 829, 830, 230, 757, 1020, 967, - 881, 784, 785, 882, 854, 999, 1000, 549, 858, 395, - 601, 88, 89, 445, 666, 665, 492, 997, 688, 823, - 926, 930, 90, 91, 92, 331, 332, 554, 93, 94, - 95, 555, 253, 254, 255, 487, 96, 97, 98, 325, - 99, 100, 219, 220, 103, 221, 454, 675, 370, 371, - 372, 373, 374, 884, 885, 375, 376, 377, 770, 591, - 379, 380, 381, 382, 576, 383, 384, 385, 889, 890, - 386, 387, 388, 389, 390, 584, 209, 459, 309, 510, - 272, 129, 680, 653, 462, 457, 436, 514, 855, 515, - 534, 257, 258, 259, 301 + 458, 289, 469, 701, 829, 830, 230, 757, 947, 1020, + 967, 881, 784, 785, 882, 854, 999, 1000, 549, 858, + 395, 601, 88, 89, 445, 666, 665, 492, 997, 688, + 823, 926, 930, 90, 91, 92, 331, 332, 554, 93, + 94, 95, 555, 253, 254, 255, 487, 96, 97, 98, + 325, 99, 100, 219, 220, 103, 221, 454, 675, 370, + 371, 372, 373, 374, 884, 885, 375, 376, 377, 770, + 591, 379, 380, 381, 382, 576, 383, 384, 385, 889, + 890, 386, 387, 388, 389, 390, 584, 209, 459, 309, + 510, 272, 129, 680, 653, 462, 457, 436, 514, 855, + 515, 534, 257, 258, 259, 301 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2513,197 +2513,197 @@ static const yytype_int16 yytable[] = 106, 439, 270, 270, 284, 347, 270, 433, 435, 343, 87, 285, 87, 126, 126, 282, 205, 218, 218, 280, 246, 229, 477, 218, 218, 218, 517, 542, 218, 703, - 222, 504, 400, 300, 246, 252, 712, 588, 617, 537, - 270, 270, 71, 539, 71, 107, 265, 265, 314, 206, - 265, 775, 307, 311, 271, 271, 206, 449, 271, 392, - 87, 721, 437, 772, 315, 721, 654, 324, 826, 550, - 206, 556, 391, 391, 218, 861, 724, 440, 652, 836, - 1001, 256, 661, -104, 525, 664, 334, 336, 338, 340, - 315, 681, 306, 310, 276, 281, -107, 393, 444, -111, - 206, 741, 125, 125, 573, 765, 682, 724, 696, 280, - 125, -109, 501, -487, 505, 267, 273, 706, 468, 274, - 578, 652, 782, 661, 856, 218, 437, 87, -110, 811, - 812, 1025, 682, 888, -486, 346, -106, -108, 474, 581, - -105, 3, -488, -483, 393, 910, 434, -489, 533, 483, - 883, 916, 771, 125, -77, 364, 365, 366, 378, 378, - 600, 430, -491, 269, 269, 790, -490, 269, 574, 783, - -487, 682, -104, 1001, 438, -91, -106, 287, 443, 125, - 275, 744, 367, 558, 276, 281, 558, 607, 558, 296, - 558, -486, 558, -96, 700, 293, 682, 466, 467, -488, - -96, 305, 443, 432, -489, 378, 378, 1025, 857, 522, - 396, 391, 391, -99, -341, -585, -103, 247, 87, -491, - 248, 249, 772, -490, 429, 683, 667, 670, -101, -341, - -586, 218, 218, 528, 772, 547, 393, -484, 438, 430, - 283, 535, 535, 478, 479, -102, 535, -492, 250, 394, - 251, 324, 773, -98, -100, 776, 296, -97, 542, 397, - 594, 270, 597, 541, -341, 270, -112, 502, 1007, 502, - 504, -341, -478, 511, 431, -106, 300, 921, -106, -106, - -482, 432, 247, 218, 206, 248, 249, 218, 721, 721, - 447, 218, 218, 460, 448, 87, 752, 378, 378, 747, - 724, 366, 87, 87, -492, 265, -106, 401, -106, 265, - 87, 771, 825, 250, 491, 251, 888, 271, 488, 888, - 995, 315, 542, 771, 822, -483, 367, 775, 489, -478, - 883, 248, 249, 883, 524, 417, 883, -482, 883, 603, - 441, 611, 530, 442, 613, 341, 342, 551, 896, 553, - 461, 275, 728, 729, -104, 87, 218, 218, 218, 218, - 87, 218, 218, 527, 721, 426, 427, 428, 566, 567, - 568, 569, -111, 585, 42, 585, 465, 43, 512, 300, - 87, 611, 611, 453, 613, 613, 883, 71, 565, 471, - 938, 609, 570, -103, 679, 888, 333, 475, 579, 327, - 328, 87, 378, 484, 218, 558, 87, 315, 476, 618, - 125, 773, 883, 455, 883, 480, 883, 270, 883, 353, - 354, 59, 509, 773, 520, 771, 269, 867, 430, 511, - 247, 901, 296, 248, 249, 771, 523, -111, 883, 218, - 442, 486, 270, 816, 652, 891, 661, 491, 788, 618, - 618, 329, 330, 378, 511, 335, 503, 327, 328, 270, - 517, 265, 689, 456, 218, -110, 87, 218, 270, -111, - 432, 511, 852, 450, 451, 659, 718, 87, 659, 499, - 511, 218, 847, 828, 825, 87, 265, 270, 996, 834, - 218, 270, 740, 519, 541, 87, 125, 835, 804, 659, - 934, 732, 721, 265, 805, 542, 660, 502, 502, 329, - 330, 417, 265, 724, 845, 526, 659, 106, -106, 270, - 807, -413, 270, 809, 246, 659, -108, 87, 771, -105, - 660, 954, 270, -106, 806, 296, 87, -76, 797, 722, - 517, 807, 470, 605, 511, 964, 965, 660, 605, 470, - 315, 893, 315, 523, 218, 532, 660, 844, 541, 71, - 206, 538, 87, -108, 659, 505, 771, 911, 737, 212, - 212, 739, 959, 960, 727, 212, 265, 551, 919, 452, - 452, 540, -110, 544, 906, -413, 493, 472, 218, 659, - 912, 914, 563, 564, 580, 660, -105, 517, -498, 786, - -413, 805, 430, -102, 583, 758, 692, 218, 599, 847, - 762, 771, 586, 798, 699, 560, 315, 327, 328, 595, - 660, 587, 774, 945, 711, 778, 590, 593, 1023, 779, - -106, 1026, 378, -413, 598, -413, 596, 473, 714, 125, - 610, 125, -413, 634, 432, 802, 870, 872, 874, -582, - 876, -98, 877, 502, 808, 468, 686, 810, 105, 280, - 105, 672, 280, 786, 786, 105, 105, 1056, 687, 329, - 330, 105, 105, 105, 493, 535, 105, 446, 1044, 690, - 280, 806, 682, 218, 87, 824, 827, 691, 575, 983, - 827, 751, 942, 841, 820, 815, 978, 827, 693, 552, - 715, 911, 734, 764, 726, 125, 589, 1066, 105, 731, - -108, -91, 749, -478, 270, 270, 246, 218, 761, 781, - 502, 917, 105, 791, 792, 801, 989, 206, -478, 840, - -105, -100, 991, 611, 276, 793, 613, 276, 803, 611, - 817, 541, 613, 908, 818, 611, 611, 833, 613, 613, - 825, -97, 206, 801, 247, 276, 839, 248, 249, -291, - 842, -582, 843, -478, 768, 585, 849, -582, 768, -108, - -478, 850, 853, 105, -291, 105, 859, 863, 865, 573, + 222, 504, 400, 300, 246, 252, 712, 588, 107, 537, + 270, 270, 71, 539, 71, 314, 265, 265, 775, 206, + 265, 617, 307, 311, 271, 271, 206, 449, 271, 861, + 87, 721, 888, 772, 315, 721, 654, 324, 826, 741, + 206, 556, 391, 391, 218, 393, 724, 440, 652, 836, + -107, 256, 661, -104, 525, 664, 334, 336, 338, 340, + 315, 681, 306, 310, 276, 281, 550, 1025, 444, 392, + 206, 1001, 125, 125, -109, 573, 682, 724, 696, 280, + 125, -111, 501, -488, 505, 267, 273, 706, 437, 274, + 856, 652, 393, 661, 3, 218, 782, 87, 700, 811, + 812, 283, 682, 790, 287, 346, -487, -485, 474, 581, + -110, -301, 773, 437, 293, 776, 434, 578, 533, 483, + -489, -106, 771, 125, -108, -105, -301, 366, 378, 378, + 600, 430, 910, 269, 269, 396, -112, 269, 916, 574, + -488, 682, -490, 783, 1025, 825, 468, 491, 443, 125, + 394, 744, 367, 558, 276, 281, 558, 607, 558, 296, + 558, -301, 558, -487, 1001, -587, 682, -99, -301, -586, + -96, 305, 443, 432, 857, 378, 378, -489, 401, 522, + -484, 391, 391, 611, 393, 441, 247, -492, 87, 248, + 249, -101, 772, -587, 904, 683, 667, 670, -103, -490, + 438, 218, 218, 528, 772, 547, 275, 466, 467, -104, + 397, 535, 535, 478, 479, 888, 535, 250, 888, 251, + 275, 324, 1007, 611, 611, 438, 296, -102, 542, -77, + 594, 270, 597, 541, 453, 270, 465, 502, -98, 502, + 504, -100, -97, 511, -492, 247, 300, 921, 248, 249, + -91, -491, 247, 218, 206, 248, 249, 218, 721, 721, + 905, 218, 218, -493, -479, 87, 752, 378, 378, 476, + 724, 773, 87, 87, -484, 265, 250, 523, 251, 265, + 87, 771, 442, 773, 471, 251, 896, 271, 488, -483, + 995, 315, 542, 771, 775, 888, 747, 755, -111, 356, + 357, 358, 359, -104, 524, 891, -110, 822, -491, 603, + 475, -111, 530, 460, 613, 360, 341, 342, 834, 553, + -493, -479, 728, 729, -96, 87, 218, 218, 218, 218, + 87, 218, 218, 527, 721, 353, 354, 480, 566, 567, + 568, 569, 484, 585, 835, 585, -483, -106, 512, 300, + 87, 565, 486, 442, 613, 613, 765, 71, 609, 491, + 938, 523, 570, 755, 679, 356, 357, 358, 359, 934, + 461, 87, 378, -108, 218, 558, 87, 315, -341, 618, + 125, 360, -111, 450, 451, 447, 805, 270, 860, 448, + -110, 954, 509, -341, 520, 771, 269, 867, -105, 511, + 503, 901, 296, -103, 499, 771, 364, 365, 366, 218, + 806, -102, 270, 816, 652, -106, 661, 519, 788, 618, + 618, 417, 807, 378, 511, 809, 828, 825, -341, 270, + 517, 265, 689, 367, 218, -341, 87, 218, 270, -108, + 526, 511, 852, 807, -76, 659, 718, 87, 659, 417, + 511, 218, 847, 538, 1006, 87, 265, 270, 996, 540, + 218, 270, 740, 532, 541, 87, 125, 563, 804, 659, + 544, 732, 721, 265, 911, 542, 660, 502, 502, 426, + 427, 428, 265, 724, 845, 564, 659, 106, 1023, 270, + 580, 1026, 270, -414, 246, 659, 42, 87, 771, 43, + 660, -499, 270, -105, 583, 296, 87, 586, 797, 722, + 517, 595, 470, 605, 511, 964, 965, 660, 605, 470, + 315, 893, 315, 805, 218, 587, 660, 844, 541, 71, + 206, 590, 87, 247, 659, 505, 248, 249, 737, 212, + 212, 739, 593, 59, 727, 212, 265, 429, 919, 959, + 960, 598, -106, 596, 906, 599, 493, -414, 218, 659, + 912, 914, 430, 806, 250, 660, 251, 517, 1067, 786, + 610, 771, -414, -98, 634, 611, 692, 218, -106, 847, + 762, 611, 771, 798, 699, 672, 315, 611, 611, 551, + 660, 686, -108, 945, 711, 452, 452, 431, 687, 779, + 690, 691, 378, 693, 432, -414, 552, -414, 714, 125, + 715, 125, -91, -100, -414, 802, 870, 872, 874, -583, + 876, 726, 877, 502, 808, 468, 731, 810, 105, 280, + 105, 734, 280, 786, 786, 105, 105, 1057, 749, 911, + 579, 105, 105, 105, 493, 535, 105, 446, 1045, 761, + 280, 764, 682, 218, 87, 824, 827, 781, 575, 983, + 827, 751, 942, 841, 820, 815, 978, 827, -105, 792, + -298, 791, 793, -298, -298, 125, 589, -106, 105, 803, + -106, -106, 817, -479, 270, 270, 246, 218, 818, -97, + 502, 917, 105, 611, 825, 801, 989, 206, -479, 840, + -298, -298, 991, -298, 276, 833, 613, 276, -106, 839, + -106, 541, 613, 908, 326, 327, 328, 489, 613, 613, + 248, 249, 206, 801, 247, 276, 843, 248, 249, 455, + 842, -583, 863, -479, 865, 585, 849, -583, 247, -108, + -479, 248, 249, 105, 430, 105, 850, 853, 573, 859, 517, 499, 270, 212, 212, 250, 869, 251, 871, 873, - 270, 875, 87, 878, 511, 924, 353, 354, 925, 315, - 87, 618, 481, 929, 218, 702, 702, 618, 218, -291, - 933, 786, 887, 618, 618, 935, -291, 430, 943, 87, - 87, 927, 973, 948, 931, 963, 265, 1008, 1010, 1011, - 1012, 966, 897, 87, 605, 969, 218, 559, 971, 659, - 327, 328, 849, 513, 516, 87, 87, 502, 932, 975, - 980, 611, 482, 87, 613, 493, 529, 981, 992, 432, - 531, 993, 493, 1002, 87, 87, 105, -301, -108, 1003, - 660, -108, -108, 1004, 247, 521, 1013, 248, 249, 105, - 105, 1009, -301, 585, 585, 767, 1014, 1015, 125, 947, - 430, 962, 329, 330, 1028, 1029, 968, 1030, 953, -108, - 955, -108, 1061, 545, 956, 250, 1033, 251, 212, 212, - 212, 212, 1037, 571, 572, 1064, 1040, -301, 430, 618, - 1045, -586, 733, 1047, -301, 473, 904, -585, 270, 87, - 87, 105, 432, 986, 1049, 105, 1051, 87, 827, 105, - 105, -586, 1069, 105, 669, 671, 1071, 227, 130, 920, - 105, 105, 755, 546, 356, 357, 358, 359, 105, 1060, - 432, 880, 928, 1062, 892, 918, 1059, 326, 327, 328, - 360, 490, -583, 208, 936, 937, 1038, 1005, 669, 671, - 125, 766, 940, 1022, 247, 125, 0, 248, 249, -589, - 1017, 0, 905, 0, 946, 0, 0, 87, 1024, 87, - 1027, 814, 87, 105, 105, 105, 105, 105, 105, 105, - 105, 0, 0, 0, -485, 0, 585, 251, 270, 684, - 329, 330, 125, 0, 0, 0, 735, 0, 105, -485, - 511, -290, 689, 827, 0, 1039, -482, 0, 1041, 0, - 218, 470, 0, 860, 970, 972, -290, 0, 0, 105, - 0, -482, 105, -589, 105, 0, 0, 105, 982, 0, - 0, 0, 265, 725, -485, 0, 990, 0, -589, 1063, - 730, -485, 0, 0, 1065, 659, 1067, -585, 0, 0, - 1068, -290, 736, 0, -583, 886, -482, 105, -290, -302, - -583, 0, 0, -482, 0, 0, 868, 105, 105, 0, - 1075, -589, 0, -589, -302, 0, 660, -585, 795, 1016, - -589, 0, 105, 0, 105, 105, 0, 0, 0, 0, - 1021, 0, 0, 430, 430, 105, 1034, 0, 1035, 105, - 0, 1036, 0, 105, 759, 760, 1031, 0, 105, -302, - 0, -585, 923, 105, 768, 0, -302, 892, 0, 0, - 892, 430, 892, 0, 0, 0, -585, 0, 796, 456, - -586, 337, 327, 328, 789, 432, 432, 702, 0, 755, - 0, 356, 357, 358, 359, 105, 1046, 1048, 1050, 0, - 1052, 1053, 0, 0, 105, 0, 1032, 360, 0, -585, - 0, -585, 0, 432, 0, -585, 0, 0, -585, 0, - 892, 0, 105, 0, 247, 217, 217, 248, 249, 0, - 105, 217, 266, 266, 329, 330, 266, 0, 0, 1070, - 1072, 1073, 1074, 0, -586, 0, 892, 0, 892, 1076, - 892, 0, 892, 0, 0, 212, 105, 251, 0, -586, - 0, 819, 0, 288, 290, 291, 292, 339, 327, 328, - 266, 308, 892, 470, 417, 105, 0, 0, 0, 470, - 1006, 0, 344, 345, 0, 1018, 0, 0, 886, 212, - 0, 886, -586, 886, -586, 552, 327, 328, -586, 0, - 0, -586, 424, 425, 426, 427, 428, 755, 0, 356, - 357, 358, 359, 0, 247, 851, 0, 248, 249, 0, - 329, 330, 907, 909, 0, 360, 0, 0, 913, 915, - 557, 327, 328, 217, 862, 561, 327, 328, 562, 327, - 328, 886, 750, 327, 328, 250, 0, 251, 329, 330, - 362, 105, 105, 0, 907, 909, 756, 913, 915, 0, - 777, 0, 356, 357, 358, 359, 0, 886, 0, 886, - 0, 886, 355, 886, 356, 357, 358, 359, 360, 0, - 0, 0, 0, 329, 330, 105, 414, 415, 329, 330, - 360, 329, 330, 886, 0, 329, 330, 0, 0, 417, - 0, 0, -298, 362, 361, -298, -298, 0, 212, 0, - 364, 365, 366, 0, 0, 362, 348, 349, 350, 351, - 352, 363, 364, 365, 366, 941, 423, 424, 425, 426, - 427, 428, -298, -298, 979, -298, 0, 367, 0, 217, - 217, 950, -612, 74, 0, 74, 121, 121, 0, 367, - 0, 0, 368, 0, 121, 0, 0, 979, 0, 247, - 105, 0, 248, 249, 0, 369, 0, 0, 105, 105, - 0, 0, 105, 0, 0, 105, 105, 495, 496, 497, - 344, 105, 105, 0, 0, 0, 499, 105, 105, 0, - 250, 266, 251, 74, 0, 266, 0, 121, 0, 217, + 270, 768, 87, 875, 511, 768, 878, 329, 330, 315, + 87, 618, 472, -584, 218, 702, 702, 618, 218, 456, + 924, 786, 925, 618, 618, 929, 432, 430, 933, 87, + 87, 927, 935, 943, 931, 948, 265, 1008, 1010, 1011, + 1012, 963, 897, 87, 605, 966, 218, 333, 969, 659, + 327, 328, 849, 513, 516, 87, 87, 502, 932, 551, + 971, 973, 473, 87, 613, 493, 529, 975, 980, 432, + 531, 981, 493, 992, 87, 87, 105, -483, -108, 993, + 660, -108, -108, 1002, 1003, 353, 354, 758, 1009, 105, + 105, 1013, -483, 585, 585, 767, 559, 1014, 125, 327, + 328, 962, 329, 330, 774, 1015, 968, 778, 1028, -108, + 998, -108, 356, 357, 358, 359, 1033, 1029, 212, 212, + 212, 212, 1030, 571, 572, -584, 1065, -483, 360, 618, + 1037, -584, 1039, 1041, -483, 883, 1046, 1048, 270, 87, + 87, 105, -590, 986, 1050, 105, 1052, 87, 827, 105, + 105, 329, 330, 105, 669, 671, 1062, 1070, -586, 920, + 105, 105, -587, 247, 1072, 733, 248, 249, 105, -586, + -587, 227, 928, 130, 1061, 880, 335, 247, 327, 328, + 248, 249, 1063, 918, 936, 937, 1038, -291, 669, 671, + 125, 1060, 940, 490, 250, 125, 251, 208, 766, 0, + 1017, 892, -291, 0, 946, 1022, -590, 87, 481, 87, + 251, 814, 87, 105, 105, 105, 105, 105, 105, 105, + 105, -590, 0, 430, 0, 0, 585, 0, 270, 684, + 329, 330, 125, -586, -587, 0, 735, -291, 105, 0, + 511, 0, 689, 827, -291, 0, 0, 0, -586, -587, + 218, 470, 0, 0, -590, 521, -590, 0, 482, 105, + -586, 0, 105, -590, 105, 432, 0, 105, 982, 0, + 430, 0, 265, 725, 0, 560, 990, 327, 328, 0, + 730, -586, -587, -586, -587, 659, 0, -586, -587, 0, + -586, -587, 736, 0, 887, 886, 0, 105, 0, 777, + 0, 356, 357, 358, 359, 473, 868, 105, 105, 0, + 0, 0, 432, 545, 0, 883, 660, 360, 883, 0, + 0, 883, 105, 883, 105, 105, 0, 0, 430, 329, + 330, 0, 0, 0, 0, 105, 1034, 0, 1035, 105, + -486, 1036, 362, 105, 759, 760, 0, 0, 105, 364, + 365, 366, 923, 105, 0, -486, 0, -290, 0, 0, + 970, 972, 0, 546, 0, 0, 0, 0, -302, 0, + 432, 883, -290, 0, 789, 0, 367, 702, 795, 0, + 953, 768, 955, -302, 892, 105, 956, 892, 0, 892, + -486, 1016, 0, 430, 105, 0, 0, -486, 883, 0, + 883, 0, 883, 0, 883, 0, 430, -290, 0, 0, + 0, 0, 105, 0, -290, 217, 217, 1031, -302, 0, + 105, 217, 266, 266, 883, -302, 266, 0, 796, 0, + 0, 0, 430, 0, 0, 432, 1021, 892, 0, 0, + 0, 456, 0, 0, 0, 212, 105, 0, 432, 0, + 0, 819, 0, 288, 290, 291, 292, 417, 1004, 1005, + 266, 308, 0, 470, 892, 105, 892, 1032, 892, 470, + 892, 0, 344, 345, 432, 1018, 0, 0, 886, 212, + 1024, 886, 1027, 886, 0, 424, 425, 426, 427, 428, + 892, 0, 1047, 1049, 1051, 0, 1053, 1054, 0, 0, + 337, 327, 328, 0, 0, 851, 348, 349, 350, 351, + 352, 0, 907, 909, 0, 0, 0, 1040, 913, 915, + 1042, 0, 0, 217, 862, 339, 327, 328, 552, 327, + 328, 886, 0, 0, 0, 0, 1071, 1073, 1074, 1075, + 0, 105, 105, 0, 907, 909, 1077, 913, 915, 557, + 327, 328, 1064, 329, 330, 0, 0, 1066, 886, 1068, + 886, 0, 886, 1069, 886, 0, 0, 0, 355, 0, + 356, 357, 358, 359, 0, 105, 0, 0, 329, 330, + 0, 329, 330, 1076, 886, 0, 360, 561, 327, 328, + 0, 755, 0, 356, 357, 358, 359, 0, 212, 0, + 361, 0, 329, 330, 0, 0, 0, 0, 0, 360, + 0, 362, 0, 0, 0, 941, 0, 363, 364, 365, + 366, 562, 327, 328, 979, 0, 750, 327, 328, 217, + 217, 950, 0, 74, 362, 74, 121, 121, -613, 0, + 329, 330, 0, 0, 121, 367, 0, 979, 368, 0, + 105, 247, 0, 0, 248, 249, 0, 0, 105, 105, + 0, 369, 105, 0, 0, 105, 105, 495, 496, 497, + 344, 105, 105, 0, 329, 330, 0, 105, 105, 329, + 330, 266, 944, 74, 251, 266, 0, 121, 0, 217, 217, 105, 0, 0, 105, 0, 355, 0, 356, 357, - 358, 359, 0, 105, 105, 247, 0, 0, 248, 249, + 358, 359, 0, 105, 105, 0, 0, 0, 0, 0, 0, 105, 0, 121, 360, 755, 0, 356, 357, 358, - 359, 0, 105, 105, 414, 415, 0, 0, 361, 0, - 0, 0, 0, 360, 0, 0, 944, 417, 251, 362, - 0, 0, 0, 0, 0, 363, 364, 365, 366, 0, - 74, 0, 0, 0, 217, 217, 217, 217, 362, 217, - 217, 0, 0, 0, 949, 424, 425, 426, 427, 428, - 0, 0, 0, 367, 0, 0, 368, 105, 998, 582, - 356, 357, 358, 359, 0, 0, 0, 105, 105, 369, - 592, 0, 0, 0, 0, 105, 360, 0, 0, 0, + 359, 0, 105, 105, 0, 414, 415, 0, 361, 0, + 0, 0, 0, 360, 0, 0, 0, 0, 417, 362, + 414, 415, 0, 0, 0, 363, 364, 365, 366, 0, + 74, 0, 0, 417, 217, 217, 217, 217, 362, 217, + 217, 0, 0, 0, 756, 423, 424, 425, 426, 427, + 428, 0, 0, 367, 0, 0, 368, 105, 0, 582, + 0, 424, 425, 426, 427, 428, 0, 105, 105, 369, + 592, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 604, 0, 0, 0, 0, 615, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 0, 635, 636, 637, 638, 639, 640, 641, - 642, 643, 644, 645, 646, 0, 0, 266, 0, 0, - 755, 74, 356, 357, 358, 359, 0, 668, 668, 0, - 0, 0, 0, 0, 0, 105, 0, 105, 360, 0, - 105, 0, 266, 0, 0, 217, 0, 0, 0, 0, + 642, 643, 644, 645, 646, 0, 247, 266, 0, 248, + 249, 74, 0, 0, 0, 0, 0, 668, 668, 0, + 0, 0, 0, 0, 0, 105, 0, 105, 0, 0, + 105, 0, 266, 499, 0, 217, 0, 250, 0, 251, 0, 355, 0, 356, 357, 358, 359, 668, 0, 266, - 0, 668, 668, 362, 0, 0, 0, 0, 266, 360, + 0, 668, 668, 0, 0, 0, 0, 0, 266, 360, 0, 0, 0, 0, 0, 0, 0, 713, 105, 0, 716, 0, 0, 0, 717, 0, 0, 720, 0, 723, 0, 308, 292, 0, 362, 414, 415, 0, 74, 0, 363, 364, 365, 366, 0, 74, 74, 0, 417, 668, - 0, 0, 0, 74, 0, 0, 0, 0, 0, 720, + 0, 0, 755, 74, 356, 357, 358, 359, 0, 720, 0, 0, 308, 0, 121, 0, 0, 0, 367, 0, - 0, 368, 266, 421, 422, 423, 424, 425, 426, 427, + 360, 368, 266, 421, 422, 423, 424, 425, 426, 427, 428, 0, 0, 0, 548, 0, 0, 0, 0, 753, - 754, 0, 0, 0, 0, 0, 0, 0, 74, 0, - 0, 0, 0, 74, 0, 0, 763, 0, 0, 0, + 754, 0, 0, 0, 0, 362, 0, 0, 74, 0, + 0, 949, 0, 74, 0, 0, 763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -612, 0, 74, 0, 780, 0, 355, 787, 356, - 357, 358, 359, 0, -612, -612, -612, -612, -612, -612, - 0, -612, 0, 0, 74, 360, 0, -612, -612, 74, - 121, 0, 74, 0, 0, 0, 0, 0, -612, -612, - 0, -612, -612, -612, -612, -612, 0, 0, 0, 0, + 0, -613, 0, 74, 0, 780, 0, 355, 787, 356, + 357, 358, 359, 0, -613, -613, -613, -613, -613, -613, + 0, -613, 0, 0, 74, 360, 0, -613, -613, 74, + 121, 0, 74, 0, 0, 0, 0, 0, -613, -613, + 0, -613, -613, -613, -613, -613, 0, 0, 0, 0, 362, 0, 0, 0, 0, 0, 363, 364, 365, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 74, 0, 0, 0, 0, 0, 0, 0, 217, 0, 0, 367, 0, 0, 368, 0, 74, - 0, -612, 0, 821, 0, 0, 763, 780, 1019, 0, - 74, 75, 0, 75, 122, 122, -612, 0, 74, 0, - 0, 0, 122, 0, 0, 217, -612, 0, 74, -612, - -612, 0, 0, 0, 0, 846, 0, 0, 0, 0, - 0, 0, 0, 0, 720, 308, 0, 0, 0, -612, - -612, 0, 0, 0, 0, 275, -612, -612, -612, -612, + 0, -613, 0, 821, 0, 0, 763, 780, 1019, 0, + 74, 75, 0, 75, 122, 122, -613, 0, 74, 0, + 0, 0, 122, 0, 0, 217, -613, 0, 74, -613, + -613, 0, 0, 0, 0, 846, 0, 0, 0, 0, + 0, 0, 0, 0, 720, 308, 0, 0, 0, -613, + -613, 0, 0, 0, 0, 275, -613, -613, -613, -613, 74, 75, 0, 0, 0, 122, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 121, 0, 0, 0, 0, @@ -2821,8 +2821,8 @@ static const yytype_int16 yytable[] = 0, 0, 102, 0, 0, 0, 0, 102, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 102, 0, 0, - 0, 84, 0, 0, -613, -613, -613, -613, 406, 407, - 0, 84, -613, -613, 0, 0, 0, 0, 102, 0, + 0, 84, 0, 0, -614, -614, -614, -614, 406, 407, + 0, 84, -614, -614, 0, 0, 0, 0, 102, 0, 414, 415, 0, 102, 0, 0, 102, 0, 0, 0, 0, 0, 0, 417, 0, 101, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, @@ -2878,7 +2878,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 102, 102, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -612, 4, 0, 5, + 0, 0, 0, 0, 0, 0, -613, 4, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, @@ -2890,10 +2890,10 @@ static const yytype_int16 yytable[] = 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, -292, - 64, -612, 0, 0, -612, -612, 0, 0, 0, 0, + 64, -613, 0, 0, -613, -613, 0, 0, 0, 0, 0, 0, -292, -292, -292, -292, -292, -292, 0, -292, 65, 66, 67, 0, 0, 0, -292, -292, -292, 0, - 0, 0, -612, 0, -612, 0, -292, -292, 0, -292, + 0, 0, -613, 0, -613, 0, -292, -292, 0, -292, -292, -292, -292, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2903,90 +2903,90 @@ static const yytype_int16 yytable[] = -292, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, -292, 0, -292, 0, 0, -292, -292, 0, 0, -292, -292, -292, -292, -292, -292, -292, -292, -292, - -292, -292, -292, 0, 0, -412, 0, 0, -292, -292, - -292, -292, 0, 0, -292, -292, -292, -292, -412, -412, - -412, -412, -412, -412, 0, -412, 0, 0, 0, 0, - 0, -412, -412, -412, 0, 0, 0, 0, 0, 0, - 0, 0, -412, -412, 0, -412, -412, -412, -412, -412, + -292, -292, -292, 0, 0, -413, 0, 0, -292, -292, + -292, -292, 0, 0, -292, -292, -292, -292, -413, -413, + -413, -413, -413, -413, 0, -413, 0, 0, 0, 0, + 0, -413, -413, -413, 0, 0, 0, 0, 0, 0, + 0, 0, -413, -413, 0, -413, -413, -413, -413, -413, 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, -412, -412, -412, - -412, -412, -412, -412, -412, -412, -412, -412, -412, 0, - 0, 0, 0, -412, -412, -412, 0, 0, -412, 0, - 0, 0, 0, 0, -412, 0, -412, 0, 0, 0, - -412, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -412, 0, 0, -412, -412, 0, 0, -412, 0, -412, - -412, -412, -412, -412, -412, -412, -412, -412, -412, 0, - 0, -478, 0, -412, -412, -412, -412, -412, 0, 275, - -412, -412, -412, -412, -478, -478, -478, -478, -478, -478, - 0, -478, 0, 0, 0, 0, 0, 0, -478, -478, - 0, 0, 0, 0, 0, 0, 0, 0, -478, -478, - 0, -478, -478, -478, -478, -478, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -413, -413, -413, + -413, -413, -413, -413, -413, -413, -413, -413, -413, 0, + 0, 0, 0, -413, -413, -413, 0, 0, -413, 0, + 0, 0, 0, 0, -413, 0, -413, 0, 0, 0, + -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -413, 0, 0, -413, -413, 0, 0, -413, 0, -413, + -413, -413, -413, -413, -413, -413, -413, -413, -413, 0, + 0, -479, 0, -413, -413, -413, -413, -413, 0, 275, + -413, -413, -413, -413, -479, -479, -479, -479, -479, -479, + 0, -479, 0, 0, 0, 0, 0, 0, -479, -479, + 0, 0, 0, 0, 0, 0, 0, 0, -479, -479, + 0, -479, -479, -479, -479, -479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -478, -478, -478, -478, -478, -478, -478, - -478, -478, -478, -478, -478, 0, 0, 0, 0, -478, - -478, -478, 0, -478, -478, 0, 0, 0, 0, 0, - -478, 0, -478, 0, 0, 0, -478, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -478, 0, 0, -478, - -478, 0, -478, -478, 0, -478, -478, -478, -478, -478, - -478, -478, -478, -478, -478, 0, 0, -612, 0, 0, - -478, -478, -478, -478, 0, 0, -478, -478, -478, -478, - -612, -612, -612, -612, -612, -612, 0, -612, 0, 0, - 0, 0, 0, -612, -612, -612, 0, 0, 0, 0, - 0, 0, 0, 0, -612, -612, 0, -612, -612, -612, - -612, -612, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, 0, 0, 0, 0, -479, + -479, -479, 0, -479, -479, 0, 0, 0, 0, 0, + -479, 0, -479, 0, 0, 0, -479, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -479, 0, 0, -479, + -479, 0, -479, -479, 0, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, 0, 0, -613, 0, 0, + -479, -479, -479, -479, 0, 0, -479, -479, -479, -479, + -613, -613, -613, -613, -613, -613, 0, -613, 0, 0, + 0, 0, 0, -613, -613, -613, 0, 0, 0, 0, + 0, 0, 0, 0, -613, -613, 0, -613, -613, -613, + -613, -613, 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, -612, - -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, - -612, 0, 0, 0, 0, -612, -612, -612, 0, 0, - -612, 0, 0, 0, 0, 0, -612, 0, -612, 0, - 0, 0, -612, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -612, 0, 0, -612, -612, 0, 0, -612, - 0, -612, -612, -612, -612, -612, -612, -612, -612, -612, - -612, 0, 0, -612, 0, -612, -612, -612, -612, -612, - 0, 275, -612, -612, -612, -612, -612, -612, -612, -612, - -612, -612, 0, -612, 0, 0, 0, 0, 0, 0, - -612, -612, 0, 0, 0, 0, 0, 0, 0, 0, - -612, -612, 0, -612, -612, -612, -612, -612, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -613, + -613, -613, -613, -613, -613, -613, -613, -613, -613, -613, + -613, 0, 0, 0, 0, -613, -613, -613, 0, 0, + -613, 0, 0, 0, 0, 0, -613, 0, -613, 0, + 0, 0, -613, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -613, 0, 0, -613, -613, 0, 0, -613, + 0, -613, -613, -613, -613, -613, -613, -613, -613, -613, + -613, 0, 0, -613, 0, -613, -613, -613, -613, -613, + 0, 275, -613, -613, -613, -613, -613, -613, -613, -613, + -613, -613, 0, -613, 0, 0, 0, 0, 0, 0, + -613, -613, 0, 0, 0, 0, 0, 0, 0, 0, + -613, -613, 0, -613, -613, -613, -613, -613, 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, -612, -612, -612, -612, -612, - -612, -612, -612, -612, -612, -612, -612, 0, 0, 0, - 0, -612, -612, -612, 0, 0, -612, 0, 0, 0, - 0, 0, -612, 0, -612, 0, 0, 0, -612, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -612, 0, - 0, -612, -612, 0, 0, -612, 0, -612, -612, -612, - -612, -612, -612, -612, -612, -612, -612, 0, 0, -589, - 0, 0, -612, -612, -612, -612, 0, 275, -612, -612, - -612, -612, -589, -589, -589, 0, -589, -589, 0, -589, - 0, 0, 0, 0, 0, -589, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -589, -589, 0, -589, - -589, -589, -589, -589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -613, -613, -613, -613, -613, + -613, -613, -613, -613, -613, -613, -613, 0, 0, 0, + 0, -613, -613, -613, 0, 0, -613, 0, 0, 0, + 0, 0, -613, 0, -613, 0, 0, 0, -613, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -613, 0, + 0, -613, -613, 0, 0, -613, 0, -613, -613, -613, + -613, -613, -613, -613, -613, -613, -613, 0, 0, -590, + 0, 0, -613, -613, -613, -613, 0, 275, -613, -613, + -613, -613, -590, -590, -590, 0, -590, -590, 0, -590, + 0, 0, 0, 0, 0, -590, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -590, -590, 0, -590, + -590, -590, -590, -590, 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, -589, -589, -589, -589, -589, -589, -589, -589, -589, - -589, -589, -589, 0, 0, 0, 0, -589, -589, -589, - 0, 799, -589, 0, 0, 0, 0, 0, 0, 0, - -589, 0, 0, 0, -589, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -589, 0, 0, -589, -589, 0, - -107, -589, 0, -589, -589, -589, -589, -589, -589, -589, - -589, -589, -589, 0, 0, -589, 0, -589, -589, -589, - 0, -99, 0, 0, -589, -589, -589, -589, -589, -589, - -589, 0, -589, -589, 0, -589, 0, 0, 0, 0, - 0, -589, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -589, -589, 0, -589, -589, -589, -589, -589, + 0, -590, -590, -590, -590, -590, -590, -590, -590, -590, + -590, -590, -590, 0, 0, 0, 0, -590, -590, -590, + 0, 799, -590, 0, 0, 0, 0, 0, 0, 0, + -590, 0, 0, 0, -590, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -590, 0, 0, -590, -590, 0, + -107, -590, 0, -590, -590, -590, -590, -590, -590, -590, + -590, -590, -590, 0, 0, -590, 0, -590, -590, -590, + 0, -99, 0, 0, -590, -590, -590, -590, -590, -590, + -590, 0, -590, -590, 0, -590, 0, 0, 0, 0, + 0, -590, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -590, -590, 0, -590, -590, -590, -590, -590, 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, -589, -589, -589, - -589, -589, -589, -589, -589, -589, -589, -589, -589, 0, - 0, 0, 0, -589, -589, -589, 0, 799, -589, 0, - 0, 0, 0, 0, 0, 0, -589, 0, 0, 0, - -589, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -589, 0, 0, -589, -589, 0, -107, -589, 0, -589, - -589, -589, -589, -589, -589, -589, -589, -589, -589, 0, - 0, -301, 0, -589, -589, -589, 0, -589, 0, 0, - -589, -589, -589, -589, -301, -301, -301, 0, -301, -301, + 0, 0, 0, 0, 0, 0, 0, -590, -590, -590, + -590, -590, -590, -590, -590, -590, -590, -590, -590, 0, + 0, 0, 0, -590, -590, -590, 0, 799, -590, 0, + 0, 0, 0, 0, 0, 0, -590, 0, 0, 0, + -590, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -590, 0, 0, -590, -590, 0, -107, -590, 0, -590, + -590, -590, -590, -590, -590, -590, -590, -590, -590, 0, + 0, -301, 0, -590, -590, -590, 0, -590, 0, 0, + -590, -590, -590, -590, -301, -301, -301, 0, -301, -301, 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -301, -301, 0, -301, -301, -301, -301, -301, 0, 0, 0, 0, @@ -3014,8 +3014,8 @@ static const yytype_int16 yytable[] = 0, -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, 0, 0, 0, 0, 0, -301, -301, 0, -301, 0, 0, -301, -301, -301, -301, 294, 0, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, -612, -612, - -612, 0, 0, -612, 15, 0, 16, 17, 18, 19, + 7, 8, 9, 10, 11, 12, 13, 14, -613, -613, + -613, 0, 0, -613, 15, 0, 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, 0, 30, 31, 32, 33, 34, 35, 36, 37, @@ -3025,11 +3025,11 @@ static const yytype_int16 yytable[] = 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - -612, 0, 0, -612, -612, 0, 0, 0, 0, 0, + -613, 0, 0, -613, -613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -612, 294, -612, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, -612, 0, -612, -612, + 0, -613, 294, -613, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 0, 0, -613, 0, -613, -613, 15, 0, 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, 0, 30, 31, @@ -3039,12 +3039,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, -612, 0, 0, -612, - -612, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 62, 63, 0, 64, -613, 0, 0, -613, + -613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -612, 294, -612, + 0, 0, 0, 0, 0, 0, 0, -613, 294, -613, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 0, 0, -612, 0, 0, -612, 15, -612, 16, 17, + 0, 0, -613, 0, 0, -613, 15, -613, 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, 0, 30, 31, 32, 33, 34, 35, @@ -3054,12 +3054,12 @@ static const yytype_int16 yytable[] = 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, -612, 0, 0, -612, -612, 0, 0, 0, + 0, 64, -613, 0, 0, -613, -613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -612, 294, -612, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 0, 0, -612, 0, - 0, -612, 15, 0, 16, 17, 18, 19, 0, 0, + 0, 0, 0, -613, 294, -613, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 0, 0, -613, 0, + 0, -613, 15, 0, 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, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3068,11 +3068,11 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, -612, 0, - 0, -612, -612, 4, 0, 5, 6, 7, 8, 9, + 59, 60, 0, 61, 62, 63, 0, 64, -613, 0, + 0, -613, -613, 4, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, - 0, 15, 0, 16, 17, 18, 19, 0, 0, -612, - 0, -612, 20, 21, 22, 23, 24, 25, 26, 0, + 0, 15, 0, 16, 17, 18, 19, 0, 0, -613, + 0, -613, 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, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, @@ -3080,12 +3080,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, -612, 0, 0, - -612, -612, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 61, 62, 63, 0, 64, -613, 0, 0, + -613, -613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 0, - 0, -612, 0, 0, 0, 0, 0, 0, -612, 294, - -612, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 0, -612, -612, 0, 0, 0, 15, 0, 16, + 0, -613, 0, 0, 0, 0, 0, 0, -613, 294, + -613, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 0, -613, -613, 0, 0, 0, 15, 0, 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, 0, 30, 31, 32, 33, 34, @@ -3095,10 +3095,10 @@ static const yytype_int16 yytable[] = 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, - 63, 0, 64, -612, 0, 0, -612, -612, 294, 0, + 63, 0, 64, -613, 0, 0, -613, -613, 294, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, 0, 16, 17, - 18, 19, 0, 0, -612, 0, -612, 20, 21, 22, + 18, 19, 0, 0, -613, 0, -613, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, @@ -3107,10 +3107,10 @@ static const yytype_int16 yytable[] = 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 295, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, -612, 0, 0, -612, -612, 294, 0, 5, + 0, 64, -613, 0, 0, -613, -613, 294, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, 0, 16, 17, 18, - 19, 0, -612, -612, 0, -612, 20, 21, 22, 23, + 19, 0, -613, -613, 0, -613, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, @@ -3119,10 +3119,10 @@ static const yytype_int16 yytable[] = 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, -612, 0, 0, -612, -612, 294, 0, 5, 6, + 64, -613, 0, 0, -613, -613, 294, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, 0, 16, 17, 18, 19, - 0, -612, -612, 0, -612, 20, 21, 22, 23, 24, + 0, -613, -613, 0, -613, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, @@ -3131,11 +3131,11 @@ static const yytype_int16 yytable[] = 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - -612, 0, 0, -612, -612, 0, 0, 0, 0, 0, + -613, 0, 0, -613, -613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, - 66, 67, 0, 0, -612, 0, 0, 0, 0, 0, - 0, -612, 294, -612, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, -612, 0, 0, 0, + 66, 67, 0, 0, -613, 0, 0, 0, 0, 0, + 0, -613, 294, -613, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 0, 0, -613, 0, 0, 0, 15, 0, 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, 0, 30, 31, @@ -3145,10 +3145,10 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, -612, 0, 0, -612, - -612, 0, 0, 5, 6, 7, 8, 9, 10, 11, + 0, 61, 62, 63, 0, 64, -613, 0, 0, -613, + -613, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, - 0, 16, 17, 18, 19, 0, 0, -612, 0, -612, + 0, 16, 17, 18, 19, 0, 0, -613, 0, -613, 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, 0, 40, 41, @@ -3222,83 +3222,83 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, 0, - 0, 0, 0, 0, 0, 203, 204, -582, -582, -582, - -582, -582, -582, -582, -582, -582, 0, 0, 0, 0, - 0, 0, 0, -582, 0, -582, -582, -582, -582, 0, - -582, 0, 0, 0, -582, -582, -582, -582, -582, -582, - -582, 0, 0, -582, 0, 0, 0, 0, 0, 0, - 0, 0, -582, -582, -582, -582, -582, -582, -582, -582, - -582, 0, -582, -582, -582, 0, 0, -582, 0, 0, - -582, -582, 0, -582, -582, -582, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -582, -582, - 0, 0, 0, 0, 0, -582, 0, 0, -582, -582, - 0, -582, -582, 0, -582, 0, -582, -582, -582, 0, - -582, -582, -582, 0, -582, -582, -582, 0, -582, 0, + 0, 0, 0, 0, 0, 203, 204, -583, -583, -583, + -583, -583, -583, -583, -583, -583, 0, 0, 0, 0, + 0, 0, 0, -583, 0, -583, -583, -583, -583, 0, + -583, 0, 0, 0, -583, -583, -583, -583, -583, -583, + -583, 0, 0, -583, 0, 0, 0, 0, 0, 0, + 0, 0, -583, -583, -583, -583, -583, -583, -583, -583, + -583, 0, -583, -583, -583, 0, 0, -583, 0, 0, + -583, -583, 0, -583, -583, -583, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -583, -583, + 0, 0, 0, 0, 0, -583, 0, 0, -583, -583, + 0, -583, -583, 0, -583, 0, -583, -583, -583, 0, + -583, -583, -583, 0, -583, -583, -583, 0, -583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -582, -582, - -582, 0, -582, 0, 0, 0, 0, 0, -582, -583, - -583, -583, -583, -583, -583, -583, -583, -583, 0, 0, - 0, 0, 0, 0, 0, -583, 0, -583, -583, -583, - -583, 0, -583, 0, 0, 0, -583, -583, -583, -583, - -583, -583, -583, 0, 0, -583, 0, 0, 0, 0, - 0, 0, 0, 0, -583, -583, -583, -583, -583, -583, - -583, -583, -583, 0, -583, -583, -583, 0, 0, -583, - 0, 0, -583, -583, 0, -583, -583, -583, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -583, -583, + -583, 0, -583, 0, 0, 0, 0, 0, -583, -584, + -584, -584, -584, -584, -584, -584, -584, -584, 0, 0, + 0, 0, 0, 0, 0, -584, 0, -584, -584, -584, + -584, 0, -584, 0, 0, 0, -584, -584, -584, -584, + -584, -584, -584, 0, 0, -584, 0, 0, 0, 0, + 0, 0, 0, 0, -584, -584, -584, -584, -584, -584, + -584, -584, -584, 0, -584, -584, -584, 0, 0, -584, + 0, 0, -584, -584, 0, -584, -584, -584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -583, -583, 0, 0, 0, 0, 0, -583, 0, 0, - -583, -583, 0, -583, -583, 0, -583, 0, -583, -583, - -583, 0, -583, -583, -583, 0, -583, -583, -583, 0, - -583, 0, 0, 0, 0, 0, 0, -585, -585, -585, - -585, -585, -585, -585, -585, -585, 0, 0, 0, 0, - -583, -583, -583, -585, -583, -585, -585, -585, -585, 0, - -583, 0, 0, 0, -585, -585, -585, -585, -585, -585, - -585, 0, 0, -585, 0, 0, 0, 0, 0, 0, - 0, 0, -585, -585, -585, -585, -585, -585, -585, -585, - -585, 0, -585, -585, -585, 0, 0, -585, 0, 0, - -585, -585, 0, -585, -585, -585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -585, -585, - 0, 0, 0, 0, 0, -585, 831, 0, -585, -585, - 0, -585, -585, 0, -585, 0, -585, -585, -585, 0, - -585, -585, -585, 0, -585, -585, -585, 0, -585, 0, - 0, 0, 0, 0, 0, -107, -586, -586, -586, -586, - -586, -586, -586, -586, -586, 0, 0, 0, -585, -585, - -585, 0, -586, 0, -586, -586, -586, -586, -585, 0, - 0, 0, 0, -586, -586, -586, -586, -586, -586, -586, - 0, 0, -586, 0, 0, 0, 0, 0, 0, 0, - 0, -586, -586, -586, -586, -586, -586, -586, -586, -586, - 0, -586, -586, -586, 0, 0, -586, 0, 0, -586, - -586, 0, -586, -586, -586, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -586, -586, 0, - 0, 0, 0, 0, -586, 832, 0, -586, -586, 0, - -586, -586, 0, -586, 0, -586, -586, -586, 0, -586, - -586, -586, 0, -586, -586, -586, 0, -586, 0, 0, - 0, 0, 0, 0, -109, -587, -587, -587, -587, -587, - -587, -587, -587, -587, 0, 0, 0, -586, -586, -586, - 0, -587, 0, -587, -587, -587, -587, -586, 0, 0, - 0, 0, -587, -587, -587, -587, -587, -587, -587, 0, - 0, -587, 0, 0, 0, 0, 0, 0, 0, 0, - -587, -587, -587, -587, -587, -587, -587, -587, -587, 0, - -587, -587, -587, 0, 0, -587, 0, 0, -587, -587, - 0, -587, -587, -587, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -587, -587, 0, 0, - 0, 0, 0, -587, 0, 0, -587, -587, 0, -587, - -587, 0, -587, 0, -587, -587, -587, 0, -587, -587, - -587, 0, -587, -587, -587, 0, -587, 0, 0, 0, - 0, 0, 0, -588, -588, -588, -588, -588, -588, -588, - -588, -588, 0, 0, 0, 0, -587, -587, -587, -588, - 0, -588, -588, -588, -588, 0, -587, 0, 0, 0, - -588, -588, -588, -588, -588, -588, -588, 0, 0, -588, - 0, 0, 0, 0, 0, 0, 0, 0, -588, -588, - -588, -588, -588, -588, -588, -588, -588, 0, -588, -588, - -588, 0, 0, -588, 0, 0, -588, -588, 0, -588, - -588, -588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -588, -588, 0, 0, 0, 0, - 0, -588, 0, 0, -588, -588, 0, -588, -588, 0, - -588, 0, -588, -588, -588, 0, -588, -588, -588, 0, - -588, -588, -588, 0, -588, 0, 0, 0, 0, 0, + -584, -584, 0, 0, 0, 0, 0, -584, 0, 0, + -584, -584, 0, -584, -584, 0, -584, 0, -584, -584, + -584, 0, -584, -584, -584, 0, -584, -584, -584, 0, + -584, 0, 0, 0, 0, 0, 0, -586, -586, -586, + -586, -586, -586, -586, -586, -586, 0, 0, 0, 0, + -584, -584, -584, -586, -584, -586, -586, -586, -586, 0, + -584, 0, 0, 0, -586, -586, -586, -586, -586, -586, + -586, 0, 0, -586, 0, 0, 0, 0, 0, 0, + 0, 0, -586, -586, -586, -586, -586, -586, -586, -586, + -586, 0, -586, -586, -586, 0, 0, -586, 0, 0, + -586, -586, 0, -586, -586, -586, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -586, -586, + 0, 0, 0, 0, 0, -586, 831, 0, -586, -586, + 0, -586, -586, 0, -586, 0, -586, -586, -586, 0, + -586, -586, -586, 0, -586, -586, -586, 0, -586, 0, + 0, 0, 0, 0, 0, -107, -587, -587, -587, -587, + -587, -587, -587, -587, -587, 0, 0, 0, -586, -586, + -586, 0, -587, 0, -587, -587, -587, -587, -586, 0, + 0, 0, 0, -587, -587, -587, -587, -587, -587, -587, + 0, 0, -587, 0, 0, 0, 0, 0, 0, 0, + 0, -587, -587, -587, -587, -587, -587, -587, -587, -587, + 0, -587, -587, -587, 0, 0, -587, 0, 0, -587, + -587, 0, -587, -587, -587, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -587, -587, 0, + 0, 0, 0, 0, -587, 832, 0, -587, -587, 0, + -587, -587, 0, -587, 0, -587, -587, -587, 0, -587, + -587, -587, 0, -587, -587, -587, 0, -587, 0, 0, + 0, 0, 0, 0, -109, -588, -588, -588, -588, -588, + -588, -588, -588, -588, 0, 0, 0, -587, -587, -587, + 0, -588, 0, -588, -588, -588, -588, -587, 0, 0, + 0, 0, -588, -588, -588, -588, -588, -588, -588, 0, + 0, -588, 0, 0, 0, 0, 0, 0, 0, 0, + -588, -588, -588, -588, -588, -588, -588, -588, -588, 0, + -588, -588, -588, 0, 0, -588, 0, 0, -588, -588, + 0, -588, -588, -588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -588, -588, 0, 0, + 0, 0, 0, -588, 0, 0, -588, -588, 0, -588, + -588, 0, -588, 0, -588, -588, -588, 0, -588, -588, + -588, 0, -588, -588, -588, 0, -588, 0, 0, 0, + 0, 0, 0, -589, -589, -589, -589, -589, -589, -589, + -589, -589, 0, 0, 0, 0, -588, -588, -588, -589, + 0, -589, -589, -589, -589, 0, -588, 0, 0, 0, + -589, -589, -589, -589, -589, -589, -589, 0, 0, -589, + 0, 0, 0, 0, 0, 0, 0, 0, -589, -589, + -589, -589, -589, -589, -589, -589, -589, 0, -589, -589, + -589, 0, 0, -589, 0, 0, -589, -589, 0, -589, + -589, -589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -589, -589, 0, 0, 0, 0, + 0, -589, 0, 0, -589, -589, 0, -589, -589, 0, + -589, 0, -589, -589, -589, 0, -589, -589, -589, 0, + -589, -589, -589, 0, -589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -588, -588, -588, 0, 0, 0, - 0, 0, 0, 0, -588, 131, 132, 133, 134, 135, + 0, 0, 0, 0, -589, -589, -589, 0, 0, 0, + 0, 0, 0, 0, -589, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 0, 0, 0, 155, 156, 157, 233, 234, 235, 236, 162, @@ -3754,7 +3754,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 0, 201, 202, 1042, 648, 0, 0, 1043, 0, 203, + 0, 201, 202, 1043, 648, 0, 0, 1044, 0, 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, 185, @@ -3762,8 +3762,8 @@ static const yytype_int16 yytable[] = 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 0, 201, 202, 1054, - 648, 0, 0, 1055, 0, 203, 275, 0, 0, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 1055, + 648, 0, 0, 1056, 0, 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, @@ -3771,7 +3771,7 @@ static const yytype_int16 yytable[] = 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 201, 202, 1057, 657, 0, 0, 1058, + 199, 200, 0, 201, 202, 1058, 657, 0, 0, 1059, 0, 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, @@ -3843,7 +3843,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 0, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -613, -613, 0, 0, + 406, 407, 408, 409, 410, 411, -614, -614, 0, 0, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3856,181 +3856,181 @@ static const yytype_int16 yycheck[] = 2, 89, 16, 17, 27, 69, 20, 87, 88, 66, 2, 28, 4, 5, 6, 22, 7, 9, 10, 21, 14, 13, 222, 15, 16, 17, 284, 313, 20, 479, - 10, 271, 82, 52, 28, 15, 488, 377, 401, 306, - 54, 55, 2, 310, 4, 4, 16, 17, 56, 7, - 20, 593, 54, 55, 16, 17, 14, 118, 20, 75, - 52, 501, 26, 590, 56, 505, 431, 58, 688, 318, - 28, 330, 74, 75, 66, 756, 505, 91, 429, 699, - 944, 15, 433, 25, 295, 436, 60, 61, 62, 63, - 82, 456, 54, 55, 21, 22, 25, 75, 105, 25, - 58, 544, 5, 6, 57, 51, 457, 536, 473, 111, - 13, 25, 269, 90, 271, 16, 17, 482, 16, 20, - 369, 472, 79, 474, 29, 117, 26, 119, 25, 665, - 666, 969, 483, 783, 90, 69, 25, 25, 218, 372, - 25, 0, 90, 92, 122, 802, 90, 90, 305, 229, - 783, 808, 590, 56, 121, 101, 102, 103, 74, 75, - 393, 105, 90, 16, 17, 608, 90, 20, 121, 126, - 147, 522, 121, 1037, 138, 142, 16, 138, 105, 82, - 144, 546, 128, 331, 111, 112, 334, 398, 336, 52, - 338, 147, 340, 142, 27, 55, 547, 213, 214, 147, - 142, 54, 129, 147, 147, 121, 122, 1045, 113, 289, - 121, 213, 214, 142, 90, 144, 142, 115, 210, 147, - 118, 119, 749, 147, 90, 458, 441, 442, 142, 105, - 144, 223, 224, 297, 761, 315, 214, 92, 138, 105, - 144, 305, 306, 223, 224, 142, 310, 90, 146, 28, - 148, 242, 590, 142, 142, 593, 119, 142, 544, 142, - 386, 275, 388, 313, 140, 279, 121, 269, 949, 271, - 510, 147, 90, 275, 140, 115, 295, 813, 118, 119, - 90, 147, 115, 275, 242, 118, 119, 279, 728, 729, - 51, 283, 284, 90, 55, 287, 555, 213, 214, 548, - 729, 103, 294, 295, 147, 275, 146, 121, 148, 279, - 302, 749, 18, 146, 20, 148, 966, 279, 252, 969, - 940, 313, 608, 761, 687, 92, 128, 869, 115, 147, - 963, 118, 119, 966, 294, 101, 969, 147, 971, 396, - 92, 401, 302, 92, 401, 58, 59, 318, 791, 323, - 147, 144, 509, 510, 121, 347, 348, 349, 350, 351, - 352, 353, 354, 297, 804, 131, 132, 133, 348, 349, - 350, 351, 121, 375, 60, 377, 55, 63, 279, 398, - 372, 441, 442, 125, 441, 442, 1019, 347, 347, 121, - 840, 399, 352, 142, 455, 1045, 61, 92, 369, 64, - 65, 393, 318, 25, 396, 553, 398, 399, 92, 401, - 313, 749, 1045, 90, 1047, 55, 1049, 431, 1051, 37, - 38, 107, 275, 761, 287, 863, 279, 767, 105, 431, - 115, 796, 295, 118, 119, 873, 92, 121, 1071, 431, - 92, 142, 456, 676, 795, 783, 797, 20, 605, 441, - 442, 116, 117, 369, 456, 62, 57, 64, 65, 473, - 718, 431, 464, 140, 456, 121, 458, 459, 482, 121, - 147, 473, 739, 58, 59, 433, 499, 469, 436, 142, - 482, 473, 722, 17, 18, 477, 456, 501, 940, 92, - 482, 505, 542, 138, 544, 487, 399, 92, 655, 457, - 92, 518, 942, 473, 92, 791, 433, 509, 510, 116, - 117, 101, 482, 942, 714, 145, 474, 519, 121, 533, - 661, 26, 536, 664, 518, 483, 121, 519, 966, 121, - 457, 869, 546, 121, 92, 398, 528, 121, 618, 501, - 798, 682, 215, 396, 546, 885, 886, 474, 401, 222, - 542, 784, 544, 92, 546, 141, 483, 714, 608, 519, - 518, 139, 554, 121, 522, 722, 1004, 92, 528, 9, - 10, 533, 881, 882, 508, 15, 546, 548, 811, 121, - 122, 55, 121, 142, 799, 90, 259, 90, 580, 547, - 805, 806, 101, 101, 121, 522, 121, 855, 121, 601, - 105, 92, 105, 142, 142, 576, 469, 599, 121, 849, - 580, 1049, 51, 636, 477, 62, 608, 64, 65, 51, - 547, 142, 593, 856, 487, 596, 142, 142, 966, 599, - 121, 969, 548, 138, 51, 140, 142, 140, 491, 542, - 142, 544, 147, 51, 147, 652, 772, 773, 774, 26, - 776, 142, 778, 655, 661, 16, 15, 664, 2, 661, - 4, 99, 664, 665, 666, 9, 10, 1032, 13, 116, - 117, 15, 16, 17, 347, 739, 20, 117, 1018, 121, - 682, 92, 1033, 675, 676, 687, 688, 121, 361, 922, - 692, 554, 849, 710, 685, 675, 911, 699, 16, 63, - 15, 92, 139, 15, 145, 608, 379, 1045, 52, 145, - 121, 142, 142, 90, 728, 729, 710, 709, 142, 15, - 722, 809, 66, 142, 44, 652, 926, 685, 105, 709, - 121, 142, 932, 793, 661, 121, 793, 664, 141, 799, - 141, 791, 799, 800, 15, 805, 806, 141, 805, 806, - 18, 142, 710, 680, 115, 682, 141, 118, 119, 90, - 139, 138, 15, 140, 583, 767, 728, 144, 587, 16, - 147, 139, 141, 117, 105, 119, 139, 142, 44, 57, + 10, 271, 82, 52, 28, 15, 488, 377, 4, 306, + 54, 55, 2, 310, 4, 56, 16, 17, 593, 7, + 20, 401, 54, 55, 16, 17, 14, 118, 20, 756, + 52, 501, 783, 590, 56, 505, 431, 58, 688, 544, + 28, 330, 74, 75, 66, 75, 505, 91, 429, 699, + 25, 15, 433, 25, 295, 436, 60, 61, 62, 63, + 82, 456, 54, 55, 21, 22, 318, 969, 105, 75, + 58, 944, 5, 6, 25, 57, 457, 536, 473, 111, + 13, 25, 269, 90, 271, 16, 17, 482, 26, 20, + 29, 472, 122, 474, 0, 117, 79, 119, 27, 665, + 666, 144, 483, 608, 138, 69, 90, 92, 218, 372, + 25, 90, 590, 26, 55, 593, 90, 369, 305, 229, + 90, 25, 590, 56, 25, 25, 105, 103, 74, 75, + 393, 105, 802, 16, 17, 121, 121, 20, 808, 121, + 147, 522, 90, 126, 1046, 18, 16, 20, 105, 82, + 28, 546, 128, 331, 111, 112, 334, 398, 336, 52, + 338, 140, 340, 147, 1037, 144, 547, 142, 147, 144, + 142, 54, 129, 147, 113, 121, 122, 147, 121, 289, + 92, 213, 214, 401, 214, 92, 115, 90, 210, 118, + 119, 142, 749, 144, 57, 458, 441, 442, 142, 147, + 138, 223, 224, 297, 761, 315, 144, 213, 214, 121, + 142, 305, 306, 223, 224, 966, 310, 146, 969, 148, + 144, 242, 949, 441, 442, 138, 119, 142, 544, 121, + 386, 275, 388, 313, 125, 279, 55, 269, 142, 271, + 510, 142, 142, 275, 147, 115, 295, 813, 118, 119, + 142, 90, 115, 275, 242, 118, 119, 279, 728, 729, + 123, 283, 284, 90, 90, 287, 555, 213, 214, 92, + 729, 749, 294, 295, 92, 275, 146, 92, 148, 279, + 302, 749, 92, 761, 121, 148, 791, 279, 252, 90, + 940, 313, 608, 761, 869, 1046, 548, 51, 121, 53, + 54, 55, 56, 121, 294, 783, 121, 687, 147, 396, + 92, 121, 302, 90, 401, 69, 58, 59, 92, 323, + 147, 147, 509, 510, 142, 347, 348, 349, 350, 351, + 352, 353, 354, 297, 804, 37, 38, 55, 348, 349, + 350, 351, 25, 375, 92, 377, 147, 121, 279, 398, + 372, 347, 142, 92, 441, 442, 51, 347, 399, 20, + 840, 92, 352, 51, 455, 53, 54, 55, 56, 92, + 147, 393, 318, 121, 396, 553, 398, 399, 90, 401, + 313, 69, 121, 58, 59, 51, 92, 431, 142, 55, + 121, 869, 275, 105, 287, 863, 279, 767, 121, 431, + 57, 796, 295, 142, 142, 873, 101, 102, 103, 431, + 92, 142, 456, 676, 795, 121, 797, 138, 605, 441, + 442, 101, 661, 369, 456, 664, 17, 18, 140, 473, + 718, 431, 464, 128, 456, 147, 458, 459, 482, 121, + 145, 473, 739, 682, 121, 433, 499, 469, 436, 101, + 482, 473, 722, 139, 142, 477, 456, 501, 940, 55, + 482, 505, 542, 141, 544, 487, 399, 101, 655, 457, + 142, 518, 942, 473, 92, 791, 433, 509, 510, 131, + 132, 133, 482, 942, 714, 101, 474, 519, 966, 533, + 121, 969, 536, 26, 518, 483, 60, 519, 966, 63, + 457, 121, 546, 121, 142, 398, 528, 51, 618, 501, + 798, 51, 215, 396, 546, 885, 886, 474, 401, 222, + 542, 784, 544, 92, 546, 142, 483, 714, 608, 519, + 518, 142, 554, 115, 522, 722, 118, 119, 528, 9, + 10, 533, 142, 107, 508, 15, 546, 90, 811, 881, + 882, 51, 121, 142, 799, 121, 259, 90, 580, 547, + 805, 806, 105, 92, 146, 522, 148, 855, 1046, 601, + 142, 1039, 105, 142, 51, 793, 469, 599, 16, 849, + 580, 799, 1050, 636, 477, 99, 608, 805, 806, 318, + 547, 15, 121, 856, 487, 121, 122, 140, 13, 599, + 121, 121, 548, 16, 147, 138, 63, 140, 491, 542, + 15, 544, 142, 142, 147, 652, 772, 773, 774, 26, + 776, 145, 778, 655, 661, 16, 145, 664, 2, 661, + 4, 139, 664, 665, 666, 9, 10, 1032, 142, 92, + 369, 15, 16, 17, 347, 739, 20, 117, 1018, 142, + 682, 15, 1033, 675, 676, 687, 688, 15, 361, 922, + 692, 554, 849, 710, 685, 675, 911, 699, 121, 44, + 115, 142, 121, 118, 119, 608, 379, 115, 52, 141, + 118, 119, 141, 90, 728, 729, 710, 709, 15, 142, + 722, 809, 66, 911, 18, 652, 926, 685, 105, 709, + 145, 146, 932, 148, 661, 141, 793, 664, 146, 141, + 148, 791, 799, 800, 63, 64, 65, 115, 805, 806, + 118, 119, 710, 680, 115, 682, 15, 118, 119, 90, + 139, 138, 142, 140, 44, 767, 728, 144, 115, 16, + 147, 118, 119, 117, 105, 119, 139, 141, 57, 139, 1038, 142, 796, 223, 224, 146, 142, 148, 142, 142, - 804, 142, 784, 44, 796, 15, 37, 38, 93, 791, - 792, 793, 90, 14, 796, 478, 479, 799, 800, 140, - 15, 813, 783, 805, 806, 15, 147, 105, 145, 811, - 812, 823, 15, 142, 826, 142, 796, 953, 954, 955, + 804, 583, 784, 142, 796, 587, 44, 116, 117, 791, + 792, 793, 90, 26, 796, 478, 479, 799, 800, 140, + 15, 813, 93, 805, 806, 14, 147, 105, 15, 811, + 812, 823, 15, 145, 826, 142, 796, 953, 954, 955, 956, 142, 792, 825, 687, 142, 828, 61, 142, 797, - 64, 65, 804, 283, 284, 837, 838, 849, 828, 141, - 15, 911, 140, 845, 911, 528, 299, 139, 15, 147, - 303, 15, 535, 15, 856, 857, 210, 90, 115, 139, - 797, 118, 119, 142, 115, 90, 126, 118, 119, 223, - 224, 142, 105, 885, 886, 583, 126, 55, 791, 860, - 105, 883, 116, 117, 139, 15, 888, 55, 869, 146, - 871, 148, 15, 90, 875, 146, 986, 148, 348, 349, - 350, 351, 142, 353, 354, 1041, 142, 140, 105, 911, - 142, 144, 519, 142, 147, 140, 57, 144, 942, 921, - 922, 275, 147, 925, 142, 279, 142, 929, 940, 283, - 284, 144, 141, 287, 441, 442, 142, 13, 6, 812, - 294, 295, 51, 140, 53, 54, 55, 56, 302, 1035, - 147, 783, 825, 1037, 783, 810, 1034, 63, 64, 65, - 69, 254, 26, 7, 837, 838, 999, 948, 475, 476, - 883, 583, 845, 966, 115, 888, -1, 118, 119, 26, - 963, -1, 123, -1, 857, -1, -1, 989, 969, 991, - 971, 674, 994, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, -1, 90, -1, 1018, 148, 1032, 459, - 116, 117, 925, -1, -1, -1, 523, -1, 372, 105, - 1032, 90, 1034, 1035, -1, 1006, 90, -1, 1009, -1, - 1032, 714, -1, 142, 890, 891, 105, -1, -1, 393, - -1, 105, 396, 90, 398, -1, -1, 401, 921, -1, - -1, -1, 1032, 506, 140, -1, 929, -1, 105, 1040, - 513, 147, -1, -1, 1045, 1033, 1047, 26, -1, -1, - 1051, 140, 525, -1, 138, 783, 140, 431, 147, 90, - 144, -1, -1, 147, -1, -1, 769, 441, 442, -1, - 1071, 138, -1, 140, 105, -1, 1033, 144, 90, 90, - 147, -1, 456, -1, 458, 459, -1, -1, -1, -1, - 966, -1, -1, 105, 105, 469, 989, -1, 991, 473, - -1, 994, -1, 477, 577, 578, 90, -1, 482, 140, - -1, 90, 815, 487, 963, -1, 147, 966, -1, -1, - 969, 105, 971, -1, -1, -1, 105, -1, 140, 140, - 26, 63, 64, 65, 607, 147, 147, 840, -1, 51, - -1, 53, 54, 55, 56, 519, 1022, 1023, 1024, -1, - 1026, 1027, -1, -1, 528, -1, 140, 69, -1, 138, - -1, 140, -1, 147, -1, 144, -1, -1, 147, -1, - 1019, -1, 546, -1, 115, 9, 10, 118, 119, -1, - 554, 15, 16, 17, 116, 117, 20, -1, -1, 1065, - 1066, 1067, 1068, -1, 90, -1, 1045, -1, 1047, 1075, - 1049, -1, 1051, -1, -1, 675, 580, 148, -1, 105, - -1, 684, -1, 47, 48, 49, 50, 63, 64, 65, - 54, 55, 1071, 926, 101, 599, -1, -1, -1, 932, - 142, -1, 66, 67, -1, 963, -1, -1, 966, 709, - -1, 969, 138, 971, 140, 63, 64, 65, 144, -1, - -1, 147, 129, 130, 131, 132, 133, 51, -1, 53, - 54, 55, 56, -1, 115, 738, -1, 118, 119, -1, - 116, 117, 799, 800, -1, 69, -1, -1, 805, 806, - 63, 64, 65, 117, 757, 63, 64, 65, 63, 64, - 65, 1019, 63, 64, 65, 146, -1, 148, 116, 117, - 94, 675, 676, -1, 831, 832, 100, 834, 835, -1, - 51, -1, 53, 54, 55, 56, -1, 1045, -1, 1047, - -1, 1049, 51, 1051, 53, 54, 55, 56, 69, -1, - -1, -1, -1, 116, 117, 709, 88, 89, 116, 117, - 69, 116, 117, 1071, -1, 116, 117, -1, -1, 101, - -1, -1, 115, 94, 83, 118, 119, -1, 828, -1, - 101, 102, 103, -1, -1, 94, 40, 41, 42, 43, - 44, 100, 101, 102, 103, 848, 128, 129, 130, 131, - 132, 133, 145, 146, 911, 148, -1, 128, -1, 223, - 224, 864, 121, 2, -1, 4, 5, 6, -1, 128, - -1, -1, 131, -1, 13, -1, -1, 934, -1, 115, - 784, -1, 118, 119, -1, 144, -1, -1, 792, 793, - -1, -1, 796, -1, -1, 799, 800, 261, 262, 263, - 264, 805, 806, -1, -1, -1, 142, 811, 812, -1, - 146, 275, 148, 52, -1, 279, -1, 56, -1, 283, + 64, 65, 804, 283, 284, 837, 838, 849, 828, 548, + 142, 15, 140, 845, 911, 528, 299, 141, 15, 147, + 303, 139, 535, 15, 856, 857, 210, 90, 115, 15, + 797, 118, 119, 15, 139, 37, 38, 576, 142, 223, + 224, 126, 105, 885, 886, 583, 61, 126, 791, 64, + 65, 883, 116, 117, 593, 55, 888, 596, 139, 146, + 51, 148, 53, 54, 55, 56, 986, 15, 348, 349, + 350, 351, 55, 353, 354, 138, 1042, 140, 69, 911, + 142, 144, 142, 142, 147, 783, 142, 142, 942, 921, + 922, 275, 26, 925, 142, 279, 142, 929, 940, 283, + 284, 116, 117, 287, 441, 442, 15, 141, 144, 812, + 294, 295, 144, 115, 142, 519, 118, 119, 302, 26, + 26, 13, 825, 6, 1035, 783, 62, 115, 64, 65, + 118, 119, 1037, 810, 837, 838, 999, 90, 475, 476, + 883, 1034, 845, 254, 146, 888, 148, 7, 583, -1, + 963, 783, 105, -1, 857, 966, 90, 989, 90, 991, + 148, 674, 994, 347, 348, 349, 350, 351, 352, 353, + 354, 105, -1, 105, -1, -1, 1018, -1, 1032, 459, + 116, 117, 925, 90, 90, -1, 523, 140, 372, -1, + 1032, -1, 1034, 1035, 147, -1, -1, -1, 105, 105, + 1032, 714, -1, -1, 138, 90, 140, -1, 140, 393, + 144, -1, 396, 147, 398, 147, -1, 401, 921, -1, + 105, -1, 1032, 506, -1, 62, 929, 64, 65, -1, + 513, 138, 138, 140, 140, 1033, -1, 144, 144, -1, + 147, 147, 525, -1, 783, 783, -1, 431, -1, 51, + -1, 53, 54, 55, 56, 140, 769, 441, 442, -1, + -1, -1, 147, 90, -1, 963, 1033, 69, 966, -1, + -1, 969, 456, 971, 458, 459, -1, -1, 105, 116, + 117, -1, -1, -1, -1, 469, 989, -1, 991, 473, + 90, 994, 94, 477, 577, 578, -1, -1, 482, 101, + 102, 103, 815, 487, -1, 105, -1, 90, -1, -1, + 890, 891, -1, 140, -1, -1, -1, -1, 90, -1, + 147, 1019, 105, -1, 607, -1, 128, 840, 90, -1, + 869, 963, 871, 105, 966, 519, 875, 969, -1, 971, + 140, 90, -1, 105, 528, -1, -1, 147, 1046, -1, + 1048, -1, 1050, -1, 1052, -1, 105, 140, -1, -1, + -1, -1, 546, -1, 147, 9, 10, 90, 140, -1, + 554, 15, 16, 17, 1072, 147, 20, -1, 140, -1, + -1, -1, 105, -1, -1, 147, 966, 1019, -1, -1, + -1, 140, -1, -1, -1, 675, 580, -1, 147, -1, + -1, 684, -1, 47, 48, 49, 50, 101, 947, 948, + 54, 55, -1, 926, 1046, 599, 1048, 140, 1050, 932, + 1052, -1, 66, 67, 147, 963, -1, -1, 966, 709, + 969, 969, 971, 971, -1, 129, 130, 131, 132, 133, + 1072, -1, 1022, 1023, 1024, -1, 1026, 1027, -1, -1, + 63, 64, 65, -1, -1, 738, 40, 41, 42, 43, + 44, -1, 799, 800, -1, -1, -1, 1006, 805, 806, + 1009, -1, -1, 117, 757, 63, 64, 65, 63, 64, + 65, 1019, -1, -1, -1, -1, 1066, 1067, 1068, 1069, + -1, 675, 676, -1, 831, 832, 1076, 834, 835, 63, + 64, 65, 1041, 116, 117, -1, -1, 1046, 1046, 1048, + 1048, -1, 1050, 1052, 1052, -1, -1, -1, 51, -1, + 53, 54, 55, 56, -1, 709, -1, -1, 116, 117, + -1, 116, 117, 1072, 1072, -1, 69, 63, 64, 65, + -1, 51, -1, 53, 54, 55, 56, -1, 828, -1, + 83, -1, 116, 117, -1, -1, -1, -1, -1, 69, + -1, 94, -1, -1, -1, 848, -1, 100, 101, 102, + 103, 63, 64, 65, 911, -1, 63, 64, 65, 223, + 224, 864, -1, 2, 94, 4, 5, 6, 121, -1, + 116, 117, -1, -1, 13, 128, -1, 934, 131, -1, + 784, 115, -1, -1, 118, 119, -1, -1, 792, 793, + -1, 144, 796, -1, -1, 799, 800, 261, 262, 263, + 264, 805, 806, -1, 116, 117, -1, 811, 812, 116, + 117, 275, 146, 52, 148, 279, -1, 56, -1, 283, 284, 825, -1, -1, 828, -1, 51, -1, 53, 54, - 55, 56, -1, 837, 838, 115, -1, -1, 118, 119, + 55, 56, -1, 837, 838, -1, -1, -1, -1, -1, -1, 845, -1, 82, 69, 51, -1, 53, 54, 55, - 56, -1, 856, 857, 88, 89, -1, -1, 83, -1, - -1, -1, -1, 69, -1, -1, 146, 101, 148, 94, - -1, -1, -1, -1, -1, 100, 101, 102, 103, -1, - 119, -1, -1, -1, 348, 349, 350, 351, 94, 353, - 354, -1, -1, -1, 100, 129, 130, 131, 132, 133, - -1, -1, -1, 128, -1, -1, 131, 911, 51, 373, - 53, 54, 55, 56, -1, -1, -1, 921, 922, 144, - 384, -1, -1, -1, -1, 929, 69, -1, -1, -1, + 56, -1, 856, 857, -1, 88, 89, -1, 83, -1, + -1, -1, -1, 69, -1, -1, -1, -1, 101, 94, + 88, 89, -1, -1, -1, 100, 101, 102, 103, -1, + 119, -1, -1, 101, 348, 349, 350, 351, 94, 353, + 354, -1, -1, -1, 100, 128, 129, 130, 131, 132, + 133, -1, -1, 128, -1, -1, 131, 911, -1, 373, + -1, 129, 130, 131, 132, 133, -1, 921, 922, 144, + 384, -1, -1, -1, -1, 929, -1, -1, -1, -1, -1, -1, 396, -1, -1, -1, -1, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, -1, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, -1, -1, 431, -1, -1, - 51, 210, 53, 54, 55, 56, -1, 441, 442, -1, - -1, -1, -1, -1, -1, 989, -1, 991, 69, -1, - 994, -1, 456, -1, -1, 459, -1, -1, -1, -1, + 424, 425, 426, 427, 428, -1, 115, 431, -1, 118, + 119, 210, -1, -1, -1, -1, -1, 441, 442, -1, + -1, -1, -1, -1, -1, 989, -1, 991, -1, -1, + 994, -1, 456, 142, -1, 459, -1, 146, -1, 148, -1, 51, -1, 53, 54, 55, 56, 471, -1, 473, - -1, 475, 476, 94, -1, -1, -1, -1, 482, 69, + -1, 475, 476, -1, -1, -1, -1, -1, 482, 69, -1, -1, -1, -1, -1, -1, -1, 491, 1032, -1, 494, -1, -1, -1, 498, -1, -1, 501, -1, 503, -1, 505, 506, -1, 94, 88, 89, -1, 287, -1, 100, 101, 102, 103, -1, 294, 295, -1, 101, 523, - -1, -1, -1, 302, -1, -1, -1, -1, -1, 533, + -1, -1, 51, 302, 53, 54, 55, 56, -1, 533, -1, -1, 536, -1, 313, -1, -1, -1, 128, -1, - -1, 131, 546, 126, 127, 128, 129, 130, 131, 132, + 69, 131, 546, 126, 127, 128, 129, 130, 131, 132, 133, -1, -1, -1, 144, -1, -1, -1, -1, 563, - 564, -1, -1, -1, -1, -1, -1, -1, 347, -1, - -1, -1, -1, 352, -1, -1, 580, -1, -1, -1, + 564, -1, -1, -1, -1, 94, -1, -1, 347, -1, + -1, 100, -1, 352, -1, -1, 580, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 372, -1, 599, -1, 51, 602, 53, 54, 55, 56, -1, 13, 14, 15, 16, 17, 18, @@ -5206,11 +5206,11 @@ static const yytype_int16 yystos[] = 85, 91, 94, 95, 97, 98, 100, 104, 106, 107, 108, 110, 111, 112, 114, 134, 135, 136, 152, 153, 154, 159, 161, 163, 164, 165, 168, 169, 172, 173, - 175, 176, 177, 179, 180, 189, 203, 220, 240, 241, - 251, 252, 253, 257, 258, 259, 265, 266, 267, 269, - 270, 271, 272, 273, 274, 310, 323, 154, 21, 22, + 175, 176, 177, 179, 180, 189, 203, 220, 241, 242, + 252, 253, 254, 258, 259, 260, 266, 267, 268, 270, + 271, 272, 273, 274, 275, 311, 324, 154, 21, 22, 30, 31, 32, 39, 51, 55, 69, 88, 91, 94, - 134, 164, 165, 181, 182, 203, 220, 271, 274, 310, + 134, 164, 165, 181, 182, 203, 220, 272, 275, 311, 182, 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, @@ -5218,94 +5218,94 @@ static const yytype_int16 yystos[] = 50, 51, 52, 55, 70, 71, 72, 73, 74, 75, 76, 77, 80, 81, 86, 87, 88, 89, 100, 101, 102, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 135, 136, 143, 144, 183, 187, 188, 273, 305, - 204, 91, 163, 164, 165, 167, 180, 189, 220, 271, - 272, 274, 167, 210, 212, 69, 91, 173, 180, 220, - 225, 271, 274, 33, 34, 35, 36, 48, 49, 50, - 51, 55, 106, 183, 184, 185, 267, 115, 118, 119, - 146, 148, 167, 261, 262, 263, 316, 320, 321, 322, + 133, 135, 136, 143, 144, 183, 187, 188, 274, 306, + 204, 91, 163, 164, 165, 167, 180, 189, 220, 272, + 273, 275, 167, 210, 212, 69, 91, 173, 180, 220, + 225, 272, 275, 33, 34, 35, 36, 48, 49, 50, + 51, 55, 106, 183, 184, 185, 268, 115, 118, 119, + 146, 148, 167, 262, 263, 264, 317, 321, 322, 323, 51, 100, 102, 103, 135, 172, 189, 195, 198, 201, - 253, 308, 309, 195, 195, 144, 192, 193, 196, 197, - 323, 192, 196, 144, 317, 184, 155, 138, 189, 220, + 254, 309, 310, 195, 195, 144, 192, 193, 196, 197, + 324, 192, 196, 144, 318, 184, 155, 138, 189, 220, 189, 189, 189, 55, 1, 94, 157, 158, 159, 174, - 175, 323, 205, 207, 190, 201, 308, 323, 189, 307, - 308, 323, 91, 142, 179, 220, 271, 274, 208, 53, - 54, 56, 63, 107, 183, 268, 63, 64, 65, 116, - 117, 254, 255, 61, 254, 62, 254, 63, 254, 63, - 254, 58, 59, 168, 189, 189, 316, 322, 40, 41, + 175, 324, 205, 207, 190, 201, 309, 324, 189, 308, + 309, 324, 91, 142, 179, 220, 272, 275, 208, 53, + 54, 56, 63, 107, 183, 269, 63, 64, 65, 116, + 117, 255, 256, 61, 255, 62, 255, 63, 255, 63, + 255, 58, 59, 168, 189, 189, 317, 323, 40, 41, 42, 43, 44, 37, 38, 51, 53, 54, 55, 56, 69, 83, 94, 100, 101, 102, 103, 128, 131, 144, - 277, 278, 279, 280, 281, 284, 285, 286, 287, 289, - 290, 291, 292, 294, 295, 296, 299, 300, 301, 302, - 303, 323, 277, 279, 28, 238, 121, 142, 94, 100, + 278, 279, 280, 281, 282, 285, 286, 287, 288, 290, + 291, 292, 293, 295, 296, 297, 300, 301, 302, 303, + 304, 324, 278, 280, 28, 239, 121, 142, 94, 100, 176, 121, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 88, 89, 93, 101, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 90, - 105, 140, 147, 314, 90, 314, 315, 26, 138, 242, - 253, 92, 92, 192, 196, 242, 163, 51, 55, 181, - 58, 59, 278, 125, 275, 90, 140, 314, 219, 306, - 90, 147, 313, 156, 157, 55, 277, 277, 16, 221, - 320, 121, 90, 140, 314, 92, 92, 221, 167, 167, - 55, 90, 140, 314, 25, 107, 142, 264, 316, 115, - 263, 20, 245, 320, 57, 189, 189, 189, 93, 142, - 199, 200, 323, 57, 199, 200, 85, 194, 195, 201, - 308, 323, 195, 163, 316, 318, 163, 321, 160, 138, - 157, 90, 314, 92, 159, 174, 145, 316, 322, 318, - 159, 318, 141, 200, 319, 322, 200, 319, 139, 319, - 55, 176, 177, 178, 142, 90, 140, 314, 144, 236, - 289, 294, 63, 254, 256, 260, 261, 63, 255, 61, + 105, 140, 147, 315, 90, 315, 316, 26, 138, 243, + 254, 92, 92, 192, 196, 243, 163, 51, 55, 181, + 58, 59, 279, 125, 276, 90, 140, 315, 219, 307, + 90, 147, 314, 156, 157, 55, 278, 278, 16, 221, + 321, 121, 90, 140, 315, 92, 92, 221, 167, 167, + 55, 90, 140, 315, 25, 107, 142, 265, 317, 115, + 264, 20, 246, 321, 57, 189, 189, 189, 93, 142, + 199, 200, 324, 57, 199, 200, 85, 194, 195, 201, + 309, 324, 195, 163, 317, 319, 163, 322, 160, 138, + 157, 90, 315, 92, 159, 174, 145, 317, 323, 319, + 159, 319, 141, 200, 320, 323, 200, 320, 139, 320, + 55, 176, 177, 178, 142, 90, 140, 315, 144, 237, + 290, 295, 63, 255, 257, 261, 262, 63, 256, 61, 62, 63, 63, 101, 101, 154, 167, 167, 167, 167, - 159, 163, 163, 57, 121, 320, 293, 85, 289, 294, - 121, 156, 189, 142, 304, 323, 51, 142, 304, 320, - 142, 288, 189, 142, 288, 51, 142, 288, 51, 121, - 156, 239, 100, 168, 189, 201, 202, 174, 142, 179, - 142, 161, 162, 168, 180, 189, 191, 202, 220, 274, + 159, 163, 163, 57, 121, 321, 294, 85, 290, 295, + 121, 156, 189, 142, 305, 324, 51, 142, 305, 321, + 142, 289, 189, 142, 289, 51, 142, 289, 51, 121, + 156, 240, 100, 168, 189, 201, 202, 174, 142, 179, + 142, 161, 162, 168, 180, 189, 191, 202, 220, 275, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 51, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 51, 52, 55, - 187, 192, 311, 312, 194, 201, 51, 52, 55, 187, - 192, 311, 51, 55, 311, 244, 243, 162, 189, 191, - 162, 191, 99, 170, 217, 276, 216, 51, 55, 181, - 311, 194, 311, 156, 163, 166, 15, 13, 247, 323, + 187, 192, 312, 313, 194, 201, 51, 52, 55, 187, + 192, 312, 51, 55, 312, 245, 244, 162, 189, 191, + 162, 191, 99, 170, 217, 277, 216, 51, 55, 181, + 312, 194, 312, 156, 163, 166, 15, 13, 248, 324, 121, 121, 157, 16, 51, 55, 194, 51, 55, 157, - 27, 222, 320, 222, 51, 55, 194, 51, 55, 214, - 186, 157, 245, 189, 201, 15, 189, 189, 317, 100, - 189, 198, 308, 189, 309, 318, 145, 316, 200, 200, - 318, 145, 184, 152, 139, 191, 318, 159, 206, 308, - 176, 178, 51, 55, 194, 51, 55, 289, 209, 142, - 63, 157, 261, 189, 189, 51, 100, 226, 294, 318, - 318, 142, 172, 189, 15, 51, 281, 286, 303, 85, - 287, 292, 299, 301, 294, 296, 301, 51, 294, 172, - 189, 15, 79, 126, 230, 231, 323, 189, 200, 318, - 178, 142, 44, 121, 44, 90, 140, 314, 317, 92, + 27, 222, 321, 222, 51, 55, 194, 51, 55, 214, + 186, 157, 246, 189, 201, 15, 189, 189, 318, 100, + 189, 198, 309, 189, 310, 319, 145, 317, 200, 200, + 319, 145, 184, 152, 139, 191, 319, 159, 206, 309, + 176, 178, 51, 55, 194, 51, 55, 290, 209, 142, + 63, 157, 262, 189, 189, 51, 100, 226, 295, 319, + 319, 142, 172, 189, 15, 51, 282, 287, 304, 85, + 288, 293, 300, 302, 295, 297, 302, 51, 295, 172, + 189, 15, 79, 126, 231, 232, 324, 189, 200, 319, + 178, 142, 44, 121, 44, 90, 140, 315, 318, 92, 92, 192, 196, 141, 200, 92, 92, 193, 196, 193, - 196, 230, 230, 171, 320, 167, 156, 141, 15, 318, - 183, 189, 202, 248, 323, 18, 224, 323, 17, 223, + 196, 231, 231, 171, 321, 167, 156, 141, 15, 319, + 183, 189, 202, 249, 324, 18, 224, 324, 17, 223, 224, 92, 92, 141, 92, 92, 224, 211, 213, 141, - 167, 184, 139, 15, 200, 221, 189, 199, 85, 308, - 139, 318, 319, 141, 233, 317, 29, 113, 237, 139, - 142, 291, 318, 142, 85, 44, 44, 304, 320, 142, - 288, 142, 288, 142, 288, 142, 288, 288, 44, 44, - 227, 229, 232, 280, 282, 283, 286, 294, 295, 297, - 298, 301, 303, 156, 100, 189, 178, 159, 189, 51, + 167, 184, 139, 15, 200, 221, 189, 199, 85, 309, + 139, 319, 320, 141, 234, 318, 29, 113, 238, 139, + 142, 292, 319, 142, 85, 44, 44, 305, 321, 142, + 289, 142, 289, 142, 289, 142, 289, 289, 44, 44, + 228, 230, 233, 281, 283, 284, 287, 295, 296, 298, + 299, 302, 304, 156, 100, 189, 178, 159, 189, 51, 55, 194, 51, 55, 57, 123, 162, 191, 168, 191, - 170, 92, 162, 191, 162, 191, 170, 242, 238, 156, - 157, 230, 218, 320, 15, 93, 249, 323, 157, 14, - 250, 323, 167, 15, 92, 15, 157, 157, 222, 189, - 157, 318, 200, 145, 146, 156, 157, 294, 142, 100, - 318, 189, 189, 294, 301, 294, 294, 189, 189, 233, - 233, 91, 220, 142, 304, 304, 142, 228, 220, 142, - 228, 142, 228, 15, 189, 141, 189, 189, 162, 191, - 15, 139, 157, 156, 91, 180, 220, 271, 274, 221, - 157, 221, 15, 15, 215, 224, 245, 246, 51, 234, - 235, 290, 15, 139, 142, 294, 142, 291, 288, 142, - 288, 288, 288, 126, 126, 55, 90, 282, 286, 142, - 227, 228, 298, 301, 294, 297, 301, 294, 139, 15, - 55, 90, 140, 314, 157, 157, 157, 142, 317, 294, - 142, 294, 51, 55, 304, 142, 228, 142, 228, 142, - 228, 142, 228, 228, 51, 55, 194, 51, 55, 247, - 223, 15, 235, 294, 288, 294, 301, 294, 294, 141, - 228, 142, 228, 228, 228, 294, 228 + 170, 92, 162, 191, 162, 191, 170, 243, 239, 156, + 157, 231, 218, 321, 15, 93, 250, 324, 157, 14, + 251, 324, 167, 15, 92, 15, 157, 157, 222, 189, + 157, 319, 200, 145, 146, 156, 157, 227, 142, 100, + 319, 189, 189, 295, 302, 295, 295, 189, 189, 234, + 234, 91, 220, 142, 305, 305, 142, 229, 220, 142, + 229, 142, 229, 15, 189, 141, 189, 189, 162, 191, + 15, 139, 157, 156, 91, 180, 220, 272, 275, 221, + 157, 221, 15, 15, 215, 224, 246, 247, 51, 235, + 236, 291, 15, 139, 295, 295, 142, 292, 289, 142, + 289, 289, 289, 126, 126, 55, 90, 283, 287, 142, + 228, 229, 299, 302, 295, 298, 302, 295, 139, 15, + 55, 90, 140, 315, 157, 157, 157, 142, 318, 142, + 295, 142, 295, 51, 55, 305, 142, 229, 142, 229, + 142, 229, 142, 229, 229, 51, 55, 194, 51, 55, + 248, 223, 15, 236, 295, 289, 295, 302, 295, 295, + 141, 229, 142, 229, 229, 229, 295, 229 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -5347,32 +5347,32 @@ static const yytype_int16 yyr1[] = 217, 218, 203, 219, 203, 203, 203, 203, 203, 203, 203, 220, 221, 221, 221, 222, 222, 223, 223, 224, 224, 225, 225, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 227, 227, 227, 227, 228, 228, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 230, 230, 232, 231, 231, 231, 233, - 233, 234, 234, 235, 235, 236, 236, 237, 237, 239, - 238, 240, 240, 240, 240, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 243, 242, 244, 242, 245, 246, - 246, 247, 247, 248, 248, 248, 249, 249, 250, 250, - 251, 251, 251, 251, 252, 252, 253, 253, 253, 253, - 254, 254, 255, 256, 255, 255, 255, 257, 257, 258, - 258, 259, 260, 260, 261, 261, 262, 262, 263, 264, - 263, 265, 265, 266, 266, 267, 268, 268, 268, 268, - 268, 268, 269, 269, 270, 270, 270, 270, 271, 271, - 271, 271, 271, 272, 272, 273, 273, 273, 273, 273, - 273, 273, 273, 274, 274, 275, 276, 275, 277, 277, - 278, 278, 278, 279, 279, 279, 279, 280, 281, 281, - 282, 282, 283, 283, 284, 284, 285, 285, 286, 286, - 287, 287, 287, 287, 288, 288, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 290, 290, 290, 290, 290, 291, 291, 292, 293, - 292, 294, 294, 295, 296, 297, 298, 298, 299, 299, - 300, 300, 301, 301, 302, 302, 303, 303, 304, 304, - 305, 306, 305, 307, 307, 308, 308, 309, 309, 309, - 309, 309, 310, 310, 310, 311, 311, 311, 311, 312, - 312, 312, 313, 313, 314, 314, 315, 315, 316, 316, - 317, 317, 318, 319, 319, 319, 320, 320, 321, 321, - 322, 322, 323 + 226, 227, 226, 228, 228, 228, 228, 229, 229, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 231, 231, 233, 232, 232, 232, + 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, + 240, 239, 241, 241, 241, 241, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 244, 243, 245, 243, 246, + 247, 247, 248, 248, 249, 249, 249, 250, 250, 251, + 251, 252, 252, 252, 252, 253, 253, 254, 254, 254, + 254, 255, 255, 256, 257, 256, 256, 256, 258, 258, + 259, 259, 260, 261, 261, 262, 262, 263, 263, 264, + 265, 264, 266, 266, 267, 267, 268, 269, 269, 269, + 269, 269, 269, 270, 270, 271, 271, 271, 271, 272, + 272, 272, 272, 272, 273, 273, 274, 274, 274, 274, + 274, 274, 274, 274, 275, 275, 276, 277, 276, 278, + 278, 279, 279, 279, 280, 280, 280, 280, 281, 282, + 282, 283, 283, 284, 284, 285, 285, 286, 286, 287, + 287, 288, 288, 288, 288, 289, 289, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 291, 291, 291, 291, 291, 292, 292, 293, + 294, 293, 295, 295, 296, 297, 298, 299, 299, 300, + 300, 301, 301, 302, 302, 303, 303, 304, 304, 305, + 305, 306, 307, 306, 308, 308, 309, 309, 310, 310, + 310, 310, 310, 311, 311, 311, 312, 312, 312, 312, + 313, 313, 313, 314, 314, 315, 315, 316, 316, 317, + 317, 318, 318, 319, 320, 320, 320, 321, 321, 322, + 322, 323, 323, 324 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -5414,32 +5414,32 @@ static const yytype_int8 yyr2[] = 0, 0, 8, 0, 5, 4, 4, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 5, 1, 2, 1, 1, 1, 4, 6, 3, 5, 2, 4, - 1, 3, 4, 2, 2, 1, 2, 0, 6, 8, - 4, 6, 4, 3, 6, 2, 4, 6, 2, 4, - 2, 4, 1, 1, 1, 0, 4, 1, 4, 1, - 4, 1, 3, 1, 1, 4, 1, 3, 3, 0, - 5, 2, 4, 5, 5, 2, 4, 4, 3, 3, - 3, 2, 1, 4, 0, 5, 0, 5, 5, 1, - 1, 6, 1, 1, 1, 1, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 2, 3, - 1, 2, 1, 0, 4, 1, 2, 2, 3, 2, - 3, 1, 1, 2, 1, 2, 1, 2, 1, 0, - 4, 2, 3, 1, 4, 2, 1, 1, 1, 1, - 1, 2, 2, 3, 1, 1, 2, 2, 1, 1, + 1, 0, 4, 4, 2, 2, 1, 2, 0, 6, + 8, 4, 6, 4, 3, 6, 2, 4, 6, 2, + 4, 2, 4, 1, 1, 1, 0, 4, 1, 4, + 1, 4, 1, 3, 1, 1, 4, 1, 3, 3, + 0, 5, 2, 4, 5, 5, 2, 4, 4, 3, + 3, 3, 2, 1, 4, 0, 5, 0, 5, 5, + 1, 1, 6, 1, 1, 1, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, + 3, 1, 2, 1, 0, 4, 1, 2, 2, 3, + 2, 3, 1, 1, 2, 1, 2, 1, 2, 1, + 0, 4, 2, 3, 1, 4, 2, 1, 1, 1, + 1, 1, 2, 2, 3, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 4, 1, 1, - 3, 5, 3, 1, 2, 4, 2, 2, 2, 1, - 2, 1, 1, 3, 1, 3, 1, 1, 2, 1, - 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, 0, - 4, 1, 3, 2, 2, 2, 1, 3, 1, 3, - 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, - 1, 0, 4, 1, 2, 1, 3, 3, 3, 2, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 2, 0 + 1, 1, 1, 1, 1, 1, 0, 0, 4, 1, + 1, 3, 5, 3, 1, 2, 4, 2, 2, 2, + 1, 2, 1, 1, 3, 1, 3, 1, 1, 2, + 1, 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, + 0, 4, 1, 3, 2, 2, 2, 1, 3, 1, + 3, 1, 1, 2, 1, 1, 1, 2, 1, 2, + 1, 1, 0, 4, 1, 2, 1, 3, 3, 3, + 2, 3, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 0, 2, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 2, 0 }; @@ -8443,346 +8443,356 @@ yyreduce: case 356: #line 2964 "mrbgems/mruby-compiler/core/parse.y" { + local_add_f(p, intern_op(mul)); (yyval.nd) = list3((yyvsp[-2].nd), nint(-1), 0); } -#line 8449 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8450 "mrbgems/mruby-compiler/core/y.tab.c" break; case 357: -#line 2968 "mrbgems/mruby-compiler/core/parse.y" +#line 2969 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), nint(-1), (yyvsp[0].nd)); } -#line 8457 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8458 "mrbgems/mruby-compiler/core/y.tab.c" break; case 358: -#line 2972 "mrbgems/mruby-compiler/core/parse.y" +#line 2973 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); } -#line 8465 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8466 "mrbgems/mruby-compiler/core/y.tab.c" break; case 359: -#line 2976 "mrbgems/mruby-compiler/core/parse.y" +#line 2977 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 8473 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8474 "mrbgems/mruby-compiler/core/y.tab.c" break; case 360: -#line 2980 "mrbgems/mruby-compiler/core/parse.y" +#line 2981 "mrbgems/mruby-compiler/core/parse.y" { + local_add_f(p, intern_op(mul)); (yyval.nd) = list3(0, nint(-1), 0); } -#line 8481 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8483 "mrbgems/mruby-compiler/core/y.tab.c" break; case 361: -#line 2984 "mrbgems/mruby-compiler/core/parse.y" +#line 2986 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3(0, nint(-1), (yyvsp[0].nd)); + local_add_f(p, intern_op(mul)); } -#line 8489 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8491 "mrbgems/mruby-compiler/core/y.tab.c" break; case 362: #line 2990 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = list3(0, nint(-1), (yyvsp[0].nd)); } -#line 8497 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8499 "mrbgems/mruby-compiler/core/y.tab.c" break; case 363: -#line 2994 "mrbgems/mruby-compiler/core/parse.y" +#line 2996 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8505 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8507 "mrbgems/mruby-compiler/core/y.tab.c" break; case 364: -#line 2998 "mrbgems/mruby-compiler/core/parse.y" +#line 3000 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 8513 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8515 "mrbgems/mruby-compiler/core/y.tab.c" break; case 365: -#line 3002 "mrbgems/mruby-compiler/core/parse.y" +#line 3004 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8521 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8523 "mrbgems/mruby-compiler/core/y.tab.c" break; case 366: #line 3008 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 8529 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8531 "mrbgems/mruby-compiler/core/y.tab.c" break; case 367: -#line 3012 "mrbgems/mruby-compiler/core/parse.y" +#line 3014 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, 0); + (yyval.nd) = (yyvsp[0].nd); } -#line 8537 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8539 "mrbgems/mruby-compiler/core/y.tab.c" break; case 368: #line 3018 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 8545 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8547 "mrbgems/mruby-compiler/core/y.tab.c" break; case 369: -#line 3022 "mrbgems/mruby-compiler/core/parse.y" +#line 3024 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8553 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8555 "mrbgems/mruby-compiler/core/y.tab.c" break; case 370: -#line 3026 "mrbgems/mruby-compiler/core/parse.y" +#line 3028 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8561 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8563 "mrbgems/mruby-compiler/core/y.tab.c" break; case 371: -#line 3030 "mrbgems/mruby-compiler/core/parse.y" +#line 3032 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8569 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8571 "mrbgems/mruby-compiler/core/y.tab.c" break; case 372: -#line 3034 "mrbgems/mruby-compiler/core/parse.y" +#line 3036 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8577 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8579 "mrbgems/mruby-compiler/core/y.tab.c" break; case 373: -#line 3038 "mrbgems/mruby-compiler/core/parse.y" +#line 3040 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8585 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8587 "mrbgems/mruby-compiler/core/y.tab.c" break; case 374: -#line 3042 "mrbgems/mruby-compiler/core/parse.y" +#line 3044 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 8593 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8595 "mrbgems/mruby-compiler/core/y.tab.c" break; case 375: -#line 3046 "mrbgems/mruby-compiler/core/parse.y" +#line 3048 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8601 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8603 "mrbgems/mruby-compiler/core/y.tab.c" break; case 376: -#line 3050 "mrbgems/mruby-compiler/core/parse.y" +#line 3052 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 8609 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8611 "mrbgems/mruby-compiler/core/y.tab.c" break; case 377: -#line 3054 "mrbgems/mruby-compiler/core/parse.y" +#line 3056 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8617 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8619 "mrbgems/mruby-compiler/core/y.tab.c" break; case 378: -#line 3058 "mrbgems/mruby-compiler/core/parse.y" +#line 3060 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8625 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8627 "mrbgems/mruby-compiler/core/y.tab.c" break; case 379: -#line 3062 "mrbgems/mruby-compiler/core/parse.y" +#line 3064 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8633 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8635 "mrbgems/mruby-compiler/core/y.tab.c" break; case 380: -#line 3066 "mrbgems/mruby-compiler/core/parse.y" +#line 3068 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8641 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8643 "mrbgems/mruby-compiler/core/y.tab.c" break; case 381: -#line 3070 "mrbgems/mruby-compiler/core/parse.y" +#line 3072 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8649 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8651 "mrbgems/mruby-compiler/core/y.tab.c" break; case 382: -#line 3074 "mrbgems/mruby-compiler/core/parse.y" +#line 3076 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8657 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8659 "mrbgems/mruby-compiler/core/y.tab.c" break; case 383: #line 3080 "mrbgems/mruby-compiler/core/parse.y" { - local_add_blk(p, 0); - (yyval.nd) = 0; + (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); } -#line 8666 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8667 "mrbgems/mruby-compiler/core/y.tab.c" break; case 384: -#line 3085 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmd_start = TRUE; - (yyval.nd) = (yyvsp[0].nd); +#line 3086 "mrbgems/mruby-compiler/core/parse.y" + { + local_add_blk(p, 0); + (yyval.nd) = 0; } -#line 8675 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8676 "mrbgems/mruby-compiler/core/y.tab.c" break; case 385: #line 3091 "mrbgems/mruby-compiler/core/parse.y" - {local_add_blk(p, 0);} -#line 8681 "mrbgems/mruby-compiler/core/y.tab.c" + { + p->cmd_start = TRUE; + (yyval.nd) = (yyvsp[0].nd); + } +#line 8685 "mrbgems/mruby-compiler/core/y.tab.c" break; case 386: -#line 3092 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 8689 "mrbgems/mruby-compiler/core/y.tab.c" +#line 3097 "mrbgems/mruby-compiler/core/parse.y" + {local_add_blk(p, 0);} +#line 8691 "mrbgems/mruby-compiler/core/y.tab.c" break; case 387: -#line 3096 "mrbgems/mruby-compiler/core/parse.y" +#line 3098 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = 0; + } +#line 8699 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 388: +#line 3102 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8698 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 388: -#line 3101 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-2].nd); - } -#line 8706 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8708 "mrbgems/mruby-compiler/core/y.tab.c" break; case 389: -#line 3108 "mrbgems/mruby-compiler/core/parse.y" +#line 3107 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = 0; + (yyval.nd) = (yyvsp[-2].nd); } -#line 8714 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8716 "mrbgems/mruby-compiler/core/y.tab.c" break; case 390: -#line 3112 "mrbgems/mruby-compiler/core/parse.y" +#line 3114 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8722 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8724 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 393: -#line 3122 "mrbgems/mruby-compiler/core/parse.y" + case 391: +#line 3118 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = 0; + } +#line 8732 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 394: +#line 3128 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); new_bv(p, (yyvsp[0].id)); } -#line 8731 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 395: -#line 3130 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-2].nd); - } -#line 8739 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8741 "mrbgems/mruby-compiler/core/y.tab.c" break; case 396: -#line 3134 "mrbgems/mruby-compiler/core/parse.y" +#line 3136 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = (yyvsp[-2].nd); } -#line 8747 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8749 "mrbgems/mruby-compiler/core/y.tab.c" break; case 397: #line 3140 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[-1].nd); + (yyval.nd) = (yyvsp[0].nd); } -#line 8755 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8757 "mrbgems/mruby-compiler/core/y.tab.c" break; case 398: -#line 3144 "mrbgems/mruby-compiler/core/parse.y" +#line 3146 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8763 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8765 "mrbgems/mruby-compiler/core/y.tab.c" break; case 399: #line 3150 "mrbgems/mruby-compiler/core/parse.y" { - local_nest(p); - nvars_nest(p); + (yyval.nd) = (yyvsp[-1].nd); } -#line 8772 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8773 "mrbgems/mruby-compiler/core/y.tab.c" break; case 400: -#line 3157 "mrbgems/mruby-compiler/core/parse.y" +#line 3156 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); - local_unnest(p); - nvars_unnest(p); + local_nest(p); + nvars_nest(p); } #line 8782 "mrbgems/mruby-compiler/core/y.tab.c" break; case 401: -#line 3165 "mrbgems/mruby-compiler/core/parse.y" +#line 3163 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); + local_unnest(p); + nvars_unnest(p); + } +#line 8792 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 402: +#line 3171 "mrbgems/mruby-compiler/core/parse.y" { if (typen((yyvsp[-1].nd)->car) == NODE_YIELD) { yyerror(p, "block given to yield"); @@ -8792,159 +8802,159 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 8796 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 402: -#line 3175 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); - } -#line 8804 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8806 "mrbgems/mruby-compiler/core/y.tab.c" break; case 403: -#line 3179 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); - call_with_block(p, (yyval.nd), (yyvsp[0].nd)); - } -#line 8813 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 404: -#line 3184 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); - call_with_block(p, (yyval.nd), (yyvsp[0].nd)); - } -#line 8822 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 405: -#line 3191 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 8830 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 406: -#line 3195 "mrbgems/mruby-compiler/core/parse.y" +#line 3181 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8838 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8814 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 404: +#line 3185 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); + call_with_block(p, (yyval.nd), (yyvsp[0].nd)); + } +#line 8823 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 405: +#line 3190 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); + call_with_block(p, (yyval.nd), (yyvsp[0].nd)); + } +#line 8832 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 406: +#line 3197 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); + } +#line 8840 "mrbgems/mruby-compiler/core/y.tab.c" break; case 407: -#line 3199 "mrbgems/mruby-compiler/core/parse.y" +#line 3201 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); + (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8846 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8848 "mrbgems/mruby-compiler/core/y.tab.c" break; case 408: -#line 3203 "mrbgems/mruby-compiler/core/parse.y" +#line 3205 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); + (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 8854 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8856 "mrbgems/mruby-compiler/core/y.tab.c" break; case 409: -#line 3207 "mrbgems/mruby-compiler/core/parse.y" +#line 3209 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num)); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 8862 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8864 "mrbgems/mruby-compiler/core/y.tab.c" break; case 410: -#line 3211 "mrbgems/mruby-compiler/core/parse.y" +#line 3213 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num)); } -#line 8870 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8872 "mrbgems/mruby-compiler/core/y.tab.c" break; case 411: -#line 3215 "mrbgems/mruby-compiler/core/parse.y" +#line 3217 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_super(p, (yyvsp[0].nd)); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2); } -#line 8878 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8880 "mrbgems/mruby-compiler/core/y.tab.c" break; case 412: -#line 3219 "mrbgems/mruby-compiler/core/parse.y" +#line 3221 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_zsuper(p); + (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 8886 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8888 "mrbgems/mruby-compiler/core/y.tab.c" break; case 413: -#line 3223 "mrbgems/mruby-compiler/core/parse.y" +#line 3225 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); + (yyval.nd) = new_zsuper(p); } -#line 8894 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8896 "mrbgems/mruby-compiler/core/y.tab.c" break; case 414: #line 3229 "mrbgems/mruby-compiler/core/parse.y" { - local_nest(p); - nvars_nest(p); - (yyval.num) = p->lineno; + (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } #line 8904 "mrbgems/mruby-compiler/core/y.tab.c" break; case 415: -#line 3236 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-3].num)); - local_unnest(p); - nvars_unnest(p); - } -#line 8915 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 416: -#line 3243 "mrbgems/mruby-compiler/core/parse.y" +#line 3235 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8925 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8914 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 417: -#line 3250 "mrbgems/mruby-compiler/core/parse.y" + case 416: +#line 3242 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 8936 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8925 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 417: +#line 3249 "mrbgems/mruby-compiler/core/parse.y" + { + local_nest(p); + nvars_nest(p); + (yyval.num) = p->lineno; + } +#line 8935 "mrbgems/mruby-compiler/core/y.tab.c" break; case 418: -#line 3261 "mrbgems/mruby-compiler/core/parse.y" +#line 3256 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); + (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); + SET_LINENO((yyval.nd), (yyvsp[-3].num)); + local_unnest(p); + nvars_unnest(p); } -#line 8944 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8946 "mrbgems/mruby-compiler/core/y.tab.c" break; case 419: #line 3267 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); + } +#line 8954 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 420: +#line 3273 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[0].nd)) { (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0); @@ -8953,60 +8963,60 @@ yyreduce: (yyval.nd) = 0; } } -#line 8957 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8967 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 421: -#line 3281 "mrbgems/mruby-compiler/core/parse.y" + case 422: +#line 3287 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd))); if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd)); } -#line 8966 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8976 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 423: -#line 3289 "mrbgems/mruby-compiler/core/parse.y" + case 424: +#line 3295 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8974 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8984 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 426: -#line 3297 "mrbgems/mruby-compiler/core/parse.y" + case 427: +#line 3303 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8982 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8992 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 428: -#line 3304 "mrbgems/mruby-compiler/core/parse.y" + case 429: +#line 3310 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8990 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9000 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 435: -#line 3318 "mrbgems/mruby-compiler/core/parse.y" + case 436: +#line 3324 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8998 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 438: -#line 3326 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 9006 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9008 "mrbgems/mruby-compiler/core/y.tab.c" break; case 439: -#line 3330 "mrbgems/mruby-compiler/core/parse.y" +#line 3332 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[0].nd); + } +#line 9016 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 440: +#line 3336 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (intn((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -9017,69 +9027,69 @@ yyreduce: } (yyval.nd) = new_dstr(p, n); } -#line 9021 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 441: -#line 3344 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9029 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9031 "mrbgems/mruby-compiler/core/y.tab.c" break; case 442: #line 3350 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1((yyvsp[0].nd)); + (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9037 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9039 "mrbgems/mruby-compiler/core/y.tab.c" break; case 443: -#line 3354 "mrbgems/mruby-compiler/core/parse.y" +#line 3356 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = p->lex_strterm; - p->lex_strterm = NULL; + (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9046 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9047 "mrbgems/mruby-compiler/core/y.tab.c" break; case 444: #line 3360 "mrbgems/mruby-compiler/core/parse.y" { - p->lex_strterm = (yyvsp[-2].nd); - (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); + (yyval.nd) = p->lex_strterm; + p->lex_strterm = NULL; } -#line 9055 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9056 "mrbgems/mruby-compiler/core/y.tab.c" break; case 445: -#line 3365 "mrbgems/mruby-compiler/core/parse.y" +#line 3366 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1(new_literal_delim(p)); + p->lex_strterm = (yyvsp[-2].nd); + (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 9063 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9065 "mrbgems/mruby-compiler/core/y.tab.c" break; case 446: -#line 3369 "mrbgems/mruby-compiler/core/parse.y" +#line 3371 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 9071 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9073 "mrbgems/mruby-compiler/core/y.tab.c" break; case 447: #line 3375 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = list1(new_literal_delim(p)); } -#line 9079 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9081 "mrbgems/mruby-compiler/core/y.tab.c" break; case 448: -#line 3379 "mrbgems/mruby-compiler/core/parse.y" +#line 3381 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[0].nd); + } +#line 9089 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 449: +#line 3385 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (intn((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -9090,31 +9100,21 @@ yyreduce: } (yyval.nd) = new_dxstr(p, n); } -#line 9094 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 449: -#line 3392 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 9102 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9104 "mrbgems/mruby-compiler/core/y.tab.c" break; case 450: -#line 3396 "mrbgems/mruby-compiler/core/parse.y" +#line 3398 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = (yyvsp[0].nd); } -#line 9110 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9112 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 454: -#line 3409 "mrbgems/mruby-compiler/core/parse.y" + case 451: +#line 3402 "mrbgems/mruby-compiler/core/parse.y" { - parser_heredoc_info * inf = parsing_heredoc_inf(p); - inf->doc = push(inf->doc, new_str(p, "", 0)); - heredoc_end(p); + (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 9120 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9122,17 +9122,17 @@ yyreduce: case 455: #line 3415 "mrbgems/mruby-compiler/core/parse.y" { + parser_heredoc_info * inf = parsing_heredoc_inf(p); + inf->doc = push(inf->doc, new_str(p, "", 0)); heredoc_end(p); } -#line 9128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9130 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 458: -#line 3425 "mrbgems/mruby-compiler/core/parse.y" + case 456: +#line 3421 "mrbgems/mruby-compiler/core/parse.y" { - parser_heredoc_info * inf = parsing_heredoc_inf(p); - inf->doc = push(inf->doc, (yyvsp[0].nd)); - heredoc_treat_nextline(p); + heredoc_end(p); } #line 9138 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9140,32 +9140,42 @@ yyreduce: case 459: #line 3431 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = p->lex_strterm; - p->lex_strterm = NULL; + parser_heredoc_info * inf = parsing_heredoc_inf(p); + inf->doc = push(inf->doc, (yyvsp[0].nd)); + heredoc_treat_nextline(p); } -#line 9147 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9148 "mrbgems/mruby-compiler/core/y.tab.c" break; case 460: #line 3437 "mrbgems/mruby-compiler/core/parse.y" { - parser_heredoc_info * inf = parsing_heredoc_inf(p); - p->lex_strterm = (yyvsp[-2].nd); - inf->doc = push(push(inf->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd)); + (yyval.nd) = p->lex_strterm; + p->lex_strterm = NULL; } #line 9157 "mrbgems/mruby-compiler/core/y.tab.c" break; case 461: -#line 3445 "mrbgems/mruby-compiler/core/parse.y" +#line 3443 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); + parser_heredoc_info * inf = parsing_heredoc_inf(p); + p->lex_strterm = (yyvsp[-2].nd); + inf->doc = push(push(inf->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd)); } -#line 9165 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9167 "mrbgems/mruby-compiler/core/y.tab.c" break; case 462: -#line 3449 "mrbgems/mruby-compiler/core/parse.y" +#line 3451 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); + } +#line 9175 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 463: +#line 3455 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (intn((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -9176,20 +9186,20 @@ yyreduce: } (yyval.nd) = new_words(p, n); } -#line 9180 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9190 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 463: -#line 3463 "mrbgems/mruby-compiler/core/parse.y" + case 464: +#line 3469 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_sym(p, (yyvsp[0].id)); } -#line 9189 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9199 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 464: -#line 3468 "mrbgems/mruby-compiler/core/parse.y" + case 465: +#line 3474 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); p->lstate = EXPR_ENDARG; @@ -9201,43 +9211,43 @@ yyreduce: } (yyval.nd) = new_dsym(p, new_dstr(p, n)); } -#line 9205 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9215 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 465: -#line 3482 "mrbgems/mruby-compiler/core/parse.y" + case 466: +#line 3488 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9213 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 470: -#line 3492 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = new_strsym(p, (yyvsp[0].nd)); - } -#line 9221 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9223 "mrbgems/mruby-compiler/core/y.tab.c" break; case 471: -#line 3496 "mrbgems/mruby-compiler/core/parse.y" +#line 3498 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 9229 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9231 "mrbgems/mruby-compiler/core/y.tab.c" break; case 472: #line 3502 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); + (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 9237 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9239 "mrbgems/mruby-compiler/core/y.tab.c" break; case 473: -#line 3506 "mrbgems/mruby-compiler/core/parse.y" +#line 3508 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); + } +#line 9247 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 474: +#line 3512 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (intn((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -9245,123 +9255,123 @@ yyreduce: } (yyval.nd) = new_symbols(p, n); } -#line 9249 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 476: -#line 3518 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, (yyvsp[0].nd)); - } -#line 9257 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9259 "mrbgems/mruby-compiler/core/y.tab.c" break; case 477: -#line 3522 "mrbgems/mruby-compiler/core/parse.y" +#line 3524 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } -#line 9265 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9267 "mrbgems/mruby-compiler/core/y.tab.c" break; case 478: #line 3528 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_lvar(p, (yyvsp[0].id)); + (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } -#line 9273 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9275 "mrbgems/mruby-compiler/core/y.tab.c" break; case 479: -#line 3532 "mrbgems/mruby-compiler/core/parse.y" +#line 3534 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_ivar(p, (yyvsp[0].id)); + (yyval.nd) = new_lvar(p, (yyvsp[0].id)); } -#line 9281 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9283 "mrbgems/mruby-compiler/core/y.tab.c" break; case 480: -#line 3536 "mrbgems/mruby-compiler/core/parse.y" +#line 3538 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_gvar(p, (yyvsp[0].id)); + (yyval.nd) = new_ivar(p, (yyvsp[0].id)); } -#line 9289 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9291 "mrbgems/mruby-compiler/core/y.tab.c" break; case 481: -#line 3540 "mrbgems/mruby-compiler/core/parse.y" +#line 3542 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_cvar(p, (yyvsp[0].id)); + (yyval.nd) = new_gvar(p, (yyvsp[0].id)); } -#line 9297 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9299 "mrbgems/mruby-compiler/core/y.tab.c" break; case 482: -#line 3544 "mrbgems/mruby-compiler/core/parse.y" +#line 3546 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_const(p, (yyvsp[0].id)); + (yyval.nd) = new_cvar(p, (yyvsp[0].id)); } -#line 9305 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9307 "mrbgems/mruby-compiler/core/y.tab.c" break; case 483: #line 3550 "mrbgems/mruby-compiler/core/parse.y" { - assignable(p, (yyvsp[0].nd)); + (yyval.nd) = new_const(p, (yyvsp[0].id)); } -#line 9313 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9315 "mrbgems/mruby-compiler/core/y.tab.c" break; case 484: -#line 3554 "mrbgems/mruby-compiler/core/parse.y" +#line 3556 "mrbgems/mruby-compiler/core/parse.y" { - yyerror(p, "can't assign to numbered parameter"); + assignable(p, (yyvsp[0].nd)); } -#line 9321 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9323 "mrbgems/mruby-compiler/core/y.tab.c" break; case 485: #line 3560 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = var_reference(p, (yyvsp[0].nd)); + yyerror(p, "can't assign to numbered parameter"); } -#line 9329 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9331 "mrbgems/mruby-compiler/core/y.tab.c" break; case 486: -#line 3564 "mrbgems/mruby-compiler/core/parse.y" +#line 3566 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_nil(p); + (yyval.nd) = var_reference(p, (yyvsp[0].nd)); } -#line 9337 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9339 "mrbgems/mruby-compiler/core/y.tab.c" break; case 487: -#line 3568 "mrbgems/mruby-compiler/core/parse.y" +#line 3570 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_self(p); + (yyval.nd) = new_nil(p); } -#line 9345 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9347 "mrbgems/mruby-compiler/core/y.tab.c" break; case 488: -#line 3572 "mrbgems/mruby-compiler/core/parse.y" +#line 3574 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_true(p); + (yyval.nd) = new_self(p); } -#line 9353 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9355 "mrbgems/mruby-compiler/core/y.tab.c" break; case 489: -#line 3576 "mrbgems/mruby-compiler/core/parse.y" +#line 3578 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_false(p); + (yyval.nd) = new_true(p); } -#line 9361 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9363 "mrbgems/mruby-compiler/core/y.tab.c" break; case 490: -#line 3580 "mrbgems/mruby-compiler/core/parse.y" +#line 3582 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_false(p); + } +#line 9371 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 491: +#line 3586 "mrbgems/mruby-compiler/core/parse.y" { const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); if (!fn) { @@ -9369,117 +9379,107 @@ yyreduce: } (yyval.nd) = new_str(p, fn, strlen(fn)); } -#line 9373 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9383 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 491: -#line 3588 "mrbgems/mruby-compiler/core/parse.y" + case 492: +#line 3594 "mrbgems/mruby-compiler/core/parse.y" { char buf[16]; dump_int(p->lineno, buf); (yyval.nd) = new_int(p, buf, 10, 0); } -#line 9384 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9394 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 492: -#line 3595 "mrbgems/mruby-compiler/core/parse.y" + case 493: +#line 3601 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, MRB_SYM_2(p->mrb, __ENCODING__), 0); } -#line 9392 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 495: -#line 3605 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 9400 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9402 "mrbgems/mruby-compiler/core/y.tab.c" break; case 496: -#line 3609 "mrbgems/mruby-compiler/core/parse.y" +#line 3611 "mrbgems/mruby-compiler/core/parse.y" { - p->lstate = EXPR_BEG; - p->cmd_start = TRUE; + (yyval.nd) = 0; } -#line 9409 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9410 "mrbgems/mruby-compiler/core/y.tab.c" break; case 497: -#line 3614 "mrbgems/mruby-compiler/core/parse.y" +#line 3615 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 9417 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 500: -#line 3630 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); p->lstate = EXPR_BEG; p->cmd_start = TRUE; } +#line 9419 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 498: +#line 3620 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-1].nd); + } #line 9427 "mrbgems/mruby-compiler/core/y.tab.c" break; case 501: #line 3636 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); + (yyval.nd) = (yyvsp[-1].nd); + p->lstate = EXPR_BEG; + p->cmd_start = TRUE; } -#line 9435 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9437 "mrbgems/mruby-compiler/core/y.tab.c" break; case 502: -#line 3640 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_dots(p, 0); - } -#line 9443 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 504: -#line 3647 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 9451 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 505: -#line 3651 "mrbgems/mruby-compiler/core/parse.y" +#line 3642 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); } -#line 9459 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9445 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 506: -#line 3655 "mrbgems/mruby-compiler/core/parse.y" + case 503: +#line 3646 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_dots(p, 0); } -#line 9467 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9453 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 505: +#line 3653 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-1].nd); + } +#line 9461 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 506: +#line 3657 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); + } +#line 9469 "mrbgems/mruby-compiler/core/y.tab.c" break; case 507: #line 3661 "mrbgems/mruby-compiler/core/parse.y" { - local_nest(p); + (yyval.nd) = new_args_dots(p, 0); } -#line 9475 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9477 "mrbgems/mruby-compiler/core/y.tab.c" break; case 508: #line 3667 "mrbgems/mruby-compiler/core/parse.y" { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); - local_unnest(p); + local_nest(p); } #line 9485 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9487,17 +9487,17 @@ yyreduce: case 509: #line 3673 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); + void_expr_error(p, (yyvsp[0].nd)); + (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9494 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9495 "mrbgems/mruby-compiler/core/y.tab.c" break; case 510: -#line 3680 "mrbgems/mruby-compiler/core/parse.y" +#line 3679 "mrbgems/mruby-compiler/core/parse.y" { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); + (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } #line 9504 "mrbgems/mruby-compiler/core/y.tab.c" @@ -9506,461 +9506,472 @@ yyreduce: case 511: #line 3686 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); + void_expr_error(p, (yyvsp[0].nd)); + (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9513 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9514 "mrbgems/mruby-compiler/core/y.tab.c" break; case 512: -#line 3693 "mrbgems/mruby-compiler/core/parse.y" +#line 3692 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1((yyvsp[0].nd)); + (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); + local_unnest(p); } -#line 9521 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9523 "mrbgems/mruby-compiler/core/y.tab.c" break; case 513: -#line 3697 "mrbgems/mruby-compiler/core/parse.y" +#line 3699 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9529 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9531 "mrbgems/mruby-compiler/core/y.tab.c" break; case 514: #line 3703 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1((yyvsp[0].nd)); + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9537 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9539 "mrbgems/mruby-compiler/core/y.tab.c" break; case 515: -#line 3707 "mrbgems/mruby-compiler/core/parse.y" +#line 3709 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list1((yyvsp[0].nd)); + } +#line 9547 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 516: +#line 3713 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9545 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 518: -#line 3717 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_rest_args(p, nsym((yyvsp[0].id))); - } -#line 9553 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9555 "mrbgems/mruby-compiler/core/y.tab.c" break; case 519: -#line 3721 "mrbgems/mruby-compiler/core/parse.y" +#line 3723 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_kw_rest_args(p, 0); + (yyval.nd) = new_kw_rest_args(p, nsym((yyvsp[0].id))); } -#line 9561 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9563 "mrbgems/mruby-compiler/core/y.tab.c" break; case 520: #line 3727 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = new_kw_rest_args(p, 0); } -#line 9569 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9571 "mrbgems/mruby-compiler/core/y.tab.c" break; case 521: -#line 3731 "mrbgems/mruby-compiler/core/parse.y" +#line 3733 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 9577 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9579 "mrbgems/mruby-compiler/core/y.tab.c" break; case 522: -#line 3735 "mrbgems/mruby-compiler/core/parse.y" +#line 3737 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 9585 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9587 "mrbgems/mruby-compiler/core/y.tab.c" break; case 523: -#line 3739 "mrbgems/mruby-compiler/core/parse.y" +#line 3741 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 9593 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9595 "mrbgems/mruby-compiler/core/y.tab.c" break; case 524: #line 3745 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 9601 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9603 "mrbgems/mruby-compiler/core/y.tab.c" break; case 525: -#line 3749 "mrbgems/mruby-compiler/core/parse.y" +#line 3751 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, 0); + (yyval.nd) = (yyvsp[0].nd); } -#line 9609 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9611 "mrbgems/mruby-compiler/core/y.tab.c" break; case 526: #line 3755 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 9617 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9619 "mrbgems/mruby-compiler/core/y.tab.c" break; case 527: -#line 3759 "mrbgems/mruby-compiler/core/parse.y" +#line 3761 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9625 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9627 "mrbgems/mruby-compiler/core/y.tab.c" break; case 528: -#line 3763 "mrbgems/mruby-compiler/core/parse.y" +#line 3765 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9633 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9635 "mrbgems/mruby-compiler/core/y.tab.c" break; case 529: -#line 3767 "mrbgems/mruby-compiler/core/parse.y" +#line 3769 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 9641 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9643 "mrbgems/mruby-compiler/core/y.tab.c" break; case 530: -#line 3771 "mrbgems/mruby-compiler/core/parse.y" +#line 3773 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9649 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9651 "mrbgems/mruby-compiler/core/y.tab.c" break; case 531: -#line 3775 "mrbgems/mruby-compiler/core/parse.y" +#line 3777 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9657 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9659 "mrbgems/mruby-compiler/core/y.tab.c" break; case 532: -#line 3779 "mrbgems/mruby-compiler/core/parse.y" +#line 3781 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9665 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9667 "mrbgems/mruby-compiler/core/y.tab.c" break; case 533: -#line 3783 "mrbgems/mruby-compiler/core/parse.y" +#line 3785 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 9673 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9675 "mrbgems/mruby-compiler/core/y.tab.c" break; case 534: -#line 3787 "mrbgems/mruby-compiler/core/parse.y" +#line 3789 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9681 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9683 "mrbgems/mruby-compiler/core/y.tab.c" break; case 535: -#line 3791 "mrbgems/mruby-compiler/core/parse.y" +#line 3793 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9689 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9691 "mrbgems/mruby-compiler/core/y.tab.c" break; case 536: -#line 3795 "mrbgems/mruby-compiler/core/parse.y" +#line 3797 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 9697 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9699 "mrbgems/mruby-compiler/core/y.tab.c" break; case 537: -#line 3799 "mrbgems/mruby-compiler/core/parse.y" +#line 3801 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9705 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9707 "mrbgems/mruby-compiler/core/y.tab.c" break; case 538: -#line 3803 "mrbgems/mruby-compiler/core/parse.y" +#line 3805 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9713 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9715 "mrbgems/mruby-compiler/core/y.tab.c" break; case 539: -#line 3807 "mrbgems/mruby-compiler/core/parse.y" +#line 3809 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9721 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9723 "mrbgems/mruby-compiler/core/y.tab.c" break; case 540: -#line 3811 "mrbgems/mruby-compiler/core/parse.y" +#line 3813 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + } +#line 9731 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 541: +#line 3817 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(and)); (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); } -#line 9730 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9740 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 541: -#line 3818 "mrbgems/mruby-compiler/core/parse.y" + case 542: +#line 3824 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a constant"); (yyval.nd) = 0; } -#line 9739 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9749 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 542: -#line 3823 "mrbgems/mruby-compiler/core/parse.y" + case 543: +#line 3829 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be an instance variable"); (yyval.nd) = 0; } -#line 9748 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9758 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 543: -#line 3828 "mrbgems/mruby-compiler/core/parse.y" + case 544: +#line 3834 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a global variable"); (yyval.nd) = 0; } -#line 9757 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9767 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 544: -#line 3833 "mrbgems/mruby-compiler/core/parse.y" + case 545: +#line 3839 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a class variable"); (yyval.nd) = 0; } -#line 9766 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9776 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 545: -#line 3838 "mrbgems/mruby-compiler/core/parse.y" + case 546: +#line 3844 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a numbered parameter"); (yyval.nd) = 0; } -#line 9775 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 546: -#line 3845 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = 0; - } -#line 9783 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9785 "mrbgems/mruby-compiler/core/y.tab.c" break; case 547: -#line 3849 "mrbgems/mruby-compiler/core/parse.y" +#line 3851 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.id) = 0; + } +#line 9793 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 548: +#line 3855 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9792 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 548: -#line 3856 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_arg(p, (yyvsp[0].id)); - } -#line 9800 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9802 "mrbgems/mruby-compiler/core/y.tab.c" break; case 549: -#line 3860 "mrbgems/mruby-compiler/core/parse.y" +#line 3862 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = local_switch(p); + (yyval.nd) = new_arg(p, (yyvsp[0].id)); } -#line 9808 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9810 "mrbgems/mruby-compiler/core/y.tab.c" break; case 550: -#line 3864 "mrbgems/mruby-compiler/core/parse.y" +#line 3866 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car); - local_resume(p, (yyvsp[-2].nd)); + (yyval.nd) = local_switch(p); } -#line 9817 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9818 "mrbgems/mruby-compiler/core/y.tab.c" break; case 551: -#line 3871 "mrbgems/mruby-compiler/core/parse.y" +#line 3870 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1((yyvsp[0].nd)); + (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car); + local_resume(p, (yyvsp[-2].nd)); + local_add_f(p, 0); } -#line 9825 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9828 "mrbgems/mruby-compiler/core/y.tab.c" break; case 552: -#line 3875 "mrbgems/mruby-compiler/core/parse.y" +#line 3878 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9833 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9836 "mrbgems/mruby-compiler/core/y.tab.c" break; case 553: -#line 3881 "mrbgems/mruby-compiler/core/parse.y" +#line 3882 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 9844 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 554: +#line 3888 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[-1].id)); local_nest(p); (yyval.id) = (yyvsp[-1].id); } -#line 9843 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 554: -#line 3889 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); - local_unnest(p); - } -#line 9853 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9854 "mrbgems/mruby-compiler/core/y.tab.c" break; case 555: -#line 3897 "mrbgems/mruby-compiler/core/parse.y" +#line 3896 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9863 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9864 "mrbgems/mruby-compiler/core/y.tab.c" break; case 556: -#line 3905 "mrbgems/mruby-compiler/core/parse.y" +#line 3904 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1((yyvsp[0].nd)); + void_expr_error(p, (yyvsp[0].nd)); + (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); + local_unnest(p); } -#line 9871 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9874 "mrbgems/mruby-compiler/core/y.tab.c" break; case 557: -#line 3909 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9879 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 558: -#line 3915 "mrbgems/mruby-compiler/core/parse.y" +#line 3912 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9887 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9882 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 559: -#line 3919 "mrbgems/mruby-compiler/core/parse.y" + case 558: +#line 3916 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9895 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9890 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 562: -#line 3929 "mrbgems/mruby-compiler/core/parse.y" + case 559: +#line 3922 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list1((yyvsp[0].nd)); + } +#line 9898 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 560: +#line 3926 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 9906 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 563: +#line 3936 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9904 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9915 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 563: -#line 3934 "mrbgems/mruby-compiler/core/parse.y" + case 564: +#line 3941 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mul); local_add_f(p, (yyval.id)); } -#line 9913 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 566: -#line 3945 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = (yyvsp[0].id); - } -#line 9921 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9924 "mrbgems/mruby-compiler/core/y.tab.c" break; case 567: -#line 3949 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = intern_op(and); - } -#line 9929 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 568: -#line 3955 "mrbgems/mruby-compiler/core/parse.y" +#line 3952 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9937 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9932 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 568: +#line 3956 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.id) = intern_op(and); + } +#line 9940 "mrbgems/mruby-compiler/core/y.tab.c" break; case 569: -#line 3959 "mrbgems/mruby-compiler/core/parse.y" +#line 3962 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.id) = 0; + (yyval.id) = (yyvsp[0].id); } -#line 9945 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9948 "mrbgems/mruby-compiler/core/y.tab.c" break; case 570: -#line 3965 "mrbgems/mruby-compiler/core/parse.y" +#line 3966 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.id) = 0; + } +#line 9956 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 571: +#line 3972 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 9954 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 571: -#line 3969 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_BEG;} -#line 9960 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9965 "mrbgems/mruby-compiler/core/y.tab.c" break; case 572: -#line 3970 "mrbgems/mruby-compiler/core/parse.y" +#line 3976 "mrbgems/mruby-compiler/core/parse.y" + {p->lstate = EXPR_BEG;} +#line 9971 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 573: +#line 3977 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-1].nd) == 0) { yyerror(p, "can't define singleton method for ()."); @@ -9983,63 +9994,63 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 9987 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 574: -#line 3996 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 9995 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9998 "mrbgems/mruby-compiler/core/y.tab.c" break; case 575: -#line 4002 "mrbgems/mruby-compiler/core/parse.y" +#line 4003 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-1].nd); + } +#line 10006 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 576: +#line 4009 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 10004 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 576: -#line 4007 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 10012 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10015 "mrbgems/mruby-compiler/core/y.tab.c" break; case 577: -#line 4013 "mrbgems/mruby-compiler/core/parse.y" +#line 4014 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 10023 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 578: +#line 4020 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 10022 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10033 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 578: -#line 4019 "mrbgems/mruby-compiler/core/parse.y" + case 579: +#line 4026 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 10031 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 579: -#line 4024 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(new_sym(p, (yyvsp[-1].id)), label_reference(p, (yyvsp[-1].id))); - } -#line 10039 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10042 "mrbgems/mruby-compiler/core/y.tab.c" break; case 580: -#line 4028 "mrbgems/mruby-compiler/core/parse.y" +#line 4031 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = cons(new_sym(p, (yyvsp[-1].id)), label_reference(p, (yyvsp[-1].id))); + } +#line 10050 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 581: +#line 4035 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); if (typen((yyvsp[-2].nd)->car) == NODE_DSTR) { @@ -10049,67 +10060,67 @@ yyreduce: (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd)); } } -#line 10053 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10064 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 581: -#line 4038 "mrbgems/mruby-compiler/core/parse.y" + case 582: +#line 4045 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd)); } -#line 10062 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 594: -#line 4065 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.num) = '.'; - } -#line 10070 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10073 "mrbgems/mruby-compiler/core/y.tab.c" break; case 595: -#line 4069 "mrbgems/mruby-compiler/core/parse.y" +#line 4072 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.num) = '.'; + } +#line 10081 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 596: +#line 4076 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = 0; } -#line 10078 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10089 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 597: -#line 4076 "mrbgems/mruby-compiler/core/parse.y" + case 598: +#line 4083 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = tCOLON2; } -#line 10086 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10097 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 606: -#line 4097 "mrbgems/mruby-compiler/core/parse.y" + case 607: +#line 4104 "mrbgems/mruby-compiler/core/parse.y" {yyerrok;} -#line 10092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10103 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 608: -#line 4102 "mrbgems/mruby-compiler/core/parse.y" + case 609: +#line 4109 "mrbgems/mruby-compiler/core/parse.y" { p->lineno += (yyvsp[0].num); p->column = 0; } -#line 10101 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10112 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 612: -#line 4114 "mrbgems/mruby-compiler/core/parse.y" + case 613: +#line 4121 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 10109 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10120 "mrbgems/mruby-compiler/core/y.tab.c" break; -#line 10113 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10124 "mrbgems/mruby-compiler/core/y.tab.c" default: break; } @@ -10341,7 +10352,7 @@ yyreturn: #endif return yyresult; } -#line 4118 "mrbgems/mruby-compiler/core/parse.y" +#line 4125 "mrbgems/mruby-compiler/core/parse.y" #define pylval (*((YYSTYPE*)(p->ylval))) From c627e3b2abb031f3b93d9be022ee4baa3e70bd03 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 3 Mar 2022 14:46:54 +0900 Subject: [PATCH 04/22] codegen.c: fix a bug in `super` with keyword arguments; fix #5660 --- mrbgems/mruby-compiler/core/codegen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 3504e6062..2d02ad87b 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2851,7 +2851,7 @@ codegen(codegen_scope *s, node *tree, int val) } } /* keyword arguments */ - if (s2 && (s2->ainfo & 0x1) && tree->cdr->car) { + if (tree->cdr->car) { nk = gen_hash(s, tree->cdr->car->cdr, VAL, 14); if (nk < 0) {st++; nk = 15;} else st += nk*2; From eaadc5e79feab2f5a1b1dad59c17da04eb39b713 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 25 Mar 2022 07:45:06 +0900 Subject: [PATCH 05/22] parse.y: empty here-doc delimiter caused infinite loop; fix #5676 --- mrbgems/mruby-compiler/core/parse.y | 2 +- mrbgems/mruby-compiler/core/y.tab.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index e443312d7..98b7cffbc 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -4856,7 +4856,7 @@ parse_string(parser_state *p) --len; } } - if ((len-1 == hinf->term_len) && (strncmp(s, hinf->term, len-1) == 0)) { + if (hinf->term_len > 0 && len-1 == hinf->term_len && strncmp(s, hinf->term, len-1) == 0) { heredoc_remove_indent(p, hinf); return tHEREDOC_END; } diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 948f80350..6c86c0ae3 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -11087,7 +11087,7 @@ parse_string(parser_state *p) --len; } } - if ((len-1 == hinf->term_len) && (strncmp(s, hinf->term, len-1) == 0)) { + if (hinf->term_len > 0 && len-1 == hinf->term_len && strncmp(s, hinf->term, len-1) == 0) { heredoc_remove_indent(p, hinf); return tHEREDOC_END; } From f71d3896497abc0c90b8df43393a4b861e5a3aa6 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 26 Mar 2022 11:10:12 +0900 Subject: [PATCH 06/22] codegen.c: fix the negative division regression; fix #5678 --- mrbgems/mruby-compiler/core/codegen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 2d02ad87b..70404e17a 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -839,7 +839,7 @@ gen_muldiv(codegen_scope *s, uint8_t op, uint16_t dst) } else { /* OP_DIV */ if (n0 == MRB_INT_MIN && n == -1) goto normal; - n = n0 / n; + n = mrb_div_int(s->mrb, n0, n); } s->pc = addr_pc(s, data0.addr); gen_int(s, dst, n); From 7d3bc5c3d799ce1ace8d4324c274a8cafa965628 Mon Sep 17 00:00:00 2001 From: mimaki Date: Thu, 31 Mar 2022 15:17:17 +0900 Subject: [PATCH 07/22] Update version to `3.1.0RC2`. --- README.md | 2 +- include/mruby/version.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 30e3277fa..5e82f727f 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ of the Ministry of Economy, Trade and Industry of Japan. ## How to get mruby -The release candidate version 3.1.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.1.0-rc.zip](https://github.com/mruby/mruby/archive/3.1.0-rc.zip) +The release candidate version 3.1.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.1.0-rc2.zip](https://github.com/mruby/mruby/archive/3.1.0-rc2.zip) The latest development version of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/zipball/master](https://github.com/mruby/mruby/zipball/master) diff --git a/include/mruby/version.h b/include/mruby/version.h index 84af1614d..a13f094e2 100644 --- a/include/mruby/version.h +++ b/include/mruby/version.h @@ -57,7 +57,7 @@ MRB_BEGIN_DECL /* * Patch level string. (optional) */ -#define MRUBY_PATCHLEVEL_STR "RC" +#define MRUBY_PATCHLEVEL_STR "RC2" #ifndef MRUBY_PATCHLEVEL_STR # if MRUBY_PATCHLEVEL < 0 @@ -85,12 +85,12 @@ MRB_BEGIN_DECL /* * Release month. */ -#define MRUBY_RELEASE_MONTH 1 +#define MRUBY_RELEASE_MONTH 3 /* * Release day. */ -#define MRUBY_RELEASE_DAY 7 +#define MRUBY_RELEASE_DAY 31 /* * Release date as a string. From 84b0ba3f8dc05d8c41f617d721ee28089bac44f5 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 9 May 2022 17:46:26 +0900 Subject: [PATCH 08/22] doc/mruby3.1.md: update for the release. --- doc/mruby3.1.md | 156 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 114 insertions(+), 42 deletions(-) diff --git a/doc/mruby3.1.md b/doc/mruby3.1.md index 0c9ba8108..61c11803c 100644 --- a/doc/mruby3.1.md +++ b/doc/mruby3.1.md @@ -1,48 +1,91 @@ # User visible changes in `mruby3.1` from `mruby3.0` -# Build System +# New Features -## `build_config` directory +## Core Language Features -Several configurations for new platforms are added: +### Keyword Arguments -* `cross-mingw-winetest.rb` -* `cross-mingw.rb` -* `nintendo_switch.rb` -* `serenity.rb` +CRuby3.0 compatible keyword arguments are introduced. +Keyword arguments are basically separated from ordinal arguments. -Some new configurations for added for convenience. +### Other Language Enhancement -* `minimal`: minimal configuration -* `host-f32`: compiles with `mrb_float` as 32 bit `float` -* `host-nofloat`: compiles with no float configuration +- Implement endless-def [Ruby:Feature#16746](https://bugs.ruby-lang.org/issues/16746) +- Replace `R-assignment` by `single-line pattern matching` [Ruby:Feature#15921](https://bugs.ruby-lang.org/issues/15921) +- Support squiggly heredocs. [#5246](https://github.com/mruby/mruby/pull/5246) +- Hash value omission [Ruby:Feature#14579](https://bugs.ruby-lang.org/issues/14579) -And `android_arm64-v8a.rb` was renamed to `android_arm64_v8a.rb` for consistency. - -# Configuration Options Changed +## Configuration Options Changed Some configuration macros are available: -* `MRB_WORDBOX_NO_FLOAT_TRUNCATE`: by default, float values are packed in the word if possible, but define this macro to allocate float values in the heap. -* `MRB_USE_RO_DATA_P_ETEXT`: define this macro if `_etext` is available on your platform. -* `MRB_NO_DEFAULT_RO_DATA_P`: define this macro to avoid using predefined `mrb_ro_data_p()` function +- `MRB_WORDBOX_NO_FLOAT_TRUNCATE`: by default, float values are packed in the word if possible, but define this macro to allocate float values in the heap. +- `MRB_USE_RO_DATA_P_ETEXT`: define this macro if `_etext` is available on your platform. +- `MRB_NO_DEFAULT_RO_DATA_P`: define this macro to avoid using predefined `mrb_ro_data_p()` function -# Language Changes +--- -## Keyword Arguments +# Updated Features -CRuby3.0 compatible keyword arguments are introduced. -Keyword arguments are basically separated from ordinal arguments +## New build configurations -## New Methods +We have added several new build configurations in the `build_config` directory. -* `Array#product` -* `Array#repeated_combination` -* `Array#repeated_permutation` -* `Random.bytes` -* `Random#bytes` +- `cross-mingw-winetest.rb` +- `cross-mingw.rb` +- `nintendo_switch.rb` +- `serenity.rb` +- `minimal`: minimal configuration +- `host-f32`: compiles with `mrb_float` as 32 bit `float` +- `host-nofloat`: compiles with no float configuration +- `android_arm64_v8a.rb`: renamed from `android_arm64-v8a.rb` -# Internal Changes +## Core Libraries + +### New Methods + +- `Array#product` +- `Array#repeated_combination` +- `Array#repeated_permutation` +- `Kernel#__ENCODING__` +- `Random.bytes` +- `Random#bytes` +- `String#center` + +### New Gem Enhancement + +- `mrbgems/mruby-pack` now supports `M` directive (Q encoding) +- `mrbgems/mruby-pack` now supports `X` directive (back-up by bytes) +- `mrbgems/mruby-pack` now supports `@` directive (absolute position) +- `mrbgems/mruby-pack` now supports `w` directive (BER compression) + +## Tools + +- `mruby-config` now supports `--cc` and `--ld` options. +- Remove `OP_` prefix from `mruby -v` code dump output. +- Prohibit use of `OP_EXT{1,2,3}` by `mrbc` with `--no-ext-ops` option. + +## Features for mruby Developer + +- Add new specifier `c` to `mrb_get_args()` for receive Class/Module. + +--- + +# Breaking Changes + +## Incompatibly Changed Methods + +- `Kernel#printf` (`mruby-sprintf`) Format specifiers `%a` and `%A` are removed. +- `Kernel#puts` (`mruby-print`) Now expand Array arguments. + +## mruby VM and bytecode + +Due to improvements in the binary format, mruby binaries are no longer backward compatible. +To run the mruby binaries on mruby 3.1, recompile with the mruby 3.1 `mrbc`. + +- Upgrade mruby VM version `RITE_VM_VER` to `0300` (means mruby 3.0 or after). +- Upgrade mruby binary version `RITE_BINARY_FORMAT_VER` to `0300`. ## Reintroduced Instructions @@ -53,18 +96,18 @@ Keyword arguments are basically separated from ordinal arguments `mruby3.1` removed following instructions. -* `OP_LOADL16` -* `OP_LOADSYM16` -* `OP_STRING16` -* `OP_LAMBDA16` -* `OP_BLOCK16` -* `OP_METHOD16` -* `OP_EXEC16` +- `OP_LOADL16` +- `OP_LOADSYM16` +- `OP_STRING16` +- `OP_LAMBDA16` +- `OP_BLOCK16` +- `OP_METHOD16` +- `OP_EXEC16` Those instructions are no longer needed by reintroduction of extension instructions. -* `OP_SENDV` -* `OP_SENDVB` +- `OP_SENDV` +- `OP_SENDVB` Those instructions for method calls with variable number of arguments are no longer needed. They are covered by `OP_SEND` instruction with `n=15`. @@ -72,10 +115,11 @@ Those instructions for method calls with variable number of arguments are no lon `mruby3.1` introduces following new instructions. -* `OP_GETIDX`: takes 2 operands `a[b]` -* `OP_SETIDX`: takes 3 operands `a[b]=c` -* `OP_SSEND`: takes 3 operands `a=self.b(c...)`; see `OP_SEND` -* `OP_SSENDB`: takes 3 operands `a=self.b(c...){...}`; see `OP_SEND` +- `OP_GETIDX`: takes 1 operands `R[a][a+1]` +- `OP_SETIDX`: takes 1 operands `R[a][a+1]=R[a+2]` +- `OP_SSEND`: takes 3 operands `a=self.b(c...)`; see `OP_SEND` +- `OP_SSENDB`: takes 3 operands `a=self.b(c...){...}`; see `OP_SEND` +- `OP_SYMBOL`: takes 2 operands `R[a] = intern(Pool[b])` ### `OP_GETIDX` and `OP_SETIDX` @@ -85,6 +129,10 @@ Execute `obj[int]` and `obj[int] = value` respectively, where `obj` is `string|a They are similar to `OP_SEND` and `OP_SENDB` respectively. They initialize the `R[a]` by `self` first so that we can skip one `OP_LOADSELF` instruction for each call. +### `OP_SYMBOL` + +Extracts the character string placed in the pool as a symbol. + ## Changed Instructions ### `OP_SEND` and `OP_SENDB` @@ -114,7 +162,7 @@ If the size of `mrb_float` and `mrb_int` are same, the last 2 bits in the `mrb_f Previous NaN boxing packs values in NaN representation, but pointer retrievals are far more frequent than floating point number references. So we add constant offset to NaN representation to clear higher bits of pointer representation. This representation is called "Favor Pointer" NaN Boxing. -Also, previous NaN boxing limit the size of `mrb_int` to 4 bytes (32 bits) to fit in NaN values. Now we allocates integer values in the heap, if the value does not fit in the 32 bit range, just like we did in Word Boxing. +Also, previous NaN boxing limit the size of `mrb_int` to 4 bytes (32 bits) to fit in NaN values. Now we allocate integer values in the heap, if the value does not fit in the 32 bit range, just like we did in Word Boxing. ## Constant Folding @@ -146,3 +194,27 @@ GETIV R1 :@foo ## `String#hash` now use `FNV1a` algorithm For better and faster hash values. + +--- + +# Major bug fixes + +- Fix infinite recursive call bugs in integer division [98799aa6](https://github.com/mruby/mruby/commit/98799aa6) +- Fix to raise TypeError with super inside instance_eval / class_eval [#5476](https://github.com/mruby/mruby/pull/5476) +- Fix to call `method_added` hooks on method definitions; [#2339](https://github.com/mruby/mruby/pull/2339) +- Fix a potential buffer overflow in `time_zonename` [26340a88](https://github.com/mruby/mruby/commit/26340a88) +- Fix `Module.instance_eval` bug [#5528](https://github.com/mruby/mruby/pull/5528) +- Fix fix `M` packing bug [bfe2bd49](https://github.com/mruby/mruby/commit/bfe2bd49) +- Fix a bug regarding attribute assignment with kargs [de2b4bd0](https://github.com/mruby/mruby/commit/de2b4bd0) +- Fix SIGSEGV with mrbgems/mruby-method [#5580](https://github.com/mruby/mruby/pull/5580) +- Fix print error before cleanup in `codegen_error()` [#5603](https://github.com/mruby/mruby/pull/5603) +- Fix a bug in unpacking BER [#5611](https://github.com/mruby/mruby/pull/5611) +- Fix a bug with numbered parameters as arguments [#5605](https://github.com/mruby/mruby/pull/5605) +- Fix `mrb_ary_shift_m` initialization bug [27d1e013](https://github.com/mruby/mruby/commit/27d1e013) +- Fix keyword argument with `super` [#5628](https://github.com/mruby/mruby/pull/5628) +- Fix a bug with numbered parameters on toplevel [7e7f1b2f](https://github.com/mruby/mruby/commit/7e7f1b2f) +- Fix keyword argument bug [#5632](https://github.com/mruby/mruby/issues/5632) +- Fix multiple assignments in parameters [#5647](https://github.com/mruby/mruby/issues/5647) +- Fix keyword parameters not passing through super [#5660](https://github.com/mruby/mruby/issues/5660) +- Fix infinite loop from unclosed here-doc [#5676](https://github.com/mruby/mruby/issues/5676) +- Fix negative integer division bug [#5678](https://github.com/mruby/mruby/issues/5678) From 15f597e83515e3f32fcb0dae15eb54cdc939fa6f Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sun, 16 Jan 2022 22:22:46 +0900 Subject: [PATCH 09/22] class.c: add `obj->c` check before `prepare_singleton_class()`. Address CVE-2022-0240 --- src/class.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/class.c b/src/class.c index ec9c648e5..8751dcaf0 100644 --- a/src/class.c +++ b/src/class.c @@ -357,6 +357,7 @@ prepare_singleton_class(mrb_state *mrb, struct RBasic *o) { struct RClass *sc, *c; + mrb_assert(o->c); if (o->c->tt == MRB_TT_SCLASS) return; sc = MRB_OBJ_ALLOC(mrb, MRB_TT_SCLASS, mrb->class_class); sc->flags |= MRB_FL_CLASS_IS_INHERITED; @@ -1682,6 +1683,7 @@ mrb_singleton_class_ptr(mrb_state *mrb, mrb_value v) break; } obj = mrb_basic_ptr(v); + if (obj->c == NULL) return NULL; prepare_singleton_class(mrb, obj); return obj->c; } From beef5d37adadade30c278ea7e365162ffa2050f8 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 21 Jan 2022 15:42:51 +0900 Subject: [PATCH 10/22] codegen.c: no `OP_HASHADD` required when `val` is false. Address CVE-2022-0326 --- mrbgems/mruby-compiler/core/codegen.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 70404e17a..30366970e 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1644,14 +1644,13 @@ gen_hash(codegen_scope *s, node *tree, int val, int limit) } } if (update) { - if (len > 0) { + if (val && len > 0) { pop_n(len*2+1); genop_2(s, OP_HASHADD, cursp(), len); push(); } return -1; /* variable length */ } - if (update) return -1; return len; } From c9ab1e601d81e7ce54a53c16f582fedc589c06e1 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 3 Feb 2022 10:40:05 +0900 Subject: [PATCH 11/22] codegen.c: fixed a bug in hash code generation with `!val`. Address CVE-2022-0481 --- mrbgems/mruby-compiler/core/codegen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 30366970e..1575bf523 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1603,7 +1603,7 @@ gen_hash(codegen_scope *s, node *tree, int val, int limit) while (tree) { if (nint(tree->car->car->car) == NODE_KW_REST_ARGS) { - if (len > 0) { + if (val && len > 0) { pop_n(len*2); if (!update) { genop_2(s, OP_HASH, cursp(), len); @@ -1615,7 +1615,7 @@ gen_hash(codegen_scope *s, node *tree, int val, int limit) push(); } codegen(s, tree->car->cdr, val); - if (len > 0 || update) { + if (val && (len > 0 || update)) { pop(); pop(); genop_1(s, OP_HASHCAT, cursp()); push(); From d823045af43869171e17020ec995a878d31c5371 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 18 Feb 2022 14:38:07 +0900 Subject: [PATCH 12/22] vm.c: packed arguments length may be zero for `send` method. Address CVE-2022-0631 --- src/vm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vm.c b/src/vm.c index b0cd9428d..b696f89ba 100644 --- a/src/vm.c +++ b/src/vm.c @@ -689,9 +689,11 @@ mrb_f_send(mrb_state *mrb, mrb_value self) regs = mrb->c->ci->stack+1; if (n == 0) { + argnum_error: mrb_argnum_error(mrb, 0, 1, -1); } else if (n == 15) { + if (RARRAY_LEN(regs[0]) == 0) goto argnum_error; name = mrb_obj_to_sym(mrb, RARRAY_PTR(regs[0])[0]); } else { From 2e48070ab6c16f0183363703ca93d20b03d72961 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 19 Feb 2022 16:13:16 +0900 Subject: [PATCH 13/22] codegen.c: adjust stack position for `OP_SUPER` instruction. Address CVE-2022-0632 --- mrbgems/mruby-compiler/core/codegen.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 1575bf523..98721496e 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2860,19 +2860,20 @@ codegen(codegen_scope *s, node *tree, int val) if (tree->cdr->cdr) { codegen(s, tree->cdr->cdr, VAL); } - else if (!s2) {/* super at top-level */ - push(); /* no need to push block */ - } + else if (s2) gen_blkmove(s, s2->ainfo, lv); else { - gen_blkmove(s, s2->ainfo, lv); + genop_1(s, OP_LOADNIL, cursp()); + push(); } - st++; } else { - if (!s2) push(); - else gen_blkmove(s, s2->ainfo, lv); - st++; + if (s2) gen_blkmove(s, s2->ainfo, lv); + else { + genop_1(s, OP_LOADNIL, cursp()); + push(); + } } + st++; pop_n(st+1); genop_2(s, OP_SUPER, cursp(), n); if (val) push(); @@ -3124,6 +3125,7 @@ codegen(codegen_scope *s, node *tree, int val) codegen_error(s, "no anonymous block argument"); } gen_move(s, cursp(), idx, val); + if (val) push(); } else { codegen(s, tree, val); From 96cfde34883c3dda5a58366bb1cbb45a6d024436 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 9 Mar 2022 15:20:13 +0900 Subject: [PATCH 14/22] fiber.c: should pack 15+ arguments in an array. Address CVE-2022-0890 --- mrbgems/mruby-fiber/src/fiber.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c index 0d85bedad..322ed36ea 100644 --- a/mrbgems/mruby-fiber/src/fiber.c +++ b/mrbgems/mruby-fiber/src/fiber.c @@ -208,15 +208,22 @@ fiber_switch(mrb_state *mrb, mrb_value self, mrb_int len, const mrb_value *a, mr if (!c->ci->proc) { mrb_raise(mrb, E_FIBER_ERROR, "double resume (current)"); } - mrb_stack_extend(mrb, len+2); /* for receiver and (optional) block */ - b = c->stbase+1; - e = b + len; - while (bci--; /* pop dummy callinfo */ } + if (len >= 15) { + mrb_stack_extend(mrb, 3); /* for receiver, args and (optional) block */ + c->stbase[1] = mrb_ary_new_from_values(mrb, len, a); + len = 15; + } + else { + mrb_stack_extend(mrb, len+2); /* for receiver and (optional) block */ + b = c->stbase+1; + e = b + len; + while (bcibase->n = len; value = c->stbase[0] = MRB_PROC_ENV(c->cibase->proc)->stack[0]; } From 6db4a58fbd4d37c08c17ae152622f336ff964ad9 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 25 Mar 2022 12:42:12 +0900 Subject: [PATCH 15/22] vm.c: stack may be reallocated in functions calls. Probably due to recursive VM calls via `mrb_funcall()`. Address CVE-2022-1071 --- src/vm.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/vm.c b/src/vm.c index b696f89ba..bb804be68 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1361,14 +1361,16 @@ RETRY_TRY_BLOCK: regs[a] = mrb_ary_entry(va, mrb_integer(vb)); break; case MRB_TT_HASH: - regs[a] = mrb_hash_get(mrb, va, vb); + va = mrb_hash_get(mrb, va, vb); + regs[a] = va; break; case MRB_TT_STRING: switch (mrb_type(vb)) { case MRB_TT_INTEGER: case MRB_TT_STRING: case MRB_TT_RANGE: - regs[a] = mrb_str_aref(mrb, va, vb, mrb_undef_value()); + va = mrb_str_aref(mrb, va, vb, mrb_undef_value()); + regs[a] = va; break; default: goto getidx_fallback; @@ -1390,7 +1392,8 @@ RETRY_TRY_BLOCK: } CASE(OP_GETCONST, BB) { - regs[a] = mrb_vm_const_get(mrb, syms[b]); + mrb_value v = mrb_vm_const_get(mrb, syms[b]); + regs[a] = v; NEXT; } @@ -1400,7 +1403,8 @@ RETRY_TRY_BLOCK: } CASE(OP_GETMCNST, BB) { - regs[a] = mrb_const_get(mrb, regs[a], syms[b]); + mrb_value v = mrb_const_get(mrb, regs[a], syms[b]); + regs[a] = v; NEXT; } @@ -2027,14 +2031,15 @@ RETRY_TRY_BLOCK: CASE(OP_KARG, BB) { mrb_value k = mrb_symbol_value(syms[b]); mrb_int kidx = mrb_ci_kidx(mrb->c->ci); - mrb_value kdict; + mrb_value kdict, v; if (kidx < 0 || !mrb_hash_p(kdict=regs[kidx]) || !mrb_hash_key_p(mrb, kdict, k)) { mrb_value str = mrb_format(mrb, "missing keyword: %v", k); mrb_exc_set(mrb, mrb_exc_new_str(mrb, E_ARGUMENT_ERROR, str)); goto L_RAISE; } - regs[a] = mrb_hash_get(mrb, kdict, k); + v = mrb_hash_get(mrb, kdict, k); + regs[a] = v; mrb_hash_delete_key(mrb, kdict, k); NEXT; } From 2cbfc2f35033ba4cdd80e4be43826b907cd1d0dc Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 26 Mar 2022 21:06:02 +0900 Subject: [PATCH 16/22] vm.c: vm.c: stack may be reallocated in functions calls; aaa28a5 `mrb_range_new()` also calls VM recursively. Address CVE-2022-1106 --- src/vm.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vm.c b/src/vm.c index bb804be68..e4a6cd67c 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2831,13 +2831,15 @@ RETRY_TRY_BLOCK: } CASE(OP_RANGE_INC, B) { - regs[a] = mrb_range_new(mrb, regs[a], regs[a+1], FALSE); + mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], FALSE); + regs[a] = v; mrb_gc_arena_restore(mrb, ai); NEXT; } CASE(OP_RANGE_EXC, B) { - regs[a] = mrb_range_new(mrb, regs[a], regs[a+1], TRUE); + mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], TRUE); + regs[a] = v; mrb_gc_arena_restore(mrb, ai); NEXT; } From 82d3b3d11b34147c55a3d32aa0b77a3de883f712 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 1 Apr 2022 16:40:06 +0900 Subject: [PATCH 17/22] vm.c: target class may be NULL. Address CVE-2022-1201 --- src/vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index e4a6cd67c..8a79b950c 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1758,7 +1758,7 @@ RETRY_TRY_BLOCK: } else if (target_class->tt == MRB_TT_MODULE) { target_class = mrb_vm_ci_target_class(ci); - if (target_class->tt != MRB_TT_ICLASS) { + if (!target_class || target_class->tt != MRB_TT_ICLASS) { goto super_typeerror; } } From 11679e3f3a5e7680895e19f5cbc7b306be6c9d45 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 22 Apr 2022 08:32:18 +0900 Subject: [PATCH 18/22] vm.c: check if target_class is NULL (when prepended). Address CVE-2022-1427 --- src/vm.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/vm.c b/src/vm.c index 8a79b950c..3501abf57 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1753,10 +1753,7 @@ RETRY_TRY_BLOCK: mrb_exc_set(mrb, exc); goto L_RAISE; } - if (target_class->flags & MRB_FL_CLASS_IS_PREPENDED) { - target_class = mrb_vm_ci_target_class(ci); - } - else if (target_class->tt == MRB_TT_MODULE) { + if ((target_class->flags & MRB_FL_CLASS_IS_PREPENDED) || target_class->tt == MRB_TT_MODULE) { target_class = mrb_vm_ci_target_class(ci); if (!target_class || target_class->tt != MRB_TT_ICLASS) { goto super_typeerror; From b82065aa9219b015ce2227004fe14652ca24036e Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 10 Feb 2022 11:25:45 +0900 Subject: [PATCH 19/22] load.c: should check if length of irep sections are valid. --- src/load.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/load.c b/src/load.c index 9b8ffa384..263c958db 100644 --- a/src/load.c +++ b/src/load.c @@ -577,7 +577,8 @@ read_irep(mrb_state *mrb, const uint8_t *bin, size_t bufsize, uint8_t flags) } bin += sizeof(struct rite_binary_header); - do { + bin_size -= sizeof(struct rite_binary_header); + while (bin_size > sizeof(struct rite_section_header)) { section_header = (const struct rite_section_header *)bin; if (memcmp(section_header->section_ident, RITE_SECTION_IREP_IDENT, sizeof(section_header->section_ident)) == 0) { irep = read_section_irep(mrb, bin, flags, &proc); @@ -597,8 +598,14 @@ read_irep(mrb_state *mrb, const uint8_t *bin, size_t bufsize, uint8_t flags) return NULL; } } - bin += bin_to_uint32(section_header->section_size); - } while (memcmp(section_header->section_ident, RITE_BINARY_EOF, sizeof(section_header->section_ident)) != 0); + else if (memcmp(section_header->section_ident, RITE_BINARY_EOF, sizeof(section_header->section_ident)) != 0) { + break; + } + + uint32_t section_size = bin_to_uint32(section_header->section_size); + bin += section_size; + bin_size -= section_size; + } return proc; } From f13db72d26f2f5d12c8d6697b0f051615ec9722e Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 14 Feb 2022 16:05:54 +0900 Subject: [PATCH 20/22] load.c: add data boundary check for broken compiled binary. --- src/load.c | 80 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/src/load.c b/src/load.c index 263c958db..bb22a6130 100644 --- a/src/load.c +++ b/src/load.c @@ -59,7 +59,7 @@ str_to_double(mrb_state *mrb, const char *p) #endif static mrb_bool -read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flags, mrb_irep **irepp) +read_irep_record_1(mrb_state *mrb, const uint8_t *bin, const uint8_t *end, size_t *len, uint8_t flags, mrb_irep **irepp) { int i; const uint8_t *src = bin; @@ -102,6 +102,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag if (SIZE_ERROR_MUL(irep->ilen, sizeof(mrb_code))) { return FALSE; } + if (src + data_len > end) return FALSE; if ((flags & FLAG_SRC_MALLOC) == 0) { irep->iseq = (mrb_code*)src; irep->flags |= MRB_ISEQ_NO_FREE; @@ -117,6 +118,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag /* POOL BLOCK */ plen = bin_to_uint16(src); /* number of pool */ src += sizeof(uint16_t); + if (src > end) return FALSE; if (plen > 0) { if (SIZE_ERROR_MUL(plen, sizeof(mrb_value))) { return FALSE; @@ -130,6 +132,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag switch (tt) { /* pool data */ case IREP_TT_INT32: { + if (src + sizeof(uint32_t) > end) return FALSE; mrb_int v = (int32_t)bin_to_uint32(src); src += sizeof(uint32_t); #ifdef MRB_64BIT @@ -144,6 +147,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag case IREP_TT_INT64: #ifdef MRB_INT64 { + if (src + sizeof(uint32_t)*2 > end) return FALSE; uint64_t i64 = bin_to_uint32(src); src += sizeof(uint32_t); i64 <<= 32; @@ -160,6 +164,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag case IREP_TT_BIGINT: pool_data_len = bin_to_uint8(src); /* pool data length */ src += sizeof(uint8_t); + if (src + pool_data_len > end) return FALSE; { char *p; pool[i].tt = IREP_TT_BIGINT; @@ -172,6 +177,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag case IREP_TT_FLOAT: #ifndef MRB_NO_FLOAT + if (src + sizeof(double) > end) return FALSE; pool[i].tt = tt; pool[i].u.f = str_to_double(mrb, (const char*)src); src += sizeof(double); @@ -183,6 +189,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag case IREP_TT_STR: pool_data_len = bin_to_uint16(src); /* pool data length */ src += sizeof(uint16_t); + if (src + pool_data_len > end) return FALSE; if (st) { pool[i].tt = (pool_data_len<<2) | IREP_TT_SSTR; pool[i].u.str = (const char*)src; @@ -208,6 +215,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag /* SYMS BLOCK */ irep->slen = bin_to_uint16(src); /* syms length */ src += sizeof(uint16_t); + if (src > end) return FALSE; if (irep->slen > 0) { if (SIZE_ERROR_MUL(irep->slen, sizeof(mrb_sym))) { return FALSE; @@ -223,6 +231,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag continue; } + if (src + snl > end) return FALSE; if (flags & FLAG_SRC_MALLOC) { syms[i] = mrb_intern(mrb, (char *)src, snl); } @@ -242,10 +251,10 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag } static mrb_bool -read_irep_record(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flags, mrb_irep **irepp) +read_irep_record(mrb_state *mrb, const uint8_t *bin, const uint8_t *end, size_t *len, uint8_t flags, mrb_irep **irepp) { int ai = mrb_gc_arena_save(mrb); - mrb_bool readsuccess = read_irep_record_1(mrb, bin, len, flags, irepp); + mrb_bool readsuccess = read_irep_record_1(mrb, bin, end, len, flags, irepp); mrb_irep **reps; int i; @@ -261,7 +270,7 @@ read_irep_record(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flags, for (i=0; i<(*irepp)->rlen; i++) { size_t rlen; - readsuccess = read_irep_record(mrb, bin, &rlen, flags, &reps[i]); + readsuccess = read_irep_record(mrb, bin, end, &rlen, flags, &reps[i]); mrb_gc_arena_restore(mrb, ai); if (!readsuccess) { return FALSE; @@ -274,10 +283,9 @@ read_irep_record(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flags, } static mrb_irep* -read_section_irep(mrb_state *mrb, const uint8_t *bin, uint8_t flags, struct RProc **proc) +read_section_irep(mrb_state *mrb, const uint8_t *bin, size_t size, uint8_t flags, struct RProc **proc) { - size_t len; - + if (size < sizeof(struct rite_section_irep_header)) return NULL; /* * This proc object keeps all the data in progress to avoid memory leaks * if something goes wrong while reading irep. @@ -285,8 +293,9 @@ read_section_irep(mrb_state *mrb, const uint8_t *bin, uint8_t flags, struct RPro *proc = mrb_proc_new(mrb, NULL); mrb_irep **irepp = (mrb_irep**)&(*proc)->body.irep; + size_t len; bin += sizeof(struct rite_section_irep_header); - if (read_irep_record(mrb, bin, &len, flags, irepp)) { + if (read_irep_record(mrb, bin, bin+size, &len, flags, irepp)) { return *irepp; } else { @@ -295,7 +304,7 @@ read_section_irep(mrb_state *mrb, const uint8_t *bin, uint8_t flags, struct RPro } static int -read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t *record_len, const mrb_sym *filenames, size_t filenames_len) +read_debug_record(mrb_state *mrb, const uint8_t *start, const uint8_t *end, mrb_irep* irep, size_t *record_len, const mrb_sym *filenames, size_t filenames_len) { const uint8_t *bin = start; ptrdiff_t diff; @@ -313,13 +322,15 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * bin += sizeof(uint32_t); debug->flen = bin_to_uint16(bin); - debug->files = (mrb_irep_debug_info_file**)mrb_calloc(mrb, irep->debug_info->flen, sizeof(mrb_irep_debug_info*)); bin += sizeof(uint16_t); + if (bin > end) return MRB_DUMP_GENERAL_FAILURE; + debug->files = (mrb_irep_debug_info_file**)mrb_calloc(mrb, irep->debug_info->flen, sizeof(mrb_irep_debug_info*)); for (f_idx = 0; f_idx < debug->flen; ++f_idx) { mrb_irep_debug_info_file *file; uint16_t filename_idx; + if (bin > end) return MRB_DUMP_GENERAL_FAILURE; file = (mrb_irep_debug_info_file *)mrb_calloc(mrb, 1, sizeof(*file)); debug->files[f_idx] = file; @@ -338,9 +349,10 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * bin += sizeof(uint8_t); switch (file->line_type) { case mrb_debug_line_ary: { - uint32_t l; + size_t l = sizeof(uint16_t) * (size_t)file->line_entry_count; - file->lines.ary = (uint16_t *)mrb_malloc(mrb, sizeof(uint16_t) * (size_t)(file->line_entry_count)); + if (bin + l > end) return MRB_DUMP_GENERAL_FAILURE; + file->lines.ary = (uint16_t *)mrb_malloc(mrb, l); for (l = 0; l < file->line_entry_count; ++l) { file->lines.ary[l] = bin_to_uint16(bin); bin += sizeof(uint16_t); @@ -348,11 +360,12 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * } break; case mrb_debug_line_flat_map: { - uint32_t l; + size_t c = (size_t)file->line_entry_count; + size_t n = sizeof(mrb_irep_debug_info_line); - file->lines.flat_map = (mrb_irep_debug_info_line*)mrb_calloc( - mrb, (size_t)(file->line_entry_count), sizeof(mrb_irep_debug_info_line)); - for (l = 0; l < file->line_entry_count; ++l) { + if (bin + c*n > end) return MRB_DUMP_GENERAL_FAILURE; + file->lines.flat_map = (mrb_irep_debug_info_line*)mrb_calloc(mrb, c, n); + for (size_t l = 0; l < file->line_entry_count; ++l) { file->lines.flat_map[l].start_pos = bin_to_uint32(bin); bin += sizeof(uint32_t); file->lines.flat_map[l].line = bin_to_uint16(bin); @@ -361,7 +374,10 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * } break; case mrb_debug_line_packed_map: { - file->lines.packed_map = (uint8_t*)mrb_calloc(mrb, 1, (size_t)file->line_entry_count); + size_t l = (size_t)file->line_entry_count; + + if (bin + l > end) return MRB_DUMP_GENERAL_FAILURE; + file->lines.packed_map = (uint8_t*)mrb_calloc(mrb, 1, l); memcpy(file->lines.packed_map, bin, file->line_entry_count); bin += file->line_entry_count; } break; @@ -381,7 +397,7 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * size_t len; int ret; - ret = read_debug_record(mrb, bin, (mrb_irep*)irep->reps[i], &len, filenames, filenames_len); + ret = read_debug_record(mrb, bin, end, (mrb_irep*)irep->reps[i], &len, filenames, filenames_len); if (ret != MRB_DUMP_OK) return ret; bin += len; } @@ -394,9 +410,10 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * } static int -read_section_debug(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, uint8_t flags) +read_section_debug(mrb_state *mrb, const uint8_t *start, size_t size, mrb_irep *irep, uint8_t flags) { const uint8_t *bin; + const uint8_t *end = start + size; ptrdiff_t diff; struct rite_section_debug_header *header; uint16_t i; @@ -412,11 +429,16 @@ read_section_debug(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, uint8_t filenames_len = bin_to_uint16(bin); bin += sizeof(uint16_t); + if (bin > end) return MRB_DUMP_GENERAL_FAILURE; filenames_obj = mrb_str_new(mrb, NULL, sizeof(mrb_sym) * (size_t)filenames_len); filenames = (mrb_sym*)RSTRING_PTR(filenames_obj); for (i = 0; i < filenames_len; ++i) { uint16_t f_len = bin_to_uint16(bin); bin += sizeof(uint16_t); + if (bin + f_len > end) { + result = MRB_DUMP_GENERAL_FAILURE; + goto debug_exit; + } if (flags & FLAG_SRC_MALLOC) { filenames[i] = mrb_intern(mrb, (const char *)bin, (size_t)f_len); } @@ -426,7 +448,7 @@ read_section_debug(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, uint8_t bin += f_len; } - result = read_debug_record(mrb, bin, irep, &len, filenames, filenames_len); + result = read_debug_record(mrb, bin, end, irep, &len, filenames, filenames_len); if (result != MRB_DUMP_OK) goto debug_exit; bin += len; @@ -449,6 +471,7 @@ read_lv_record(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, size_t *rec ptrdiff_t diff; int i; + if (irep->nlocals == 0) return MRB_DUMP_GENERAL_FAILURE; irep->lv = lv = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym) * (irep->nlocals - 1)); for (i = 0; i + 1 < irep->nlocals; ++i) { @@ -482,9 +505,10 @@ read_lv_record(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, size_t *rec } static int -read_section_lv(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, uint8_t flags) +read_section_lv(mrb_state *mrb, const uint8_t *start, size_t size, mrb_irep *irep, uint8_t flags) { const uint8_t *bin; + const uint8_t *end = start + size; ptrdiff_t diff; struct rite_section_lv_header const *header; uint32_t i; @@ -502,12 +526,13 @@ read_section_lv(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, uint8_t fl syms_len = bin_to_uint32(bin); bin += sizeof(uint32_t); + if (bin > end) return MRB_DUMP_READ_FAULT; syms_obj = mrb_str_new(mrb, NULL, sizeof(mrb_sym) * (size_t)syms_len); syms = (mrb_sym*)RSTRING_PTR(syms_obj); for (i = 0; i < syms_len; ++i) { uint16_t const str_len = bin_to_uint16(bin); bin += sizeof(uint16_t); - + if (bin > end) return MRB_DUMP_READ_FAULT; syms[i] = intern_func(mrb, (const char*)bin, str_len); bin += str_len; } @@ -580,20 +605,22 @@ read_irep(mrb_state *mrb, const uint8_t *bin, size_t bufsize, uint8_t flags) bin_size -= sizeof(struct rite_binary_header); while (bin_size > sizeof(struct rite_section_header)) { section_header = (const struct rite_section_header *)bin; + uint32_t section_size = bin_to_uint32(section_header->section_size); + if (bin_size < section_size) return NULL; if (memcmp(section_header->section_ident, RITE_SECTION_IREP_IDENT, sizeof(section_header->section_ident)) == 0) { - irep = read_section_irep(mrb, bin, flags, &proc); + irep = read_section_irep(mrb, bin, bin_size, flags, &proc); if (!irep) return NULL; } else if (memcmp(section_header->section_ident, RITE_SECTION_DEBUG_IDENT, sizeof(section_header->section_ident)) == 0) { if (!irep) return NULL; /* corrupted data */ - result = read_section_debug(mrb, bin, irep, flags); + result = read_section_debug(mrb, bin, bin_size, irep, flags); if (result < MRB_DUMP_OK) { return NULL; } } else if (memcmp(section_header->section_ident, RITE_SECTION_LV_IDENT, sizeof(section_header->section_ident)) == 0) { if (!irep) return NULL; - result = read_section_lv(mrb, bin, irep, flags); + result = read_section_lv(mrb, bin, bin_size, irep, flags); if (result < MRB_DUMP_OK) { return NULL; } @@ -602,7 +629,6 @@ read_irep(mrb_state *mrb, const uint8_t *bin, size_t bufsize, uint8_t flags) break; } - uint32_t section_size = bin_to_uint32(section_header->section_size); bin += section_size; bin_size -= section_size; } @@ -615,7 +641,7 @@ mrb_proc_read_irep(mrb_state *mrb, const uint8_t *bin) { uint8_t flags = mrb_ro_data_p((char*)bin) ? FLAG_SRC_STATIC : FLAG_SRC_MALLOC; - return read_irep(mrb, bin, (size_t)-1, flags); + return read_irep(mrb, bin, (size_t)UINT32_MAX, flags); } DEFINE_READ_IREP_FUNC( From 242a7f14e002c4d3233eb839a0931627da94a206 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 10 May 2022 20:32:04 +0900 Subject: [PATCH 21/22] mruby3.1.md: update fixed CVE list. --- doc/mruby3.1.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/doc/mruby3.1.md b/doc/mruby3.1.md index 61c11803c..158b8ea7e 100644 --- a/doc/mruby3.1.md +++ b/doc/mruby3.1.md @@ -218,3 +218,38 @@ For better and faster hash values. - Fix keyword parameters not passing through super [#5660](https://github.com/mruby/mruby/issues/5660) - Fix infinite loop from unclosed here-doc [#5676](https://github.com/mruby/mruby/issues/5676) - Fix negative integer division bug [#5678](https://github.com/mruby/mruby/issues/5678) + +# CVEs + +## Fixed CVEs + +Following CVEs are fixed in this release. + +- [CVE-2021-4110](https://nvd.nist.gov/vuln/detail/CVE-2021-4110) +- [CVE-2021-4188](https://nvd.nist.gov/vuln/detail/CVE-2021-4188) +- [CVE-2022-0080](https://nvd.nist.gov/vuln/detail/CVE-2022-0080) +- [CVE-2022-0240](https://nvd.nist.gov/vuln/detail/CVE-2022-0240) +- [CVE-2022-0326](https://nvd.nist.gov/vuln/detail/CVE-2022-0326) +- [CVE-2022-0481](https://nvd.nist.gov/vuln/detail/CVE-2022-0481) +- [CVE-2022-0631](https://nvd.nist.gov/vuln/detail/CVE-2022-0631) +- [CVE-2022-0632](https://nvd.nist.gov/vuln/detail/CVE-2022-0632) +- [CVE-2022-0890](https://nvd.nist.gov/vuln/detail/CVE-2022-0890) +- [CVE-2022-1071](https://nvd.nist.gov/vuln/detail/CVE-2022-1071) +- [CVE-2022-1106](https://nvd.nist.gov/vuln/detail/CVE-2022-1106) +- [CVE-2022-1201](https://nvd.nist.gov/vuln/detail/CVE-2022-1201) +- [CVE-2022-1427](https://nvd.nist.gov/vuln/detail/CVE-2022-1427) + +## Unaffected CVEs + +Following CVEs do not cause problems in this release. They are fixed in the later release. + +- [CVE-2022-0481](https://nvd.nist.gov/vuln/detail/CVE-2022-0481) +- [CVE-2022-0525](https://nvd.nist.gov/vuln/detail/CVE-2022-0525) +- [CVE-2022-0570](https://nvd.nist.gov/vuln/detail/CVE-2022-0570) +- [CVE-2022-0614](https://nvd.nist.gov/vuln/detail/CVE-2022-0614) +- [CVE-2022-0623](https://nvd.nist.gov/vuln/detail/CVE-2022-0623) +- [CVE-2022-0630](https://nvd.nist.gov/vuln/detail/CVE-2022-0630) +- [CVE-2022-0717](https://nvd.nist.gov/vuln/detail/CVE-2022-0817) +- [CVE-2022-1212](https://nvd.nist.gov/vuln/detail/CVE-2022-1212) +- [CVE-2022-1276](https://nvd.nist.gov/vuln/detail/CVE-2022-1276) +- [CVE-2022-1286](https://nvd.nist.gov/vuln/detail/CVE-2022-1286) From 1bec3392300e99ea037a8e18aa9694c83390cea3 Mon Sep 17 00:00:00 2001 From: mimaki Date: Thu, 12 May 2022 12:19:10 +0900 Subject: [PATCH 22/22] Update version and release date. (mruby 3.1.0 (2022-05-12)) --- Doxyfile | 2 +- README.md | 2 +- doc/guides/debugger.md | 2 +- doc/limitations.md | 16 ++++++++-------- include/mruby/version.h | 6 +++--- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Doxyfile b/Doxyfile index cb0bf5546..0dd49db43 100644 --- a/Doxyfile +++ b/Doxyfile @@ -6,7 +6,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "mruby" -PROJECT_NUMBER = 3.0.0 +PROJECT_NUMBER = 3.1.0 PROJECT_BRIEF = "mruby is the lightweight implementation of the Ruby language" diff --git a/README.md b/README.md index 5e82f727f..271551df5 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ of the Ministry of Economy, Trade and Industry of Japan. ## How to get mruby -The release candidate version 3.1.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.1.0-rc2.zip](https://github.com/mruby/mruby/archive/3.1.0-rc2.zip) +The stable version 3.1.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.1.0.zip](https://github.com/mruby/mruby/archive/3.1.0.zip) The latest development version of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/zipball/master](https://github.com/mruby/mruby/zipball/master) diff --git a/doc/guides/debugger.md b/doc/guides/debugger.md index 14c9bfebd..18673c47b 100644 --- a/doc/guides/debugger.md +++ b/doc/guides/debugger.md @@ -38,7 +38,7 @@ To confirm mrdb was installed properly, run mrdb with the `--version` option: ```bash $ mrdb --version -mruby 3.0.0 (2021-03-05) +mruby 3.1.0 (2022-05-12) ``` ## 2.2 Basic Operation diff --git a/doc/limitations.md b/doc/limitations.md index b0caecc8f..3364e7042 100644 --- a/doc/limitations.md +++ b/doc/limitations.md @@ -30,7 +30,7 @@ end `ZeroDivisionError` is raised. -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] `RuntimeError` is raised instead of `ZeroDivisionError`. To re-raise the exception, you have to do: @@ -66,7 +66,7 @@ p Liste.new "foobar" ` [] ` -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] `ArgumentError` is raised. @@ -96,7 +96,7 @@ false true ``` -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] ``` true @@ -133,7 +133,7 @@ p 'ok' ok ``` -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] ``` test.rb:8: undefined method 'test_func' (NoMethodError) @@ -155,7 +155,7 @@ defined?(Foo) nil ``` -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] `NameError` is raised. @@ -172,7 +172,7 @@ alias $a $__a__ ` nil ` -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] Syntax error @@ -194,7 +194,7 @@ end `ArgumentError` is raised. The re-defined `+` operator does not accept any arguments. -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] ` 'ab' ` Behavior of the operator wasn't changed. @@ -210,7 +210,7 @@ $ ruby -e 'puts Proc.new {}.binding' # ``` -#### mruby [3.0.0 (2021-03-05)] +#### mruby [3.1.0 (2022-05-12)] ``` $ ./bin/mruby -e 'puts Proc.new {}.binding' diff --git a/include/mruby/version.h b/include/mruby/version.h index a13f094e2..cf713da2b 100644 --- a/include/mruby/version.h +++ b/include/mruby/version.h @@ -57,7 +57,7 @@ MRB_BEGIN_DECL /* * Patch level string. (optional) */ -#define MRUBY_PATCHLEVEL_STR "RC2" +#define MRUBY_PATCHLEVEL_STR "" #ifndef MRUBY_PATCHLEVEL_STR # if MRUBY_PATCHLEVEL < 0 @@ -85,12 +85,12 @@ MRB_BEGIN_DECL /* * Release month. */ -#define MRUBY_RELEASE_MONTH 3 +#define MRUBY_RELEASE_MONTH 5 /* * Release day. */ -#define MRUBY_RELEASE_DAY 31 +#define MRUBY_RELEASE_DAY 12 /* * Release date as a string.