remove useless "default" mechanism
authorZefram <zefram@fysh.org>
Tue, 28 Nov 2017 20:21:36 +0000 (20:21 +0000)
committerZefram <zefram@fysh.org>
Tue, 28 Nov 2017 20:21:36 +0000 (20:21 +0000)
28 files changed:
cpan/experimental/t/basic.t
embed.fnc
ext/XS-APItest/t/grok.t
gv.c
keywords.c
keywords.h
lib/B/Deparse.pm
lib/B/Deparse.t
op.c
op.h
perly.act
perly.h
perly.tab
perly.y
pod/perldiag.pod
pod/perlfunc.pod
pod/perlsyn.pod
pp_ctl.c
proto.h
regen/keywords.pl
t/lib/croak/pp_ctl
t/lib/feature/switch
t/op/cproto.t
t/op/state.t
t/op/switch.t
t/op/taint.t
t/porting/customized.dat
toke.c

index 95f60db..e66b2b9 100644 (file)
@@ -24,9 +24,7 @@ if ($] >= 5.010001) {
                when (\&bar) {
                        pass("bar matches 1");
                }
-               default {
-                       fail("bar matches 1");
-               }
+               fail("bar matches 1");
        }
        1;
 END
index b39a5a7..8e05b6c 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1166,7 +1166,7 @@ ApdR      |SV*    |newSV_type     |const svtype type
 ApdR   |OP*    |newUNOP        |I32 type|I32 flags|NULLOK OP* first
 ApdR   |OP*    |newUNOP_AUX    |I32 type|I32 flags|NULLOK OP* first \
                                |NULLOK UNOP_AUX_item *aux
-ApdR   |OP*    |newWHENOP      |NULLOK OP* cond|NN OP* block
+ApdR   |OP*    |newWHENOP      |NN OP* cond|NN OP* block
 ApdR   |OP*    |newWHILEOP     |I32 flags|I32 debuggable|NULLOK LOOP* loop \
                                |NULLOK OP* expr|NULLOK OP* block|NULLOK OP* cont \
                                |I32 has_my
index 4632752..e4eaa45 100644 (file)
@@ -42,9 +42,7 @@ foreach my $leader ('', ' ', '  ') {
                    @NV = qw(18446744073709551616 18446744073709551617
                             18446744073709551620 18446744073709551624);
                }
-               default {
-                   die "Unknown IV size $_";
-               }
+               die "Unknown IV size $_";
            }
            foreach (@UV) {
                my $string = $leader . $_ . $trailer;
diff --git a/gv.c b/gv.c
index bc5b388..2c9f64c 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -521,7 +521,7 @@ S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv,
         no support for funcs that do not parse like funcs */
     case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD:
     case KEY_BEGIN   : case KEY_CHECK  : case KEY_cmp:
-    case KEY_default : case KEY_DESTROY:
+    case KEY_DESTROY:
     case KEY_do      : case KEY_dump   : case KEY_else  : case KEY_elsif  :
     case KEY_END     : case KEY_eq     : case KEY_eval  :
     case KEY_for     : case KEY_foreach: case KEY_format: case KEY_ge     :
index 9fa30e6..e68e9f5 100644 (file)
@@ -1903,7 +1903,7 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
           goto unknown;
       }
 
-    case 7: /* 30 tokens of length 7 */
+    case 7: /* 29 tokens of length 7 */
       switch (name[0])
       {
         case 'D':
@@ -1995,33 +1995,13 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
               goto unknown;
 
             case 'e':
-              if (name[2] == 'f')
-              {
-                switch (name[3])
-                {
-                  case 'a':
-                    if (name[4] == 'u' &&
-                        name[5] == 'l' &&
-                        name[6] == 't')
-                    {                             /* default          */
-                      return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? KEY_default : 0);
-                    }
-
-                    goto unknown;
-
-                  case 'i':
-                    if (name[4] == 'n' &&
-                        name[5] == 'e' &&
-                        name[6] == 'd')
-                    {                             /* defined          */
-                      return KEY_defined;
-                    }
-
-                    goto unknown;
-
-                  default:
-                    goto unknown;
-                }
+              if (name[2] == 'f' &&
+                  name[3] == 'i' &&
+                  name[4] == 'n' &&
+                  name[5] == 'e' &&
+                  name[6] == 'd')
+              {                                   /* defined          */
+                return KEY_defined;
               }
 
               goto unknown;
@@ -3437,5 +3417,5 @@ unknown:
 }
 
 /* Generated from:
- * db0472e0ad4f44bd0816cad799d63b60d1bbd7e11cef40ea15bf0d00f69669f6 regen/keywords.pl
+ * 1e6a65fdd2e2d8aec28927cb9cbfed6e8a33ba077f0114b420746a04b0df8792 regen/keywords.pl
  * ex: set ro: */
index 2b1d598..f82df6a 100644 (file)
 #define KEY_crypt              37
 #define KEY_dbmclose           38
 #define KEY_dbmopen            39
-#define KEY_default            40
-#define KEY_defined            41
-#define KEY_delete             42
-#define KEY_die                        43
-#define KEY_do                 44
-#define KEY_dump               45
-#define KEY_each               46
-#define KEY_else               47
-#define KEY_elsif              48
-#define KEY_endgrent           49
-#define KEY_endhostent         50
-#define KEY_endnetent          51
-#define KEY_endprotoent                52
-#define KEY_endpwent           53
-#define KEY_endservent         54
-#define KEY_eof                        55
-#define KEY_eq                 56
-#define KEY_eval               57
-#define KEY_evalbytes          58
-#define KEY_exec               59
-#define KEY_exists             60
-#define KEY_exit               61
-#define KEY_exp                        62
-#define KEY_fc                 63
-#define KEY_fcntl              64
-#define KEY_fileno             65
-#define KEY_flock              66
-#define KEY_for                        67
-#define KEY_foreach            68
-#define KEY_fork               69
-#define KEY_format             70
-#define KEY_formline           71
-#define KEY_ge                 72
-#define KEY_getc               73
-#define KEY_getgrent           74
-#define KEY_getgrgid           75
-#define KEY_getgrnam           76
-#define KEY_gethostbyaddr      77
-#define KEY_gethostbyname      78
-#define KEY_gethostent         79
-#define KEY_getlogin           80
-#define KEY_getnetbyaddr       81
-#define KEY_getnetbyname       82
-#define KEY_getnetent          83
-#define KEY_getpeername                84
-#define KEY_getpgrp            85
-#define KEY_getppid            86
-#define KEY_getpriority                87
-#define KEY_getprotobyname     88
-#define KEY_getprotobynumber   89
-#define KEY_getprotoent                90
-#define KEY_getpwent           91
-#define KEY_getpwnam           92
-#define KEY_getpwuid           93
-#define KEY_getservbyname      94
-#define KEY_getservbyport      95
-#define KEY_getservent         96
-#define KEY_getsockname                97
-#define KEY_getsockopt         98
-#define KEY_given              99
-#define KEY_glob               100
-#define KEY_gmtime             101
-#define KEY_goto               102
-#define KEY_grep               103
-#define KEY_gt                 104
-#define KEY_hex                        105
-#define KEY_if                 106
-#define KEY_index              107
-#define KEY_int                        108
-#define KEY_ioctl              109
-#define KEY_join               110
-#define KEY_keys               111
-#define KEY_kill               112
-#define KEY_last               113
-#define KEY_lc                 114
-#define KEY_lcfirst            115
-#define KEY_le                 116
-#define KEY_length             117
-#define KEY_link               118
-#define KEY_listen             119
-#define KEY_local              120
-#define KEY_localtime          121
-#define KEY_lock               122
-#define KEY_log                        123
-#define KEY_lstat              124
-#define KEY_lt                 125
-#define KEY_m                  126
-#define KEY_map                        127
-#define KEY_mkdir              128
-#define KEY_msgctl             129
-#define KEY_msgget             130
-#define KEY_msgrcv             131
-#define KEY_msgsnd             132
-#define KEY_my                 133
-#define KEY_ne                 134
-#define KEY_next               135
-#define KEY_no                 136
-#define KEY_not                        137
-#define KEY_oct                        138
-#define KEY_open               139
-#define KEY_opendir            140
-#define KEY_or                 141
-#define KEY_ord                        142
-#define KEY_our                        143
-#define KEY_pack               144
-#define KEY_package            145
-#define KEY_pipe               146
-#define KEY_pop                        147
-#define KEY_pos                        148
-#define KEY_print              149
-#define KEY_printf             150
-#define KEY_prototype          151
-#define KEY_push               152
-#define KEY_q                  153
-#define KEY_qq                 154
-#define KEY_qr                 155
-#define KEY_quotemeta          156
-#define KEY_qw                 157
-#define KEY_qx                 158
-#define KEY_rand               159
-#define KEY_read               160
-#define KEY_readdir            161
-#define KEY_readline           162
-#define KEY_readlink           163
-#define KEY_readpipe           164
-#define KEY_recv               165
-#define KEY_redo               166
-#define KEY_ref                        167
-#define KEY_rename             168
-#define KEY_require            169
-#define KEY_reset              170
-#define KEY_return             171
-#define KEY_reverse            172
-#define KEY_rewinddir          173
-#define KEY_rindex             174
-#define KEY_rmdir              175
-#define KEY_s                  176
-#define KEY_say                        177
-#define KEY_scalar             178
-#define KEY_seek               179
-#define KEY_seekdir            180
-#define KEY_select             181
-#define KEY_semctl             182
-#define KEY_semget             183
-#define KEY_semop              184
-#define KEY_send               185
-#define KEY_setgrent           186
-#define KEY_sethostent         187
-#define KEY_setnetent          188
-#define KEY_setpgrp            189
-#define KEY_setpriority                190
-#define KEY_setprotoent                191
-#define KEY_setpwent           192
-#define KEY_setservent         193
-#define KEY_setsockopt         194
-#define KEY_shift              195
-#define KEY_shmctl             196
-#define KEY_shmget             197
-#define KEY_shmread            198
-#define KEY_shmwrite           199
-#define KEY_shutdown           200
-#define KEY_sin                        201
-#define KEY_sleep              202
-#define KEY_socket             203
-#define KEY_socketpair         204
-#define KEY_sort               205
-#define KEY_splice             206
-#define KEY_split              207
-#define KEY_sprintf            208
-#define KEY_sqrt               209
-#define KEY_srand              210
-#define KEY_stat               211
-#define KEY_state              212
-#define KEY_study              213
-#define KEY_sub                        214
-#define KEY_substr             215
-#define KEY_symlink            216
-#define KEY_syscall            217
-#define KEY_sysopen            218
-#define KEY_sysread            219
-#define KEY_sysseek            220
-#define KEY_system             221
-#define KEY_syswrite           222
-#define KEY_tell               223
-#define KEY_telldir            224
-#define KEY_tie                        225
-#define KEY_tied               226
-#define KEY_time               227
-#define KEY_times              228
-#define KEY_tr                 229
-#define KEY_truncate           230
-#define KEY_uc                 231
-#define KEY_ucfirst            232
-#define KEY_umask              233
-#define KEY_undef              234
-#define KEY_unless             235
-#define KEY_unlink             236
-#define KEY_unpack             237
-#define KEY_unshift            238
-#define KEY_untie              239
-#define KEY_until              240
-#define KEY_use                        241
-#define KEY_utime              242
-#define KEY_values             243
-#define KEY_vec                        244
-#define KEY_wait               245
-#define KEY_waitpid            246
-#define KEY_wantarray          247
-#define KEY_warn               248
-#define KEY_when               249
-#define KEY_while              250
-#define KEY_write              251
-#define KEY_x                  252
-#define KEY_xor                        253
-#define KEY_y                  254
+#define KEY_defined            40
+#define KEY_delete             41
+#define KEY_die                        42
+#define KEY_do                 43
+#define KEY_dump               44
+#define KEY_each               45
+#define KEY_else               46
+#define KEY_elsif              47
+#define KEY_endgrent           48
+#define KEY_endhostent         49
+#define KEY_endnetent          50
+#define KEY_endprotoent                51
+#define KEY_endpwent           52
+#define KEY_endservent         53
+#define KEY_eof                        54
+#define KEY_eq                 55
+#define KEY_eval               56
+#define KEY_evalbytes          57
+#define KEY_exec               58
+#define KEY_exists             59
+#define KEY_exit               60
+#define KEY_exp                        61
+#define KEY_fc                 62
+#define KEY_fcntl              63
+#define KEY_fileno             64
+#define KEY_flock              65
+#define KEY_for                        66
+#define KEY_foreach            67
+#define KEY_fork               68
+#define KEY_format             69
+#define KEY_formline           70
+#define KEY_ge                 71
+#define KEY_getc               72
+#define KEY_getgrent           73
+#define KEY_getgrgid           74
+#define KEY_getgrnam           75
+#define KEY_gethostbyaddr      76
+#define KEY_gethostbyname      77
+#define KEY_gethostent         78
+#define KEY_getlogin           79
+#define KEY_getnetbyaddr       80
+#define KEY_getnetbyname       81
+#define KEY_getnetent          82
+#define KEY_getpeername                83
+#define KEY_getpgrp            84
+#define KEY_getppid            85
+#define KEY_getpriority                86
+#define KEY_getprotobyname     87
+#define KEY_getprotobynumber   88
+#define KEY_getprotoent                89
+#define KEY_getpwent           90
+#define KEY_getpwnam           91
+#define KEY_getpwuid           92
+#define KEY_getservbyname      93
+#define KEY_getservbyport      94
+#define KEY_getservent         95
+#define KEY_getsockname                96
+#define KEY_getsockopt         97
+#define KEY_given              98
+#define KEY_glob               99
+#define KEY_gmtime             100
+#define KEY_goto               101
+#define KEY_grep               102
+#define KEY_gt                 103
+#define KEY_hex                        104
+#define KEY_if                 105
+#define KEY_index              106
+#define KEY_int                        107
+#define KEY_ioctl              108
+#define KEY_join               109
+#define KEY_keys               110
+#define KEY_kill               111
+#define KEY_last               112
+#define KEY_lc                 113
+#define KEY_lcfirst            114
+#define KEY_le                 115
+#define KEY_length             116
+#define KEY_link               117
+#define KEY_listen             118
+#define KEY_local              119
+#define KEY_localtime          120
+#define KEY_lock               121
+#define KEY_log                        122
+#define KEY_lstat              123
+#define KEY_lt                 124
+#define KEY_m                  125
+#define KEY_map                        126
+#define KEY_mkdir              127
+#define KEY_msgctl             128
+#define KEY_msgget             129
+#define KEY_msgrcv             130
+#define KEY_msgsnd             131
+#define KEY_my                 132
+#define KEY_ne                 133
+#define KEY_next               134
+#define KEY_no                 135
+#define KEY_not                        136
+#define KEY_oct                        137
+#define KEY_open               138
+#define KEY_opendir            139
+#define KEY_or                 140
+#define KEY_ord                        141
+#define KEY_our                        142
+#define KEY_pack               143
+#define KEY_package            144
+#define KEY_pipe               145
+#define KEY_pop                        146
+#define KEY_pos                        147
+#define KEY_print              148
+#define KEY_printf             149
+#define KEY_prototype          150
+#define KEY_push               151
+#define KEY_q                  152
+#define KEY_qq                 153
+#define KEY_qr                 154
+#define KEY_quotemeta          155
+#define KEY_qw                 156
+#define KEY_qx                 157
+#define KEY_rand               158
+#define KEY_read               159
+#define KEY_readdir            160
+#define KEY_readline           161
+#define KEY_readlink           162
+#define KEY_readpipe           163
+#define KEY_recv               164
+#define KEY_redo               165
+#define KEY_ref                        166
+#define KEY_rename             167
+#define KEY_require            168
+#define KEY_reset              169
+#define KEY_return             170
+#define KEY_reverse            171
+#define KEY_rewinddir          172
+#define KEY_rindex             173
+#define KEY_rmdir              174
+#define KEY_s                  175
+#define KEY_say                        176
+#define KEY_scalar             177
+#define KEY_seek               178
+#define KEY_seekdir            179
+#define KEY_select             180
+#define KEY_semctl             181
+#define KEY_semget             182
+#define KEY_semop              183
+#define KEY_send               184
+#define KEY_setgrent           185
+#define KEY_sethostent         186
+#define KEY_setnetent          187
+#define KEY_setpgrp            188
+#define KEY_setpriority                189
+#define KEY_setprotoent                190
+#define KEY_setpwent           191
+#define KEY_setservent         192
+#define KEY_setsockopt         193
+#define KEY_shift              194
+#define KEY_shmctl             195
+#define KEY_shmget             196
+#define KEY_shmread            197
+#define KEY_shmwrite           198
+#define KEY_shutdown           199
+#define KEY_sin                        200
+#define KEY_sleep              201
+#define KEY_socket             202
+#define KEY_socketpair         203
+#define KEY_sort               204
+#define KEY_splice             205
+#define KEY_split              206
+#define KEY_sprintf            207
+#define KEY_sqrt               208
+#define KEY_srand              209
+#define KEY_stat               210
+#define KEY_state              211
+#define KEY_study              212
+#define KEY_sub                        213
+#define KEY_substr             214
+#define KEY_symlink            215
+#define KEY_syscall            216
+#define KEY_sysopen            217
+#define KEY_sysread            218
+#define KEY_sysseek            219
+#define KEY_system             220
+#define KEY_syswrite           221
+#define KEY_tell               222
+#define KEY_telldir            223
+#define KEY_tie                        224
+#define KEY_tied               225
+#define KEY_time               226
+#define KEY_times              227
+#define KEY_tr                 228
+#define KEY_truncate           229
+#define KEY_uc                 230
+#define KEY_ucfirst            231
+#define KEY_umask              232
+#define KEY_undef              233
+#define KEY_unless             234
+#define KEY_unlink             235
+#define KEY_unpack             236
+#define KEY_unshift            237
+#define KEY_untie              238
+#define KEY_until              239
+#define KEY_use                        240
+#define KEY_utime              241
+#define KEY_values             242
+#define KEY_vec                        243
+#define KEY_wait               244
+#define KEY_waitpid            245
+#define KEY_wantarray          246
+#define KEY_warn               247
+#define KEY_when               248
+#define KEY_while              249
+#define KEY_write              250
+#define KEY_x                  251
+#define KEY_xor                        252
+#define KEY_y                  253
 
 /* Generated from:
- * db0472e0ad4f44bd0816cad799d63b60d1bbd7e11cef40ea15bf0d00f69669f6 regen/keywords.pl
+ * 1e6a65fdd2e2d8aec28927cb9cbfed6e8a33ba077f0114b420746a04b0df8792 regen/keywords.pl
  * ex: set ro: */
index c2dc591..6823ebc 100644 (file)
@@ -2247,7 +2247,6 @@ my %feature_keywords = (
     say     => 'say',
     given   => 'switch',
     when    => 'switch',
-    default => 'switch',
     break   => 'switch',
     evalbytes=>'evalbytes',
     __SUB__ => '__SUB__',
@@ -2547,19 +2546,11 @@ sub givwhen {
     my($op, $cx, $givwhen) = @_;
 
     my $enterop = $op->first;
-    my ($head, $block);
-    if ($enterop->flags & OPf_SPECIAL) {
-       $head = $self->keyword("default");
-       $block = $self->deparse($enterop->first, 0);
-    }
-    else {
-       my $cond = $enterop->first;
-       my $cond_str = $self->deparse($cond, 1);
-       $head = "$givwhen ($cond_str)";
-       $block = $self->deparse($cond->sibling, 0);
-    }
+    my $cond = $enterop->first;
+    my $cond_str = $self->deparse($cond, 1);
+    my $block = $self->deparse($cond->sibling, 0);
 
-    return "$head {\n".
+    return "$givwhen ($cond_str) {\n".
        "\t$block\n".
        "\b}\cK";
 }
index f8da646..6589700 100644 (file)
@@ -1029,7 +1029,7 @@ my $d = \[];
 given ('foo') {
     when ('bar') { continue; }
     when ($_ ~~ 'quux') { continue; }
-    default { 0; }
+    0;
 }
 ####
 # conditions in elsifs (regression in change #33710 which fixed bug #37302)
@@ -1514,9 +1514,7 @@ CORE::given ($x) {
     CORE::when (3) {
         continue;
     }
-    CORE::default {
-        CORE::break;
-    }
+    CORE::break;
 }
 CORE::evalbytes '';
 () = CORE::__SUB__;
@@ -1532,9 +1530,7 @@ CORE::given ($x) {
     CORE::when (3) {
         continue;
     }
-    CORE::default {
-        CORE::break;
-    }
+    CORE::break;
 }
 CORE::evalbytes '';
 () = CORE::__SUB__;
@@ -1545,9 +1541,7 @@ CORE::given ($x) {
     CORE::when (3) {
         continue;
     }
-    CORE::default {
-        CORE::break;
-    }
+    CORE::break;
 }
 CORE::evalbytes '';
 () = CORE::__SUB__;
@@ -1563,9 +1557,7 @@ CORE::given ($x) {
     CORE::when (3) {
         continue;
     }
-    CORE::default {
-        CORE::break;
-    }
+    CORE::break;
 }
 CORE::evalbytes '';
 () = CORE::__SUB__;
@@ -1578,9 +1570,7 @@ CORE::given ($x) {
     CORE::when (3) {
         continue;
     }
-    CORE::default {
-        CORE::break;
-    }
+    CORE::break;
 }
 CORE::evalbytes '';
 () = CORE::__SUB__;
@@ -1588,7 +1578,6 @@ CORE::evalbytes '';
 # SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version"
 # lexical subroutines and keywords of the same name
 # CONTEXT use feature 'lexical_subs', 'switch'; no warnings 'experimental';
-my sub default;
 my sub else;
 my sub elsif;
 my sub for;
@@ -1611,7 +1600,6 @@ my sub until;
 my sub use;
 my sub when;
 my sub while;
-CORE::default { die; }
 CORE::if ($1) { die; }
 CORE::if ($1) { die; }
 CORE::elsif ($1) { die; }
diff --git a/op.c b/op.c
index 6318f42..cc9b666 100644 (file)
--- a/op.c
+++ b/op.c
@@ -8791,20 +8791,9 @@ S_newGIVWHENOP(pTHX_ OP *cond, OP *block, I32 enter_opcode, I32 leave_opcode)
 
     o = newUNOP(leave_opcode, 0, (OP *) enterop);
 
-    if (cond) {
-        /* prepend cond if we have one */
-        op_sibling_splice((OP*)enterop, NULL, 0, scalar(cond));
-
-       o->op_next = LINKLIST(cond);
-       cond->op_next = (OP *) enterop;
-    }
-    else {
-       /* This is a default {} block */
-       enterop->op_flags |= OPf_SPECIAL;
-       o      ->op_flags |= OPf_SPECIAL;
-
-       o->op_next = (OP *) enterop;
-    }
+    op_sibling_splice((OP*)enterop, NULL, 0, scalar(cond));
+    o->op_next = LINKLIST(cond);
+    cond->op_next = (OP *) enterop;
 
     CHECKOP(enter_opcode, enterop); /* Currently does nothing, since
                                       entergiven and enterwhen both
@@ -8844,8 +8833,7 @@ Perl_newGIVENOP(pTHX_ OP *cond, OP *block, PADOFFSET defsv_off)
 Constructs, checks, and returns an op tree expressing a C<when> block.
 C<cond> supplies the test expression, and C<block> supplies the block
 that will be executed if the test evaluates to true; they are consumed
-by this function and become part of the constructed op tree.  C<cond>
-may be null to generate a C<default> block.
+by this function and become part of the constructed op tree.
 
 =cut
 */
diff --git a/op.h b/op.h
index b954dcb..efafcf3 100644 (file)
--- a/op.h
+++ b/op.h
@@ -129,8 +129,6 @@ Deprecated.  Use C<GIMME_V> instead.
                                /*  On OP_DBSTATE, indicates breakpoint
                                 *    (runtime property) */
                                /*  On OP_REQUIRE, was seen as CORE::require */
-                               /*  On OP_(ENTER|LEAVE)WHEN, there's
-                                   no condition */
                                /*  On OP_ANONHASH and OP_ANONLIST, create a
                                    reference to the new anon hash or array */
                                /*  On OP_HELEM, OP_MULTIDEREF and OP_HSLICE,
index 610963f..7594b34 100644 (file)
--- a/perly.act
+++ b/perly.act
@@ -398,12 +398,6 @@ case 2:
 
   case 40:
 #line 384 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
-
-    break;
-
-  case 41:
-#line 386 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end((ps[-5].val.ival),
                                  newWHILEOP(0, 1, NULL,
@@ -413,8 +407,8 @@ case 2:
 
     break;
 
-  case 42:
-#line 393 "perly.y" /* yacc.c:1646  */
+  case 41:
+#line 391 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end((ps[-5].val.ival),
                                  newWHILEOP(0, 1, NULL,
@@ -424,20 +418,20 @@ case 2:
 
     break;
 
-  case 43:
-#line 400 "perly.y" /* yacc.c:1646  */
+  case 42:
+#line 398 "perly.y" /* yacc.c:1646  */
     { parser->expect = XTERM; }
 
     break;
 
-  case 44:
-#line 402 "perly.y" /* yacc.c:1646  */
+  case 43:
+#line 400 "perly.y" /* yacc.c:1646  */
     { parser->expect = XTERM; }
 
     break;
 
-  case 45:
-#line 405 "perly.y" /* yacc.c:1646  */
+  case 44:
+#line 403 "perly.y" /* yacc.c:1646  */
     {
                          OP *initop = (ps[-9].val.opval);
                          OP *forop = newWHILEOP(0, 1, NULL,
@@ -455,8 +449,8 @@ case 2:
 
     break;
 
-  case 46:
-#line 420 "perly.y" /* yacc.c:1646  */
+  case 45:
+#line 418 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
                          parser->copline = (line_t)(ps[-8].val.ival);
@@ -464,8 +458,8 @@ case 2:
 
     break;
 
-  case 47:
-#line 425 "perly.y" /* yacc.c:1646  */
+  case 46:
+#line 423 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,
                                      op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
@@ -474,14 +468,14 @@ case 2:
 
     break;
 
-  case 48:
-#line 431 "perly.y" /* yacc.c:1646  */
+  case 47:
+#line 429 "perly.y" /* yacc.c:1646  */
     { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
 
     break;
 
-  case 49:
-#line 433 "perly.y" /* yacc.c:1646  */
+  case 48:
+#line 431 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end(
                                (ps[-7].val.ival),
@@ -497,8 +491,8 @@ case 2:
 
     break;
 
-  case 50:
-#line 446 "perly.y" /* yacc.c:1646  */
+  case 49:
+#line 444 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
                                0, op_lvalue(newUNOP(OP_REFGEN, 0,
@@ -509,8 +503,8 @@ case 2:
 
     break;
 
-  case 51:
-#line 454 "perly.y" /* yacc.c:1646  */
+  case 50:
+#line 452 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end((ps[-4].val.ival),
                                  newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
@@ -519,8 +513,8 @@ case 2:
 
     break;
 
-  case 52:
-#line 460 "perly.y" /* yacc.c:1646  */
+  case 51:
+#line 458 "perly.y" /* yacc.c:1646  */
     {
                          /* a block is a loop that happens once */
                          (yyval.opval) = newWHILEOP(0, 1, NULL,
@@ -529,8 +523,8 @@ case 2:
 
     break;
 
-  case 53:
-#line 466 "perly.y" /* yacc.c:1646  */
+  case 52:
+#line 464 "perly.y" /* yacc.c:1646  */
     {
                          package((ps[-2].val.opval));
                          if ((ps[-3].val.opval)) {
@@ -540,8 +534,8 @@ case 2:
 
     break;
 
-  case 54:
-#line 473 "perly.y" /* yacc.c:1646  */
+  case 53:
+#line 471 "perly.y" /* yacc.c:1646  */
     {
                          /* a block is a loop that happens once */
                          (yyval.opval) = newWHILEOP(0, 1, NULL,
@@ -552,16 +546,16 @@ case 2:
 
     break;
 
-  case 55:
-#line 481 "perly.y" /* yacc.c:1646  */
+  case 54:
+#line 479 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = (ps[-1].val.opval);
                        }
 
     break;
 
-  case 56:
-#line 485 "perly.y" /* yacc.c:1646  */
+  case 55:
+#line 483 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
                                newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
@@ -569,8 +563,8 @@ case 2:
 
     break;
 
-  case 57:
-#line 490 "perly.y" /* yacc.c:1646  */
+  case 56:
+#line 488 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = NULL;
                          parser->copline = NOLINE;
@@ -578,8 +572,8 @@ case 2:
 
     break;
 
-  case 58:
-#line 498 "perly.y" /* yacc.c:1646  */
+  case 57:
+#line 496 "perly.y" /* yacc.c:1646  */
     { OP *list;
                          if ((ps[0].val.opval)) {
                              OP *term = (ps[0].val.opval);
@@ -597,75 +591,75 @@ case 2:
 
     break;
 
+  case 58:
+#line 513 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = NULL; }
+
+    break;
+
   case 59:
 #line 515 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
+    { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
 
     break;
 
   case 60:
-#line 517 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
+#line 520 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = NULL; }
 
     break;
 
   case 61:
 #line 522 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 62:
 #line 524 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
 
     break;
 
   case 63:
 #line 526 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
 
     break;
 
   case 64:
 #line 528 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
 
     break;
 
   case 65:
 #line 530 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
+    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
 
     break;
 
   case 66:
 #line 532 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
-
-    break;
-
-  case 67:
-#line 534 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL);
                          parser->copline = (line_t)(ps[-1].val.ival); }
 
     break;
 
-  case 68:
-#line 537 "perly.y" /* yacc.c:1646  */
+  case 67:
+#line 535 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
 
     break;
 
-  case 69:
-#line 542 "perly.y" /* yacc.c:1646  */
+  case 68:
+#line 540 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
-  case 70:
-#line 544 "perly.y" /* yacc.c:1646  */
+  case 69:
+#line 542 "perly.y" /* yacc.c:1646  */
     {
                          ((ps[0].val.opval))->op_flags |= OPf_PARENS;
                          (yyval.opval) = op_scope((ps[0].val.opval));
@@ -673,8 +667,8 @@ case 2:
 
     break;
 
-  case 71:
-#line 549 "perly.y" /* yacc.c:1646  */
+  case 70:
+#line 547 "perly.y" /* yacc.c:1646  */
     { parser->copline = (line_t)(ps[-5].val.ival);
                            (yyval.opval) = newCONDOP(0,
                                newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
@@ -684,153 +678,153 @@ case 2:
 
     break;
 
-  case 72:
-#line 559 "perly.y" /* yacc.c:1646  */
+  case 71:
+#line 557 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
-  case 73:
-#line 561 "perly.y" /* yacc.c:1646  */
+  case 72:
+#line 559 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_scope((ps[0].val.opval)); }
 
     break;
 
-  case 74:
-#line 566 "perly.y" /* yacc.c:1646  */
+  case 73:
+#line 564 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = (PL_min_intro_pending &&
                            PL_max_intro_pending >=  PL_min_intro_pending);
                          intro_my(); }
 
     break;
 
-  case 75:
-#line 572 "perly.y" /* yacc.c:1646  */
+  case 74:
+#line 570 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
-  case 77:
-#line 578 "perly.y" /* yacc.c:1646  */
+  case 76:
+#line 576 "perly.y" /* yacc.c:1646  */
     { YYSTYPE tmplval;
                          (void)scan_num("1", &tmplval);
                          (yyval.opval) = tmplval.opval; }
 
     break;
 
-  case 79:
-#line 586 "perly.y" /* yacc.c:1646  */
+  case 78:
+#line 584 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = invert(scalar((ps[0].val.opval))); }
 
     break;
 
-  case 80:
-#line 591 "perly.y" /* yacc.c:1646  */
+  case 79:
+#line 589 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); intro_my(); }
 
     break;
 
-  case 81:
-#line 595 "perly.y" /* yacc.c:1646  */
+  case 80:
+#line 593 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); intro_my(); }
 
     break;
 
-  case 82:
-#line 598 "perly.y" /* yacc.c:1646  */
+  case 81:
+#line 596 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 83:
-#line 599 "perly.y" /* yacc.c:1646  */
+  case 82:
+#line 597 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
-  case 84:
-#line 603 "perly.y" /* yacc.c:1646  */
+  case 83:
+#line 601 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(FALSE, 0);
                            SAVEFREESV(PL_compcv); }
 
     break;
 
-  case 85:
-#line 609 "perly.y" /* yacc.c:1646  */
+  case 84:
+#line 607 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
                            SAVEFREESV(PL_compcv); }
 
     break;
 
-  case 86:
-#line 614 "perly.y" /* yacc.c:1646  */
+  case 85:
+#line 612 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(TRUE, 0);
                            SAVEFREESV(PL_compcv); }
 
     break;
 
-  case 89:
-#line 625 "perly.y" /* yacc.c:1646  */
+  case 88:
+#line 623 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = NULL; }
+
+    break;
+
+  case 90:
+#line 629 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
   case 91:
 #line 631 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 92:
 #line 633 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+    { (yyval.opval) = NULL; }
 
     break;
 
   case 93:
-#line 635 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
+#line 638 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 94:
 #line 640 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+    { (yyval.opval) = NULL; }
 
     break;
 
   case 95:
-#line 642 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
+#line 651 "perly.y" /* yacc.c:1646  */
+    { parser->in_my = 0; (yyval.opval) = NULL; }
 
     break;
 
   case 96:
 #line 653 "perly.y" /* yacc.c:1646  */
-    { parser->in_my = 0; (yyval.opval) = NULL; }
+    { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 97:
-#line 655 "perly.y" /* yacc.c:1646  */
-    { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
+#line 658 "perly.y" /* yacc.c:1646  */
+    { (yyval.ival) = '@'; }
 
     break;
 
   case 98:
 #line 660 "perly.y" /* yacc.c:1646  */
-    { (yyval.ival) = '@'; }
-
-    break;
-
-  case 99:
-#line 662 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = '%'; }
 
     break;
 
-  case 100:
-#line 666 "perly.y" /* yacc.c:1646  */
+  case 99:
+#line 664 "perly.y" /* yacc.c:1646  */
     {
                             I32 sigil   = (ps[-2].val.ival);
                             OP *var     = (ps[-1].val.opval);
@@ -849,26 +843,26 @@ case 2:
 
     break;
 
-  case 101:
-#line 685 "perly.y" /* yacc.c:1646  */
+  case 100:
+#line 683 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
-  case 102:
-#line 687 "perly.y" /* yacc.c:1646  */
+  case 101:
+#line 685 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newOP(OP_NULL, 0); }
 
     break;
 
-  case 103:
-#line 689 "perly.y" /* yacc.c:1646  */
+  case 102:
+#line 687 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 104:
-#line 695 "perly.y" /* yacc.c:1646  */
+  case 103:
+#line 693 "perly.y" /* yacc.c:1646  */
     {
                             OP *var     = (ps[-1].val.opval);
                             OP *defexpr = (ps[0].val.opval);
@@ -932,52 +926,52 @@ case 2:
 
     break;
 
-  case 105:
-#line 760 "perly.y" /* yacc.c:1646  */
+  case 104:
+#line 758 "perly.y" /* yacc.c:1646  */
     { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 106:
-#line 762 "perly.y" /* yacc.c:1646  */
+  case 105:
+#line 760 "perly.y" /* yacc.c:1646  */
     { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 107:
-#line 768 "perly.y" /* yacc.c:1646  */
+  case 106:
+#line 766 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[-1].val.opval); }
 
     break;
 
-  case 108:
-#line 770 "perly.y" /* yacc.c:1646  */
+  case 107:
+#line 768 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval));
                        }
 
     break;
 
-  case 109:
-#line 774 "perly.y" /* yacc.c:1646  */
+  case 108:
+#line 772 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 110:
-#line 779 "perly.y" /* yacc.c:1646  */
+  case 109:
+#line 777 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
-  case 111:
-#line 781 "perly.y" /* yacc.c:1646  */
+  case 110:
+#line 779 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 112:
-#line 785 "perly.y" /* yacc.c:1646  */
+  case 111:
+#line 783 "perly.y" /* yacc.c:1646  */
     {
                             ENTER;
                             SAVEIV(parser->sig_elems);
@@ -991,8 +985,8 @@ case 2:
 
     break;
 
-  case 113:
-#line 797 "perly.y" /* yacc.c:1646  */
+  case 112:
+#line 795 "perly.y" /* yacc.c:1646  */
     {
                             OP            *sigops = (ps[-1].val.opval);
                             UNOP_AUX_item *aux;
@@ -1030,38 +1024,38 @@ case 2:
 
     break;
 
-  case 115:
-#line 837 "perly.y" /* yacc.c:1646  */
+  case 114:
+#line 835 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
 
     break;
 
-  case 116:
-#line 842 "perly.y" /* yacc.c:1646  */
+  case 115:
+#line 840 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
-  case 117:
-#line 844 "perly.y" /* yacc.c:1646  */
+  case 116:
+#line 842 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
-  case 118:
-#line 846 "perly.y" /* yacc.c:1646  */
+  case 117:
+#line 844 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
-  case 120:
-#line 852 "perly.y" /* yacc.c:1646  */
+  case 119:
+#line 850 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[-1].val.opval); }
 
     break;
 
-  case 121:
-#line 854 "perly.y" /* yacc.c:1646  */
+  case 120:
+#line 852 "perly.y" /* yacc.c:1646  */
     {
                          OP* term = (ps[0].val.opval);
                          (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
@@ -1069,24 +1063,24 @@ case 2:
 
     break;
 
-  case 123:
-#line 863 "perly.y" /* yacc.c:1646  */
+  case 122:
+#line 861 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
                                op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );
                        }
 
     break;
 
-  case 124:
-#line 867 "perly.y" /* yacc.c:1646  */
+  case 123:
+#line 865 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
                                op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );
                        }
 
     break;
 
-  case 125:
-#line 871 "perly.y" /* yacc.c:1646  */
+  case 124:
+#line 869 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),
@@ -1095,8 +1089,8 @@ case 2:
 
     break;
 
-  case 126:
-#line 877 "perly.y" /* yacc.c:1646  */
+  case 125:
+#line 875 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),
                                    newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));
@@ -1104,8 +1098,8 @@ case 2:
 
     break;
 
-  case 127:
-#line 882 "perly.y" /* yacc.c:1646  */
+  case 126:
+#line 880 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),
@@ -1114,8 +1108,8 @@ case 2:
 
     break;
 
-  case 128:
-#line 888 "perly.y" /* yacc.c:1646  */
+  case 127:
+#line 886 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),
@@ -1124,27 +1118,27 @@ case 2:
 
     break;
 
-  case 129:
-#line 894 "perly.y" /* yacc.c:1646  */
+  case 128:
+#line 892 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
 
     break;
 
-  case 130:
-#line 896 "perly.y" /* yacc.c:1646  */
+  case 129:
+#line 894 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
 
     break;
 
-  case 131:
-#line 898 "perly.y" /* yacc.c:1646  */
+  case 130:
+#line 896 "perly.y" /* yacc.c:1646  */
     { SvREFCNT_inc_simple_void(PL_compcv);
                          (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); }
 
     break;
 
-  case 132:
-#line 901 "perly.y" /* yacc.c:1646  */
+  case 131:
+#line 899 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                 op_append_elem(OP_LIST,
                                   op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));
@@ -1152,21 +1146,21 @@ case 2:
 
     break;
 
-  case 135:
-#line 916 "perly.y" /* yacc.c:1646  */
+  case 134:
+#line 914 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
 
     break;
 
-  case 136:
-#line 918 "perly.y" /* yacc.c:1646  */
+  case 135:
+#line 916 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
                        }
 
     break;
 
-  case 137:
-#line 921 "perly.y" /* yacc.c:1646  */
+  case 136:
+#line 919 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
                                        ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
                                        scalar((ps[-1].val.opval)));
@@ -1174,8 +1168,8 @@ case 2:
 
     break;
 
-  case 138:
-#line 926 "perly.y" /* yacc.c:1646  */
+  case 137:
+#line 924 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
                                        ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
                                        scalar((ps[-1].val.opval)));
@@ -1183,91 +1177,91 @@ case 2:
 
     break;
 
-  case 139:
-#line 931 "perly.y" /* yacc.c:1646  */
+  case 138:
+#line 929 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
                        }
 
     break;
 
-  case 140:
-#line 934 "perly.y" /* yacc.c:1646  */
+  case 139:
+#line 932 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
                                        ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
                                        jmaybe((ps[-2].val.opval))); }
 
     break;
 
-  case 141:
-#line 938 "perly.y" /* yacc.c:1646  */
+  case 140:
+#line 936 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
                                        ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
                                        jmaybe((ps[-2].val.opval))); }
 
     break;
 
-  case 142:
-#line 942 "perly.y" /* yacc.c:1646  */
+  case 141:
+#line 940 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   newCVREF(0, scalar((ps[-3].val.opval)))); }
 
     break;
 
-  case 143:
-#line 945 "perly.y" /* yacc.c:1646  */
+  case 142:
+#line 943 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   op_append_elem(OP_LIST, (ps[-1].val.opval),
                                       newCVREF(0, scalar((ps[-4].val.opval))))); }
 
     break;
 
-  case 144:
-#line 950 "perly.y" /* yacc.c:1646  */
+  case 143:
+#line 948 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   op_append_elem(OP_LIST, (ps[-1].val.opval),
                                               newCVREF(0, scalar((ps[-3].val.opval))))); }
 
     break;
 
-  case 145:
-#line 954 "perly.y" /* yacc.c:1646  */
+  case 144:
+#line 952 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   newCVREF(0, scalar((ps[-2].val.opval)))); }
 
     break;
 
+  case 145:
+#line 955 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
+
+    break;
+
   case 146:
 #line 957 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
 
     break;
 
   case 147:
 #line 959 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
 
     break;
 
   case 148:
-#line 961 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
+#line 964 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
 
     break;
 
   case 149:
 #line 966 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
 
     break;
 
   case 150:
 #line 968 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
-
-    break;
-
-  case 151:
-#line 970 "perly.y" /* yacc.c:1646  */
     {   if ((ps[-1].val.ival) != OP_REPEAT)
                                scalar((ps[-2].val.opval));
                            (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));
@@ -1275,6 +1269,12 @@ case 2:
 
     break;
 
+  case 151:
+#line 973 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
+    break;
+
   case 152:
 #line 975 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
@@ -1307,80 +1307,74 @@ case 2:
 
   case 157:
 #line 985 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+    { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
 
     break;
 
   case 158:
 #line 987 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 159:
 #line 989 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 160:
 #line 991 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 161:
 #line 993 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+    { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 162:
-#line 995 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 998 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 163:
 #line 1000 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 164:
-#line 1002 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+#line 1003 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 165:
 #line 1005 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 166:
 #line 1007 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
-
-    break;
-
-  case 167:
-#line 1009 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
                                        op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
 
     break;
 
-  case 168:
-#line 1012 "perly.y" /* yacc.c:1646  */
+  case 167:
+#line 1010 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
                                        op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
 
     break;
 
-  case 169:
-#line 1015 "perly.y" /* yacc.c:1646  */
+  case 168:
+#line 1013 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_JOIN, 0,
                                       op_append_elem(
                                        OP_LIST,
@@ -1394,53 +1388,53 @@ case 2:
 
     break;
 
-  case 170:
-#line 1026 "perly.y" /* yacc.c:1646  */
+  case 169:
+#line 1024 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_PREINC, 0,
                                        op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
 
     break;
 
-  case 171:
-#line 1029 "perly.y" /* yacc.c:1646  */
+  case 170:
+#line 1027 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
                                        op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
 
     break;
 
+  case 171:
+#line 1034 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
+
+    break;
+
   case 172:
 #line 1036 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
+    { (yyval.opval) = newANONLIST(NULL);}
 
     break;
 
   case 173:
 #line 1038 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newANONLIST(NULL);}
+    { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
 
     break;
 
   case 174:
 #line 1040 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
+    { (yyval.opval) = newANONHASH(NULL); }
 
     break;
 
   case 175:
 #line 1042 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newANONHASH(NULL); }
-
-    break;
-
-  case 176:
-#line 1044 "perly.y" /* yacc.c:1646  */
     { SvREFCNT_inc_simple_void(PL_compcv);
                          (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
 
     break;
 
-  case 177:
-#line 1047 "perly.y" /* yacc.c:1646  */
+  case 176:
+#line 1045 "perly.y" /* yacc.c:1646  */
     {
                          OP *body;
                          if (parser->copline > (line_t)(ps[-2].val.ival))
@@ -1453,63 +1447,69 @@ case 2:
 
     break;
 
-  case 178:
-#line 1061 "perly.y" /* yacc.c:1646  */
+  case 177:
+#line 1059 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
 
     break;
 
-  case 179:
-#line 1063 "perly.y" /* yacc.c:1646  */
+  case 178:
+#line 1061 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
 
     break;
 
+  case 183:
+#line 1069 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
+
+    break;
+
   case 184:
 #line 1071 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
+    { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
 
     break;
 
   case 185:
 #line 1073 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
+    { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
 
     break;
 
   case 186:
 #line 1075 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 187:
 #line 1077 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+    { (yyval.opval) = localize((ps[0].val.opval),0); }
 
     break;
 
   case 188:
 #line 1079 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = localize((ps[0].val.opval),0); }
+    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
 
     break;
 
   case 189:
 #line 1081 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 190:
 #line 1083 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+    { (yyval.opval) = sawparens(newNULLLIST()); }
 
     break;
 
   case 191:
 #line 1085 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = sawparens(newNULLLIST()); }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
@@ -1533,24 +1533,18 @@ case 2:
 
   case 195:
 #line 1093 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+    { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
 
     break;
 
   case 196:
 #line 1095 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 197:
 #line 1097 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
-
-    break;
-
-  case 198:
-#line 1099 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_ASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_ASLICE, 0,
@@ -1563,8 +1557,8 @@ case 2:
 
     break;
 
-  case 199:
-#line 1109 "perly.y" /* yacc.c:1646  */
+  case 198:
+#line 1107 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVASLICE, 0,
@@ -1577,8 +1571,8 @@ case 2:
 
     break;
 
-  case 200:
-#line 1119 "perly.y" /* yacc.c:1646  */
+  case 199:
+#line 1117 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_HSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_HSLICE, 0,
@@ -1591,8 +1585,8 @@ case 2:
 
     break;
 
-  case 201:
-#line 1129 "perly.y" /* yacc.c:1646  */
+  case 200:
+#line 1127 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVHSLICE, 0,
@@ -1605,27 +1599,27 @@ case 2:
 
     break;
 
-  case 202:
-#line 1139 "perly.y" /* yacc.c:1646  */
+  case 201:
+#line 1137 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 203:
-#line 1141 "perly.y" /* yacc.c:1646  */
+  case 202:
+#line 1139 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
 
     break;
 
-  case 204:
-#line 1143 "perly.y" /* yacc.c:1646  */
+  case 203:
+#line 1141 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
                        }
 
     break;
 
-  case 205:
-#line 1146 "perly.y" /* yacc.c:1646  */
+  case 204:
+#line 1144 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
@@ -1633,67 +1627,73 @@ case 2:
 
     break;
 
-  case 206:
-#line 1151 "perly.y" /* yacc.c:1646  */
+  case 205:
+#line 1149 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                            op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));
                        }
 
     break;
 
+  case 206:
+#line 1153 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
+
+    break;
+
   case 207:
 #line 1155 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
+    { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
 
     break;
 
   case 208:
 #line 1157 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
+    { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
 
     break;
 
   case 209:
 #line 1159 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
+                                      scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
 
     break;
 
   case 210:
-#line 1161 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
-                                      scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
+#line 1162 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
 
     break;
 
   case 211:
 #line 1164 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
+    { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
+                           PL_hints |= HINT_BLOCK_SCOPE; }
 
     break;
 
   case 212:
-#line 1166 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
-                           PL_hints |= HINT_BLOCK_SCOPE; }
+#line 1167 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
 
     break;
 
   case 213:
 #line 1169 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
+    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 214:
 #line 1171 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
 
     break;
 
   case 215:
 #line 1173 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
 
     break;
 
@@ -1705,81 +1705,75 @@ case 2:
 
   case 217:
 #line 1177 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+    { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
 
     break;
 
   case 218:
 #line 1179 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
+    { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
 
     break;
 
   case 219:
 #line 1181 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
 
     break;
 
   case 220:
 #line 1183 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+                           op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
 
     break;
 
   case 221:
-#line 1185 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-                           op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
+#line 1186 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
 
     break;
 
   case 222:
 #line 1188 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+    { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
 
     break;
 
   case 223:
 #line 1190 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 224:
 #line 1192 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+    { (yyval.opval) = (ps[-2].val.opval); }
 
     break;
 
   case 225:
 #line 1194 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[-2].val.opval); }
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
 
     break;
 
   case 226:
 #line 1196 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
-
-    break;
-
-  case 227:
-#line 1198 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT)
                           ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
                           : newOP((ps[-2].val.ival), OPf_SPECIAL); }
 
     break;
 
-  case 228:
-#line 1202 "perly.y" /* yacc.c:1646  */
+  case 227:
+#line 1200 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
 
     break;
 
-  case 229:
-#line 1204 "perly.y" /* yacc.c:1646  */
+  case 228:
+#line 1202 "perly.y" /* yacc.c:1646  */
     {
                            if (   (ps[0].val.opval)->op_type != OP_TRANS
                                && (ps[0].val.opval)->op_type != OP_TRANSR
@@ -1793,39 +1787,45 @@ case 2:
 
     break;
 
-  case 230:
-#line 1215 "perly.y" /* yacc.c:1646  */
+  case 229:
+#line 1213 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
 
     break;
 
+  case 233:
+#line 1221 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
+
+    break;
+
   case 234:
 #line 1223 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
+    { (yyval.opval) = localize((ps[0].val.opval),1); }
 
     break;
 
   case 235:
 #line 1225 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = localize((ps[0].val.opval),1); }
+    { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
 
     break;
 
   case 236:
-#line 1227 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
+#line 1230 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
 
     break;
 
   case 237:
 #line 1232 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+    { (yyval.opval) = sawparens(newNULLLIST()); }
 
     break;
 
   case 238:
-#line 1234 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = sawparens(newNULLLIST()); }
+#line 1235 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
@@ -1842,137 +1842,131 @@ case 2:
     break;
 
   case 241:
-#line 1241 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+#line 1244 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = NULL; }
 
     break;
 
   case 242:
 #line 1246 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 243:
-#line 1248 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+#line 1250 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = NULL; }
 
     break;
 
   case 244:
 #line 1252 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
+    { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 245:
-#line 1254 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = (ps[0].val.opval); }
+#line 1256 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = NULL; }
 
     break;
 
   case 246:
 #line 1258 "perly.y" /* yacc.c:1646  */
-    { (yyval.opval) = NULL; }
-
-    break;
-
-  case 247:
-#line 1260 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 248:
-#line 1266 "perly.y" /* yacc.c:1646  */
+  case 247:
+#line 1264 "perly.y" /* yacc.c:1646  */
     { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
 
     break;
 
-  case 256:
-#line 1283 "perly.y" /* yacc.c:1646  */
+  case 255:
+#line 1281 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
 
     break;
 
-  case 257:
-#line 1287 "perly.y" /* yacc.c:1646  */
+  case 256:
+#line 1285 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newSVREF((ps[0].val.opval)); }
 
     break;
 
-  case 258:
-#line 1291 "perly.y" /* yacc.c:1646  */
+  case 257:
+#line 1289 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newAVREF((ps[0].val.opval));
                          if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
                        }
 
     break;
 
-  case 259:
-#line 1297 "perly.y" /* yacc.c:1646  */
+  case 258:
+#line 1295 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newHVREF((ps[0].val.opval));
                          if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
                        }
 
     break;
 
-  case 260:
-#line 1303 "perly.y" /* yacc.c:1646  */
+  case 259:
+#line 1301 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newAVREF((ps[0].val.opval)); }
 
     break;
 
-  case 261:
-#line 1305 "perly.y" /* yacc.c:1646  */
+  case 260:
+#line 1303 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
 
     break;
 
-  case 262:
-#line 1309 "perly.y" /* yacc.c:1646  */
+  case 261:
+#line 1307 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
 
     break;
 
-  case 264:
-#line 1314 "perly.y" /* yacc.c:1646  */
+  case 263:
+#line 1312 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
 
     break;
 
-  case 266:
-#line 1319 "perly.y" /* yacc.c:1646  */
+  case 265:
+#line 1317 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
 
     break;
 
-  case 268:
-#line 1324 "perly.y" /* yacc.c:1646  */
+  case 267:
+#line 1322 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
 
     break;
 
-  case 269:
-#line 1329 "perly.y" /* yacc.c:1646  */
+  case 268:
+#line 1327 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = scalar((ps[0].val.opval)); }
 
     break;
 
-  case 270:
-#line 1331 "perly.y" /* yacc.c:1646  */
+  case 269:
+#line 1329 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = scalar((ps[0].val.opval)); }
 
     break;
 
-  case 271:
-#line 1333 "perly.y" /* yacc.c:1646  */
+  case 270:
+#line 1331 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_scope((ps[0].val.opval)); }
 
     break;
 
-  case 272:
-#line 1336 "perly.y" /* yacc.c:1646  */
+  case 271:
+#line 1334 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (ps[0].val.opval); }
 
     break;
@@ -1983,6 +1977,6 @@ case 2:
     
 
 /* Generated from:
- * 78f9e1daf948a161b43e7457943b7d91cada7c92c8b941a1c1dbbc23c2c10aa8 perly.y
+ * 233778626e1c4f8b4103ca96d66b107b4527a7b7304f05e373aef634cc4b6f81 perly.y
  * b6fae5748f9bef6db4740aa5e122b84ac5181852d42474d0ecad621fa4253306 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.h b/perly.h
index 765d07c..b45c5f6 100644 (file)
--- a/perly.h
+++ b/perly.h
@@ -87,51 +87,50 @@ extern int yydebug;
     FOR = 290,
     GIVEN = 291,
     WHEN = 292,
-    DEFAULT = 293,
-    LOOPEX = 294,
-    DOTDOT = 295,
-    YADAYADA = 296,
-    FUNC0 = 297,
-    FUNC1 = 298,
-    FUNC = 299,
-    UNIOP = 300,
-    LSTOP = 301,
-    RELOP = 302,
-    EQOP = 303,
-    MULOP = 304,
-    ADDOP = 305,
-    DOLSHARP = 306,
-    DO = 307,
-    HASHBRACK = 308,
-    NOAMP = 309,
-    LOCAL = 310,
-    MY = 311,
-    REQUIRE = 312,
-    COLONATTR = 313,
-    FORMLBRACK = 314,
-    FORMRBRACK = 315,
-    PREC_LOW = 316,
-    OROP = 317,
-    DOROP = 318,
-    ANDOP = 319,
-    NOTOP = 320,
-    ASSIGNOP = 321,
-    OROR = 322,
-    DORDOR = 323,
-    ANDAND = 324,
-    BITOROP = 325,
-    BITANDOP = 326,
-    SHIFTOP = 327,
-    MATCHOP = 328,
-    UMINUS = 329,
-    REFGEN = 330,
-    POWOP = 331,
-    PREINC = 332,
-    PREDEC = 333,
-    POSTINC = 334,
-    POSTDEC = 335,
-    POSTJOIN = 336,
-    ARROW = 337
+    LOOPEX = 293,
+    DOTDOT = 294,
+    YADAYADA = 295,
+    FUNC0 = 296,
+    FUNC1 = 297,
+    FUNC = 298,
+    UNIOP = 299,
+    LSTOP = 300,
+    RELOP = 301,
+    EQOP = 302,
+    MULOP = 303,
+    ADDOP = 304,
+    DOLSHARP = 305,
+    DO = 306,
+    HASHBRACK = 307,
+    NOAMP = 308,
+    LOCAL = 309,
+    MY = 310,
+    REQUIRE = 311,
+    COLONATTR = 312,
+    FORMLBRACK = 313,
+    FORMRBRACK = 314,
+    PREC_LOW = 315,
+    OROP = 316,
+    DOROP = 317,
+    ANDOP = 318,
+    NOTOP = 319,
+    ASSIGNOP = 320,
+    OROR = 321,
+    DORDOR = 322,
+    ANDAND = 323,
+    BITOROP = 324,
+    BITANDOP = 325,
+    SHIFTOP = 326,
+    MATCHOP = 327,
+    UMINUS = 328,
+    REFGEN = 329,
+    POWOP = 330,
+    PREINC = 331,
+    PREDEC = 332,
+    POSTINC = 333,
+    POSTDEC = 334,
+    POSTJOIN = 335,
+    ARROW = 336
   };
 #endif
 
@@ -181,6 +180,6 @@ int yyparse (void);
 
 
 /* Generated from:
- * 78f9e1daf948a161b43e7457943b7d91cada7c92c8b941a1c1dbbc23c2c10aa8 perly.y
+ * 233778626e1c4f8b4103ca96d66b107b4527a7b7304f05e373aef634cc4b6f81 perly.y
  * b6fae5748f9bef6db4740aa5e122b84ac5181852d42474d0ecad621fa4253306 regen_perly.pl
  * ex: set ro: */
index f4be1fc..8471be5 100644 (file)
--- a/perly.tab
+++ b/perly.tab
@@ -6,21 +6,21 @@
 
 #define YYFINAL  14
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3096
+#define YYLAST   3058
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  105
+#define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  86
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  272
+#define YYNRULES  271
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  540
+#define YYNSTATES  538
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   337
+#define YYMAXUTOK   336
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -32,16 +32,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    88,     2,     2,   102,    16,    17,     2,
-     100,    99,   103,    14,    77,    13,    19,   104,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    80,   101,
-       2,    18,     2,    79,    15,     2,     2,     2,     2,     2,
+       2,     2,     2,    87,     2,     2,   101,    16,    17,     2,
+      99,    98,   102,    14,    76,    13,    19,   103,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    79,   100,
+       2,    18,     2,    78,    15,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,    11,     2,    12,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     9,     2,    10,    89,     2,     2,     2,
+       2,     2,     2,     9,     2,    10,    88,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -61,8 +61,8 @@ static const yytype_uint8 yytranslate[] =
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    78,    81,    82,    83,    84,    85,    86,    87,    90,
-      91,    92,    93,    94,    95,    96,    97,    98
+      77,    80,    81,    82,    83,    84,    85,    86,    89,    90,
+      91,    92,    93,    94,    95,    96,    97
 };
 
 #if YYDEBUG
@@ -73,30 +73,30 @@ static const yytype_uint16 yyrline[] =
      165,   164,   178,   177,   190,   198,   206,   210,   218,   224,
      225,   235,   236,   245,   249,   253,   257,   264,   266,   277,
      276,   310,   309,   348,   356,   355,   364,   370,   376,   381,
-     383,   385,   392,   400,   402,   399,   419,   424,   431,   430,
-     445,   453,   459,   466,   465,   480,   484,   489,   497,   515,
-     516,   521,   523,   525,   527,   529,   531,   533,   536,   542,
-     543,   548,   559,   560,   566,   572,   573,   578,   581,   585,
-     590,   594,   598,   599,   603,   609,   614,   619,   620,   625,
-     626,   631,   632,   634,   639,   641,   653,   654,   659,   661,
-     665,   685,   686,   688,   694,   759,   761,   767,   769,   773,
-     779,   780,   785,   784,   836,   837,   841,   843,   845,   847,
-     851,   853,   858,   862,   866,   870,   876,   881,   887,   893,
-     895,   898,   897,   908,   909,   913,   917,   920,   925,   930,
-     933,   937,   941,   944,   949,   953,   956,   958,   960,   965,
-     967,   969,   974,   976,   978,   980,   982,   984,   986,   988,
-     990,   992,   994,   999,  1001,  1004,  1006,  1008,  1011,  1014,
-    1025,  1028,  1035,  1037,  1039,  1041,  1043,  1046,  1060,  1062,
-    1066,  1067,  1068,  1069,  1070,  1072,  1074,  1076,  1078,  1080,
-    1082,  1084,  1086,  1088,  1090,  1092,  1094,  1096,  1098,  1108,
-    1118,  1128,  1138,  1140,  1142,  1145,  1150,  1154,  1156,  1158,
-    1160,  1163,  1165,  1168,  1170,  1172,  1174,  1176,  1178,  1180,
-    1182,  1184,  1187,  1189,  1191,  1193,  1195,  1197,  1201,  1204,
-    1203,  1216,  1217,  1218,  1222,  1224,  1226,  1231,  1233,  1236,
-    1238,  1240,  1245,  1247,  1252,  1253,  1258,  1259,  1265,  1269,
-    1270,  1271,  1274,  1275,  1278,  1279,  1282,  1286,  1290,  1296,
-    1302,  1304,  1308,  1312,  1313,  1317,  1318,  1322,  1323,  1328,
-    1330,  1332,  1335
+     383,   390,   398,   400,   397,   417,   422,   429,   428,   443,
+     451,   457,   464,   463,   478,   482,   487,   495,   513,   514,
+     519,   521,   523,   525,   527,   529,   531,   534,   540,   541,
+     546,   557,   558,   564,   570,   571,   576,   579,   583,   588,
+     592,   596,   597,   601,   607,   612,   617,   618,   623,   624,
+     629,   630,   632,   637,   639,   651,   652,   657,   659,   663,
+     683,   684,   686,   692,   757,   759,   765,   767,   771,   777,
+     778,   783,   782,   834,   835,   839,   841,   843,   845,   849,
+     851,   856,   860,   864,   868,   874,   879,   885,   891,   893,
+     896,   895,   906,   907,   911,   915,   918,   923,   928,   931,
+     935,   939,   942,   947,   951,   954,   956,   958,   963,   965,
+     967,   972,   974,   976,   978,   980,   982,   984,   986,   988,
+     990,   992,   997,   999,  1002,  1004,  1006,  1009,  1012,  1023,
+    1026,  1033,  1035,  1037,  1039,  1041,  1044,  1058,  1060,  1064,
+    1065,  1066,  1067,  1068,  1070,  1072,  1074,  1076,  1078,  1080,
+    1082,  1084,  1086,  1088,  1090,  1092,  1094,  1096,  1106,  1116,
+    1126,  1136,  1138,  1140,  1143,  1148,  1152,  1154,  1156,  1158,
+    1161,  1163,  1166,  1168,  1170,  1172,  1174,  1176,  1178,  1180,
+    1182,  1185,  1187,  1189,  1191,  1193,  1195,  1199,  1202,  1201,
+    1214,  1215,  1216,  1220,  1222,  1224,  1229,  1231,  1234,  1236,
+    1238,  1243,  1245,  1250,  1251,  1256,  1257,  1263,  1267,  1268,
+    1269,  1272,  1273,  1276,  1277,  1280,  1284,  1288,  1294,  1300,
+    1302,  1306,  1310,  1311,  1315,  1316,  1320,  1321,  1326,  1328,
+    1330,  1333
 };
 #endif
 
@@ -112,8 +112,8 @@ static const char *const yytname[] =
   "FUNC0OP", "FUNC0SUB", "UNIOPSUB", "LSTOPSUB", "PLUGEXPR", "PLUGSTMT",
   "LABEL", "FORMAT", "SUB", "ANONSUB", "PACKAGE", "USE", "WHILE", "UNTIL",
   "IF", "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "GIVEN", "WHEN",
-  "DEFAULT", "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC",
-  "UNIOP", "LSTOP", "RELOP", "EQOP", "MULOP", "ADDOP", "DOLSHARP", "DO",
+  "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC", "UNIOP",
+  "LSTOP", "RELOP", "EQOP", "MULOP", "ADDOP", "DOLSHARP", "DO",
   "HASHBRACK", "NOAMP", "LOCAL", "MY", "REQUIRE", "COLONATTR",
   "FORMLBRACK", "FORMRBRACK", "PREC_LOW", "OROP", "DOROP", "ANDOP",
   "NOTOP", "','", "ASSIGNOP", "'?'", "':'", "OROR", "DORDOR", "ANDAND",
@@ -149,81 +149,81 @@ static const yytype_uint16 yytoknum[] =
      284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
      294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
      304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,    44,   321,    63,
-      58,   322,   323,   324,   325,   326,   327,   328,    33,   126,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,    41,
-      40,    59,    36,    42,    47
+     314,   315,   316,   317,   318,   319,    44,   320,    63,    58,
+     321,   322,   323,   324,   325,   326,   327,    33,   126,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,    41,    40,
+      59,    36,    42,    47
 };
 # endif
 
-#define YYPACT_NINF -455
+#define YYPACT_NINF -437
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-455)))
+  (!!((Yystate) == (-437)))
 
-#define YYTABLE_NINF -268
+#define YYTABLE_NINF -267
 
 #define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-268)))
+  (!!((Yytable_value) == (-267)))
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     805,  -455,  -455,  -455,  -455,  -455,  -455,    18,  -455,  2795,
-      19,  1487,  1392,  -455,  -455,  -455,  1958,  2795,  2795,    32,
-      32,    32,  -455,    32,    32,  -455,  -455,    35,   -47,  -455,
-    2795,  -455,  -455,  -455,  2795,   -42,   -28,    -7,  1865,  1770,
-      32,  1865,  2051,    58,  2795,   133,  2795,  2795,  2795,  2795,
-    2795,  2795,  2795,  2144,    32,    32,   394,     8,  -455,     5,
-    -455,  -455,  -455,  -455,  2956,  -455,  -455,    -3,    45,    51,
-      59,  -455,    85,   126,   269,   108,  -455,  -455,  -455,  -455,
-    -455,    58,    98,  -455,    26,    44,    50,    57,   337,    62,
-      75,    19,    31,  -455,    82,  -455,    88,  2049,  1392,  -455,
-    -455,  -455,   632,   727,  -455,    33,   412,   412,  -455,  -455,
-    -455,  -455,  -455,  -455,  -455,  2795,    90,   115,  2795,    46,
-     500,    19,    16,  2956,   117,  2237,  1770,  -455,   500,   530,
-       8,  -455,   454,  2795,  -455,  -455,   500,   213,   184,  -455,
-    -455,  2795,   500,  2888,  2330,   162,  -455,  -455,  -455,   500,
-       8,   412,   412,   412,   504,   504,   223,   214,  -455,  -455,
-    2795,  2795,  2795,  2795,  2795,  2795,  2423,  2795,  2795,  2795,
-    2795,  2795,  2795,  2795,  2795,  2795,  2795,  2795,  2795,  2795,
-    2795,  2795,  -455,  -455,  -455,   312,  2516,  2795,  2795,  2795,
-    2795,  2795,  2795,  2795,  -455,   221,  -455,   224,  -455,  -455,
-    -455,  -455,  -455,   158,    72,  -455,  -455,   168,  -455,  -455,
-    -455,  -455,    19,  -455,  -455,  2795,  2795,  2795,  2795,  2795,
-    2795,  -455,  -455,  -455,  -455,  -455,  2795,  2795,    49,  -455,
-    -455,  -455,   174,   212,  -455,  -455,   424,   166,  2795,     8,
-    -455,   265,  -455,  2609,   412,   162,   167,   208,   239,  -455,
-     445,   267,  -455,  2795,   282,   220,   220,  -455,  2956,   292,
-      55,  -455,   545,  1569,   487,  1848,   709,   290,  2956,  2914,
-     389,   389,  1660,  1755,  1941,   311,   412,   412,  2795,  2795,
-     194,   200,   204,  -455,   215,  2702,    12,   227,   209,  -455,
-    -455,   602,   356,    67,   369,    78,   378,   165,   416,   822,
-    -455,   308,   235,    -2,   319,  2795,  2795,  2795,  2795,  -455,
-     229,  -455,  -455,   240,  -455,  -455,  -455,  -455,  1581,     7,
-    -455,  2795,  2795,  -455,   394,  -455,   394,   394,   394,   394,
-     394,   245,   -60,  -455,  2795,  -455,   212,   329,    19,  -455,
-    -455,   617,  -455,    15,   630,  -455,  -455,  -455,   179,  2795,
-     335,  -455,  -455,  2795,   492,   196,  -455,  -455,  -455,  -455,
-    -455,   638,  -455,  -455,  2795,  -455,   344,  -455,   345,  -455,
-     347,  -455,   349,  -455,  -455,  -455,   350,  -455,  -455,  -455,
-     340,   277,   394,   284,   285,   394,   293,   281,  -455,  -455,
-    -455,  -455,   300,   288,   322,  -455,  2795,   301,   303,  -455,
-    2795,   314,  -455,     9,   402,  -455,  -455,  -455,    27,  -455,
-     231,  -455,  2998,   406,  -455,  -455,   318,  -455,  -455,  -455,
-    -455,   321,   212,   174,  -455,  2795,  -455,  -455,   410,   410,
-    2795,  2795,   410,  -455,   320,   324,   410,   410,   394,  -455,
-    -455,  -455,   407,   407,  -455,  -455,  -455,   358,   328,  -455,
-    -455,  -455,  -455,   362,     2,   212,  -455,   339,   410,   410,
-    -455,    38,    38,   346,   357,    82,  2795,  2795,   410,  -455,
-    -455,  -455,   360,   360,     9,  -455,   917,  -455,  -455,  -455,
-    -455,   427,  1012,  -455,    82,    82,  -455,   410,   355,  -455,
-    -455,   410,   410,  -455,   361,   359,    82,  2795,  -455,  -455,
-    -455,  -455,   -10,  -455,  -455,  -455,  -455,  1107,  -455,  2795,
-      82,    82,  -455,   410,  -455,  2956,   376,   440,  -455,  1202,
-    -455,   379,  -455,  -455,  -455,    82,  -455,  -455,  -455,  -455,
-     410,  1675,  -455,  1297,    38,   381,  -455,  -455,   410,  -455
+     738,  -437,  -437,  -437,  -437,  -437,  -437,    28,  -437,  2801,
+      35,  1507,  1413,  -437,  -437,  -437,  1973,  2801,  2801,    70,
+      70,    70,  -437,    70,    70,  -437,  -437,    49,   -21,  -437,
+    2801,  -437,  -437,  -437,  2801,   -10,    -1,    18,  1881,  1787,
+      70,  1881,  2065,    42,  2801,   135,  2801,  2801,  2801,  2801,
+    2801,  2801,  2801,  2157,    70,    70,    34,    45,  -437,    14,
+    -437,  -437,  -437,  -437,  2919,  -437,  -437,    23,   152,   179,
+     228,  -437,    84,   235,   253,   116,  -437,  -437,  -437,  -437,
+    -437,    42,   106,  -437,    37,    44,    50,    53,   150,    57,
+      69,    29,  -437,   132,  -437,    46,  2155,  1413,  -437,  -437,
+    -437,   661,   755,  -437,   102,   457,   457,  -437,  -437,  -437,
+    -437,  -437,  -437,  -437,  2801,    90,   118,  2801,   124,   518,
+      35,    17,  2919,   125,  2249,  1787,  -437,   518,   560,    45,
+    -437,   485,  2801,  -437,  -437,   518,   216,   169,  -437,  -437,
+    2801,   518,  2893,  2341,   164,  -437,  -437,  -437,   518,    45,
+     457,   457,   457,   287,   287,   222,   187,  -437,  -437,  2801,
+    2801,  2801,  2801,  2801,  2801,  2433,  2801,  2801,  2801,  2801,
+    2801,  2801,  2801,  2801,  2801,  2801,  2801,  2801,  2801,  2801,
+    2801,  -437,  -437,  -437,    71,  2525,  2801,  2801,  2801,  2801,
+    2801,  2801,  2801,  -437,   227,  -437,   245,  -437,  -437,  -437,
+    -437,  -437,   158,   149,  -437,  -437,   156,  -437,  -437,  -437,
+      35,  -437,  -437,  2801,  2801,  2801,  2801,  2801,  2801,  -437,
+    -437,  -437,  -437,  -437,  2801,  2801,   194,  -437,  -437,  -437,
+     176,   211,  -437,  -437,   288,   182,  2801,    45,  -437,   274,
+    -437,  2617,   457,   164,    47,    59,   101,  -437,   394,   263,
+    -437,  2801,   282,   221,   221,  -437,  2919,   334,   209,  -437,
+     432,  1588,   443,  1956,   643,   248,  2919,   393,  1679,  1679,
+    1772,  1866,  2048,   530,   457,   457,  2801,  2801,   201,   204,
+     224,  -437,   226,  2709,    32,   230,   197,  -437,  -437,   438,
+     340,   217,   346,   251,   354,   280,   391,   849,  -437,   300,
+     212,     3,   299,  2801,  2801,  2801,  2801,  -437,   232,  -437,
+    -437,   236,  -437,  -437,  -437,  -437,  1600,    -7,  -437,  2801,
+    2801,  -437,    34,  -437,    34,    34,    34,    34,    34,   240,
+     -22,  -437,  2801,  -437,   211,   324,    35,  -437,  -437,   449,
+    -437,     4,   524,  -437,  -437,  -437,   293,  2801,   338,  -437,
+    -437,  2801,   408,   305,  -437,  -437,  -437,  -437,  -437,   575,
+    -437,  -437,  2801,  -437,   341,  -437,   345,  -437,   347,  -437,
+     360,  -437,  -437,  -437,   327,  -437,  -437,  -437,   351,   276,
+      34,   289,   295,    34,   302,   273,  -437,  -437,  -437,  -437,
+     303,   304,   357,  -437,  2801,   318,   323,  -437,  2801,   326,
+    -437,    30,   416,  -437,  -437,  -437,    15,  -437,   317,  -437,
+    2961,   423,  -437,  -437,   337,  -437,  -437,  -437,  -437,   342,
+     211,   176,  -437,  2801,  -437,  -437,   428,   428,  2801,  2801,
+     428,  -437,   339,   343,   428,   428,    34,  -437,  -437,  -437,
+     419,   419,  -437,  -437,  -437,   369,   349,  -437,  -437,  -437,
+    -437,   378,     5,   211,  -437,   356,   428,   428,  -437,    41,
+      41,   359,   362,   132,  2801,  2801,   428,  -437,  -437,  -437,
+     372,   372,    30,  -437,   943,  -437,  -437,  -437,  -437,   452,
+    1037,  -437,   132,   132,  -437,   428,   384,  -437,  -437,   428,
+     428,  -437,   395,   400,   132,  2801,  -437,  -437,  -437,  -437,
+       9,  -437,  -437,  -437,  -437,  1131,  -437,  2801,   132,   132,
+    -437,   428,  -437,  2919,   424,   480,  -437,  1225,  -437,   409,
+    -437,  -437,  -437,   132,  -437,  -437,  -437,  -437,   428,  1693,
+    -437,  1319,    41,   415,  -437,  -437,   428,  -437
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -231,88 +231,88 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     2,     4,     6,     8,    10,    12,     0,    16,   244,
+       0,     2,     4,     6,     8,    10,    12,     0,    16,   243,
        0,     0,     0,    19,     1,    19,     0,     0,     0,     0,
-       0,     0,   231,     0,     0,   202,   229,   190,   224,   226,
-     220,    85,   233,    85,   212,   222,     0,     0,   215,   242,
-       0,     0,     0,     0,     0,     0,   218,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   245,   119,   232,   197,
-     180,   181,   182,   183,   122,   187,     5,   203,   192,   195,
-     194,   196,   193,     0,     0,     0,    16,     7,    61,    27,
-      86,     0,     0,    84,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    57,    72,     9,     0,    62,     0,    11,
-      24,    23,     0,     0,   173,     0,   163,   164,   269,   272,
-     271,   270,   258,   259,   256,   242,     0,     0,     0,     0,
-     221,     0,    89,   213,     0,     0,   244,   216,   217,   269,
-     243,   129,   270,     0,   260,   179,   178,     0,     0,    87,
-      88,   242,   188,     0,     0,   235,   239,   241,   240,   219,
-     214,   165,   166,   185,   170,   171,   191,     0,   257,   262,
-       0,     0,     0,   120,     0,     0,     0,     0,     0,     0,
+       0,     0,   230,     0,     0,   201,   228,   189,   223,   225,
+     219,    84,   232,    84,   211,   221,     0,     0,   214,   241,
+       0,     0,     0,     0,     0,     0,   217,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   244,   118,   231,   196,
+     179,   180,   181,   182,   121,   186,     5,   202,   191,   194,
+     193,   195,   192,     0,     0,     0,    16,     7,    60,    27,
+      85,     0,     0,    83,     0,     0,     0,     0,     0,     0,
+       0,     0,    56,    71,     9,     0,    61,     0,    11,    24,
+      23,     0,     0,   172,     0,   162,   163,   268,   271,   270,
+     269,   257,   258,   255,   241,     0,     0,     0,     0,   220,
+       0,    88,   212,     0,     0,   243,   215,   216,   268,   242,
+     128,   269,     0,   259,   178,   177,     0,     0,    86,    87,
+     241,   187,     0,     0,   234,   238,   240,   239,   218,   213,
+     164,   165,   184,   169,   170,   190,     0,   256,   261,     0,
+       0,     0,   119,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   167,   168,   169,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    19,    83,    84,     0,    34,    16,
-      16,    16,    16,    16,     0,    16,    16,     0,    16,    16,
-      40,    56,     0,    52,    55,     0,     0,     0,     0,     0,
-       0,    26,    25,    20,   172,   127,   244,     0,     0,   225,
-     131,    90,     0,    91,   223,   227,     0,     0,     0,   123,
-     175,     0,   206,     0,   186,     0,   192,   195,   194,   238,
-       0,    95,   234,     0,   189,   117,   118,   116,   121,     0,
-       0,   145,     0,   158,   154,   155,   151,   152,   149,     0,
-     160,   161,   159,   157,   156,   153,   162,   150,     0,     0,
-     264,   266,     0,   133,     0,     0,     0,   268,   126,   134,
-     204,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      82,     0,    29,     0,     0,    77,     0,     0,     0,   254,
-       0,   255,   252,     0,   253,   249,   250,   251,     0,     0,
-      16,     0,     0,    73,    65,    66,    79,    63,    64,    67,
-      68,     0,   246,   147,   242,   112,    91,    93,     0,   228,
-     130,     0,   174,   191,     0,   236,   237,    94,     0,     0,
-       0,   138,   144,     0,     0,     0,   208,   209,   210,   261,
-     142,     0,   207,   211,   244,   205,     0,   136,     0,   198,
-       0,   199,     0,    14,    16,    28,    89,    16,    16,    33,
-       0,     0,    78,     0,     0,    80,     0,     0,   248,    16,
-      76,    81,     0,     0,    62,    48,     0,     0,     0,   128,
-       0,     0,   132,   110,     0,    92,   176,   124,   189,   148,
-       0,   141,   184,     0,   137,   143,     0,   139,   200,   201,
-     135,     0,    91,     0,    53,   242,    74,    74,     0,     0,
-       0,     0,     0,    43,     0,     0,     0,     0,   247,   230,
-      98,    99,    96,    96,   106,   105,   109,   111,     0,    19,
-     146,   140,   125,     0,     0,    91,    19,     0,     0,     0,
-      18,    69,    69,     0,     0,    72,    77,     0,     0,    38,
-      39,    97,   101,   101,   107,   113,     0,    21,   115,   114,
-      30,     0,     0,    35,    72,    72,    19,     0,     0,    36,
-      37,     0,     0,    51,     0,     0,    72,   102,   104,   100,
-     108,   177,     0,    19,    54,    41,    42,     0,    70,     0,
-      72,    72,    44,     0,    47,   103,    59,     0,    22,     0,
-      17,     0,    46,    50,    74,    72,    19,    58,    15,    32,
-       0,     0,    49,     0,    69,     0,    60,    71,     0,    45
+       0,   166,   167,   168,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    19,    82,    83,     0,    34,    16,    16,
+      16,    16,    16,     0,    16,    16,     0,    16,    16,    55,
+       0,    51,    54,     0,     0,     0,     0,     0,     0,    26,
+      25,    20,   171,   126,   243,     0,     0,   224,   130,    89,
+       0,    90,   222,   226,     0,     0,     0,   122,   174,     0,
+     205,     0,   185,     0,   191,   194,   193,   237,     0,    94,
+     233,     0,   188,   116,   117,   115,   120,     0,     0,   144,
+       0,   157,   153,   154,   150,   151,   148,     0,   159,   160,
+     158,   156,   155,   152,   161,   149,     0,     0,   263,   265,
+       0,   132,     0,     0,     0,   267,   125,   133,   203,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    81,     0,
+      29,     0,     0,    76,     0,     0,     0,   253,     0,   254,
+     251,     0,   252,   248,   249,   250,     0,     0,    16,     0,
+       0,    72,    64,    65,    78,    62,    63,    66,    67,     0,
+     245,   146,   241,   111,    90,    92,     0,   227,   129,     0,
+     173,   190,     0,   235,   236,    93,     0,     0,     0,   137,
+     143,     0,     0,     0,   207,   208,   209,   260,   141,     0,
+     206,   210,   243,   204,     0,   135,     0,   197,     0,   198,
+       0,    14,    16,    28,    88,    16,    16,    33,     0,     0,
+      77,     0,     0,    79,     0,     0,   247,    16,    75,    80,
+       0,     0,    61,    47,     0,     0,     0,   127,     0,     0,
+     131,   109,     0,    91,   175,   123,   188,   147,     0,   140,
+     183,     0,   136,   142,     0,   138,   199,   200,   134,     0,
+      90,     0,    52,   241,    73,    73,     0,     0,     0,     0,
+       0,    42,     0,     0,     0,     0,   246,   229,    97,    98,
+      95,    95,   105,   104,   108,   110,     0,    19,   145,   139,
+     124,     0,     0,    90,    19,     0,     0,     0,    18,    68,
+      68,     0,     0,    71,    76,     0,     0,    38,    39,    96,
+     100,   100,   106,   112,     0,    21,   114,   113,    30,     0,
+       0,    35,    71,    71,    19,     0,     0,    36,    37,     0,
+       0,    50,     0,     0,    71,   101,   103,    99,   107,   176,
+       0,    19,    53,    40,    41,     0,    69,     0,    71,    71,
+      43,     0,    46,   102,    58,     0,    22,     0,    17,     0,
+      45,    49,    73,    71,    19,    57,    15,    32,     0,     0,
+      48,     0,    68,     0,    59,    70,     0,    44
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -455,  -455,  -455,  -455,  -455,  -455,  -455,  -455,    10,  -455,
-     -36,  -112,  -455,   -15,  -455,   465,   384,     4,  -455,  -455,
-    -455,  -455,  -455,  -455,  -455,  -455,  -455,  -313,  -454,  -174,
-    -426,  -455,    17,   195,  -175,   -25,  -455,   325,   491,  -455,
-     462,   150,  -330,   309,   113,  -455,  -455,    84,  -455,    89,
-    -455,  -455,   136,  -455,  -455,    -6,   -20,  -455,  -455,  -455,
-    -455,  -455,  -455,  -455,  -455,    25,  -455,  -455,   419,  -106,
-    -122,  -455,  -455,   249,  -455,  -455,   371,   206,   -43,   -33,
-    -455,  -455,  -455,  -455,  -455,   243
+    -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,    10,  -437,
+     -60,  -126,  -437,   -15,  -437,   502,   418,     0,  -437,  -437,
+    -437,  -437,  -437,  -437,  -437,  -437,  -437,  -310,  -436,  -114,
+    -418,  -437,    52,   214,   -92,    20,  -437,   361,   486,  -437,
+     451,   172,  -329,   312,   133,  -437,  -437,   104,  -437,   112,
+    -437,  -437,   165,  -437,  -437,    -6,   -12,  -437,  -437,  -437,
+    -437,  -437,  -437,  -437,  -437,    25,  -437,  -437,   431,  -101,
+    -124,  -437,  -437,   270,  -437,  -437,   388,   233,   -43,   -41,
+    -437,  -437,  -437,  -437,  -437,    -2
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     7,     8,     9,    10,    11,    12,    13,    94,   375,
-      15,   461,   486,   102,   502,   223,   100,   101,   376,   377,
-     304,   466,   524,   434,   456,   518,   527,    96,   489,   213,
-     458,   391,   381,   325,   384,   393,   301,   198,   121,   195,
-     141,   233,   338,   252,   472,   443,   444,   498,   445,   446,
-     447,   448,   336,   403,   480,    97,    57,    58,   334,   288,
-      59,    60,    61,    62,    63,    64,   117,    65,   145,   131,
-      66,   401,   387,   312,   313,   206,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,   158
+      -1,     7,     8,     9,    10,    11,    12,    13,    93,   373,
+      15,   459,   484,   101,   500,   221,    99,   100,   374,   375,
+     302,   464,   522,   432,   454,   516,   525,    95,   487,   211,
+     456,   389,   379,   323,   382,   391,   299,   197,   120,   194,
+     140,   231,   336,   250,   470,   441,   442,   496,   443,   444,
+     445,   446,   334,   401,   478,    96,    57,    58,   332,   286,
+      59,    60,    61,    62,    63,    64,   116,    65,   144,   130,
+      66,   399,   385,   310,   311,   205,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,   157
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -320,723 +320,715 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     103,   459,   147,    56,   237,   390,   404,   378,   490,   225,
-     105,    76,   148,   516,   164,    95,   165,   163,    14,   130,
-      77,    76,    19,    20,   440,   441,   253,   150,    76,   110,
-     110,   110,   108,   110,   110,   242,   138,   109,   349,   231,
-     194,    76,   106,   107,   400,   224,   118,   157,   127,   110,
-     110,   135,   108,   119,   187,   120,   188,   109,   124,   123,
-    -263,   333,  -263,   128,   110,   110,   136,   351,  -265,   142,
-    -265,   149,   125,   151,   152,   153,   154,   155,   139,   367,
-     537,   487,   488,   140,  -238,   163,   232,    19,    20,    21,
-     369,   517,   454,   126,  -267,   130,  -237,   186,   531,   379,
-     247,   210,   222,   478,   331,   166,   160,   161,   162,    54,
-     248,   442,   228,   239,    54,   362,   -16,   193,   197,   236,
-      56,   130,   160,   161,   162,   481,   199,   212,   160,   161,
-     162,   230,   211,   386,    54,   189,   110,   190,   250,   311,
-     160,   161,   162,   392,   200,   229,   397,   398,    19,    20,
-     201,   160,   161,   162,   255,   256,   257,   202,   259,   260,
-     262,   316,   208,   305,   306,   307,   308,   310,   244,   318,
-     319,   317,   321,   322,    54,   209,   187,   371,   188,   299,
-     291,   292,   293,   294,   295,   296,   297,   298,   258,   214,
-     226,   409,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   332,   414,   324,
-     326,   327,   328,   329,   330,   227,   234,  -263,   390,  -263,
-      56,   435,   323,   240,   143,   111,   111,   111,   402,   111,
-     111,   251,   341,   144,   253,    54,  -239,   344,   160,   161,
-     162,   300,   416,   450,   303,   132,   111,   348,  -265,   309,
-    -265,   146,   160,   161,   162,   463,   464,   160,   161,   162,
-     111,   111,   112,   113,   114,   340,   115,   116,   320,   160,
-     161,   162,   354,   355,   335,   342,   316,  -241,   191,   361,
-     192,   337,   133,   134,   396,   241,   317,   160,   161,   162,
-     347,   493,   495,   349,   207,   162,   110,   356,   159,   382,
-     326,   385,   385,   357,   160,   161,   162,   358,  -240,   364,
-     505,   506,   394,   254,   130,   385,   385,   462,   359,   457,
-     465,   278,   514,   279,   469,   470,   374,   280,   281,   282,
-     363,    54,   132,   283,   521,   -31,   522,   523,   421,   380,
-     389,   423,   424,   410,   399,   411,   484,   485,   406,   246,
-     170,   532,   405,   431,   417,   418,   496,   419,    56,   420,
-     425,   215,   216,   217,   218,   160,   161,   162,   219,   238,
-     220,   170,   171,   231,   284,   508,   426,   180,   412,   510,
-     511,   430,   181,   427,   428,   182,   183,   184,   185,   433,
-     385,   289,   429,   350,   438,   160,   161,   162,   180,   432,
-     436,   525,   437,   181,   203,   130,   182,   183,   184,   185,
-     315,   449,   285,   439,   286,   287,   451,   452,   534,   460,
-     467,   -80,   453,   468,   385,   385,   539,   475,   204,   160,
-     161,   162,   471,   477,   476,   474,   503,   205,   497,    54,
-     483,   482,   160,   161,   162,   491,   526,   168,   169,   170,
-     171,   160,   161,   162,  -192,   509,   492,   366,   513,   528,
-     382,   385,   512,   187,   479,   188,  -192,   160,   161,   162,
-     368,   507,   176,   177,   178,   179,   180,    99,   530,   370,
-     538,   181,   221,   494,   182,   183,   184,   185,   519,   160,
-     161,   162,   111,  -192,  -192,  -192,  -192,   160,   161,   162,
-    -192,   383,  -192,   385,   181,  -192,   535,   182,   183,   184,
-     185,   533,  -192,  -192,  -192,  -192,   388,   372,   160,   161,
-     162,   302,   515,   339,   122,   315,   422,  -192,  -192,  -192,
-    -231,  -192,  -192,  -192,  -192,  -192,  -192,  -192,  -192,  -192,
-    -192,  -192,  -231,   196,   346,  -268,  -192,   170,   171,  -192,
-    -192,  -192,  -192,  -192,   345,  -192,   473,   499,  -192,   455,
-     170,   171,   245,   500,     0,   160,   161,   162,   395,  -231,
-    -231,  -231,  -231,   179,   180,   314,  -231,     0,  -231,   181,
-       0,  -231,   182,   183,   184,   185,   179,   180,  -231,  -231,
-    -231,  -231,   181,   413,     0,   182,   183,   184,   185,  -268,
-    -268,  -268,   185,  -231,  -231,  -231,     0,  -231,  -231,  -231,
-    -231,  -231,  -231,  -231,  -231,  -231,  -231,  -231,   160,   161,
-     162,     0,  -231,     0,     0,  -231,  -231,  -231,  -231,  -231,
-       0,  -231,   -13,    78,  -231,     0,     0,     0,     0,     0,
-       0,    76,     0,    16,   352,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,    79,    98,    80,    81,    33,    82,
-      83,    84,    85,    86,    87,   160,   161,   162,    88,    89,
-      90,    91,    34,     0,    92,    35,    36,    37,    38,    39,
-     160,   161,   162,     0,    40,    41,    42,    43,    44,    45,
-      46,   365,     0,   160,   161,   162,     0,     0,    47,     0,
-       0,   160,   161,   162,     0,     0,   407,     0,     0,     0,
-      48,    49,     0,    50,     0,    51,    52,    -3,    78,   408,
-       0,     0,    53,    93,    54,    55,    76,   415,    16,     0,
-      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
-      25,    26,     0,    27,    28,    29,    30,    31,    32,    79,
-      98,    80,    81,    33,    82,    83,    84,    85,    86,    87,
-       0,     0,     0,    88,    89,    90,    91,    34,     0,    92,
-      35,    36,    37,    38,    39,     0,     0,     0,     0,    40,
-      41,    42,    43,    44,    45,    46,   180,     0,     0,     0,
-       0,   181,     0,    47,   182,   183,   184,   185,     1,     2,
-       3,     4,     5,     6,     0,    48,    49,     0,    50,     0,
-      51,    52,     0,    78,     0,     0,     0,    53,    93,    54,
-      55,    76,   373,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,    79,    98,    80,    81,    33,    82,
-      83,    84,    85,    86,    87,     0,     0,     0,    88,    89,
-      90,    91,    34,     0,    92,    35,    36,    37,    38,    39,
-       0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
-      46,     0,     0,     0,     0,     0,     0,     0,    47,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      48,    49,     0,    50,     0,    51,    52,     0,    78,     0,
-       0,     0,    53,    93,    54,    55,    76,   501,    16,     0,
-      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
-      25,    26,     0,    27,    28,    29,    30,    31,    32,    79,
-      98,    80,    81,    33,    82,    83,    84,    85,    86,    87,
-       0,     0,     0,    88,    89,    90,    91,    34,     0,    92,
-      35,    36,    37,    38,    39,     0,     0,     0,     0,    40,
-      41,    42,    43,    44,    45,    46,     0,     0,     0,     0,
-       0,     0,     0,    47,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    48,    49,     0,    50,     0,
-      51,    52,     0,    78,     0,     0,     0,    53,    93,    54,
-      55,    76,   504,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,    79,    98,    80,    81,    33,    82,
-      83,    84,    85,    86,    87,     0,     0,     0,    88,    89,
-      90,    91,    34,     0,    92,    35,    36,    37,    38,    39,
-       0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
-      46,     0,     0,     0,     0,     0,     0,     0,    47,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      48,    49,     0,    50,     0,    51,    52,     0,    78,     0,
-       0,     0,    53,    93,    54,    55,    76,   520,    16,     0,
-      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
-      25,    26,     0,    27,    28,    29,    30,    31,    32,    79,
-      98,    80,    81,    33,    82,    83,    84,    85,    86,    87,
-       0,     0,     0,    88,    89,    90,    91,    34,     0,    92,
-      35,    36,    37,    38,    39,     0,     0,     0,     0,    40,
-      41,    42,    43,    44,    45,    46,     0,     0,     0,     0,
-       0,     0,     0,    47,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    48,    49,     0,    50,     0,
-      51,    52,     0,    78,     0,     0,     0,    53,    93,    54,
-      55,    76,   529,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,    79,    98,    80,    81,    33,    82,
-      83,    84,    85,    86,    87,     0,     0,     0,    88,    89,
-      90,    91,    34,     0,    92,    35,    36,    37,    38,    39,
+     102,   235,   146,    56,   147,   402,   388,   457,    19,    20,
+     104,    94,   376,   223,    76,   251,   193,   111,   112,   113,
+      77,   114,   115,   163,   488,   164,   347,   129,    14,   109,
+     109,   109,   514,   109,   109,   149,   137,   132,   133,   240,
+     229,    76,   105,   106,    76,   438,   439,   156,   126,   109,
+     109,   134,   107,   158,   162,   119,   186,   108,   187,   122,
+     117,   230,   138,   127,   109,   109,   135,   139,  -262,   141,
+    -262,   148,  -237,   150,   151,   152,   153,   154,   118,    76,
+     276,   398,   277,  -236,   485,   486,   278,   279,   280,   123,
+     107,   452,   281,  -266,    54,   108,   535,   220,   124,   245,
+     329,   246,   129,   377,   529,   476,   159,   160,   161,   515,
+    -264,   226,  -264,   165,   222,  -238,   -16,   125,   234,    56,
+     237,   162,   185,   236,   479,   192,   196,  -240,   129,   209,
+     228,   440,   282,    54,   360,   109,   198,   248,   303,   304,
+     305,   306,   308,   199,   316,   317,   212,   319,   320,   200,
+      19,    20,   201,   253,   254,   255,   207,   257,   258,   260,
+     314,   186,   315,   187,    19,    20,    21,   242,   208,  -239,
+     283,    54,   284,   285,   159,   160,   161,   210,   297,   289,
+     290,   291,   292,   293,   294,   295,   296,   256,  -262,   224,
+    -262,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   331,   322,   324,   325,
+     326,   327,   328,   330,   384,   309,   202,   225,    56,   388,
+     321,   349,   227,   232,   390,   142,   238,   395,   396,   365,
+     339,   400,   249,   251,   143,   342,    54,  -264,   414,  -264,
+     203,   159,   160,   161,   188,   346,   189,   298,   307,   204,
+      54,    54,   110,   110,   110,   318,   110,   110,   394,   159,
+     160,   161,   190,   367,   191,   301,   159,   160,   161,   239,
+     352,   353,   131,   110,   314,   333,   315,   359,   145,   335,
+     338,   159,   160,   161,   340,   252,   345,   110,   110,   159,
+     160,   161,   369,   347,   109,   161,   362,   380,   324,   383,
+     383,   460,   433,   354,   463,   407,   355,   169,   467,   468,
+     392,   -31,   419,   383,   383,   421,   422,   412,   372,   378,
+     129,   206,   455,   159,   160,   161,   356,   429,   357,   448,
+     482,   483,   361,    54,   179,   387,   461,   462,   397,   180,
+     494,   408,   181,   182,   183,   184,   404,   403,   409,   491,
+     229,   415,   159,   160,   161,   416,    56,   417,   131,   506,
+     159,   160,   161,   508,   509,   159,   160,   161,   503,   504,
+     418,   423,   428,   493,   424,   244,   410,   159,   160,   161,
+     512,  -267,  -267,  -267,   184,   523,   337,   425,   383,   159,
+     160,   161,   436,   426,   520,   521,   213,   214,   215,   216,
+     427,   430,   532,   217,   431,   218,   159,   160,   161,   530,
+     537,   129,   159,   160,   161,   519,   434,   287,   159,   160,
+     161,   435,   383,   383,   437,   447,   159,   160,   161,   159,
+     160,   161,   474,   449,   348,   450,   313,   458,   465,   480,
+     364,   466,   451,   166,   469,   472,   366,   473,   475,   495,
+     167,   168,   169,   170,   368,   -79,   481,   489,   380,   383,
+     490,   501,   477,   159,   160,   161,   159,   160,   161,   505,
+     171,   172,   351,   173,   174,   175,   176,   177,   178,   179,
+     159,   160,   161,   507,   180,  -191,   517,   181,   182,   183,
+     184,   370,   344,   524,   186,   510,   187,  -191,   511,   526,
+    -267,   383,   169,   170,   159,   160,   161,   528,   411,   531,
+     159,   160,   161,   536,    98,   219,   492,   110,   381,   121,
+     513,   159,   160,   161,  -191,  -191,  -191,  -191,   178,   179,
+     350,  -191,   195,  -191,   180,  -191,   363,   181,   182,   183,
+     184,   386,  -191,  -191,  -191,  -191,   420,   405,   180,   533,
+     313,   181,   182,   183,   184,   343,   300,  -191,  -191,  -191,
+    -230,  -191,  -191,  -191,  -191,  -191,  -191,  -191,  -191,  -191,
+    -191,  -191,  -230,   243,   471,   497,  -191,   169,   170,  -191,
+    -191,  -191,  -191,  -191,   498,  -191,   453,   393,  -191,   169,
+     170,   312,     0,     0,     0,     0,   159,   160,   161,  -230,
+    -230,  -230,  -230,   178,   179,     0,  -230,     0,  -230,   180,
+    -230,     0,   181,   182,   183,   184,   179,  -230,  -230,  -230,
+    -230,   180,   406,     0,   181,   182,   183,   184,     0,     0,
+       0,     0,  -230,  -230,  -230,     0,  -230,  -230,  -230,  -230,
+    -230,  -230,  -230,  -230,  -230,  -230,  -230,   159,   160,   161,
+       0,  -230,     0,     0,  -230,  -230,  -230,  -230,  -230,     0,
+    -230,   -13,    78,  -230,     0,     0,     0,     0,     0,     0,
+      76,     0,    16,   413,    17,    18,    19,    20,    21,     0,
+       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
+      30,    31,    32,    79,    97,    80,    81,    33,    82,    83,
+      84,    85,    86,    87,     0,     0,     0,    88,    89,    90,
+      34,     0,    91,    35,    36,    37,    38,    39,     0,     0,
+       0,     0,    40,    41,    42,    43,    44,    45,    46,   179,
+       0,     0,     0,     0,   180,     0,    47,   181,   182,   183,
+     184,     1,     2,     3,     4,     5,     6,     0,    48,    49,
+       0,    50,     0,    51,    52,    -3,    78,     0,     0,     0,
+      53,    92,    54,    55,    76,     0,    16,     0,    17,    18,
+      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
+       0,    27,    28,    29,    30,    31,    32,    79,    97,    80,
+      81,    33,    82,    83,    84,    85,    86,    87,     0,     0,
+       0,    88,    89,    90,    34,     0,    91,    35,    36,    37,
+      38,    39,     0,     0,     0,     0,    40,    41,    42,    43,
+      44,    45,    46,     0,     0,     0,     0,     0,     0,     0,
+      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    48,    49,     0,    50,     0,    51,    52,     0,
+      78,     0,     0,     0,    53,    92,    54,    55,    76,   371,
+      16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
+      23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
+      32,    79,    97,    80,    81,    33,    82,    83,    84,    85,
+      86,    87,     0,     0,     0,    88,    89,    90,    34,     0,
+      91,    35,    36,    37,    38,    39,     0,     0,     0,     0,
+      40,    41,    42,    43,    44,    45,    46,     0,     0,     0,
+       0,     0,     0,     0,    47,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    48,    49,     0,    50,
+       0,    51,    52,     0,    78,     0,     0,     0,    53,    92,
+      54,    55,    76,   499,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,    79,    97,    80,    81,    33,
+      82,    83,    84,    85,    86,    87,     0,     0,     0,    88,
+      89,    90,    34,     0,    91,    35,    36,    37,    38,    39,
        0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
       46,     0,     0,     0,     0,     0,     0,     0,    47,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       48,    49,     0,    50,     0,    51,    52,     0,    78,     0,
-       0,     0,    53,    93,    54,    55,    76,     0,    16,     0,
+       0,     0,    53,    92,    54,    55,    76,   502,    16,     0,
       17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
       25,    26,     0,    27,    28,    29,    30,    31,    32,    79,
-      98,    80,    81,    33,    82,    83,    84,    85,    86,    87,
-       0,     0,     0,    88,    89,    90,    91,    34,     0,    92,
-      35,    36,    37,    38,    39,     0,     0,     0,     0,    40,
-      41,    42,    43,    44,    45,    46,     0,     0,   536,     0,
-       0,     0,     0,    47,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    48,    49,     0,    50,     0,
-      51,    52,     0,    78,     0,     0,     0,    53,    93,    54,
-      55,    76,     0,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,    79,    98,    80,    81,    33,    82,
-      83,    84,    85,    86,    87,     0,     0,     0,    88,    89,
-      90,    91,    34,     0,    92,    35,    36,    37,    38,    39,
+      97,    80,    81,    33,    82,    83,    84,    85,    86,    87,
+       0,     0,     0,    88,    89,    90,    34,     0,    91,    35,
+      36,    37,    38,    39,     0,     0,     0,     0,    40,    41,
+      42,    43,    44,    45,    46,     0,     0,     0,     0,     0,
+       0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    48,    49,     0,    50,     0,    51,
+      52,     0,    78,     0,     0,     0,    53,    92,    54,    55,
+      76,   518,    16,     0,    17,    18,    19,    20,    21,     0,
+       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
+      30,    31,    32,    79,    97,    80,    81,    33,    82,    83,
+      84,    85,    86,    87,     0,     0,     0,    88,    89,    90,
+      34,     0,    91,    35,    36,    37,    38,    39,     0,     0,
+       0,     0,    40,    41,    42,    43,    44,    45,    46,     0,
+       0,     0,     0,     0,     0,     0,    47,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
+       0,    50,     0,    51,    52,     0,    78,     0,     0,     0,
+      53,    92,    54,    55,    76,   527,    16,     0,    17,    18,
+      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
+       0,    27,    28,    29,    30,    31,    32,    79,    97,    80,
+      81,    33,    82,    83,    84,    85,    86,    87,     0,     0,
+       0,    88,    89,    90,    34,     0,    91,    35,    36,    37,
+      38,    39,     0,     0,     0,     0,    40,    41,    42,    43,
+      44,    45,    46,     0,     0,     0,     0,     0,     0,     0,
+      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    48,    49,     0,    50,     0,    51,    52,     0,
+      78,     0,     0,     0,    53,    92,    54,    55,    76,     0,
+      16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
+      23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
+      32,    79,    97,    80,    81,    33,    82,    83,    84,    85,
+      86,    87,     0,     0,     0,    88,    89,    90,    34,     0,
+      91,    35,    36,    37,    38,    39,     0,     0,     0,     0,
+      40,    41,    42,    43,    44,    45,    46,     0,     0,   534,
+       0,     0,     0,     0,    47,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    48,    49,     0,    50,
+       0,    51,    52,     0,    78,     0,     0,     0,    53,    92,
+      54,    55,    76,     0,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,    79,    97,    80,    81,    33,
+      82,    83,    84,    85,    86,    87,     0,     0,     0,    88,
+      89,    90,    34,     0,    91,    35,    36,    37,    38,    39,
        0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
       46,     0,     0,     0,     0,     0,     0,     0,    47,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       48,    49,     0,    50,     0,    51,    52,     0,    78,     0,
-       0,     0,    53,    93,    54,    55,    76,     0,    16,     0,
+       0,     0,    53,    92,    54,    55,    76,     0,    16,     0,
       17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
       25,    26,     0,    27,    28,    29,    30,    31,    32,    79,
        0,    80,    81,    33,    82,    83,    84,    85,    86,    87,
-       0,     0,     0,    88,    89,    90,    91,    34,     0,    92,
-      35,    36,    37,    38,    39,     0,     0,     0,     0,    40,
-      41,    42,    43,    44,    45,    46,     0,     0,     0,     0,
-       0,     0,     0,    47,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    48,    49,     0,    50,     0,
-      51,    52,    78,     0,     0,     0,     0,    53,    93,    54,
-      55,     0,    16,     0,    17,    18,    19,    20,    21,     0,
+       0,     0,     0,    88,    89,    90,    34,     0,    91,    35,
+      36,    37,    38,    39,     0,     0,     0,     0,    40,    41,
+      42,    43,    44,    45,    46,     0,     0,     0,     0,     0,
+       0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    48,    49,     0,    50,     0,    51,
+      52,    78,     0,     0,     0,     0,    53,    92,    54,    55,
+       0,    16,     0,    17,    18,    19,    20,    21,     0,     0,
+      22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,    33,     0,  -267,     0,
+       0,     0,     0,     0,     0,   167,   168,   169,   170,    34,
+       0,     0,    35,    36,    37,    38,    39,     0,     0,     0,
+       0,    40,    41,    42,    43,    44,    45,    46,   173,   174,
+     175,   176,   177,   178,   179,    47,     0,     0,     0,   180,
+       0,     0,   181,   182,   183,   184,     0,    48,    49,     0,
+      50,     0,    51,    52,    78,     0,     0,     0,     0,    53,
+     -74,    54,    55,     0,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
+       0,     0,     0,     0,     0,     0,   167,   168,   169,   170,
+       0,     0,    34,     0,     0,    35,    36,    37,    38,    39,
+       0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
+      46,   175,   176,   177,   178,   179,     0,     0,    47,     0,
+     180,     0,     0,   181,   182,   183,   184,     0,     0,     0,
+      48,    49,     0,    50,     0,    51,    52,     0,     0,     0,
+       0,   -74,    53,     0,    54,    55,    76,     0,    16,     0,
+      17,    18,    19,    20,    21,     0,     0,   128,    23,    24,
+      25,    26,   108,    27,    28,    29,    30,    31,    32,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,   167,
+     168,   169,   170,     0,     0,     0,    34,     0,     0,    35,
+      36,    37,    38,    39,     0,     0,     0,     0,    40,    41,
+      42,    43,    44,    45,    46,   176,   177,   178,   179,     0,
+       0,     0,    47,   180,     0,     0,   181,   182,   183,   184,
+       0,     0,     0,     0,    48,    49,     0,    50,     0,    51,
+      52,     0,     0,     0,     0,     0,    53,     0,    54,    55,
+      76,     0,    16,     0,    17,    18,    19,    20,    21,     0,
        0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
       30,    31,    32,     0,     0,     0,     0,    33,     0,     0,
-    -268,     0,     0,     0,     0,     0,     0,   168,   169,   170,
-     171,    34,     0,     0,    35,    36,    37,    38,    39,     0,
-       0,     0,     0,    40,    41,    42,    43,    44,    45,    46,
-     174,   175,   176,   177,   178,   179,   180,    47,     0,     0,
-       0,   181,     0,     0,   182,   183,   184,   185,     0,    48,
-      49,     0,    50,     0,    51,    52,    78,     0,     0,     0,
-       0,    53,   -75,    54,    55,     0,    16,     0,    17,    18,
-      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
-       0,    27,    28,    29,    30,    31,    32,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,   168,   169,
-     170,   171,     0,     0,     0,    34,     0,     0,    35,    36,
-      37,    38,    39,     0,     0,     0,     0,    40,    41,    42,
-      43,    44,    45,    46,   177,   178,   179,   180,     0,     0,
-       0,    47,   181,     0,     0,   182,   183,   184,   185,     0,
-       0,     0,     0,    48,    49,     0,    50,     0,    51,    52,
-       0,     0,     0,     0,   -75,    53,     0,    54,    55,    76,
-       0,    16,     0,    17,    18,    19,    20,    21,     0,     0,
-     129,    23,    24,    25,    26,   109,    27,    28,    29,    30,
-      31,    32,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,   168,   169,   170,   171,     0,     0,     0,
+       0,     0,     0,   167,   168,   169,   170,     0,     0,     0,
       34,     0,     0,    35,    36,    37,    38,    39,     0,     0,
        0,     0,    40,    41,    42,    43,    44,    45,    46,     0,
-     178,   179,   180,     0,     0,     0,    47,   181,     0,     0,
-     182,   183,   184,   185,     0,     0,     0,     0,    48,    49,
+     177,   178,   179,     0,     0,     0,    47,   180,     0,     0,
+     181,   182,   183,   184,     0,     0,     0,     0,    48,    49,
        0,    50,     0,    51,    52,     0,     0,     0,     0,     0,
-      53,     0,    54,    55,    76,     0,    16,     0,    17,    18,
+      53,     0,    54,    55,    16,   103,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
+       0,     0,     0,   167,  -267,   169,   170,     0,     0,     0,
+       0,     0,    34,     0,     0,    35,    36,    37,    38,    39,
+       0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
+      46,   178,   179,     0,     0,     0,     0,   180,    47,     0,
+     181,   182,   183,   184,     0,     0,     0,     0,     0,     0,
+      48,    49,     0,    50,     0,    51,    52,     0,     0,     0,
+       0,     0,    53,     0,    54,    55,    16,     0,    17,    18,
       19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
        0,    27,    28,    29,    30,    31,    32,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,   168,  -268,   170,   171,
-       0,     0,     0,     0,     0,    34,     0,     0,    35,    36,
-      37,    38,    39,     0,     0,     0,     0,    40,    41,    42,
-      43,    44,    45,    46,   179,   180,     0,     0,     0,     0,
-     181,    47,     0,   182,   183,   184,   185,     0,     0,     0,
-       0,     0,     0,    48,    49,     0,    50,     0,    51,    52,
-       0,     0,     0,     0,     0,    53,     0,    54,    55,    16,
-     104,    17,    18,    19,    20,    21,     0,     0,    22,    23,
-      24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,   168,
-     169,   170,   171,     0,     0,     0,     0,     0,    34,     0,
-       0,    35,    36,    37,    38,    39,     0,     0,     0,     0,
-      40,    41,    42,    43,    44,    45,    46,   179,   180,     0,
-       0,     0,     0,   181,    47,     0,   182,   183,   184,   185,
-       0,     0,     0,     0,     0,     0,    48,    49,     0,    50,
-       0,    51,    52,     0,     0,     0,     0,     0,    53,     0,
-      54,    55,    16,     0,    17,    18,    19,    20,    21,     0,
-       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
-      30,    31,    32,     0,     0,     0,     0,    33,   215,   216,
-     217,   218,     0,     0,     0,   219,     0,   220,     0,     0,
-       0,    34,     0,     0,    35,    36,    37,    38,    39,     0,
-       0,     0,     0,    40,    41,    42,    43,    44,    45,    46,
-       0,     0,   160,   161,   162,     0,     0,    47,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
-      49,     0,    50,     0,    51,    52,     0,     0,     0,     0,
-       0,    53,   137,    54,    55,    16,     0,    17,    18,    19,
-      20,    21,     0,     0,    22,    23,    24,    25,    26,     0,
-      27,    28,    29,    30,    31,    32,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,   167,   168,   169,   170,     0,
        0,     0,     0,     0,    34,     0,     0,    35,    36,    37,
       38,    39,     0,     0,     0,     0,    40,    41,    42,    43,
-      44,    45,    46,     0,     0,     0,     0,     0,     0,     0,
-      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      44,    45,    46,   178,   179,     0,     0,     0,     0,   180,
+      47,     0,   181,   182,   183,   184,     0,     0,     0,     0,
        0,     0,    48,    49,     0,    50,     0,    51,    52,     0,
-       0,     0,     0,   156,    53,     0,    54,    55,    16,     0,
+       0,     0,     0,     0,    53,   136,    54,    55,    16,     0,
       17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
       25,    26,     0,    27,    28,    29,    30,    31,    32,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
-      35,    36,    37,    38,    39,     0,     0,     0,     0,    40,
-      41,    42,    43,    44,    45,    46,     0,     0,     0,     0,
-       0,     0,     0,    47,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    48,    49,     0,    50,     0,
-      51,    52,     0,     0,     0,     0,   235,    53,     0,    54,
-      55,    16,     0,    17,    18,    19,    20,    21,     0,     0,
-      22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
-      31,    32,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,     0,     0,    33,   213,   214,   215,   216,     0,     0,
+       0,   217,     0,   218,     0,     0,    34,     0,     0,    35,
+      36,    37,    38,    39,     0,     0,     0,     0,    40,    41,
+      42,    43,    44,    45,    46,     0,     0,   159,   160,   161,
+       0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    48,    49,     0,    50,     0,    51,
+      52,     0,     0,     0,     0,   155,    53,     0,    54,    55,
+      16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
+      23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
+      32,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,    35,    36,    37,    38,    39,     0,     0,     0,     0,
+      40,    41,    42,    43,    44,    45,    46,     0,     0,     0,
+       0,     0,     0,     0,    47,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    48,    49,     0,    50,
+       0,    51,    52,     0,     0,     0,     0,   233,    53,     0,
+      54,    55,    16,     0,    17,    18,    19,    20,    21,     0,
+       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
+      30,    31,    32,     0,     0,     0,     0,    33,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       34,     0,     0,    35,    36,    37,    38,    39,     0,     0,
        0,     0,    40,    41,    42,    43,    44,    45,    46,     0,
        0,     0,     0,     0,     0,     0,    47,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
-       0,    50,     0,    51,    52,     0,     0,     0,     0,   249,
+       0,    50,     0,    51,    52,     0,     0,     0,     0,   247,
       53,     0,    54,    55,    16,     0,    17,    18,    19,    20,
       21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
       28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,     0,    35,    36,    37,    38,
-      39,     0,     0,     0,     0,    40,    41,    42,    43,    44,
-      45,    46,     0,     0,     0,     0,     0,     0,     0,    47,
+       0,     0,    34,     0,     0,    35,    36,    37,    38,    39,
+       0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
+      46,     0,     0,     0,     0,     0,     0,     0,    47,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    48,    49,     0,    50,     0,    51,    52,     0,     0,
-       0,     0,   261,    53,     0,    54,    55,    16,     0,    17,
-      18,    19,    20,    21,     0,     0,    22,    23,    24,    25,
-      26,     0,    27,    28,    29,    30,    31,    32,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
+      48,    49,     0,    50,     0,    51,    52,     0,     0,     0,
+       0,   259,    53,     0,    54,    55,    16,     0,    17,    18,
+      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
+       0,    27,    28,    29,    30,    31,    32,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    34,     0,     0,    35,    36,    37,
+      38,    39,     0,     0,     0,     0,    40,    41,    42,    43,
+      44,    45,    46,     0,     0,     0,     0,     0,     0,     0,
+      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    48,    49,     0,    50,     0,    51,    52,     0,
+       0,     0,     0,   288,    53,     0,    54,    55,    16,     0,
+      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
+      25,    26,     0,    27,    28,    29,    30,    31,    32,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    34,     0,     0,    35,
       36,    37,    38,    39,     0,     0,     0,     0,    40,    41,
       42,    43,    44,    45,    46,     0,     0,     0,     0,     0,
        0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    48,    49,     0,    50,     0,    51,
-      52,     0,     0,     0,     0,   290,    53,     0,    54,    55,
+      52,     0,     0,     0,     0,   341,    53,     0,    54,    55,
       16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
       23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
       32,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
-       0,     0,    35,    36,    37,    38,    39,     0,     0,     0,
-       0,    40,    41,    42,    43,    44,    45,    46,     0,     0,
-       0,     0,     0,     0,     0,    47,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
-      50,     0,    51,    52,     0,     0,     0,     0,   343,    53,
-       0,    54,    55,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,    35,    36,    37,    38,    39,
-       0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
-      46,     0,     0,     0,     0,     0,     0,     0,    47,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      48,    49,     0,    50,     0,    51,    52,     0,     0,     0,
-       0,   360,    53,     0,    54,    55,    16,     0,    17,    18,
-      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
-       0,    27,    28,    29,    30,    31,    32,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,     0,    35,    36,
-      37,    38,    39,     0,     0,     0,     0,    40,    41,    42,
-      43,    44,    45,    46,     0,     0,     0,     0,     0,     0,
-       0,    47,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    48,    49,     0,    50,     0,    51,    52,
-       0,     0,     0,     0,     0,    53,     0,    54,    55,    16,
-       0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
-      24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
        0,    35,    36,    37,    38,    39,     0,     0,     0,     0,
       40,    41,    42,    43,    44,    45,    46,     0,     0,     0,
-       0,     0,     0,     0,    47,   167,     0,     0,     0,     0,
-       0,     0,   168,   169,   170,   171,    48,    49,     0,    50,
-       0,    51,    52,     0,     0,     0,     0,     0,   243,     0,
-      54,    55,   172,   173,   353,   174,   175,   176,   177,   178,
-     179,   180,     0,     0,     0,     0,   181,   167,     0,   182,
-     183,   184,   185,     0,   168,   169,   170,   171,     0,     0,
+       0,     0,     0,     0,    47,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    48,    49,     0,    50,
+       0,    51,    52,     0,     0,     0,     0,   358,    53,     0,
+      54,    55,    16,     0,    17,    18,    19,    20,    21,     0,
+       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
+      30,    31,    32,     0,     0,     0,     0,    33,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   172,   173,     0,   174,   175,   176,
-     177,   178,   179,   180,     0,     0,     0,     0,   181,   167,
-       0,   182,   183,   184,   185,     0,   168,   169,   170,   171,
+      34,     0,     0,    35,    36,    37,    38,    39,     0,     0,
+       0,     0,    40,    41,    42,    43,    44,    45,    46,     0,
+       0,     0,     0,     0,     0,     0,    47,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
+       0,    50,     0,    51,    52,     0,     0,     0,     0,     0,
+      53,     0,    54,    55,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   173,     0,   174,
-     175,   176,   177,   178,   179,   180,     0,     0,     0,     0,
-     181,     0,     0,   182,   183,   184,   185
+       0,     0,    34,     0,     0,    35,    36,    37,    38,    39,
+       0,     0,     0,     0,    40,    41,    42,    43,    44,    45,
+      46,     0,     0,     0,     0,     0,     0,     0,    47,   166,
+       0,     0,     0,     0,     0,     0,   167,   168,   169,   170,
+      48,    49,     0,    50,     0,    51,    52,     0,     0,     0,
+       0,     0,   241,     0,    54,    55,   171,   172,     0,   173,
+     174,   175,   176,   177,   178,   179,     0,     0,     0,     0,
+     180,   166,     0,   181,   182,   183,   184,     0,   167,   168,
+     169,   170,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   172,
+       0,   173,   174,   175,   176,   177,   178,   179,     0,     0,
+       0,     0,   180,     0,     0,   181,   182,   183,   184
 };
 
 static const yytype_int16 yycheck[] =
 {
-      15,   427,    45,     9,   126,   318,   336,     9,   462,   115,
-      16,     9,    45,    23,     9,    11,    11,    77,     0,    39,
-      10,     9,    15,    16,    15,    16,    11,    47,     9,    19,
-      20,    21,    20,    23,    24,   141,    42,    25,    11,    23,
-      76,     9,    17,    18,   104,    12,    11,    53,    38,    39,
-      40,    41,    20,   100,     9,    30,    11,    25,   100,    34,
-       9,    12,    11,    38,    54,    55,    41,    12,     9,    44,
-      11,    46,   100,    48,    49,    50,    51,    52,    20,    12,
-     534,    43,    44,    25,    69,    77,   122,    15,    16,    17,
-      12,   101,   422,   100,     9,   115,    69,   100,   524,   101,
-     143,    91,    98,   101,   226,   100,    73,    74,    75,   102,
-     143,   102,   118,   133,   102,   103,   100,     9,    20,   125,
-     126,   141,    73,    74,    75,   455,   100,    45,    73,    74,
-      75,   121,   101,   308,   102,     9,   126,    11,   144,    67,
-      73,    74,    75,   318,   100,    99,   321,   322,    15,    16,
-     100,    73,    74,    75,   160,   161,   162,   100,   164,   165,
-     166,   204,   100,   199,   200,   201,   202,   203,   143,   205,
-     206,   204,   208,   209,   102,   100,     9,    12,    11,   194,
-     186,   187,   188,   189,   190,   191,   192,   193,   163,   101,
-     100,    12,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   227,    12,   215,
-     216,   217,   218,   219,   220,   100,    99,     9,   531,    11,
-     226,   396,   212,    10,    91,    19,    20,    21,   334,    23,
-      24,    69,   238,   100,    11,   102,    69,   243,    73,    74,
-      75,    20,   364,    12,    20,    39,    40,   253,     9,    91,
-      11,    45,    73,    74,    75,   430,   431,    73,    74,    75,
-      54,    55,    19,    20,    21,    99,    23,    24,   100,    73,
-      74,    75,   278,   279,   100,    10,   319,    69,     9,   285,
-      11,    69,    39,    40,   320,   101,   319,    73,    74,    75,
-      23,   465,   467,    11,    88,    75,   286,   103,    55,   305,
-     306,   307,   308,   103,    73,    74,    75,   103,    69,   100,
-     484,   485,   318,    99,   334,   321,   322,   429,   103,   425,
-     432,     9,   496,    11,   436,   437,    18,    15,    16,    17,
-     103,   102,   126,    21,   509,   100,   510,   511,   374,    20,
-     100,   377,   378,   349,    99,    10,   458,   459,   338,   143,
-      60,   525,    23,   389,    10,    10,   468,    10,   364,    10,
-      20,    39,    40,    41,    42,    73,    74,    75,    46,   126,
-      48,    60,    61,    23,    62,   487,    99,    87,   353,   491,
-     492,   100,    92,    99,    99,    95,    96,    97,    98,   101,
-     396,   185,    99,   101,   400,    73,    74,    75,    87,    99,
-      99,   513,    99,    92,    67,   425,    95,    96,    97,    98,
-     204,     9,   100,    99,   102,   103,    10,    99,   530,     9,
-     100,    99,   101,    99,   430,   431,   538,    99,    91,    73,
-      74,    75,    25,    71,   449,    77,     9,   100,    78,   102,
-     101,   456,    73,    74,    75,    99,    70,    58,    59,    60,
-      61,    73,    74,    75,     0,   100,    99,   101,    99,    19,
-     466,   467,   101,     9,   454,    11,    12,    73,    74,    75,
-     101,   486,    83,    84,    85,    86,    87,    12,    99,   101,
-      99,    92,    98,   466,    95,    96,    97,    98,   503,    73,
-      74,    75,   286,    39,    40,    41,    42,    73,    74,    75,
-      46,   306,    48,   509,    92,    51,   531,    95,    96,    97,
-      98,   526,    58,    59,    60,    61,   310,   101,    73,    74,
-      75,   196,   497,    99,    33,   319,   376,    73,    74,    75,
-       0,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    12,    81,    99,    58,    92,    60,    61,    95,
-      96,    97,    98,    99,   245,   101,   443,   473,   104,   423,
-      60,    61,   143,   474,    -1,    73,    74,    75,   319,    39,
-      40,    41,    42,    86,    87,   204,    46,    -1,    48,    92,
-      -1,    51,    95,    96,    97,    98,    86,    87,    58,    59,
-      60,    61,    92,   101,    -1,    95,    96,    97,    98,    95,
-      96,    97,    98,    73,    74,    75,    -1,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    73,    74,
-      75,    -1,    92,    -1,    -1,    95,    96,    97,    98,    99,
-      -1,   101,     0,     1,   104,    -1,    -1,    -1,    -1,    -1,
-      -1,     9,    -1,    11,    99,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    73,    74,    75,    46,    47,
-      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      73,    74,    75,    -1,    62,    63,    64,    65,    66,    67,
-      68,    99,    -1,    73,    74,    75,    -1,    -1,    76,    -1,
-      -1,    73,    74,    75,    -1,    -1,    99,    -1,    -1,    -1,
-      88,    89,    -1,    91,    -1,    93,    94,     0,     1,    99,
-      -1,    -1,   100,   101,   102,   103,     9,    99,    11,    -1,
-      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
-      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    87,    -1,    -1,    -1,
-      -1,    92,    -1,    76,    95,    96,    97,    98,     3,     4,
-       5,     6,     7,     8,    -1,    88,    89,    -1,    91,    -1,
-      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
-     103,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
-      -1,    -1,   100,   101,   102,   103,     9,    10,    11,    -1,
-      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
-      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
-      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
-     103,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
-      -1,    -1,   100,   101,   102,   103,     9,    10,    11,    -1,
-      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
-      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
-      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
-     103,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      15,   125,    45,     9,    45,   334,   316,   425,    15,    16,
+      16,    11,     9,   114,     9,    11,    76,    19,    20,    21,
+      10,    23,    24,     9,   460,    11,    11,    39,     0,    19,
+      20,    21,    23,    23,    24,    47,    42,    39,    40,   140,
+      23,     9,    17,    18,     9,    15,    16,    53,    38,    39,
+      40,    41,    20,    55,    76,    30,     9,    25,    11,    34,
+      11,   121,    20,    38,    54,    55,    41,    25,     9,    44,
+      11,    46,    68,    48,    49,    50,    51,    52,    99,     9,
+       9,   103,    11,    68,    43,    44,    15,    16,    17,    99,
+      20,   420,    21,     9,   101,    25,   532,    97,    99,   142,
+     224,   142,   114,   100,   522,   100,    72,    73,    74,   100,
+       9,   117,    11,    99,    12,    68,    99,    99,   124,   125,
+     132,    76,    99,   125,   453,     9,    20,    68,   140,   100,
+     120,   101,    61,   101,   102,   125,    99,   143,   198,   199,
+     200,   201,   202,    99,   204,   205,   100,   207,   208,    99,
+      15,    16,    99,   159,   160,   161,    99,   163,   164,   165,
+     203,     9,   203,    11,    15,    16,    17,   142,    99,    68,
+      99,   101,   101,   102,    72,    73,    74,    45,   193,   185,
+     186,   187,   188,   189,   190,   191,   192,   162,     9,    99,
+      11,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,    12,   213,   214,   215,
+     216,   217,   218,   225,   306,    66,    66,    99,   224,   529,
+     210,    12,    98,    98,   316,    90,    10,   319,   320,    12,
+     236,   332,    68,    11,    99,   241,   101,     9,   362,    11,
+      90,    72,    73,    74,     9,   251,    11,    20,    90,    99,
+     101,   101,    19,    20,    21,    99,    23,    24,   318,    72,
+      73,    74,     9,    12,    11,    20,    72,    73,    74,   100,
+     276,   277,    39,    40,   317,    99,   317,   283,    45,    68,
+      98,    72,    73,    74,    10,    98,    23,    54,    55,    72,
+      73,    74,    12,    11,   284,    74,    99,   303,   304,   305,
+     306,   427,   394,   102,   430,    12,   102,    59,   434,   435,
+     316,    99,   372,   319,   320,   375,   376,    12,    18,    20,
+     332,    88,   423,    72,    73,    74,   102,   387,   102,    12,
+     456,   457,   102,   101,    86,    99,   428,   429,    98,    91,
+     466,   347,    94,    95,    96,    97,   336,    23,    10,   463,
+      23,    10,    72,    73,    74,    10,   362,    10,   125,   485,
+      72,    73,    74,   489,   490,    72,    73,    74,   482,   483,
+      10,    20,    99,   465,    98,   142,   351,    72,    73,    74,
+     494,    94,    95,    96,    97,   511,    98,    98,   394,    72,
+      73,    74,   398,    98,   508,   509,    39,    40,    41,    42,
+      98,    98,   528,    46,   100,    48,    72,    73,    74,   523,
+     536,   423,    72,    73,    74,   507,    98,   184,    72,    73,
+      74,    98,   428,   429,    98,     9,    72,    73,    74,    72,
+      73,    74,   447,    10,   100,    98,   203,     9,    99,   454,
+     100,    98,   100,    50,    25,    76,   100,    98,    70,    77,
+      57,    58,    59,    60,   100,    98,   100,    98,   464,   465,
+      98,     9,   452,    72,    73,    74,    72,    73,    74,   484,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      72,    73,    74,    99,    91,     0,   501,    94,    95,    96,
+      97,   100,    98,    69,     9,   100,    11,    12,    98,    19,
+      57,   507,    59,    60,    72,    73,    74,    98,   100,   524,
+      72,    73,    74,    98,    12,    97,   464,   284,   304,    33,
+     495,    72,    73,    74,    39,    40,    41,    42,    85,    86,
+      98,    46,    81,    48,    91,    50,    98,    94,    95,    96,
+      97,   308,    57,    58,    59,    60,   374,    98,    91,   529,
+     317,    94,    95,    96,    97,   243,   195,    72,    73,    74,
+       0,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    12,   142,   441,   471,    91,    59,    60,    94,
+      95,    96,    97,    98,   472,   100,   421,   317,   103,    59,
+      60,   203,    -1,    -1,    -1,    -1,    72,    73,    74,    39,
+      40,    41,    42,    85,    86,    -1,    46,    -1,    48,    91,
+      50,    -1,    94,    95,    96,    97,    86,    57,    58,    59,
+      60,    91,    98,    -1,    94,    95,    96,    97,    -1,    -1,
+      -1,    -1,    72,    73,    74,    -1,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    72,    73,    74,
+      -1,    91,    -1,    -1,    94,    95,    96,    97,    98,    -1,
+     100,     0,     1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+       9,    -1,    11,    98,    13,    14,    15,    16,    17,    -1,
+      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    -1,    -1,    -1,    46,    47,    48,
+      49,    -1,    51,    52,    53,    54,    55,    56,    -1,    -1,
+      -1,    -1,    61,    62,    63,    64,    65,    66,    67,    86,
+      -1,    -1,    -1,    -1,    91,    -1,    75,    94,    95,    96,
+      97,     3,     4,     5,     6,     7,     8,    -1,    87,    88,
+      -1,    90,    -1,    92,    93,     0,     1,    -1,    -1,    -1,
+      99,   100,   101,   102,     9,    -1,    11,    -1,    13,    14,
+      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
+      -1,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
+      55,    56,    -1,    -1,    -1,    -1,    61,    62,    63,    64,
+      65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,    -1,
+       1,    -1,    -1,    -1,    99,   100,   101,   102,     9,    10,
+      11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
+      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    46,    47,    48,    49,    -1,
+      51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
+      61,    62,    63,    64,    65,    66,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    90,
+      -1,    92,    93,    -1,     1,    -1,    -1,    -1,    99,   100,
+     101,   102,     9,    10,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
+      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
-      -1,    -1,   100,   101,   102,   103,     9,    -1,    11,    -1,
+      87,    88,    -1,    90,    -1,    92,    93,    -1,     1,    -1,
+      -1,    -1,    99,   100,   101,   102,     9,    10,    11,    -1,
       13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
       23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    -1,    -1,    71,    -1,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
-      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
-     103,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    46,    47,    48,    49,    -1,    51,    52,
+      53,    54,    55,    56,    -1,    -1,    -1,    -1,    61,    62,
+      63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    90,    -1,    92,
+      93,    -1,     1,    -1,    -1,    -1,    99,   100,   101,   102,
+       9,    10,    11,    -1,    13,    14,    15,    16,    17,    -1,
+      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    -1,    -1,    -1,    46,    47,    48,
+      49,    -1,    51,    52,    53,    54,    55,    56,    -1,    -1,
+      -1,    -1,    61,    62,    63,    64,    65,    66,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    90,    -1,    92,    93,    -1,     1,    -1,    -1,    -1,
+      99,   100,   101,   102,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
+      -1,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
+      55,    56,    -1,    -1,    -1,    -1,    61,    62,    63,    64,
+      65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,    -1,
+       1,    -1,    -1,    -1,    99,   100,   101,   102,     9,    -1,
+      11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
+      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    46,    47,    48,    49,    -1,
+      51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
+      61,    62,    63,    64,    65,    66,    67,    -1,    -1,    70,
+      -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    90,
+      -1,    92,    93,    -1,     1,    -1,    -1,    -1,    99,   100,
+     101,   102,     9,    -1,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
+      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
-      -1,    -1,   100,   101,   102,   103,     9,    -1,    11,    -1,
+      87,    88,    -1,    90,    -1,    92,    93,    -1,     1,    -1,
+      -1,    -1,    99,   100,   101,   102,     9,    -1,    11,    -1,
       13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
       23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
       -1,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
-      93,    94,     1,    -1,    -1,    -1,    -1,   100,   101,   102,
-     103,    -1,    11,    -1,    13,    14,    15,    16,    17,    -1,
+      -1,    -1,    -1,    46,    47,    48,    49,    -1,    51,    52,
+      53,    54,    55,    56,    -1,    -1,    -1,    -1,    61,    62,
+      63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    90,    -1,    92,
+      93,     1,    -1,    -1,    -1,    -1,    99,   100,   101,   102,
+      -1,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
+      20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
+      30,    31,    -1,    -1,    -1,    -1,    36,    -1,    50,    -1,
+      -1,    -1,    -1,    -1,    -1,    57,    58,    59,    60,    49,
+      -1,    -1,    52,    53,    54,    55,    56,    -1,    -1,    -1,
+      -1,    61,    62,    63,    64,    65,    66,    67,    80,    81,
+      82,    83,    84,    85,    86,    75,    -1,    -1,    -1,    91,
+      -1,    -1,    94,    95,    96,    97,    -1,    87,    88,    -1,
+      90,    -1,    92,    93,     1,    -1,    -1,    -1,    -1,    99,
+     100,   101,   102,    -1,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
+      -1,    -1,    -1,    -1,    -1,    -1,    57,    58,    59,    60,
+      -1,    -1,    49,    -1,    -1,    52,    53,    54,    55,    56,
+      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
+      67,    82,    83,    84,    85,    86,    -1,    -1,    75,    -1,
+      91,    -1,    -1,    94,    95,    96,    97,    -1,    -1,    -1,
+      87,    88,    -1,    90,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    98,    99,    -1,   101,   102,     9,    -1,    11,    -1,
+      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
+      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    57,
+      58,    59,    60,    -1,    -1,    -1,    49,    -1,    -1,    52,
+      53,    54,    55,    56,    -1,    -1,    -1,    -1,    61,    62,
+      63,    64,    65,    66,    67,    83,    84,    85,    86,    -1,
+      -1,    -1,    75,    91,    -1,    -1,    94,    95,    96,    97,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    90,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    -1,    99,    -1,   101,   102,
+       9,    -1,    11,    -1,    13,    14,    15,    16,    17,    -1,
       -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
       29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,
-      51,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,
-      61,    50,    -1,    -1,    53,    54,    55,    56,    57,    -1,
-      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    68,
-      81,    82,    83,    84,    85,    86,    87,    76,    -1,    -1,
-      -1,    92,    -1,    -1,    95,    96,    97,    98,    -1,    88,
-      89,    -1,    91,    -1,    93,    94,     1,    -1,    -1,    -1,
-      -1,   100,   101,   102,   103,    -1,    11,    -1,    13,    14,
-      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
-      -1,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
-      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
-      60,    61,    -1,    -1,    -1,    50,    -1,    -1,    53,    54,
-      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    68,    84,    85,    86,    87,    -1,    -1,
-      -1,    76,    92,    -1,    -1,    95,    96,    97,    98,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,
-      -1,    -1,    -1,    -1,    99,   100,    -1,   102,   103,     9,
-      -1,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
-      -1,    -1,    -1,    58,    59,    60,    61,    -1,    -1,    -1,
-      50,    -1,    -1,    53,    54,    55,    56,    57,    -1,    -1,
-      -1,    -1,    62,    63,    64,    65,    66,    67,    68,    -1,
-      85,    86,    87,    -1,    -1,    -1,    76,    92,    -1,    -1,
-      95,    96,    97,    98,    -1,    -1,    -1,    -1,    88,    89,
-      -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,
-     100,    -1,   102,   103,     9,    -1,    11,    -1,    13,    14,
+      -1,    -1,    -1,    57,    58,    59,    60,    -1,    -1,    -1,
+      49,    -1,    -1,    52,    53,    54,    55,    56,    -1,    -1,
+      -1,    -1,    61,    62,    63,    64,    65,    66,    67,    -1,
+      84,    85,    86,    -1,    -1,    -1,    75,    91,    -1,    -1,
+      94,    95,    96,    97,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,
+      99,    -1,   101,   102,    11,    12,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
+      -1,    -1,    -1,    57,    58,    59,    60,    -1,    -1,    -1,
+      -1,    -1,    49,    -1,    -1,    52,    53,    54,    55,    56,
+      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
+      67,    85,    86,    -1,    -1,    -1,    -1,    91,    75,    -1,
+      94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    -1,    90,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    -1,    99,    -1,   101,   102,    11,    -1,    13,    14,
       15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
       -1,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
-      -1,    36,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    53,    54,
-      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    68,    86,    87,    -1,    -1,    -1,    -1,
-      92,    76,    -1,    95,    96,    97,    98,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,
-      -1,    -1,    -1,    -1,    -1,   100,    -1,   102,   103,    11,
-      12,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
-      22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
-      -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    58,
-      59,    60,    61,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      -1,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
-      62,    63,    64,    65,    66,    67,    68,    86,    87,    -1,
-      -1,    -1,    -1,    92,    76,    -1,    95,    96,    97,    98,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,
-      -1,    93,    94,    -1,    -1,    -1,    -1,    -1,   100,    -1,
-     102,   103,    11,    -1,    13,    14,    15,    16,    17,    -1,
-      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
-      29,    30,    31,    -1,    -1,    -1,    -1,    36,    39,    40,
-      41,    42,    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,
-      -1,    50,    -1,    -1,    53,    54,    55,    56,    57,    -1,
-      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    68,
-      -1,    -1,    73,    74,    75,    -1,    -1,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,
-      -1,   100,   101,   102,   103,    11,    -1,    13,    14,    15,
-      16,    17,    -1,    -1,    20,    21,    22,    23,    24,    -1,
-      26,    27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,
-      36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    50,    -1,    -1,    53,    54,    55,
-      56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
-      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,
-      -1,    -1,    -1,    99,   100,    -1,   102,   103,    11,    -1,
+      -1,    36,    -1,    -1,    -1,    57,    58,    59,    60,    -1,
+      -1,    -1,    -1,    -1,    49,    -1,    -1,    52,    53,    54,
+      55,    56,    -1,    -1,    -1,    -1,    61,    62,    63,    64,
+      65,    66,    67,    85,    86,    -1,    -1,    -1,    -1,    91,
+      75,    -1,    94,    95,    96,    97,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    -1,    99,   100,   101,   102,    11,    -1,
       13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
       23,    24,    -1,    26,    27,    28,    29,    30,    31,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
-      93,    94,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,
-     103,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
-      20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
-      30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      50,    -1,    -1,    53,    54,    55,    56,    57,    -1,    -1,
-      -1,    -1,    62,    63,    64,    65,    66,    67,    68,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
-     100,    -1,   102,   103,    11,    -1,    13,    14,    15,    16,
-      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
-      27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    50,    -1,    -1,    53,    54,    55,    56,
-      57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
-      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,    -1,
-      -1,    -1,    99,   100,    -1,   102,   103,    11,    -1,    13,
-      14,    15,    16,    17,    -1,    -1,    20,    21,    22,    23,
-      24,    -1,    26,    27,    28,    29,    30,    31,    -1,    -1,
-      -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    53,
-      54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,
-      64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,
-      94,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,   103,
+      -1,    -1,    -1,    36,    39,    40,    41,    42,    -1,    -1,
+      -1,    46,    -1,    48,    -1,    -1,    49,    -1,    -1,    52,
+      53,    54,    55,    56,    -1,    -1,    -1,    -1,    61,    62,
+      63,    64,    65,    66,    67,    -1,    -1,    72,    73,    74,
+      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    90,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    98,    99,    -1,   101,   102,
       11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
       21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
       31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
-      -1,    -1,    53,    54,    55,    56,    57,    -1,    -1,    -1,
-      -1,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,
-      91,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,   100,
-      -1,   102,   103,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      -1,    52,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
+      61,    62,    63,    64,    65,    66,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    90,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    99,    -1,
+     101,   102,    11,    -1,    13,    14,    15,    16,    17,    -1,
+      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    50,    -1,    -1,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      49,    -1,    -1,    52,    53,    54,    55,    56,    -1,    -1,
+      -1,    -1,    61,    62,    63,    64,    65,    66,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      99,    -1,   101,   102,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    -1,    91,    -1,    93,    94,    -1,    -1,    -1,
-      -1,    99,   100,    -1,   102,   103,    11,    -1,    13,    14,
+      -1,    -1,    49,    -1,    -1,    52,    53,    54,    55,    56,
+      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    -1,    90,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    98,    99,    -1,   101,   102,    11,    -1,    13,    14,
       15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
       -1,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
       -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    53,    54,
-      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,
-      -1,    -1,    -1,    -1,    -1,   100,    -1,   102,   103,    11,
-      -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
-      22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
-      -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      -1,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
-      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    51,    -1,    -1,    -1,    -1,
-      -1,    -1,    58,    59,    60,    61,    88,    89,    -1,    91,
-      -1,    93,    94,    -1,    -1,    -1,    -1,    -1,   100,    -1,
-     102,   103,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    -1,    -1,    -1,    -1,    92,    51,    -1,    95,
-      96,    97,    98,    -1,    58,    59,    60,    61,    -1,    -1,
+      -1,    -1,    -1,    -1,    49,    -1,    -1,    52,    53,    54,
+      55,    56,    -1,    -1,    -1,    -1,    61,    62,    63,    64,
+      65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    -1,    90,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    98,    99,    -1,   101,   102,    11,    -1,
+      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
+      23,    24,    -1,    26,    27,    28,    29,    30,    31,    -1,
+      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    52,
+      53,    54,    55,    56,    -1,    -1,    -1,    -1,    61,    62,
+      63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    90,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    98,    99,    -1,   101,   102,
+      11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
+      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
+      31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      -1,    52,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
+      61,    62,    63,    64,    65,    66,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    90,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    99,    -1,
+     101,   102,    11,    -1,    13,    14,    15,    16,    17,    -1,
+      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    78,    79,    -1,    81,    82,    83,
-      84,    85,    86,    87,    -1,    -1,    -1,    -1,    92,    51,
-      -1,    95,    96,    97,    98,    -1,    58,    59,    60,    61,
+      49,    -1,    -1,    52,    53,    54,    55,    56,    -1,    -1,
+      -1,    -1,    61,    62,    63,    64,    65,    66,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,
+      99,    -1,   101,   102,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    -1,    81,
-      82,    83,    84,    85,    86,    87,    -1,    -1,    -1,    -1,
-      92,    -1,    -1,    95,    96,    97,    98
+      -1,    -1,    49,    -1,    -1,    52,    53,    54,    55,    56,
+      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    50,
+      -1,    -1,    -1,    -1,    -1,    -1,    57,    58,    59,    60,
+      87,    88,    -1,    90,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    -1,    99,    -1,   101,   102,    77,    78,    -1,    80,
+      81,    82,    83,    84,    85,    86,    -1,    -1,    -1,    -1,
+      91,    50,    -1,    94,    95,    96,    97,    -1,    57,    58,
+      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      -1,    80,    81,    82,    83,    84,    85,    86,    -1,    -1,
+      -1,    -1,    91,    -1,    -1,    94,    95,    96,    97
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     3,     4,     5,     6,     7,     8,   106,   107,   108,
-     109,   110,   111,   112,     0,   115,    11,    13,    14,    15,
+       0,     3,     4,     5,     6,     7,     8,   105,   106,   107,
+     108,   109,   110,   111,     0,   114,    11,    13,    14,    15,
       16,    17,    20,    21,    22,    23,    24,    26,    27,    28,
-      29,    30,    31,    36,    50,    53,    54,    55,    56,    57,
-      62,    63,    64,    65,    66,    67,    68,    76,    88,    89,
-      91,    93,    94,   100,   102,   103,   160,   161,   162,   165,
-     166,   167,   168,   169,   170,   172,   175,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,     9,   113,     1,    32,
+      29,    30,    31,    36,    49,    52,    53,    54,    55,    56,
+      61,    62,    63,    64,    65,    66,    67,    75,    87,    88,
+      90,    92,    93,    99,   101,   102,   159,   160,   161,   164,
+     165,   166,   167,   168,   169,   171,   174,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,     9,   112,     1,    32,
       34,    35,    37,    38,    39,    40,    41,    42,    46,    47,
-      48,    49,    52,   101,   113,   122,   132,   160,    33,   120,
-     121,   122,   118,   118,    12,   160,   170,   170,    20,    25,
-     113,   182,   190,   190,   190,   190,   190,   171,    11,   100,
-     170,   143,   143,   170,   100,   100,   100,   113,   170,    20,
-     161,   174,   182,   190,   190,   113,   170,   101,   160,    20,
-      25,   145,   170,    91,   100,   173,   182,   183,   184,   170,
-     161,   170,   170,   170,   170,   170,    99,   160,   190,   190,
-      73,    74,    75,    77,     9,    11,   100,    51,    58,    59,
-      60,    61,    78,    79,    81,    82,    83,    84,    85,    86,
-      87,    92,    95,    96,    97,    98,   100,     9,    11,     9,
-      11,     9,    11,     9,   115,   144,   145,    20,   142,   100,
-     100,   100,   100,    67,    91,   100,   180,   182,   100,   100,
-     113,   101,    45,   134,   101,    39,    40,    41,    42,    46,
-      48,   121,   122,   120,    12,   174,   100,   100,   160,    99,
-     113,    23,   115,   146,    99,    99,   160,   175,   190,   161,
-      10,   101,   174,   100,   170,   173,   182,   183,   184,    99,
-     160,    69,   148,    11,    99,   160,   160,   160,   170,   160,
-     160,    99,   160,   170,   170,   170,   170,   170,   170,   170,
-     170,   170,   170,   170,   170,   170,   170,   170,     9,    11,
-      15,    16,    17,    21,    62,   100,   102,   103,   164,   182,
-      99,   160,   160,   160,   160,   160,   160,   160,   160,   118,
-      20,   141,   142,    20,   125,   115,   115,   115,   115,    91,
-     115,    67,   178,   179,   181,   182,   183,   184,   115,   115,
-     100,   115,   115,   113,   160,   138,   160,   160,   160,   160,
-     160,   175,   161,    12,   163,   100,   157,    69,   147,    99,
-      99,   160,    10,    99,   160,   148,    99,    23,   160,    11,
-     101,    12,    99,    80,   160,   160,   103,   103,   103,   103,
-      99,   160,   103,   103,   100,    99,   101,    12,   101,    12,
-     101,    12,   101,    10,    18,   114,   123,   124,     9,   101,
-      20,   137,   160,   138,   139,   160,   139,   177,   182,   100,
-     132,   136,   139,   140,   160,   178,   115,   139,   139,    99,
-     104,   176,   174,   158,   147,    23,   113,    99,    99,    12,
-     160,    10,   170,   101,    12,    99,   175,    10,    10,    10,
-      10,   115,   146,   115,   115,    20,    99,    99,    99,    99,
-     100,   115,    99,   101,   128,   139,    99,    99,   160,    99,
-      15,    16,   102,   150,   151,   153,   154,   155,   156,     9,
-      12,    10,    99,   101,   147,   157,   129,   174,   135,   135,
-       9,   116,   116,   139,   139,   116,   126,   100,    99,   116,
-     116,    25,   149,   149,    77,    99,   118,    71,   101,   113,
-     159,   147,   118,   101,   116,   116,   117,    43,    44,   133,
-     133,    99,    99,   134,   137,   139,   116,    78,   152,   152,
-     154,    10,   119,     9,    10,   134,   134,   118,   116,   100,
-     116,   116,   101,    99,   134,   170,    23,   101,   130,   118,
-      10,   139,   134,   134,   127,   116,    70,   131,    19,    10,
-      99,   135,   134,   118,   116,   140,    71,   133,    99,   116
+      48,    51,   100,   112,   121,   131,   159,    33,   119,   120,
+     121,   117,   117,    12,   159,   169,   169,    20,    25,   112,
+     181,   189,   189,   189,   189,   189,   170,    11,    99,   169,
+     142,   142,   169,    99,    99,    99,   112,   169,    20,   160,
+     173,   181,   189,   189,   112,   169,   100,   159,    20,    25,
+     144,   169,    90,    99,   172,   181,   182,   183,   169,   160,
+     169,   169,   169,   169,   169,    98,   159,   189,   189,    72,
+      73,    74,    76,     9,    11,    99,    50,    57,    58,    59,
+      60,    77,    78,    80,    81,    82,    83,    84,    85,    86,
+      91,    94,    95,    96,    97,    99,     9,    11,     9,    11,
+       9,    11,     9,   114,   143,   144,    20,   141,    99,    99,
+      99,    99,    66,    90,    99,   179,   181,    99,    99,   100,
+      45,   133,   100,    39,    40,    41,    42,    46,    48,   120,
+     121,   119,    12,   173,    99,    99,   159,    98,   112,    23,
+     114,   145,    98,    98,   159,   174,   189,   160,    10,   100,
+     173,    99,   169,   172,   181,   182,   183,    98,   159,    68,
+     147,    11,    98,   159,   159,   159,   169,   159,   159,    98,
+     159,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,     9,    11,    15,    16,
+      17,    21,    61,    99,   101,   102,   163,   181,    98,   159,
+     159,   159,   159,   159,   159,   159,   159,   117,    20,   140,
+     141,    20,   124,   114,   114,   114,   114,    90,   114,    66,
+     177,   178,   180,   181,   182,   183,   114,   114,    99,   114,
+     114,   112,   159,   137,   159,   159,   159,   159,   159,   174,
+     160,    12,   162,    99,   156,    68,   146,    98,    98,   159,
+      10,    98,   159,   147,    98,    23,   159,    11,   100,    12,
+      98,    79,   159,   159,   102,   102,   102,   102,    98,   159,
+     102,   102,    99,    98,   100,    12,   100,    12,   100,    12,
+     100,    10,    18,   113,   122,   123,     9,   100,    20,   136,
+     159,   137,   138,   159,   138,   176,   181,    99,   131,   135,
+     138,   139,   159,   177,   114,   138,   138,    98,   103,   175,
+     173,   157,   146,    23,   112,    98,    98,    12,   159,    10,
+     169,   100,    12,    98,   174,    10,    10,    10,    10,   114,
+     145,   114,   114,    20,    98,    98,    98,    98,    99,   114,
+      98,   100,   127,   138,    98,    98,   159,    98,    15,    16,
+     101,   149,   150,   152,   153,   154,   155,     9,    12,    10,
+      98,   100,   146,   156,   128,   173,   134,   134,     9,   115,
+     115,   138,   138,   115,   125,    99,    98,   115,   115,    25,
+     148,   148,    76,    98,   117,    70,   100,   112,   158,   146,
+     117,   100,   115,   115,   116,    43,    44,   132,   132,    98,
+      98,   133,   136,   138,   115,    77,   151,   151,   153,    10,
+     118,     9,    10,   133,   133,   117,   115,    99,   115,   115,
+     100,    98,   133,   169,    23,   100,   129,   117,    10,   138,
+     133,   133,   126,   115,    69,   130,    19,    10,    98,   134,
+     133,   117,   115,   139,    70,   132,    98,   115
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   105,   107,   106,   108,   106,   109,   106,   110,   106,
-     111,   106,   112,   106,   113,   114,   115,   116,   117,   118,
-     118,   119,   119,   120,   120,   121,   121,   122,   122,   123,
-     122,   124,   122,   122,   125,   122,   122,   122,   122,   122,
-     122,   122,   122,   126,   127,   122,   122,   122,   128,   122,
-     122,   122,   122,   129,   122,   122,   122,   122,   130,   131,
-     131,   132,   132,   132,   132,   132,   132,   132,   132,   133,
-     133,   133,   134,   134,   135,   136,   136,   137,   137,   138,
-     139,   140,   141,   141,   142,   143,   144,   145,   145,   146,
-     146,   147,   147,   147,   148,   148,   149,   149,   150,   150,
-     151,   152,   152,   152,   153,   154,   154,   155,   155,   155,
-     156,   156,   158,   157,   159,   159,   160,   160,   160,   160,
-     161,   161,   161,   162,   162,   162,   162,   162,   162,   162,
-     162,   163,   162,   164,   164,   165,   165,   165,   165,   165,
-     165,   165,   165,   165,   165,   165,   165,   165,   165,   166,
-     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
-     166,   166,   166,   167,   167,   167,   167,   167,   167,   167,
-     167,   167,   168,   168,   168,   168,   168,   168,   169,   169,
-     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
-     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
-     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
-     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
-     170,   170,   170,   170,   170,   170,   170,   170,   170,   171,
-     170,   170,   170,   170,   172,   172,   172,   173,   173,   173,
-     173,   173,   174,   174,   175,   175,   176,   176,   177,   178,
-     178,   178,   179,   179,   180,   180,   181,   182,   183,   184,
-     185,   185,   186,   187,   187,   188,   188,   189,   189,   190,
-     190,   190,   190
+       0,   104,   106,   105,   107,   105,   108,   105,   109,   105,
+     110,   105,   111,   105,   112,   113,   114,   115,   116,   117,
+     117,   118,   118,   119,   119,   120,   120,   121,   121,   122,
+     121,   123,   121,   121,   124,   121,   121,   121,   121,   121,
+     121,   121,   125,   126,   121,   121,   121,   127,   121,   121,
+     121,   121,   128,   121,   121,   121,   121,   129,   130,   130,
+     131,   131,   131,   131,   131,   131,   131,   131,   132,   132,
+     132,   133,   133,   134,   135,   135,   136,   136,   137,   138,
+     139,   140,   140,   141,   142,   143,   144,   144,   145,   145,
+     146,   146,   146,   147,   147,   148,   148,   149,   149,   150,
+     151,   151,   151,   152,   153,   153,   154,   154,   154,   155,
+     155,   157,   156,   158,   158,   159,   159,   159,   159,   160,
+     160,   160,   161,   161,   161,   161,   161,   161,   161,   161,
+     162,   161,   163,   163,   164,   164,   164,   164,   164,   164,
+     164,   164,   164,   164,   164,   164,   164,   164,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   166,   166,   166,   166,   166,   166,   166,   166,
+     166,   167,   167,   167,   167,   167,   167,   168,   168,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   170,   169,
+     169,   169,   169,   171,   171,   171,   172,   172,   172,   172,
+     172,   173,   173,   174,   174,   175,   175,   176,   177,   177,
+     177,   178,   178,   179,   179,   180,   181,   182,   183,   184,
+     184,   185,   186,   186,   187,   187,   188,   188,   189,   189,
+     189,   189
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1046,30 +1038,30 @@ static const yytype_uint8 yyr2[] =
        0,     3,     0,     3,     4,     7,     0,     4,     0,     0,
        2,     0,     2,     1,     1,     2,     2,     1,     4,     0,
        7,     0,    10,     4,     0,     7,     7,     7,     6,     6,
-       2,     8,     8,     0,     0,    13,     9,     8,     0,    10,
-       9,     7,     2,     0,     8,     2,     2,     1,     2,     0,
-       3,     1,     1,     3,     3,     3,     3,     3,     3,     0,
-       2,     6,     0,     2,     0,     0,     1,     0,     1,     1,
-       1,     1,     1,     0,     0,     0,     0,     1,     1,     0,
-       1,     0,     2,     1,     2,     1,     0,     1,     1,     1,
-       3,     0,     1,     2,     3,     1,     1,     2,     3,     1,
-       0,     1,     0,     4,     1,     1,     3,     3,     3,     1,
-       2,     3,     1,     3,     5,     6,     3,     3,     5,     2,
-       4,     0,     5,     1,     1,     5,     4,     5,     4,     5,
-       6,     5,     4,     5,     4,     3,     6,     4,     5,     3,
+       8,     8,     0,     0,    13,     9,     8,     0,    10,     9,
+       7,     2,     0,     8,     2,     2,     1,     2,     0,     3,
+       1,     1,     3,     3,     3,     3,     3,     3,     0,     2,
+       6,     0,     2,     0,     0,     1,     0,     1,     1,     1,
+       1,     1,     0,     0,     0,     0,     1,     1,     0,     1,
+       0,     2,     1,     2,     1,     0,     1,     1,     1,     3,
+       0,     1,     2,     3,     1,     1,     2,     3,     1,     0,
+       1,     0,     4,     1,     1,     3,     3,     3,     1,     2,
+       3,     1,     3,     5,     6,     3,     3,     5,     2,     4,
+       0,     5,     1,     1,     5,     4,     5,     4,     5,     6,
+       5,     4,     5,     4,     3,     6,     4,     5,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     2,     4,     3,     5,     8,     2,     2,
-       1,     1,     1,     1,     5,     2,     3,     1,     2,     3,
-       1,     2,     1,     1,     1,     1,     1,     1,     4,     4,
-       5,     5,     1,     1,     3,     4,     3,     4,     4,     4,
-       4,     4,     1,     2,     2,     1,     2,     2,     1,     2,
-       1,     2,     1,     3,     1,     3,     1,     3,     4,     0,
-       6,     1,     1,     1,     3,     2,     4,     3,     2,     1,
-       1,     1,     0,     1,     0,     1,     0,     2,     1,     1,
-       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
-       2,     4,     2,     1,     3,     1,     3,     1,     3,     1,
-       1,     1,     1
+       3,     3,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     3,     2,     4,     3,     5,     8,     2,     2,     1,
+       1,     1,     1,     5,     2,     3,     1,     2,     3,     1,
+       2,     1,     1,     1,     1,     1,     1,     4,     4,     5,
+       5,     1,     1,     3,     4,     3,     4,     4,     4,     4,
+       4,     1,     2,     2,     1,     2,     2,     1,     2,     1,
+       2,     1,     3,     1,     3,     1,     3,     4,     0,     6,
+       1,     1,     1,     3,     2,     4,     3,     2,     1,     1,
+       1,     0,     1,     0,     1,     0,     2,     1,     1,     1,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       4,     2,     1,     3,     1,     3,     1,     3,     1,     1,
+       1,     1
 };
 
 typedef enum {
@@ -1087,7 +1079,7 @@ static const toketypes yy_type_tab[] =
   toketype_pval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
-  toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
+  toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
@@ -1111,6 +1103,6 @@ static const toketypes yy_type_tab[] =
 };
 
 /* Generated from:
- * 78f9e1daf948a161b43e7457943b7d91cada7c92c8b941a1c1dbbc23c2c10aa8 perly.y
+ * 233778626e1c4f8b4103ca96d66b107b4527a7b7304f05e373aef634cc4b6f81 perly.y
  * b6fae5748f9bef6db4740aa5e122b84ac5181852d42474d0ecad621fa4253306 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.y b/perly.y
index 8f3e303..0c7839c 100644 (file)
--- a/perly.y
+++ b/perly.y
@@ -53,7 +53,7 @@
 %token <pval> LABEL
 %token <ival> FORMAT SUB ANONSUB PACKAGE USE
 %token <ival> WHILE UNTIL IF UNLESS ELSE ELSIF CONTINUE FOR
-%token <ival> GIVEN WHEN DEFAULT
+%token <ival> GIVEN WHEN
 %token <ival> LOOPEX DOTDOT YADAYADA
 %token <ival> FUNC0 FUNC1 FUNC UNIOP LSTOP
 %token <ival> RELOP EQOP MULOP ADDOP
@@ -380,8 +380,6 @@ barestmt:   PLUGSTMT
                        }
        |       WHEN '(' remember mexpr ')' mblock
                        { $$ = block_end($3, newWHENOP($4, op_scope($6))); }
-       |       DEFAULT block
-                       { $$ = newWHENOP(0, op_scope($2)); }
        |       WHILE '(' remember texpr ')' mintro mblock cont
                        {
                          $$ = block_end($3,
index efc1c3f..84ddac4 100644 (file)
@@ -833,8 +833,7 @@ but then $foo no longer contains a glob.
 
 =item Can't "continue" outside a when block
 
-(F) You called C<continue>, but you're not inside a C<when>
-or C<default> block.
+(F) You called C<continue>, but you're not inside a C<when> block.
 
 =item Can't create pipe mailbox
 
@@ -846,13 +845,6 @@ quotas or other plumbing problems.
 (F) Only scalar, array, and hash variables may be declared as "my", "our" or
 "state" variables.  They must have ordinary identifiers as names.
 
-=item Can't "default" outside a topicalizer
-
-(F) You have used a C<default> block that is neither inside a
-C<foreach> loop nor a C<given> block.  (Note that this error is
-issued on exit from the C<default> block, so you won't get the
-error if you use an explicit C<continue>.)
-
 =item Can't determine class of operator %s, assuming BASEOP
 
 (S) This warning indicates something wrong in the internals of perl.
index 41fc176..0f88ba4 100644 (file)
@@ -269,7 +269,7 @@ L<C<wantarray>|/wantarray>
 L<C<break>|/break> is available only if you enable the experimental
 L<C<"switch"> feature|feature/The 'switch' feature> or use the C<CORE::>
 prefix.  The L<C<"switch"> feature|feature/The 'switch' feature> also
-enables the C<default>, C<given> and C<when> statements, which are
+enables the C<given> and C<when> statements, which are
 documented in L<perlsyn/"Switch Statements">.
 The L<C<"switch"> feature|feature/The 'switch' feature> is enabled
 automatically with a C<use v5.10> (or higher) declaration in the current
@@ -426,7 +426,7 @@ L<C<time>|/time>, L<C<times>|/times>
 =for Pod::Functions =!Non-functions
 
 C<and>, C<AUTOLOAD>, C<BEGIN>, C<CHECK>, C<cmp>, C<CORE>, C<__DATA__>,
-C<default>, C<DESTROY>, C<else>, C<elseif>, C<elsif>, C<END>, C<__END__>,
+C<DESTROY>, C<else>, C<elseif>, C<elsif>, C<END>, C<__END__>,
 C<eq>, C<for>, C<foreach>, C<ge>, C<given>, C<gt>, C<if>, C<INIT>, C<le>,
 C<lt>, C<ne>, C<not>, C<or>, C<UNITCHECK>, C<unless>, C<until>, C<when>,
 C<while>, C<x>, C<xor>
@@ -1340,7 +1340,7 @@ using an empty one, logically enough, so L<C<next>|/next LABEL> goes
 directly back to check the condition at the top of the loop.
 
 When there is no BLOCK, L<C<continue>|/continue BLOCK> is a function
-that exits the current C<when> or C<default> block, avoiding the jump
+that exits the current C<when> block, avoiding the jump
 to the end of the enclosing topicalizer that implicitly happens when
 execution reaches the end of such a block.
 In Perl 5.14 and earlier, this form of
@@ -10103,8 +10103,6 @@ Statements">.
 
 =over
 
-=item default
-
 =item given
 
 =item when
index fbfa4e6..cb12a35 100644 (file)
@@ -247,7 +247,6 @@ The following compound statements may be used to control flow:
     given (EXPR) BLOCK
 
     when (EXPR) BLOCK
-    default BLOCK
 
     LABEL while (EXPR) BLOCK
     LABEL while (EXPR) BLOCK continue BLOCK
@@ -268,7 +267,7 @@ The following compound statements may be used to control flow:
 
     PHASE BLOCK
 
-The experimental C<given>, C<when>, and C<default> statements are I<not
+The experimental C<given> and C<when> statements are I<not
 automatically enabled>; see L</"Switch Statements"> below for how to do
 so, and the attendant caveats.
 
@@ -607,7 +606,7 @@ described immediately below remains experimental.
 
 =head2 Switch Statements
 
-X<switch> X<case> X<given> X<when> X<default>
+X<switch> X<case> X<given> X<when>
 
 C<given>, C<when>, and related keywords make up an experimental feature
 that first appeared in Perl 5.10, but behaved quite differently from
@@ -622,7 +621,7 @@ example:
     use v5.14;
 
 Under the "switch" feature, Perl gains the experimental keywords C<given>,
-C<when>, C<default>, and C<break>.  Starting from Perl 5.16, one can
+C<when>, and C<break>.  Starting from Perl 5.16, one can
 prefix the switch keywords with C<CORE::> to access the feature without
 a C<use feature> statement.
 
@@ -640,7 +639,7 @@ C<given> evaluates its argument in scalar context, and executes its block
 with the C<$_> variable locally aliased to the result of evaluating the
 argument expression.  It is much like a C<foreach> loop that always has
 exactly one item to iterate over.  Either a C<given> or a C<foreach>
-construct serves as a I<topicalizer>: C<when> and C<default> can only
+construct serves as a I<topicalizer>: C<when> can only
 be used in the dynamic scope of a topicalizer.
 
 C<when> evaluates its argument as a truth value.  If the argument
@@ -651,10 +650,6 @@ topicalizer.  (In the case of a C<foreach> topicalizer, this jump
 behaves as a C<next>, moving on to the next iteration, not a C<last>,
 which would exit the loop.)
 
-C<default> always executes its block and then implicitly jumps to the
-end of the closest dynamically enclosing topicalizer.  It is precisely
-equivalent to C<when(1)>.
-
 Putting this together, the code in the previous section could be
 rewritten as
 
@@ -663,7 +658,7 @@ rewritten as
         when (/^abc/) { $abc = 1 }
         when (/^def/) { $def = 1 }
         when (/^xyz/) { $xyz = 1 }
-        default       { $nothing = 1 }
+        $nothing = 1;
     }
 
 Or if you prefer the modifier form of C<when>, it can be written with
@@ -674,16 +669,16 @@ less punctuation as
         $abc = 1 when /^abc/;
         $def = 1 when /^def/;
         $xyz = 1 when /^xyz/;
-        default { $nothing = 1 }
+        $nothing = 1;
     }
 
 You can use the C<break> keyword to break out of the dynamically enclosing
 topicalizer, if it's a C<given> block.  This resembles the jump to the end
 of the topicalizer that implicitly happens at the end of every C<when>
-or C<default> block, except that the explicit C<break> can only break
+block, except that the explicit C<break> can only break
 out of a C<given> topicalizer, not a C<foreach>.
 
-You can use the C<continue> keyword to exit a C<when> or C<default>
+You can use the C<continue> keyword to exit a C<when>
 block, proceeding to the following statement.  This is most commonly
 done last thing inside the block, to override the implicit jump to the
 end of the topicalizer.  For example
@@ -691,7 +686,7 @@ end of the topicalizer.  For example
     given($foo) {
         when (/x/) { say '$foo contains an x'; continue }
         when (/y/) { say '$foo contains a y'            }
-        default    { say '$foo does not contain a y'    }
+        say '$foo does not contain a y';
     }
 
 When a C<given> statement is executed in a position where it will provide
@@ -707,7 +702,7 @@ An empty list as soon as an explicit C<break> is encountered.
 =item *
 
 The value of the last evaluated expression of the successful
-C<when>/C<default> clause, if there happens to be one.
+C<when> clause, if there happens to be one.
 
 =item *
 
index 4eeba9f..a3ece51 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -4663,7 +4663,7 @@ PP(pp_enterwhen)
        to the op that follows the leavewhen.
        RETURNOP calls PUTBACK which restores the stack pointer after the POPs.
     */
-    if (!(PL_op->op_flags & OPf_SPECIAL) && !SvTRUEx(POPs))
+    if (!SvTRUEx(POPs))
        RETURNOP(cLOGOP->op_other->op_next);
 
     cx = cx_pushblock(CXt_WHEN, gimme, SP, PL_savestack_ix);
@@ -4685,9 +4685,7 @@ PP(pp_leavewhen)
 
     cxix = dopoptogivenfor(cxstack_ix);
     if (cxix < 0)
-       /* diag_listed_as: Can't "when" outside a topicalizer */
-       DIE(aTHX_ "Can't \"%s\" outside a topicalizer",
-                  PL_op->op_flags & OPf_SPECIAL ? "default" : "when");
+       DIE(aTHX_ "Can't \"when\" outside a topicalizer");
 
     oldsp = PL_stack_base + cx->blk_oldsp;
     if (gimme == G_VOID)
diff --git a/proto.h b/proto.h
index bd9e2d8..50f935d 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -2353,7 +2353,7 @@ PERL_CALLCONV OP* Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP* first, UNOP_AU
 PERL_CALLCONV OP*      Perl_newWHENOP(pTHX_ OP* cond, OP* block)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWWHENOP     \
-       assert(block)
+       assert(cond); assert(block)
 
 PERL_CALLCONV OP*      Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, OP* expr, OP* block, OP* cont, I32 has_my)
                        __attribute__warn_unused_result__;
index 9619d86..1ee1f29 100755 (executable)
@@ -40,7 +40,6 @@ my %feature_kw = (
     say       => 'say',
     given     => 'switch',
     when      => 'switch',
-    default   => 'switch',
     # continue is already a keyword
     break     => 'switch',
     evalbytes => 'evalbytes',
@@ -147,7 +146,6 @@ __END__
 -crypt
 -dbmclose
 -dbmopen
-+default
 +defined
 +delete
 -die
index 16488c6..fb81c0a 100644 (file)
@@ -11,9 +11,3 @@ use 5.01; no warnings 'experimental::smartmatch';
 when(!defined){}
 EXPECT
 Can't "when" outside a topicalizer at - line 2.
-########
-# NAME default outside given
-use 5.01;
-default{}
-EXPECT
-Can't "default" outside a topicalizer at - line 2.
index 0dee7f5..0d3fab2 100644 (file)
@@ -16,13 +16,6 @@ EXPECT
 Unquoted string "when" may clash with future reserved word at - line 3.
 when
 ########
-# No switch; default should be a bareword.
-use warnings; no warnings 'experimental::smartmatch';
-print STDOUT default;
-EXPECT
-Unquoted string "default" may clash with future reserved word at - line 3.
-default
-########
 # No switch; break should be a bareword.
 use warnings; no warnings 'experimental::smartmatch';
 print STDOUT break;
@@ -47,12 +40,6 @@ given(1) { when(1) { print "okay" } }
 EXPECT
 okay
 ########
-# Use switch; so default is a keyword
-use feature 'switch'; no warnings 'experimental::smartmatch';
-given(1) { default { print "okay" } }
-EXPECT
-okay
-########
 # Use switch; so break is a keyword
 use feature 'switch';
 break;
@@ -81,17 +68,6 @@ Unquoted string "when" may clash with future reserved word at - line 6.
 Okay here
 when
 ########
-# switch out of scope; default should be a bareword.
-use warnings; no warnings 'experimental::smartmatch';
-{ use feature 'switch';
-  given (1) { default {print "Okay here\n";} }
-}
-print STDOUT default;
-EXPECT
-Unquoted string "default" may clash with future reserved word at - line 6.
-Okay here
-default
-########
 # switch out of scope; break should be a bareword.
 use warnings; no warnings 'experimental::smartmatch';
 { use feature 'switch';
index fec9fe6..66425db 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     set_up_inc('../lib');
 }
 
-plan tests => 254;
+plan tests => 253;
 
 while (<DATA>) {
     chomp;
@@ -69,7 +69,6 @@ cos (_)
 crypt ($$)
 dbmclose (\%)
 dbmopen (\%$$)
-default undef
 defined undef
 delete undef
 die (@)
index 01bc007..f7558ba 100644 (file)
@@ -342,7 +342,7 @@ foreach my $spam (@spam) {
     no warnings 'experimental::smartmatch';
     given (state $spam = $spam) {
         when ($spam [0]) {ok 1, "given"}
-        default          {ok 0, "given"}
+        ok 0, "given";
     }
 }
 
index fda7bdf..11372df 100644 (file)
@@ -20,7 +20,7 @@ plan tests => 166;
 # Before loading feature, test the switch ops with CORE::
 CORE::given(3) {
     CORE::when(3) { pass "CORE::given and CORE::when"; continue }
-    CORE::default { pass "continue (without feature) and CORE::default" }
+    pass "continue (without feature)";
 }
 
 
@@ -63,7 +63,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when($_ == 2) { $ok = 'two'; }
        when($_ == 3) { $ok = 'three'; }
        when($_ == 4) { $ok = 'four'; }
-       default { $ok = 'd'; }
+       $ok = 'd';
     }
     is($ok, 'three', "numeric comparison");
 }
@@ -75,7 +75,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when($_ == 2) { $ok = 'two'; }
        when($_ == 3) { $ok = 'three'; }
        when($_ == 4) { $ok = 'four'; }
-       default { $ok = 'd'; }
+       $ok = 'd';
     }
     is($ok, 'three', "integer comparison");
 }
@@ -86,7 +86,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when($_ == 3.1)   { $ok1 = 'n'; }
        when($_ == 3.0)   { $ok1 = 'y'; continue }
        when($_ == "3.0") { $ok2 = 'y'; }
-       default     { $ok2 = 'n'; }
+       $ok2 = 'n';
     }
     is($ok1, 'y', "more numeric (pt. 1)");
     is($ok2, 'y', "more numeric (pt. 2)");
@@ -98,7 +98,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when($_ eq "b") { $ok = 'B'; }
        when($_ eq "c") { $ok = 'C'; }
        when($_ eq "d") { $ok = 'D'; }
-       default   { $ok = 'def'; }
+       $ok = 'def';
     }
     is($ok, 'C', "string comparison");
 }
@@ -109,7 +109,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when($_ eq "b") { $ok = 'B'; }
        when($_ eq "c") { $ok = 'C'; continue }
        when($_ eq "c") { $ok = 'CC'; }
-       default   { $ok = 'D'; }
+       $ok = 'D';
     }
     is($ok, 'CC', "simple continue");
 }
@@ -186,7 +186,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ < 20) { $ok = "twenty" }
        when ($_ < 30) { $ok = "thirty" }
        when ($_ < 40) { $ok = "forty" }
-       default        { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "thirty", $test);
 }
@@ -201,7 +201,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ < 20) { $ok = "twenty" }
        when ($_ < 30) { $ok = "thirty" }
        when ($_ < 40) { $ok = "forty" }
-       default        { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "thirty", $test);
 }
@@ -215,7 +215,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ <= 20) { $ok = "twenty" }
        when ($_ <= 30) { $ok = "thirty" }
        when ($_ <= 40) { $ok = "forty" }
-       default         { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "thirty", $test);
 }
@@ -230,7 +230,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ <= 20) { $ok = "twenty" }
        when ($_ <= 30) { $ok = "thirty" }
        when ($_ <= 40) { $ok = "forty" }
-       default         { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "thirty", $test);
 }
@@ -245,7 +245,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ > 30) { $ok = "thirty" }
        when ($_ > 20) { $ok = "twenty" }
        when ($_ > 10) { $ok = "ten" }
-       default        { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "twenty", $test);
 }
@@ -259,7 +259,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ >= 30) { $ok = "thirty" }
        when ($_ >= 20) { $ok = "twenty" }
        when ($_ >= 10) { $ok = "ten" }
-       default         { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "twenty", $test);
 }
@@ -274,7 +274,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ > 30) { $ok = "thirty" }
        when ($_ > 20) { $ok = "twenty" }
        when ($_ > 10) { $ok = "ten" }
-       default        { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "twenty", $test);
 }
@@ -289,7 +289,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ >= 30) { $ok = "thirty" }
        when ($_ >= 20) { $ok = "twenty" }
        when ($_ >= 10) { $ok = "ten" }
-       default         { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "twenty", $test);
 }
@@ -304,7 +304,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ lt "20") { $ok = "twenty" }
        when ($_ lt "30") { $ok = "thirty" }
        when ($_ lt "40") { $ok = "forty" }
-       default           { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "thirty", $test);
 }
@@ -318,7 +318,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ le "20") { $ok = "twenty" }
        when ($_ le "30") { $ok = "thirty" }
        when ($_ le "40") { $ok = "forty" }
-       default           { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "thirty", $test);
 }
@@ -332,7 +332,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ ge "30") { $ok = "thirty" }
        when ($_ ge "20") { $ok = "twenty" }
        when ($_ ge "10") { $ok = "ten" }
-       default           { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "twenty", $test);
 }
@@ -346,7 +346,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
        when ($_ ge "30") { $ok = "thirty" }
        when ($_ ge "20") { $ok = "twenty" }
        when ($_ ge "10") { $ok = "ten" }
-       default           { $ok = "default" }
+       $ok = "default";
     }
     is($ok, "twenty", $test);
 }
@@ -365,7 +365,7 @@ sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
     my $ok;
     given(23) {
         when ($_ == scalar 24) { $ok = 'n'; continue }
-        default { $ok = 'y' }
+        $ok = 'y';
     }
     is($ok,'y','scalar()');
 }
@@ -474,7 +474,7 @@ sub notfoo {"bar"}
     for my $l (qw(a b c d)) {
        given ($l) {
            when ($_ eq "b" .. $_ eq "c") { $n = 1 }
-           default { $n = 0 }
+           $n = 0;
        }
        ok(($n xor $l =~ /[ad]/), 'when(E1..E2) evaluates in boolean context');
     }
@@ -485,7 +485,7 @@ sub notfoo {"bar"}
     for my $l (qw(a b c d)) {
        given ($l) {
            when ($_ eq "b" ... $_ eq "c") { $n = 1 }
-           default { $n = 0 }
+           $n = 0;
        }
        ok(($n xor $l =~ /[ad]/), 'when(E1...E2) evaluates in boolean context');
     }
@@ -709,7 +709,7 @@ sub contains_x {
        do { $ok = 1; continue } when /pea/;
        $ok += 2;
        $ok = 0 when /pie/;
-       default { $ok += 4 }
+       $ok += 4; break;
        $ok = 0;
     }
     is($ok, 7, "postfix regex");
@@ -864,8 +864,7 @@ GIVEN5:
        my $scalar = do { given ($_) {
            no warnings 'void';
            when ($_ == 0) { 5 }
-           default  { 8, 9 }
-           6, 7;
+           8, 9;
        } };
        is($scalar, shift(@exp), "rvalue given - default scalar [$_]");
     }
@@ -903,8 +902,7 @@ GIVEN5:
     for (0, 1, 2) {
        my @list = do { given ($_) {
            when ($_ == 0) { "moo" =~ /(.)/g }
-           default  { 8, scalar(@things) }
-           6, 7;
+           8, scalar(@things);
        } };
        is("@list", shift(@exp), "rvalue given - default list [$_]");
     }
@@ -1037,10 +1035,7 @@ GIVEN5:
                        456;
                    }
                };
-               default {
-                   $tester->($id_plus_1);
-               }
-               'XXX';
+               $tester->($id_plus_1);
            }
        };
        is $res, $id, "across continue and default - $desc";
@@ -1085,7 +1080,7 @@ GIVEN5:
                    when ($_ == 1) { my $y = Fmurrr->new($destroyed, 1); break }
                    when ($_ == 2) { $x = Fmurrr->new($destroyed, 2); continue }
                    when ($_ == 2) { $x }
-                   default  { Fmurrr->new($destroyed, 3) }
+                   Fmurrr->new($destroyed, 3);
                }
            };
            $res_id = $res->{id};
@@ -1141,7 +1136,7 @@ GIVEN5:
         when ($_ == 1) {$i +=    1 }
         when ($_ == 2) {$i +=   10 }
         when ($_ == 3) {$i +=  100 }
-        default { $i += 1000 }
+        $i += 1000;
     }
     is($i, 111, "when in for 1..3");
 
@@ -1150,7 +1145,7 @@ GIVEN5:
         when ($_ eq 'a') {$i +=    1 }
         when ($_ eq 'b') {$i +=   10 }
         when ($_ eq 'c') {$i +=  100 }
-        default { $i += 1000 }
+        $i += 1000;
     }
     is($i, 111, "when in for a..c");
 
@@ -1159,7 +1154,7 @@ GIVEN5:
         when ($_ == 1) {$i +=    1 }
         when ($_ == 2) {$i +=   10 }
         when ($_ == 3) {$i +=  100 }
-        default { $i += 1000 }
+        $i += 1000;
     }
     is($i, 111, "when in for 1,2,3");
 
@@ -1169,7 +1164,7 @@ GIVEN5:
         when ($_ == 1) {$i +=    1 }
         when ($_ == 2) {$i +=   10 }
         when ($_ == 3) {$i +=  100 }
-        default { $i += 1000 }
+        $i += 1000;
     }
     is($i, 111, 'when in for @a');
 }
index d91ec8b..cdf0724 100644 (file)
@@ -2411,7 +2411,6 @@ end
            given ($_) {
                when ('x') { $letter }
                when ('y') { goto leavegiven }
-               default    { $letter }
                leavegiven:  $letter
            }
        };
index d1779cf..b18e7b8 100644 (file)
@@ -25,7 +25,7 @@ autodie cpan/autodie/lib/autodie/hints.pm e1998fec61fb4e82fe46585bd82c73200be6f2
 autodie cpan/autodie/t/exceptions.t ad315a208f875e06b0964012ce8d65daa438c036
 autodie cpan/autodie/t/lib/Hints_pod_examples.pm 6944c218e9754b3613c8d0c90a5ae8aceccb5c99
 autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac
-experimental cpan/experimental/t/basic.t d971ca6e0b5b4d160a5429575675129dcea6b07c
+experimental cpan/experimental/t/basic.t 7029f7ca63251f277d741d155caea44f538d7e96
 perlfaq cpan/perlfaq/lib/perlfaq5.pod bcc1b6af3b6dff3973643acf8d5e741463374123
 perlfaq cpan/perlfaq/lib/perlfaq8.pod bffbc0c8fa828aead24e0891a5e789369a8e0743
 podlators pod/perlpodstyle.pod c6500c9950b46e8228d4adbc09a3ee2ef23de2d0
diff --git a/toke.c b/toke.c
index f94c0d5..0967512 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -316,7 +316,6 @@ static struct debug_tokens {
     { BITOROP,         TOKENTYPE_OPNUM,        "BITOROP" },
     { COLONATTR,       TOKENTYPE_NONE,         "COLONATTR" },
     { CONTINUE,                TOKENTYPE_NONE,         "CONTINUE" },
-    { DEFAULT,         TOKENTYPE_NONE,         "DEFAULT" },
     { DO,              TOKENTYPE_NONE,         "DO" },
     { DOLSHARP,                TOKENTYPE_NONE,         "DOLSHARP" },
     { DORDOR,          TOKENTYPE_NONE,         "DORDOR" },
@@ -7847,9 +7846,6 @@ Perl_yylex(pTHX)
        case KEY_chroot:
            UNI(OP_CHROOT);
 
-       case KEY_default:
-           PREBLOCK(DEFAULT);
-
        case KEY_do:
            s = skipspace(s);
            if (*s == '{')