[Scummvm-git-logs] scummvm master -> bc3a642cb70b78b38d3f2ca769fa0a4edcad1be0

sev- sev at scummvm.org
Sat May 30 14:11:37 UTC 2020


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
9603782f62 DIRECTOR: LINGO: Rewrote 'repeat with..to' to be non-recursive
bc3a642cb7 DIRECTOR: LINGO: Made 'repeat with...down to' non-recursive


Commit: 9603782f62c829515506aa52ff0a680722540192
    https://github.com/scummvm/scummvm/commit/9603782f62c829515506aa52ff0a680722540192
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-30T16:11:21+02:00

Commit Message:
DIRECTOR: LINGO: Rewrote 'repeat with..to' to be non-recursive

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 7d2e37a8c8..234d5f1b0c 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -410,52 +410,56 @@ enum yysymbol_kind_t
   YYSYMBOL_stmtoneliner = 108,             /* stmtoneliner  */
   YYSYMBOL_stmtonelinerwithif = 109,       /* stmtonelinerwithif  */
   YYSYMBOL_stmt = 110,                     /* stmt  */
-  YYSYMBOL_tellstart = 111,                /* tellstart  */
-  YYSYMBOL_ifstmt = 112,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 113,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 114,               /* elseifstmt  */
-  YYSYMBOL_ifoneliner = 115,               /* ifoneliner  */
-  YYSYMBOL_repeatwhile = 116,              /* repeatwhile  */
-  YYSYMBOL_repeatwith = 117,               /* repeatwith  */
-  YYSYMBOL_jumpifz = 118,                  /* jumpifz  */
-  YYSYMBOL_jump = 119,                     /* jump  */
-  YYSYMBOL_if = 120,                       /* if  */
-  YYSYMBOL_begin = 121,                    /* begin  */
-  YYSYMBOL_end = 122,                      /* end  */
-  YYSYMBOL_stmtlist = 123,                 /* stmtlist  */
-  YYSYMBOL_when = 124,                     /* when  */
-  YYSYMBOL_simpleexpr = 125,               /* simpleexpr  */
-  YYSYMBOL_expr = 126,                     /* expr  */
-  YYSYMBOL_chunkexpr = 127,                /* chunkexpr  */
-  YYSYMBOL_reference = 128,                /* reference  */
-  YYSYMBOL_proc = 129,                     /* proc  */
-  YYSYMBOL_130_1 = 130,                    /* $@1  */
-  YYSYMBOL_131_2 = 131,                    /* $@2  */
-  YYSYMBOL_132_3 = 132,                    /* $@3  */
-  YYSYMBOL_globallist = 133,               /* globallist  */
-  YYSYMBOL_propertylist = 134,             /* propertylist  */
-  YYSYMBOL_instancelist = 135,             /* instancelist  */
-  YYSYMBOL_gotofunc = 136,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 137,                /* gotomovie  */
-  YYSYMBOL_playfunc = 138,                 /* playfunc  */
-  YYSYMBOL_139_4 = 139,                    /* $@4  */
-  YYSYMBOL_defn = 140,                     /* defn  */
-  YYSYMBOL_141_5 = 141,                    /* $@5  */
-  YYSYMBOL_142_6 = 142,                    /* $@6  */
+  YYSYMBOL_111_1 = 111,                    /* $@1  */
+  YYSYMBOL_112_2 = 112,                    /* $@2  */
+  YYSYMBOL_113_3 = 113,                    /* $@3  */
+  YYSYMBOL_tellstart = 114,                /* tellstart  */
+  YYSYMBOL_ifstmt = 115,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 116,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 117,               /* elseifstmt  */
+  YYSYMBOL_ifoneliner = 118,               /* ifoneliner  */
+  YYSYMBOL_repeatwhile = 119,              /* repeatwhile  */
+  YYSYMBOL_repeatwith = 120,               /* repeatwith  */
+  YYSYMBOL_jumpifz = 121,                  /* jumpifz  */
+  YYSYMBOL_jump = 122,                     /* jump  */
+  YYSYMBOL_varassign = 123,                /* varassign  */
+  YYSYMBOL_if = 124,                       /* if  */
+  YYSYMBOL_begin = 125,                    /* begin  */
+  YYSYMBOL_end = 126,                      /* end  */
+  YYSYMBOL_stmtlist = 127,                 /* stmtlist  */
+  YYSYMBOL_when = 128,                     /* when  */
+  YYSYMBOL_simpleexpr = 129,               /* simpleexpr  */
+  YYSYMBOL_expr = 130,                     /* expr  */
+  YYSYMBOL_chunkexpr = 131,                /* chunkexpr  */
+  YYSYMBOL_reference = 132,                /* reference  */
+  YYSYMBOL_proc = 133,                     /* proc  */
+  YYSYMBOL_134_4 = 134,                    /* $@4  */
+  YYSYMBOL_135_5 = 135,                    /* $@5  */
+  YYSYMBOL_136_6 = 136,                    /* $@6  */
+  YYSYMBOL_globallist = 137,               /* globallist  */
+  YYSYMBOL_propertylist = 138,             /* propertylist  */
+  YYSYMBOL_instancelist = 139,             /* instancelist  */
+  YYSYMBOL_gotofunc = 140,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 141,                /* gotomovie  */
+  YYSYMBOL_playfunc = 142,                 /* playfunc  */
   YYSYMBOL_143_7 = 143,                    /* $@7  */
-  YYSYMBOL_on = 144,                       /* on  */
+  YYSYMBOL_defn = 144,                     /* defn  */
   YYSYMBOL_145_8 = 145,                    /* $@8  */
-  YYSYMBOL_argdef = 146,                   /* argdef  */
-  YYSYMBOL_endargdef = 147,                /* endargdef  */
-  YYSYMBOL_argstore = 148,                 /* argstore  */
-  YYSYMBOL_macro = 149,                    /* macro  */
-  YYSYMBOL_arglist = 150,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 151,          /* nonemptyarglist  */
-  YYSYMBOL_list = 152,                     /* list  */
-  YYSYMBOL_valuelist = 153,                /* valuelist  */
-  YYSYMBOL_linearlist = 154,               /* linearlist  */
-  YYSYMBOL_proplist = 155,                 /* proplist  */
-  YYSYMBOL_proppair = 156                  /* proppair  */
+  YYSYMBOL_146_9 = 146,                    /* $@9  */
+  YYSYMBOL_147_10 = 147,                   /* $@10  */
+  YYSYMBOL_on = 148,                       /* on  */
+  YYSYMBOL_149_11 = 149,                   /* $@11  */
+  YYSYMBOL_argdef = 150,                   /* argdef  */
+  YYSYMBOL_endargdef = 151,                /* endargdef  */
+  YYSYMBOL_argstore = 152,                 /* argstore  */
+  YYSYMBOL_macro = 153,                    /* macro  */
+  YYSYMBOL_arglist = 154,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 155,          /* nonemptyarglist  */
+  YYSYMBOL_list = 156,                     /* list  */
+  YYSYMBOL_valuelist = 157,                /* valuelist  */
+  YYSYMBOL_linearlist = 158,               /* linearlist  */
+  YYSYMBOL_proplist = 159,                 /* proplist  */
+  YYSYMBOL_proppair = 160                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -765,16 +769,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  128
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2426
+#define YYLAST   2498
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  53
+#define YYNNTS  57
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  174
+#define YYNRULES  178
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  378
+#define YYNSTATES  383
 
 #define YYMAXUTOK   343
 
@@ -831,24 +835,24 @@ static const yytype_int8 yytranslate[] =
   /* YYRLINEYYN -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   165,   165,   166,   168,   169,   170,   172,   178,   182,
-     193,   194,   195,   201,   208,   214,   221,   227,   234,   245,
-     252,   253,   254,   256,   257,   258,   259,   261,   262,   267,
-     278,   295,   307,   318,   320,   325,   329,   334,   338,   345,
-     353,   354,   356,   362,   368,   374,   376,   382,   386,   390,
-     393,   395,   397,   398,   399,   401,   407,   410,   413,   417,
-     421,   425,   433,   434,   435,   446,   447,   448,   451,   454,
-     457,   460,   466,   471,   477,   478,   479,   480,   481,   482,
-     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
-     493,   494,   495,   496,   497,   498,   499,   501,   502,   503,
-     504,   505,   506,   507,   508,   510,   513,   515,   516,   517,
-     518,   519,   520,   520,   521,   521,   522,   522,   523,   526,
-     529,   530,   532,   537,   543,   548,   554,   559,   572,   573,
-     574,   575,   579,   583,   588,   589,   591,   595,   599,   603,
-     603,   633,   633,   633,   639,   640,   640,   646,   654,   660,
-     660,   663,   664,   665,   667,   668,   669,   671,   673,   681,
-     682,   683,   685,   686,   688,   690,   691,   692,   693,   695,
-     696,   698,   699,   701,   705
+       0,   166,   166,   167,   169,   170,   171,   173,   179,   183,
+     194,   195,   196,   202,   209,   215,   222,   228,   235,   246,
+     253,   254,   255,   257,   258,   259,   260,   262,   263,   268,
+     280,   283,   286,   279,   309,   326,   337,   339,   344,   348,
+     353,   357,   364,   372,   373,   375,   381,   387,   393,   395,
+     401,   405,   409,   413,   416,   418,   420,   421,   422,   424,
+     430,   433,   436,   440,   444,   448,   456,   457,   458,   469,
+     470,   471,   474,   477,   480,   483,   489,   494,   500,   501,
+     502,   503,   504,   505,   506,   507,   508,   509,   510,   511,
+     512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
+     522,   524,   525,   526,   527,   528,   529,   530,   531,   533,
+     536,   538,   539,   540,   541,   542,   543,   543,   544,   544,
+     545,   545,   546,   549,   552,   553,   555,   560,   566,   571,
+     577,   582,   595,   596,   597,   598,   602,   606,   611,   612,
+     614,   618,   622,   626,   626,   656,   656,   656,   662,   663,
+     663,   669,   677,   683,   683,   686,   687,   688,   690,   691,
+     692,   694,   696,   704,   705,   706,   708,   709,   711,   713,
+     714,   715,   716,   718,   719,   721,   722,   724,   728
 };
 #endif
 
@@ -881,14 +885,15 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
   "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
   "$accept", "program", "programline", "asgn", "stmtoneliner",
-  "stmtonelinerwithif", "stmt", "tellstart", "ifstmt", "elseifstmtlist",
-  "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "jumpifz",
-  "jump", "if", "begin", "end", "stmtlist", "when", "simpleexpr", "expr",
-  "chunkexpr", "reference", "proc", "$@1", "$@2", "$@3", "globallist",
-  "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
-  "$@4", "defn", "$@5", "$@6", "$@7", "on", "$@8", "argdef", "endargdef",
-  "argstore", "macro", "arglist", "nonemptyarglist", "list", "valuelist",
-  "linearlist", "proplist", "proppair", YY_NULLPTR
+  "stmtonelinerwithif", "stmt", "$@1", "$@2", "$@3", "tellstart", "ifstmt",
+  "elseifstmtlist", "elseifstmt", "ifoneliner", "repeatwhile",
+  "repeatwith", "jumpifz", "jump", "varassign", "if", "begin", "end",
+  "stmtlist", "when", "simpleexpr", "expr", "chunkexpr", "reference",
+  "proc", "$@4", "$@5", "$@6", "globallist", "propertylist",
+  "instancelist", "gotofunc", "gotomovie", "playfunc", "$@7", "defn",
+  "$@8", "$@9", "$@10", "on", "$@11", "argdef", "endargdef", "argstore",
+  "macro", "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
+  "proplist", "proppair", YY_NULLPTR
   };
   return yy_sname[yysymbol];
 }
@@ -913,12 +918,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-281)
+#define YYPACT_NINF (-283)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-166)
+#define YYTABLE_NINF (-170)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -927,44 +932,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     693,   -76,  -281,  -281,    60,  -281,   515,   313,    60,     1,
-     416,  -281,  -281,  -281,  -281,  -281,  -281,   -26,  -281,  1625,
-    -281,  -281,  -281,    15,  1781,   -40,   136,    33,    47,  1863,
-    1662,  -281,  1863,  1863,  1863,  1863,  1863,  1863,  1863,  -281,
-    -281,  1863,  1863,  1863,   205,    84,    -7,  -281,  -281,  -281,
-    -281,  1863,   -23,  1863,  1461,  -281,  2318,  -281,  -281,  -281,
-    -281,  -281,  -281,  -281,  -281,  -281,  -281,  -281,  -281,    -5,
-    1781,  1744,  2318,    -3,  1744,    -3,  -281,    60,  1744,  2318,
-      -1,   604,  -281,  -281,    80,  1863,  -281,    71,  -281,  1905,
-    -281,   100,  -281,   101,  1855,   102,  -281,   -46,    60,    60,
-     -43,    77,    98,  -281,  2215,  1905,  -281,   107,  -281,  1938,
-    1971,  2004,  2037,  2285,  2202,   131,   133,  -281,  -281,  2248,
-      61,    62,  -281,  2318,    65,    63,    68,  -281,  -281,   693,
-    2318,  -281,  -281,  2318,  -281,  -281,  1863,  2318,  -281,  -281,
-    1863,  1863,  1863,  1863,  1863,  1863,  1863,  1863,  1863,  1863,
-    1863,  1863,  1863,  1863,  1863,  1863,  1863,   147,  1744,  1855,
-    2248,    -4,  1863,    11,  -281,    24,  1863,    -3,   147,  -281,
-      76,  2318,  1863,  -281,  -281,    60,    43,  1863,  1863,  -281,
-    1863,  1863,    -2,   129,  1863,  1863,  1863,  -281,  1863,  -281,
-    -281,    83,  1863,  1863,  1863,  1863,  1863,  1863,  1863,  1863,
-    1863,  1863,  -281,  -281,  -281,    85,  -281,  -281,    60,    60,
-    -281,  1863,    49,  -281,  -281,  1863,  1863,   143,  -281,  2318,
-     151,   151,   151,   151,  2331,  2331,  -281,    21,   151,   151,
-     151,   151,    21,   -24,   -24,  -281,  -281,  -281,   -85,  -281,
-    2318,  -281,  -281,  2318,   -44,   158,  2318,  -281,   153,  -281,
-    -281,  2318,  2318,  2318,   151,  1863,  1863,   172,  2318,   151,
-    2318,  2318,   173,  2318,  2070,  2318,  2103,  2318,  2136,  2318,
-    2169,  2318,  2318,  1543,  -281,   174,  -281,  -281,  2318,    61,
-      62,  -281,  1120,  2318,  2318,  -281,   148,  -281,   176,  -281,
-    -281,   147,  1863,  2318,   151,    60,  -281,  1863,  1863,  1863,
-    1863,  -281,  1205,  -281,  -281,  -281,   116,  -281,     8,  1034,
-    1543,  -281,  -281,  -281,   -15,  2318,   150,  2318,  2318,  2318,
-    2318,  -281,   119,  -281,  1290,   154,  1863,  -281,   125,   779,
-     864,  -281,  1863,  -281,   126,  1863,  2318,    66,   180,   132,
-     186,  -281,  2318,  -281,  2318,  -281,  -281,  1863,  -281,   134,
-    -281,  -281,  -281,   117,   949,  -281,  1290,  -281,  2318,  -281,
-    1543,   199,  1290,   146,  1375,   182,  -281,  -281,   149,  -281,
-     155,  -281,   161,  -281,  -281,  1034,  -281,  -281
+     785,   -81,  -283,  -283,    60,  -283,   607,   323,    60,   -27,
+     508,  -283,  -283,  -283,  -283,  -283,  -283,   -26,  -283,  1802,
+    -283,  -283,  -283,    12,  1958,    34,   280,    17,    52,  2040,
+    1839,  -283,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  -283,
+    -283,  2040,  2040,  2040,   418,    70,   -17,  -283,  -283,  -283,
+    -283,  2040,   -24,  2040,  1638,  -283,  2390,  -283,  -283,  -283,
+    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,   -14,
+    1958,  1921,  2390,    -7,  1921,    -7,  -283,    60,  1921,  2390,
+      -5,   696,  -283,  -283,    71,  2040,  -283,    57,  -283,  2032,
+    -283,    90,  -283,    92,   390,    98,  -283,   -45,    60,    60,
+     -43,    72,    58,  -283,  2324,  2032,  -283,   101,  -283,  2080,
+    2113,  2146,  2179,  2357,   191,   102,   103,  -283,  -283,   133,
+      30,    48,  -283,  2390,    53,    54,    59,  -283,  -283,   785,
+    2390,  -283,  -283,  2390,  -283,  -283,  2040,  2390,  -283,  -283,
+    2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,
+    2040,  2040,  2040,  2040,  2040,  2040,  2040,   131,  1921,   390,
+     133,     0,  2040,     7,  -283,    10,  2040,    -7,   131,  -283,
+      62,  2390,  2040,  -283,  -283,    60,    36,  2040,  2040,    99,
+    2040,  2040,    -8,   115,  2040,  2040,  2040,  -283,  2040,  -283,
+    -283,    65,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,
+    2040,  2040,  -283,  -283,  -283,    67,  -283,  -283,    60,    60,
+    -283,  2040,    44,  -283,  -283,  2040,  2040,   120,  -283,  2390,
+     143,   143,   143,   143,  2403,  2403,  -283,   148,   143,   143,
+     143,   143,   148,   -28,   -28,  -283,  -283,  -283,   -85,  -283,
+    2390,  -283,  -283,  2390,   -48,   150,  2390,  -283,   140,  -283,
+    -283,  2390,  2390,  2040,  2390,   143,  2040,  2040,   151,  2390,
+     143,  2390,  2390,   176,  2390,  2212,  2390,  2245,  2390,  2278,
+    2390,  2311,  2390,  2390,  1720,  -283,   178,  -283,  -283,  2390,
+      30,    48,  -283,  1212,  2390,  2390,  -283,   158,  -283,   186,
+    -283,  -283,   131,  2040,  2390,  2390,   143,    60,  -283,  2040,
+    2040,  2040,  2040,  -283,  1297,  -283,  -283,  -283,   130,  -283,
+     184,  1126,  1720,  -283,  -283,  -283,   -44,  2390,  -283,   166,
+    2390,  2390,  2390,  2390,  -283,   142,  -283,  1382,   167,  -283,
+     145,   871,   956,  -283,  -283,  2040,  -283,   146,  2040,    85,
+     208,   160,   222,  -283,   195,  2390,  -283,  2390,  -283,  2040,
+    -283,   174,  -283,  -283,  -283,   152,  1041,  2040,  -283,  -283,
+    2390,  -283,  1720,   237,  2390,  1382,  1467,   214,  -283,  -283,
+    -283,   181,   183,  -283,   187,  -283,  -283,  -283,  1126,  -283,
+    1553,  -283,  -283
 };
 
   /* YYDEFACTSTATE-NUM -- Default reduction number in state STATE-NUM.
@@ -972,66 +978,67 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    56,    61,     0,    57,     0,     0,     0,     0,
-       0,    59,    58,   139,   145,    72,    73,   111,   112,     0,
-     128,    49,   141,     0,     0,     0,     0,     0,     0,     0,
-       0,   116,     0,     0,     0,     0,     0,     0,     0,   114,
-     149,     0,     0,     0,     0,     0,     2,    74,    27,     6,
-      28,     0,     0,     0,     0,    65,    21,   106,    66,    22,
-     108,   109,     5,    50,    20,    63,    64,    60,    71,    60,
-       0,     0,   160,   119,     0,    68,   105,     0,     0,   162,
-     158,     0,    50,   110,     0,     0,   129,     0,   130,   131,
-     133,     0,    33,     0,   107,     0,    45,     0,     0,     0,
-       0,     0,     0,   144,   121,   136,   138,     0,    88,     0,
-       0,     0,     0,     0,     0,     0,     0,    93,    94,     0,
-      59,    58,   166,   169,     0,   167,   168,   171,     1,     0,
-      47,    50,    50,    47,    51,    26,     0,    24,    25,    23,
+       0,     0,    60,    65,     0,    61,     0,     0,     0,     0,
+       0,    63,    62,   143,   149,    76,    77,   115,   116,     0,
+     132,    53,   145,     0,     0,     0,     0,     0,     0,     0,
+       0,   120,     0,     0,     0,     0,     0,     0,     0,   118,
+     153,     0,     0,     0,     0,     0,     2,    78,    27,     6,
+      28,     0,     0,     0,     0,    69,    21,   110,    70,    22,
+     112,   113,     5,    54,    20,    67,    68,    64,    75,    64,
+       0,     0,   164,   123,     0,    72,   109,     0,     0,   166,
+     162,     0,    54,   114,     0,     0,   133,     0,   134,   135,
+     137,     0,    36,     0,   111,     0,    48,     0,     0,     0,
+       0,     0,     0,   148,   125,   140,   142,     0,    92,     0,
+       0,     0,     0,     0,     0,     0,     0,    97,    98,     0,
+      63,    62,   170,   173,     0,   171,   172,   175,     1,     0,
+      50,    54,    54,    50,    55,    26,     0,    24,    25,    23,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,     0,     0,
-     160,     0,     0,     0,    70,     0,     0,   140,   151,   122,
-     113,   135,     0,   132,   142,     0,     0,     0,     0,    46,
-       0,     0,     0,     0,     0,     0,     0,    55,     0,   137,
-     126,   117,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    37,    37,   124,   115,   150,    62,     0,     0,
-     164,     0,     0,     3,    52,     0,     0,     0,    34,    47,
-      84,    85,    82,    83,    86,    87,    79,    90,    91,    92,
-      81,    80,    89,    75,    76,    77,    78,   152,     0,   118,
-     161,    67,    69,   163,     0,     0,   134,    50,     0,     7,
-       8,    10,    11,    15,    13,     0,     0,     0,    14,    12,
-      19,   120,     0,    97,     0,    99,     0,   101,     0,   103,
-       0,    95,    96,     0,    52,     0,   174,   173,   170,     0,
-       0,   172,     0,    51,    51,    52,     0,   157,     0,   157,
-     123,   151,     0,    16,    17,     0,   127,     0,     0,     0,
-       0,    51,     0,   125,    53,    54,     0,    52,     0,     0,
-       0,    52,   153,    52,     0,     9,     0,    98,   100,   102,
-     104,    36,     0,    29,     0,     0,     0,    40,    48,     0,
-       0,   157,     0,    35,     0,     0,    51,    50,     0,     0,
-     154,    52,    18,    32,    51,    52,    50,     0,    41,     0,
-      50,    44,   155,   147,     0,    52,     0,    52,    47,    38,
-       0,     0,     0,     0,     0,     0,    50,   156,     0,    30,
-       0,    52,     0,    31,    39,     0,    43,    42
+       0,     0,     0,     0,     0,     0,     0,   155,     0,     0,
+     164,     0,     0,     0,    74,     0,     0,   144,   155,   126,
+     117,   139,     0,   136,   146,     0,     0,     0,     0,    49,
+       0,     0,     0,     0,     0,     0,     0,    59,     0,   141,
+     130,   121,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    40,    40,   128,   119,   154,    66,     0,     0,
+     168,     0,     0,     3,    56,     0,     0,     0,    37,    50,
+      88,    89,    86,    87,    90,    91,    83,    94,    95,    96,
+      85,    84,    93,    79,    80,    81,    82,   156,     0,   122,
+     165,    71,    73,   167,     0,     0,   138,    54,     0,     7,
+       8,    10,    11,     0,    15,    13,     0,     0,     0,    14,
+      12,    19,   124,     0,   101,     0,   103,     0,   105,     0,
+     107,     0,    99,   100,     0,    56,     0,   178,   177,   174,
+       0,     0,   176,     0,    55,    55,    56,     0,   161,     0,
+     161,   127,   155,     0,    30,    16,    17,     0,   131,     0,
+       0,     0,     0,    55,     0,   129,    57,    58,     0,    56,
+       0,     0,     0,    56,   157,    56,     0,     9,    52,     0,
+     102,   104,   106,   108,    39,     0,    29,     0,     0,    43,
+      51,     0,     0,   161,    31,     0,    38,     0,     0,    54,
+       0,     0,   158,    56,     0,    18,    35,    55,    54,     0,
+      44,     0,    54,    47,   159,   151,     0,     0,    56,    56,
+      50,    41,     0,     0,    32,     0,     0,     0,    54,   160,
+      50,     0,     0,    56,     0,    56,    34,    42,     0,    46,
+       0,    45,    33
 };
 
   /* YYPGOTONTERM-NUM.  */
 static const yytype_int16 yypgoto[] =
 {
-    -281,   108,  -281,  -281,  -266,  -281,     3,    37,  -281,  -281,
-    -281,  -281,  -281,  -281,  -131,  -268,   194,   -77,  -244,   795,
-    -281,     6,    -6,  -281,    78,   198,  -281,  -281,  -281,  -281,
-    -281,  -281,  -281,    20,  -281,  -281,  -281,  -281,  -281,  -281,
-    -281,  -281,  -162,  -281,  -280,   202,    27,  -281,  -281,  -281,
-    -281,  -281,    41
+    -283,   141,  -283,  -283,  -268,  -283,     3,  -283,  -283,  -283,
+      69,  -283,  -283,  -283,  -283,  -283,  -283,  -131,  -261,  -283,
+     220,   -77,  -245,  -190,  -283,     6,    -6,  -283,   100,   223,
+    -283,  -283,  -283,  -283,  -283,  -283,  -283,   -13,  -283,  -283,
+    -283,  -283,  -283,  -283,  -283,  -283,  -161,  -283,  -282,   224,
+      27,  -283,  -283,  -283,  -283,  -283,    78
 };
 
   /* YYDEFGOTONTERM-NUM.  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    45,    46,    47,    48,   134,   305,   273,    50,   337,
-     348,   135,    51,    52,   214,   306,    53,   157,   218,   282,
-      54,    55,    56,    57,    58,    59,    84,   115,   107,   170,
-     205,   191,    60,    90,    61,    81,    62,    91,   247,    82,
-      63,   116,   238,   353,   311,    64,   165,    80,    65,   124,
-     125,   126,   127
+      -1,    45,    46,    47,    48,   134,   307,   318,   344,   370,
+     274,    50,   339,   350,   135,    51,    52,   214,   308,   334,
+      53,   157,   218,   283,    54,    55,    56,    57,    58,    59,
+      84,   115,   107,   170,   205,   191,    60,    90,    61,    81,
+      62,    91,   247,    82,    63,   116,   238,   355,   313,    64,
+     165,    80,    65,   124,   125,   126,   127
 };
 
   /* YYTABLEYYPACT[STATE-NUM] -- What to do in state STATE-NUM.  If
@@ -1039,496 +1046,510 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      72,    72,   217,    49,    79,   168,   244,   301,   180,   313,
-      68,   184,   287,    89,    76,   288,    95,    96,    94,   181,
-     131,    66,   185,   104,   105,    83,   108,   109,   110,   111,
-     112,   113,   114,    73,    75,   117,   118,   119,   123,   307,
-     308,   327,   132,   325,   328,   130,   146,   133,   137,    77,
-     106,   341,   255,   289,   215,   216,   288,   321,   322,   102,
-     338,     1,   326,   256,   159,   160,    92,     8,   160,   249,
-     155,   156,   160,   103,     2,    72,   279,     3,   280,   171,
-     334,     5,   331,   164,   128,   288,    67,    11,   286,    12,
-     129,   146,   345,   158,   366,   239,   162,   162,   161,   166,
-     355,   163,   346,   347,   182,   183,   169,   377,   167,   173,
-     241,   162,   363,   153,   154,   155,   156,   172,   368,    33,
-      34,    35,    36,   242,   162,   189,   174,   175,   179,   314,
-     219,   186,    49,   190,   220,   221,   222,   223,   224,   225,
+      72,    72,   217,    49,    79,   168,   303,   244,   315,   180,
+      68,   184,   288,    89,    76,   289,    66,   106,    94,   131,
+     181,    77,   185,   104,   105,    83,   108,   109,   110,   111,
+     112,   113,   114,    73,    75,   117,   118,   119,   123,   309,
+     310,   132,   146,   102,   330,   130,   256,   133,   137,   290,
+     329,   343,   289,   333,   215,   216,   289,   257,   324,   325,
+       8,     1,   249,    92,   159,   160,   155,   156,   160,   340,
+     128,   280,   160,   281,     2,    72,   173,     3,   103,   171,
+     129,     5,   337,   164,   158,   304,    67,    11,   287,    12,
+      95,    96,   189,   162,   368,   166,   311,   169,   161,   239,
+     162,   163,   358,   172,   182,   183,   241,   162,   167,   242,
+     162,   187,    33,    34,    35,    36,   174,   381,   175,   327,
+     371,   348,   349,   331,   179,   332,   186,   190,   204,   206,
+     219,   316,    49,   208,   220,   221,   222,   223,   224,   225,
      226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   187,    72,    97,    98,    99,   240,   204,    43,   206,
-     243,    44,   100,   211,   208,   209,   246,   210,   212,   101,
-     291,   251,   252,   237,   253,   254,   245,   257,   258,   259,
-     260,   248,   261,   262,   290,   275,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   285,   292,   295,   296,
-     303,   310,   312,   323,   332,   278,     1,   333,   335,   283,
-     284,   -50,   352,   343,   276,   277,   350,   361,   351,     2,
-     359,   146,     3,     4,   147,   367,     5,   365,     7,     8,
-       9,    69,   120,   369,   121,   371,   373,   213,    15,    16,
-     274,   374,   152,   153,   154,   155,   156,   376,   136,   293,
-     294,   339,   138,   281,   250,    70,   139,    26,     0,     0,
-     349,     0,     0,     0,     0,     0,     0,     0,     0,   357,
-       0,     0,     0,   360,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,   315,   370,     0,   372,
-       0,   317,   318,   319,   320,     0,     0,    41,    42,     0,
-       0,   316,     0,    43,     0,     0,    44,  -165,   122,     0,
-       0,     0,     0,  -159,     1,     0,     0,     0,     0,     0,
-     336,     0,     0,     0,     0,     0,   342,     2,     0,   344,
-       3,     4,     0,     0,     5,  -159,     7,     8,     9,    69,
-      11,   358,    12,  -159,  -159,     0,    15,    16,  -159,  -159,
-    -159,  -159,  -159,  -159,  -159,  -159,     0,  -159,     0,  -159,
-    -159,  -159,     0,    70,  -159,    26,  -159,  -159,  -159,  -159,
-       0,     0,     0,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-    -159,  -159,    32,  -159,  -159,  -159,  -159,  -159,  -159,    33,
-      34,    35,    36,    37,  -159,  -159,  -159,  -159,     0,  -159,
-    -159,  -159,  -159,  -159,  -159,    41,    42,  -159,  -159,     0,
-    -159,    74,  -159,  -159,    44,  -159,   -60,     1,     0,     0,
+     236,   209,    72,   356,   211,   210,   240,   237,    43,   212,
+     243,    44,   245,   258,   253,   263,   246,   276,   365,   366,
+     292,   251,   252,   286,   254,   255,   291,   297,   259,   260,
+     261,   248,   262,   378,   293,   380,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   140,   141,   142,   143,
+     144,   145,   298,   146,   305,   279,   147,   148,   149,   284,
+     285,   312,   314,   146,   277,   278,   147,   326,   146,   328,
+     335,   338,   150,   151,   152,   153,   154,   155,   156,   367,
+     336,   -54,   207,   346,   152,   153,   154,   155,   156,   375,
+     153,   154,   155,   156,   352,   202,   353,   294,   354,   357,
+     295,   296,   363,   341,   140,   141,   142,   143,   144,   145,
+     361,   146,   351,   369,   147,   148,   149,   373,   376,   377,
+     213,   359,   275,   379,   136,   362,   250,   138,   139,     0,
+     150,   151,   152,   153,   154,   155,   156,   317,   203,   372,
+     282,   374,     0,   320,   321,   322,   323,    97,    98,    99,
+       0,     0,     0,   319,     0,     0,   100,     0,     0,     0,
+       0,     0,     0,   101,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  -163,     1,     0,     0,     0,     0,   345,
+       0,     0,   347,     0,     0,     0,     0,     2,     0,     0,
+       3,     4,     0,   360,     5,  -163,     7,     8,     9,    69,
+      11,   364,    12,  -163,  -163,     0,    15,    16,  -163,  -163,
+    -163,  -163,  -163,  -163,  -163,  -163,     0,  -163,     0,  -163,
+    -163,  -163,     0,    70,  -163,    26,  -163,  -163,  -163,  -163,
+       0,     0,     0,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
+    -163,  -163,    32,  -163,  -163,  -163,  -163,  -163,  -163,    33,
+      34,    35,    36,    37,  -163,  -163,  -163,  -163,     0,  -163,
+    -163,  -163,  -163,  -163,  -163,    41,    42,  -163,  -163,     1,
+    -163,    74,  -163,  -163,    44,  -163,     0,     0,     0,     0,
+       0,     0,     2,     0,   176,     3,     4,     0,     0,     5,
+       0,     7,     8,     9,    69,   120,     0,   121,     0,     0,
+       0,    15,    16,   140,   141,   142,   143,   144,   145,     0,
+     146,   177,   178,   147,   148,   149,     0,     0,    70,     0,
+      26,     0,     0,     0,     0,     0,     0,     0,     0,   150,
+     151,   152,   153,   154,   155,   156,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   -64,     1,
+      41,    42,     0,     0,     0,     0,    43,     0,     0,    44,
+    -169,   122,     2,     0,     0,     3,     4,     0,     0,     5,
+     -64,     7,     8,     9,    69,    11,     0,    12,   -64,   -64,
+       0,    15,    16,     0,   -64,   -64,   -64,   -64,   -64,   -64,
+     -64,     0,     0,     0,     0,   -64,     0,     0,    70,   -64,
+      26,     0,     0,   -64,     0,     0,     0,     0,   -64,   -64,
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,    32,   -64,     0,
+       0,   -64,   -64,   -64,    33,    34,    35,    36,    37,     0,
+       0,   -64,   -64,     0,   -64,   -64,   -64,   -64,   -64,   -64,
+      41,    42,   -64,   -64,     0,   -64,    78,  -163,     1,    44,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       2,     0,     0,     3,     4,     0,     0,     5,   -60,     7,
-       8,     9,    69,    11,     0,    12,   -60,   -60,     0,    15,
-      16,     0,   -60,   -60,   -60,   -60,   -60,   -60,   -60,     0,
-       0,     0,     0,   -60,     0,     0,    70,   -60,    26,     0,
-       0,   -60,     0,     0,     0,     0,   -60,   -60,   -60,   -60,
-     -60,   -60,   -60,   -60,   -60,    32,   -60,     0,     0,   -60,
-     -60,   -60,    33,    34,    35,    36,    37,     0,     0,   -60,
-     -60,     0,   -60,   -60,   -60,   -60,   -60,   -60,    41,    42,
-     -60,   -60,     0,   -60,    78,  -159,     1,    44,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     2,
-       0,     0,     3,     4,     0,     0,     5,  -159,     7,     8,
-       9,    69,    11,     0,    12,  -159,  -159,     0,    15,    16,
-       0,  -159,  -159,  -159,  -159,  -159,  -159,  -159,     0,     0,
-       0,     0,  -159,     0,     0,    70,  -159,    26,     0,     0,
-    -159,     0,     0,     0,     0,  -159,  -159,  -159,     0,     0,
-       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,  -159,  -159,
-       0,  -159,  -159,  -159,  -159,     1,     0,    41,    42,     0,
-       0,     0,  -159,    71,     0,  -159,    44,     0,     2,     0,
-       0,     3,     4,     0,     0,     5,  -159,     7,     8,     9,
-      69,    11,     0,    12,  -159,  -159,     0,    15,    16,     0,
-    -159,  -159,  -159,  -159,  -159,  -159,  -159,     0,     0,     0,
-       0,  -159,     0,     0,    70,  -159,    26,     0,     0,  -159,
-       0,     0,     0,     0,  -159,  -159,  -159,     0,     0,     0,
-       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     0,     0,  -159,  -159,     0,
-    -159,  -159,  -159,    -4,     1,     0,    41,    42,     0,     0,
-       0,  -159,    43,     0,  -159,    44,     0,     2,     0,     0,
-       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,    14,    15,    16,     0,     0,
-       0,    17,    18,    19,    20,    21,     0,     0,    22,     0,
-      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
-       0,     0,    28,    29,    30,    31,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,    38,    39,    40,  -148,
-       1,     0,     0,     0,     0,    41,    42,     0,     0,     0,
-      -4,    43,     0,     2,    44,     0,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,   340,
-      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
-      20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
-      25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
-      30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,  -146,     1,     0,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,   304,    43,     2,     0,
-      44,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,     0,    13,     0,    15,    16,     0,
-       0,     0,    17,    18,    19,    20,    21,     0,     0,     0,
-       0,    23,     0,     0,    24,    25,    26,     0,     0,    27,
-       0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
-       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     0,     0,    38,    39,  -143,
-       1,     0,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,   304,    43,     2,     0,    44,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
-      20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
-      25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
-      30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,     0,     1,     0,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,   304,    43,     2,     0,
-      44,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,     0,    13,     0,    15,    16,   302,
-     -48,   -48,    17,    18,    19,    20,    21,     0,     0,     0,
-     309,    23,     0,     0,    24,    25,    26,     0,     0,    27,
-       0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
-       0,     0,   324,    32,     0,     0,   329,     0,   330,     0,
-      33,    34,    35,    36,    37,     0,     0,    38,    39,     0,
-     -48,     1,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,   304,    43,     0,     2,    44,   354,     3,     4,     0,
-     356,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-     362,    13,   364,    15,    16,     0,     0,     0,    17,    18,
-      19,    20,    21,     0,     0,     0,   375,    23,     0,     0,
-      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
-      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,    38,    39,     0,     1,   -48,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,   304,    43,     2,
-       0,    44,     3,     4,     0,     0,     5,     6,     7,     8,
-       9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
+       0,     2,     0,     0,     3,     4,     0,     0,     5,  -163,
+       7,     8,     9,    69,    11,     0,    12,  -163,  -163,     0,
+      15,    16,     0,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
+       0,     0,     0,     0,  -163,     0,     0,    70,  -163,    26,
+       0,     0,  -163,     0,     0,     0,     0,  -163,  -163,  -163,
+       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
+    -163,  -163,     0,  -163,  -163,  -163,  -163,     1,     0,    41,
+      42,     0,     0,     0,  -163,    71,     0,  -163,    44,     0,
+       2,     0,     0,     3,     4,     0,     0,     5,  -163,     7,
+       8,     9,    69,    11,     0,    12,  -163,  -163,     0,    15,
+      16,     0,  -163,  -163,  -163,  -163,  -163,  -163,  -163,     0,
+       0,     0,     0,  -163,     0,     0,    70,  -163,    26,     0,
+       0,  -163,     0,     0,     0,     0,  -163,  -163,  -163,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,  -163,
+    -163,     0,  -163,  -163,  -163,    -4,     1,     0,    41,    42,
+       0,     0,     0,  -163,    43,     0,  -163,    44,     0,     2,
+       0,     0,     3,     4,     0,     0,     5,     6,     7,     8,
+       9,    10,    11,     0,    12,     0,    13,    14,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
-       0,     0,    23,     0,     0,    24,    25,    26,     0,     0,
-      27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
+      22,     0,    23,     0,     0,    24,    25,    26,     0,     0,
+      27,     0,     0,     0,    28,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
        0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-       0,     1,     0,   -51,     0,     0,     0,    41,    42,     0,
-       0,     0,   304,    43,     2,     0,    44,     3,     4,     0,
-       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-       0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
-      19,    20,    21,     0,     0,     0,     0,    23,     0,     0,
-      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
-      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,    38,    39,     0,     1,   -51,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,   304,    43,     2,
-       0,    44,     3,     4,     0,     0,     5,     6,     7,     8,
-       9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
-       0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
-       0,     0,    23,     0,     0,    24,    25,    26,     0,     0,
-      27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
-       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-       0,   -50,     1,     0,     0,     0,     0,    41,    42,     0,
-       0,     0,   304,    43,     0,     2,    44,     0,     3,     4,
+      40,  -152,     1,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,    -4,    43,     0,     2,    44,     0,     3,     4,
+       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,   342,    13,     0,    15,    16,     0,     0,     0,    17,
+      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
+       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
+       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,     0,     0,    38,    39,  -150,     1,     0,     0,
+       0,     0,     0,    41,    42,     0,     0,     0,   306,    43,
+       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
+       0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
+       0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
+      39,  -147,     1,     0,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,   306,    43,     2,     0,    44,     3,     4,
        0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
       12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
-      18,    19,    20,    21,     0,     0,     0,     0,     0,     0,
-       0,    24,     0,    26,     0,     0,     0,     0,     0,     0,
+      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
+       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
        0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
       32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,     1,    39,     0,     0,     0,     0,
-       0,     0,     0,    41,    42,     0,     0,     2,     0,    43,
-       3,     4,    44,     0,     5,     6,     7,     8,     9,    10,
+      36,    37,     0,     0,    38,    39,     0,     1,     0,     0,
+       0,     0,     0,    41,    42,     0,     0,     0,   306,    43,
+       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+      16,     0,   -51,   -51,    17,    18,    19,    20,    21,     0,
+       0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
+       0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
+      39,     0,   -51,     1,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,   306,    43,     0,     2,    44,     0,     3,
+       4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
+       0,    12,     0,    13,     0,    15,    16,     0,     0,     0,
+      17,    18,    19,    20,    21,     0,     0,     0,     0,    23,
+       0,     0,    24,    25,    26,     0,     0,    27,     0,     0,
+       0,     0,    29,    30,    31,     0,     0,     0,     0,     0,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,    38,    39,     0,     1,   -51,
+       0,     0,     0,     0,    41,    42,     0,     0,     0,   306,
+      43,     2,     0,    44,     3,     4,     0,     0,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
+      15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
+       0,     0,     0,     0,    23,     0,     0,    24,    25,    26,
+       0,     0,    27,     0,     0,     0,     0,    29,    30,    31,
+       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
+      38,    39,     0,     1,     0,   -55,     0,     0,     0,    41,
+      42,     0,     0,     0,   306,    43,     2,     0,    44,     3,
+       4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
+       0,    12,     0,    13,     0,    15,    16,     0,     0,     0,
+      17,    18,    19,    20,    21,     0,     0,     0,     0,    23,
+       0,     0,    24,    25,    26,     0,     0,    27,     0,     0,
+       0,     0,    29,    30,    31,     0,     0,     0,     0,     0,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,    38,    39,     0,     1,   -55,
+       0,     0,     0,     0,    41,    42,     0,     0,     0,   306,
+      43,     2,     0,    44,     3,     4,     0,     0,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
+      15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
+       0,     0,     0,     0,    23,     0,     0,    24,    25,    26,
+       0,     0,    27,     0,     0,     0,     0,    29,    30,    31,
+       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
+      38,    39,     0,   -54,     1,     0,     0,     0,     0,    41,
+      42,     0,     0,     0,   306,    43,     0,     2,    44,     0,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
       11,     0,    12,     0,    13,     0,    15,    16,     0,     0,
-       0,    17,    18,    19,    20,     0,     0,     0,     0,     0,
-       0,     0,     0,    24,     0,    26,     0,     0,     0,     0,
+       0,    17,    18,    19,    20,    21,     0,     0,     0,     0,
+      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
        0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
        0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,     1,    39,     0,     0,
-       0,     0,     0,     0,     0,    41,    42,     0,     0,     2,
-       0,    43,     3,     4,    44,     0,     5,     0,     7,     8,
-       9,    69,    11,     0,    12,     0,     0,     0,    15,    16,
-       0,     0,     0,     1,     0,     0,     0,     0,     0,     0,
-       0,    85,    86,    87,    88,    70,     2,    26,     0,     3,
-       4,     0,     0,     5,     0,     7,     8,     9,    69,    11,
-       0,    12,     0,     0,    32,    15,    16,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,    85,     0,
-      87,     0,    70,     0,    26,     0,     0,    41,    42,     0,
-       0,     0,     0,    43,     0,     0,    44,     0,     0,     0,
-       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,     1,     0,     0,     0,     0,
-       0,     0,     0,     0,    41,    42,     0,     0,     2,     0,
-      43,     3,     4,    44,     0,     5,     0,     7,     8,     9,
-      69,    11,     0,    12,     0,     0,     0,    15,    16,     0,
+      34,    35,    36,    37,     0,     0,    38,    39,     0,     1,
+     382,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+     306,    43,     2,     0,    44,     3,     4,     0,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
+       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
+      21,     0,     0,     0,     0,     0,     0,     0,    24,     0,
+      26,     0,     0,     0,     0,     0,     0,     0,    29,    30,
+      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,     1,    39,     0,     0,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     2,     0,    43,     3,     4,    44,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
+      19,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+      24,     0,    26,     0,     0,     0,     0,     0,     0,     0,
+      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,     1,    39,     0,     0,     0,     0,     0,
+       0,     0,    41,    42,     0,     0,     2,     0,    43,     3,
+       4,    44,     0,     5,     0,     7,     8,     9,    69,    11,
+       0,    12,     0,     0,     0,    15,    16,     0,     0,     0,
+       1,     0,     0,     0,     0,     0,     0,     0,    85,    86,
+      87,    88,    70,     2,    26,     0,     3,     4,     0,     0,
+       5,     0,     7,     8,     9,    69,    11,     0,    12,     0,
+       0,    32,    15,    16,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,    85,     0,    87,     0,    70,
+       0,    26,     0,     0,    41,    42,     0,     0,     0,     0,
+      43,     0,     0,    44,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
        0,     0,     1,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    70,     2,    26,     0,     3,     4,
-       0,    93,     5,     0,     7,     8,     9,    69,    11,     0,
-      12,     0,     0,    32,    15,    16,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     0,     0,     0,     0,     0,
-       0,    70,     0,    26,     0,     0,    41,    42,     0,     0,
-       0,     0,    43,  -159,  -159,    44,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,     1,     0,     0,     0,     0,     0,
-       0,     0,     0,    41,    42,     0,     0,     2,     0,    43,
-       3,     4,    44,     0,     5,     0,     7,     8,     9,    69,
-      11,     0,    12,     0,     0,     0,    15,    16,     0,   176,
+       0,    41,    42,     0,     0,     2,     0,    43,     3,     4,
+      44,     0,     5,     0,     7,     8,     9,    69,    11,     0,
+      12,     0,     0,     0,    15,    16,     0,     0,     0,     1,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    70,     0,    26,     0,     0,   140,   141,
-     142,   143,   144,   145,     0,   146,   177,   178,   147,   148,
-     149,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,   150,   151,   152,   153,   154,   155,
-     156,    85,     0,    87,     0,    41,    42,     0,     0,     0,
-       0,    43,     0,     0,    44,     0,     0,     0,   140,   141,
-     142,   143,   144,   145,     0,   146,     0,     0,   147,   148,
-     149,     0,     0,     0,     0,     0,   192,     0,     0,     0,
-       0,     0,   193,     0,   150,   151,   152,   153,   154,   155,
-     156,   140,   141,   142,   143,   144,   145,     0,   146,     0,
-       0,   147,   148,   149,     0,     0,     0,     0,     0,   194,
-       0,     0,     0,     0,     0,   195,     0,   150,   151,   152,
-     153,   154,   155,   156,   140,   141,   142,   143,   144,   145,
-       0,   146,     0,     0,   147,   148,   149,     0,     0,     0,
-       0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
-     150,   151,   152,   153,   154,   155,   156,   140,   141,   142,
-     143,   144,   145,     0,   146,     0,     0,   147,   148,   149,
-       0,     0,     0,     0,     0,   198,     0,     0,     0,     0,
-       0,   199,     0,   150,   151,   152,   153,   154,   155,   156,
-     140,   141,   142,   143,   144,   145,     0,   146,     0,     0,
-     147,   148,   149,     0,     0,     0,     0,     0,   297,     0,
-       0,     0,     0,     0,     0,     0,   150,   151,   152,   153,
-     154,   155,   156,   140,   141,   142,   143,   144,   145,     0,
+       0,    70,     2,    26,     0,     3,     4,     0,    93,     5,
+       0,     7,     8,     9,    69,    11,     0,    12,     0,     0,
+      32,    15,    16,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,     0,     0,     0,     0,     0,     0,    70,     0,
+      26,     0,     0,    41,    42,     0,     0,     0,     0,    43,
+    -163,  -163,    44,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,     1,     0,     0,     0,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     2,     0,    43,     3,     4,    44,
+       0,     5,     0,     7,     8,     9,    69,    11,     0,    12,
+       0,     0,     0,    15,    16,     0,     0,     0,    85,     0,
+      87,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      70,     0,    26,     0,     0,   140,   141,   142,   143,   144,
+     145,     0,   146,     0,     0,   147,   148,   149,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,   150,   151,   152,   153,   154,   155,   156,   192,     0,
+       0,     0,    41,    42,   193,     0,     0,     0,    43,     0,
+       0,    44,     0,   140,   141,   142,   143,   144,   145,     0,
      146,     0,     0,   147,   148,   149,     0,     0,     0,     0,
-       0,   298,     0,     0,     0,     0,     0,     0,     0,   150,
+       0,   194,     0,     0,     0,     0,     0,   195,     0,   150,
      151,   152,   153,   154,   155,   156,   140,   141,   142,   143,
      144,   145,     0,   146,     0,     0,   147,   148,   149,     0,
-       0,     0,     0,     0,   299,     0,     0,     0,     0,     0,
-       0,     0,   150,   151,   152,   153,   154,   155,   156,   140,
+       0,     0,     0,     0,   196,     0,     0,     0,     0,     0,
+     197,     0,   150,   151,   152,   153,   154,   155,   156,   140,
      141,   142,   143,   144,   145,     0,   146,     0,     0,   147,
-     148,   149,     0,     0,     0,     0,     0,   300,     0,     0,
-       0,     0,     0,     0,     0,   150,   151,   152,   153,   154,
+     148,   149,     0,     0,     0,     0,     0,   198,     0,     0,
+       0,     0,     0,   199,     0,   150,   151,   152,   153,   154,
      155,   156,   140,   141,   142,   143,   144,   145,     0,   146,
        0,     0,   147,   148,   149,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   202,     0,   150,   151,
+     299,     0,     0,     0,     0,     0,     0,     0,   150,   151,
      152,   153,   154,   155,   156,   140,   141,   142,   143,   144,
-     145,   188,   146,     0,     0,   147,   148,   149,   140,   141,
+     145,     0,   146,     0,     0,   147,   148,   149,     0,     0,
+       0,     0,     0,   300,     0,     0,     0,     0,     0,     0,
+       0,   150,   151,   152,   153,   154,   155,   156,   140,   141,
      142,   143,   144,   145,     0,   146,     0,     0,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,     0,   203,
+     149,     0,     0,     0,     0,     0,   301,     0,     0,     0,
        0,     0,     0,     0,   150,   151,   152,   153,   154,   155,
      156,   140,   141,   142,   143,   144,   145,     0,   146,     0,
-       0,   147,   148,   149,     0,     0,     0,     0,     0,     0,
+       0,   147,   148,   149,     0,     0,     0,     0,     0,   302,
        0,     0,     0,     0,     0,     0,     0,   150,   151,   152,
-     153,   154,   155,   156,     0,     0,     0,   207,   140,   141,
-     142,   143,   144,   145,     0,   146,     0,     0,   147,   148,
-     149,     0,     0,     0,     0,     0,   200,   201,     0,     0,
-       0,     0,     0,     0,   150,   151,   152,   153,   154,   155,
-     156,   140,   141,   142,   143,   144,   145,     0,   146,     0,
-       0,   147,   148,   149,   140,   141,   142,   143,     0,     0,
-       0,   146,     0,     0,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,     0,     0,     0,     0,     0,     0,
-     150,   151,   152,   153,   154,   155,   156
+     153,   154,   155,   156,   140,   141,   142,   143,   144,   145,
+     188,   146,     0,     0,   147,   148,   149,   140,   141,   142,
+     143,   144,   145,     0,   146,     0,     0,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,     0,     0,     0,
+       0,     0,     0,   150,   151,   152,   153,   154,   155,   156,
+     140,   141,   142,   143,   144,   145,     0,   146,     0,     0,
+     147,   148,   149,     0,     0,     0,     0,     0,   200,   201,
+       0,     0,     0,     0,     0,     0,   150,   151,   152,   153,
+     154,   155,   156,   140,   141,   142,   143,   144,   145,     0,
+     146,     0,     0,   147,   148,   149,   140,   141,   142,   143,
+       0,     0,     0,   146,     0,     0,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,     0,     0,     0,     0,
+       0,     0,   150,   151,   152,   153,   154,   155,   156
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,   133,     0,    10,    82,   168,   273,    54,   289,
-       4,    54,    97,    19,     8,   100,    56,    57,    24,    65,
-      43,    97,    65,    29,    30,    51,    32,    33,    34,    35,
-      36,    37,    38,     6,     7,    41,    42,    43,    44,   283,
-     284,   309,    65,    35,   310,    51,    70,    53,    54,    48,
-      30,   331,    54,    97,   131,   132,   100,   301,   302,    26,
-     328,     1,    54,    65,    70,    71,    51,    24,    74,    26,
-      94,    95,    78,    26,    14,    81,    27,    17,    29,    85,
-     324,    21,    97,    77,     0,   100,    26,    27,   219,    29,
-      97,    70,   336,    98,   360,    99,   100,   100,    71,   100,
-     344,    74,    36,    37,    98,    99,    26,   375,    81,    89,
-      99,   100,   356,    92,    93,    94,    95,    46,   362,    76,
-      77,    78,    79,    99,   100,   105,    26,    26,    26,   291,
-     136,    54,   129,    26,   140,   141,   142,   143,   144,   145,
+       6,     7,   133,     0,    10,    82,   274,   168,   290,    54,
+       4,    54,    97,    19,     8,   100,    97,    30,    24,    43,
+      65,    48,    65,    29,    30,    51,    32,    33,    34,    35,
+      36,    37,    38,     6,     7,    41,    42,    43,    44,   284,
+     285,    65,    70,    26,   312,    51,    54,    53,    54,    97,
+     311,   333,   100,    97,   131,   132,   100,    65,   303,   304,
+      24,     1,    26,    51,    70,    71,    94,    95,    74,   330,
+       0,    27,    78,    29,    14,    81,    89,    17,    26,    85,
+      97,    21,   327,    77,    98,   275,    26,    27,   219,    29,
+      56,    57,   105,   100,   362,   100,   286,    26,    71,    99,
+     100,    74,   347,    46,    98,    99,    99,   100,    81,    99,
+     100,    53,    76,    77,    78,    79,    26,   378,    26,   309,
+     365,    36,    37,   313,    26,   315,    54,    26,    26,    26,
+     136,   292,   129,   103,   140,   141,   142,   143,   144,   145,
      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,    53,   158,    17,    18,    19,   162,    26,    98,    26,
-     166,   101,    26,   100,   103,   103,   172,   102,   100,    33,
-     247,   177,   178,    26,   180,   181,   100,    48,   184,   185,
-     186,   175,   188,   100,    26,   100,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,    53,    44,    26,    26,
-      26,    53,    26,    87,    54,   211,     1,    88,    54,   215,
-     216,    86,    26,    87,   208,   209,    36,   100,    86,    14,
-      86,    70,    17,    18,    73,    26,    21,   358,    23,    24,
-      25,    26,    27,    87,    29,    53,    87,   129,    33,    34,
-     203,    86,    91,    92,    93,    94,    95,    86,    54,   255,
-     256,   328,    54,   212,   176,    50,    54,    52,    -1,    -1,
-     337,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   346,
-      -1,    -1,    -1,   350,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,   292,   364,    -1,   366,
-      -1,   297,   298,   299,   300,    -1,    -1,    92,    93,    -1,
-      -1,   295,    -1,    98,    -1,    -1,   101,   102,   103,    -1,
-      -1,    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,
-     326,    -1,    -1,    -1,    -1,    -1,   332,    14,    -1,   335,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,   347,    29,    30,    31,    -1,    33,    34,    35,    36,
+     156,   103,   158,   343,   100,   102,   162,    26,    98,   100,
+     166,   101,   100,    48,    65,   100,   172,   100,   358,   359,
+     247,   177,   178,    53,   180,   181,    26,    26,   184,   185,
+     186,   175,   188,   373,    44,   375,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,    63,    64,    65,    66,
+      67,    68,    26,    70,    26,   211,    73,    74,    75,   215,
+     216,    53,    26,    70,   208,   209,    73,    87,    70,    35,
+      54,    54,    89,    90,    91,    92,    93,    94,    95,   360,
+      88,    86,    99,    87,    91,    92,    93,    94,    95,   370,
+      92,    93,    94,    95,    36,    54,    86,   253,    26,    54,
+     256,   257,   100,   330,    63,    64,    65,    66,    67,    68,
+      86,    70,   339,    26,    73,    74,    75,    53,    87,    86,
+     129,   348,   203,    86,    54,   352,   176,    54,    54,    -1,
+      89,    90,    91,    92,    93,    94,    95,   293,    97,   366,
+     212,   368,    -1,   299,   300,   301,   302,    17,    18,    19,
+      -1,    -1,    -1,   297,    -1,    -1,    26,    -1,    -1,    -1,
+      -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,   335,
+      -1,    -1,   338,    -1,    -1,    -1,    -1,    14,    -1,    -1,
+      17,    18,    -1,   349,    21,    22,    23,    24,    25,    26,
+      27,   357,    29,    30,    31,    -1,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    -1,    44,    -1,    46,
       47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
       -1,    -1,    -1,    60,    61,    62,    63,    64,    65,    66,
       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
       77,    78,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    -1,
-      97,    98,    99,   100,   101,   102,     0,     1,    -1,    -1,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,     1,
+      97,    98,    99,   100,   101,   102,    -1,    -1,    -1,    -1,
+      -1,    -1,    14,    -1,    44,    17,    18,    -1,    -1,    21,
+      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
+      -1,    33,    34,    63,    64,    65,    66,    67,    68,    -1,
+      70,    71,    72,    73,    74,    75,    -1,    -1,    50,    -1,
+      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,
+      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
+     102,   103,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
+      -1,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      -1,    73,    74,    75,    76,    77,    78,    79,    80,    -1,
+      -1,    83,    84,    -1,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    -1,    97,    98,     0,     1,   101,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
+      33,    34,    -1,    36,    37,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
+      -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
+      83,    84,    -1,    86,    87,    88,     0,     1,    -1,    92,
+      93,    -1,    -1,    -1,    97,    98,    -1,   100,   101,    -1,
       14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
       24,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
       34,    -1,    36,    37,    38,    39,    40,    41,    42,    -1,
       -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    -1,    -1,    73,
-      74,    75,    76,    77,    78,    79,    80,    -1,    -1,    83,
-      84,    -1,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    -1,    97,    98,     0,     1,   101,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,
+      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
+      84,    -1,    86,    87,    88,     0,     1,    -1,    92,    93,
+      -1,    -1,    -1,    97,    98,    -1,   100,   101,    -1,    14,
       -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    34,
-      -1,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
-      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      -1,    86,    87,    88,     0,     1,    -1,    92,    93,    -1,
-      -1,    -1,    97,    98,    -1,   100,   101,    -1,    14,    -1,
-      -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    30,    31,    -1,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    42,    -1,    -1,    -1,
-      -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
-      -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
-      86,    87,    88,     0,     1,    -1,    92,    93,    -1,    -1,
-      -1,    97,    98,    -1,   100,   101,    -1,    14,    -1,    -1,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    32,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    42,    -1,    -1,    45,    -1,
-      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    -1,    59,    60,    61,    62,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      77,    78,    79,    80,    -1,    -1,    83,    84,    85,     0,
-       1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
-      97,    98,    -1,    14,   101,    -1,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
-      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
-      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,     0,     1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,
-     101,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
-      -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,
-      -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
-      -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    83,    84,     0,
-       1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    97,    98,    14,    -1,   101,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
-      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,    -1,     1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,
-     101,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    31,    -1,    33,    34,   274,
-      36,    37,    38,    39,    40,    41,    42,    -1,    -1,    -1,
-     285,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
-      -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
-      -1,    -1,   307,    69,    -1,    -1,   311,    -1,   313,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
-      86,     1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    97,    98,    -1,    14,   101,   341,    17,    18,    -1,
-     345,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-     355,    31,   357,    33,    34,    -1,    -1,    -1,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,   371,    47,    -1,    -1,
-      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    83,    84,    -1,     1,    87,    -1,    -1,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,
-      -1,   101,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
+      25,    26,    27,    -1,    29,    -1,    31,    32,    33,    34,
       -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
+      45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
       -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      -1,     1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,
-      -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
-      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    83,    84,    -1,     1,    87,    -1,    -1,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,
-      -1,   101,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
-      -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
-      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      -1,    86,     1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      85,     0,     1,    -1,    -1,    -1,    -1,    92,    93,    -1,
       -1,    -1,    97,    98,    -1,    14,   101,    -1,    17,    18,
       -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    83,    84,     0,     1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
+      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
+      84,     0,     1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
       29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    50,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
       -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,     1,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    14,    -1,    98,
-      17,    18,   101,    -1,    21,    22,    23,    24,    25,    26,
+      79,    80,    -1,    -1,    83,    84,    -1,     1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      34,    -1,    36,    37,    38,    39,    40,    41,    42,    -1,
+      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
+      84,    -1,    86,     1,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    -1,    97,    98,    -1,    14,   101,    -1,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
+      -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,
+      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      78,    79,    80,    -1,    -1,    83,    84,    -1,     1,    87,
+      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,
+      98,    14,    -1,   101,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
+      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
+      -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
+      83,    84,    -1,     1,    -1,    88,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
+      -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,
+      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      78,    79,    80,    -1,    -1,    83,    84,    -1,     1,    87,
+      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,
+      98,    14,    -1,   101,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
+      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
+      -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
+      83,    84,    -1,    86,     1,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    97,    98,    -1,    14,   101,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
       27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    50,    -1,    52,    -1,    -1,    -1,    -1,
+      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
       -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
       -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      77,    78,    79,    80,    -1,    -1,     1,    84,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    14,
-      -1,    98,    17,    18,   101,    -1,    21,    -1,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
-      -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    46,    47,    48,    49,    50,    14,    52,    -1,    17,
-      18,    -1,    -1,    21,    -1,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    -1,    69,    33,    34,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,    46,    -1,
-      48,    -1,    50,    -1,    52,    -1,    -1,    92,    93,    -1,
-      -1,    -1,    -1,    98,    -1,    -1,   101,    -1,    -1,    -1,
-      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
-      78,    79,    80,    -1,    -1,     1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    14,    -1,
-      98,    17,    18,   101,    -1,    21,    -1,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    -1,    -1,    33,    34,    -1,
+      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,     1,
+      87,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      97,    98,    14,    -1,   101,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
+      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,     1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,     1,    84,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,
+      18,   101,    -1,    21,    -1,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,
+       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    14,    52,    -1,    17,    18,    -1,    -1,
+      21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      -1,    69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,
+      78,    79,    80,    -1,    -1,    46,    -1,    48,    -1,    50,
+      -1,    52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
+      98,    -1,    -1,   101,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
       -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    50,    14,    52,    -1,    17,    18,
-      -1,    20,    21,    -1,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    -1,    69,    33,    34,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
-      -1,    50,    -1,    52,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    -1,    98,    99,   100,   101,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    14,    -1,    98,
-      17,    18,   101,    -1,    21,    -1,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    -1,    -1,    33,    34,    -1,    44,
+      -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,    18,
+     101,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,     1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    50,    -1,    52,    -1,    -1,    63,    64,
-      65,    66,    67,    68,    -1,    70,    71,    72,    73,    74,
-      75,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      77,    78,    79,    80,    89,    90,    91,    92,    93,    94,
-      95,    46,    -1,    48,    -1,    92,    93,    -1,    -1,    -1,
-      -1,    98,    -1,    -1,   101,    -1,    -1,    -1,    63,    64,
-      65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    54,    -1,    89,    90,    91,    92,    93,    94,
-      95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
-      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,    91,
-      92,    93,    94,    95,    63,    64,    65,    66,    67,    68,
-      -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,
-      89,    90,    91,    92,    93,    94,    95,    63,    64,    65,
-      66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
-      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    54,    -1,    89,    90,    91,    92,    93,    94,    95,
-      63,    64,    65,    66,    67,    68,    -1,    70,    -1,    -1,
-      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
-      93,    94,    95,    63,    64,    65,    66,    67,    68,    -1,
+      -1,    50,    14,    52,    -1,    17,    18,    -1,    20,    21,
+      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
+      69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      99,   100,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
+      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    -1,    -1,    33,    34,    -1,    -1,    -1,    46,    -1,
+      48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    52,    -1,    -1,    63,    64,    65,    66,    67,
+      68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    89,    90,    91,    92,    93,    94,    95,    48,    -1,
+      -1,    -1,    92,    93,    54,    -1,    -1,    -1,    98,    -1,
+      -1,   101,    -1,    63,    64,    65,    66,    67,    68,    -1,
       70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,
       90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
       67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    63,
+      54,    -1,    89,    90,    91,    92,    93,    94,    95,    63,
       64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
       74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    54,    -1,    89,    90,    91,    92,    93,
       94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
       -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
+      48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
       91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
-      68,    56,    70,    -1,    -1,    73,    74,    75,    63,    64,
+      68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95,    63,    64,
       65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
-      75,    89,    90,    91,    92,    93,    94,    95,    -1,    97,
+      75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
       95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
-      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
-      92,    93,    94,    95,    -1,    -1,    -1,    99,    63,    64,
-      65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,
-      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
-      95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
-      -1,    73,    74,    75,    63,    64,    65,    66,    -1,    -1,
-      -1,    70,    -1,    -1,    73,    74,    75,    89,    90,    91,
-      92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,
-      89,    90,    91,    92,    93,    94,    95
+      92,    93,    94,    95,    63,    64,    65,    66,    67,    68,
+      56,    70,    -1,    -1,    73,    74,    75,    63,    64,    65,
+      66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
+      89,    90,    91,    92,    93,    94,    95,    -1,    -1,    -1,
+      -1,    -1,    -1,    89,    90,    91,    92,    93,    94,    95,
+      63,    64,    65,    66,    67,    68,    -1,    70,    -1,    -1,
+      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
+      93,    94,    95,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    63,    64,    65,    66,
+      -1,    -1,    -1,    70,    -1,    -1,    73,    74,    75,    89,
+      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95
 };
 
   /* YYSTOSSTATE-NUM -- The (internal number of the) accessing
@@ -1540,39 +1561,40 @@ static const yytype_uint8 yystos[] =
       41,    42,    45,    47,    50,    51,    52,    55,    59,    60,
       61,    62,    69,    76,    77,    78,    79,    80,    83,    84,
       85,    92,    93,    98,   101,   105,   106,   107,   108,   110,
-     112,   116,   117,   120,   124,   125,   126,   127,   128,   129,
-     136,   138,   140,   144,   149,   152,    97,    26,   125,    26,
-      50,    98,   126,   150,    98,   150,   125,    48,    98,   126,
-     151,   139,   143,    51,   130,    46,    47,    48,    49,   126,
-     137,   141,    51,    20,   126,    56,    57,    17,    18,    19,
-      26,    33,    26,    26,   126,   126,   137,   132,   126,   126,
-     126,   126,   126,   126,   126,   131,   145,   126,   126,   126,
-      27,    29,   103,   126,   153,   154,   155,   156,     0,    97,
-     126,    43,    65,   126,   109,   115,   120,   126,   129,   149,
+     115,   119,   120,   124,   128,   129,   130,   131,   132,   133,
+     140,   142,   144,   148,   153,   156,    97,    26,   129,    26,
+      50,    98,   130,   154,    98,   154,   129,    48,    98,   130,
+     155,   143,   147,    51,   134,    46,    47,    48,    49,   130,
+     141,   145,    51,    20,   130,    56,    57,    17,    18,    19,
+      26,    33,    26,    26,   130,   130,   141,   136,   130,   130,
+     130,   130,   130,   130,   130,   135,   149,   130,   130,   130,
+      27,    29,   103,   130,   157,   158,   159,   160,     0,    97,
+     130,    43,    65,   130,   109,   118,   124,   130,   133,   153,
       63,    64,    65,    66,    67,    68,    70,    73,    74,    75,
-      89,    90,    91,    92,    93,    94,    95,   121,    98,   126,
-     126,   150,   100,   150,   125,   150,   100,   150,   121,    26,
-     133,   126,    46,   137,    26,    26,    44,    71,    72,    26,
-      54,    65,   125,   125,    54,    65,    54,    53,    56,   137,
-      26,   135,    48,    54,    48,    54,    48,    54,    48,    54,
-      81,    82,    54,    97,    26,   134,    26,    99,   103,   103,
-     102,   100,   100,   105,   118,   121,   121,   118,   122,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,    26,   146,    99,
-     126,    99,    99,   126,   146,   100,   126,   142,   125,    26,
-     128,   126,   126,   126,   126,    54,    65,    48,   126,   126,
-     126,   126,   100,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   111,   111,   100,   125,   125,   126,    27,
-      29,   156,   123,   126,   126,    53,   118,    97,   100,    97,
-      26,   121,    44,   126,   126,    26,    26,    48,    48,    48,
-      48,   108,   123,    26,    97,   110,   119,   122,   122,   123,
-      53,   148,    26,   148,   146,   126,   125,   126,   126,   126,
-     126,   122,   122,    87,   123,    35,    54,   119,   108,   123,
-     123,    97,    54,    88,   122,    54,   126,   113,   119,   121,
-      30,   148,   126,    87,   126,   122,    36,    37,   114,   121,
-      36,    86,    26,   147,   123,   122,   123,   121,   126,    86,
-     121,   100,   123,   122,   123,   118,   108,    26,   122,    87,
-     121,    53,   121,    87,    86,   123,    86,   119
+      89,    90,    91,    92,    93,    94,    95,   125,    98,   130,
+     130,   154,   100,   154,   129,   154,   100,   154,   125,    26,
+     137,   130,    46,   141,    26,    26,    44,    71,    72,    26,
+      54,    65,   129,   129,    54,    65,    54,    53,    56,   141,
+      26,   139,    48,    54,    48,    54,    48,    54,    48,    54,
+      81,    82,    54,    97,    26,   138,    26,    99,   103,   103,
+     102,   100,   100,   105,   121,   125,   125,   121,   126,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,    26,   150,    99,
+     130,    99,    99,   130,   150,   100,   130,   146,   129,    26,
+     132,   130,   130,    65,   130,   130,    54,    65,    48,   130,
+     130,   130,   130,   100,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   114,   114,   100,   129,   129,   130,
+      27,    29,   160,   127,   130,   130,    53,   121,    97,   100,
+      97,    26,   125,    44,   130,   130,   130,    26,    26,    48,
+      48,    48,    48,   108,   127,    26,    97,   110,   122,   126,
+     126,   127,    53,   152,    26,   152,   150,   130,   111,   129,
+     130,   130,   130,   130,   126,   126,    87,   127,    35,   122,
+     108,   127,   127,    97,   123,    54,    88,   126,    54,   116,
+     122,   125,    30,   152,   112,   130,    87,   130,    36,    37,
+     117,   125,    36,    86,    26,   151,   127,    54,   126,   125,
+     130,    86,   125,   100,   130,   127,   127,   121,   108,    26,
+     113,   126,   125,    53,   125,   121,    87,    86,   127,    86,
+     127,   122,    87
 };
 
   /* YYR1YYN -- Symbol number of symbol that rule YYN derives.  */
@@ -1581,21 +1603,21 @@ static const yytype_uint8 yyr1[] =
        0,   104,   105,   105,   106,   106,   106,   107,   107,   107,
      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
      108,   108,   108,   109,   109,   109,   109,   110,   110,   110,
-     110,   110,   110,   110,   110,   110,   110,   111,   112,   112,
-     113,   113,   114,   115,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   123,   123,   124,   125,   125,   125,   125,
-     125,   125,   125,   125,   125,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   127,   127,   127,
-     127,   127,   127,   127,   127,   128,   128,   129,   129,   129,
-     129,   129,   130,   129,   131,   129,   132,   129,   129,   129,
-     129,   129,   133,   133,   134,   134,   135,   135,   136,   136,
-     136,   136,   136,   136,   137,   137,   138,   138,   138,   139,
-     138,   141,   142,   140,   140,   143,   140,   140,   140,   145,
-     144,   146,   146,   146,   147,   147,   147,   148,   149,   150,
-     150,   150,   151,   151,   152,   153,   153,   153,   153,   154,
-     154,   155,   155,   156,   156
+     111,   112,   113,   110,   110,   110,   110,   110,   110,   110,
+     114,   115,   115,   116,   116,   117,   118,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   127,   127,   128,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   131,   131,   131,   131,   131,   131,   131,   131,   132,
+     132,   133,   133,   133,   133,   133,   134,   133,   135,   133,
+     136,   133,   133,   133,   133,   133,   137,   137,   138,   138,
+     139,   139,   140,   140,   140,   140,   140,   140,   141,   141,
+     142,   142,   142,   143,   142,   145,   146,   144,   144,   147,
+     144,   144,   144,   149,   148,   150,   150,   150,   151,   151,
+     151,   152,   153,   154,   154,   154,   155,   155,   156,   157,
+     157,   157,   157,   158,   158,   159,   159,   160,   160
 };
 
   /* YYR2YYN -- Number of symbols on the right hand side of rule YYN.  */
@@ -1604,21 +1626,21 @@ static const yytype_int8 yyr2[] =
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
        4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
-      11,    12,     8,     2,     3,     7,     6,     0,     9,    12,
-       0,     2,     6,    11,     7,     2,     3,     0,     0,     1,
-       0,     0,     0,     2,     2,     3,     1,     1,     1,     1,
-       1,     1,     3,     1,     2,     1,     1,     4,     2,     4,
-       3,     2,     1,     1,     1,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     2,     3,
-       3,     3,     3,     2,     2,     4,     4,     4,     6,     4,
-       6,     4,     6,     4,     6,     2,     1,     2,     1,     1,
-       2,     1,     0,     3,     0,     3,     0,     3,     4,     2,
-       4,     2,     1,     3,     1,     3,     1,     3,     1,     2,
-       2,     2,     3,     2,     3,     2,     2,     3,     2,     0,
-       3,     0,     0,     9,     2,     0,     7,     8,     6,     0,
-       3,     0,     1,     3,     0,     1,     3,     0,     2,     0,
-       1,     3,     1,     3,     3,     0,     1,     1,     1,     1,
-       3,     1,     3,     3,     3
+       0,     0,     0,    14,    12,     8,     2,     3,     7,     6,
+       0,     9,    12,     0,     2,     6,    11,     7,     2,     3,
+       0,     0,     0,     1,     0,     0,     0,     2,     2,     3,
+       1,     1,     1,     1,     1,     1,     3,     1,     2,     1,
+       1,     4,     2,     4,     3,     2,     1,     1,     1,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     2,     3,     3,     3,     3,     2,     2,     4,
+       4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
+       1,     2,     1,     1,     2,     1,     0,     3,     0,     3,
+       0,     3,     4,     2,     4,     2,     1,     3,     1,     3,
+       1,     3,     1,     2,     2,     2,     3,     2,     3,     2,
+       2,     3,     2,     0,     3,     0,     0,     9,     2,     0,
+       7,     8,     6,     0,     3,     0,     1,     3,     0,     1,
+       3,     0,     2,     0,     1,     3,     1,     3,     3,     0,
+       1,     1,     1,     1,     3,     1,     3,     3,     3
 };
 
 
@@ -1890,81 +1912,81 @@ yydestruct (const char *yymsg,
   switch (yykind)
     {
     case 22: /* BLTIN  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1896 "engines/director/lingo/lingo-gr.cpp"
+#line 1918 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1902 "engines/director/lingo/lingo-gr.cpp"
+#line 1924 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1908 "engines/director/lingo/lingo-gr.cpp"
+#line 1930 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1914 "engines/director/lingo/lingo-gr.cpp"
+#line 1936 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1920 "engines/director/lingo/lingo-gr.cpp"
+#line 1942 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1926 "engines/director/lingo/lingo-gr.cpp"
+#line 1948 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1932 "engines/director/lingo/lingo-gr.cpp"
+#line 1954 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1938 "engines/director/lingo/lingo-gr.cpp"
+#line 1960 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1944 "engines/director/lingo/lingo-gr.cpp"
+#line 1966 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1950 "engines/director/lingo/lingo-gr.cpp"
+#line 1972 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1956 "engines/director/lingo/lingo-gr.cpp"
+#line 1978 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 33: /* THEOBJECTFIELD  */
-#line 161 "engines/director/lingo/lingo-gr.y"
+#line 162 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1962 "engines/director/lingo/lingo-gr.cpp"
+#line 1984 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 144: /* on  */
-#line 160 "engines/director/lingo/lingo-gr.y"
+    case 148: /* on  */
+#line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1968 "engines/director/lingo/lingo-gr.cpp"
+#line 1990 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2243,26 +2265,26 @@ yyreduce:
   switch (yyn)
     {
   case 7:
-#line 172 "engines/director/lingo/lingo-gr.y"
+#line 173 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2254 "engines/director/lingo/lingo-gr.cpp"
+#line 2276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
-#line 178 "engines/director/lingo/lingo-gr.y"
+#line 179 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2262 "engines/director/lingo/lingo-gr.cpp"
+#line 2284 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
-#line 182 "engines/director/lingo/lingo-gr.y"
+#line 183 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2274,34 +2296,34 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2278 "engines/director/lingo/lingo-gr.cpp"
+#line 2300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
-#line 193 "engines/director/lingo/lingo-gr.y"
+#line 194 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2284 "engines/director/lingo/lingo-gr.cpp"
+#line 2306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
-#line 194 "engines/director/lingo/lingo-gr.y"
+#line 195 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2290 "engines/director/lingo/lingo-gr.cpp"
+#line 2312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
-#line 195 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2301 "engines/director/lingo/lingo-gr.cpp"
+#line 2323 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
-#line 201 "engines/director/lingo/lingo-gr.y"
+#line 202 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2309,22 +2331,22 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2313 "engines/director/lingo/lingo-gr.cpp"
+#line 2335 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
-#line 208 "engines/director/lingo/lingo-gr.y"
+#line 209 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2324 "engines/director/lingo/lingo-gr.cpp"
+#line 2346 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 215 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2332,33 +2354,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2336 "engines/director/lingo/lingo-gr.cpp"
+#line 2358 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
-#line 221 "engines/director/lingo/lingo-gr.y"
+#line 222 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2347 "engines/director/lingo/lingo-gr.cpp"
+#line 2369 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
-#line 227 "engines/director/lingo/lingo-gr.y"
+#line 228 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2358 "engines/director/lingo/lingo-gr.cpp"
+#line 2380 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
-#line 234 "engines/director/lingo/lingo-gr.y"
+#line 235 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2370,50 +2392,76 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2374 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
-#line 245 "engines/director/lingo/lingo-gr.y"
+#line 246 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectfieldassign);
 		g_lingo->codeString((yyvsp[-2].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2385 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
-#line 267 "engines/director/lingo/lingo-gr.y"
+#line 268 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		inst start = 0, end = 0;
-		WRITE_UINT32(&start, (yyvsp[-5].code) - (yyvsp[-1].narg) + 2);
-		WRITE_UINT32(&end, (yyvsp[-1].narg) - (yyvsp[-3].narg) + 2);
-		(*g_lingo->_currentScript)[(yyvsp[-3].narg)] = end;		/* end, if cond fails */
-		(*g_lingo->_currentScript)[(yyvsp[-1].narg)] = start; }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&start, (yyvsp[-5].code) - (yyvsp[-1].code) + 2);
+		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code) + 2);
+		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end;		/* end, if cond fails */
+		(*g_lingo->_currentScript)[(yyvsp[-1].code)] = start; }
+#line 2418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
-#line 278 "engines/director/lingo/lingo-gr.y"
-                                                                                                 {
-		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
-		WRITE_UINT32(&init, (yyvsp[-8].code) - (yyvsp[-10].code));
-		WRITE_UINT32(&finish, (yyvsp[-4].code) - (yyvsp[-10].code));
-		WRITE_UINT32(&body, (yyvsp[-2].code) - (yyvsp[-10].code));
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-10].code));
-		WRITE_UINT32(&inc, 1);
-		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 1] = init;		/* initial count value */
-		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 2] = finish;	/* final count value */
-		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
-		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
-		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2413 "engines/director/lingo/lingo-gr.cpp"
+#line 280 "engines/director/lingo/lingo-gr.y"
+                        { g_lingo->code1(LC::c_varpush);
+			  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
+#line 2425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
-#line 295 "engines/director/lingo/lingo-gr.y"
+#line 283 "engines/director/lingo/lingo-gr.y"
+                        { g_lingo->code1(LC::c_eval);
+			  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
+#line 2432 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 32:
+#line 286 "engines/director/lingo/lingo-gr.y"
+                        { g_lingo->code1(LC::c_le); }
+#line 2438 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 33:
+#line 286 "engines/director/lingo/lingo-gr.y"
+                                                                                  {
+
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
+		g_lingo->code1(LC::c_eval);
+		g_lingo->codeString((yyvsp[-11].s)->c_str());
+		g_lingo->code1(LC::c_add);
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString((yyvsp[-11].s)->c_str());
+		g_lingo->code1(LC::c_assign);
+		g_lingo->code2(LC::c_jump, STOP);
+		int pos = g_lingo->_currentScript->size() - 1;
+
+		inst loop = 0, end = 0;
+		WRITE_UINT32(&loop, (yyvsp[-7].code) - pos + 2);
+		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
+		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
+		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
+#line 2461 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 34:
+#line 309 "engines/director/lingo/lingo-gr.y"
                                                                                                        {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2426,11 +2474,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 5] = end; }
-#line 2430 "engines/director/lingo/lingo-gr.cpp"
+#line 2478 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 32:
-#line 307 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 326 "engines/director/lingo/lingo-gr.y"
                                                                             {
 		inst list = 0, body = 0, end = 0;
 		WRITE_UINT32(&list, (yyvsp[-5].code) - (yyvsp[-7].code));
@@ -2441,219 +2489,227 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2445 "engines/director/lingo/lingo-gr.cpp"
+#line 2493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
-#line 318 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 337 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2452 "engines/director/lingo/lingo-gr.cpp"
+#line 2500 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
-#line 320 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 339 "engines/director/lingo/lingo-gr.y"
                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2462 "engines/director/lingo/lingo-gr.cpp"
+#line 2510 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
-#line 325 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 344 "engines/director/lingo/lingo-gr.y"
                                                           {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2471 "engines/director/lingo/lingo-gr.cpp"
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 329 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 348 "engines/director/lingo/lingo-gr.y"
                                                     {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2480 "engines/director/lingo/lingo-gr.cpp"
+#line 2528 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
-#line 334 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 353 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2488 "engines/director/lingo/lingo-gr.cpp"
+#line 2536 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
-#line 338 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 357 "engines/director/lingo/lingo-gr.y"
                                                                                            {
 		inst else1 = 0, end3 = 0;
-		WRITE_UINT32(&else1, (yyvsp[-3].narg) + 1 - (yyvsp[-6].narg) + 1);
-		WRITE_UINT32(&end3, (yyvsp[-1].code) - (yyvsp[-3].narg) + 1);
-		(*g_lingo->_currentScript)[(yyvsp[-6].narg)] = else1;		/* elsepart */
-		(*g_lingo->_currentScript)[(yyvsp[-3].narg)] = end3;		/* end, if cond fails */
-		g_lingo->processIf((yyvsp[-3].narg), (yyvsp[-1].code)); }
-#line 2500 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
+		WRITE_UINT32(&end3, (yyvsp[-1].code) - (yyvsp[-3].code) + 1);
+		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = else1;		/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
+		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
+#line 2548 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
-#line 345 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 364 "engines/director/lingo/lingo-gr.y"
                                                                                                                   {
 		inst else1 = 0, end = 0;
-		WRITE_UINT32(&else1, (yyvsp[-6].narg) + 1 - (yyvsp[-9].narg) + 1);
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-6].narg) + 1);
-		(*g_lingo->_currentScript)[(yyvsp[-9].narg)] = else1;		/* elsepart */
-		(*g_lingo->_currentScript)[(yyvsp[-6].narg)] = end;		/* end, if cond fails */
-		g_lingo->processIf((yyvsp[-6].narg), (yyvsp[-1].code)); }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&else1, (yyvsp[-6].code) + 1 - (yyvsp[-9].code) + 1);
+		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-6].code) + 1);
+		(*g_lingo->_currentScript)[(yyvsp[-9].code)] = else1;		/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = end;		/* end, if cond fails */
+		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code)); }
+#line 2560 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 356 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 375 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
-		WRITE_UINT32(&else1, (yyvsp[0].narg) + 1 - (yyvsp[-3].narg) + 1);
-		(*g_lingo->_currentScript)[(yyvsp[-3].narg)] = else1;	/* end, if cond fails */
-		g_lingo->codeLabel((yyvsp[0].narg)); }
-#line 2522 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
+		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
+		g_lingo->codeLabel((yyvsp[0].code)); }
+#line 2570 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 362 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 381 "engines/director/lingo/lingo-gr.y"
                                                                                                              {
 		inst else1 = 0, end = 0;
-		WRITE_UINT32(&else1, (yyvsp[-5].narg) + 1 - (yyvsp[-8].narg) + 1);
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].narg) + 1);
-		(*g_lingo->_currentScript)[(yyvsp[-8].narg)] = else1;		/* elsepart */
-		(*g_lingo->_currentScript)[(yyvsp[-5].narg)] = end;	}
-#line 2533 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
+		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code) + 1);
+		(*g_lingo->_currentScript)[(yyvsp[-8].code)] = else1;		/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[-5].code)] = end;	}
+#line 2581 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 368 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 387 "engines/director/lingo/lingo-gr.y"
                                                                       {
 		inst end = 0;
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-4].narg) + 1);
+		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-4].code) + 1);
 
-		(*g_lingo->_currentScript)[(yyvsp[-4].narg)] = end; }
-#line 2543 "engines/director/lingo/lingo-gr.cpp"
+		(*g_lingo->_currentScript)[(yyvsp[-4].code)] = end; }
+#line 2591 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 374 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 393 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2549 "engines/director/lingo/lingo-gr.cpp"
+#line 2597 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 376 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 395 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2559 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 382 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 401 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, STOP);
-		(yyval.narg) = g_lingo->_currentScript->size() - 1; }
-#line 2567 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->_currentScript->size() - 1; }
+#line 2615 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 386 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 405 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, STOP);
-		(yyval.narg) = g_lingo->_currentScript->size() - 1; }
-#line 2575 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->_currentScript->size() - 1; }
+#line 2623 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 49:
-#line 390 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 409 "engines/director/lingo/lingo-gr.y"
+                                        {
+		g_lingo->code1(LC::c_assign);
+		(yyval.code) = g_lingo->_currentScript->size() - 1; }
+#line 2631 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 53:
+#line 413 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2582 "engines/director/lingo/lingo-gr.cpp"
+#line 2638 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 50:
-#line 393 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 416 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2588 "engines/director/lingo/lingo-gr.cpp"
+#line 2644 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 51:
-#line 395 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 418 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2594 "engines/director/lingo/lingo-gr.cpp"
+#line 2650 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 52:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 420 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2600 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 401 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 424 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2610 "engines/director/lingo/lingo-gr.cpp"
+#line 2666 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 407 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 430 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2618 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 410 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 433 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2626 "engines/director/lingo/lingo-gr.cpp"
+#line 2682 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 413 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 436 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2635 "engines/director/lingo/lingo-gr.cpp"
+#line 2691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 59:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 440 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
+#line 2700 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 421 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 444 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2653 "engines/director/lingo/lingo-gr.cpp"
+#line 2709 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 425 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 448 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2662,17 +2718,17 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2666 "engines/director/lingo/lingo-gr.cpp"
+#line 2722 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 456 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2672 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 458 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2683,542 +2739,542 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
+#line 2743 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 469 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2693 "engines/director/lingo/lingo-gr.cpp"
+#line 2749 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 471 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2757 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 474 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2709 "engines/director/lingo/lingo-gr.cpp"
+#line 2765 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 477 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2717 "engines/director/lingo/lingo-gr.cpp"
+#line 2773 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 480 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2725 "engines/director/lingo/lingo-gr.cpp"
+#line 2781 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 460 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 483 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2792 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 489 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2746 "engines/director/lingo/lingo-gr.cpp"
+#line 2802 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 494 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2757 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 501 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2763 "engines/director/lingo/lingo-gr.cpp"
+#line 2819 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 479 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 502 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2769 "engines/director/lingo/lingo-gr.cpp"
+#line 2825 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 480 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 503 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2775 "engines/director/lingo/lingo-gr.cpp"
+#line 2831 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 504 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2781 "engines/director/lingo/lingo-gr.cpp"
+#line 2837 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 482 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 505 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2787 "engines/director/lingo/lingo-gr.cpp"
+#line 2843 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 506 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2793 "engines/director/lingo/lingo-gr.cpp"
+#line 2849 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 507 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2799 "engines/director/lingo/lingo-gr.cpp"
+#line 2855 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 508 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2805 "engines/director/lingo/lingo-gr.cpp"
+#line 2861 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 509 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2811 "engines/director/lingo/lingo-gr.cpp"
+#line 2867 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 510 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2817 "engines/director/lingo/lingo-gr.cpp"
+#line 2873 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 511 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2823 "engines/director/lingo/lingo-gr.cpp"
+#line 2879 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 512 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2829 "engines/director/lingo/lingo-gr.cpp"
+#line 2885 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 513 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2835 "engines/director/lingo/lingo-gr.cpp"
+#line 2891 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 514 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2841 "engines/director/lingo/lingo-gr.cpp"
+#line 2897 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 515 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2847 "engines/director/lingo/lingo-gr.cpp"
+#line 2903 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 516 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2853 "engines/director/lingo/lingo-gr.cpp"
+#line 2909 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 517 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2859 "engines/director/lingo/lingo-gr.cpp"
+#line 2915 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 518 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2865 "engines/director/lingo/lingo-gr.cpp"
+#line 2921 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 519 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 2871 "engines/director/lingo/lingo-gr.cpp"
+#line 2927 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 520 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2877 "engines/director/lingo/lingo-gr.cpp"
+#line 2933 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 521 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 2883 "engines/director/lingo/lingo-gr.cpp"
+#line 2939 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 522 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2889 "engines/director/lingo/lingo-gr.cpp"
+#line 2945 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 524 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 2895 "engines/director/lingo/lingo-gr.cpp"
+#line 2951 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 525 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 2901 "engines/director/lingo/lingo-gr.cpp"
+#line 2957 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 526 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 2907 "engines/director/lingo/lingo-gr.cpp"
+#line 2963 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 527 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 2913 "engines/director/lingo/lingo-gr.cpp"
+#line 2969 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 528 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 2919 "engines/director/lingo/lingo-gr.cpp"
+#line 2975 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 2925 "engines/director/lingo/lingo-gr.cpp"
+#line 2981 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 530 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 2931 "engines/director/lingo/lingo-gr.cpp"
+#line 2987 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 531 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 2937 "engines/director/lingo/lingo-gr.cpp"
+#line 2993 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 533 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2945 "engines/director/lingo/lingo-gr.cpp"
+#line 3001 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 2951 "engines/director/lingo/lingo-gr.cpp"
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 518 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 541 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_exitRepeat); }
-#line 2957 "engines/director/lingo/lingo-gr.cpp"
+#line 3013 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 2963 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 543 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2969 "engines/director/lingo/lingo-gr.cpp"
+#line 3025 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 543 "engines/director/lingo/lingo-gr.y"
                                                                                  { inNone(); }
-#line 2975 "engines/director/lingo/lingo-gr.cpp"
+#line 3031 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2981 "engines/director/lingo/lingo-gr.cpp"
+#line 3037 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 2987 "engines/director/lingo/lingo-gr.cpp"
+#line 3043 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 545 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2993 "engines/director/lingo/lingo-gr.cpp"
+#line 3049 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 545 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 2999 "engines/director/lingo/lingo-gr.cpp"
+#line 3055 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 546 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3063 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 549 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3015 "engines/director/lingo/lingo-gr.cpp"
+#line 3071 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 552 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3021 "engines/director/lingo/lingo-gr.cpp"
+#line 3077 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 553 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3027 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3093 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 560 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3047 "engines/director/lingo/lingo-gr.cpp"
+#line 3103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 566 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3057 "engines/director/lingo/lingo-gr.cpp"
+#line 3113 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 548 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 571 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 3123 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 577 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3077 "engines/director/lingo/lingo-gr.cpp"
+#line 3133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 582 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3087 "engines/director/lingo/lingo-gr.cpp"
+#line 3143 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 572 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 595 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3093 "engines/director/lingo/lingo-gr.cpp"
+#line 3149 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 573 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 596 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3099 "engines/director/lingo/lingo-gr.cpp"
+#line 3155 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 597 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3105 "engines/director/lingo/lingo-gr.cpp"
+#line 3161 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 575 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 598 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3114 "engines/director/lingo/lingo-gr.cpp"
+#line 3170 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 579 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 602 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3123 "engines/director/lingo/lingo-gr.cpp"
+#line 3179 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 606 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3132 "engines/director/lingo/lingo-gr.cpp"
+#line 3188 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 614 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3141 "engines/director/lingo/lingo-gr.cpp"
+#line 3197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3150 "engines/director/lingo/lingo-gr.cpp"
+#line 3206 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 599 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 622 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3159 "engines/director/lingo/lingo-gr.cpp"
+#line 3215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 626 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3165 "engines/director/lingo/lingo-gr.cpp"
+#line 3221 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3174 "engines/director/lingo/lingo-gr.cpp"
+#line 3230 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 633 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 656 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3180 "engines/director/lingo/lingo-gr.cpp"
+#line 3236 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 633 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 656 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory.clear(); }
-#line 3186 "engines/director/lingo/lingo-gr.cpp"
+#line 3242 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 634 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 657 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3196 "engines/director/lingo/lingo-gr.cpp"
+#line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 662 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3202 "engines/director/lingo/lingo-gr.cpp"
+#line 3258 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 663 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3208 "engines/director/lingo/lingo-gr.cpp"
+#line 3264 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 641 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 664 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3218 "engines/director/lingo/lingo-gr.cpp"
+#line 3274 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 669 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3227,70 +3283,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3231 "engines/director/lingo/lingo-gr.cpp"
+#line 3287 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 654 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 677 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3241 "engines/director/lingo/lingo-gr.cpp"
+#line 3297 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 660 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 683 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3247 "engines/director/lingo/lingo-gr.cpp"
+#line 3303 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 660 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 683 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3254 "engines/director/lingo/lingo-gr.cpp"
+#line 3310 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 686 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3260 "engines/director/lingo/lingo-gr.cpp"
+#line 3316 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 687 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3266 "engines/director/lingo/lingo-gr.cpp"
+#line 3322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 665 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 688 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3272 "engines/director/lingo/lingo-gr.cpp"
+#line 3328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 668 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 691 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3278 "engines/director/lingo/lingo-gr.cpp"
+#line 3334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 669 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 692 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3284 "engines/director/lingo/lingo-gr.cpp"
+#line 3340 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 694 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); inDef(); }
-#line 3290 "engines/director/lingo/lingo-gr.cpp"
+#line 3346 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 673 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 696 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3298,113 +3354,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3302 "engines/director/lingo/lingo-gr.cpp"
+#line 3358 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 681 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 704 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3308 "engines/director/lingo/lingo-gr.cpp"
+#line 3364 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 682 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 705 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3314 "engines/director/lingo/lingo-gr.cpp"
+#line 3370 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 683 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 706 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3320 "engines/director/lingo/lingo-gr.cpp"
+#line 3376 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 685 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 708 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3326 "engines/director/lingo/lingo-gr.cpp"
+#line 3382 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 686 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 709 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3332 "engines/director/lingo/lingo-gr.cpp"
+#line 3388 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 688 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 711 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3338 "engines/director/lingo/lingo-gr.cpp"
+#line 3394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 690 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 713 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3344 "engines/director/lingo/lingo-gr.cpp"
+#line 3400 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 691 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 714 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3350 "engines/director/lingo/lingo-gr.cpp"
+#line 3406 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 692 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 715 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3356 "engines/director/lingo/lingo-gr.cpp"
+#line 3412 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 693 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 716 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3362 "engines/director/lingo/lingo-gr.cpp"
+#line 3418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 695 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 718 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3368 "engines/director/lingo/lingo-gr.cpp"
+#line 3424 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 696 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 719 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3374 "engines/director/lingo/lingo-gr.cpp"
+#line 3430 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 698 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 721 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3380 "engines/director/lingo/lingo-gr.cpp"
+#line 3436 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 699 "engines/director/lingo/lingo-gr.y"
+  case 176:
+#line 722 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3386 "engines/director/lingo/lingo-gr.cpp"
+#line 3442 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 701 "engines/director/lingo/lingo-gr.y"
+  case 177:
+#line 724 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3395 "engines/director/lingo/lingo-gr.cpp"
+#line 3451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 705 "engines/director/lingo/lingo-gr.y"
+  case 178:
+#line 728 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3404 "engines/director/lingo/lingo-gr.cpp"
+#line 3460 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3408 "engines/director/lingo/lingo-gr.cpp"
+#line 3464 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3603,7 +3659,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 711 "engines/director/lingo/lingo-gr.y"
+#line 734 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 44c7da3981..ed5ed59e2e 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -147,7 +147,8 @@ static void mArg(Common::String *s) {
 
 %type<code> asgn begin end expr if when repeatwhile chunkexpr
 %type<code> repeatwith stmtlist tellstart reference simpleexpr list valuelist
-%type<narg> argdef arglist nonemptyarglist linearlist proplist jump jumpifz
+%type<code> jump jumpifz varassign
+%type<narg> argdef arglist nonemptyarglist linearlist proplist
 %type<s> on
 
 %left tAND tOR
@@ -275,18 +276,31 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwith tEQ begin[init] expr end tTO expr[finish] end stmtlist end[end3] tENDREPEAT {
-		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
-		WRITE_UINT32(&init, $init - $repeatwith);
-		WRITE_UINT32(&finish, $finish - $repeatwith);
-		WRITE_UINT32(&body, $stmtlist - $repeatwith);
-		WRITE_UINT32(&end, $end3 - $repeatwith);
-		WRITE_UINT32(&inc, 1);
-		(*g_lingo->_currentScript)[$repeatwith + 1] = init;		/* initial count value */
-		(*g_lingo->_currentScript)[$repeatwith + 2] = finish;	/* final count value */
-		(*g_lingo->_currentScript)[$repeatwith + 3] = body;		/* body of loop */
-		(*g_lingo->_currentScript)[$repeatwith + 4] = inc;		/* increment */
-		(*g_lingo->_currentScript)[$repeatwith + 5] = end; }	/* end, if cond fails */
+	| tREPEAT tWITH ID tEQ expr[init]
+			{ g_lingo->code1(LC::c_varpush);
+			  g_lingo->codeString($ID->c_str()); }
+		varassign
+			{ g_lingo->code1(LC::c_eval);
+			  g_lingo->codeString($ID->c_str()); }
+			tTO expr[finish]
+			{ g_lingo->code1(LC::c_le); } jumpifz stmtlist tENDREPEAT {
+
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
+		g_lingo->code1(LC::c_eval);
+		g_lingo->codeString($ID->c_str());
+		g_lingo->code1(LC::c_add);
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString($ID->c_str());
+		g_lingo->code1(LC::c_assign);
+		g_lingo->code2(LC::c_jump, STOP);
+		int pos = g_lingo->_currentScript->size() - 1;
+
+		inst loop = 0, end = 0;
+		WRITE_UINT32(&loop, $varassign - pos + 2);
+		WRITE_UINT32(&end, pos - $jumpifz + 2);
+		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
+		(*g_lingo->_currentScript)[$jumpifz] = end;	}	/* end, if cond fails */
 
 	// repeat with index = high down to low
 	//   statements
@@ -304,6 +318,11 @@ stmt: stmtoneliner
 		(*g_lingo->_currentScript)[$repeatwith + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[$repeatwith + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[$repeatwith + 5] = end; }	/* end, if cond fails */
+
+	// repeat with index in list
+	//   statements
+	// end repeat
+	//
 	| repeatwith tIN begin[list] expr end stmtlist end[end3] tENDREPEAT {
 		inst list = 0, body = 0, end = 0;
 		WRITE_UINT32(&list, $list - $repeatwith);
@@ -387,6 +406,10 @@ jump:		/* nothing */	{
 		g_lingo->code2(LC::c_jump, STOP);
 		$$ = g_lingo->_currentScript->size() - 1; }
 
+varassign:		/* nothing */	{
+		g_lingo->code1(LC::c_assign);
+		$$ = g_lingo->_currentScript->size() - 1; }
+
 if:	  tIF					{
 		g_lingo->codeLabel(0); } // Mark beginning of the if() statement
 


Commit: bc3a642cb70b78b38d3f2ca769fa0a4edcad1be0
    https://github.com/scummvm/scummvm/commit/bc3a642cb70b78b38d3f2ca769fa0a4edcad1be0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-30T16:11:21+02:00

Commit Message:
DIRECTOR: LINGO: Made 'repeat with...down to' non-recursive

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 234d5f1b0c..10182206a5 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -413,53 +413,56 @@ enum yysymbol_kind_t
   YYSYMBOL_111_1 = 111,                    /* $@1  */
   YYSYMBOL_112_2 = 112,                    /* $@2  */
   YYSYMBOL_113_3 = 113,                    /* $@3  */
-  YYSYMBOL_tellstart = 114,                /* tellstart  */
-  YYSYMBOL_ifstmt = 115,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 116,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 117,               /* elseifstmt  */
-  YYSYMBOL_ifoneliner = 118,               /* ifoneliner  */
-  YYSYMBOL_repeatwhile = 119,              /* repeatwhile  */
-  YYSYMBOL_repeatwith = 120,               /* repeatwith  */
-  YYSYMBOL_jumpifz = 121,                  /* jumpifz  */
-  YYSYMBOL_jump = 122,                     /* jump  */
-  YYSYMBOL_varassign = 123,                /* varassign  */
-  YYSYMBOL_if = 124,                       /* if  */
-  YYSYMBOL_begin = 125,                    /* begin  */
-  YYSYMBOL_end = 126,                      /* end  */
-  YYSYMBOL_stmtlist = 127,                 /* stmtlist  */
-  YYSYMBOL_when = 128,                     /* when  */
-  YYSYMBOL_simpleexpr = 129,               /* simpleexpr  */
-  YYSYMBOL_expr = 130,                     /* expr  */
-  YYSYMBOL_chunkexpr = 131,                /* chunkexpr  */
-  YYSYMBOL_reference = 132,                /* reference  */
-  YYSYMBOL_proc = 133,                     /* proc  */
-  YYSYMBOL_134_4 = 134,                    /* $@4  */
-  YYSYMBOL_135_5 = 135,                    /* $@5  */
-  YYSYMBOL_136_6 = 136,                    /* $@6  */
-  YYSYMBOL_globallist = 137,               /* globallist  */
-  YYSYMBOL_propertylist = 138,             /* propertylist  */
-  YYSYMBOL_instancelist = 139,             /* instancelist  */
-  YYSYMBOL_gotofunc = 140,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 141,                /* gotomovie  */
-  YYSYMBOL_playfunc = 142,                 /* playfunc  */
-  YYSYMBOL_143_7 = 143,                    /* $@7  */
-  YYSYMBOL_defn = 144,                     /* defn  */
-  YYSYMBOL_145_8 = 145,                    /* $@8  */
-  YYSYMBOL_146_9 = 146,                    /* $@9  */
-  YYSYMBOL_147_10 = 147,                   /* $@10  */
-  YYSYMBOL_on = 148,                       /* on  */
-  YYSYMBOL_149_11 = 149,                   /* $@11  */
-  YYSYMBOL_argdef = 150,                   /* argdef  */
-  YYSYMBOL_endargdef = 151,                /* endargdef  */
-  YYSYMBOL_argstore = 152,                 /* argstore  */
-  YYSYMBOL_macro = 153,                    /* macro  */
-  YYSYMBOL_arglist = 154,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 155,          /* nonemptyarglist  */
-  YYSYMBOL_list = 156,                     /* list  */
-  YYSYMBOL_valuelist = 157,                /* valuelist  */
-  YYSYMBOL_linearlist = 158,               /* linearlist  */
-  YYSYMBOL_proplist = 159,                 /* proplist  */
-  YYSYMBOL_proppair = 160                  /* proppair  */
+  YYSYMBOL_114_4 = 114,                    /* $@4  */
+  YYSYMBOL_115_5 = 115,                    /* $@5  */
+  YYSYMBOL_116_6 = 116,                    /* $@6  */
+  YYSYMBOL_tellstart = 117,                /* tellstart  */
+  YYSYMBOL_ifstmt = 118,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 119,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 120,               /* elseifstmt  */
+  YYSYMBOL_ifoneliner = 121,               /* ifoneliner  */
+  YYSYMBOL_repeatwhile = 122,              /* repeatwhile  */
+  YYSYMBOL_repeatwith = 123,               /* repeatwith  */
+  YYSYMBOL_jumpifz = 124,                  /* jumpifz  */
+  YYSYMBOL_jump = 125,                     /* jump  */
+  YYSYMBOL_varassign = 126,                /* varassign  */
+  YYSYMBOL_if = 127,                       /* if  */
+  YYSYMBOL_begin = 128,                    /* begin  */
+  YYSYMBOL_end = 129,                      /* end  */
+  YYSYMBOL_stmtlist = 130,                 /* stmtlist  */
+  YYSYMBOL_when = 131,                     /* when  */
+  YYSYMBOL_simpleexpr = 132,               /* simpleexpr  */
+  YYSYMBOL_expr = 133,                     /* expr  */
+  YYSYMBOL_chunkexpr = 134,                /* chunkexpr  */
+  YYSYMBOL_reference = 135,                /* reference  */
+  YYSYMBOL_proc = 136,                     /* proc  */
+  YYSYMBOL_137_7 = 137,                    /* $@7  */
+  YYSYMBOL_138_8 = 138,                    /* $@8  */
+  YYSYMBOL_139_9 = 139,                    /* $@9  */
+  YYSYMBOL_globallist = 140,               /* globallist  */
+  YYSYMBOL_propertylist = 141,             /* propertylist  */
+  YYSYMBOL_instancelist = 142,             /* instancelist  */
+  YYSYMBOL_gotofunc = 143,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 144,                /* gotomovie  */
+  YYSYMBOL_playfunc = 145,                 /* playfunc  */
+  YYSYMBOL_146_10 = 146,                   /* $@10  */
+  YYSYMBOL_defn = 147,                     /* defn  */
+  YYSYMBOL_148_11 = 148,                   /* $@11  */
+  YYSYMBOL_149_12 = 149,                   /* $@12  */
+  YYSYMBOL_150_13 = 150,                   /* $@13  */
+  YYSYMBOL_on = 151,                       /* on  */
+  YYSYMBOL_152_14 = 152,                   /* $@14  */
+  YYSYMBOL_argdef = 153,                   /* argdef  */
+  YYSYMBOL_endargdef = 154,                /* endargdef  */
+  YYSYMBOL_argstore = 155,                 /* argstore  */
+  YYSYMBOL_macro = 156,                    /* macro  */
+  YYSYMBOL_arglist = 157,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 158,          /* nonemptyarglist  */
+  YYSYMBOL_list = 159,                     /* list  */
+  YYSYMBOL_valuelist = 160,                /* valuelist  */
+  YYSYMBOL_linearlist = 161,               /* linearlist  */
+  YYSYMBOL_proplist = 162,                 /* proplist  */
+  YYSYMBOL_proppair = 163                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -769,16 +772,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  128
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2498
+#define YYLAST   2657
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  57
+#define YYNNTS  60
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  178
+#define YYNRULES  181
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  383
+#define YYNSTATES  382
 
 #define YYMAXUTOK   343
 
@@ -838,21 +841,22 @@ static const yytype_int16 yyrline[] =
        0,   166,   166,   167,   169,   170,   171,   173,   179,   183,
      194,   195,   196,   202,   209,   215,   222,   228,   235,   246,
      253,   254,   255,   257,   258,   259,   260,   262,   263,   268,
-     280,   283,   286,   279,   309,   326,   337,   339,   344,   348,
-     353,   357,   364,   372,   373,   375,   381,   387,   393,   395,
-     401,   405,   409,   413,   416,   418,   420,   421,   422,   424,
-     430,   433,   436,   440,   444,   448,   456,   457,   458,   469,
-     470,   471,   474,   477,   480,   483,   489,   494,   500,   501,
-     502,   503,   504,   505,   506,   507,   508,   509,   510,   511,
-     512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
-     522,   524,   525,   526,   527,   528,   529,   530,   531,   533,
-     536,   538,   539,   540,   541,   542,   543,   543,   544,   544,
-     545,   545,   546,   549,   552,   553,   555,   560,   566,   571,
-     577,   582,   595,   596,   597,   598,   602,   606,   611,   612,
-     614,   618,   622,   626,   626,   656,   656,   656,   662,   663,
-     663,   669,   677,   683,   683,   686,   687,   688,   690,   691,
-     692,   694,   696,   704,   705,   706,   708,   709,   711,   713,
-     714,   715,   716,   718,   719,   721,   722,   724,   728
+     280,   283,   286,   279,   310,   313,   316,   309,   340,   351,
+     353,   358,   362,   367,   371,   378,   386,   387,   389,   395,
+     401,   407,   409,   415,   419,   423,   427,   430,   432,   434,
+     435,   436,   438,   444,   447,   450,   454,   458,   462,   470,
+     471,   472,   483,   484,   485,   488,   491,   494,   497,   503,
+     508,   514,   515,   516,   517,   518,   519,   520,   521,   522,
+     523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
+     533,   534,   535,   536,   538,   539,   540,   541,   542,   543,
+     544,   545,   547,   550,   552,   553,   554,   555,   556,   557,
+     557,   558,   558,   559,   559,   560,   563,   566,   567,   569,
+     574,   580,   585,   591,   596,   609,   610,   611,   612,   616,
+     620,   625,   626,   628,   632,   636,   640,   640,   670,   670,
+     670,   676,   677,   677,   683,   691,   697,   697,   700,   701,
+     702,   704,   705,   706,   708,   710,   718,   719,   720,   722,
+     723,   725,   727,   728,   729,   730,   732,   733,   735,   736,
+     738,   742
 };
 #endif
 
@@ -885,13 +889,13 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
   "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
   "$accept", "program", "programline", "asgn", "stmtoneliner",
-  "stmtonelinerwithif", "stmt", "$@1", "$@2", "$@3", "tellstart", "ifstmt",
-  "elseifstmtlist", "elseifstmt", "ifoneliner", "repeatwhile",
-  "repeatwith", "jumpifz", "jump", "varassign", "if", "begin", "end",
-  "stmtlist", "when", "simpleexpr", "expr", "chunkexpr", "reference",
-  "proc", "$@4", "$@5", "$@6", "globallist", "propertylist",
-  "instancelist", "gotofunc", "gotomovie", "playfunc", "$@7", "defn",
-  "$@8", "$@9", "$@10", "on", "$@11", "argdef", "endargdef", "argstore",
+  "stmtonelinerwithif", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6",
+  "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt", "ifoneliner",
+  "repeatwhile", "repeatwith", "jumpifz", "jump", "varassign", "if",
+  "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
+  "reference", "proc", "$@7", "$@8", "$@9", "globallist", "propertylist",
+  "instancelist", "gotofunc", "gotomovie", "playfunc", "$@10", "defn",
+  "$@11", "$@12", "$@13", "on", "$@14", "argdef", "endargdef", "argstore",
   "macro", "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
   "proplist", "proppair", YY_NULLPTR
   };
@@ -918,12 +922,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-283)
+#define YYPACT_NINF (-286)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-170)
+#define YYTABLE_NINF (-173)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -932,45 +936,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     785,   -81,  -283,  -283,    60,  -283,   607,   323,    60,   -27,
-     508,  -283,  -283,  -283,  -283,  -283,  -283,   -26,  -283,  1802,
-    -283,  -283,  -283,    12,  1958,    34,   280,    17,    52,  2040,
-    1839,  -283,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  -283,
-    -283,  2040,  2040,  2040,   418,    70,   -17,  -283,  -283,  -283,
-    -283,  2040,   -24,  2040,  1638,  -283,  2390,  -283,  -283,  -283,
-    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,   -14,
-    1958,  1921,  2390,    -7,  1921,    -7,  -283,    60,  1921,  2390,
-      -5,   696,  -283,  -283,    71,  2040,  -283,    57,  -283,  2032,
-    -283,    90,  -283,    92,   390,    98,  -283,   -45,    60,    60,
-     -43,    72,    58,  -283,  2324,  2032,  -283,   101,  -283,  2080,
-    2113,  2146,  2179,  2357,   191,   102,   103,  -283,  -283,   133,
-      30,    48,  -283,  2390,    53,    54,    59,  -283,  -283,   785,
-    2390,  -283,  -283,  2390,  -283,  -283,  2040,  2390,  -283,  -283,
-    2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,
-    2040,  2040,  2040,  2040,  2040,  2040,  2040,   131,  1921,   390,
-     133,     0,  2040,     7,  -283,    10,  2040,    -7,   131,  -283,
-      62,  2390,  2040,  -283,  -283,    60,    36,  2040,  2040,    99,
-    2040,  2040,    -8,   115,  2040,  2040,  2040,  -283,  2040,  -283,
-    -283,    65,  2040,  2040,  2040,  2040,  2040,  2040,  2040,  2040,
-    2040,  2040,  -283,  -283,  -283,    67,  -283,  -283,    60,    60,
-    -283,  2040,    44,  -283,  -283,  2040,  2040,   120,  -283,  2390,
-     143,   143,   143,   143,  2403,  2403,  -283,   148,   143,   143,
-     143,   143,   148,   -28,   -28,  -283,  -283,  -283,   -85,  -283,
-    2390,  -283,  -283,  2390,   -48,   150,  2390,  -283,   140,  -283,
-    -283,  2390,  2390,  2040,  2390,   143,  2040,  2040,   151,  2390,
-     143,  2390,  2390,   176,  2390,  2212,  2390,  2245,  2390,  2278,
-    2390,  2311,  2390,  2390,  1720,  -283,   178,  -283,  -283,  2390,
-      30,    48,  -283,  1212,  2390,  2390,  -283,   158,  -283,   186,
-    -283,  -283,   131,  2040,  2390,  2390,   143,    60,  -283,  2040,
-    2040,  2040,  2040,  -283,  1297,  -283,  -283,  -283,   130,  -283,
-     184,  1126,  1720,  -283,  -283,  -283,   -44,  2390,  -283,   166,
-    2390,  2390,  2390,  2390,  -283,   142,  -283,  1382,   167,  -283,
-     145,   871,   956,  -283,  -283,  2040,  -283,   146,  2040,    85,
-     208,   160,   222,  -283,   195,  2390,  -283,  2390,  -283,  2040,
-    -283,   174,  -283,  -283,  -283,   152,  1041,  2040,  -283,  -283,
-    2390,  -283,  1720,   237,  2390,  1382,  1467,   214,  -283,  -283,
-    -283,   181,   183,  -283,   187,  -283,  -283,  -283,  1126,  -283,
-    1553,  -283,  -283
+     789,   -78,  -286,  -286,    59,  -286,   611,   327,    59,    -9,
+     512,  -286,  -286,  -286,  -286,  -286,  -286,    -8,  -286,  1891,
+    -286,  -286,  -286,    -2,  2047,    38,    37,    -1,    35,  2129,
+    1928,  -286,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  -286,
+    -286,  2129,  2129,  2129,   422,    67,    -7,  -286,  -286,  -286,
+    -286,  2129,    64,  2129,  1727,  -286,  2549,  -286,  -286,  -286,
+    -286,  -286,  -286,  -286,  -286,  -286,  -286,  -286,  -286,    22,
+    2047,  2010,  2549,    19,  2010,    19,  -286,    59,  2010,  2549,
+      26,   700,  -286,  -286,   102,  2129,  -286,    84,  -286,  2121,
+    -286,   105,  -286,   106,   394,   126,  -286,   -45,    59,    59,
+     -14,    99,   101,  -286,  2446,  2121,  -286,   130,  -286,  2169,
+    2202,  2235,  2268,  2516,  2433,   132,   135,  -286,  -286,  2479,
+      60,    61,  -286,  2549,    65,    68,    69,  -286,  -286,   789,
+    2549,  -286,  2549,  -286,  -286,  2129,  2549,  -286,  -286,  2129,
+    2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,
+    2129,  2129,  2129,  2129,  2129,  2129,   149,  2010,   394,  2479,
+     -88,  2129,     2,  -286,    12,  2129,    19,   149,  -286,    76,
+    2549,  2129,  -286,  -286,    59,    20,  2129,  2129,   117,  2129,
+    2129,     4,   136,  2129,  2129,  2129,  -286,  2129,  -286,  -286,
+      83,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,
+    2129,  -286,  -286,  -286,    96,  -286,  -286,    59,    59,  -286,
+    2129,    81,  -286,  -286,  2129,   144,  -286,  2549,    30,    30,
+      30,    30,  2562,  2562,  -286,    23,    30,    30,    30,    30,
+      23,   -17,   -17,  -286,  -286,  -286,   -38,  -286,  2549,  -286,
+    -286,  2549,   -26,   173,  2549,  -286,   157,  -286,  -286,  2549,
+    2549,  2129,  2549,    30,  2129,  2129,   176,  2549,    30,  2549,
+    2549,   177,  2549,  2301,  2549,  2334,  2549,  2367,  2549,  2400,
+    2549,  2549,  1809,  -286,   179,  -286,  -286,  2549,    60,    61,
+    -286,  1216,  2549,  -286,   153,  -286,   181,  -286,  -286,   149,
+    2129,   240,  2549,    30,    59,  -286,  2129,  2129,  2129,  2129,
+    -286,  1301,  -286,  -286,  -286,   122,  -286,  1130,  1809,  -286,
+    -286,  -286,     9,  2549,  -286,  -286,   156,  2549,  2549,  2549,
+    2549,  -286,   123,  -286,  1386,  -286,   129,   875,   960,  -286,
+    -286,  -286,  2129,  -286,   125,    77,   180,   131,   192,  -286,
+     165,   185,  2549,  -286,  -286,  2129,  -286,   137,  -286,  -286,
+    -286,   121,  1045,  2129,   168,  -286,  2549,  -286,  1809,   198,
+    2549,  2129,  1471,   172,  -286,  -286,  -286,  2549,   141,  -286,
+     143,  -286,  -286,  -286,  1130,  -286,  1557,  -286,  -286,  -286,
+    1642,  -286
 };
 
   /* YYDEFACTSTATE-NUM -- Default reduction number in state STATE-NUM.
@@ -978,67 +982,67 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    60,    65,     0,    61,     0,     0,     0,     0,
-       0,    63,    62,   143,   149,    76,    77,   115,   116,     0,
-     132,    53,   145,     0,     0,     0,     0,     0,     0,     0,
-       0,   120,     0,     0,     0,     0,     0,     0,     0,   118,
-     153,     0,     0,     0,     0,     0,     2,    78,    27,     6,
-      28,     0,     0,     0,     0,    69,    21,   110,    70,    22,
-     112,   113,     5,    54,    20,    67,    68,    64,    75,    64,
-       0,     0,   164,   123,     0,    72,   109,     0,     0,   166,
-     162,     0,    54,   114,     0,     0,   133,     0,   134,   135,
-     137,     0,    36,     0,   111,     0,    48,     0,     0,     0,
-       0,     0,     0,   148,   125,   140,   142,     0,    92,     0,
-       0,     0,     0,     0,     0,     0,     0,    97,    98,     0,
-      63,    62,   170,   173,     0,   171,   172,   175,     1,     0,
-      50,    54,    54,    50,    55,    26,     0,    24,    25,    23,
+       0,     0,    63,    68,     0,    64,     0,     0,     0,     0,
+       0,    66,    65,   146,   152,    79,    80,   118,   119,     0,
+     135,    56,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,   123,     0,     0,     0,     0,     0,     0,     0,   121,
+     156,     0,     0,     0,     0,     0,     2,    81,    27,     6,
+      28,     0,     0,     0,     0,    72,    21,   113,    73,    22,
+     115,   116,     5,    57,    20,    70,    71,    67,    78,    67,
+       0,     0,   167,   126,     0,    75,   112,     0,     0,   169,
+     165,     0,    57,   117,     0,     0,   136,     0,   137,   138,
+     140,     0,    39,     0,   114,     0,    51,     0,     0,     0,
+       0,     0,     0,   151,   128,   143,   145,     0,    95,     0,
+       0,     0,     0,     0,     0,     0,     0,   100,   101,     0,
+      66,    65,   173,   176,     0,   174,   175,   178,     1,     0,
+      53,    57,    53,    58,    26,     0,    24,    25,    23,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   155,     0,     0,
-     164,     0,     0,     0,    74,     0,     0,   144,   155,   126,
-     117,   139,     0,   136,   146,     0,     0,     0,     0,    49,
-       0,     0,     0,     0,     0,     0,     0,    59,     0,   141,
-     130,   121,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    40,    40,   128,   119,   154,    66,     0,     0,
-     168,     0,     0,     3,    56,     0,     0,     0,    37,    50,
-      88,    89,    86,    87,    90,    91,    83,    94,    95,    96,
-      85,    84,    93,    79,    80,    81,    82,   156,     0,   122,
-     165,    71,    73,   167,     0,     0,   138,    54,     0,     7,
-       8,    10,    11,     0,    15,    13,     0,     0,     0,    14,
-      12,    19,   124,     0,   101,     0,   103,     0,   105,     0,
-     107,     0,    99,   100,     0,    56,     0,   178,   177,   174,
-       0,     0,   176,     0,    55,    55,    56,     0,   161,     0,
-     161,   127,   155,     0,    30,    16,    17,     0,   131,     0,
-       0,     0,     0,    55,     0,   129,    57,    58,     0,    56,
-       0,     0,     0,    56,   157,    56,     0,     9,    52,     0,
-     102,   104,   106,   108,    39,     0,    29,     0,     0,    43,
-      51,     0,     0,   161,    31,     0,    38,     0,     0,    54,
-       0,     0,   158,    56,     0,    18,    35,    55,    54,     0,
-      44,     0,    54,    47,   159,   151,     0,     0,    56,    56,
-      50,    41,     0,     0,    32,     0,     0,     0,    54,   160,
-      50,     0,     0,    56,     0,    56,    34,    42,     0,    46,
-       0,    45,    33
+       0,     0,     0,     0,     0,     0,   158,     0,     0,   167,
+       0,     0,     0,    77,     0,     0,   147,   158,   129,   120,
+     142,     0,   139,   149,     0,     0,     0,     0,    52,     0,
+       0,     0,     0,     0,     0,     0,    62,     0,   144,   133,
+     124,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    43,    43,   131,   122,   157,    69,     0,     0,   171,
+       0,     0,     3,    59,     0,     0,    40,    53,    91,    92,
+      89,    90,    93,    94,    86,    97,    98,    99,    88,    87,
+      96,    82,    83,    84,    85,   159,     0,   125,   168,    74,
+      76,   170,     0,     0,   141,    57,     0,     7,     8,    10,
+      11,     0,    15,    13,     0,     0,     0,    14,    12,    19,
+     127,     0,   104,     0,   106,     0,   108,     0,   110,     0,
+     102,   103,     0,    59,     0,   181,   180,   177,     0,     0,
+     179,     0,    58,    59,     0,   164,     0,   164,   130,   158,
+       0,    30,    16,    17,     0,   134,     0,     0,     0,     0,
+      58,     0,   132,    60,    61,     0,    59,     0,     0,    59,
+     160,    59,     0,     9,    55,    55,     0,   105,   107,   109,
+     111,    42,     0,    29,     0,    46,    54,     0,     0,   164,
+      31,    35,     0,    41,     0,    57,     0,     0,   161,    59,
+       0,     0,    18,    38,    57,     0,    47,     0,    57,    50,
+     162,   154,     0,     0,     0,    59,    53,    44,     0,     0,
+      32,     0,     0,     0,    57,   163,    53,    36,     0,    59,
+       0,    59,    53,    45,     0,    49,     0,    59,    48,    33,
+       0,    37
 };
 
   /* YYPGOTONTERM-NUM.  */
 static const yytype_int16 yypgoto[] =
 {
-    -283,   141,  -283,  -283,  -268,  -283,     3,  -283,  -283,  -283,
-      69,  -283,  -283,  -283,  -283,  -283,  -283,  -131,  -261,  -283,
-     220,   -77,  -245,  -190,  -283,     6,    -6,  -283,   100,   223,
-    -283,  -283,  -283,  -283,  -283,  -283,  -283,   -13,  -283,  -283,
-    -283,  -283,  -283,  -283,  -283,  -283,  -161,  -283,  -282,   224,
-      27,  -283,  -283,  -283,  -283,  -283,    78
+    -286,   103,  -286,  -286,  -266,  -286,    21,  -286,  -286,  -286,
+    -286,  -286,  -286,    28,  -286,  -286,  -286,  -286,  -286,  -286,
+    -130,  -285,   -84,   183,   -79,  -267,  -111,  -286,     6,    -6,
+    -286,    58,   184,  -286,  -286,  -286,  -286,  -286,  -286,  -286,
+     -23,  -286,  -286,  -286,  -286,  -286,  -286,  -286,  -286,  -162,
+    -286,  -279,   186,    10,  -286,  -286,  -286,  -286,  -286,    24
 };
 
   /* YYDEFGOTONTERM-NUM.  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    45,    46,    47,    48,   134,   307,   318,   344,   370,
-     274,    50,   339,   350,   135,    51,    52,   214,   308,   334,
-      53,   157,   218,   283,    54,    55,    56,    57,    58,    59,
-      84,   115,   107,   170,   205,   191,    60,    90,    61,    81,
-      62,    91,   247,    82,    63,   116,   238,   355,   313,    64,
-     165,    80,    65,   124,   125,   126,   127
+      -1,    45,    46,    47,    48,   133,   304,   314,   340,   366,
+     315,   341,   372,   272,    50,   335,   346,   134,    51,    52,
+     213,   305,   330,    53,   156,   216,   281,    54,    55,    56,
+      57,    58,    59,    84,   115,   107,   169,   204,   190,    60,
+      90,    61,    81,    62,    91,   245,    82,    63,   116,   236,
+     351,   309,    64,   164,    80,    65,   124,   125,   126,   127
 };
 
   /* YYTABLEYYPACT[STATE-NUM] -- What to do in state STATE-NUM.  If
@@ -1046,365 +1050,407 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      72,    72,   217,    49,    79,   168,   303,   244,   315,   180,
-      68,   184,   288,    89,    76,   289,    66,   106,    94,   131,
-     181,    77,   185,   104,   105,    83,   108,   109,   110,   111,
-     112,   113,   114,    73,    75,   117,   118,   119,   123,   309,
-     310,   132,   146,   102,   330,   130,   256,   133,   137,   290,
-     329,   343,   289,   333,   215,   216,   289,   257,   324,   325,
-       8,     1,   249,    92,   159,   160,   155,   156,   160,   340,
-     128,   280,   160,   281,     2,    72,   173,     3,   103,   171,
-     129,     5,   337,   164,   158,   304,    67,    11,   287,    12,
-      95,    96,   189,   162,   368,   166,   311,   169,   161,   239,
-     162,   163,   358,   172,   182,   183,   241,   162,   167,   242,
-     162,   187,    33,    34,    35,    36,   174,   381,   175,   327,
-     371,   348,   349,   331,   179,   332,   186,   190,   204,   206,
-     219,   316,    49,   208,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   209,    72,   356,   211,   210,   240,   237,    43,   212,
-     243,    44,   245,   258,   253,   263,   246,   276,   365,   366,
-     292,   251,   252,   286,   254,   255,   291,   297,   259,   260,
-     261,   248,   262,   378,   293,   380,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   140,   141,   142,   143,
-     144,   145,   298,   146,   305,   279,   147,   148,   149,   284,
-     285,   312,   314,   146,   277,   278,   147,   326,   146,   328,
-     335,   338,   150,   151,   152,   153,   154,   155,   156,   367,
-     336,   -54,   207,   346,   152,   153,   154,   155,   156,   375,
-     153,   154,   155,   156,   352,   202,   353,   294,   354,   357,
-     295,   296,   363,   341,   140,   141,   142,   143,   144,   145,
-     361,   146,   351,   369,   147,   148,   149,   373,   376,   377,
-     213,   359,   275,   379,   136,   362,   250,   138,   139,     0,
-     150,   151,   152,   153,   154,   155,   156,   317,   203,   372,
-     282,   374,     0,   320,   321,   322,   323,    97,    98,    99,
-       0,     0,     0,   319,     0,     0,   100,     0,     0,     0,
-       0,     0,     0,   101,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  -163,     1,     0,     0,     0,     0,   345,
-       0,     0,   347,     0,     0,     0,     0,     2,     0,     0,
-       3,     4,     0,   360,     5,  -163,     7,     8,     9,    69,
-      11,   364,    12,  -163,  -163,     0,    15,    16,  -163,  -163,
-    -163,  -163,  -163,  -163,  -163,  -163,     0,  -163,     0,  -163,
-    -163,  -163,     0,    70,  -163,    26,  -163,  -163,  -163,  -163,
-       0,     0,     0,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
-    -163,  -163,    32,  -163,  -163,  -163,  -163,  -163,  -163,    33,
-      34,    35,    36,    37,  -163,  -163,  -163,  -163,     0,  -163,
-    -163,  -163,  -163,  -163,  -163,    41,    42,  -163,  -163,     1,
-    -163,    74,  -163,  -163,    44,  -163,     0,     0,     0,     0,
-       0,     0,     2,     0,   176,     3,     4,     0,     0,     5,
-       0,     7,     8,     9,    69,   120,     0,   121,     0,     0,
-       0,    15,    16,   140,   141,   142,   143,   144,   145,     0,
-     146,   177,   178,   147,   148,   149,     0,     0,    70,     0,
-      26,     0,     0,     0,     0,     0,     0,     0,     0,   150,
-     151,   152,   153,   154,   155,   156,     0,    32,     0,     0,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   -64,     1,
-      41,    42,     0,     0,     0,     0,    43,     0,     0,    44,
-    -169,   122,     2,     0,     0,     3,     4,     0,     0,     5,
-     -64,     7,     8,     9,    69,    11,     0,    12,   -64,   -64,
-       0,    15,    16,     0,   -64,   -64,   -64,   -64,   -64,   -64,
-     -64,     0,     0,     0,     0,   -64,     0,     0,    70,   -64,
-      26,     0,     0,   -64,     0,     0,     0,     0,   -64,   -64,
-     -64,   -64,   -64,   -64,   -64,   -64,   -64,    32,   -64,     0,
-       0,   -64,   -64,   -64,    33,    34,    35,    36,    37,     0,
-       0,   -64,   -64,     0,   -64,   -64,   -64,   -64,   -64,   -64,
-      41,    42,   -64,   -64,     0,   -64,    78,  -163,     1,    44,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     2,     0,     0,     3,     4,     0,     0,     5,  -163,
-       7,     8,     9,    69,    11,     0,    12,  -163,  -163,     0,
-      15,    16,     0,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
-       0,     0,     0,     0,  -163,     0,     0,    70,  -163,    26,
-       0,     0,  -163,     0,     0,     0,     0,  -163,  -163,  -163,
-       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-    -163,  -163,     0,  -163,  -163,  -163,  -163,     1,     0,    41,
-      42,     0,     0,     0,  -163,    71,     0,  -163,    44,     0,
-       2,     0,     0,     3,     4,     0,     0,     5,  -163,     7,
-       8,     9,    69,    11,     0,    12,  -163,  -163,     0,    15,
-      16,     0,  -163,  -163,  -163,  -163,  -163,  -163,  -163,     0,
-       0,     0,     0,  -163,     0,     0,    70,  -163,    26,     0,
-       0,  -163,     0,     0,     0,     0,  -163,  -163,  -163,     0,
-       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,  -163,
-    -163,     0,  -163,  -163,  -163,    -4,     1,     0,    41,    42,
-       0,     0,     0,  -163,    43,     0,  -163,    44,     0,     2,
-       0,     0,     3,     4,     0,     0,     5,     6,     7,     8,
-       9,    10,    11,     0,    12,     0,    13,    14,    15,    16,
+      72,    72,   215,   167,    79,   242,   300,   106,   311,   179,
+      68,   237,   161,    89,    76,   306,    73,    75,    94,    66,
+     180,    49,   325,   104,   105,   102,   108,   109,   110,   111,
+     112,   113,   114,   321,   322,   117,   118,   119,   123,    77,
+     183,   336,   326,    83,     8,   130,   247,   132,   136,    92,
+     339,   184,   214,   145,    97,    98,    99,   334,   254,   285,
+       1,   103,   286,   100,   158,   159,   172,   128,   159,   255,
+     101,   287,   159,     2,   286,    72,     3,   154,   155,   170,
+       5,   160,   188,   163,   162,    67,    11,   284,    12,   378,
+     129,   166,   364,   145,    95,    96,    33,    34,    35,    36,
+     145,   239,   161,   146,   181,   182,   329,   131,   278,   286,
+     279,   240,   161,   344,   345,   152,   153,   154,   155,   161,
+     157,   151,   152,   153,   154,   155,   165,   312,   168,   217,
+     171,   173,   174,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+      49,    72,   178,   185,   186,   238,   189,    43,   203,   241,
+      44,   205,   301,   207,   208,   244,   289,   209,   210,   211,
+     249,   250,   307,   252,   253,   235,   243,   257,   258,   259,
+     246,   260,   251,   261,   256,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   324,   274,   283,   327,   288,
+     328,   290,   294,   295,   277,   302,   308,   310,   282,   323,
+     332,   333,   343,   275,   276,   -57,   348,   349,   350,   353,
+     354,   359,   361,   357,   365,   369,   363,   373,   352,   375,
+     273,   331,   212,   248,     0,   280,   371,   135,   137,     0,
+     138,     0,   377,     0,   362,   291,     0,   337,   292,   293,
+       0,     0,     0,     0,     0,     0,   347,     0,   374,     0,
+     376,     0,     0,     0,     0,   355,   380,     0,     0,   358,
+       0,     0,     0,     0,     0,   -34,     0,     0,     0,     0,
+       0,     0,     0,   368,   313,   370,     0,     0,     0,     0,
+     317,   318,   319,   320,     0,     0,     0,     0,     0,     0,
+     316,     0,     0,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   342,  -166,     1,   149,
+     150,   151,   152,   153,   154,   155,     0,     0,     0,   356,
+       0,     2,     0,     0,     3,     4,     0,   360,     5,  -166,
+       7,     8,     9,    69,    11,   367,    12,  -166,  -166,     0,
+      15,    16,  -166,  -166,  -166,  -166,  -166,  -166,  -166,  -166,
+       0,  -166,     0,  -166,  -166,  -166,     0,    70,  -166,    26,
+    -166,  -166,  -166,  -166,     0,     0,     0,  -166,  -166,  -166,
+    -166,  -166,  -166,  -166,  -166,  -166,    32,  -166,  -166,  -166,
+    -166,  -166,  -166,    33,    34,    35,    36,    37,  -166,  -166,
+    -166,  -166,     0,  -166,  -166,  -166,  -166,  -166,  -166,    41,
+      42,  -166,  -166,     1,  -166,    74,  -166,  -166,    44,  -166,
+       0,     0,     0,     0,     0,     0,     2,     0,   175,     3,
+       4,     0,     0,     5,     0,     7,     8,     9,    69,   120,
+       0,   121,     0,     0,     0,    15,    16,   139,   140,   141,
+     142,   143,   144,     0,   145,   176,   177,   146,   147,   148,
+       0,     0,    70,     0,    26,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   -67,     1,    41,    42,     0,     0,     0,     0,
+      43,     0,     0,    44,  -172,   122,     2,     0,     0,     3,
+       4,     0,     0,     5,   -67,     7,     8,     9,    69,    11,
+       0,    12,   -67,   -67,     0,    15,    16,     0,   -67,   -67,
+     -67,   -67,   -67,   -67,   -67,     0,     0,     0,     0,   -67,
+       0,     0,    70,   -67,    26,     0,     0,   -67,     0,     0,
+       0,     0,   -67,   -67,   -67,   -67,   -67,   -67,   -67,   -67,
+     -67,    32,   -67,     0,     0,   -67,   -67,   -67,    33,    34,
+      35,    36,    37,     0,     0,   -67,   -67,     0,   -67,   -67,
+     -67,   -67,   -67,   -67,    41,    42,   -67,   -67,     0,   -67,
+      78,  -166,     1,    44,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     2,     0,     0,     3,     4,
+       0,     0,     5,  -166,     7,     8,     9,    69,    11,     0,
+      12,  -166,  -166,     0,    15,    16,     0,  -166,  -166,  -166,
+    -166,  -166,  -166,  -166,     0,     0,     0,     0,  -166,     0,
+       0,    70,  -166,    26,     0,     0,  -166,     0,     0,     0,
+       0,  -166,  -166,  -166,     0,     0,     0,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,     0,     0,  -166,  -166,     0,  -166,  -166,  -166,
+    -166,     1,     0,    41,    42,     0,     0,     0,  -166,    71,
+       0,  -166,    44,     0,     2,     0,     0,     3,     4,     0,
+       0,     5,  -166,     7,     8,     9,    69,    11,     0,    12,
+    -166,  -166,     0,    15,    16,     0,  -166,  -166,  -166,  -166,
+    -166,  -166,  -166,     0,     0,     0,     0,  -166,     0,     0,
+      70,  -166,    26,     0,     0,  -166,     0,     0,     0,     0,
+    -166,  -166,  -166,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,  -166,  -166,     0,  -166,  -166,  -166,    -4,
+       1,     0,    41,    42,     0,     0,     0,  -166,    43,     0,
+    -166,    44,     0,     2,     0,     0,     3,     4,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,    14,    15,    16,     0,     0,     0,    17,    18,    19,
+      20,    21,     0,     0,    22,     0,    23,     0,     0,    24,
+      25,    26,     0,     0,    27,     0,     0,     0,    28,    29,
+      30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,    38,    39,    40,  -155,     1,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,    -4,    43,     0,     2,
+      44,     0,     3,     4,     0,     0,     5,     6,     7,     8,
+       9,    10,    11,     0,    12,   338,    13,     0,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
-      22,     0,    23,     0,     0,    24,    25,    26,     0,     0,
-      27,     0,     0,     0,    28,    29,    30,    31,     0,     0,
+       0,     0,    23,     0,     0,    24,    25,    26,     0,     0,
+      27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
        0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-      40,  -152,     1,     0,     0,     0,     0,    41,    42,     0,
-       0,     0,    -4,    43,     0,     2,    44,     0,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,   342,    13,     0,    15,    16,     0,     0,     0,    17,
-      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
-       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
-       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,  -150,     1,     0,     0,
-       0,     0,     0,    41,    42,     0,     0,     0,   306,    43,
-       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
+    -153,     1,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,   303,    43,     2,     0,    44,     3,     4,     0,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
+      19,    20,    21,     0,     0,     0,     0,    23,     0,     0,
+      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
+      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,    38,    39,  -150,     1,     0,     0,     0,
+       0,     0,    41,    42,     0,     0,     0,   303,    43,     2,
+       0,    44,     3,     4,     0,     0,     5,     6,     7,     8,
+       9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
+       0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
+       0,     0,    23,     0,     0,    24,    25,    26,     0,     0,
+      27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
+       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
+       0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
+       0,     1,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,   303,    43,     2,     0,    44,     3,     4,     0,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,     0,    15,    16,     0,   -54,   -54,    17,    18,
+      19,    20,    21,     0,     0,     0,     0,    23,     0,     0,
+      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
+      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,    38,    39,     0,   -54,     1,     0,     0,
+       0,     0,    41,    42,     0,     0,     0,   303,    43,     0,
+       2,    44,     0,     3,     4,     0,     0,     5,     6,     7,
        8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
       16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
        0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
        0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
        0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
        0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
-      39,  -147,     1,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,   306,    43,     2,     0,    44,     3,     4,
+      39,     0,     1,   -54,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,   303,    43,     2,     0,    44,     3,     4,
        0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
       12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
       18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
        0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
        0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
       32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,     0,     1,     0,     0,
-       0,     0,     0,    41,    42,     0,     0,     0,   306,    43,
+      36,    37,     0,     0,    38,    39,     0,     1,     0,   -58,
+       0,     0,     0,    41,    42,     0,     0,     0,   303,    43,
        2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
        8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-      16,     0,   -51,   -51,    17,    18,    19,    20,    21,     0,
+      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
        0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
        0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
        0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
        0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
-      39,     0,   -51,     1,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,   306,    43,     0,     2,    44,     0,     3,
-       4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
-       0,    12,     0,    13,     0,    15,    16,     0,     0,     0,
-      17,    18,    19,    20,    21,     0,     0,     0,     0,    23,
-       0,     0,    24,    25,    26,     0,     0,    27,     0,     0,
-       0,     0,    29,    30,    31,     0,     0,     0,     0,     0,
-       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,    38,    39,     0,     1,   -51,
-       0,     0,     0,     0,    41,    42,     0,     0,     0,   306,
-      43,     2,     0,    44,     3,     4,     0,     0,     5,     6,
+      39,     0,     1,   -58,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,   303,    43,     2,     0,    44,     3,     4,
+       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
+      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
+       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
+       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,     0,     0,    38,    39,     0,   -57,     1,     0,
+       0,     0,     0,    41,    42,     0,     0,     0,   303,    43,
+       0,     2,    44,     0,     3,     4,     0,     0,     5,     6,
        7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
       15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
        0,     0,     0,     0,    23,     0,     0,    24,    25,    26,
        0,     0,    27,     0,     0,     0,     0,    29,    30,    31,
        0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-      38,    39,     0,     1,     0,   -55,     0,     0,     0,    41,
-      42,     0,     0,     0,   306,    43,     2,     0,    44,     3,
+      38,    39,     0,     1,   379,     0,     0,     0,     0,    41,
+      42,     0,     0,     0,   303,    43,     2,     0,    44,     3,
        4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
        0,    12,     0,    13,     0,    15,    16,     0,     0,     0,
       17,    18,    19,    20,    21,     0,     0,     0,     0,    23,
        0,     0,    24,    25,    26,     0,     0,    27,     0,     0,
        0,     0,    29,    30,    31,     0,     0,     0,     0,     0,
        0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,    38,    39,     0,     1,   -55,
-       0,     0,     0,     0,    41,    42,     0,     0,     0,   306,
+      35,    36,    37,     0,     0,    38,    39,     0,     1,   381,
+       0,     0,     0,     0,    41,    42,     0,     0,     0,   303,
       43,     2,     0,    44,     3,     4,     0,     0,     5,     6,
        7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
       15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
-       0,     0,     0,     0,    23,     0,     0,    24,    25,    26,
-       0,     0,    27,     0,     0,     0,     0,    29,    30,    31,
+       0,     0,     0,     0,     0,     0,     0,    24,     0,    26,
+       0,     0,     0,     0,     0,     0,     0,    29,    30,    31,
        0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-      38,    39,     0,   -54,     1,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,   306,    43,     0,     2,    44,     0,
-       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,     0,    15,    16,     0,     0,
-       0,    17,    18,    19,    20,    21,     0,     0,     0,     0,
-      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
-       0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,    38,    39,     0,     1,
-     382,     0,     0,     0,     0,    41,    42,     0,     0,     0,
-     306,    43,     2,     0,    44,     3,     4,     0,     0,     5,
-       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
-       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
-      21,     0,     0,     0,     0,     0,     0,     0,    24,     0,
-      26,     0,     0,     0,     0,     0,     0,     0,    29,    30,
-      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,     1,    39,     0,     0,     0,     0,     0,     0,     0,
-      41,    42,     0,     0,     2,     0,    43,     3,     4,    44,
-       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-       0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
-      19,    20,     0,     0,     0,     0,     0,     0,     0,     0,
-      24,     0,    26,     0,     0,     0,     0,     0,     0,     0,
-      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,     1,    39,     0,     0,     0,     0,     0,
-       0,     0,    41,    42,     0,     0,     2,     0,    43,     3,
-       4,    44,     0,     5,     0,     7,     8,     9,    69,    11,
-       0,    12,     0,     0,     0,    15,    16,     0,     0,     0,
-       1,     0,     0,     0,     0,     0,     0,     0,    85,    86,
-      87,    88,    70,     2,    26,     0,     3,     4,     0,     0,
-       5,     0,     7,     8,     9,    69,    11,     0,    12,     0,
-       0,    32,    15,    16,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,    85,     0,    87,     0,    70,
-       0,    26,     0,     0,    41,    42,     0,     0,     0,     0,
-      43,     0,     0,    44,     0,     0,     0,     0,    32,     0,
+       1,    39,     0,     0,     0,     0,     0,     0,     0,    41,
+      42,     0,     0,     2,     0,    43,     3,     4,    44,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
+      20,     0,     0,     0,     0,     0,     0,     0,     0,    24,
+       0,    26,     0,     0,     0,     0,     0,     0,     0,    29,
+      30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,     1,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     1,    39,     0,     0,     0,     0,     0,     0,
        0,    41,    42,     0,     0,     2,     0,    43,     3,     4,
       44,     0,     5,     0,     7,     8,     9,    69,    11,     0,
       12,     0,     0,     0,    15,    16,     0,     0,     0,     1,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    70,     2,    26,     0,     3,     4,     0,    93,     5,
+       0,     0,     0,     0,     0,     0,     0,    85,    86,    87,
+      88,    70,     2,    26,     0,     3,     4,     0,     0,     5,
        0,     7,     8,     9,    69,    11,     0,    12,     0,     0,
       32,    15,    16,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,     0,     0,     0,     0,    70,     0,
+      36,    37,     0,     0,    85,     0,    87,     0,    70,     0,
       26,     0,     0,    41,    42,     0,     0,     0,     0,    43,
-    -163,  -163,    44,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,    44,     0,     0,     0,     0,    32,     0,     0,
        0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
        0,     1,     0,     0,     0,     0,     0,     0,     0,     0,
       41,    42,     0,     0,     2,     0,    43,     3,     4,    44,
        0,     5,     0,     7,     8,     9,    69,    11,     0,    12,
-       0,     0,     0,    15,    16,     0,     0,     0,    85,     0,
-      87,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      70,     0,    26,     0,     0,   140,   141,   142,   143,   144,
-     145,     0,   146,     0,     0,   147,   148,   149,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,   150,   151,   152,   153,   154,   155,   156,   192,     0,
-       0,     0,    41,    42,   193,     0,     0,     0,    43,     0,
-       0,    44,     0,   140,   141,   142,   143,   144,   145,     0,
-     146,     0,     0,   147,   148,   149,     0,     0,     0,     0,
-       0,   194,     0,     0,     0,     0,     0,   195,     0,   150,
-     151,   152,   153,   154,   155,   156,   140,   141,   142,   143,
-     144,   145,     0,   146,     0,     0,   147,   148,   149,     0,
-       0,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-     197,     0,   150,   151,   152,   153,   154,   155,   156,   140,
-     141,   142,   143,   144,   145,     0,   146,     0,     0,   147,
-     148,   149,     0,     0,     0,     0,     0,   198,     0,     0,
-       0,     0,     0,   199,     0,   150,   151,   152,   153,   154,
-     155,   156,   140,   141,   142,   143,   144,   145,     0,   146,
-       0,     0,   147,   148,   149,     0,     0,     0,     0,     0,
-     299,     0,     0,     0,     0,     0,     0,     0,   150,   151,
-     152,   153,   154,   155,   156,   140,   141,   142,   143,   144,
-     145,     0,   146,     0,     0,   147,   148,   149,     0,     0,
-       0,     0,     0,   300,     0,     0,     0,     0,     0,     0,
-       0,   150,   151,   152,   153,   154,   155,   156,   140,   141,
-     142,   143,   144,   145,     0,   146,     0,     0,   147,   148,
-     149,     0,     0,     0,     0,     0,   301,     0,     0,     0,
-       0,     0,     0,     0,   150,   151,   152,   153,   154,   155,
-     156,   140,   141,   142,   143,   144,   145,     0,   146,     0,
-       0,   147,   148,   149,     0,     0,     0,     0,     0,   302,
-       0,     0,     0,     0,     0,     0,     0,   150,   151,   152,
-     153,   154,   155,   156,   140,   141,   142,   143,   144,   145,
-     188,   146,     0,     0,   147,   148,   149,   140,   141,   142,
-     143,   144,   145,     0,   146,     0,     0,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,     0,     0,     0,
-       0,     0,     0,   150,   151,   152,   153,   154,   155,   156,
-     140,   141,   142,   143,   144,   145,     0,   146,     0,     0,
-     147,   148,   149,     0,     0,     0,     0,     0,   200,   201,
-       0,     0,     0,     0,     0,     0,   150,   151,   152,   153,
-     154,   155,   156,   140,   141,   142,   143,   144,   145,     0,
-     146,     0,     0,   147,   148,   149,   140,   141,   142,   143,
-       0,     0,     0,   146,     0,     0,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,     0,     0,     0,     0,
-       0,     0,   150,   151,   152,   153,   154,   155,   156
+       0,     0,     0,    15,    16,     0,     0,     0,     1,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      70,     2,    26,     0,     3,     4,     0,    93,     5,     0,
+       7,     8,     9,    69,    11,     0,    12,     0,     0,    32,
+      15,    16,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,     0,     0,     0,     0,    70,     0,    26,
+       0,     0,    41,    42,     0,     0,     0,     0,    43,  -166,
+    -166,    44,     0,     0,     0,     0,    32,     0,     0,     0,
+       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
+       1,     0,     0,     0,     0,     0,     0,     0,     0,    41,
+      42,     0,     0,     2,     0,    43,     3,     4,    44,     0,
+       5,     0,     7,     8,     9,    69,    11,     0,    12,     0,
+       0,     0,    15,    16,     0,     0,     0,    85,     0,    87,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    70,
+       0,    26,     0,     0,   139,   140,   141,   142,   143,   144,
+       0,   145,     0,     0,   146,   147,   148,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+     149,   150,   151,   152,   153,   154,   155,   191,     0,     0,
+       0,    41,    42,   192,     0,     0,     0,    43,     0,     0,
+      44,     0,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
+     193,     0,     0,     0,     0,     0,   194,     0,   149,   150,
+     151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
+     144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
+       0,     0,     0,   195,     0,     0,     0,     0,     0,   196,
+       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
+     148,     0,     0,     0,     0,     0,   197,     0,     0,     0,
+       0,     0,   198,     0,   149,   150,   151,   152,   153,   154,
+     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,     0,     0,     0,     0,     0,   296,
+       0,     0,     0,     0,     0,     0,     0,   149,   150,   151,
+     152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
+       0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
+       0,     0,   297,     0,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
+     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
+       0,     0,     0,     0,     0,   298,     0,     0,     0,     0,
+       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,     0,     0,     0,     0,     0,   299,     0,
+       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   201,     0,   149,
+     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
+     143,   144,   187,   145,     0,     0,   146,   147,   148,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,     0,
+     202,     0,     0,     0,     0,   149,   150,   151,   152,   153,
+     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155,     0,     0,     0,   206,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,     0,     0,     0,     0,   199,   200,     0,
+       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
+     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,   139,   140,   141,   142,     0,
+       0,     0,   145,     0,     0,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,     0,     0,     0,     0,     0,
+       0,   149,   150,   151,   152,   153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,   133,     0,    10,    82,   274,   168,   290,    54,
-       4,    54,    97,    19,     8,   100,    97,    30,    24,    43,
-      65,    48,    65,    29,    30,    51,    32,    33,    34,    35,
-      36,    37,    38,     6,     7,    41,    42,    43,    44,   284,
-     285,    65,    70,    26,   312,    51,    54,    53,    54,    97,
-     311,   333,   100,    97,   131,   132,   100,    65,   303,   304,
-      24,     1,    26,    51,    70,    71,    94,    95,    74,   330,
-       0,    27,    78,    29,    14,    81,    89,    17,    26,    85,
-      97,    21,   327,    77,    98,   275,    26,    27,   219,    29,
-      56,    57,   105,   100,   362,   100,   286,    26,    71,    99,
-     100,    74,   347,    46,    98,    99,    99,   100,    81,    99,
-     100,    53,    76,    77,    78,    79,    26,   378,    26,   309,
-     365,    36,    37,   313,    26,   315,    54,    26,    26,    26,
-     136,   292,   129,   103,   140,   141,   142,   143,   144,   145,
+       6,     7,   132,    82,    10,   167,   272,    30,   287,    54,
+       4,    99,   100,    19,     8,   282,     6,     7,    24,    97,
+      65,     0,   307,    29,    30,    26,    32,    33,    34,    35,
+      36,    37,    38,   300,   301,    41,    42,    43,    44,    48,
+      54,   326,   308,    51,    24,    51,    26,    53,    54,    51,
+     329,    65,   131,    70,    17,    18,    19,   324,    54,    97,
+       1,    26,   100,    26,    70,    71,    89,     0,    74,    65,
+      33,    97,    78,    14,   100,    81,    17,    94,    95,    85,
+      21,    71,   105,    77,    74,    26,    27,   217,    29,   374,
+      97,    81,   358,    70,    56,    57,    76,    77,    78,    79,
+      70,    99,   100,    73,    98,    99,    97,    43,    27,   100,
+      29,    99,   100,    36,    37,    92,    93,    94,    95,   100,
+      98,    91,    92,    93,    94,    95,   100,   289,    26,   135,
+      46,    26,    26,   139,   140,   141,   142,   143,   144,   145,
      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   103,   158,   343,   100,   102,   162,    26,    98,   100,
-     166,   101,   100,    48,    65,   100,   172,   100,   358,   359,
-     247,   177,   178,    53,   180,   181,    26,    26,   184,   185,
-     186,   175,   188,   373,    44,   375,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,    63,    64,    65,    66,
-      67,    68,    26,    70,    26,   211,    73,    74,    75,   215,
-     216,    53,    26,    70,   208,   209,    73,    87,    70,    35,
-      54,    54,    89,    90,    91,    92,    93,    94,    95,   360,
-      88,    86,    99,    87,    91,    92,    93,    94,    95,   370,
-      92,    93,    94,    95,    36,    54,    86,   253,    26,    54,
-     256,   257,   100,   330,    63,    64,    65,    66,    67,    68,
-      86,    70,   339,    26,    73,    74,    75,    53,    87,    86,
-     129,   348,   203,    86,    54,   352,   176,    54,    54,    -1,
-      89,    90,    91,    92,    93,    94,    95,   293,    97,   366,
-     212,   368,    -1,   299,   300,   301,   302,    17,    18,    19,
-      -1,    -1,    -1,   297,    -1,    -1,    26,    -1,    -1,    -1,
-      -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,   335,
-      -1,    -1,   338,    -1,    -1,    -1,    -1,    14,    -1,    -1,
-      17,    18,    -1,   349,    21,    22,    23,    24,    25,    26,
-      27,   357,    29,    30,    31,    -1,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    -1,    44,    -1,    46,
-      47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
-      -1,    -1,    -1,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,     1,
-      97,    98,    99,   100,   101,   102,    -1,    -1,    -1,    -1,
-      -1,    -1,    14,    -1,    44,    17,    18,    -1,    -1,    21,
-      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
-      -1,    33,    34,    63,    64,    65,    66,    67,    68,    -1,
-      70,    71,    72,    73,    74,    75,    -1,    -1,    50,    -1,
-      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
-      90,    91,    92,    93,    94,    95,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,
-      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
-     102,   103,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
-      -1,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
-      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
-      -1,    73,    74,    75,    76,    77,    78,    79,    80,    -1,
-      -1,    83,    84,    -1,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    -1,    97,    98,     0,     1,   101,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
-      33,    34,    -1,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
-      -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      83,    84,    -1,    86,    87,    88,     0,     1,    -1,    92,
-      93,    -1,    -1,    -1,    97,    98,    -1,   100,   101,    -1,
-      14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
-      34,    -1,    36,    37,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
-      84,    -1,    86,    87,    88,     0,     1,    -1,    92,    93,
-      -1,    -1,    -1,    97,    98,    -1,   100,   101,    -1,    14,
-      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    31,    32,    33,    34,
-      -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
-      45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,    -1,
-      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      85,     0,     1,    -1,    -1,    -1,    -1,    92,    93,    -1,
-      -1,    -1,    97,    98,    -1,    14,   101,    -1,    17,    18,
+     129,   157,    26,    54,    53,   161,    26,    98,    26,   165,
+     101,    26,   273,   103,   103,   171,   245,   102,   100,   100,
+     176,   177,   283,   179,   180,    26,   100,   183,   184,   185,
+     174,   187,    65,   100,    48,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   306,   100,    53,   309,    26,
+     311,    44,    26,    26,   210,    26,    53,    26,   214,    87,
+      54,    88,    87,   207,   208,    86,    36,    86,    26,    54,
+      35,   100,    54,    86,    26,    53,   356,    86,   339,    86,
+     202,   315,   129,   175,    -1,   211,   366,    54,    54,    -1,
+      54,    -1,   372,    -1,   355,   251,    -1,   326,   254,   255,
+      -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,   369,    -1,
+     371,    -1,    -1,    -1,    -1,   344,   377,    -1,    -1,   348,
+      -1,    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   362,   290,   364,    -1,    -1,    -1,    -1,
+     296,   297,   298,   299,    -1,    -1,    -1,    -1,    -1,    -1,
+     294,    -1,    -1,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   332,     0,     1,    89,
+      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,   345,
+      -1,    14,    -1,    -1,    17,    18,    -1,   353,    21,    22,
+      23,    24,    25,    26,    27,   361,    29,    30,    31,    -1,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      -1,    44,    -1,    46,    47,    48,    -1,    50,    51,    52,
+      53,    54,    55,    56,    -1,    -1,    -1,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,     1,    97,    98,    99,   100,   101,   102,
+      -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    44,    17,
+      18,    -1,    -1,    21,    -1,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    -1,    -1,    33,    34,    63,    64,    65,
+      66,    67,    68,    -1,    70,    71,    72,    73,    74,    75,
+      -1,    -1,    50,    -1,    52,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    89,    90,    91,    92,    93,    94,    95,
+      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      78,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     0,     1,    92,    93,    -1,    -1,    -1,    -1,
+      98,    -1,    -1,   101,   102,   103,    14,    -1,    -1,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      -1,    29,    30,    31,    -1,    33,    34,    -1,    36,    37,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
+      -1,    -1,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    -1,    73,    74,    75,    76,    77,
+      78,    79,    80,    -1,    -1,    83,    84,    -1,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    -1,    97,
+      98,     0,     1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
       -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
+      29,    30,    31,    -1,    33,    34,    -1,    36,    37,    38,
       39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
       -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
       -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,     0,     1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
-      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
+      79,    80,    -1,    -1,    83,    84,    -1,    86,    87,    88,
+       0,     1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      -1,   100,   101,    -1,    14,    -1,    -1,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      30,    31,    -1,    33,    34,    -1,    36,    37,    38,    39,
+      40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
+      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
+      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    83,    84,    -1,    86,    87,    88,     0,
+       1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
+     100,   101,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
+      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
+      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    83,    84,    85,     0,     1,    -1,    -1,    -1,
+      -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,    14,
+     101,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    34,
+      -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
+      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
+      40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
+      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
+      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    83,    84,     0,     1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,
+      -1,   101,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
+      -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
+      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
+      -1,     1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    -1,    33,    34,    -1,    36,    37,    38,    39,
+      40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
+      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
+      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    83,    84,    -1,    86,     1,    -1,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
+      14,   101,    -1,    17,    18,    -1,    -1,    21,    22,    23,
       24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
       34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
       -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
       -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
       -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
       -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
-      84,     0,     1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,
       -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,    18,
       -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
       29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
@@ -1412,33 +1458,33 @@ static const yytype_int16 yycheck[] =
       -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
       -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,     1,    -1,    -1,
+      79,    80,    -1,    -1,    83,    84,    -1,     1,    -1,    88,
       -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
       14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
       24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      34,    -1,    36,    37,    38,    39,    40,    41,    42,    -1,
+      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
       -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
       -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
       -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
       -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
-      84,    -1,    86,     1,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    -1,    97,    98,    -1,    14,   101,    -1,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,
-      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
-      78,    79,    80,    -1,    -1,    83,    84,    -1,     1,    87,
-      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,
-      98,    14,    -1,   101,    17,    18,    -1,    -1,    21,    22,
+      84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    83,    84,    -1,    86,     1,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      -1,    14,   101,    -1,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
       33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
       -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
       -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,
       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      83,    84,    -1,     1,    -1,    88,    -1,    -1,    -1,    92,
+      83,    84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,
       93,    -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,
       18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
       -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
@@ -1451,105 +1497,95 @@ static const yytype_int16 yycheck[] =
       98,    14,    -1,   101,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
       33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
-      -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,
       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      83,    84,    -1,    86,     1,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    -1,    97,    98,    -1,    14,   101,    -1,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,     1,
-      87,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
-      97,    98,    14,    -1,   101,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
-      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
-      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,     1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
-      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      50,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,     1,    84,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,
-      18,   101,    -1,    21,    -1,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,
-       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    14,    52,    -1,    17,    18,    -1,    -1,
-      21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      -1,    69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,
-      78,    79,    80,    -1,    -1,    46,    -1,    48,    -1,    50,
-      -1,    52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
-      98,    -1,    -1,   101,    -1,    -1,    -1,    -1,    69,    -1,
+       1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
+      -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
       -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     1,    84,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,    18,
      101,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
       29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    50,    14,    52,    -1,    17,    18,    -1,    20,    21,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,
+      49,    50,    14,    52,    -1,    17,    18,    -1,    -1,    21,
       -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
       69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      79,    80,    -1,    -1,    46,    -1,    48,    -1,    50,    -1,
       52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
-      99,   100,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,
       -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
       -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
       -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    -1,    -1,    33,    34,    -1,    -1,    -1,    46,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      50,    -1,    52,    -1,    -1,    63,    64,    65,    66,    67,
-      68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    89,    90,    91,    92,    93,    94,    95,    48,    -1,
-      -1,    -1,    92,    93,    54,    -1,    -1,    -1,    98,    -1,
-      -1,   101,    -1,    63,    64,    65,    66,    67,    68,    -1,
-      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,
-      90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
-      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    89,    90,    91,    92,    93,    94,    95,    63,
-      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
-      74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    89,    90,    91,    92,    93,
-      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    -1,    33,    34,    -1,    -1,    -1,     1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    14,    52,    -1,    17,    18,    -1,    20,    21,    -1,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    69,
+      33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,    99,
+     100,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
+       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
+      21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      -1,    -1,    33,    34,    -1,    -1,    -1,    46,    -1,    48,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
+      -1,    52,    -1,    -1,    63,    64,    65,    66,    67,    68,
+      -1,    70,    -1,    -1,    73,    74,    75,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      89,    90,    91,    92,    93,    94,    95,    48,    -1,    -1,
+      -1,    92,    93,    54,    -1,    -1,    -1,    98,    -1,    -1,
+     101,    -1,    63,    64,    65,    66,    67,    68,    -1,    70,
       -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
       91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
       68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
       -1,    89,    90,    91,    92,    93,    94,    95,    63,    64,
       65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
       75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      -1,    -1,    54,    -1,    89,    90,    91,    92,    93,    94,
       95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
       -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
       92,    93,    94,    95,    63,    64,    65,    66,    67,    68,
-      56,    70,    -1,    -1,    73,    74,    75,    63,    64,    65,
+      -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      89,    90,    91,    92,    93,    94,    95,    63,    64,    65,
       66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
-      89,    90,    91,    92,    93,    94,    95,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    89,    90,    91,    92,    93,    94,    95,
       63,    64,    65,    66,    67,    68,    -1,    70,    -1,    -1,
-      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
+      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
       93,    94,    95,    63,    64,    65,    66,    67,    68,    -1,
-      70,    -1,    -1,    73,    74,    75,    63,    64,    65,    66,
-      -1,    -1,    -1,    70,    -1,    -1,    73,    74,    75,    89,
-      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,
-      -1,    -1,    89,    90,    91,    92,    93,    94,    95
+      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,
+      90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
+      67,    68,    56,    70,    -1,    -1,    73,    74,    75,    63,
+      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
+      74,    75,    89,    90,    91,    92,    93,    94,    95,    -1,
+      97,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
+      91,    92,    93,    94,    95,    -1,    -1,    -1,    99,    63,
+      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    73,    74,    75,    63,    64,    65,    66,    -1,
+      -1,    -1,    70,    -1,    -1,    73,    74,    75,    89,    90,
+      91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95
 };
 
   /* YYSTOSSTATE-NUM -- The (internal number of the) accessing
@@ -1561,40 +1597,40 @@ static const yytype_uint8 yystos[] =
       41,    42,    45,    47,    50,    51,    52,    55,    59,    60,
       61,    62,    69,    76,    77,    78,    79,    80,    83,    84,
       85,    92,    93,    98,   101,   105,   106,   107,   108,   110,
-     115,   119,   120,   124,   128,   129,   130,   131,   132,   133,
-     140,   142,   144,   148,   153,   156,    97,    26,   129,    26,
-      50,    98,   130,   154,    98,   154,   129,    48,    98,   130,
-     155,   143,   147,    51,   134,    46,    47,    48,    49,   130,
-     141,   145,    51,    20,   130,    56,    57,    17,    18,    19,
-      26,    33,    26,    26,   130,   130,   141,   136,   130,   130,
-     130,   130,   130,   130,   130,   135,   149,   130,   130,   130,
-      27,    29,   103,   130,   157,   158,   159,   160,     0,    97,
-     130,    43,    65,   130,   109,   118,   124,   130,   133,   153,
-      63,    64,    65,    66,    67,    68,    70,    73,    74,    75,
-      89,    90,    91,    92,    93,    94,    95,   125,    98,   130,
-     130,   154,   100,   154,   129,   154,   100,   154,   125,    26,
-     137,   130,    46,   141,    26,    26,    44,    71,    72,    26,
-      54,    65,   129,   129,    54,    65,    54,    53,    56,   141,
-      26,   139,    48,    54,    48,    54,    48,    54,    48,    54,
-      81,    82,    54,    97,    26,   138,    26,    99,   103,   103,
-     102,   100,   100,   105,   121,   125,   125,   121,   126,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,    26,   150,    99,
-     130,    99,    99,   130,   150,   100,   130,   146,   129,    26,
-     132,   130,   130,    65,   130,   130,    54,    65,    48,   130,
-     130,   130,   130,   100,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   114,   114,   100,   129,   129,   130,
-      27,    29,   160,   127,   130,   130,    53,   121,    97,   100,
-      97,    26,   125,    44,   130,   130,   130,    26,    26,    48,
-      48,    48,    48,   108,   127,    26,    97,   110,   122,   126,
-     126,   127,    53,   152,    26,   152,   150,   130,   111,   129,
-     130,   130,   130,   130,   126,   126,    87,   127,    35,   122,
-     108,   127,   127,    97,   123,    54,    88,   126,    54,   116,
-     122,   125,    30,   152,   112,   130,    87,   130,    36,    37,
-     117,   125,    36,    86,    26,   151,   127,    54,   126,   125,
-     130,    86,   125,   100,   130,   127,   127,   121,   108,    26,
-     113,   126,   125,    53,   125,   121,    87,    86,   127,    86,
-     127,   122,    87
+     118,   122,   123,   127,   131,   132,   133,   134,   135,   136,
+     143,   145,   147,   151,   156,   159,    97,    26,   132,    26,
+      50,    98,   133,   157,    98,   157,   132,    48,    98,   133,
+     158,   146,   150,    51,   137,    46,    47,    48,    49,   133,
+     144,   148,    51,    20,   133,    56,    57,    17,    18,    19,
+      26,    33,    26,    26,   133,   133,   144,   139,   133,   133,
+     133,   133,   133,   133,   133,   138,   152,   133,   133,   133,
+      27,    29,   103,   133,   160,   161,   162,   163,     0,    97,
+     133,    43,   133,   109,   121,   127,   133,   136,   156,    63,
+      64,    65,    66,    67,    68,    70,    73,    74,    75,    89,
+      90,    91,    92,    93,    94,    95,   128,    98,   133,   133,
+     157,   100,   157,   132,   157,   100,   157,   128,    26,   140,
+     133,    46,   144,    26,    26,    44,    71,    72,    26,    54,
+      65,   132,   132,    54,    65,    54,    53,    56,   144,    26,
+     142,    48,    54,    48,    54,    48,    54,    48,    54,    81,
+      82,    54,    97,    26,   141,    26,    99,   103,   103,   102,
+     100,   100,   105,   124,   128,   124,   129,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,    26,   153,    99,   133,    99,
+      99,   133,   153,   100,   133,   149,   132,    26,   135,   133,
+     133,    65,   133,   133,    54,    65,    48,   133,   133,   133,
+     133,   100,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   117,   117,   100,   132,   132,   133,    27,    29,
+     163,   130,   133,    53,   124,    97,   100,    97,    26,   128,
+      44,   133,   133,   133,    26,    26,    48,    48,    48,    48,
+     108,   130,    26,    97,   110,   125,   129,   130,    53,   155,
+      26,   155,   153,   133,   111,   114,   132,   133,   133,   133,
+     133,   129,   129,    87,   130,   125,   108,   130,   130,    97,
+     126,   126,    54,    88,   129,   119,   125,   128,    30,   155,
+     112,   115,   133,    87,    36,    37,   120,   128,    36,    86,
+      26,   154,   130,    54,    35,   128,   133,    86,   128,   100,
+     133,    54,   130,   124,   108,    26,   113,   133,   128,    53,
+     128,   124,   116,    86,   130,    86,   130,   124,   125,    87,
+     130,    87
 };
 
   /* YYR1YYN -- Symbol number of symbol that rule YYN derives.  */
@@ -1603,21 +1639,22 @@ static const yytype_uint8 yyr1[] =
        0,   104,   105,   105,   106,   106,   106,   107,   107,   107,
      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
      108,   108,   108,   109,   109,   109,   109,   110,   110,   110,
-     111,   112,   113,   110,   110,   110,   110,   110,   110,   110,
-     114,   115,   115,   116,   116,   117,   118,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   127,   127,   128,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   131,   131,   131,   131,   131,   131,   131,   131,   132,
-     132,   133,   133,   133,   133,   133,   134,   133,   135,   133,
-     136,   133,   133,   133,   133,   133,   137,   137,   138,   138,
-     139,   139,   140,   140,   140,   140,   140,   140,   141,   141,
-     142,   142,   142,   143,   142,   145,   146,   144,   144,   147,
-     144,   144,   144,   149,   148,   150,   150,   150,   151,   151,
-     151,   152,   153,   154,   154,   154,   155,   155,   156,   157,
-     157,   157,   157,   158,   158,   159,   159,   160,   160
+     111,   112,   113,   110,   114,   115,   116,   110,   110,   110,
+     110,   110,   110,   117,   118,   118,   119,   119,   120,   121,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     130,   130,   131,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   134,   134,   134,   134,   134,   134,
+     134,   134,   135,   135,   136,   136,   136,   136,   136,   137,
+     136,   138,   136,   139,   136,   136,   136,   136,   136,   140,
+     140,   141,   141,   142,   142,   143,   143,   143,   143,   143,
+     143,   144,   144,   145,   145,   145,   146,   145,   148,   149,
+     147,   147,   150,   147,   147,   147,   152,   151,   153,   153,
+     153,   154,   154,   154,   155,   156,   157,   157,   157,   158,
+     158,   159,   160,   160,   160,   160,   161,   161,   162,   162,
+     163,   163
 };
 
   /* YYR2YYN -- Number of symbols on the right hand side of rule YYN.  */
@@ -1626,21 +1663,22 @@ static const yytype_int8 yyr2[] =
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
        4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
-       0,     0,     0,    14,    12,     8,     2,     3,     7,     6,
-       0,     9,    12,     0,     2,     6,    11,     7,     2,     3,
-       0,     0,     0,     1,     0,     0,     0,     2,     2,     3,
-       1,     1,     1,     1,     1,     1,     3,     1,     2,     1,
-       1,     4,     2,     4,     3,     2,     1,     1,     1,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     2,     3,     3,     3,     3,     2,     2,     4,
-       4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
-       1,     2,     1,     1,     2,     1,     0,     3,     0,     3,
-       0,     3,     4,     2,     4,     2,     1,     3,     1,     3,
-       1,     3,     1,     2,     2,     2,     3,     2,     3,     2,
-       2,     3,     2,     0,     3,     0,     0,     9,     2,     0,
-       7,     8,     6,     0,     3,     0,     1,     3,     0,     1,
-       3,     0,     2,     0,     1,     3,     1,     3,     3,     0,
-       1,     1,     1,     1,     3,     1,     3,     3,     3
+       0,     0,     0,    14,     0,     0,     0,    15,     8,     2,
+       3,     7,     6,     0,     9,    12,     0,     2,     6,    11,
+       7,     2,     3,     0,     0,     0,     1,     0,     0,     0,
+       2,     2,     3,     1,     1,     1,     1,     1,     1,     3,
+       1,     2,     1,     1,     4,     2,     4,     3,     2,     1,
+       1,     1,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     2,     3,     3,     3,     3,
+       2,     2,     4,     4,     4,     6,     4,     6,     4,     6,
+       4,     6,     2,     1,     2,     1,     1,     2,     1,     0,
+       3,     0,     3,     0,     3,     4,     2,     4,     2,     1,
+       3,     1,     3,     1,     3,     1,     2,     2,     2,     3,
+       2,     3,     2,     2,     3,     2,     0,     3,     0,     0,
+       9,     2,     0,     7,     8,     6,     0,     3,     0,     1,
+       3,     0,     1,     3,     0,     2,     0,     1,     3,     1,
+       3,     3,     0,     1,     1,     1,     1,     3,     1,     3,
+       3,     3
 };
 
 
@@ -1914,79 +1952,79 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1918 "engines/director/lingo/lingo-gr.cpp"
+#line 1956 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1924 "engines/director/lingo/lingo-gr.cpp"
+#line 1962 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1930 "engines/director/lingo/lingo-gr.cpp"
+#line 1968 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1936 "engines/director/lingo/lingo-gr.cpp"
+#line 1974 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1942 "engines/director/lingo/lingo-gr.cpp"
+#line 1980 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1948 "engines/director/lingo/lingo-gr.cpp"
+#line 1986 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1954 "engines/director/lingo/lingo-gr.cpp"
+#line 1992 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1960 "engines/director/lingo/lingo-gr.cpp"
+#line 1998 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1966 "engines/director/lingo/lingo-gr.cpp"
+#line 2004 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1972 "engines/director/lingo/lingo-gr.cpp"
+#line 2010 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1978 "engines/director/lingo/lingo-gr.cpp"
+#line 2016 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 33: /* THEOBJECTFIELD  */
 #line 162 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1984 "engines/director/lingo/lingo-gr.cpp"
+#line 2022 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 148: /* on  */
+    case 151: /* on  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1990 "engines/director/lingo/lingo-gr.cpp"
+#line 2028 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2272,7 +2310,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2276 "engines/director/lingo/lingo-gr.cpp"
+#line 2314 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2280,7 +2318,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2284 "engines/director/lingo/lingo-gr.cpp"
+#line 2322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2296,19 +2334,19 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2300 "engines/director/lingo/lingo-gr.cpp"
+#line 2338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 194 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2306 "engines/director/lingo/lingo-gr.cpp"
+#line 2344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 195 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2312 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2319,7 +2357,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2323 "engines/director/lingo/lingo-gr.cpp"
+#line 2361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2331,7 +2369,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2335 "engines/director/lingo/lingo-gr.cpp"
+#line 2373 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2342,7 +2380,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2346 "engines/director/lingo/lingo-gr.cpp"
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2354,7 +2392,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2358 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2365,7 +2403,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2369 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2376,7 +2414,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2380 "engines/director/lingo/lingo-gr.cpp"
+#line 2418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2392,7 +2430,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2434 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2403,7 +2441,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+#line 2445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
@@ -2414,37 +2452,37 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code) + 2);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentScript)[(yyvsp[-1].code)] = start; }
-#line 2418 "engines/director/lingo/lingo-gr.cpp"
+#line 2456 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
 #line 280 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_varpush);
 			  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2425 "engines/director/lingo/lingo-gr.cpp"
+#line 2463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
 #line 283 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_eval);
 			  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2432 "engines/director/lingo/lingo-gr.cpp"
+#line 2470 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
 #line 286 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_le); }
-#line 2438 "engines/director/lingo/lingo-gr.cpp"
+#line 2476 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
 #line 286 "engines/director/lingo/lingo-gr.y"
                                                                                   {
 
-		g_lingo->code1(LC::c_intpush);
-		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[-11].s)->c_str());
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_add);
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-11].s)->c_str());
@@ -2457,28 +2495,54 @@ yyreduce:
 		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
 		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
-#line 2461 "engines/director/lingo/lingo-gr.cpp"
+#line 2499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
-#line 309 "engines/director/lingo/lingo-gr.y"
-                                                                                                       {
-		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
-		WRITE_UINT32(&init, (yyvsp[-9].code) - (yyvsp[-11].code));
-		WRITE_UINT32(&finish, (yyvsp[-4].code) - (yyvsp[-11].code));
-		WRITE_UINT32(&body, (yyvsp[-2].code) - (yyvsp[-11].code));
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-11].code));
-		WRITE_UINT32(&inc, (uint32)-1);
-		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 1] = init;		/* initial count value */
-		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 2] = finish;	/* final count value */
-		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = body;		/* body of loop */
-		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 4] = inc;		/* increment */
-		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 5] = end; }
-#line 2478 "engines/director/lingo/lingo-gr.cpp"
+#line 310 "engines/director/lingo/lingo-gr.y"
+                        { g_lingo->code1(LC::c_varpush);
+			  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
+#line 2506 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
-#line 326 "engines/director/lingo/lingo-gr.y"
+#line 313 "engines/director/lingo/lingo-gr.y"
+                        { g_lingo->code1(LC::c_eval);
+			  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
+#line 2513 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 36:
+#line 316 "engines/director/lingo/lingo-gr.y"
+                        { g_lingo->code1(LC::c_ge); }
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 37:
+#line 316 "engines/director/lingo/lingo-gr.y"
+                                                                                  {
+
+		g_lingo->code1(LC::c_eval);
+		g_lingo->codeString((yyvsp[-12].s)->c_str());
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
+		g_lingo->code1(LC::c_sub);
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString((yyvsp[-12].s)->c_str());
+		g_lingo->code1(LC::c_assign);
+		g_lingo->code2(LC::c_jump, STOP);
+		int pos = g_lingo->_currentScript->size() - 1;
+
+		inst loop = 0, end = 0;
+		WRITE_UINT32(&loop, (yyvsp[-8].code) - pos + 2);
+		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
+		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
+		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
+#line 2542 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 38:
+#line 340 "engines/director/lingo/lingo-gr.y"
                                                                             {
 		inst list = 0, body = 0, end = 0;
 		WRITE_UINT32(&list, (yyvsp[-5].code) - (yyvsp[-7].code));
@@ -2489,54 +2553,54 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2493 "engines/director/lingo/lingo-gr.cpp"
+#line 2557 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 337 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 351 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2500 "engines/director/lingo/lingo-gr.cpp"
+#line 2564 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
-#line 339 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 353 "engines/director/lingo/lingo-gr.y"
                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2510 "engines/director/lingo/lingo-gr.cpp"
+#line 2574 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
-#line 344 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 358 "engines/director/lingo/lingo-gr.y"
                                                           {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2583 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
-#line 348 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 362 "engines/director/lingo/lingo-gr.y"
                                                     {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2528 "engines/director/lingo/lingo-gr.cpp"
+#line 2592 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
-#line 353 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 367 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2536 "engines/director/lingo/lingo-gr.cpp"
+#line 2600 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 357 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 371 "engines/director/lingo/lingo-gr.y"
                                                                                            {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2544,11 +2608,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2548 "engines/director/lingo/lingo-gr.cpp"
+#line 2612 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 364 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 378 "engines/director/lingo/lingo-gr.y"
                                                                                                                   {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-6].code) + 1 - (yyvsp[-9].code) + 1);
@@ -2556,160 +2620,160 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code)); }
-#line 2560 "engines/director/lingo/lingo-gr.cpp"
+#line 2624 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 375 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 389 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2570 "engines/director/lingo/lingo-gr.cpp"
+#line 2634 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 381 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 395 "engines/director/lingo/lingo-gr.y"
                                                                                                              {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code) + 1);
 		(*g_lingo->_currentScript)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code)] = end;	}
-#line 2581 "engines/director/lingo/lingo-gr.cpp"
+#line 2645 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 387 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 401 "engines/director/lingo/lingo-gr.y"
                                                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-4].code) + 1);
 
 		(*g_lingo->_currentScript)[(yyvsp[-4].code)] = end; }
-#line 2591 "engines/director/lingo/lingo-gr.cpp"
+#line 2655 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 393 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 407 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2597 "engines/director/lingo/lingo-gr.cpp"
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 49:
-#line 395 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 409 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2671 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 50:
-#line 401 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 415 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2615 "engines/director/lingo/lingo-gr.cpp"
+#line 2679 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 51:
-#line 405 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 419 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2623 "engines/director/lingo/lingo-gr.cpp"
+#line 2687 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 52:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 423 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2695 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 413 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 427 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2638 "engines/director/lingo/lingo-gr.cpp"
+#line 2702 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 416 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 430 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
+#line 2708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 418 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 432 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2650 "engines/director/lingo/lingo-gr.cpp"
+#line 2714 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 420 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 434 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2656 "engines/director/lingo/lingo-gr.cpp"
+#line 2720 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 59:
-#line 424 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 438 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2666 "engines/director/lingo/lingo-gr.cpp"
+#line 2730 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 444 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2674 "engines/director/lingo/lingo-gr.cpp"
+#line 2738 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 447 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2682 "engines/director/lingo/lingo-gr.cpp"
+#line 2746 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 450 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2691 "engines/director/lingo/lingo-gr.cpp"
+#line 2755 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 440 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 454 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2700 "engines/director/lingo/lingo-gr.cpp"
+#line 2764 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 444 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 458 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2709 "engines/director/lingo/lingo-gr.cpp"
+#line 2773 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 462 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2718,17 +2782,17 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2722 "engines/director/lingo/lingo-gr.cpp"
+#line 2786 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 456 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 470 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2728 "engines/director/lingo/lingo-gr.cpp"
+#line 2792 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 472 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2739,542 +2803,542 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2743 "engines/director/lingo/lingo-gr.cpp"
+#line 2807 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 469 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 483 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2749 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 485 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2757 "engines/director/lingo/lingo-gr.cpp"
+#line 2821 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 488 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2765 "engines/director/lingo/lingo-gr.cpp"
+#line 2829 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 477 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 491 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2773 "engines/director/lingo/lingo-gr.cpp"
+#line 2837 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 480 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 494 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2781 "engines/director/lingo/lingo-gr.cpp"
+#line 2845 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 497 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2856 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 503 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2802 "engines/director/lingo/lingo-gr.cpp"
+#line 2866 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 508 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2813 "engines/director/lingo/lingo-gr.cpp"
+#line 2877 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 515 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2819 "engines/director/lingo/lingo-gr.cpp"
+#line 2883 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 516 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2825 "engines/director/lingo/lingo-gr.cpp"
+#line 2889 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 517 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2831 "engines/director/lingo/lingo-gr.cpp"
+#line 2895 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 518 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 2901 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 519 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2843 "engines/director/lingo/lingo-gr.cpp"
+#line 2907 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 520 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2849 "engines/director/lingo/lingo-gr.cpp"
+#line 2913 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 521 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2855 "engines/director/lingo/lingo-gr.cpp"
+#line 2919 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 522 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2861 "engines/director/lingo/lingo-gr.cpp"
+#line 2925 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 523 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2867 "engines/director/lingo/lingo-gr.cpp"
+#line 2931 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 524 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2873 "engines/director/lingo/lingo-gr.cpp"
+#line 2937 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2879 "engines/director/lingo/lingo-gr.cpp"
+#line 2943 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 526 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2885 "engines/director/lingo/lingo-gr.cpp"
+#line 2949 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 527 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2891 "engines/director/lingo/lingo-gr.cpp"
+#line 2955 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 528 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2897 "engines/director/lingo/lingo-gr.cpp"
+#line 2961 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2903 "engines/director/lingo/lingo-gr.cpp"
+#line 2967 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 530 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2909 "engines/director/lingo/lingo-gr.cpp"
+#line 2973 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 531 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2915 "engines/director/lingo/lingo-gr.cpp"
+#line 2979 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 518 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 532 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2921 "engines/director/lingo/lingo-gr.cpp"
+#line 2985 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 533 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 2927 "engines/director/lingo/lingo-gr.cpp"
+#line 2991 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 534 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2933 "engines/director/lingo/lingo-gr.cpp"
+#line 2997 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 535 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 2939 "engines/director/lingo/lingo-gr.cpp"
+#line 3003 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 536 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2945 "engines/director/lingo/lingo-gr.cpp"
+#line 3009 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 2951 "engines/director/lingo/lingo-gr.cpp"
+#line 3015 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 539 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 2957 "engines/director/lingo/lingo-gr.cpp"
+#line 3021 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 540 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 2963 "engines/director/lingo/lingo-gr.cpp"
+#line 3027 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 541 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 2969 "engines/director/lingo/lingo-gr.cpp"
+#line 3033 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 2975 "engines/director/lingo/lingo-gr.cpp"
+#line 3039 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 543 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 2981 "engines/director/lingo/lingo-gr.cpp"
+#line 3045 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 2987 "engines/director/lingo/lingo-gr.cpp"
+#line 3051 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 545 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 2993 "engines/director/lingo/lingo-gr.cpp"
+#line 3057 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 533 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 547 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 3065 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 538 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 552 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3071 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 541 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_exitRepeat); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3077 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3089 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                                                                  { inNone(); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3095 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 558 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 558 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 3107 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 545 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 559 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 3113 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 545 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 559 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3119 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 546 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 560 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3063 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 549 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 563 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3071 "engines/director/lingo/lingo-gr.cpp"
+#line 3135 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 552 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 566 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3077 "engines/director/lingo/lingo-gr.cpp"
+#line 3141 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 553 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 567 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3147 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 569 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3093 "engines/director/lingo/lingo-gr.cpp"
+#line 3157 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 574 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3103 "engines/director/lingo/lingo-gr.cpp"
+#line 3167 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 580 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3113 "engines/director/lingo/lingo-gr.cpp"
+#line 3177 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 585 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3123 "engines/director/lingo/lingo-gr.cpp"
+#line 3187 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 577 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 591 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3133 "engines/director/lingo/lingo-gr.cpp"
+#line 3197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 582 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 596 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3143 "engines/director/lingo/lingo-gr.cpp"
+#line 3207 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 609 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3149 "engines/director/lingo/lingo-gr.cpp"
+#line 3213 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 610 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3155 "engines/director/lingo/lingo-gr.cpp"
+#line 3219 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 611 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3161 "engines/director/lingo/lingo-gr.cpp"
+#line 3225 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 598 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 612 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3170 "engines/director/lingo/lingo-gr.cpp"
+#line 3234 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 602 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 616 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3179 "engines/director/lingo/lingo-gr.cpp"
+#line 3243 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 606 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3188 "engines/director/lingo/lingo-gr.cpp"
+#line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 628 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3197 "engines/director/lingo/lingo-gr.cpp"
+#line 3261 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 632 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3206 "engines/director/lingo/lingo-gr.cpp"
+#line 3270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 636 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3215 "engines/director/lingo/lingo-gr.cpp"
+#line 3279 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 640 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3221 "engines/director/lingo/lingo-gr.cpp"
+#line 3285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 640 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3230 "engines/director/lingo/lingo-gr.cpp"
+#line 3294 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 656 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 670 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3236 "engines/director/lingo/lingo-gr.cpp"
+#line 3300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 656 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 670 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory.clear(); }
-#line 3242 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 657 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 671 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3252 "engines/director/lingo/lingo-gr.cpp"
+#line 3316 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 676 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3258 "engines/director/lingo/lingo-gr.cpp"
+#line 3322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 677 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3264 "engines/director/lingo/lingo-gr.cpp"
+#line 3328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 678 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3274 "engines/director/lingo/lingo-gr.cpp"
+#line 3338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 669 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 683 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3283,70 +3347,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3287 "engines/director/lingo/lingo-gr.cpp"
+#line 3351 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 691 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3297 "engines/director/lingo/lingo-gr.cpp"
+#line 3361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 683 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 697 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3303 "engines/director/lingo/lingo-gr.cpp"
+#line 3367 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 683 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 697 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3310 "engines/director/lingo/lingo-gr.cpp"
+#line 3374 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 686 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 700 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3316 "engines/director/lingo/lingo-gr.cpp"
+#line 3380 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 687 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 701 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3322 "engines/director/lingo/lingo-gr.cpp"
+#line 3386 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 688 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 702 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3328 "engines/director/lingo/lingo-gr.cpp"
+#line 3392 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 691 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 705 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3334 "engines/director/lingo/lingo-gr.cpp"
+#line 3398 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 692 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 706 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3340 "engines/director/lingo/lingo-gr.cpp"
+#line 3404 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 694 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 708 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); inDef(); }
-#line 3346 "engines/director/lingo/lingo-gr.cpp"
+#line 3410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 696 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 710 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3354,113 +3418,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3358 "engines/director/lingo/lingo-gr.cpp"
+#line 3422 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 704 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 718 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3364 "engines/director/lingo/lingo-gr.cpp"
+#line 3428 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 705 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 719 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3370 "engines/director/lingo/lingo-gr.cpp"
+#line 3434 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 706 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 720 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3376 "engines/director/lingo/lingo-gr.cpp"
+#line 3440 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 708 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 722 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3382 "engines/director/lingo/lingo-gr.cpp"
+#line 3446 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 709 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 723 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3388 "engines/director/lingo/lingo-gr.cpp"
+#line 3452 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 711 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 725 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3394 "engines/director/lingo/lingo-gr.cpp"
+#line 3458 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 713 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 727 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3400 "engines/director/lingo/lingo-gr.cpp"
+#line 3464 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 714 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 728 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3406 "engines/director/lingo/lingo-gr.cpp"
+#line 3470 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 715 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 729 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3412 "engines/director/lingo/lingo-gr.cpp"
+#line 3476 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 716 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 730 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3418 "engines/director/lingo/lingo-gr.cpp"
+#line 3482 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 718 "engines/director/lingo/lingo-gr.y"
+  case 176:
+#line 732 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3424 "engines/director/lingo/lingo-gr.cpp"
+#line 3488 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 719 "engines/director/lingo/lingo-gr.y"
+  case 177:
+#line 733 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3430 "engines/director/lingo/lingo-gr.cpp"
+#line 3494 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175:
-#line 721 "engines/director/lingo/lingo-gr.y"
+  case 178:
+#line 735 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3436 "engines/director/lingo/lingo-gr.cpp"
+#line 3500 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176:
-#line 722 "engines/director/lingo/lingo-gr.y"
+  case 179:
+#line 736 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3442 "engines/director/lingo/lingo-gr.cpp"
+#line 3506 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177:
-#line 724 "engines/director/lingo/lingo-gr.y"
+  case 180:
+#line 738 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3451 "engines/director/lingo/lingo-gr.cpp"
+#line 3515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 178:
-#line 728 "engines/director/lingo/lingo-gr.y"
+  case 181:
+#line 742 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3460 "engines/director/lingo/lingo-gr.cpp"
+#line 3524 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3464 "engines/director/lingo/lingo-gr.cpp"
+#line 3528 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3659,7 +3723,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 734 "engines/director/lingo/lingo-gr.y"
+#line 748 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index ed5ed59e2e..cdc55bb295 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -285,10 +285,10 @@ stmt: stmtoneliner
 			tTO expr[finish]
 			{ g_lingo->code1(LC::c_le); } jumpifz stmtlist tENDREPEAT {
 
-		g_lingo->code1(LC::c_intpush);
-		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_eval);
 		g_lingo->codeString($ID->c_str());
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_add);
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString($ID->c_str());
@@ -306,18 +306,32 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwith tEQ begin[init] expr end tDOWN tTO expr[finish] end stmtlist end[end3] tENDREPEAT {
-		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
-		WRITE_UINT32(&init, $init - $repeatwith);
-		WRITE_UINT32(&finish, $finish - $repeatwith);
-		WRITE_UINT32(&body, $stmtlist - $repeatwith);
-		WRITE_UINT32(&end, $end3 - $repeatwith);
-		WRITE_UINT32(&inc, (uint32)-1);
-		(*g_lingo->_currentScript)[$repeatwith + 1] = init;		/* initial count value */
-		(*g_lingo->_currentScript)[$repeatwith + 2] = finish;	/* final count value */
-		(*g_lingo->_currentScript)[$repeatwith + 3] = body;		/* body of loop */
-		(*g_lingo->_currentScript)[$repeatwith + 4] = inc;		/* increment */
-		(*g_lingo->_currentScript)[$repeatwith + 5] = end; }	/* end, if cond fails */
+	| tREPEAT tWITH ID tEQ expr[init]
+			{ g_lingo->code1(LC::c_varpush);
+			  g_lingo->codeString($ID->c_str()); }
+		varassign
+			{ g_lingo->code1(LC::c_eval);
+			  g_lingo->codeString($ID->c_str()); }
+			tDOWN tTO expr[finish]
+			{ g_lingo->code1(LC::c_ge); } jumpifz stmtlist tENDREPEAT {
+
+		g_lingo->code1(LC::c_eval);
+		g_lingo->codeString($ID->c_str());
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
+		g_lingo->code1(LC::c_sub);
+		g_lingo->code1(LC::c_varpush);
+		g_lingo->codeString($ID->c_str());
+		g_lingo->code1(LC::c_assign);
+		g_lingo->code2(LC::c_jump, STOP);
+		int pos = g_lingo->_currentScript->size() - 1;
+
+		inst loop = 0, end = 0;
+		WRITE_UINT32(&loop, $varassign - pos + 2);
+		WRITE_UINT32(&end, pos - $jumpifz + 2);
+		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
+		(*g_lingo->_currentScript)[$jumpifz] = end;	}	/* end, if cond fails */
+
 
 	// repeat with index in list
 	//   statements




More information about the Scummvm-git-logs mailing list