[Scummvm-git-logs] scummvm master -> 9153ec4f52b628b062c2a92fb4035c8ef3c5f664

sev- noreply at scummvm.org
Wed Jul 19 11:05:40 UTC 2023


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

Summary:
9153ec4f52 DIRECTOR: Support "me(blah 1, 2)" syntax, e.g. no comma after the method name


Commit: 9153ec4f52b628b062c2a92fb4035c8ef3c5f664
    https://github.com/scummvm/scummvm/commit/9153ec4f52b628b062c2a92fb4035c8ef3c5f664
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-07-19T13:05:31+02:00

Commit Message:
DIRECTOR: Support "me(blah 1, 2)" syntax, e.g. no comma after the method name

This is used in totaldistortion-win

   --start-movie="ATD\HD\bdDREAML.DXR"

When the bulb explodes, the Lingo tries to execute a constructed
   do("me(bubdie2 5, 75)")

which then leads to syntax error.

The original allowed this broken Lingo syntax

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 5f4fb7b7a57..b9502d4707d 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -650,16 +650,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  191
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   4561
+#define YYLAST   4608
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  105
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  65
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  332
+#define YYNRULES  333
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  617
+#define YYNSTATES  621
 
 /* YYMAXUTOK -- Last valid token kind.  */
 #define YYMAXUTOK   345
@@ -730,27 +730,27 @@ static const yytype_int16 yyrline[] =
      376,   379,   383,   393,   394,   397,   398,   399,   400,   401,
      402,   405,   406,   407,   410,   411,   412,   413,   414,   415,
      416,   417,   422,   423,   424,   425,   426,   427,   430,   433,
-     438,   442,   448,   453,   456,   461,   467,   467,   473,   478,
-     484,   490,   496,   504,   505,   506,   507,   510,   510,   512,
-     513,   514,   517,   521,   525,   531,   535,   539,   543,   544,
-     546,   548,   550,   552,   556,   560,   564,   566,   567,   571,
-     577,   584,   585,   588,   589,   593,   599,   606,   607,   613,
-     614,   615,   616,   617,   618,   619,   620,   621,   622,   623,
-     624,   625,   628,   630,   631,   634,   635,   638,   639,   640,
-     642,   644,   646,   648,   650,   652,   654,   656,   659,   660,
-     661,   662,   665,   666,   669,   674,   677,   682,   688,   689,
-     690,   691,   692,   695,   696,   697,   698,   699,   702,   704,
-     705,   706,   707,   708,   709,   710,   711,   712,   713,   717,
-     718,   719,   720,   721,   722,   723,   724,   727,   727,   729,
-     730,   733,   734,   735,   736,   737,   740,   741,   742,   748,
-     752,   755,   760,   761,   762,   763,   764,   767,   768,   771,
-     772,   776,   777,   778,   779,   780,   781,   782,   783,   784,
-     785,   786,   787,   788,   789,   790,   791,   792,   793,   794,
-     801,   802,   803,   804,   805,   806,   807,   808,   809,   810,
-     811,   812,   813,   814,   815,   816,   817,   818,   819,   822,
-     823,   824,   825,   826,   827,   828,   829,   830,   831,   832,
-     833,   834,   835,   836,   837,   838,   839,   842,   843,   846,
-     847,   850,   854
+     438,   442,   448,   453,   456,   461,   465,   471,   471,   477,
+     482,   488,   494,   500,   508,   509,   510,   511,   514,   514,
+     516,   517,   518,   521,   525,   529,   535,   539,   543,   547,
+     548,   550,   552,   554,   556,   560,   564,   568,   570,   571,
+     575,   581,   588,   589,   592,   593,   597,   603,   610,   611,
+     617,   618,   619,   620,   621,   622,   623,   624,   625,   626,
+     627,   628,   629,   632,   634,   635,   638,   639,   642,   643,
+     644,   646,   648,   650,   652,   654,   656,   658,   660,   663,
+     664,   665,   666,   669,   670,   673,   678,   681,   686,   692,
+     693,   694,   695,   696,   699,   700,   701,   702,   703,   706,
+     708,   709,   710,   711,   712,   713,   714,   715,   716,   717,
+     721,   722,   723,   724,   725,   726,   727,   728,   731,   731,
+     733,   734,   737,   738,   739,   740,   741,   744,   745,   746,
+     752,   756,   759,   764,   765,   766,   767,   768,   771,   772,
+     775,   776,   780,   781,   782,   783,   784,   785,   786,   787,
+     788,   789,   790,   791,   792,   793,   794,   795,   796,   797,
+     798,   805,   806,   807,   808,   809,   810,   811,   812,   813,
+     814,   815,   816,   817,   818,   819,   820,   821,   822,   823,
+     826,   827,   828,   829,   830,   831,   832,   833,   834,   835,
+     836,   837,   838,   839,   840,   841,   842,   843,   846,   847,
+     850,   851,   854,   858
 };
 #endif
 
@@ -800,7 +800,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
 }
 #endif
 
-#define YYPACT_NINF (-534)
+#define YYPACT_NINF (-533)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -814,68 +814,69 @@ yysymbol_name (yysymbol_kind_t yysymbol)
    STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    3047,  -534,  3547,  -534,  -534,  -534,  -534,    32,  -534,   -13,
-    -534,  3547,  1962,    32,  2061,  -534,  -534,  3547,  -534,   -10,
-    -534,  -534,  2160,    92,  3629,  -534,   -66,  -534,  -534,  3547,
-    2160,  1962,  3547,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,  -534,  -534,  -534,  2061,  3547,  3547,   -64,
-    3874,  -534,    52,  3047,  -534,  -534,  -534,  -534,  2160,  -534,
-    -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,   -53,  -534,  -534,  2259,  2259,  2061,  2061,
-    2061,  2061,   -15,   -37,    -8,  -534,  -534,    -3,    -7,  -534,
-    -534,  -534,  -534,  2259,  2259,  2259,  2259,  2061,  2061,  2358,
-    2061,  2061,  2061,  2061,  3711,  2061,  2358,  2358,  1467,   772,
-      16,    35,    40,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,   873,  -534,    42,  2061,  4069,  3547,    51,
-      54,   972,  3547,  2061,  3547,  -534,  -534,    -5,  -534,  -534,
-      59,    61,  1071,    68,    70,    77,  4035,    86,  3547,  -534,
-    -534,  -534,  -534,    88,  1170,  -534,  3547,  1566,  -534,  -534,
-    -534,   440,   597,   667,  3923,   121,  -534,  -534,  -534,  3547,
-    -534,  -534,  1269,  4382,  -534,   -20,    -9,     7,    12,    29,
-     121,   102,   159,  4369,  -534,  -534,  -534,  4092,    84,    85,
-     100,   104,    87,   -73,   -35,  -534,  4382,   103,   110,  1665,
-    -534,  -534,   184,  2061,  2061,  2061,  2061,  2754,  2754,  2952,
-    2061,  2853,  2853,  2061,  2061,  2061,  2061,  2061,  2061,  2061,
-    2061,  -534,  -534,  4185,  -534,  -534,  4125,  3129,  2061,  2061,
-    2061,  2061,  2061,   125,  -534,  -534,  3793,  3793,  3793,    21,
-    4198,   196,  -534,  -534,  2061,     8,  -534,  2061,  -534,  -534,
-    -534,  3874,  3211,  -534,   127,  -534,  -534,  -534,  4105,  2358,
-    2061,  2358,  2061,  2358,  2061,  2358,  2061,  -534,  -534,  -534,
-    -534,    34,  -534,   201,  4438,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,  -534,  -534,  -534,  1368,  2457,  2358,  2358,  1764,
-    -534,  2061,  2061,  2061,  2061,  -534,  2061,  2556,  -534,  -534,
-    2061,  -534,   130,  2061,    30,    30,    30,    30,   120,   120,
-    -534,    14,    30,    30,    30,    30,    14,     4,     4,  -534,
-    -534,   130,  2061,  2061,  2061,  2061,  2061,  2061,  2061,  2061,
-    2061,  2061,  2061,  2061,  2061,  2061,  2061,  2061,  2061,  2061,
-    -534,  3457,   216,  3211,   -15,  -534,   135,  -534,   136,   137,
-    2061,  2061,  3211,  2655,  4211,  3547,  3547,  -534,  -534,  -534,
-       8,  -534,  4268,  -534,  -534,  -534,   147,  3211,  -534,  3211,
-    1863,  -534,   463,  -534,  3943,  -534,  3956,  -534,  3979,  -534,
-    -534,  2358,  2061,    34,    34,    34,    34,  2358,  -534,  2358,
-      34,  -534,  -534,  2358,  2358,  -534,  -534,  -534,  -534,  -534,
-    -534,  -534,   130,  4382,  4382,  4382,  4382,  4382,  -534,  4382,
-    4382,  2061,   157,  4382,  -534,    30,    30,    30,    30,   120,
-     120,  -534,    14,    30,    30,    30,    30,    14,     4,     4,
-    -534,  -534,   130,  -534,  -534,    -1,  3457,  -534,  3293,  -534,
-    -534,  -534,  -534,  4281,   527,   171,  2061,  2061,  2061,  2061,
-    -534,  -534,  -534,    45,  3547,  -534,  -534,   162,  -534,   252,
-    -534,   130,  2358,  2358,  2358,  2358,  -534,  4382,  2358,  2358,
-    2358,  2358,  -534,   241,   200,  -534,  -534,   170,  -534,  -534,
-    3375,   177,  -534,  -534,  3457,  -534,  3211,   242,  2061,   179,
-    -534,  4451,  -534,  4013,  4451,  4451,  -534,   181,  -534,  3547,
-     182,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,   210,
-    2358,  -534,  -534,  3457,  -534,  -534,   195,   202,  2061,  4294,
-    -534,  2061,  2061,  2061,  2061,  2061,  2061,  2061,  2061,  2061,
-    2061,  2061,  2061,  2061,  2061,  2061,  2061,   214,  3211,    47,
-    -534,  2358,   195,  -534,   197,  4351,  3211,    99,    99,    99,
-    4464,  4464,  -534,   106,    99,    99,    99,    99,   106,    22,
-      22,  -534,  -534,  2061,  -534,  -534,  -534,  -534,  -534,  3211,
-     205,  4451,   209,   203,   204,  -534,  -534
+    3053,  -533,  3553,  -533,  -533,  -533,  -533,    32,  -533,   -19,
+    -533,  3553,  1968,    32,  2067,  -533,  -533,  3553,  -533,   -17,
+    -533,  -533,  2166,    58,  3635,  -533,   -75,  -533,  -533,  3553,
+    2166,  1968,  3553,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,  -533,  -533,  -533,  2067,  3553,  3553,   -64,
+    3880,  -533,    46,  3053,  -533,  -533,  -533,  -533,  2166,  -533,
+    -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,    12,  -533,  -533,  2265,  2265,  2067,  2067,
+    2067,  2067,   -37,   -43,   -40,  -533,  -533,   -10,   -38,  -533,
+    -533,  -533,  -533,  2265,  2265,  2265,  2265,  2067,  2067,  2364,
+    2067,  2067,  2067,  2067,  3717,  2067,  2364,  2364,  1473,   778,
+      -8,    28,    42,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,   879,  -533,    67,  2067,  4112,  3553,    71,
+      78,   978,  3553,  2067,  3553,  -533,  -533,     3,  -533,  -533,
+      82,    84,  1077,    91,    92,    96,  4055,    97,  3553,  -533,
+    -533,  -533,  -533,    98,  1176,  -533,  3553,  1572,  -533,  -533,
+    -533,   443,   601,   671,  3929,   109,  -533,  -533,  -533,  3553,
+    -533,  -533,  1275,  4425,  -533,   -23,    29,    57,    86,    95,
+     109,    53,    73,  4399,  -533,  -533,  2067,  -533,  4076,    89,
+      94,   100,   102,    99,   -56,   -28,  -533,  4425,   104,   101,
+    1671,  -533,  -533,   173,  2067,  2067,  2067,  2067,  2760,  2760,
+    2958,  2067,  2859,  2859,  2067,  2067,  2067,  2067,  2067,  2067,
+    2067,  2067,  -533,  -533,  4196,  -533,  -533,  4168,  3135,  2067,
+    2067,  2067,  2067,  2067,   110,  -533,  -533,  3799,  3799,  3799,
+       6,  4228,   181,  -533,  -533,  2067,    -2,  -533,  2067,  -533,
+    -533,  -533,  3880,  3217,  -533,   112,  -533,  -533,  -533,  4136,
+    2364,  2067,  2364,  2067,  2364,  2067,  2364,  2067,  -533,  -533,
+    -533,  -533,   115,  -533,   185,  4455,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,  -533,  -533,  -533,  1374,  2463,  2364,  2364,
+     113,  1770,  -533,  2067,  2067,  2067,  2067,  -533,  2067,  2562,
+    -533,  -533,  2067,  -533,   113,  2067,   -31,   -31,   -31,   -31,
+    4481,  4481,  -533,    33,   -31,   -31,   -31,   -31,    33,    20,
+      20,  -533,  -533,   113,  2067,  2067,  2067,  2067,  2067,  2067,
+    2067,  2067,  2067,  2067,  2067,  2067,  2067,  2067,  2067,  2067,
+    2067,  2067,  -533,  3463,   197,  3217,   -37,  -533,   116,  -533,
+     117,   118,  2067,  2067,  3217,  2661,  4254,  3553,  3553,  -533,
+    -533,  -533,    -2,  -533,  4285,  -533,  -533,  -533,   128,  3217,
+    -533,  3217,  1869,  -533,  3949,  -533,  3962,  -533,  3985,  -533,
+    4019,  -533,  -533,  2364,  2067,   115,   115,   115,   115,  2364,
+    -533,  2364,   115,  -533,  -533,  2364,  2364,  -533,  -533,  -533,
+    -533,  -533,  -533,  2067,   119,  -533,   113,  4425,  4425,  4425,
+    4425,  4425,  -533,  4425,  4425,   120,  4425,  -533,   -31,   -31,
+     -31,   -31,  4481,  4481,  -533,    33,   -31,   -31,   -31,   -31,
+      33,    20,    20,  -533,  -533,   113,  -533,  -533,    -1,  3463,
+    -533,  3299,  -533,  -533,  -533,  -533,  4311,   531,   131,  2067,
+    2067,  2067,  2067,  -533,  -533,  -533,    25,  3553,  -533,  -533,
+     124,  -533,   214,  -533,   113,  2364,  2364,  2364,  2364,  -533,
+    4425,  2364,  2364,  2364,  2364,  -533,   196,   155,  -533,  -533,
+    -533,   127,  -533,  -533,  3381,   133,  -533,  -533,  3463,  -533,
+    3217,   195,  2067,   134,  -533,   350,  -533,  4041,   350,   350,
+    -533,   135,  -533,  3553,   136,  -533,  -533,  -533,  -533,  -533,
+    -533,  -533,  -533,   164,  2364,  -533,  -533,  3463,  -533,  -533,
+     149,   172,  2067,  4342,  -533,  2067,  2067,  2067,  2067,  2067,
+    2067,  2067,  2067,  2067,  2067,  2067,  2067,  2067,  2067,  2067,
+    2067,   191,  3217,    75,  -533,  2364,   149,  -533,   178,  4368,
+    3217,    51,    51,    51,  4511,  4511,  -533,    55,    51,    51,
+      51,    51,    55,    60,    60,  -533,  -533,  2067,  -533,  -533,
+    -533,  -533,  -533,  3217,   182,   350,   183,   179,   180,  -533,
+    -533
 };
 
 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -895,80 +896,81 @@ static const yytype_int16 yydefact[] =
       81,    38,    80,    82,    84,    85,    42,    86,    88,    57,
       94,    63,    95,    97,    83,    91,    92,    87,    96,    93,
       90,    89,    65,     0,    79,    24,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   124,   101,     0,    99,   179,
-     180,   182,   181,    33,    40,    64,    74,    41,    56,    58,
-      34,    46,    49,    77,    70,    68,     0,     0,     0,   329,
-     192,     0,     0,   269,   187,   188,   189,   190,   221,   222,
-     191,   270,   271,   136,   272,     0,     0,     0,    98,     0,
-       0,   136,     0,     0,    70,   192,   195,     0,   196,   166,
-       0,     0,   136,     0,     0,     0,     0,     0,    98,   104,
-     127,     1,     4,     0,   136,    10,     0,     0,   198,   214,
-     197,     0,     0,     0,     0,     0,   125,   123,   149,   100,
-     212,   213,   138,   139,   183,    27,    28,    29,    51,    66,
-      48,    59,   218,     0,   267,   268,   133,     0,   179,   180,
-     182,   181,     0,   192,     0,   259,   331,     0,   330,     0,
-     116,   117,    60,     0,     0,     0,     0,    31,    61,    55,
-       0,    36,    69,     0,     0,     0,     0,     0,     0,     0,
-     137,   129,   290,   136,   291,   126,     0,     0,     0,     0,
-       0,     0,     0,     0,   122,   115,    45,    30,    32,     0,
-       0,   249,   147,   148,     0,    14,   120,    75,   118,   119,
-     151,     0,   167,   150,     0,   114,    25,   215,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   208,   210,   211,
-     209,     0,   102,    60,   142,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,     0,     0,     0,     0,     0,
-     186,     0,     0,     0,     0,   257,     0,     0,   258,   256,
-       0,   184,   136,     0,   282,   283,   280,   281,   284,   285,
-     277,   287,   288,   289,   279,   278,   286,   273,   274,   275,
-     276,   136,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   137,
-     131,   173,   152,   167,    70,   193,     0,   194,     0,     0,
-       0,     0,   167,     0,     0,    23,     0,    18,    19,    12,
-      15,    16,     0,   164,   171,   172,     0,   168,   169,   167,
-       0,   199,     0,   203,     0,   205,     0,   201,     0,   247,
-     248,     0,     0,    35,    47,    50,    78,    52,   244,    53,
-      54,   245,   246,    67,    68,   220,   224,   223,   219,   327,
-     328,   134,   136,   265,   266,   264,   262,   263,   260,   261,
-     332,   137,     0,   141,   130,   301,   302,   299,   300,   303,
-     304,   296,   306,   307,   308,   298,   297,   305,   292,   293,
-     294,   295,   136,   177,   178,   158,   174,   175,     0,    11,
-     143,   144,   145,     0,     0,     0,    52,    53,    67,    68,
-     250,   251,   146,     0,    98,    17,   121,     0,   170,    22,
-     216,   136,     0,     0,     0,     0,   207,   140,     0,     0,
-       0,     0,   228,     0,     0,   226,   227,     0,   185,   132,
-       0,     0,   153,   176,   173,   154,   167,     0,     0,     0,
-     309,   252,   310,     0,   254,   255,    20,     0,   165,    23,
-       0,   200,   204,   206,   202,   239,   241,   242,   240,     0,
-       0,   243,   135,   173,   156,   159,   158,     0,     0,     0,
-     160,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   167,     0,
-     217,     0,   158,   155,     0,     0,   167,   319,   320,   318,
-     321,   322,   315,   324,   325,   326,   317,   316,   323,   311,
-     312,   313,   314,     0,    13,    21,   225,   157,   163,   167,
-       0,   253,     0,     0,     0,   161,   162
+       0,     0,     0,     0,     0,   124,   101,     0,    99,   180,
+     181,   183,   182,    33,    40,    64,    74,    41,    56,    58,
+      34,    46,    49,    77,    70,    68,     0,     0,     0,   330,
+     193,     0,     0,   270,   188,   189,   190,   191,   222,   223,
+     192,   271,   272,   137,   273,     0,     0,     0,    98,     0,
+       0,   137,     0,     0,    70,   193,   196,     0,   197,   167,
+       0,     0,   137,     0,     0,     0,     0,     0,    98,   104,
+     127,     1,     4,     0,   137,    10,     0,     0,   199,   215,
+     198,     0,     0,     0,     0,     0,   125,   123,   150,   100,
+     213,   214,   139,   140,   184,    27,    28,    29,    51,    66,
+      48,    59,   219,     0,   268,   269,    26,   133,     0,   180,
+     181,   183,   182,     0,   193,     0,   260,   332,     0,   331,
+       0,   116,   117,    60,     0,     0,     0,     0,    31,    61,
+      55,     0,    36,    69,     0,     0,     0,     0,     0,     0,
+       0,   138,   129,   291,   137,   292,   126,     0,     0,     0,
+       0,     0,     0,     0,     0,   122,   115,    45,    30,    32,
+       0,     0,   250,   148,   149,     0,    14,   120,    75,   118,
+     119,   152,     0,   168,   151,     0,   114,    25,   216,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   209,   211,
+     212,   210,     0,   102,    60,   143,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,     0,     0,     0,     0,
+     137,     0,   187,     0,     0,     0,     0,   258,     0,     0,
+     259,   257,     0,   185,   137,     0,   283,   284,   281,   282,
+     285,   286,   278,   288,   289,   290,   280,   279,   287,   274,
+     275,   276,   277,   137,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   138,   131,   174,   153,   168,    70,   194,     0,   195,
+       0,     0,     0,     0,   168,     0,     0,    23,     0,    18,
+      19,    12,    15,    16,     0,   165,   172,   173,     0,   169,
+     170,   168,     0,   200,     0,   204,     0,   206,     0,   202,
+       0,   248,   249,     0,     0,    35,    47,    50,    78,    52,
+     245,    53,    54,   246,   247,    67,    68,   221,   225,   224,
+     220,   328,   329,   138,     0,   134,   137,   266,   267,   265,
+     263,   264,   261,   262,   333,     0,   142,   130,   302,   303,
+     300,   301,   304,   305,   297,   307,   308,   309,   299,   298,
+     306,   293,   294,   295,   296,   137,   178,   179,   159,   175,
+     176,     0,    11,   144,   145,   146,     0,     0,     0,    52,
+      53,    67,    68,   251,   252,   147,     0,    98,    17,   121,
+       0,   171,    22,   217,   137,     0,     0,     0,     0,   208,
+     141,     0,     0,     0,     0,   229,     0,     0,   227,   228,
+     136,     0,   186,   132,     0,     0,   154,   177,   174,   155,
+     168,     0,     0,     0,   310,   253,   311,     0,   255,   256,
+      20,     0,   166,    23,     0,   201,   205,   207,   203,   240,
+     242,   243,   241,     0,     0,   244,   135,   174,   157,   160,
+     159,     0,     0,     0,   161,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   168,     0,   218,     0,   159,   156,     0,     0,
+     168,   320,   321,   319,   322,   323,   316,   325,   326,   327,
+     318,   317,   324,   312,   313,   314,   315,     0,    13,    21,
+     226,   158,   164,   168,     0,   254,     0,     0,     0,   162,
+     163
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -534,  -534,  -534,   226,  -534,  -534,  -534,  -534,  -534,   -97,
-    -534,  -383,     0,     9,   -27,  -534,     1,  -374,   -60,  -534,
-       6,  -244,   273,  -534,  -534,  -534,  -534,  -534,  -533,  -534,
-    -534,  -534,  -379,  -534,   -98,  -502,  -534,  -166,  -116,   -22,
-    -107,  -534,    -4,  -534,  -534,   -14,  -534,   -12,  -202,  -534,
-    -534,  -204,  -534,  -534,  -534,  -534,   -24,  -534,   172,    -6,
-     105,  -139,  -113,  -534,  -225
+    -533,  -533,  -533,   189,  -533,  -533,  -533,  -533,  -533,  -130,
+    -533,  -384,     0,     9,   -27,  -533,     1,  -373,   -66,  -533,
+       5,  -245,   249,  -533,  -533,  -533,  -533,  -533,  -532,  -533,
+    -533,  -533,  -355,  -533,  -128,  -506,  -533,  -196,  -104,   -22,
+    -100,  -533,    -4,  -533,  -533,   -15,  -533,   -42,  -233,  -533,
+    -533,  -240,  -533,  -533,  -533,  -533,   -50,  -533,   174,    -6,
+      88,   -58,  -114,  -533,  -209
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-       0,    72,    73,    74,    75,    76,   398,   399,   400,   401,
-      77,   113,   114,   150,   127,   128,   405,    80,    81,    82,
-     151,   261,   152,    83,   284,    84,    85,    86,   522,    87,
-      88,    89,   406,   407,   408,   475,   476,   477,   153,   154,
-     386,   177,   155,   311,   156,   198,   157,   435,   436,   158,
-     159,   421,   178,   490,   160,   234,   235,   161,   162,   236,
-     263,   531,   164,   237,   238
+       0,    72,    73,    74,    75,    76,   400,   401,   402,   403,
+      77,   113,   114,   150,   127,   128,   407,    80,    81,    82,
+     151,   262,   152,    83,   285,    84,    85,    86,   526,    87,
+      88,    89,   408,   409,   410,   478,   479,   480,   153,   154,
+     388,   177,   155,   312,   156,   198,   157,   437,   438,   158,
+     159,   423,   178,   493,   160,   235,   236,   161,   162,   237,
+     264,   535,   164,   238,   239
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -976,193 +978,154 @@ static const yytype_int16 yydefgoto[] =
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      78,    79,   176,   123,   479,   185,   163,   474,   167,   165,
-     190,   115,   493,   485,   342,   520,   171,   395,   124,   380,
-     126,   169,   556,   583,   182,   163,   168,   239,   170,   282,
-     499,   336,   179,   175,   189,   361,   181,   183,   180,   283,
-     187,   126,   116,   117,   390,   195,   196,   262,   315,   607,
-     264,   582,   191,   270,   205,   262,   316,   419,   264,   317,
-     186,   206,   420,   270,   337,   391,   262,   318,   338,   264,
-      78,   566,   194,    78,    79,   319,   126,   188,   262,   270,
-     321,   264,   250,   320,   193,   125,   521,   118,   322,   119,
-     207,   120,   209,   121,   396,   208,   262,   323,   452,   264,
-     258,   259,   474,   200,   442,   324,   397,   122,   256,   257,
-     258,   259,   201,   202,   203,   204,   239,   454,   575,   576,
-     200,   210,   211,   255,   256,   257,   258,   259,   172,   173,
-     325,   212,   213,   240,   201,   202,   203,   204,   241,   223,
-     265,   273,   227,   536,   196,   605,   196,   557,   566,   274,
-     474,   567,   275,   222,   472,   566,   579,   285,   233,   286,
-     266,   294,   243,   244,   245,   246,   288,   280,   289,   270,
-     388,   389,   250,   271,   272,   290,   307,   126,   308,   474,
-     309,   279,   310,   281,   293,   501,   295,   326,   331,   332,
-     335,   298,   572,   573,   574,   575,   576,   126,   517,   604,
-     573,   574,   575,   576,   333,   296,   339,   610,   334,   340,
-     343,   253,   254,   255,   256,   257,   258,   259,   312,   508,
-     509,   510,   511,   383,   393,   409,   514,   422,   519,   451,
-     612,   403,   478,   480,   481,   482,   497,   344,   345,   346,
-     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
-     357,   358,   359,   360,   385,   385,   385,   540,   518,   529,
-     538,   539,   348,   349,   350,   352,   353,    78,   382,   549,
-     550,   552,   387,   387,   387,   555,   558,   560,   394,   578,
-     581,   402,   521,   580,   603,   175,   175,   175,   199,   199,
-     584,    78,    78,   613,   412,   608,   414,   614,   416,   192,
-     418,   615,   616,   495,   184,   199,   199,   199,   199,   498,
-     523,   214,   551,   448,   438,     0,     0,   314,   224,   225,
-       0,     0,     0,     0,     0,   443,   444,   445,   446,     0,
-     447,   449,     0,     0,   450,     0,     0,   453,     0,     0,
-       0,     0,     0,     0,     0,     0,   233,     0,   533,   534,
-     535,     0,     0,     0,     0,     0,   455,   456,   457,   458,
-     459,   460,   461,   462,   463,   464,   465,   466,   467,   468,
-     469,   470,   471,   532,   532,   532,   532,     0,     0,     0,
-       0,    78,     0,    78,   483,   484,     0,     0,     0,     0,
-       0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   115,   494,     0,    78,     0,    78,
-       0,     0,     0,     0,     0,     0,   507,     0,     0,     0,
-       0,     0,   587,   588,   589,   590,   591,   592,   593,   594,
-     595,   596,   597,   598,   599,   600,   601,   602,     0,     0,
-       0,     0,     0,     0,     0,   450,     0,     0,   532,   532,
-     532,   532,   532,   532,   532,   532,   532,   532,   532,   532,
-     532,   532,   532,   532,   611,     0,     0,   537,   299,     0,
-       0,   411,     0,   413,   300,   415,    78,   417,    78,   525,
-       0,     0,   243,   244,   245,   246,   268,   269,     0,   270,
-     532,   502,   250,   271,   272,     0,     0,   437,   437,   439,
-     440,     0,     0,   126,     0,   243,   244,   245,   246,   268,
-     269,     0,   270,     0,     0,   250,   271,   272,     0,     0,
-      78,   554,   559,     0,    78,     0,    78,     0,     0,     0,
-       0,   253,   254,   255,   256,   257,   258,   259,     0,     0,
-       0,     0,   527,     0,     0,     0,     0,     0,   115,     0,
-       0,     0,   585,    78,   253,   254,   255,   256,   257,   258,
-     259,   528,     0,     0,     0,   491,     0,     0,     0,   243,
-     244,   245,   246,   268,   269,     0,   270,     0,    78,   250,
-     271,   272,     0,     0,     0,     0,    78,     0,     0,     0,
-       0,     0,     0,   506,     0,     0,     0,     0,     0,   512,
-       0,   513,     0,     0,     0,   515,   516,     0,     0,    78,
-       0,     0,     0,     0,     0,     0,     0,     0,   253,   254,
-     255,   256,   257,   258,   259,   301,     0,     0,     0,     0,
-       0,   302,     0,     0,     0,     0,     0,     0,     0,   243,
-     244,   245,   246,   268,   269,     0,   270,     0,     0,   250,
-     271,   272,     0,     0,     0,     0,     0,     0,   530,   530,
-     530,   530,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   541,   542,   543,   544,     0,     0,
-     545,   546,   547,   548,     0,     0,     0,     0,   253,   254,
-     255,   256,   257,   258,   259,   303,     0,     0,     0,     0,
-       0,   304,     0,     0,     0,     0,     0,     0,     0,   243,
-     244,   245,   246,   268,   269,     0,   270,     0,     0,   250,
-     271,   272,   512,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   530,   530,   530,   530,   530,   530,   530,
-     530,   530,   530,   530,   530,   530,   530,   530,   530,     0,
-       0,     0,     0,   606,     0,     0,     0,     0,   253,   254,
-     255,   256,   257,   258,   259,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   530,   228,   229,     1,   230,
-     231,    90,   133,   134,   135,   136,    91,     8,    92,    93,
-      10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
-      20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
-     104,   105,   106,   107,     0,     0,     0,     0,    33,    34,
-     139,    36,    37,    38,     0,    39,    40,   140,    42,   141,
-      44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,     0,    57,    58,    59,   144,    61,     0,
-       0,    62,   145,    64,    65,   108,   109,   110,   111,     0,
-       0,     0,   112,     0,     0,     0,   146,   147,     0,     0,
-       0,     0,   166,     0,   149,     0,   232,   129,   130,     1,
-     131,   132,    90,   133,   134,   135,   136,    91,     8,    92,
-      93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
-      99,   242,    21,   100,   101,   102,   103,    25,     0,    27,
-      28,   104,   105,   106,   107,   243,   244,   245,   246,   247,
-     248,   139,   249,    37,    38,   250,   251,   252,   140,    42,
-     141,    44,   142,    46,   143,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,     0,    57,    58,    59,   144,    61,
-       0,     0,    62,   145,    64,    65,   108,   109,   110,   111,
-       0,     0,     0,   112,   253,   254,   255,   256,   257,   258,
-     259,     0,   260,   166,     0,   149,   129,   130,     1,   131,
-     132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
-      10,    94,    95,    96,    97,    15,   276,    98,    18,    99,
-      20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
-     104,   105,   106,   107,   243,   244,   245,   246,   247,   248,
-     139,   249,   277,   278,   250,   251,   252,   140,    42,   141,
-      44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,     0,    57,    58,    59,   144,    61,     0,
-       0,    62,   145,    64,    65,   108,   109,   110,   111,     0,
-       0,     0,   112,   253,   254,   255,   256,   257,   258,   259,
-       0,   260,   166,     0,   149,   129,   130,     1,   131,   132,
-      90,   133,   134,   135,   136,    91,     8,    92,    93,    10,
-      94,    95,    96,    97,    15,    16,    98,    18,    99,    20,
-      21,   100,   101,   102,   103,    25,     0,   287,    28,   104,
-     105,   106,   107,   243,   244,   245,   246,   247,   248,   139,
-     249,    37,    38,   250,   251,   252,   140,    42,   141,    44,
-     142,    46,   143,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,     0,    57,    58,    59,   144,    61,     0,     0,
-      62,   145,    64,    65,   108,   109,   110,   111,     0,     0,
-       0,   112,   253,   254,   255,   256,   257,   258,   259,     0,
-     260,   166,     0,   149,   129,   130,     1,   131,   132,    90,
-     133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
-      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
-     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
-     106,   107,   243,   244,   245,   246,   247,   248,   139,   249,
-      37,    38,   250,   251,   252,   140,    42,   141,    44,   142,
-      46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,     0,    57,    58,    59,   144,    61,     0,     0,    62,
-     145,    64,    65,   108,   109,   110,   111,     0,     0,     0,
-     112,   253,   254,   255,   256,   257,   258,   259,     0,   260,
-     166,     0,   149,   129,   130,     1,   131,   132,    90,   133,
+      78,    79,   176,   123,   190,   185,   163,   397,   167,   165,
+     477,   115,   124,   496,   169,   524,   171,   330,   271,   382,
+     126,   251,   560,   179,   182,   163,   168,   170,   587,   392,
+     482,   344,   205,   175,   189,   181,   183,   283,   180,   488,
+     187,   126,   116,   117,   240,   316,   191,   284,   338,   265,
+     393,   586,   363,   317,   611,   206,   502,   265,   207,   263,
+     186,   209,   256,   257,   258,   259,   260,   263,   265,   271,
+      78,   339,   194,    78,    79,   340,   126,   188,   263,   125,
+     265,   326,   271,   193,   398,   444,   525,   118,   208,   119,
+     263,   120,   240,   121,   172,   173,   399,   318,   265,   455,
+     570,   327,   200,   571,   570,   319,   477,   122,   263,   570,
+     195,   196,   201,   202,   203,   204,   259,   260,   457,   200,
+     210,   211,   446,   540,   196,   320,   241,   257,   258,   259,
+     260,   212,   213,   321,   201,   202,   203,   204,   421,   223,
+     242,   274,   228,   422,   576,   577,   578,   579,   580,   577,
+     578,   579,   580,   222,   322,   477,   579,   580,   234,   583,
+     267,   295,   323,   324,   308,   266,   309,   281,   310,   275,
+     311,   325,   475,   609,   196,   561,   276,   126,   390,   391,
+     286,   280,   287,   282,   477,   511,   512,   513,   514,   289,
+     290,   299,   517,   333,   291,   294,   296,   126,   334,   345,
+     342,   521,   337,   504,   335,   297,   336,   341,   385,   395,
+     411,   424,   443,   481,   483,   484,   485,   500,   313,   533,
+     520,   522,   542,   543,   553,   554,   405,   608,   556,   562,
+     523,   559,   564,   582,   585,   614,   525,   584,   346,   347,
+     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
+     358,   359,   360,   361,   362,   387,   387,   387,   616,   544,
+     588,   607,   192,   350,   351,   352,   354,   355,    78,   384,
+     617,   618,   498,   389,   389,   389,   612,   619,   620,   396,
+     184,   501,   404,   527,   555,   440,   175,   175,   175,   452,
+     199,   199,    78,    78,     0,   414,     0,   416,     0,   418,
+     315,   420,     0,     0,     0,     0,     0,   199,   199,   199,
+     199,     0,     0,   214,     0,     0,     0,     0,     0,     0,
+     224,   225,     0,     0,     0,     0,     0,   447,   448,   449,
+     450,     0,   451,   453,     0,     0,   454,     0,     0,   456,
+       0,     0,     0,     0,     0,     0,     0,     0,   234,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   458,   459,
+     460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
+     470,   471,   472,   473,   474,   536,   536,   536,   536,     0,
+       0,     0,     0,    78,     0,    78,   486,   487,     0,     0,
+       0,     0,   565,   566,    78,   567,   568,   569,     0,   570,
+       0,     0,   571,   572,   573,     0,   115,   497,     0,    78,
+       0,    78,     0,     0,     0,     0,     0,     0,   510,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   537,   538,   539,     0,     0,   454,     0,     0,
+       0,   574,   575,   576,   577,   578,   579,   580,     0,     0,
+       0,   536,   536,   536,   536,   536,   536,   536,   536,   536,
+     536,   536,   536,   536,   536,   536,   536,     0,     0,     0,
+     541,   300,     0,     0,   413,     0,   415,   301,   417,    78,
+     419,    78,   529,     0,     0,   244,   245,   246,   247,   269,
+     270,     0,   271,   536,     0,   251,   272,   273,     0,     0,
+     439,   439,   441,   442,     0,     0,   126,   591,   592,   593,
+     594,   595,   596,   597,   598,   599,   600,   601,   602,   603,
+     604,   605,   606,     0,    78,   558,   563,     0,    78,     0,
+      78,     0,     0,     0,   254,   255,   256,   257,   258,   259,
+     260,     0,     0,     0,     0,     0,   531,     0,     0,   615,
+       0,     0,   115,     0,     0,     0,   589,    78,     0,     0,
+       0,     0,     0,     0,     0,   532,     0,     0,     0,   494,
+       0,     0,     0,   244,   245,   246,   247,   269,   270,     0,
+     271,     0,    78,   251,   272,   273,     0,     0,     0,     0,
+      78,     0,     0,     0,     0,     0,     0,   509,     0,     0,
+       0,     0,     0,   515,     0,   516,     0,     0,     0,   518,
+     519,     0,     0,    78,     0,     0,     0,     0,     0,     0,
+       0,     0,   254,   255,   256,   257,   258,   259,   260,   302,
+       0,     0,     0,     0,     0,   303,     0,     0,     0,     0,
+       0,     0,     0,   244,   245,   246,   247,   269,   270,     0,
+     271,     0,     0,   251,   272,   273,     0,     0,     0,     0,
+       0,     0,     0,   534,   534,   534,   534,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   545,
+     546,   547,   548,     0,     0,   549,   550,   551,   552,     0,
+       0,     0,   254,   255,   256,   257,   258,   259,   260,   304,
+       0,     0,     0,     0,     0,   305,     0,     0,     0,     0,
+       0,     0,     0,   244,   245,   246,   247,   269,   270,     0,
+     271,     0,     0,   251,   272,   273,     0,     0,   515,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   534,
+     534,   534,   534,   534,   534,   534,   534,   534,   534,   534,
+     534,   534,   534,   534,   534,     0,     0,     0,     0,   610,
+       0,     0,   254,   255,   256,   257,   258,   259,   260,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   534,   229,   230,     1,   231,   232,    90,   133,   134,
+     135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
+      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
+     102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
+       0,     0,     0,     0,    33,    34,   139,    36,    37,    38,
+       0,    39,    40,   140,    42,   141,    44,   142,    46,   143,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,     0,
+      57,    58,    59,   144,    61,     0,     0,    62,   145,    64,
+      65,   108,   109,   110,   111,     0,     0,     0,   112,     0,
+       0,     0,   146,   147,     0,     0,     0,     0,   166,     0,
+     149,     0,   233,   129,   130,     1,   131,   132,    90,   133,
      134,   135,   136,    91,     8,    92,    93,    10,    94,    95,
-      96,    97,    15,    16,    98,    18,    99,   313,    21,   100,
+      96,    97,    15,    16,    98,    18,    99,   243,    21,   100,
      101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
-     107,   243,   244,   245,   246,   247,   248,   139,   249,    37,
-      38,   250,   251,   252,   140,    42,   141,    44,   142,    46,
+     107,   244,   245,   246,   247,   248,   249,   139,   250,    37,
+      38,   251,   252,   253,   140,    42,   141,    44,   142,    46,
      143,    48,    49,    50,    51,    52,    53,    54,    55,    56,
        0,    57,    58,    59,   144,    61,     0,     0,    62,   145,
       64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
-     253,   254,   255,   256,   257,   258,   259,     0,     0,   166,
+     254,   255,   256,   257,   258,   259,   260,     0,   261,   166,
        0,   149,   129,   130,     1,   131,   132,    90,   133,   134,
      135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
-      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
+      97,    15,   277,    98,    18,    99,    20,    21,   100,   101,
      102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
-       0,     0,     0,     0,    33,    34,   139,    36,    37,    38,
-       0,    39,    40,   140,   423,   141,   424,   142,   425,   143,
-     426,    49,    50,    51,    52,    53,    54,    55,   427,   428,
-     429,   430,    59,   144,    61,   431,   432,   433,   434,    64,
-      65,   108,   109,   110,   111,     0,     0,     0,   112,     0,
-       0,     0,   146,   147,     0,     0,     0,     0,   166,     0,
+     244,   245,   246,   247,   248,   249,   139,   250,   278,   279,
+     251,   252,   253,   140,    42,   141,    44,   142,    46,   143,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,     0,
+      57,    58,    59,   144,    61,     0,     0,    62,   145,    64,
+      65,   108,   109,   110,   111,     0,     0,     0,   112,   254,
+     255,   256,   257,   258,   259,   260,     0,   261,   166,     0,
      149,   129,   130,     1,   131,   132,    90,   133,   134,   135,
      136,    91,     8,    92,    93,    10,    94,    95,    96,    97,
       15,    16,    98,    18,    99,    20,    21,   100,   101,   102,
-     103,    25,     0,    27,    28,   104,   105,   106,   107,     0,
-       0,     0,     0,    33,    34,   139,    36,    37,    38,     0,
-      39,    40,   140,    42,   141,    44,   142,    46,   143,    48,
+     103,    25,     0,   288,    28,   104,   105,   106,   107,   244,
+     245,   246,   247,   248,   249,   139,   250,    37,    38,   251,
+     252,   253,   140,    42,   141,    44,   142,    46,   143,    48,
       49,    50,    51,    52,    53,    54,    55,    56,     0,    57,
       58,    59,   144,    61,     0,     0,    62,   145,    64,    65,
-     108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
-       0,   146,   147,     0,     0,     0,     0,   166,   226,   149,
+     108,   109,   110,   111,     0,     0,     0,   112,   254,   255,
+     256,   257,   258,   259,   260,     0,   261,   166,     0,   149,
      129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
       91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
       16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
-      25,     0,    27,    28,   104,   105,   106,   107,     0,     0,
-       0,     0,    33,    34,   139,    36,    37,    38,     0,    39,
-      40,   140,    42,   141,    44,   142,    46,   143,    48,    49,
+      25,     0,    27,    28,   104,   105,   106,   107,   244,   245,
+     246,   247,   248,   249,   139,   250,    37,    38,   251,   252,
+     253,   140,    42,   141,    44,   142,    46,   143,    48,    49,
       50,    51,    52,    53,    54,    55,    56,     0,    57,    58,
       59,   144,    61,     0,     0,    62,   145,    64,    65,   108,
-     109,   110,   111,     0,     0,     0,   112,     0,     0,     0,
-     146,   147,     0,     0,     0,     0,   166,   297,   149,   129,
+     109,   110,   111,     0,     0,     0,   112,   254,   255,   256,
+     257,   258,   259,   260,     0,   261,   166,     0,   149,   129,
      130,     1,   131,   132,    90,   133,   134,   135,   136,    91,
        8,    92,    93,    10,    94,    95,    96,    97,    15,    16,
-      98,    18,    99,    20,    21,   100,   101,   102,   103,    25,
-       0,    27,    28,   104,   105,   106,   107,     0,     0,     0,
-       0,    33,    34,   139,    36,    37,    38,     0,    39,    40,
+      98,    18,    99,   314,    21,   100,   101,   102,   103,    25,
+       0,    27,    28,   104,   105,   106,   107,   244,   245,   246,
+     247,   248,   249,   139,   250,    37,    38,   251,   252,   253,
      140,    42,   141,    44,   142,    46,   143,    48,    49,    50,
       51,    52,    53,    54,    55,    56,     0,    57,    58,    59,
      144,    61,     0,     0,    62,   145,    64,    65,   108,   109,
-     110,   111,     0,     0,     0,   112,     0,     0,     0,   146,
-     147,     0,     0,     0,     0,   166,   341,   149,   129,   130,
+     110,   111,     0,     0,     0,   112,   254,   255,   256,   257,
+     258,   259,   260,     0,     0,   166,     0,   149,   129,   130,
        1,   131,   132,    90,   133,   134,   135,   136,    91,     8,
       92,    93,    10,    94,    95,    96,    97,    15,    16,    98,
       18,    99,    20,    21,   100,   101,   102,   103,    25,     0,
       27,    28,   104,   105,   106,   107,     0,     0,     0,     0,
       33,    34,   139,    36,    37,    38,     0,    39,    40,   140,
-      42,   141,    44,   142,    46,   143,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,     0,    57,    58,    59,   144,
-      61,     0,     0,    62,   145,    64,    65,   108,   109,   110,
+     425,   141,   426,   142,   427,   143,   428,    49,    50,    51,
+      52,    53,    54,    55,   429,   430,   431,   432,    59,   144,
+      61,   433,   434,   435,   436,    64,    65,   108,   109,   110,
      111,     0,     0,     0,   112,     0,     0,     0,   146,   147,
-       0,     0,     0,     0,   166,   441,   149,   129,   130,     1,
+       0,     0,     0,     0,   166,     0,   149,   129,   130,   226,
      131,   132,    90,   133,   134,   135,   136,    91,     8,    92,
       93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
       99,    20,    21,   100,   101,   102,   103,    25,     0,    27,
@@ -1172,9 +1135,9 @@ static const yytype_int16 yytable[] =
       53,    54,    55,    56,     0,    57,    58,    59,   144,    61,
        0,     0,    62,   145,    64,    65,   108,   109,   110,   111,
        0,     0,     0,   112,     0,     0,     0,   146,   147,     0,
-       0,     0,     0,   166,   500,   149,   129,   130,     1,   131,
+       0,     0,     0,   166,   227,   149,   129,   130,     1,   131,
      132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
-     137,    94,    95,    96,    97,    15,    16,    98,   138,    99,
+      10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
       20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
      104,   105,   106,   107,     0,     0,     0,     0,    33,    34,
      139,    36,    37,    38,     0,    39,    40,   140,    42,   141,
@@ -1182,7 +1145,7 @@ static const yytype_int16 yytable[] =
       54,    55,    56,     0,    57,    58,    59,   144,    61,     0,
        0,    62,   145,    64,    65,   108,   109,   110,   111,     0,
        0,     0,   112,     0,     0,     0,   146,   147,     0,     0,
-       0,     0,   148,     0,   149,   129,   130,     1,   131,   132,
+       0,     0,   166,   298,   149,   129,   130,     1,   131,   132,
       90,   133,   134,   135,   136,    91,     8,    92,    93,    10,
       94,    95,    96,    97,    15,    16,    98,    18,    99,    20,
       21,   100,   101,   102,   103,    25,     0,    27,    28,   104,
@@ -1192,7 +1155,7 @@ static const yytype_int16 yytable[] =
       55,    56,     0,    57,    58,    59,   144,    61,     0,     0,
       62,   145,    64,    65,   108,   109,   110,   111,     0,     0,
        0,   112,     0,     0,     0,   146,   147,     0,     0,     0,
-       0,   166,     0,   149,   129,   130,     1,   131,   132,    90,
+       0,   166,   343,   149,   129,   130,     1,   131,   132,    90,
      133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
       95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
      100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
@@ -1202,37 +1165,37 @@ static const yytype_int16 yytable[] =
       56,     0,    57,    58,    59,   144,    61,     0,     0,    62,
      145,    64,    65,   108,   109,   110,   111,     0,     0,     0,
      112,     0,     0,     0,   146,   147,     0,     0,     0,     0,
-     148,     0,   149,   129,   130,     1,   131,   132,    90,   133,
+     166,   445,   149,   129,   130,     1,   131,   132,    90,   133,
      134,   135,   136,    91,     8,    92,    93,    10,    94,    95,
       96,    97,    15,    16,    98,    18,    99,    20,    21,   100,
      101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
      107,     0,     0,     0,     0,    33,    34,   139,    36,    37,
       38,     0,    39,    40,   140,    42,   141,    44,   142,    46,
      143,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-       0,    57,    58,    59,   144,    61,     0,     0,    62,    63,
+       0,    57,    58,    59,   144,    61,     0,     0,    62,   145,
       64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
-       0,     0,     0,   146,   147,     0,     0,     0,     0,   197,
-       0,   149,   129,   130,     1,   131,   132,    90,   133,   134,
-     135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
-      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
+       0,     0,     0,   146,   147,     0,     0,     0,     0,   166,
+     503,   149,   129,   130,     1,   131,   132,    90,   133,   134,
+     135,   136,    91,     8,    92,    93,   137,    94,    95,    96,
+      97,    15,    16,    98,   138,    99,    20,    21,   100,   101,
      102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
        0,     0,     0,     0,    33,    34,   139,    36,    37,    38,
        0,    39,    40,   140,    42,   141,    44,   142,    46,   143,
       48,    49,    50,    51,    52,    53,    54,    55,    56,     0,
-      57,    58,    59,   144,    61,     0,     0,    62,    63,    64,
+      57,    58,    59,   144,    61,     0,     0,    62,   145,    64,
       65,   108,   109,   110,   111,     0,     0,     0,   112,     0,
-       0,     0,   146,   147,     0,     0,     0,     0,   166,     0,
+       0,     0,   146,   147,     0,     0,     0,     0,   148,     0,
      149,   129,   130,     1,   131,   132,    90,   133,   134,   135,
      136,    91,     8,    92,    93,    10,    94,    95,    96,    97,
       15,    16,    98,    18,    99,    20,    21,   100,   101,   102,
      103,    25,     0,    27,    28,   104,   105,   106,   107,     0,
        0,     0,     0,    33,    34,   139,    36,    37,    38,     0,
       39,    40,   140,    42,   141,    44,   142,    46,   143,    48,
-      49,    50,    51,    52,    53,    54,    55,   427,     0,   429,
-      58,    59,   144,    61,     0,     0,   433,   434,    64,    65,
+      49,    50,    51,    52,    53,    54,    55,    56,     0,    57,
+      58,    59,   144,    61,     0,     0,    62,   145,    64,    65,
      108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
        0,   146,   147,     0,     0,     0,     0,   166,     0,   149,
-     228,   229,     1,   230,   231,    90,   133,   134,   135,   136,
+     129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
       91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
       16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
       25,     0,    27,    28,   104,   105,   106,   107,     0,     0,
@@ -1241,56 +1204,112 @@ static const yytype_int16 yytable[] =
       50,    51,    52,    53,    54,    55,    56,     0,    57,    58,
       59,   144,    61,     0,     0,    62,   145,    64,    65,   108,
      109,   110,   111,     0,     0,     0,   112,     0,     0,     0,
-     146,   147,     0,     0,     0,     0,   166,     0,   149,   129,
+     146,   147,     0,     0,     0,     0,   148,     0,   149,   129,
      130,     1,   131,   132,    90,   133,   134,   135,   136,    91,
        8,    92,    93,    10,    94,    95,    96,    97,    15,    16,
       98,    18,    99,    20,    21,   100,   101,   102,   103,    25,
        0,    27,    28,   104,   105,   106,   107,     0,     0,     0,
        0,    33,    34,   139,    36,    37,    38,     0,    39,    40,
      140,    42,   141,    44,   142,    46,   143,    48,    49,    50,
-      51,    52,    53,    54,    55,   486,     0,   487,    58,    59,
-     144,    61,     0,     0,   488,   489,    64,    65,   108,   109,
+      51,    52,    53,    54,    55,    56,     0,    57,    58,    59,
+     144,    61,     0,     0,    62,    63,    64,    65,   108,   109,
      110,   111,     0,     0,     0,   112,     0,     0,     0,   146,
-     147,     0,     0,     0,     0,   166,     0,   149,   129,   130,
+     147,     0,     0,     0,     0,   197,     0,   149,   129,   130,
        1,   131,   132,    90,   133,   134,   135,   136,    91,     8,
       92,    93,    10,    94,    95,    96,    97,    15,    16,    98,
       18,    99,    20,    21,   100,   101,   102,   103,    25,     0,
       27,    28,   104,   105,   106,   107,     0,     0,     0,     0,
-       0,     0,   139,    36,    37,    38,     0,    39,    40,   140,
+      33,    34,   139,    36,    37,    38,     0,    39,    40,   140,
       42,   141,    44,   142,    46,   143,    48,    49,    50,    51,
       52,    53,    54,    55,    56,     0,    57,    58,    59,   144,
-      61,     0,     0,    62,   145,    64,    65,   108,   109,   110,
+      61,     0,     0,    62,    63,    64,    65,   108,   109,   110,
      111,     0,     0,     0,   112,     0,     0,     0,   146,   147,
        0,     0,     0,     0,   166,     0,   149,   129,   130,     1,
      131,   132,    90,   133,   134,   135,   136,    91,     8,    92,
       93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
       99,    20,    21,   100,   101,   102,   103,    25,     0,    27,
-      28,   104,   105,   106,   107,     0,     0,     0,     0,     0,
-       0,   139,    36,    37,    38,     0,     0,     0,   140,    42,
+      28,   104,   105,   106,   107,     0,     0,     0,     0,    33,
+      34,   139,    36,    37,    38,     0,    39,    40,   140,    42,
      141,    44,   142,    46,   143,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,     0,    57,    58,    59,   144,    61,
-       0,     0,    62,   145,    64,    65,   108,   109,   110,   111,
+      53,    54,    55,   429,     0,   431,    58,    59,   144,    61,
+       0,     0,   435,   436,    64,    65,   108,   109,   110,   111,
        0,     0,     0,   112,     0,     0,     0,   146,   147,     0,
-       0,     0,     0,   166,     0,   149,   129,   130,     1,   131,
-     132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
+       0,     0,     0,   166,     0,   149,   229,   230,     1,   231,
+     232,    90,   133,   134,   135,   136,    91,     8,    92,    93,
       10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
       20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
-     104,   105,   106,   107,     0,     0,     0,     0,     0,     0,
-     139,     0,    37,    38,     0,     0,     0,   140,    42,   141,
+     104,   105,   106,   107,     0,     0,     0,     0,    33,    34,
+     139,    36,    37,    38,     0,    39,    40,   140,    42,   141,
       44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
       54,    55,    56,     0,    57,    58,    59,   144,    61,     0,
        0,    62,   145,    64,    65,   108,   109,   110,   111,     0,
-       0,     0,   112,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   166,     1,   149,     0,     2,     3,     4,     5,
-       6,     7,     8,     0,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-       0,    25,    26,    27,    28,    29,    30,    31,    32,     0,
+       0,     0,   112,     0,     0,     0,   146,   147,     0,     0,
+       0,     0,   166,     0,   149,   129,   130,     1,   131,   132,
+      90,   133,   134,   135,   136,    91,     8,    92,    93,    10,
+      94,    95,    96,    97,    15,    16,    98,    18,    99,    20,
+      21,   100,   101,   102,   103,    25,     0,    27,    28,   104,
+     105,   106,   107,     0,     0,     0,     0,    33,    34,   139,
+      36,    37,    38,     0,    39,    40,   140,    42,   141,    44,
+     142,    46,   143,    48,    49,    50,    51,    52,    53,    54,
+      55,   489,     0,   490,    58,    59,   144,    61,     0,     0,
+     491,   492,    64,    65,   108,   109,   110,   111,     0,     0,
+       0,   112,     0,     0,     0,   146,   147,     0,     0,     0,
+       0,   166,     0,   149,   129,   130,     1,   131,   132,    90,
+     133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
+      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
+     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
+     106,   107,     0,     0,     0,     0,     0,     0,   139,    36,
+      37,    38,     0,    39,    40,   140,    42,   141,    44,   142,
+      46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,     0,    57,    58,    59,   144,    61,     0,     0,    62,
+     145,    64,    65,   108,   109,   110,   111,     0,     0,     0,
+     112,     0,     0,     0,   146,   147,     0,     0,     0,     0,
+     166,     0,   149,   129,   130,     1,   131,   132,    90,   133,
+     134,   135,   136,    91,     8,    92,    93,    10,    94,    95,
+      96,    97,    15,    16,    98,    18,    99,    20,    21,   100,
+     101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
+     107,     0,     0,     0,     0,     0,     0,   139,    36,    37,
+      38,     0,     0,     0,   140,    42,   141,    44,   142,    46,
+     143,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+       0,    57,    58,    59,   144,    61,     0,     0,    62,   145,
+      64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
+       0,     0,     0,   146,   147,     0,     0,     0,     0,   166,
+       0,   149,   129,   130,     1,   131,   132,    90,   133,   134,
+     135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
+      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
+     102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
+       0,     0,     0,     0,     0,     0,   139,     0,    37,    38,
+       0,     0,     0,   140,    42,   141,    44,   142,    46,   143,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,     0,
+      57,    58,    59,   144,    61,     0,     0,    62,   145,    64,
+      65,   108,   109,   110,   111,     0,     0,     0,   112,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   166,     1,
+     149,     0,     2,     3,     4,     5,     6,     7,     8,     0,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,     0,    25,    26,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,     0,    57,    58,    59,    60,    61,
+       0,     0,    62,    63,    64,    65,    66,    67,    68,     0,
+      69,     1,     0,    70,     0,     3,     4,     5,     6,     7,
+       8,    71,     9,    10,    11,    12,    13,    14,    15,    16,
+       0,    18,    19,    20,    21,    22,    23,    24,     0,    25,
+      26,    27,    28,     0,    30,    31,    32,     0,     0,     0,
+       0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,     0,    57,    58,    59,
+      60,    61,     0,     0,    62,    63,    64,    65,    66,    67,
+       0,     0,    69,     1,     0,    70,     0,     3,     4,     5,
+       6,     7,     8,   383,     9,    10,    11,    12,    13,    14,
+      15,    16,     0,    18,    19,    20,    21,    22,    23,    24,
+       0,    25,    26,    27,    28,     0,    30,    31,    32,     0,
        0,     0,     0,    33,    34,    35,    36,    37,    38,     0,
       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    54,    55,    56,     0,    57,
       58,    59,    60,    61,     0,     0,    62,    63,    64,    65,
-      66,    67,    68,     0,    69,     1,     0,    70,     0,     3,
-       4,     5,     6,     7,     8,    71,     9,    10,    11,    12,
+      66,    67,     0,     0,    69,     1,     0,    70,     0,     3,
+       4,     5,     6,     7,     8,   406,     9,    10,    11,    12,
       13,    14,    15,    16,     0,    18,    19,    20,    21,    22,
       23,    24,     0,    25,    26,    27,    28,     0,    30,    31,
       32,     0,     0,     0,     0,    33,    34,    35,    36,    37,
@@ -1298,7 +1317,7 @@ static const yytype_int16 yytable[] =
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
        0,    57,    58,    59,    60,    61,     0,     0,    62,    63,
       64,    65,    66,    67,     0,     0,    69,     1,     0,    70,
-       0,     3,     4,     5,     6,     7,     8,   381,     9,    10,
+       0,     3,     4,     5,     6,     7,     8,   528,     9,    10,
       11,    12,    13,    14,    15,    16,     0,    18,    19,    20,
       21,    22,    23,    24,     0,    25,    26,    27,    28,     0,
       30,    31,    32,     0,     0,     0,     0,    33,    34,    35,
@@ -1306,7 +1325,7 @@ static const yytype_int16 yytable[] =
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,     0,    57,    58,    59,    60,    61,     0,     0,
       62,    63,    64,    65,    66,    67,     0,     0,    69,     1,
-       0,    70,     0,     3,     4,     5,     6,     7,     8,   404,
+       0,    70,     0,     3,     4,     5,     6,     7,     8,   557,
        9,    10,    11,    12,    13,    14,    15,    16,     0,    18,
       19,    20,    21,    22,    23,    24,     0,    25,    26,    27,
       28,     0,    30,    31,    32,     0,     0,     0,     0,    33,
@@ -1314,257 +1333,205 @@ static const yytype_int16 yytable[] =
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
       53,    54,    55,    56,     0,    57,    58,    59,    60,    61,
        0,     0,    62,    63,    64,    65,    66,    67,     0,     0,
-      69,     1,     0,    70,     0,     3,     4,     5,     6,     7,
-       8,   524,     9,    10,    11,    12,    13,    14,    15,    16,
-       0,    18,    19,    20,    21,    22,    23,    24,     0,    25,
-      26,    27,    28,     0,    30,    31,    32,     0,     0,     0,
+       0,     0,     0,    70,     0,     0,     0,     0,     0,     1,
+       0,   476,    90,     3,     4,     5,     6,    91,     8,    92,
+      93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
+      99,    20,    21,   100,   101,   102,   103,    25,     0,    27,
+      28,   104,   105,   106,   107,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,     0,    57,    58,    59,    60,    61,
+       0,     0,    62,    63,    64,    65,   108,   109,   110,   111,
+       0,     1,     0,   112,    90,     3,     4,     5,     6,    91,
+       8,    92,    93,    10,    94,    95,    96,    97,    15,    16,
+      98,    18,    99,    20,    21,   100,   101,   102,   103,    25,
+       0,    27,    28,   104,   105,   106,   107,     0,     0,     0,
        0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    56,     0,    57,    58,    59,
-      60,    61,     0,     0,    62,    63,    64,    65,    66,    67,
-       0,     0,    69,     1,     0,    70,     0,     3,     4,     5,
-       6,     7,     8,   553,     9,    10,    11,    12,    13,    14,
-      15,    16,     0,    18,    19,    20,    21,    22,    23,    24,
-       0,    25,    26,    27,    28,     0,    30,    31,    32,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,     0,    57,
-      58,    59,    60,    61,     0,     0,    62,    63,    64,    65,
-      66,    67,     0,     0,     0,     0,     0,    70,     0,     0,
-       0,     0,     0,     1,     0,   473,    90,     3,     4,     5,
+     174,    61,     0,     0,    62,    63,    64,    65,   108,   109,
+     110,   111,     0,     1,     0,   112,    90,     3,     4,     5,
        6,    91,     8,    92,    93,    10,    94,    95,    96,    97,
       15,    16,    98,    18,    99,    20,    21,   100,   101,   102,
      103,    25,     0,    27,    28,   104,   105,   106,   107,     0,
        0,     0,     0,    33,    34,    35,    36,    37,    38,     0,
       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,     0,    57,
-      58,    59,    60,    61,     0,     0,    62,    63,    64,    65,
-     108,   109,   110,   111,     0,     1,     0,   112,    90,     3,
-       4,     5,     6,    91,     8,    92,    93,    10,    94,    95,
+     215,   216,   217,   218,   219,    54,   220,    56,     0,    57,
+      58,   221,    60,    61,     0,     0,    62,    63,    64,    65,
+     108,   109,   110,   111,     0,     1,     0,   112,    90,   133,
+     134,     5,     6,    91,     8,    92,    93,    10,    94,    95,
       96,    97,    15,    16,    98,    18,    99,    20,    21,   100,
      101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
      107,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-      38,     0,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-       0,    57,    58,    59,   174,    61,     0,     0,    62,    63,
-      64,    65,   108,   109,   110,   111,     0,     1,     0,   112,
-      90,     3,     4,     5,     6,    91,     8,    92,    93,    10,
-      94,    95,    96,    97,    15,    16,    98,    18,    99,    20,
-      21,   100,   101,   102,   103,    25,     0,    27,    28,   104,
-     105,   106,   107,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,    38,     0,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,   215,   216,   217,   218,   219,    54,
-     220,    56,     0,    57,    58,   221,    60,    61,     0,     0,
-      62,    63,    64,    65,   108,   109,   110,   111,     0,     1,
-       0,   112,    90,   133,   134,     5,     6,    91,     8,    92,
-      93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
-      99,    20,    21,   100,   101,   102,   103,    25,     0,    27,
-      28,   104,   105,   106,   107,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,    38,     0,    39,    40,   140,    42,
-     141,    44,   142,    46,   143,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,     0,    57,    58,    59,   384,    61,
-       0,     0,    62,    63,    64,    65,   108,   109,   110,   111,
-       1,     0,     0,   112,     3,     4,     5,     6,     7,     8,
-       0,     9,    10,    11,    12,    13,     0,    15,    16,     0,
-      18,    19,    20,    21,    22,   101,    24,     0,    25,     0,
-      27,    28,     0,    30,    31,    32,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,     0,    57,    58,    59,    60,
-      61,   305,     0,    62,    63,    64,    65,   306,    67,     0,
-       0,     0,     0,     0,    70,   243,   244,   245,   246,   268,
-     269,   503,   270,     0,     0,   250,   271,   272,     0,     0,
-       0,     0,     0,     0,   504,   243,   244,   245,   246,   268,
-     269,     0,   270,     0,     0,   250,   271,   272,   243,   244,
-     245,   246,   268,   269,     0,   270,     0,   505,   250,   271,
-     272,     0,     0,     0,   253,   254,   255,   256,   257,   258,
-     259,   243,   244,   245,   246,   268,   269,     0,   270,     0,
-       0,   250,   271,   272,   253,   254,   255,   256,   257,   258,
-     259,   577,     0,     0,     0,     0,     0,   253,   254,   255,
-     256,   257,   258,   259,     0,   561,   562,     0,   563,   564,
-     565,     0,   566,     0,     0,   567,   568,   569,     0,   291,
-     253,   254,   255,   256,   257,   258,   259,   243,   244,   245,
-     246,   268,   269,     0,   270,     0,     0,   250,   271,   272,
+      38,     0,    39,    40,   140,    42,   141,    44,   142,    46,
+     143,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+       0,    57,    58,    59,   386,    61,     0,     0,    62,    63,
+      64,    65,   108,   109,   110,   111,     1,     0,     0,   112,
+       3,     4,     5,     6,     7,     8,     0,     9,    10,    11,
+      12,    13,     0,    15,    16,     0,    18,    19,    20,    21,
+      22,   101,    24,     0,    25,     0,    27,    28,     0,    30,
+      31,    32,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,     0,    57,    58,    59,    60,    61,   306,     0,    62,
+      63,    64,    65,   307,    67,     0,     0,     0,     0,     0,
+      70,   244,   245,   246,   247,   269,   270,   505,   271,     0,
+       0,   251,   272,   273,     0,     0,     0,     0,     0,     0,
+     506,   244,   245,   246,   247,   269,   270,     0,   271,     0,
+       0,   251,   272,   273,   244,   245,   246,   247,   269,   270,
+       0,   271,     0,   507,   251,   272,   273,     0,     0,     0,
+     254,   255,   256,   257,   258,   259,   260,   244,   245,   246,
+     247,   269,   270,     0,   271,     0,     0,   251,   272,   273,
+     254,   255,   256,   257,   258,   259,   260,   508,     0,     0,
+       0,     0,     0,   254,   255,   256,   257,   258,   259,   260,
+       0,   244,   245,   246,   247,   269,   270,     0,   271,   581,
+       0,   251,   272,   273,     0,     0,   254,   255,   256,   257,
+     258,   259,   260,   565,   566,     0,   567,   568,   569,   292,
+     570,     0,     0,   571,   572,   573,     0,   244,   245,   246,
+     247,   269,   270,     0,   271,     0,     0,   251,   272,   273,
+     254,   255,   256,   257,   258,   259,   260,     0,   244,   245,
+     246,   247,   269,   270,     0,   271,     0,     0,   251,   272,
+     273,     0,   574,   575,   576,   577,   578,   579,   580,     0,
+       0,     0,     0,     0,     0,   268,   254,   255,   256,   257,
+     258,   259,   260,   293,   244,   245,   246,   247,   269,   270,
+       0,   271,     0,     0,   251,   272,   273,   254,   255,   256,
+     257,   258,   259,   260,     0,   331,     0,   332,   244,   245,
+     246,   247,   269,   270,     0,   271,     0,     0,   251,   272,
+     273,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   254,   255,   256,   257,   258,   259,   260,
+     244,   245,   246,   247,   269,   270,     0,   271,     0,     0,
+     251,   272,   273,     0,     0,     0,     0,   254,   255,   256,
+     257,   258,   259,   260,     0,   412,     0,   332,   364,   365,
+     366,   367,   368,   369,     0,   370,     0,     0,   371,   372,
+     373,     0,     0,     0,     0,     0,     0,     0,     0,   254,
+     255,   256,   257,   258,   259,   260,     0,     0,     0,   332,
+     244,   245,   246,   247,   269,   270,     0,   271,     0,     0,
+     251,   272,   273,     0,     0,     0,     0,   374,   375,   376,
+     377,   378,   379,   380,     0,   381,   244,   245,   246,   247,
+     269,   270,     0,   271,     0,     0,   251,   272,   273,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   254,
+     255,   256,   257,   258,   259,   260,   394,   244,   245,   246,
+     247,   269,   270,     0,   271,     0,     0,   251,   272,   273,
+       0,     0,     0,     0,     0,   254,   255,   256,   257,   258,
+     259,   260,   495,   244,   245,   246,   247,   269,   270,     0,
+     271,     0,     0,   251,   272,   273,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   254,   255,   256,   257,
+     258,   259,   260,   499,   244,   245,   246,   247,   269,   270,
+       0,   271,     0,     0,   251,   272,   273,     0,     0,     0,
+       0,     0,   254,   255,   256,   257,   258,   259,   260,   530,
+     244,   245,   246,   247,   269,   270,     0,   271,     0,     0,
+     251,   272,   273,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   254,   255,   256,   257,   258,   259,   260,
+     590,   244,   245,   246,   247,   269,   270,     0,   271,     0,
+       0,   251,   272,   273,     0,     0,     0,     0,     0,   254,
+     255,   256,   257,   258,   259,   260,   613,   244,   245,   246,
+     247,   269,   270,     0,   271,     0,     0,   251,   272,   273,
+     328,   329,     0,     0,     0,     0,     0,     0,     0,     0,
+     254,   255,   256,   257,   258,   259,   260,   364,   365,   366,
+     367,   368,   369,     0,   370,     0,     0,   371,   372,   373,
+       0,     0,     0,     0,     0,     0,   254,   255,   256,   257,
+     258,   259,   260,   244,   245,   246,   247,     0,     0,     0,
+     271,     0,     0,   251,   272,   273,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   374,   375,   376,   377,
+     378,   379,   380,   565,   566,     0,   567,     0,     0,     0,
+     570,     0,     0,   571,   572,   573,     0,     0,     0,     0,
+       0,     0,   254,   255,   256,   257,   258,   259,   260,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   267,     0,   570,   571,   572,   573,   574,   575,
-     576,   243,   244,   245,   246,   268,   269,     0,   270,     0,
-       0,   250,   271,   272,     0,     0,   253,   254,   255,   256,
-     257,   258,   259,   292,   243,   244,   245,   246,   268,   269,
-       0,   270,     0,     0,   250,   271,   272,   243,   244,   245,
-     246,   268,   269,     0,   270,     0,     0,   250,   271,   272,
-     253,   254,   255,   256,   257,   258,   259,   243,   244,   245,
-     246,   268,   269,     0,   270,     0,     0,   250,   271,   272,
-       0,     0,     0,   253,   254,   255,   256,   257,   258,   259,
-       0,   329,     0,   330,     0,     0,   253,   254,   255,   256,
-     257,   258,   259,     0,   410,     0,   330,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   253,   254,   255,   256,
-     257,   258,   259,     0,     0,     0,   330,   362,   363,   364,
-     365,   366,   367,     0,   368,     0,     0,   369,   370,   371,
-     243,   244,   245,   246,   268,   269,     0,   270,     0,     0,
-     250,   271,   272,   243,   244,   245,   246,   268,   269,     0,
-     270,     0,     0,   250,   271,   272,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   372,   373,   374,   375,
-     376,   377,   378,     0,   379,     0,     0,     0,     0,   253,
-     254,   255,   256,   257,   258,   259,   392,     0,     0,     0,
-       0,     0,   253,   254,   255,   256,   257,   258,   259,   492,
-     243,   244,   245,   246,   268,   269,     0,   270,     0,     0,
-     250,   271,   272,   243,   244,   245,   246,   268,   269,     0,
-     270,     0,     0,   250,   271,   272,   243,   244,   245,   246,
-     268,   269,     0,   270,     0,     0,   250,   271,   272,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   253,
-     254,   255,   256,   257,   258,   259,   496,     0,     0,     0,
-       0,     0,   253,   254,   255,   256,   257,   258,   259,   526,
-       0,     0,     0,     0,     0,   253,   254,   255,   256,   257,
-     258,   259,   586,   243,   244,   245,   246,   268,   269,     0,
-     270,     0,     0,   250,   271,   272,     0,     0,     0,     0,
-       0,   243,   244,   245,   246,   268,   269,     0,   270,     0,
-       0,   250,   271,   272,   243,   244,   245,   246,   268,   269,
-       0,   270,     0,     0,   250,   271,   272,     0,     0,     0,
-       0,     0,   253,   254,   255,   256,   257,   258,   259,   609,
-     327,   328,     0,     0,     0,     0,     0,     0,     0,     0,
-     253,   254,   255,   256,   257,   258,   259,     0,     0,     0,
-       0,     0,     0,   253,   254,   255,   256,   257,   258,   259,
-     362,   363,   364,   365,   366,   367,     0,   368,     0,     0,
-     369,   370,   371,   561,   562,     0,   563,   564,   565,     0,
-     566,     0,     0,   567,   568,   569,   561,   562,     0,   563,
-       0,     0,     0,   566,     0,     0,   567,   568,   569,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   372,
-     373,   374,   375,   376,   377,   378,     0,     0,     0,     0,
-       0,     0,   570,   571,   572,   573,   574,   575,   576,     0,
-       0,     0,     0,     0,     0,   570,   571,   572,   573,   574,
-     575,   576
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   574,   575,   576,   577,   578,   579,   580
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,     0,    24,     7,   383,    32,    12,   381,    14,    13,
-      70,     2,   395,   392,   239,    16,    22,     9,    31,   263,
-      11,    31,   524,   556,    30,    31,    17,   100,    22,    34,
-     409,   104,    98,    24,    98,   260,    30,    31,    29,    44,
-      67,    32,    10,    11,    23,    98,    99,   163,    68,   582,
-     163,   553,     0,    49,    69,   171,    76,    23,   171,    68,
-      66,    98,    28,    49,    99,    44,   182,    76,   103,   182,
-      70,    49,    78,    73,    73,    68,    67,    68,   194,    49,
-      68,   194,    52,    76,    78,    98,    87,    55,    76,    57,
-      98,    59,    99,    61,    86,    98,   212,    68,   342,   212,
-      96,    97,   476,   117,   329,    76,    98,    75,    94,    95,
-      96,    97,   118,   119,   120,   121,   100,   361,    96,    97,
-     134,   135,   136,    93,    94,    95,    96,    97,    36,    37,
-      28,   137,   138,    98,   140,   141,   142,   143,    98,   145,
-      98,   168,   148,    98,    99,    98,    99,   526,    49,    98,
-     524,    52,    98,   144,   379,    49,   539,    98,   149,    98,
-     166,   188,    42,    43,    44,    45,    98,   173,    98,    49,
-     277,   278,    52,    53,    54,    98,    55,   168,    57,   553,
-      59,   172,    61,   174,    98,   410,    98,    28,   104,   104,
-     103,   197,    93,    94,    95,    96,    97,   188,   442,   578,
-      94,    95,    96,    97,   104,   196,   103,   586,   104,    99,
-      26,    91,    92,    93,    94,    95,    96,    97,   209,   423,
-     424,   425,   426,    98,    28,    98,   430,    26,   472,    99,
-     609,   291,    16,    98,    98,    98,    89,   243,   244,   245,
+       0,     0,    24,     7,    70,    32,    12,     9,    14,    13,
+     383,     2,    31,   397,    31,    16,    22,   226,    49,   264,
+      11,    52,   528,    98,    30,    31,    17,    22,   560,    23,
+     385,   240,    69,    24,    98,    30,    31,    34,    29,   394,
+      67,    32,    10,    11,   100,    68,     0,    44,   104,   163,
+      44,   557,   261,    76,   586,    98,   411,   171,    98,   163,
+      66,    99,    93,    94,    95,    96,    97,   171,   182,    49,
+      70,    99,    78,    73,    73,   103,    67,    68,   182,    98,
+     194,    28,    49,    78,    86,   330,    87,    55,    98,    57,
+     194,    59,   100,    61,    36,    37,    98,    68,   212,   344,
+      49,    28,   117,    52,    49,    76,   479,    75,   212,    49,
+      98,    99,   118,   119,   120,   121,    96,    97,   363,   134,
+     135,   136,   331,    98,    99,    68,    98,    94,    95,    96,
+      97,   137,   138,    76,   140,   141,   142,   143,    23,   145,
+      98,   168,   148,    28,    93,    94,    95,    96,    97,    94,
+      95,    96,    97,   144,    68,   528,    96,    97,   149,   543,
+     166,   188,    76,    68,    55,    98,    57,   173,    59,    98,
+      61,    76,   381,    98,    99,   530,    98,   168,   278,   279,
+      98,   172,    98,   174,   557,   425,   426,   427,   428,    98,
+      98,   197,   432,   104,    98,    98,    98,   188,   104,    26,
+      99,   446,   103,   412,   104,   196,   104,   103,    98,    28,
+      98,    26,    99,    16,    98,    98,    98,    89,   209,    88,
+     101,   101,    98,     9,    28,    70,   292,   582,   101,    34,
+     475,    98,    98,    98,    70,   590,    87,   101,   244,   245,
      246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   276,   277,   278,   501,   101,    88,
-      98,     9,   268,   269,   270,   271,   272,   267,   267,    28,
-      70,   101,   276,   277,   278,    98,    34,    98,   284,    98,
-      70,   287,    87,   101,    70,   276,   277,   278,   116,   117,
-      88,   291,   292,    88,   300,    98,   302,    88,   304,    73,
-     306,    98,    98,   400,    31,   133,   134,   135,   136,   407,
-     476,   139,   514,   337,   326,    -1,    -1,   212,   146,   147,
-      -1,    -1,    -1,    -1,    -1,   331,   332,   333,   334,    -1,
-     336,   337,    -1,    -1,   340,    -1,    -1,   343,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   337,    -1,   487,   488,
-     489,    -1,    -1,    -1,    -1,    -1,   362,   363,   364,   365,
+     256,   257,   258,   259,   260,   277,   278,   279,   613,   504,
+      88,    70,    73,   269,   270,   271,   272,   273,   268,   268,
+      88,    88,   402,   277,   278,   279,    98,    98,    98,   285,
+      31,   409,   288,   479,   517,   327,   277,   278,   279,   339,
+     116,   117,   292,   293,    -1,   301,    -1,   303,    -1,   305,
+     212,   307,    -1,    -1,    -1,    -1,    -1,   133,   134,   135,
+     136,    -1,    -1,   139,    -1,    -1,    -1,    -1,    -1,    -1,
+     146,   147,    -1,    -1,    -1,    -1,    -1,   333,   334,   335,
+     336,    -1,   338,   339,    -1,    -1,   342,    -1,    -1,   345,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   339,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,   365,
      366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
-     376,   377,   378,   486,   487,   488,   489,    -1,    -1,    -1,
-      -1,   381,    -1,   383,   390,   391,    -1,    -1,    -1,    -1,
-      -1,    -1,   392,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   395,   396,    -1,   407,    -1,   409,
-      -1,    -1,    -1,    -1,    -1,    -1,   422,    -1,    -1,    -1,
-      -1,    -1,   561,   562,   563,   564,   565,   566,   567,   568,
-     569,   570,   571,   572,   573,   574,   575,   576,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   451,    -1,    -1,   561,   562,
-     563,   564,   565,   566,   567,   568,   569,   570,   571,   572,
-     573,   574,   575,   576,   603,    -1,    -1,   494,    28,    -1,
-      -1,   299,    -1,   301,    34,   303,   476,   305,   478,   478,
-      -1,    -1,    42,    43,    44,    45,    46,    47,    -1,    49,
-     603,    28,    52,    53,    54,    -1,    -1,   325,   326,   327,
-     328,    -1,    -1,   494,    -1,    42,    43,    44,    45,    46,
-      47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,    -1,
-     520,   520,   528,    -1,   524,    -1,   526,    -1,    -1,    -1,
+     376,   377,   378,   379,   380,   489,   490,   491,   492,    -1,
+      -1,    -1,    -1,   383,    -1,   385,   392,   393,    -1,    -1,
+      -1,    -1,    42,    43,   394,    45,    46,    47,    -1,    49,
+      -1,    -1,    52,    53,    54,    -1,   397,   398,    -1,   409,
+      -1,   411,    -1,    -1,    -1,    -1,    -1,    -1,   424,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   490,   491,   492,    -1,    -1,   443,    -1,    -1,
       -1,    91,    92,    93,    94,    95,    96,    97,    -1,    -1,
-      -1,    -1,    15,    -1,    -1,    -1,    -1,    -1,   539,    -1,
-      -1,    -1,   558,   553,    91,    92,    93,    94,    95,    96,
-      97,    34,    -1,    -1,    -1,   393,    -1,    -1,    -1,    42,
-      43,    44,    45,    46,    47,    -1,    49,    -1,   578,    52,
-      53,    54,    -1,    -1,    -1,    -1,   586,    -1,    -1,    -1,
-      -1,    -1,    -1,   421,    -1,    -1,    -1,    -1,    -1,   427,
-      -1,   429,    -1,    -1,    -1,   433,   434,    -1,    -1,   609,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
-      93,    94,    95,    96,    97,    28,    -1,    -1,    -1,    -1,
-      -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    52,
-      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,   486,   487,
-     488,   489,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   502,   503,   504,   505,    -1,    -1,
-     508,   509,   510,   511,    -1,    -1,    -1,    -1,    91,    92,
-      93,    94,    95,    96,    97,    28,    -1,    -1,    -1,    -1,
-      -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    52,
-      53,    54,   550,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   561,   562,   563,   564,   565,   566,   567,
-     568,   569,   570,   571,   572,   573,   574,   575,   576,    -1,
-      -1,    -1,    -1,   581,    -1,    -1,    -1,    -1,    91,    92,
-      93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   603,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    -1,    72,    73,    74,    75,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
-      -1,    -1,    90,    -1,    -1,    -1,    94,    95,    -1,    -1,
-      -1,    -1,   100,    -1,   102,    -1,   104,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
-      -1,    -1,    -1,    90,    91,    92,    93,    94,    95,    96,
-      97,    -1,    99,   100,    -1,   102,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    -1,    72,    73,    74,    75,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
-      -1,    -1,    90,    91,    92,    93,    94,    95,    96,    97,
-      -1,    99,   100,    -1,   102,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    -1,    72,    73,    74,    75,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    85,    86,    -1,    -1,
-      -1,    90,    91,    92,    93,    94,    95,    96,    97,    -1,
-      99,   100,    -1,   102,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    -1,    72,    73,    74,    75,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    85,    86,    -1,    -1,    -1,
-      90,    91,    92,    93,    94,    95,    96,    97,    -1,    99,
-     100,    -1,   102,     4,     5,     6,     7,     8,     9,    10,
+      -1,   565,   566,   567,   568,   569,   570,   571,   572,   573,
+     574,   575,   576,   577,   578,   579,   580,    -1,    -1,    -1,
+     497,    28,    -1,    -1,   300,    -1,   302,    34,   304,   479,
+     306,   481,   481,    -1,    -1,    42,    43,    44,    45,    46,
+      47,    -1,    49,   607,    -1,    52,    53,    54,    -1,    -1,
+     326,   327,   328,   329,    -1,    -1,   497,   565,   566,   567,
+     568,   569,   570,   571,   572,   573,   574,   575,   576,   577,
+     578,   579,   580,    -1,   524,   524,   532,    -1,   528,    -1,
+     530,    -1,    -1,    -1,    91,    92,    93,    94,    95,    96,
+      97,    -1,    -1,    -1,    -1,    -1,    15,    -1,    -1,   607,
+      -1,    -1,   543,    -1,    -1,    -1,   562,   557,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,   395,
+      -1,    -1,    -1,    42,    43,    44,    45,    46,    47,    -1,
+      49,    -1,   582,    52,    53,    54,    -1,    -1,    -1,    -1,
+     590,    -1,    -1,    -1,    -1,    -1,    -1,   423,    -1,    -1,
+      -1,    -1,    -1,   429,    -1,   431,    -1,    -1,    -1,   435,
+     436,    -1,    -1,   613,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    91,    92,    93,    94,    95,    96,    97,    28,
+      -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    42,    43,    44,    45,    46,    47,    -1,
+      49,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   489,   490,   491,   492,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   505,
+     506,   507,   508,    -1,    -1,   511,   512,   513,   514,    -1,
+      -1,    -1,    91,    92,    93,    94,    95,    96,    97,    28,
+      -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    42,    43,    44,    45,    46,    47,    -1,
+      49,    -1,    -1,    52,    53,    54,    -1,    -1,   554,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   565,
+     566,   567,   568,   569,   570,   571,   572,   573,   574,   575,
+     576,   577,   578,   579,   580,    -1,    -1,    -1,    -1,   585,
+      -1,    -1,    91,    92,    93,    94,    95,    96,    97,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   607,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
+      -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      72,    73,    74,    75,    76,    -1,    -1,    79,    80,    81,
+      82,    83,    84,    85,    86,    -1,    -1,    -1,    90,    -1,
+      -1,    -1,    94,    95,    -1,    -1,    -1,    -1,   100,    -1,
+     102,    -1,   104,     4,     5,     6,     7,     8,     9,    10,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
       31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
@@ -1573,57 +1540,57 @@ static const yytype_int16 yycheck[] =
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
       -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
       81,    82,    83,    84,    85,    86,    -1,    -1,    -1,    90,
-      91,    92,    93,    94,    95,    96,    97,    -1,    -1,   100,
+      91,    92,    93,    94,    95,    96,    97,    -1,    99,   100,
       -1,   102,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
-      -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    -1,    -1,    -1,    90,    -1,
-      -1,    -1,    94,    95,    -1,    -1,    -1,    -1,   100,    -1,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      72,    73,    74,    75,    76,    -1,    -1,    79,    80,    81,
+      82,    83,    84,    85,    86,    -1,    -1,    -1,    90,    91,
+      92,    93,    94,    95,    96,    97,    -1,    99,   100,    -1,
      102,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    -1,    36,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
+      33,    34,    -1,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
       73,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    85,    86,    -1,    -1,    -1,    90,    -1,    -1,
-      -1,    94,    95,    -1,    -1,    -1,    -1,   100,   101,   102,
+      83,    84,    85,    86,    -1,    -1,    -1,    90,    91,    92,
+      93,    94,    95,    96,    97,    -1,    99,   100,    -1,   102,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    36,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
+      34,    -1,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
       64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    85,    86,    -1,    -1,    -1,    90,    -1,    -1,    -1,
-      94,    95,    -1,    -1,    -1,    -1,   100,   101,   102,     4,
+      84,    85,    86,    -1,    -1,    -1,    90,    91,    92,    93,
+      94,    95,    96,    97,    -1,    99,   100,    -1,   102,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      -1,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
-      -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
+      -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    -1,    72,    73,    74,
       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      85,    86,    -1,    -1,    -1,    90,    -1,    -1,    -1,    94,
-      95,    -1,    -1,    -1,    -1,   100,   101,   102,     4,     5,
+      85,    86,    -1,    -1,    -1,    90,    91,    92,    93,    94,
+      95,    96,    97,    -1,    -1,   100,    -1,   102,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
       36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
       46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
       86,    -1,    -1,    -1,    90,    -1,    -1,    -1,    94,    95,
-      -1,    -1,    -1,    -1,   100,   101,   102,     4,     5,     6,
+      -1,    -1,    -1,    -1,   100,    -1,   102,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
@@ -1643,7 +1610,7 @@ static const yytype_int16 yycheck[] =
       68,    69,    70,    -1,    72,    73,    74,    75,    76,    -1,
       -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
       -1,    -1,    90,    -1,    -1,    -1,    94,    95,    -1,    -1,
-      -1,    -1,   100,    -1,   102,     4,     5,     6,     7,     8,
+      -1,    -1,   100,   101,   102,     4,     5,     6,     7,     8,
        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
@@ -1653,7 +1620,7 @@ static const yytype_int16 yycheck[] =
       69,    70,    -1,    72,    73,    74,    75,    76,    -1,    -1,
       79,    80,    81,    82,    83,    84,    85,    86,    -1,    -1,
       -1,    90,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,
-      -1,   100,    -1,   102,     4,     5,     6,     7,     8,     9,
+      -1,   100,   101,   102,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
@@ -1663,7 +1630,7 @@ static const yytype_int16 yycheck[] =
       70,    -1,    72,    73,    74,    75,    76,    -1,    -1,    79,
       80,    81,    82,    83,    84,    85,    86,    -1,    -1,    -1,
       90,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,
-     100,    -1,   102,     4,     5,     6,     7,     8,     9,    10,
+     100,   101,   102,     4,     5,     6,     7,     8,     9,    10,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
       31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
@@ -1673,7 +1640,7 @@ static const yytype_int16 yycheck[] =
       -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
       81,    82,    83,    84,    85,    86,    -1,    -1,    -1,    90,
       -1,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,   100,
-      -1,   102,     4,     5,     6,     7,     8,     9,    10,    11,
+     101,   102,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
@@ -1717,7 +1684,7 @@ static const yytype_int16 yycheck[] =
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
       36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    49,    50,    51,    -1,    53,    54,    55,
+      46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
@@ -1726,8 +1693,8 @@ static const yytype_int16 yycheck[] =
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
-      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
-      -1,    48,    49,    50,    51,    -1,    -1,    -1,    55,    56,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    51,    -1,    53,    54,    55,    56,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
       -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
@@ -1736,45 +1703,60 @@ static const yytype_int16 yycheck[] =
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    50,    51,    -1,    -1,    -1,    55,    56,    57,
+      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
       68,    69,    70,    -1,    72,    73,    74,    75,    76,    -1,
       -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
-      -1,    -1,    90,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   100,     6,   102,    -1,     9,    10,    11,    12,
-      13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    34,    35,    36,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
-      73,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    85,    -1,    87,     6,    -1,    90,    -1,    10,
-      11,    12,    13,    14,    15,    98,    17,    18,    19,    20,
-      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
-      31,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
-      41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
-      51,    -1,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    -1,    -1,    87,     6,    -1,    90,
-      -1,    10,    11,    12,    13,    14,    15,    98,    17,    18,
-      19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
-      29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
+      -1,    -1,    90,    -1,    -1,    -1,    94,    95,    -1,    -1,
+      -1,    -1,   100,    -1,   102,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
       39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,
       49,    50,    51,    -1,    53,    54,    55,    56,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
       69,    70,    -1,    72,    73,    74,    75,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    -1,    -1,    87,     6,
-      -1,    90,    -1,    10,    11,    12,    13,    14,    15,    98,
-      17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
+      79,    80,    81,    82,    83,    84,    85,    86,    -1,    -1,
+      -1,    90,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,
+      -1,   100,    -1,   102,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,
+      50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    75,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    85,    86,    -1,    -1,    -1,
+      90,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,
+     100,    -1,   102,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
+      51,    -1,    -1,    -1,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
+      81,    82,    83,    84,    85,    86,    -1,    -1,    -1,    90,
+      -1,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,   100,
+      -1,   102,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    50,    51,
+      -1,    -1,    -1,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      72,    73,    74,    75,    76,    -1,    -1,    79,    80,    81,
+      82,    83,    84,    85,    86,    -1,    -1,    -1,    90,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,     6,
+     102,    -1,     9,    10,    11,    12,    13,    14,    15,    -1,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
-      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
       47,    48,    49,    50,    51,    -1,    53,    54,    55,    56,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    -1,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    85,    -1,
       87,     6,    -1,    90,    -1,    10,    11,    12,    13,    14,
       15,    98,    17,    18,    19,    20,    21,    22,    23,    24,
       -1,    26,    27,    28,    29,    30,    31,    32,    -1,    34,
@@ -1791,33 +1773,33 @@ static const yytype_int16 yycheck[] =
       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
       73,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    -1,    -1,    -1,    -1,    -1,    90,    -1,    -1,
-      -1,    -1,    -1,     6,    -1,    98,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    -1,    36,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
-      73,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    85,    86,    -1,     6,    -1,    90,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      83,    84,    -1,    -1,    87,     6,    -1,    90,    -1,    10,
+      11,    12,    13,    14,    15,    98,    17,    18,    19,    20,
+      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
+      31,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
       41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
       51,    -1,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
       -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    85,    86,    -1,     6,    -1,    90,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
+      81,    82,    83,    84,    -1,    -1,    87,     6,    -1,    90,
+      -1,    10,    11,    12,    13,    14,    15,    98,    17,    18,
+      19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
       39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,
       49,    50,    51,    -1,    53,    54,    55,    56,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
       69,    70,    -1,    72,    73,    74,    75,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    85,    86,    -1,     6,
-      -1,    90,     9,    10,    11,    12,    13,    14,    15,    16,
+      79,    80,    81,    82,    83,    84,    -1,    -1,    87,     6,
+      -1,    90,    -1,    10,    11,    12,    13,    14,    15,    98,
+      17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
+      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    51,    -1,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    -1,
+      -1,    -1,    -1,    90,    -1,    -1,    -1,    -1,    -1,     6,
+      -1,    98,     9,    10,    11,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
       37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
@@ -1825,75 +1807,103 @@ static const yytype_int16 yycheck[] =
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
       -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
-       6,    -1,    -1,    90,    10,    11,    12,    13,    14,    15,
-      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    -1,
-      26,    27,    28,    29,    30,    31,    32,    -1,    34,    -1,
-      36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
-      76,    28,    -1,    79,    80,    81,    82,    34,    84,    -1,
-      -1,    -1,    -1,    -1,    90,    42,    43,    44,    45,    46,
-      47,    28,    49,    -1,    -1,    52,    53,    54,    -1,    -1,
-      -1,    -1,    -1,    -1,    28,    42,    43,    44,    45,    46,
-      47,    -1,    49,    -1,    -1,    52,    53,    54,    42,    43,
-      44,    45,    46,    47,    -1,    49,    -1,    28,    52,    53,
-      54,    -1,    -1,    -1,    91,    92,    93,    94,    95,    96,
-      97,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
-      -1,    52,    53,    54,    91,    92,    93,    94,    95,    96,
-      97,    28,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,
-      94,    95,    96,    97,    -1,    42,    43,    -1,    45,    46,
-      47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,    34,
+      -1,     6,    -1,    90,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      -1,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
+      85,    86,    -1,     6,    -1,    90,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    36,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
+      73,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    85,    86,    -1,     6,    -1,    90,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
+      51,    -1,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
+      81,    82,    83,    84,    85,    86,     6,    -1,    -1,    90,
+      10,    11,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    -1,    23,    24,    -1,    26,    27,    28,    29,
+      30,    31,    32,    -1,    34,    -1,    36,    37,    -1,    39,
+      40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
+      50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    75,    76,    28,    -1,    79,
+      80,    81,    82,    34,    84,    -1,    -1,    -1,    -1,    -1,
+      90,    42,    43,    44,    45,    46,    47,    28,    49,    -1,
+      -1,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
+      28,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
+      -1,    52,    53,    54,    42,    43,    44,    45,    46,    47,
+      -1,    49,    -1,    28,    52,    53,    54,    -1,    -1,    -1,
       91,    92,    93,    94,    95,    96,    97,    42,    43,    44,
       45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    33,    -1,    91,    92,    93,    94,    95,    96,
-      97,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
+      91,    92,    93,    94,    95,    96,    97,    28,    -1,    -1,
+      -1,    -1,    -1,    91,    92,    93,    94,    95,    96,    97,
+      -1,    42,    43,    44,    45,    46,    47,    -1,    49,    28,
       -1,    52,    53,    54,    -1,    -1,    91,    92,    93,    94,
-      95,    96,    97,    98,    42,    43,    44,    45,    46,    47,
-      -1,    49,    -1,    -1,    52,    53,    54,    42,    43,    44,
-      45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
-      91,    92,    93,    94,    95,    96,    97,    42,    43,    44,
+      95,    96,    97,    42,    43,    -1,    45,    46,    47,    34,
+      49,    -1,    -1,    52,    53,    54,    -1,    42,    43,    44,
       45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
+      91,    92,    93,    94,    95,    96,    97,    -1,    42,    43,
+      44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
+      54,    -1,    91,    92,    93,    94,    95,    96,    97,    -1,
+      -1,    -1,    -1,    -1,    -1,    33,    91,    92,    93,    94,
+      95,    96,    97,    98,    42,    43,    44,    45,    46,    47,
+      -1,    49,    -1,    -1,    52,    53,    54,    91,    92,    93,
+      94,    95,    96,    97,    -1,    99,    -1,   101,    42,    43,
+      44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
+      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    91,    92,    93,    94,    95,    96,    97,
-      -1,    99,    -1,   101,    -1,    -1,    91,    92,    93,    94,
-      95,    96,    97,    -1,    99,    -1,   101,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
-      95,    96,    97,    -1,    -1,    -1,   101,    42,    43,    44,
-      45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
       42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
-      52,    53,    54,    42,    43,    44,    45,    46,    47,    -1,
-      49,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
-      95,    96,    97,    -1,    99,    -1,    -1,    -1,    -1,    91,
-      92,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    93,    94,    95,    96,    97,    98,
+      52,    53,    54,    -1,    -1,    -1,    -1,    91,    92,    93,
+      94,    95,    96,    97,    -1,    99,    -1,   101,    42,    43,
+      44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
+      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
+      92,    93,    94,    95,    96,    97,    -1,    -1,    -1,   101,
       42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
-      52,    53,    54,    42,    43,    44,    45,    46,    47,    -1,
-      49,    -1,    -1,    52,    53,    54,    42,    43,    44,    45,
+      52,    53,    54,    -1,    -1,    -1,    -1,    91,    92,    93,
+      94,    95,    96,    97,    -1,    99,    42,    43,    44,    45,
       46,    47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
-      92,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    93,    94,    95,    96,    97,    98,
+      92,    93,    94,    95,    96,    97,    98,    42,    43,    44,
+      45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
       -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,
       96,    97,    98,    42,    43,    44,    45,    46,    47,    -1,
       49,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,
-      -1,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
-      -1,    52,    53,    54,    42,    43,    44,    45,    46,    47,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    96,    97,    98,    42,    43,    44,    45,    46,    47,
       -1,    49,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,
       -1,    -1,    91,    92,    93,    94,    95,    96,    97,    98,
-      81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,    92,    93,    94,    95,    96,    97,    -1,    -1,    -1,
-      -1,    -1,    -1,    91,    92,    93,    94,    95,    96,    97,
       42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
-      52,    53,    54,    42,    43,    -1,    45,    46,    47,    -1,
-      49,    -1,    -1,    52,    53,    54,    42,    43,    -1,    45,
-      -1,    -1,    -1,    49,    -1,    -1,    52,    53,    54,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
-      92,    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,
+      52,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    91,    92,    93,    94,    95,    96,    97,
+      98,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
+      -1,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,    91,
+      92,    93,    94,    95,    96,    97,    98,    42,    43,    44,
+      45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
+      81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      91,    92,    93,    94,    95,    96,    97,    42,    43,    44,
+      45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    96,    97,    42,    43,    44,    45,    -1,    -1,    -1,
+      49,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    96,    97,    42,    43,    -1,    45,    -1,    -1,    -1,
+      49,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,
       -1,    -1,    91,    92,    93,    94,    95,    96,    97,    -1,
-      -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,
-      96,    97
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    91,    92,    93,    94,    95,    96,    97
 };
 
 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
@@ -1922,46 +1932,47 @@ static const yytype_uint8 yystos[] =
      123,     0,   108,   125,   164,    98,    99,   100,   150,   163,
      150,   164,   164,   164,   164,    69,    98,    98,    98,    99,
      150,   150,   164,   164,   163,    63,    64,    65,    66,    67,
-      69,    74,   118,   164,   163,   163,   101,   164,     4,     5,
-       7,     8,   104,   118,   160,   161,   164,   168,   169,   100,
-      98,    98,    28,    42,    43,    44,    45,    46,    47,    49,
-      52,    53,    54,    91,    92,    93,    94,    95,    96,    97,
-      99,   126,   143,   165,   167,    98,   164,    33,    46,    47,
-      49,    53,    54,   119,    98,    98,    24,    50,    51,   118,
-     164,   118,    34,    44,   129,    98,    98,    36,    98,    98,
-      98,    34,    98,    98,   119,    98,   118,   101,   164,    28,
-      34,    28,    34,    28,    34,    28,    34,    55,    57,    59,
-      61,   148,   118,    28,   165,    68,    76,    68,    76,    68,
-      76,    68,    76,    68,    76,    28,    28,    81,    82,    99,
-     101,   104,   104,   104,   104,   103,   104,    99,   103,   103,
-      99,   101,   169,    26,   164,   164,   164,   164,   164,   164,
+      69,    74,   118,   164,   163,   163,     6,   101,   164,     4,
+       5,     7,     8,   104,   118,   160,   161,   164,   168,   169,
+     100,    98,    98,    28,    42,    43,    44,    45,    46,    47,
+      49,    52,    53,    54,    91,    92,    93,    94,    95,    96,
+      97,    99,   126,   143,   165,   167,    98,   164,    33,    46,
+      47,    49,    53,    54,   119,    98,    98,    24,    50,    51,
+     118,   164,   118,    34,    44,   129,    98,    98,    36,    98,
+      98,    98,    34,    98,    98,   119,    98,   118,   101,   164,
+      28,    34,    28,    34,    28,    34,    28,    34,    55,    57,
+      59,    61,   148,   118,    28,   165,    68,    76,    68,    76,
+      68,    76,    68,    76,    68,    76,    28,    28,    81,    82,
+     169,    99,   101,   104,   104,   104,   104,   103,   104,    99,
+     103,   103,    99,   101,   169,    26,   164,   164,   164,   164,
      164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   169,    42,    43,    44,    45,    46,    47,    49,    52,
-      53,    54,    91,    92,    93,    94,    95,    96,    97,    99,
-     126,    98,   121,    98,    75,   144,   145,   147,   145,   145,
-      23,    44,    98,    28,   164,     9,    86,    98,   111,   112,
-     113,   114,   164,   123,    98,   121,   137,   138,   139,    98,
-      99,   163,   164,   163,   164,   163,   164,   163,   164,    23,
-      28,   156,    26,    56,    58,    60,    62,    70,    71,    72,
-      73,    77,    78,    79,    80,   152,   153,   163,   152,   163,
-     163,   101,   169,   164,   164,   164,   164,   164,   161,   164,
-     164,    99,   126,   164,   126,   164,   164,   164,   164,   164,
+     164,   164,   164,   169,    42,    43,    44,    45,    46,    47,
+      49,    52,    53,    54,    91,    92,    93,    94,    95,    96,
+      97,    99,   126,    98,   121,    98,    75,   144,   145,   147,
+     145,   145,    23,    44,    98,    28,   164,     9,    86,    98,
+     111,   112,   113,   114,   164,   123,    98,   121,   137,   138,
+     139,    98,    99,   163,   164,   163,   164,   163,   164,   163,
+     164,    23,    28,   156,    26,    56,    58,    60,    62,    70,
+      71,    72,    73,    77,    78,    79,    80,   152,   153,   163,
+     152,   163,   163,    99,   126,   101,   169,   164,   164,   164,
+     164,   164,   161,   164,   164,   126,   164,   126,   164,   164,
      164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   169,    98,   122,   140,   141,   142,    16,   137,
-      98,    98,    98,   164,   164,   137,    70,    72,    79,    80,
-     158,   163,    98,   116,   118,   114,    98,    89,   139,   137,
-     101,   169,    28,    28,    28,    28,   163,   164,   156,   156,
-     156,   156,   163,   163,   156,   163,   163,   126,   101,   126,
-      16,    87,   133,   142,    98,   121,    98,    15,    34,    88,
-     163,   166,   167,   166,   166,   166,    98,   119,    98,     9,
-     126,   163,   163,   163,   163,   163,   163,   163,   163,    28,
-      70,   153,   101,    98,   121,    98,   140,   137,    34,   164,
-      98,    42,    43,    45,    46,    47,    49,    52,    53,    54,
-      91,    92,    93,    94,    95,    96,    97,    28,    98,   116,
-     101,    70,   140,   133,    88,   164,    98,   166,   166,   166,
-     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
-     166,   166,   166,    70,   137,    98,   163,   133,    98,    98,
-     137,   166,   137,    88,    88,    98,    98
+     164,   164,   164,   164,   164,   169,    98,   122,   140,   141,
+     142,    16,   137,    98,    98,    98,   164,   164,   137,    70,
+      72,    79,    80,   158,   163,    98,   116,   118,   114,    98,
+      89,   139,   137,   101,   169,    28,    28,    28,    28,   163,
+     164,   156,   156,   156,   156,   163,   163,   156,   163,   163,
+     101,   126,   101,   126,    16,    87,   133,   142,    98,   121,
+      98,    15,    34,    88,   163,   166,   167,   166,   166,   166,
+      98,   119,    98,     9,   126,   163,   163,   163,   163,   163,
+     163,   163,   163,    28,    70,   153,   101,    98,   121,    98,
+     140,   137,    34,   164,    98,    42,    43,    45,    46,    47,
+      49,    52,    53,    54,    91,    92,    93,    94,    95,    96,
+      97,    28,    98,   116,   101,    70,   140,   133,    88,   164,
+      98,   166,   166,   166,   166,   166,   166,   166,   166,   166,
+     166,   166,   166,   166,   166,   166,   166,    70,   137,    98,
+     163,   133,    98,    98,   137,   166,   137,    88,    88,    98,
+      98
 };
 
 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
@@ -1980,27 +1991,27 @@ static const yytype_uint8 yyr1[] =
      119,   120,   120,   121,   121,   122,   122,   122,   122,   122,
      122,   123,   123,   123,   124,   124,   124,   124,   124,   124,
      124,   124,   124,   124,   124,   124,   124,   124,   125,   125,
-     125,   125,   125,   125,   125,   125,   126,   126,   127,   127,
-     127,   127,   127,   128,   128,   128,   128,   129,   129,   130,
-     130,   130,   131,   131,   132,   132,   132,   132,   133,   133,
-     134,   134,   134,   134,   135,   135,   136,   137,   137,   138,
-     138,   139,   139,   140,   140,   141,   141,   142,   142,   143,
+     125,   125,   125,   125,   125,   125,   125,   126,   126,   127,
+     127,   127,   127,   127,   128,   128,   128,   128,   129,   129,
+     130,   130,   130,   131,   131,   132,   132,   132,   132,   133,
+     133,   134,   134,   134,   134,   135,   135,   136,   137,   137,
+     138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
      143,   143,   143,   143,   143,   143,   143,   143,   143,   143,
-     143,   143,   144,   145,   145,   146,   146,   147,   147,   147,
-     147,   147,   147,   147,   147,   147,   147,   147,   148,   148,
-     148,   148,   149,   149,   150,   150,   150,   150,   151,   151,
-     151,   151,   151,   152,   152,   152,   152,   152,   153,   154,
-     154,   154,   154,   154,   154,   154,   154,   154,   154,   155,
-     155,   155,   155,   155,   155,   155,   155,   156,   156,   157,
-     157,   158,   158,   158,   158,   158,   159,   159,   159,   160,
-     160,   160,   161,   161,   161,   161,   161,   162,   162,   163,
-     163,   164,   164,   164,   164,   164,   164,   164,   164,   164,
+     143,   143,   143,   144,   145,   145,   146,   146,   147,   147,
+     147,   147,   147,   147,   147,   147,   147,   147,   147,   148,
+     148,   148,   148,   149,   149,   150,   150,   150,   150,   151,
+     151,   151,   151,   151,   152,   152,   152,   152,   152,   153,
+     154,   154,   154,   154,   154,   154,   154,   154,   154,   154,
+     155,   155,   155,   155,   155,   155,   155,   155,   156,   156,
+     157,   157,   158,   158,   158,   158,   158,   159,   159,   159,
+     160,   160,   160,   161,   161,   161,   161,   161,   162,   162,
+     163,   163,   164,   164,   164,   164,   164,   164,   164,   164,
      164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
+     164,   165,   165,   165,   165,   165,   165,   165,   165,   165,
      165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
-     165,   165,   165,   165,   165,   165,   165,   165,   165,   166,
      166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
-     166,   166,   166,   166,   166,   166,   166,   167,   167,   168,
-     168,   169,   169
+     166,   166,   166,   166,   166,   166,   166,   166,   167,   167,
+     168,   168,   169,   169
 };
 
 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
@@ -2019,27 +2030,27 @@ static const yytype_int8 yyr2[] =
        2,     1,     3,     1,     2,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     3,     3,     3,     3,     3,     3,
        3,     5,     3,     3,     2,     3,     3,     2,     0,     2,
-       4,     3,     5,     2,     4,     6,     0,     1,     2,     2,
-       5,     4,     3,     5,     5,     5,     5,     1,     1,     3,
-       3,     3,     4,     6,     6,     8,     7,     9,     0,     2,
-       7,    11,    12,     9,     4,     6,     2,     0,     1,     1,
-       2,     1,     1,     0,     1,     1,     2,     1,     1,     1,
-       1,     1,     1,     2,     3,     5,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     4,
-       6,     4,     6,     4,     6,     4,     6,     5,     1,     1,
-       1,     1,     2,     2,     1,     2,     4,     6,     2,     4,
-       4,     1,     1,     1,     1,     5,     2,     2,     2,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     6,
-       6,     6,     6,     6,     4,     4,     4,     1,     1,     2,
-       4,     1,     2,     5,     2,     2,     3,     3,     3,     1,
-       3,     3,     3,     3,     3,     3,     3,     2,     2,     1,
-       1,     1,     1,     3,     3,     3,     3,     3,     3,     3,
+       4,     3,     5,     2,     4,     6,     5,     0,     1,     2,
+       2,     5,     4,     3,     5,     5,     5,     5,     1,     1,
+       3,     3,     3,     4,     6,     6,     8,     7,     9,     0,
+       2,     7,    11,    12,     9,     4,     6,     2,     0,     1,
+       1,     2,     1,     1,     0,     1,     1,     2,     1,     1,
+       1,     1,     1,     1,     2,     3,     5,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       4,     6,     4,     6,     4,     6,     4,     6,     5,     1,
+       1,     1,     1,     2,     2,     1,     2,     4,     6,     2,
+       4,     4,     1,     1,     1,     1,     5,     2,     2,     2,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       6,     6,     6,     6,     6,     4,     4,     4,     1,     1,
+       2,     4,     1,     2,     5,     2,     2,     3,     3,     3,
+       1,     3,     3,     3,     3,     3,     3,     3,     2,     2,
+       1,     1,     1,     1,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     1,     1,     3,     3,     3,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
        1,     1,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     1,
-       1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     4,     4,     0,
-       1,     1,     3
+       3,     3,     3,     3,     3,     3,     3,     3,     4,     4,
+       0,     1,     1,     3
 };
 
 
@@ -2307,37 +2318,37 @@ yydestruct (const char *yymsg,
     case YYSYMBOL_tVARID: /* tVARID  */
 #line 194 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2311 "engines/director/lingo/lingo-gr.cpp"
+#line 2322 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tSTRING: /* tSTRING  */
 #line 194 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2317 "engines/director/lingo/lingo-gr.cpp"
+#line 2328 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tSYMBOL: /* tSYMBOL  */
 #line 194 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2323 "engines/director/lingo/lingo-gr.cpp"
+#line 2334 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tENDCLAUSE: /* tENDCLAUSE  */
 #line 194 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2329 "engines/director/lingo/lingo-gr.cpp"
+#line 2340 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_CMDID: /* CMDID  */
 #line 194 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2335 "engines/director/lingo/lingo-gr.cpp"
+#line 2346 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_ID: /* ID  */
 #line 194 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2341 "engines/director/lingo/lingo-gr.cpp"
+#line 2352 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2607,7 +2618,7 @@ yyreduce:
   case 2: /* script: scriptpartlist  */
 #line 200 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->_compiler->_assemblyAST = new ScriptNode((yyvsp[0].nodelist)); }
-#line 2611 "engines/director/lingo/lingo-gr.cpp"
+#line 2622 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 3: /* scriptpartlist: scriptpart  */
@@ -2618,7 +2629,7 @@ yyreduce:
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 2622 "engines/director/lingo/lingo-gr.cpp"
+#line 2633 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 4: /* scriptpartlist: scriptpartlist scriptpart  */
@@ -2628,43 +2639,43 @@ yyreduce:
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 2632 "engines/director/lingo/lingo-gr.cpp"
+#line 2643 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 5: /* scriptpart: '\n'  */
 #line 215 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = nullptr; }
-#line 2638 "engines/director/lingo/lingo-gr.cpp"
+#line 2649 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10: /* scriptpart: tENDCLAUSE endargdef '\n'  */
 #line 220 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = nullptr; delete (yyvsp[-2].s); }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
+#line 2655 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11: /* macro: tMACRO ID idlist '\n' stmtlist  */
 #line 249 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2650 "engines/director/lingo/lingo-gr.cpp"
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12: /* factory: tFACTORY ID '\n' methodlist  */
 #line 253 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new FactoryNode((yyvsp[-2].s), (yyvsp[0].nodelist)); }
-#line 2656 "engines/director/lingo/lingo-gr.cpp"
+#line 2667 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13: /* method: tMETHOD ID idlist '\n' stmtlist  */
 #line 255 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2662 "engines/director/lingo/lingo-gr.cpp"
+#line 2673 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14: /* methodlist: %empty  */
 #line 257 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.nodelist) = new NodeList; }
-#line 2668 "engines/director/lingo/lingo-gr.cpp"
+#line 2679 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16: /* nonemptymethodlist: methodlistline  */
@@ -2675,7 +2686,7 @@ yyreduce:
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 2679 "engines/director/lingo/lingo-gr.cpp"
+#line 2690 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17: /* nonemptymethodlist: nonemptymethodlist methodlistline  */
@@ -2685,19 +2696,19 @@ yyreduce:
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 2689 "engines/director/lingo/lingo-gr.cpp"
+#line 2700 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18: /* methodlistline: '\n'  */
 #line 274 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = nullptr; }
-#line 2695 "engines/director/lingo/lingo-gr.cpp"
+#line 2706 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20: /* methodlistline: tENDCLAUSE endargdef '\n'  */
 #line 276 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = nullptr; delete (yyvsp[-2].s); }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2712 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21: /* handler: tON ID idlist '\n' stmtlist tENDCLAUSE endargdef '\n'  */
@@ -2706,452 +2717,452 @@ yyreduce:
 		(yyval.node) = new HandlerNode((yyvsp[-6].s), (yyvsp[-5].idlist), (yyvsp[-3].nodelist));
 		checkEnd((yyvsp[-2].s), (yyvsp[-6].s), false);
 		delete (yyvsp[-2].s); }
-#line 2710 "engines/director/lingo/lingo-gr.cpp"
+#line 2721 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22: /* handler: tON ID idlist '\n' stmtlist  */
 #line 285 "engines/director/lingo/lingo-gr.y"
                                       {	// D4. No 'end' clause
 		(yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2717 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24: /* endargdef: ID  */
 #line 290 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 2723 "engines/director/lingo/lingo-gr.cpp"
+#line 2734 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25: /* endargdef: endargdef ',' ID  */
 #line 291 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 2729 "engines/director/lingo/lingo-gr.cpp"
+#line 2740 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27: /* CMDID: tABBREVIATED  */
 #line 299 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("abbreviated"); }
-#line 2735 "engines/director/lingo/lingo-gr.cpp"
+#line 2746 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28: /* CMDID: tABBREV  */
 #line 300 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("abbrev"); }
-#line 2741 "engines/director/lingo/lingo-gr.cpp"
+#line 2752 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29: /* CMDID: tABBR  */
 #line 301 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("abbr"); }
-#line 2747 "engines/director/lingo/lingo-gr.cpp"
+#line 2758 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30: /* CMDID: tAFTER  */
 #line 302 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("after"); }
-#line 2753 "engines/director/lingo/lingo-gr.cpp"
+#line 2764 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31: /* CMDID: tAND  */
 #line 303 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("and"); }
-#line 2759 "engines/director/lingo/lingo-gr.cpp"
+#line 2770 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32: /* CMDID: tBEFORE  */
 #line 304 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("before"); }
-#line 2765 "engines/director/lingo/lingo-gr.cpp"
+#line 2776 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33: /* CMDID: tCAST  */
 #line 305 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2771 "engines/director/lingo/lingo-gr.cpp"
+#line 2782 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34: /* CMDID: tCHAR  */
 #line 306 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("char"); }
-#line 2777 "engines/director/lingo/lingo-gr.cpp"
+#line 2788 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35: /* CMDID: tCHARS  */
 #line 307 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("chars"); }
-#line 2783 "engines/director/lingo/lingo-gr.cpp"
+#line 2794 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36: /* CMDID: tCONTAINS  */
 #line 308 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("contains"); }
-#line 2789 "engines/director/lingo/lingo-gr.cpp"
+#line 2800 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37: /* CMDID: tDATE  */
 #line 309 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("date"); }
-#line 2795 "engines/director/lingo/lingo-gr.cpp"
+#line 2806 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38: /* CMDID: tDELETE  */
 #line 310 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("delete"); }
-#line 2801 "engines/director/lingo/lingo-gr.cpp"
+#line 2812 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39: /* CMDID: tDOWN  */
 #line 311 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("down"); }
-#line 2807 "engines/director/lingo/lingo-gr.cpp"
+#line 2818 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40: /* CMDID: tFIELD  */
 #line 312 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2813 "engines/director/lingo/lingo-gr.cpp"
+#line 2824 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41: /* CMDID: tFRAME  */
 #line 313 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("frame"); }
-#line 2819 "engines/director/lingo/lingo-gr.cpp"
+#line 2830 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42: /* CMDID: tHILITE  */
 #line 314 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("hilite"); }
-#line 2825 "engines/director/lingo/lingo-gr.cpp"
+#line 2836 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43: /* CMDID: tIN  */
 #line 315 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("in"); }
-#line 2831 "engines/director/lingo/lingo-gr.cpp"
+#line 2842 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44: /* CMDID: tINTERSECTS  */
 #line 316 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("intersects"); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 2848 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45: /* CMDID: tINTO  */
 #line 317 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("into"); }
-#line 2843 "engines/director/lingo/lingo-gr.cpp"
+#line 2854 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46: /* CMDID: tITEM  */
 #line 318 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("item"); }
-#line 2849 "engines/director/lingo/lingo-gr.cpp"
+#line 2860 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47: /* CMDID: tITEMS  */
 #line 319 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("items"); }
-#line 2855 "engines/director/lingo/lingo-gr.cpp"
+#line 2866 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48: /* CMDID: tLAST  */
 #line 320 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("last"); }
-#line 2861 "engines/director/lingo/lingo-gr.cpp"
+#line 2872 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49: /* CMDID: tLINE  */
 #line 321 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("line"); }
-#line 2867 "engines/director/lingo/lingo-gr.cpp"
+#line 2878 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50: /* CMDID: tLINES  */
 #line 322 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("lines"); }
-#line 2873 "engines/director/lingo/lingo-gr.cpp"
+#line 2884 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51: /* CMDID: tLONG  */
 #line 323 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("long"); }
-#line 2879 "engines/director/lingo/lingo-gr.cpp"
+#line 2890 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52: /* CMDID: tMENU  */
 #line 324 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("menu"); }
-#line 2885 "engines/director/lingo/lingo-gr.cpp"
+#line 2896 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53: /* CMDID: tMENUITEM  */
 #line 325 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("menuItem"); }
-#line 2891 "engines/director/lingo/lingo-gr.cpp"
+#line 2902 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54: /* CMDID: tMENUITEMS  */
 #line 326 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("menuItems"); }
-#line 2897 "engines/director/lingo/lingo-gr.cpp"
+#line 2908 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55: /* CMDID: tMOD  */
 #line 327 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("mod"); }
-#line 2903 "engines/director/lingo/lingo-gr.cpp"
+#line 2914 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56: /* CMDID: tMOVIE  */
 #line 328 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("movie"); }
-#line 2909 "engines/director/lingo/lingo-gr.cpp"
+#line 2920 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57: /* CMDID: tNEXT  */
 #line 329 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("next"); }
-#line 2915 "engines/director/lingo/lingo-gr.cpp"
+#line 2926 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58: /* CMDID: tNOT  */
 #line 330 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("not"); }
-#line 2921 "engines/director/lingo/lingo-gr.cpp"
+#line 2932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59: /* CMDID: tNUMBER  */
 #line 331 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("number"); }
-#line 2927 "engines/director/lingo/lingo-gr.cpp"
+#line 2938 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60: /* CMDID: tOF  */
 #line 332 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("of"); }
-#line 2933 "engines/director/lingo/lingo-gr.cpp"
+#line 2944 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61: /* CMDID: tOR  */
 #line 333 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("or"); }
-#line 2939 "engines/director/lingo/lingo-gr.cpp"
+#line 2950 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62: /* CMDID: tPREVIOUS  */
 #line 334 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("previous"); }
-#line 2945 "engines/director/lingo/lingo-gr.cpp"
+#line 2956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63: /* CMDID: tREPEAT  */
 #line 335 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("repeat"); }
-#line 2951 "engines/director/lingo/lingo-gr.cpp"
+#line 2962 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64: /* CMDID: tSCRIPT  */
 #line 336 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2957 "engines/director/lingo/lingo-gr.cpp"
+#line 2968 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65: /* CMDID: tASSERTERROR  */
 #line 337 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("scummvmAssertError"); }
-#line 2963 "engines/director/lingo/lingo-gr.cpp"
+#line 2974 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66: /* CMDID: tSHORT  */
 #line 338 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("short"); }
-#line 2969 "engines/director/lingo/lingo-gr.cpp"
+#line 2980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67: /* CMDID: tSOUND  */
 #line 339 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("sound"); }
-#line 2975 "engines/director/lingo/lingo-gr.cpp"
+#line 2986 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68: /* CMDID: tSPRITE  */
 #line 340 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("sprite"); }
-#line 2981 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69: /* CMDID: tSTARTS  */
 #line 341 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("starts"); }
-#line 2987 "engines/director/lingo/lingo-gr.cpp"
+#line 2998 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70: /* CMDID: tTHE  */
 #line 342 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("the"); }
-#line 2993 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71: /* CMDID: tTIME  */
 #line 343 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("time"); }
-#line 2999 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72: /* CMDID: tTO  */
 #line 344 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("to"); }
-#line 3005 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73: /* CMDID: tWHILE  */
 #line 345 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("while"); }
-#line 3011 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74: /* CMDID: tWINDOW  */
 #line 346 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 3017 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75: /* CMDID: tWITH  */
 #line 347 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("with"); }
-#line 3023 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76: /* CMDID: tWITHIN  */
 #line 348 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("within"); }
-#line 3029 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77: /* CMDID: tWORD  */
 #line 349 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("word"); }
-#line 3035 "engines/director/lingo/lingo-gr.cpp"
+#line 3046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78: /* CMDID: tWORDS  */
 #line 350 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("words"); }
-#line 3041 "engines/director/lingo/lingo-gr.cpp"
+#line 3052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80: /* ID: tELSE  */
 #line 354 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("else"); }
-#line 3047 "engines/director/lingo/lingo-gr.cpp"
+#line 3058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81: /* ID: tENDCLAUSE  */
 #line 355 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("end"); delete (yyvsp[0].s); }
-#line 3053 "engines/director/lingo/lingo-gr.cpp"
+#line 3064 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82: /* ID: tEXIT  */
 #line 356 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("exit"); }
-#line 3059 "engines/director/lingo/lingo-gr.cpp"
+#line 3070 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83: /* ID: tFACTORY  */
 #line 357 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("factory"); }
-#line 3065 "engines/director/lingo/lingo-gr.cpp"
+#line 3076 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84: /* ID: tGLOBAL  */
 #line 358 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("global"); }
-#line 3071 "engines/director/lingo/lingo-gr.cpp"
+#line 3082 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85: /* ID: tGO  */
 #line 359 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("go"); }
-#line 3077 "engines/director/lingo/lingo-gr.cpp"
+#line 3088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86: /* ID: tIF  */
 #line 360 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("if"); }
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3094 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87: /* ID: tINSTANCE  */
 #line 361 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("instance"); }
-#line 3089 "engines/director/lingo/lingo-gr.cpp"
+#line 3100 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88: /* ID: tMACRO  */
 #line 362 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("macro"); }
-#line 3095 "engines/director/lingo/lingo-gr.cpp"
+#line 3106 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89: /* ID: tMETHOD  */
 #line 363 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("method"); }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3112 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90: /* ID: tON  */
 #line 364 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("on"); }
-#line 3107 "engines/director/lingo/lingo-gr.cpp"
+#line 3118 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91: /* ID: tOPEN  */
 #line 365 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("open"); }
-#line 3113 "engines/director/lingo/lingo-gr.cpp"
+#line 3124 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92: /* ID: tPLAY  */
 #line 366 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("play"); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3130 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93: /* ID: tPROPERTY  */
 #line 367 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("property"); }
-#line 3125 "engines/director/lingo/lingo-gr.cpp"
+#line 3136 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94: /* ID: tPUT  */
 #line 368 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("put"); }
-#line 3131 "engines/director/lingo/lingo-gr.cpp"
+#line 3142 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95: /* ID: tSET  */
 #line 369 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("set"); }
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3148 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96: /* ID: tTELL  */
 #line 370 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("tell"); }
-#line 3143 "engines/director/lingo/lingo-gr.cpp"
+#line 3154 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97: /* ID: tTHEN  */
 #line 371 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("then"); }
-#line 3149 "engines/director/lingo/lingo-gr.cpp"
+#line 3160 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98: /* idlist: %empty  */
 #line 374 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.idlist) = new IDList; }
-#line 3155 "engines/director/lingo/lingo-gr.cpp"
+#line 3166 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101: /* nonemptyidlist: ID  */
@@ -3160,7 +3171,7 @@ yyreduce:
 		Common::Array<Common::String *> *list = new IDList;
 		list->push_back((yyvsp[0].s));
 		(yyval.idlist) = list; }
-#line 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3175 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102: /* nonemptyidlist: nonemptyidlist ',' ID  */
@@ -3168,55 +3179,55 @@ yyreduce:
                                                         {
 		(yyvsp[-2].idlist)->push_back((yyvsp[0].s));
 		(yyval.idlist) = (yyvsp[-2].idlist); }
-#line 3172 "engines/director/lingo/lingo-gr.cpp"
+#line 3183 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104: /* stmt: tENDIF '\n'  */
 #line 394 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = nullptr; }
-#line 3178 "engines/director/lingo/lingo-gr.cpp"
+#line 3189 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114: /* proc: CMDID cmdargs '\n'  */
 #line 410 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode((yyvsp[-2].s), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3184 "engines/director/lingo/lingo-gr.cpp"
+#line 3195 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115: /* proc: tPUT cmdargs '\n'  */
 #line 411 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new CmdNode(new Common::String("put"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3201 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116: /* proc: tGO cmdargs '\n'  */
 #line 412 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3196 "engines/director/lingo/lingo-gr.cpp"
+#line 3207 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117: /* proc: tGO frameargs '\n'  */
 #line 413 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3202 "engines/director/lingo/lingo-gr.cpp"
+#line 3213 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118: /* proc: tPLAY cmdargs '\n'  */
 #line 414 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3208 "engines/director/lingo/lingo-gr.cpp"
+#line 3219 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119: /* proc: tPLAY frameargs '\n'  */
 #line 415 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3214 "engines/director/lingo/lingo-gr.cpp"
+#line 3225 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120: /* proc: tOPEN cmdargs '\n'  */
 #line 416 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("open"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3220 "engines/director/lingo/lingo-gr.cpp"
+#line 3231 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121: /* proc: tOPEN expr tWITH expr '\n'  */
@@ -3226,43 +3237,43 @@ yyreduce:
 		args->push_back((yyvsp[-3].node));
 		args->push_back((yyvsp[-1].node));
 		(yyval.node) = new CmdNode(new Common::String("open"), args, g_lingo->_compiler->_linenumber - 1); }
-#line 3230 "engines/director/lingo/lingo-gr.cpp"
+#line 3241 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122: /* proc: tNEXT tREPEAT '\n'  */
 #line 422 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new NextRepeatNode(); }
-#line 3236 "engines/director/lingo/lingo-gr.cpp"
+#line 3247 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123: /* proc: tEXIT tREPEAT '\n'  */
 #line 423 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new ExitRepeatNode(); }
-#line 3242 "engines/director/lingo/lingo-gr.cpp"
+#line 3253 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124: /* proc: tEXIT '\n'  */
 #line 424 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new ExitNode(); }
-#line 3248 "engines/director/lingo/lingo-gr.cpp"
+#line 3259 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125: /* proc: tDELETE chunk '\n'  */
 #line 425 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new DeleteNode((yyvsp[-1].node)); }
-#line 3254 "engines/director/lingo/lingo-gr.cpp"
+#line 3265 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126: /* proc: tHILITE chunk '\n'  */
 #line 426 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new HiliteNode((yyvsp[-1].node)); }
-#line 3260 "engines/director/lingo/lingo-gr.cpp"
+#line 3271 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127: /* proc: tASSERTERROR stmtoneliner  */
 #line 427 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new AssertErrorNode((yyvsp[0].node)); }
-#line 3266 "engines/director/lingo/lingo-gr.cpp"
+#line 3277 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128: /* cmdargs: %empty  */
@@ -3270,7 +3281,7 @@ yyreduce:
                                                                                         {
 		// This matches `cmd`
 		(yyval.nodelist) = new NodeList; }
-#line 3274 "engines/director/lingo/lingo-gr.cpp"
+#line 3285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129: /* cmdargs: expr trailingcomma  */
@@ -3280,7 +3291,7 @@ yyreduce:
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[-1].node));
 		(yyval.nodelist) = args; }
-#line 3284 "engines/director/lingo/lingo-gr.cpp"
+#line 3295 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130: /* cmdargs: expr ',' nonemptyexprlist trailingcomma  */
@@ -3289,7 +3300,7 @@ yyreduce:
 		// This matches `cmd args, ...)
 		(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-3].node));
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3293 "engines/director/lingo/lingo-gr.cpp"
+#line 3304 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131: /* cmdargs: expr expr_nounarymath trailingcomma  */
@@ -3300,7 +3311,7 @@ yyreduce:
 		args->push_back((yyvsp[-2].node));
 		args->push_back((yyvsp[-1].node));
 		(yyval.nodelist) = args; }
-#line 3304 "engines/director/lingo/lingo-gr.cpp"
+#line 3315 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132: /* cmdargs: expr expr_nounarymath ',' nonemptyexprlist trailingcomma  */
@@ -3310,7 +3321,7 @@ yyreduce:
 		(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-3].node));
 		(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3314 "engines/director/lingo/lingo-gr.cpp"
+#line 3325 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133: /* cmdargs: '(' ')'  */
@@ -3318,7 +3329,7 @@ yyreduce:
                                                                         {
 		// This matches `cmd()`
 		(yyval.nodelist) = new NodeList; }
-#line 3322 "engines/director/lingo/lingo-gr.cpp"
+#line 3333 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134: /* cmdargs: '(' expr ',' ')'  */
@@ -3328,7 +3339,7 @@ yyreduce:
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[-2].node));
 		(yyval.nodelist) = args; }
-#line 3332 "engines/director/lingo/lingo-gr.cpp"
+#line 3343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135: /* cmdargs: '(' expr ',' nonemptyexprlist trailingcomma ')'  */
@@ -3337,1088 +3348,1097 @@ yyreduce:
 		// This matches `cmd(args, ...)`
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 3341 "engines/director/lingo/lingo-gr.cpp"
+#line 3352 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 136: /* cmdargs: '(' tVARID nonemptyexprlist trailingcomma ')'  */
+#line 465 "engines/director/lingo/lingo-gr.y"
+                                                              {
+		// This matches `cmd(args ...)`
+		(yyvsp[-2].nodelist)->insert_at(0, new VarNode((yyvsp[-3].s)));
+		(yyval.nodelist) = (yyvsp[-2].nodelist); }
+#line 3361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138: /* frameargs: tFRAME expr  */
-#line 473 "engines/director/lingo/lingo-gr.y"
+  case 139: /* frameargs: tFRAME expr  */
+#line 477 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		// This matches `play frame arg`
 		NodeList *args = new NodeList;
 		args->push_back(new FrameNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3351 "engines/director/lingo/lingo-gr.cpp"
+#line 3371 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139: /* frameargs: tMOVIE expr  */
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 140: /* frameargs: tMOVIE expr  */
+#line 482 "engines/director/lingo/lingo-gr.y"
                                                                                 {
 		// This matches `play movie arg`
 		NodeList *args = new NodeList;
 		args->push_back(new IntNode(1));
 		args->push_back(new MovieNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3362 "engines/director/lingo/lingo-gr.cpp"
+#line 3382 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140: /* frameargs: tFRAME expr tOF tMOVIE expr  */
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 141: /* frameargs: tFRAME expr tOF tMOVIE expr  */
+#line 488 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		// This matches `play frame arg of movie arg`
 		NodeList *args = new NodeList;
 		args->push_back(new FrameNode((yyvsp[-3].node)));
 		args->push_back(new MovieNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3373 "engines/director/lingo/lingo-gr.cpp"
+#line 3393 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141: /* frameargs: expr tOF tMOVIE expr  */
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 142: /* frameargs: expr tOF tMOVIE expr  */
+#line 494 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		// This matches `play arg of movie arg` (weird but valid)
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[-3].node));
 		args->push_back(new MovieNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3384 "engines/director/lingo/lingo-gr.cpp"
+#line 3404 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142: /* frameargs: tFRAME expr expr_nounarymath  */
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 143: /* frameargs: tFRAME expr expr_nounarymath  */
+#line 500 "engines/director/lingo/lingo-gr.y"
                                                         {
 		// This matches `play frame arg arg` (also weird but valid)
 		NodeList *args = new NodeList;
 		args->push_back(new FrameNode((yyvsp[-1].node)));
 		args->push_back((yyvsp[0].node));
 		(yyval.nodelist) = args; }
-#line 3395 "engines/director/lingo/lingo-gr.cpp"
+#line 3415 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143: /* asgn: tPUT expr tINTO varorchunk '\n'  */
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 144: /* asgn: tPUT expr tINTO varorchunk '\n'  */
+#line 508 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new PutIntoNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3401 "engines/director/lingo/lingo-gr.cpp"
+#line 3421 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144: /* asgn: tPUT expr tAFTER varorchunk '\n'  */
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 145: /* asgn: tPUT expr tAFTER varorchunk '\n'  */
+#line 509 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PutAfterNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3407 "engines/director/lingo/lingo-gr.cpp"
+#line 3427 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145: /* asgn: tPUT expr tBEFORE varorchunk '\n'  */
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 146: /* asgn: tPUT expr tBEFORE varorchunk '\n'  */
+#line 510 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PutBeforeNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3413 "engines/director/lingo/lingo-gr.cpp"
+#line 3433 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146: /* asgn: tSET varorthe to expr '\n'  */
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 147: /* asgn: tSET varorthe to expr '\n'  */
+#line 511 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new SetNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3419 "engines/director/lingo/lingo-gr.cpp"
+#line 3439 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149: /* definevars: tGLOBAL idlist '\n'  */
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 150: /* definevars: tGLOBAL idlist '\n'  */
+#line 516 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new GlobalNode((yyvsp[-1].idlist)); }
-#line 3425 "engines/director/lingo/lingo-gr.cpp"
+#line 3445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150: /* definevars: tPROPERTY idlist '\n'  */
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 151: /* definevars: tPROPERTY idlist '\n'  */
+#line 517 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new PropertyNode((yyvsp[-1].idlist)); }
-#line 3431 "engines/director/lingo/lingo-gr.cpp"
+#line 3451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151: /* definevars: tINSTANCE idlist '\n'  */
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 152: /* definevars: tINSTANCE idlist '\n'  */
+#line 518 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new InstanceNode((yyvsp[-1].idlist)); }
-#line 3437 "engines/director/lingo/lingo-gr.cpp"
+#line 3457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152: /* ifstmt: tIF expr tTHEN stmt  */
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 153: /* ifstmt: tIF expr tTHEN stmt  */
+#line 521 "engines/director/lingo/lingo-gr.y"
                             {
 		NodeList *stmtlist = new NodeList;
 		stmtlist->push_back((yyvsp[0].node));
 		(yyval.node) = new IfStmtNode((yyvsp[-2].node), stmtlist); }
-#line 3446 "engines/director/lingo/lingo-gr.cpp"
+#line 3466 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153: /* ifstmt: tIF expr tTHEN '\n' stmtlist_insideif endif  */
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 154: /* ifstmt: tIF expr tTHEN '\n' stmtlist_insideif endif  */
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                       {
 		(yyval.node) = new IfStmtNode((yyvsp[-4].node), (yyvsp[-1].nodelist)); }
-#line 3453 "engines/director/lingo/lingo-gr.cpp"
+#line 3473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154: /* ifelsestmt: tIF expr tTHEN stmt tELSE stmt  */
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 155: /* ifelsestmt: tIF expr tTHEN stmt tELSE stmt  */
+#line 529 "engines/director/lingo/lingo-gr.y"
                                                          {
 		NodeList *stmtlist1 = new NodeList;
 		stmtlist1->push_back((yyvsp[-2].node));
 		NodeList *stmtlist2 = new NodeList;
 		stmtlist2->push_back((yyvsp[0].node));
 		(yyval.node) = new IfElseStmtNode((yyvsp[-4].node), stmtlist1, stmtlist2); }
-#line 3464 "engines/director/lingo/lingo-gr.cpp"
+#line 3484 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155: /* ifelsestmt: tIF expr tTHEN stmt tELSE '\n' stmtlist_insideif endif  */
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 156: /* ifelsestmt: tIF expr tTHEN stmt tELSE '\n' stmtlist_insideif endif  */
+#line 535 "engines/director/lingo/lingo-gr.y"
                                                                                    {
 		NodeList *stmtlist1 = new NodeList;
 		stmtlist1->push_back((yyvsp[-4].node));
 		(yyval.node) = new IfElseStmtNode((yyvsp[-6].node), stmtlist1, (yyvsp[-1].nodelist)); }
-#line 3473 "engines/director/lingo/lingo-gr.cpp"
+#line 3493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE stmt  */
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 157: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE stmt  */
+#line 539 "engines/director/lingo/lingo-gr.y"
                                                                              {
 		NodeList *stmtlist2 = new NodeList;
 		stmtlist2->push_back((yyvsp[0].node));
 		(yyval.node) = new IfElseStmtNode((yyvsp[-5].node), (yyvsp[-2].nodelist), stmtlist2); }
-#line 3482 "engines/director/lingo/lingo-gr.cpp"
+#line 3502 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE '\n' stmtlist_insideif endif  */
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 158: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE '\n' stmtlist_insideif endif  */
+#line 543 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		(yyval.node) = new IfElseStmtNode((yyvsp[-7].node), (yyvsp[-4].nodelist), (yyvsp[-1].nodelist)); }
-#line 3489 "engines/director/lingo/lingo-gr.cpp"
+#line 3509 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158: /* endif: %empty  */
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 159: /* endif: %empty  */
+#line 547 "engines/director/lingo/lingo-gr.y"
                         { warning("LingoCompiler::parse: no end if"); }
-#line 3495 "engines/director/lingo/lingo-gr.cpp"
+#line 3515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160: /* loop: tREPEAT tWHILE expr '\n' stmtlist tENDREPEAT '\n'  */
-#line 546 "engines/director/lingo/lingo-gr.y"
+  case 161: /* loop: tREPEAT tWHILE expr '\n' stmtlist tENDREPEAT '\n'  */
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.node) = new RepeatWhileNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3502 "engines/director/lingo/lingo-gr.cpp"
+#line 3522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161: /* loop: tREPEAT tWITH ID tEQ expr tTO expr '\n' stmtlist tENDREPEAT '\n'  */
-#line 548 "engines/director/lingo/lingo-gr.y"
+  case 162: /* loop: tREPEAT tWITH ID tEQ expr tTO expr '\n' stmtlist tENDREPEAT '\n'  */
+#line 552 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		(yyval.node) = new RepeatWithToNode((yyvsp[-8].s), (yyvsp[-6].node), false, (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3509 "engines/director/lingo/lingo-gr.cpp"
+#line 3529 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162: /* loop: tREPEAT tWITH ID tEQ expr tDOWN tTO expr '\n' stmtlist tENDREPEAT '\n'  */
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 163: /* loop: tREPEAT tWITH ID tEQ expr tDOWN tTO expr '\n' stmtlist tENDREPEAT '\n'  */
+#line 554 "engines/director/lingo/lingo-gr.y"
                                                                                              {
 		(yyval.node) = new RepeatWithToNode((yyvsp[-9].s), (yyvsp[-7].node), true, (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3516 "engines/director/lingo/lingo-gr.cpp"
+#line 3536 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163: /* loop: tREPEAT tWITH ID tIN expr '\n' stmtlist tENDREPEAT '\n'  */
-#line 552 "engines/director/lingo/lingo-gr.y"
+  case 164: /* loop: tREPEAT tWITH ID tIN expr '\n' stmtlist tENDREPEAT '\n'  */
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		(yyval.node) = new RepeatWithInNode((yyvsp[-6].s), (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3523 "engines/director/lingo/lingo-gr.cpp"
+#line 3543 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164: /* tell: tTELL expr tTO stmtoneliner  */
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 165: /* tell: tTELL expr tTO stmtoneliner  */
+#line 560 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		NodeList *stmtlist = new NodeList;
 		stmtlist->push_back((yyvsp[0].node));
 		(yyval.node) = new TellNode((yyvsp[-2].node), stmtlist); }
-#line 3532 "engines/director/lingo/lingo-gr.cpp"
+#line 3552 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165: /* tell: tTELL expr '\n' stmtlist tENDTELL '\n'  */
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 166: /* tell: tTELL expr '\n' stmtlist tENDTELL '\n'  */
+#line 564 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.node) = new TellNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3539 "engines/director/lingo/lingo-gr.cpp"
+#line 3559 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166: /* when: tWHEN '\n'  */
-#line 564 "engines/director/lingo/lingo-gr.y"
+  case 167: /* when: tWHEN '\n'  */
+#line 568 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new WhenNode((yyvsp[-1].w).eventName, (yyvsp[-1].w).stmt); }
-#line 3545 "engines/director/lingo/lingo-gr.cpp"
+#line 3565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167: /* stmtlist: %empty  */
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 168: /* stmtlist: %empty  */
+#line 570 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.nodelist) = new NodeList; }
-#line 3551 "engines/director/lingo/lingo-gr.cpp"
+#line 3571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169: /* nonemptystmtlist: stmtlistline  */
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 170: /* nonemptystmtlist: stmtlistline  */
+#line 575 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		NodeList *list = new NodeList;
 		if ((yyvsp[0].node)) {
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 3562 "engines/director/lingo/lingo-gr.cpp"
+#line 3582 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170: /* nonemptystmtlist: nonemptystmtlist stmtlistline  */
-#line 577 "engines/director/lingo/lingo-gr.y"
+  case 171: /* nonemptystmtlist: nonemptystmtlist stmtlistline  */
+#line 581 "engines/director/lingo/lingo-gr.y"
                                                         {
 		if ((yyvsp[0].node)) {
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3572 "engines/director/lingo/lingo-gr.cpp"
+#line 3592 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171: /* stmtlistline: '\n'  */
-#line 584 "engines/director/lingo/lingo-gr.y"
+  case 172: /* stmtlistline: '\n'  */
+#line 588 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = nullptr; }
-#line 3578 "engines/director/lingo/lingo-gr.cpp"
+#line 3598 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173: /* stmtlist_insideif: %empty  */
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 174: /* stmtlist_insideif: %empty  */
+#line 592 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.nodelist) = new NodeList; }
-#line 3584 "engines/director/lingo/lingo-gr.cpp"
+#line 3604 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175: /* nonemptystmtlist_insideif: stmtlistline_insideif  */
-#line 593 "engines/director/lingo/lingo-gr.y"
+  case 176: /* nonemptystmtlist_insideif: stmtlistline_insideif  */
+#line 597 "engines/director/lingo/lingo-gr.y"
                                                 {
 		NodeList *list = new NodeList;
 		if ((yyvsp[0].node)) {
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 3595 "engines/director/lingo/lingo-gr.cpp"
+#line 3615 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176: /* nonemptystmtlist_insideif: nonemptystmtlist_insideif stmtlistline_insideif  */
-#line 599 "engines/director/lingo/lingo-gr.y"
+  case 177: /* nonemptystmtlist_insideif: nonemptystmtlist_insideif stmtlistline_insideif  */
+#line 603 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if ((yyvsp[0].node)) {
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3605 "engines/director/lingo/lingo-gr.cpp"
+#line 3625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177: /* stmtlistline_insideif: '\n'  */
-#line 606 "engines/director/lingo/lingo-gr.y"
+  case 178: /* stmtlistline_insideif: '\n'  */
+#line 610 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = nullptr; }
-#line 3611 "engines/director/lingo/lingo-gr.cpp"
+#line 3631 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 179: /* simpleexpr_nounarymath: tINT  */
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 180: /* simpleexpr_nounarymath: tINT  */
+#line 617 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new IntNode((yyvsp[0].i)); }
-#line 3617 "engines/director/lingo/lingo-gr.cpp"
+#line 3637 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 180: /* simpleexpr_nounarymath: tFLOAT  */
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 181: /* simpleexpr_nounarymath: tFLOAT  */
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new FloatNode((yyvsp[0].f)); }
-#line 3623 "engines/director/lingo/lingo-gr.cpp"
+#line 3643 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 181: /* simpleexpr_nounarymath: tSYMBOL  */
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 182: /* simpleexpr_nounarymath: tSYMBOL  */
+#line 619 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new SymbolNode((yyvsp[0].s)); }
-#line 3629 "engines/director/lingo/lingo-gr.cpp"
+#line 3649 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 182: /* simpleexpr_nounarymath: tSTRING  */
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 183: /* simpleexpr_nounarymath: tSTRING  */
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new StringNode((yyvsp[0].s)); }
-#line 3635 "engines/director/lingo/lingo-gr.cpp"
+#line 3655 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 183: /* simpleexpr_nounarymath: tNOT simpleexpr  */
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 184: /* simpleexpr_nounarymath: tNOT simpleexpr  */
+#line 621 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new UnaryOpNode(LC::c_not, (yyvsp[0].node)); }
-#line 3641 "engines/director/lingo/lingo-gr.cpp"
+#line 3661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 184: /* simpleexpr_nounarymath: ID '(' ')'  */
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 185: /* simpleexpr_nounarymath: ID '(' ')'  */
+#line 622 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new FuncNode((yyvsp[-2].s), new NodeList); }
-#line 3647 "engines/director/lingo/lingo-gr.cpp"
+#line 3667 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 185: /* simpleexpr_nounarymath: ID '(' nonemptyexprlist trailingcomma ')'  */
-#line 619 "engines/director/lingo/lingo-gr.y"
+  case 186: /* simpleexpr_nounarymath: ID '(' nonemptyexprlist trailingcomma ')'  */
+#line 623 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new FuncNode((yyvsp[-4].s), (yyvsp[-2].nodelist)); }
-#line 3653 "engines/director/lingo/lingo-gr.cpp"
+#line 3673 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 186: /* simpleexpr_nounarymath: '(' expr ')'  */
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 187: /* simpleexpr_nounarymath: '(' expr ')'  */
+#line 624 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = (yyvsp[-1].node); }
-#line 3659 "engines/director/lingo/lingo-gr.cpp"
+#line 3679 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 192: /* var: ID  */
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 193: /* var: ID  */
+#line 632 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new VarNode((yyvsp[0].s)); }
-#line 3665 "engines/director/lingo/lingo-gr.cpp"
+#line 3685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 197: /* chunk: tFIELD refargs  */
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 198: /* chunk: tFIELD refargs  */
+#line 642 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.node) = new FuncNode(new Common::String("field"), (yyvsp[0].nodelist)); }
-#line 3671 "engines/director/lingo/lingo-gr.cpp"
+#line 3691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 198: /* chunk: tCAST refargs  */
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 199: /* chunk: tCAST refargs  */
+#line 643 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new FuncNode(new Common::String("cast"), (yyvsp[0].nodelist)); }
-#line 3677 "engines/director/lingo/lingo-gr.cpp"
+#line 3697 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 199: /* chunk: tCHAR expr tOF simpleexpr  */
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 200: /* chunk: tCHAR expr tOF simpleexpr  */
+#line 644 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkChar, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3684 "engines/director/lingo/lingo-gr.cpp"
+#line 3704 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 200: /* chunk: tCHAR expr tTO expr tOF simpleexpr  */
-#line 642 "engines/director/lingo/lingo-gr.y"
+  case 201: /* chunk: tCHAR expr tTO expr tOF simpleexpr  */
+#line 646 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkChar, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3691 "engines/director/lingo/lingo-gr.cpp"
+#line 3711 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 201: /* chunk: tWORD expr tOF simpleexpr  */
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 202: /* chunk: tWORD expr tOF simpleexpr  */
+#line 648 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkWord, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3698 "engines/director/lingo/lingo-gr.cpp"
+#line 3718 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 202: /* chunk: tWORD expr tTO expr tOF simpleexpr  */
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 203: /* chunk: tWORD expr tTO expr tOF simpleexpr  */
+#line 650 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkWord, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3705 "engines/director/lingo/lingo-gr.cpp"
+#line 3725 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 203: /* chunk: tITEM expr tOF simpleexpr  */
-#line 648 "engines/director/lingo/lingo-gr.y"
+  case 204: /* chunk: tITEM expr tOF simpleexpr  */
+#line 652 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkItem, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3712 "engines/director/lingo/lingo-gr.cpp"
+#line 3732 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 204: /* chunk: tITEM expr tTO expr tOF simpleexpr  */
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 205: /* chunk: tITEM expr tTO expr tOF simpleexpr  */
+#line 654 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkItem, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3719 "engines/director/lingo/lingo-gr.cpp"
+#line 3739 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 205: /* chunk: tLINE expr tOF simpleexpr  */
-#line 652 "engines/director/lingo/lingo-gr.y"
+  case 206: /* chunk: tLINE expr tOF simpleexpr  */
+#line 656 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkLine, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3726 "engines/director/lingo/lingo-gr.cpp"
+#line 3746 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 206: /* chunk: tLINE expr tTO expr tOF simpleexpr  */
-#line 654 "engines/director/lingo/lingo-gr.y"
+  case 207: /* chunk: tLINE expr tTO expr tOF simpleexpr  */
+#line 658 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkLine, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3733 "engines/director/lingo/lingo-gr.cpp"
+#line 3753 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 207: /* chunk: tTHE tLAST chunktype inof simpleexpr  */
-#line 656 "engines/director/lingo/lingo-gr.y"
+  case 208: /* chunk: tTHE tLAST chunktype inof simpleexpr  */
+#line 660 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new TheLastNode((yyvsp[-2].chunktype), (yyvsp[0].node)); }
-#line 3739 "engines/director/lingo/lingo-gr.cpp"
+#line 3759 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 208: /* chunktype: tCHAR  */
-#line 659 "engines/director/lingo/lingo-gr.y"
+  case 209: /* chunktype: tCHAR  */
+#line 663 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.chunktype) = kChunkChar; }
-#line 3745 "engines/director/lingo/lingo-gr.cpp"
+#line 3765 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 209: /* chunktype: tWORD  */
-#line 660 "engines/director/lingo/lingo-gr.y"
+  case 210: /* chunktype: tWORD  */
+#line 664 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.chunktype) = kChunkWord; }
-#line 3751 "engines/director/lingo/lingo-gr.cpp"
+#line 3771 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 210: /* chunktype: tITEM  */
-#line 661 "engines/director/lingo/lingo-gr.y"
+  case 211: /* chunktype: tITEM  */
+#line 665 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.chunktype) = kChunkItem; }
-#line 3757 "engines/director/lingo/lingo-gr.cpp"
+#line 3777 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 211: /* chunktype: tLINE  */
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 212: /* chunktype: tLINE  */
+#line 666 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.chunktype) = kChunkLine; }
-#line 3763 "engines/director/lingo/lingo-gr.cpp"
+#line 3783 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 212: /* object: tSCRIPT refargs  */
-#line 665 "engines/director/lingo/lingo-gr.y"
+  case 213: /* object: tSCRIPT refargs  */
+#line 669 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.node) = new FuncNode(new Common::String("script"), (yyvsp[0].nodelist)); }
-#line 3769 "engines/director/lingo/lingo-gr.cpp"
+#line 3789 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 213: /* object: tWINDOW refargs  */
-#line 666 "engines/director/lingo/lingo-gr.y"
+  case 214: /* object: tWINDOW refargs  */
+#line 670 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new FuncNode(new Common::String("window"), (yyvsp[0].nodelist)); }
-#line 3775 "engines/director/lingo/lingo-gr.cpp"
+#line 3795 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 214: /* refargs: simpleexpr  */
-#line 669 "engines/director/lingo/lingo-gr.y"
+  case 215: /* refargs: simpleexpr  */
+#line 673 "engines/director/lingo/lingo-gr.y"
                                                                                 {
 		// This matches `ref arg` and `ref(arg)`
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[0].node));
 		(yyval.nodelist) = args; }
-#line 3785 "engines/director/lingo/lingo-gr.cpp"
+#line 3805 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 215: /* refargs: '(' ')'  */
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 216: /* refargs: '(' ')'  */
+#line 678 "engines/director/lingo/lingo-gr.y"
                                                                                         {
 		// This matches `ref()`
 		(yyval.nodelist) = new NodeList; }
-#line 3793 "engines/director/lingo/lingo-gr.cpp"
+#line 3813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 216: /* refargs: '(' expr ',' ')'  */
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 217: /* refargs: '(' expr ',' ')'  */
+#line 681 "engines/director/lingo/lingo-gr.y"
                            {
 		// This matches `ref(args,)`
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[-2].node));
 		(yyval.nodelist) = args; }
-#line 3803 "engines/director/lingo/lingo-gr.cpp"
+#line 3823 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 217: /* refargs: '(' expr ',' nonemptyexprlist trailingcomma ')'  */
-#line 682 "engines/director/lingo/lingo-gr.y"
+  case 218: /* refargs: '(' expr ',' nonemptyexprlist trailingcomma ')'  */
+#line 686 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		// This matches `ref(args, ...)`
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 3812 "engines/director/lingo/lingo-gr.cpp"
+#line 3832 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 218: /* the: tTHE ID  */
-#line 688 "engines/director/lingo/lingo-gr.y"
+  case 219: /* the: tTHE ID  */
+#line 692 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheNode((yyvsp[0].s)); }
-#line 3818 "engines/director/lingo/lingo-gr.cpp"
+#line 3838 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 219: /* the: tTHE ID tOF theobj  */
-#line 689 "engines/director/lingo/lingo-gr.y"
+  case 220: /* the: tTHE ID tOF theobj  */
+#line 693 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
-#line 3824 "engines/director/lingo/lingo-gr.cpp"
+#line 3844 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 220: /* the: tTHE tNUMBER tOF theobj  */
-#line 690 "engines/director/lingo/lingo-gr.y"
+  case 221: /* the: tTHE tNUMBER tOF theobj  */
+#line 694 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheOfNode(new Common::String("number"), (yyvsp[0].node)); }
-#line 3830 "engines/director/lingo/lingo-gr.cpp"
+#line 3850 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 225: /* theobj: tMENUITEM simpleexpr tOF tMENU simpleexpr  */
-#line 697 "engines/director/lingo/lingo-gr.y"
+  case 226: /* theobj: tMENUITEM simpleexpr tOF tMENU simpleexpr  */
+#line 701 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
-#line 3836 "engines/director/lingo/lingo-gr.cpp"
+#line 3856 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 226: /* theobj: tSOUND simpleexpr  */
-#line 698 "engines/director/lingo/lingo-gr.y"
+  case 227: /* theobj: tSOUND simpleexpr  */
+#line 702 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SoundNode((yyvsp[0].node)); }
-#line 3842 "engines/director/lingo/lingo-gr.cpp"
+#line 3862 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 227: /* theobj: tSPRITE simpleexpr  */
-#line 699 "engines/director/lingo/lingo-gr.y"
+  case 228: /* theobj: tSPRITE simpleexpr  */
+#line 703 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SpriteNode((yyvsp[0].node)); }
-#line 3848 "engines/director/lingo/lingo-gr.cpp"
+#line 3868 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 228: /* menu: tMENU simpleexpr  */
-#line 702 "engines/director/lingo/lingo-gr.y"
+  case 229: /* menu: tMENU simpleexpr  */
+#line 706 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new MenuNode((yyvsp[0].node)); }
-#line 3854 "engines/director/lingo/lingo-gr.cpp"
+#line 3874 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 229: /* thedatetime: tTHE tABBREVIATED tDATE  */
-#line 704 "engines/director/lingo/lingo-gr.y"
+  case 230: /* thedatetime: tTHE tABBREVIATED tDATE  */
+#line 708 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
-#line 3860 "engines/director/lingo/lingo-gr.cpp"
+#line 3880 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 230: /* thedatetime: tTHE tABBREVIATED tTIME  */
-#line 705 "engines/director/lingo/lingo-gr.y"
+  case 231: /* thedatetime: tTHE tABBREVIATED tTIME  */
+#line 709 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
-#line 3866 "engines/director/lingo/lingo-gr.cpp"
+#line 3886 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 231: /* thedatetime: tTHE tABBREV tDATE  */
-#line 706 "engines/director/lingo/lingo-gr.y"
+  case 232: /* thedatetime: tTHE tABBREV tDATE  */
+#line 710 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
-#line 3872 "engines/director/lingo/lingo-gr.cpp"
+#line 3892 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 232: /* thedatetime: tTHE tABBREV tTIME  */
-#line 707 "engines/director/lingo/lingo-gr.y"
+  case 233: /* thedatetime: tTHE tABBREV tTIME  */
+#line 711 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
-#line 3878 "engines/director/lingo/lingo-gr.cpp"
+#line 3898 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 233: /* thedatetime: tTHE tABBR tDATE  */
-#line 708 "engines/director/lingo/lingo-gr.y"
+  case 234: /* thedatetime: tTHE tABBR tDATE  */
+#line 712 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
-#line 3884 "engines/director/lingo/lingo-gr.cpp"
+#line 3904 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 234: /* thedatetime: tTHE tABBR tTIME  */
-#line 709 "engines/director/lingo/lingo-gr.y"
+  case 235: /* thedatetime: tTHE tABBR tTIME  */
+#line 713 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
-#line 3890 "engines/director/lingo/lingo-gr.cpp"
+#line 3910 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 235: /* thedatetime: tTHE tLONG tDATE  */
-#line 710 "engines/director/lingo/lingo-gr.y"
+  case 236: /* thedatetime: tTHE tLONG tDATE  */
+#line 714 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheLong, kTheDate); }
-#line 3896 "engines/director/lingo/lingo-gr.cpp"
+#line 3916 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 236: /* thedatetime: tTHE tLONG tTIME  */
-#line 711 "engines/director/lingo/lingo-gr.y"
+  case 237: /* thedatetime: tTHE tLONG tTIME  */
+#line 715 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheLong, kTheTime); }
-#line 3902 "engines/director/lingo/lingo-gr.cpp"
+#line 3922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 237: /* thedatetime: tTHE tSHORT tDATE  */
-#line 712 "engines/director/lingo/lingo-gr.y"
+  case 238: /* thedatetime: tTHE tSHORT tDATE  */
+#line 716 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheShort, kTheDate); }
-#line 3908 "engines/director/lingo/lingo-gr.cpp"
+#line 3928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 238: /* thedatetime: tTHE tSHORT tTIME  */
-#line 713 "engines/director/lingo/lingo-gr.y"
+  case 239: /* thedatetime: tTHE tSHORT tTIME  */
+#line 717 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheShort, kTheTime); }
-#line 3914 "engines/director/lingo/lingo-gr.cpp"
+#line 3934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 239: /* thenumberof: tTHE tNUMBER tOF tCHARS inof simpleexpr  */
-#line 717 "engines/director/lingo/lingo-gr.y"
+  case 240: /* thenumberof: tTHE tNUMBER tOF tCHARS inof simpleexpr  */
+#line 721 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfChars, (yyvsp[0].node)); }
-#line 3920 "engines/director/lingo/lingo-gr.cpp"
+#line 3940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 240: /* thenumberof: tTHE tNUMBER tOF tWORDS inof simpleexpr  */
-#line 718 "engines/director/lingo/lingo-gr.y"
+  case 241: /* thenumberof: tTHE tNUMBER tOF tWORDS inof simpleexpr  */
+#line 722 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfWords, (yyvsp[0].node)); }
-#line 3926 "engines/director/lingo/lingo-gr.cpp"
+#line 3946 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 241: /* thenumberof: tTHE tNUMBER tOF tITEMS inof simpleexpr  */
-#line 719 "engines/director/lingo/lingo-gr.y"
+  case 242: /* thenumberof: tTHE tNUMBER tOF tITEMS inof simpleexpr  */
+#line 723 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfItems, (yyvsp[0].node)); }
-#line 3932 "engines/director/lingo/lingo-gr.cpp"
+#line 3952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 242: /* thenumberof: tTHE tNUMBER tOF tLINES inof simpleexpr  */
-#line 720 "engines/director/lingo/lingo-gr.y"
+  case 243: /* thenumberof: tTHE tNUMBER tOF tLINES inof simpleexpr  */
+#line 724 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfLines, (yyvsp[0].node)); }
-#line 3938 "engines/director/lingo/lingo-gr.cpp"
+#line 3958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 243: /* thenumberof: tTHE tNUMBER tOF tMENUITEMS inof menu  */
-#line 721 "engines/director/lingo/lingo-gr.y"
+  case 244: /* thenumberof: tTHE tNUMBER tOF tMENUITEMS inof menu  */
+#line 725 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfMenuItems, (yyvsp[0].node)); }
-#line 3944 "engines/director/lingo/lingo-gr.cpp"
+#line 3964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 244: /* thenumberof: tTHE tNUMBER tOF tMENUS  */
-#line 722 "engines/director/lingo/lingo-gr.y"
+  case 245: /* thenumberof: tTHE tNUMBER tOF tMENUS  */
+#line 726 "engines/director/lingo/lingo-gr.y"
                                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfMenus, nullptr); }
-#line 3950 "engines/director/lingo/lingo-gr.cpp"
+#line 3970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 245: /* thenumberof: tTHE tNUMBER tOF tXTRAS  */
-#line 723 "engines/director/lingo/lingo-gr.y"
+  case 246: /* thenumberof: tTHE tNUMBER tOF tXTRAS  */
+#line 727 "engines/director/lingo/lingo-gr.y"
                                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfXtras, nullptr); }
-#line 3956 "engines/director/lingo/lingo-gr.cpp"
+#line 3976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 246: /* thenumberof: tTHE tNUMBER tOF tCASTLIBS  */
-#line 724 "engines/director/lingo/lingo-gr.y"
+  case 247: /* thenumberof: tTHE tNUMBER tOF tCASTLIBS  */
+#line 728 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheNumberOfNode(kNumberOfCastlibs, nullptr); }
-#line 3962 "engines/director/lingo/lingo-gr.cpp"
+#line 3982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 249: /* writablethe: tTHE ID  */
-#line 729 "engines/director/lingo/lingo-gr.y"
+  case 250: /* writablethe: tTHE ID  */
+#line 733 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNode((yyvsp[0].s)); }
-#line 3968 "engines/director/lingo/lingo-gr.cpp"
+#line 3988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 250: /* writablethe: tTHE ID tOF writabletheobj  */
-#line 730 "engines/director/lingo/lingo-gr.y"
+  case 251: /* writablethe: tTHE ID tOF writabletheobj  */
+#line 734 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
-#line 3974 "engines/director/lingo/lingo-gr.cpp"
+#line 3994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 252: /* writabletheobj: tMENU expr_noeq  */
-#line 734 "engines/director/lingo/lingo-gr.y"
+  case 253: /* writabletheobj: tMENU expr_noeq  */
+#line 738 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new MenuNode((yyvsp[0].node)); }
-#line 3980 "engines/director/lingo/lingo-gr.cpp"
+#line 4000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 253: /* writabletheobj: tMENUITEM expr_noeq tOF tMENU expr_noeq  */
-#line 735 "engines/director/lingo/lingo-gr.y"
+  case 254: /* writabletheobj: tMENUITEM expr_noeq tOF tMENU expr_noeq  */
+#line 739 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
-#line 3986 "engines/director/lingo/lingo-gr.cpp"
+#line 4006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 254: /* writabletheobj: tSOUND expr_noeq  */
-#line 736 "engines/director/lingo/lingo-gr.y"
+  case 255: /* writabletheobj: tSOUND expr_noeq  */
+#line 740 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SoundNode((yyvsp[0].node)); }
-#line 3992 "engines/director/lingo/lingo-gr.cpp"
+#line 4012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 255: /* writabletheobj: tSPRITE expr_noeq  */
-#line 737 "engines/director/lingo/lingo-gr.y"
+  case 256: /* writabletheobj: tSPRITE expr_noeq  */
+#line 741 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SpriteNode((yyvsp[0].node)); }
-#line 3998 "engines/director/lingo/lingo-gr.cpp"
+#line 4018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 256: /* list: '[' exprlist ']'  */
-#line 740 "engines/director/lingo/lingo-gr.y"
+  case 257: /* list: '[' exprlist ']'  */
+#line 744 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new ListNode((yyvsp[-1].nodelist)); }
-#line 4004 "engines/director/lingo/lingo-gr.cpp"
+#line 4024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 257: /* list: '[' ':' ']'  */
-#line 741 "engines/director/lingo/lingo-gr.y"
+  case 258: /* list: '[' ':' ']'  */
+#line 745 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropListNode(new NodeList); }
-#line 4010 "engines/director/lingo/lingo-gr.cpp"
+#line 4030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 258: /* list: '[' proplist ']'  */
-#line 742 "engines/director/lingo/lingo-gr.y"
+  case 259: /* list: '[' proplist ']'  */
+#line 746 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropListNode((yyvsp[-1].nodelist)); }
-#line 4016 "engines/director/lingo/lingo-gr.cpp"
+#line 4036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 259: /* proplist: proppair  */
-#line 748 "engines/director/lingo/lingo-gr.y"
+  case 260: /* proplist: proppair  */
+#line 752 "engines/director/lingo/lingo-gr.y"
                                                         {
 		NodeList *list = new NodeList;
 		list->push_back((yyvsp[0].node));
 		(yyval.nodelist) = list; }
-#line 4025 "engines/director/lingo/lingo-gr.cpp"
+#line 4045 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 260: /* proplist: proplist ',' proppair  */
-#line 752 "engines/director/lingo/lingo-gr.y"
+  case 261: /* proplist: proplist ',' proppair  */
+#line 756 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4033 "engines/director/lingo/lingo-gr.cpp"
+#line 4053 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 261: /* proplist: proplist ',' expr  */
-#line 755 "engines/director/lingo/lingo-gr.y"
+  case 262: /* proplist: proplist ',' expr  */
+#line 759 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4041 "engines/director/lingo/lingo-gr.cpp"
+#line 4061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 262: /* proppair: tSYMBOL ':' expr  */
-#line 760 "engines/director/lingo/lingo-gr.y"
+  case 263: /* proppair: tSYMBOL ':' expr  */
+#line 764 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
-#line 4047 "engines/director/lingo/lingo-gr.cpp"
+#line 4067 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 263: /* proppair: ID ':' expr  */
-#line 761 "engines/director/lingo/lingo-gr.y"
+  case 264: /* proppair: ID ':' expr  */
+#line 765 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
-#line 4053 "engines/director/lingo/lingo-gr.cpp"
+#line 4073 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 264: /* proppair: tSTRING ':' expr  */
-#line 762 "engines/director/lingo/lingo-gr.y"
+  case 265: /* proppair: tSTRING ':' expr  */
+#line 766 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropPairNode(new StringNode((yyvsp[-2].s)), (yyvsp[0].node)); }
-#line 4059 "engines/director/lingo/lingo-gr.cpp"
+#line 4079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 265: /* proppair: tINT ':' expr  */
-#line 763 "engines/director/lingo/lingo-gr.y"
+  case 266: /* proppair: tINT ':' expr  */
+#line 767 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.node) = new PropPairNode(new IntNode((yyvsp[-2].i)), (yyvsp[0].node)); }
-#line 4065 "engines/director/lingo/lingo-gr.cpp"
+#line 4085 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 266: /* proppair: tFLOAT ':' expr  */
-#line 764 "engines/director/lingo/lingo-gr.y"
+  case 267: /* proppair: tFLOAT ':' expr  */
+#line 768 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.node) = new PropPairNode(new FloatNode((yyvsp[-2].f)), (yyvsp[0].node)); }
-#line 4071 "engines/director/lingo/lingo-gr.cpp"
+#line 4091 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 267: /* unarymath: '+' simpleexpr  */
-#line 767 "engines/director/lingo/lingo-gr.y"
+  case 268: /* unarymath: '+' simpleexpr  */
+#line 771 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = (yyvsp[0].node); }
-#line 4077 "engines/director/lingo/lingo-gr.cpp"
+#line 4097 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 268: /* unarymath: '-' simpleexpr  */
-#line 768 "engines/director/lingo/lingo-gr.y"
+  case 269: /* unarymath: '-' simpleexpr  */
+#line 772 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new UnaryOpNode(LC::c_negate, (yyvsp[0].node)); }
-#line 4083 "engines/director/lingo/lingo-gr.cpp"
+#line 4103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 273: /* expr: expr '+' expr  */
-#line 778 "engines/director/lingo/lingo-gr.y"
+  case 274: /* expr: expr '+' expr  */
+#line 782 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4089 "engines/director/lingo/lingo-gr.cpp"
+#line 4109 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 274: /* expr: expr '-' expr  */
-#line 779 "engines/director/lingo/lingo-gr.y"
+  case 275: /* expr: expr '-' expr  */
+#line 783 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4095 "engines/director/lingo/lingo-gr.cpp"
+#line 4115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 275: /* expr: expr '*' expr  */
-#line 780 "engines/director/lingo/lingo-gr.y"
+  case 276: /* expr: expr '*' expr  */
+#line 784 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4101 "engines/director/lingo/lingo-gr.cpp"
+#line 4121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 276: /* expr: expr '/' expr  */
-#line 781 "engines/director/lingo/lingo-gr.y"
+  case 277: /* expr: expr '/' expr  */
+#line 785 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4107 "engines/director/lingo/lingo-gr.cpp"
+#line 4127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 277: /* expr: expr tMOD expr  */
-#line 782 "engines/director/lingo/lingo-gr.y"
+  case 278: /* expr: expr tMOD expr  */
+#line 786 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4113 "engines/director/lingo/lingo-gr.cpp"
+#line 4133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 278: /* expr: expr '>' expr  */
-#line 783 "engines/director/lingo/lingo-gr.y"
+  case 279: /* expr: expr '>' expr  */
+#line 787 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4119 "engines/director/lingo/lingo-gr.cpp"
+#line 4139 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 279: /* expr: expr '<' expr  */
-#line 784 "engines/director/lingo/lingo-gr.y"
+  case 280: /* expr: expr '<' expr  */
+#line 788 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4125 "engines/director/lingo/lingo-gr.cpp"
+#line 4145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 280: /* expr: expr tEQ expr  */
-#line 785 "engines/director/lingo/lingo-gr.y"
+  case 281: /* expr: expr tEQ expr  */
+#line 789 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4131 "engines/director/lingo/lingo-gr.cpp"
+#line 4151 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 281: /* expr: expr tNEQ expr  */
-#line 786 "engines/director/lingo/lingo-gr.y"
+  case 282: /* expr: expr tNEQ expr  */
+#line 790 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4137 "engines/director/lingo/lingo-gr.cpp"
+#line 4157 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 282: /* expr: expr tGE expr  */
-#line 787 "engines/director/lingo/lingo-gr.y"
+  case 283: /* expr: expr tGE expr  */
+#line 791 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4143 "engines/director/lingo/lingo-gr.cpp"
+#line 4163 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 283: /* expr: expr tLE expr  */
-#line 788 "engines/director/lingo/lingo-gr.y"
+  case 284: /* expr: expr tLE expr  */
+#line 792 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4149 "engines/director/lingo/lingo-gr.cpp"
+#line 4169 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 284: /* expr: expr tAND expr  */
-#line 789 "engines/director/lingo/lingo-gr.y"
+  case 285: /* expr: expr tAND expr  */
+#line 793 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4155 "engines/director/lingo/lingo-gr.cpp"
+#line 4175 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 285: /* expr: expr tOR expr  */
-#line 790 "engines/director/lingo/lingo-gr.y"
+  case 286: /* expr: expr tOR expr  */
+#line 794 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4161 "engines/director/lingo/lingo-gr.cpp"
+#line 4181 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 286: /* expr: expr '&' expr  */
-#line 791 "engines/director/lingo/lingo-gr.y"
+  case 287: /* expr: expr '&' expr  */
+#line 795 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4167 "engines/director/lingo/lingo-gr.cpp"
+#line 4187 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 287: /* expr: expr tCONCAT expr  */
-#line 792 "engines/director/lingo/lingo-gr.y"
+  case 288: /* expr: expr tCONCAT expr  */
+#line 796 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4173 "engines/director/lingo/lingo-gr.cpp"
+#line 4193 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 288: /* expr: expr tCONTAINS expr  */
-#line 793 "engines/director/lingo/lingo-gr.y"
+  case 289: /* expr: expr tCONTAINS expr  */
+#line 797 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4179 "engines/director/lingo/lingo-gr.cpp"
+#line 4199 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 289: /* expr: expr tSTARTS expr  */
-#line 794 "engines/director/lingo/lingo-gr.y"
+  case 290: /* expr: expr tSTARTS expr  */
+#line 798 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4185 "engines/director/lingo/lingo-gr.cpp"
+#line 4205 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 292: /* expr_nounarymath: expr_nounarymath '+' expr  */
-#line 803 "engines/director/lingo/lingo-gr.y"
+  case 293: /* expr_nounarymath: expr_nounarymath '+' expr  */
+#line 807 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4191 "engines/director/lingo/lingo-gr.cpp"
+#line 4211 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 293: /* expr_nounarymath: expr_nounarymath '-' expr  */
-#line 804 "engines/director/lingo/lingo-gr.y"
+  case 294: /* expr_nounarymath: expr_nounarymath '-' expr  */
+#line 808 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4197 "engines/director/lingo/lingo-gr.cpp"
+#line 4217 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 294: /* expr_nounarymath: expr_nounarymath '*' expr  */
-#line 805 "engines/director/lingo/lingo-gr.y"
+  case 295: /* expr_nounarymath: expr_nounarymath '*' expr  */
+#line 809 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4203 "engines/director/lingo/lingo-gr.cpp"
+#line 4223 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 295: /* expr_nounarymath: expr_nounarymath '/' expr  */
-#line 806 "engines/director/lingo/lingo-gr.y"
+  case 296: /* expr_nounarymath: expr_nounarymath '/' expr  */
+#line 810 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4209 "engines/director/lingo/lingo-gr.cpp"
+#line 4229 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 296: /* expr_nounarymath: expr_nounarymath tMOD expr  */
-#line 807 "engines/director/lingo/lingo-gr.y"
+  case 297: /* expr_nounarymath: expr_nounarymath tMOD expr  */
+#line 811 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4215 "engines/director/lingo/lingo-gr.cpp"
+#line 4235 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 297: /* expr_nounarymath: expr_nounarymath '>' expr  */
-#line 808 "engines/director/lingo/lingo-gr.y"
+  case 298: /* expr_nounarymath: expr_nounarymath '>' expr  */
+#line 812 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4221 "engines/director/lingo/lingo-gr.cpp"
+#line 4241 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 298: /* expr_nounarymath: expr_nounarymath '<' expr  */
-#line 809 "engines/director/lingo/lingo-gr.y"
+  case 299: /* expr_nounarymath: expr_nounarymath '<' expr  */
+#line 813 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4227 "engines/director/lingo/lingo-gr.cpp"
+#line 4247 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 299: /* expr_nounarymath: expr_nounarymath tEQ expr  */
-#line 810 "engines/director/lingo/lingo-gr.y"
+  case 300: /* expr_nounarymath: expr_nounarymath tEQ expr  */
+#line 814 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4233 "engines/director/lingo/lingo-gr.cpp"
+#line 4253 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 300: /* expr_nounarymath: expr_nounarymath tNEQ expr  */
-#line 811 "engines/director/lingo/lingo-gr.y"
+  case 301: /* expr_nounarymath: expr_nounarymath tNEQ expr  */
+#line 815 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4239 "engines/director/lingo/lingo-gr.cpp"
+#line 4259 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 301: /* expr_nounarymath: expr_nounarymath tGE expr  */
-#line 812 "engines/director/lingo/lingo-gr.y"
+  case 302: /* expr_nounarymath: expr_nounarymath tGE expr  */
+#line 816 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4245 "engines/director/lingo/lingo-gr.cpp"
+#line 4265 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 302: /* expr_nounarymath: expr_nounarymath tLE expr  */
-#line 813 "engines/director/lingo/lingo-gr.y"
+  case 303: /* expr_nounarymath: expr_nounarymath tLE expr  */
+#line 817 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4251 "engines/director/lingo/lingo-gr.cpp"
+#line 4271 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 303: /* expr_nounarymath: expr_nounarymath tAND expr  */
-#line 814 "engines/director/lingo/lingo-gr.y"
+  case 304: /* expr_nounarymath: expr_nounarymath tAND expr  */
+#line 818 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4257 "engines/director/lingo/lingo-gr.cpp"
+#line 4277 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 304: /* expr_nounarymath: expr_nounarymath tOR expr  */
-#line 815 "engines/director/lingo/lingo-gr.y"
+  case 305: /* expr_nounarymath: expr_nounarymath tOR expr  */
+#line 819 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4263 "engines/director/lingo/lingo-gr.cpp"
+#line 4283 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 305: /* expr_nounarymath: expr_nounarymath '&' expr  */
-#line 816 "engines/director/lingo/lingo-gr.y"
+  case 306: /* expr_nounarymath: expr_nounarymath '&' expr  */
+#line 820 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4269 "engines/director/lingo/lingo-gr.cpp"
+#line 4289 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 306: /* expr_nounarymath: expr_nounarymath tCONCAT expr  */
-#line 817 "engines/director/lingo/lingo-gr.y"
+  case 307: /* expr_nounarymath: expr_nounarymath tCONCAT expr  */
+#line 821 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4275 "engines/director/lingo/lingo-gr.cpp"
+#line 4295 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 307: /* expr_nounarymath: expr_nounarymath tCONTAINS expr  */
-#line 818 "engines/director/lingo/lingo-gr.y"
+  case 308: /* expr_nounarymath: expr_nounarymath tCONTAINS expr  */
+#line 822 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4281 "engines/director/lingo/lingo-gr.cpp"
+#line 4301 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 308: /* expr_nounarymath: expr_nounarymath tSTARTS expr  */
-#line 819 "engines/director/lingo/lingo-gr.y"
+  case 309: /* expr_nounarymath: expr_nounarymath tSTARTS expr  */
+#line 823 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4287 "engines/director/lingo/lingo-gr.cpp"
+#line 4307 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 311: /* expr_noeq: expr_noeq '+' expr_noeq  */
-#line 824 "engines/director/lingo/lingo-gr.y"
+  case 312: /* expr_noeq: expr_noeq '+' expr_noeq  */
+#line 828 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4293 "engines/director/lingo/lingo-gr.cpp"
+#line 4313 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 312: /* expr_noeq: expr_noeq '-' expr_noeq  */
-#line 825 "engines/director/lingo/lingo-gr.y"
+  case 313: /* expr_noeq: expr_noeq '-' expr_noeq  */
+#line 829 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4299 "engines/director/lingo/lingo-gr.cpp"
+#line 4319 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 313: /* expr_noeq: expr_noeq '*' expr_noeq  */
-#line 826 "engines/director/lingo/lingo-gr.y"
+  case 314: /* expr_noeq: expr_noeq '*' expr_noeq  */
+#line 830 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4305 "engines/director/lingo/lingo-gr.cpp"
+#line 4325 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 314: /* expr_noeq: expr_noeq '/' expr_noeq  */
-#line 827 "engines/director/lingo/lingo-gr.y"
+  case 315: /* expr_noeq: expr_noeq '/' expr_noeq  */
+#line 831 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4311 "engines/director/lingo/lingo-gr.cpp"
+#line 4331 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 315: /* expr_noeq: expr_noeq tMOD expr_noeq  */
-#line 828 "engines/director/lingo/lingo-gr.y"
+  case 316: /* expr_noeq: expr_noeq tMOD expr_noeq  */
+#line 832 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4317 "engines/director/lingo/lingo-gr.cpp"
+#line 4337 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 316: /* expr_noeq: expr_noeq '>' expr_noeq  */
-#line 829 "engines/director/lingo/lingo-gr.y"
+  case 317: /* expr_noeq: expr_noeq '>' expr_noeq  */
+#line 833 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4323 "engines/director/lingo/lingo-gr.cpp"
+#line 4343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 317: /* expr_noeq: expr_noeq '<' expr_noeq  */
-#line 830 "engines/director/lingo/lingo-gr.y"
+  case 318: /* expr_noeq: expr_noeq '<' expr_noeq  */
+#line 834 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4329 "engines/director/lingo/lingo-gr.cpp"
+#line 4349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 318: /* expr_noeq: expr_noeq tNEQ expr_noeq  */
-#line 831 "engines/director/lingo/lingo-gr.y"
+  case 319: /* expr_noeq: expr_noeq tNEQ expr_noeq  */
+#line 835 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4335 "engines/director/lingo/lingo-gr.cpp"
+#line 4355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 319: /* expr_noeq: expr_noeq tGE expr_noeq  */
-#line 832 "engines/director/lingo/lingo-gr.y"
+  case 320: /* expr_noeq: expr_noeq tGE expr_noeq  */
+#line 836 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4341 "engines/director/lingo/lingo-gr.cpp"
+#line 4361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 320: /* expr_noeq: expr_noeq tLE expr_noeq  */
-#line 833 "engines/director/lingo/lingo-gr.y"
+  case 321: /* expr_noeq: expr_noeq tLE expr_noeq  */
+#line 837 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4347 "engines/director/lingo/lingo-gr.cpp"
+#line 4367 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 321: /* expr_noeq: expr_noeq tAND expr_noeq  */
-#line 834 "engines/director/lingo/lingo-gr.y"
+  case 322: /* expr_noeq: expr_noeq tAND expr_noeq  */
+#line 838 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4353 "engines/director/lingo/lingo-gr.cpp"
+#line 4373 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 322: /* expr_noeq: expr_noeq tOR expr_noeq  */
-#line 835 "engines/director/lingo/lingo-gr.y"
+  case 323: /* expr_noeq: expr_noeq tOR expr_noeq  */
+#line 839 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4359 "engines/director/lingo/lingo-gr.cpp"
+#line 4379 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 323: /* expr_noeq: expr_noeq '&' expr_noeq  */
-#line 836 "engines/director/lingo/lingo-gr.y"
+  case 324: /* expr_noeq: expr_noeq '&' expr_noeq  */
+#line 840 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4365 "engines/director/lingo/lingo-gr.cpp"
+#line 4385 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 324: /* expr_noeq: expr_noeq tCONCAT expr_noeq  */
-#line 837 "engines/director/lingo/lingo-gr.y"
+  case 325: /* expr_noeq: expr_noeq tCONCAT expr_noeq  */
+#line 841 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4371 "engines/director/lingo/lingo-gr.cpp"
+#line 4391 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 325: /* expr_noeq: expr_noeq tCONTAINS expr_noeq  */
-#line 838 "engines/director/lingo/lingo-gr.y"
+  case 326: /* expr_noeq: expr_noeq tCONTAINS expr_noeq  */
+#line 842 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4377 "engines/director/lingo/lingo-gr.cpp"
+#line 4397 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 326: /* expr_noeq: expr_noeq tSTARTS expr_noeq  */
-#line 839 "engines/director/lingo/lingo-gr.y"
+  case 327: /* expr_noeq: expr_noeq tSTARTS expr_noeq  */
+#line 843 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4383 "engines/director/lingo/lingo-gr.cpp"
+#line 4403 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 327: /* sprite: tSPRITE expr tINTERSECTS simpleexpr  */
-#line 842 "engines/director/lingo/lingo-gr.y"
+  case 328: /* sprite: tSPRITE expr tINTERSECTS simpleexpr  */
+#line 846 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new IntersectsNode((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4389 "engines/director/lingo/lingo-gr.cpp"
+#line 4409 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 328: /* sprite: tSPRITE expr tWITHIN simpleexpr  */
-#line 843 "engines/director/lingo/lingo-gr.y"
+  case 329: /* sprite: tSPRITE expr tWITHIN simpleexpr  */
+#line 847 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new WithinNode((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4395 "engines/director/lingo/lingo-gr.cpp"
+#line 4415 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 329: /* exprlist: %empty  */
-#line 846 "engines/director/lingo/lingo-gr.y"
+  case 330: /* exprlist: %empty  */
+#line 850 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.nodelist) = new NodeList; }
-#line 4401 "engines/director/lingo/lingo-gr.cpp"
+#line 4421 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 331: /* nonemptyexprlist: expr  */
-#line 850 "engines/director/lingo/lingo-gr.y"
+  case 332: /* nonemptyexprlist: expr  */
+#line 854 "engines/director/lingo/lingo-gr.y"
                                                         {
 		NodeList *list = new NodeList;
 		list->push_back((yyvsp[0].node));
 		(yyval.nodelist) = list; }
-#line 4410 "engines/director/lingo/lingo-gr.cpp"
+#line 4430 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 332: /* nonemptyexprlist: nonemptyexprlist ',' expr  */
-#line 854 "engines/director/lingo/lingo-gr.y"
+  case 333: /* nonemptyexprlist: nonemptyexprlist ',' expr  */
+#line 858 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4418 "engines/director/lingo/lingo-gr.cpp"
+#line 4438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 4422 "engines/director/lingo/lingo-gr.cpp"
+#line 4442 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -4616,7 +4636,7 @@ yyreturnlab:
   return yyresult;
 }
 
-#line 859 "engines/director/lingo/lingo-gr.y"
+#line 863 "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 0357479f7f2..9a5a8e4053e 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -462,6 +462,10 @@ cmdargs: /* empty */									{
 		// This matches `cmd(args, ...)`
 		$args->insert_at(0, $expr);
 		$$ = $args; }
+	| '(' tVARID nonemptyexprlist[args] trailingcomma ')' {
+		// This matches `cmd(args ...)`
+		$args->insert_at(0, new VarNode($tVARID));
+		$$ = $args; }
 	;
 
 trailingcomma: /* empty */ | ',' ;
diff --git a/engines/director/lingo/tests/mperform.lingo b/engines/director/lingo/tests/mperform.lingo
index 9232eb802a2..21b40fad6d1 100644
--- a/engines/director/lingo/tests/mperform.lingo
+++ b/engines/director/lingo/tests/mperform.lingo
@@ -20,6 +20,7 @@ method callPerform
   set retval to me(mPerform, "callMe")
   me(mPerform, "callMe2")
   me(mPerform, "callMe3")
+  me(mPerform "callMe3")
   put "returned" && retval
 
   scummvmAssertEqual(retval, "a1")




More information about the Scummvm-git-logs mailing list