[Scummvm-git-logs] scummvm master -> 21d3fc43567186634259c9e0eb00b9f0d33ac017

sev- sev at scummvm.org
Sun Dec 1 21:58:04 UTC 2019


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:
21d3fc4356 DIRECTOR: LINGO: Fix compilation for multiple if conditions


Commit: 21d3fc43567186634259c9e0eb00b9f0d33ac017
    https://github.com/scummvm/scummvm/commit/21d3fc43567186634259c9e0eb00b9f0d33ac017
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T22:57:47+01:00

Commit Message:
DIRECTOR: LINGO: Fix compilation for multiple if conditions

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/lingo.cpp
    engines/director/lingo/lingo.h
    engines/director/lingo/tests/if.lingo


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index dc46574..f8f973f 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -265,7 +265,7 @@ extern int yyparse();
 using namespace Director;
 void yyerror(const char *s) {
 	g_lingo->_hadError = true;
-	warning("LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
+	warning("######################  LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
 }
 
 void checkEnd(Common::String *token, const char *expect, bool required) {
@@ -540,16 +540,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1804
+#define YYLAST   1757
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  106
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  46
+#define YYNNTS  48
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  169
+#define YYNRULES  170
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  369
+#define YYNSTATES  367
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -608,18 +608,19 @@ static const yytype_uint16 yyprhs[] =
       63,    68,    73,    79,    81,    83,    85,    87,    95,   106,
      118,   122,   129,   134,   141,   151,   161,   171,   178,   189,
      200,   201,   205,   208,   210,   213,   215,   222,   224,   231,
-     238,   240,   244,   248,   251,   255,   257,   259,   260,   261,
-     263,   266,   269,   273,   275,   277,   279,   281,   283,   285,
-     287,   290,   293,   298,   303,   305,   307,   310,   312,   316,
-     320,   324,   328,   332,   336,   340,   344,   348,   352,   356,
-     360,   363,   367,   371,   375,   379,   382,   385,   389,   393,
-     398,   403,   408,   415,   420,   427,   432,   439,   444,   451,
-     454,   457,   459,   461,   464,   466,   469,   472,   475,   477,
-     480,   483,   485,   488,   493,   498,   505,   510,   513,   517,
-     519,   523,   525,   529,   531,   535,   538,   541,   544,   547,
-     551,   554,   557,   559,   563,   566,   569,   572,   576,   579,
-     580,   584,   585,   594,   597,   598,   607,   615,   622,   625,
-     626,   628,   632,   637,   638,   641,   642,   644,   648,   650
+     238,   242,   243,   244,   247,   251,   253,   255,   256,   257,
+     259,   262,   265,   269,   271,   273,   275,   277,   279,   281,
+     283,   286,   289,   294,   299,   301,   303,   306,   308,   312,
+     316,   320,   324,   328,   332,   336,   340,   344,   348,   352,
+     356,   360,   363,   367,   371,   375,   379,   382,   385,   389,
+     393,   398,   403,   408,   415,   420,   427,   432,   439,   444,
+     451,   454,   457,   459,   461,   464,   466,   469,   472,   475,
+     477,   480,   483,   485,   488,   493,   498,   505,   510,   513,
+     517,   519,   523,   525,   529,   531,   535,   538,   541,   544,
+     547,   551,   554,   557,   559,   563,   566,   569,   572,   576,
+     579,   580,   584,   585,   594,   597,   598,   607,   615,   622,
+     625,   626,   628,   632,   637,   638,   641,   642,   644,   648,
+     650
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -627,92 +628,93 @@ static const yytype_int16 yyrhs[] =
 {
      107,     0,    -1,   107,   108,   112,    -1,   112,    -1,     1,
      108,    -1,    98,    -1,    53,    -1,    58,    -1,    36,    -1,
-      -1,   143,    -1,   149,    -1,   115,    -1,    49,   132,    42,
-      28,    -1,    49,   132,    42,   133,    -1,    49,   132,    75,
-     132,    -1,    49,   132,    76,   132,    -1,    51,    28,    91,
-     132,    -1,    51,    13,    91,   132,    -1,    51,    14,   132,
-      91,   132,    -1,    51,    28,    54,   132,    -1,    51,    13,
-      54,   132,    -1,    51,    14,   132,    54,   132,    -1,   132,
-      -1,   134,    -1,   114,    -1,   116,    -1,   123,    99,   122,
-     100,   129,   128,    32,    -1,   124,    91,   132,   128,    54,
-     132,   128,   129,   128,    32,    -1,   124,    91,   132,   128,
-      34,    54,   132,   128,   129,   128,    32,    -1,   130,   114,
-     128,    -1,   131,   132,   108,   129,   128,    32,    -1,   131,
-     132,    54,   132,    -1,   125,   122,   109,   129,   128,    32,
-      -1,   125,   122,   109,   129,   128,   110,   129,   128,    32,
-      -1,   125,   122,   109,   129,   128,   127,   118,   128,    32,
-      -1,   125,   122,   109,   129,   128,   110,   127,   114,   128,
-      -1,   125,   122,    52,   127,   114,   128,    -1,   125,   122,
-      52,   127,   114,   128,   110,   127,   114,   128,    -1,   125,
-     122,    52,   127,   114,   128,   119,   128,   117,   128,    -1,
-      -1,   110,   127,   114,    -1,   118,   121,    -1,   121,    -1,
-     119,   120,    -1,   120,    -1,   126,   122,    52,   127,   115,
-     128,    -1,   119,    -1,   126,   122,    52,   127,   129,   128,
-      -1,   126,   122,    53,   127,   129,   128,    -1,   132,    -1,
-     132,    91,   132,    -1,    99,   122,   100,    -1,    50,    57,
-      -1,    50,    56,    28,    -1,    41,    -1,   111,    -1,    -1,
-      -1,   127,    -1,   129,   108,    -1,   129,   115,    -1,    55,
-      28,    52,    -1,    87,    -1,    12,    -1,    15,    -1,    31,
-      -1,    29,    -1,   133,    -1,    23,    -1,    24,   132,    -1,
-      25,   151,    -1,    25,    99,   151,   100,    -1,    28,    99,
-     150,   100,    -1,    28,    -1,    13,    -1,    14,   132,    -1,
-     113,    -1,   132,    93,   132,    -1,   132,    94,   132,    -1,
-     132,    95,   132,    -1,   132,    96,   132,    -1,   132,    74,
-     132,    -1,   132,   101,   132,    -1,   132,   102,   132,    -1,
-     132,    70,   132,    -1,   132,    65,   132,    -1,   132,    66,
-     132,    -1,   132,    71,   132,    -1,   132,    72,   132,    -1,
-      73,   132,    -1,   132,    92,   132,    -1,   132,    77,   132,
-      -1,   132,    78,   132,    -1,   132,    79,   132,    -1,    93,
-     132,    -1,    94,   132,    -1,    99,   132,   100,    -1,   103,
-     150,   104,    -1,    84,   132,    85,   132,    -1,    84,   132,
-      86,   132,    -1,    80,   132,    47,   132,    -1,    80,   132,
-      54,   132,    47,   132,    -1,    81,   132,    47,   132,    -1,
-      81,   132,    54,   132,    47,   132,    -1,    82,   132,    47,
-     132,    -1,    82,   132,    54,   132,    47,   132,    -1,    83,
-     132,    47,   132,    -1,    83,   132,    54,   132,    47,   132,
-      -1,    27,   132,    -1,    49,   132,    -1,   138,    -1,   141,
-      -1,    37,    50,    -1,    37,    -1,    39,   135,    -1,    88,
-     136,    -1,    64,   137,    -1,    17,    -1,    19,   132,    -1,
-      18,   132,    -1,    18,    -1,    20,   151,    -1,    20,    99,
-     151,   100,    -1,    90,    99,    28,   100,    -1,    90,    99,
-      28,   105,   150,   100,    -1,    61,   132,    56,   132,    -1,
-      61,   132,    -1,    21,    28,   150,    -1,    28,    -1,   135,
-     105,    28,    -1,    28,    -1,   136,   105,    28,    -1,    28,
-      -1,   137,   105,    28,    -1,    40,    43,    -1,    40,    46,
-      -1,    40,    48,    -1,    40,   139,    -1,    40,   139,   140,
-      -1,    40,   140,    -1,    38,   132,    -1,   132,    -1,    47,
-      45,   132,    -1,    45,   132,    -1,    62,    63,    -1,    62,
-     139,    -1,    62,   139,   140,    -1,    62,   140,    -1,    -1,
-      33,   142,   150,    -1,    -1,    44,    28,   144,   127,   147,
-     108,   148,   129,    -1,    59,    28,    -1,    -1,    60,    28,
-     145,   127,   147,   108,   148,   129,    -1,   146,   127,   147,
-     108,   148,   129,    32,    -1,   146,   127,   147,   108,   148,
-     129,    -1,    89,    28,    -1,    -1,    28,    -1,   147,   105,
-      28,    -1,   147,   108,   105,    28,    -1,    -1,    28,   151,
-      -1,    -1,   132,    -1,   150,   105,   132,    -1,   132,    -1,
-     151,   105,   132,    -1
+      -1,   145,    -1,   151,    -1,   115,    -1,    49,   134,    42,
+      28,    -1,    49,   134,    42,   135,    -1,    49,   134,    75,
+     134,    -1,    49,   134,    76,   134,    -1,    51,    28,    91,
+     134,    -1,    51,    13,    91,   134,    -1,    51,    14,   134,
+      91,   134,    -1,    51,    28,    54,   134,    -1,    51,    13,
+      54,   134,    -1,    51,    14,   134,    54,   134,    -1,   134,
+      -1,   136,    -1,   114,    -1,   116,    -1,   125,    99,   122,
+     100,   131,   130,    32,    -1,   126,    91,   134,   130,    54,
+     134,   130,   131,   130,    32,    -1,   126,    91,   134,   130,
+      34,    54,   134,   130,   131,   130,    32,    -1,   132,   114,
+     130,    -1,   133,   134,   108,   131,   130,    32,    -1,   133,
+     134,    54,   134,    -1,   127,   122,   109,   131,   130,    32,
+      -1,   127,   122,   109,   131,   130,   110,   131,   130,    32,
+      -1,   127,   122,   109,   131,   130,   129,   118,   130,    32,
+      -1,   127,   122,   109,   131,   130,   110,   129,   114,   130,
+      -1,   127,   122,    52,   129,   114,   130,    -1,   127,   122,
+      52,   129,   114,   130,   110,   129,   114,   130,    -1,   127,
+     122,    52,   129,   114,   130,   119,   130,   117,   130,    -1,
+      -1,   110,   129,   114,    -1,   118,   121,    -1,   121,    -1,
+     119,   120,    -1,   120,    -1,   128,   122,    52,   129,   115,
+     130,    -1,   119,    -1,   128,   122,    52,   129,   131,   130,
+      -1,   128,   122,    53,   129,   131,   130,    -1,   123,   134,
+     124,    -1,    -1,    -1,    50,    57,    -1,    50,    56,    28,
+      -1,    41,    -1,   111,    -1,    -1,    -1,   129,    -1,   131,
+     108,    -1,   131,   115,    -1,    55,    28,    52,    -1,    87,
+      -1,    12,    -1,    15,    -1,    31,    -1,    29,    -1,   135,
+      -1,    23,    -1,    24,   134,    -1,    25,   153,    -1,    25,
+      99,   153,   100,    -1,    28,    99,   152,   100,    -1,    28,
+      -1,    13,    -1,    14,   134,    -1,   113,    -1,   134,    93,
+     134,    -1,   134,    94,   134,    -1,   134,    95,   134,    -1,
+     134,    96,   134,    -1,   134,    74,   134,    -1,   134,   101,
+     134,    -1,   134,   102,   134,    -1,   134,    69,   134,    -1,
+     134,    70,   134,    -1,   134,    65,   134,    -1,   134,    66,
+     134,    -1,   134,    71,   134,    -1,   134,    72,   134,    -1,
+      73,   134,    -1,   134,    92,   134,    -1,   134,    77,   134,
+      -1,   134,    78,   134,    -1,   134,    79,   134,    -1,    93,
+     134,    -1,    94,   134,    -1,    99,   134,   100,    -1,   103,
+     152,   104,    -1,    84,   134,    85,   134,    -1,    84,   134,
+      86,   134,    -1,    80,   134,    47,   134,    -1,    80,   134,
+      54,   134,    47,   134,    -1,    81,   134,    47,   134,    -1,
+      81,   134,    54,   134,    47,   134,    -1,    82,   134,    47,
+     134,    -1,    82,   134,    54,   134,    47,   134,    -1,    83,
+     134,    47,   134,    -1,    83,   134,    54,   134,    47,   134,
+      -1,    27,   134,    -1,    49,   134,    -1,   140,    -1,   143,
+      -1,    37,    50,    -1,    37,    -1,    39,   137,    -1,    88,
+     138,    -1,    64,   139,    -1,    17,    -1,    19,   134,    -1,
+      18,   134,    -1,    18,    -1,    20,   153,    -1,    20,    99,
+     153,   100,    -1,    90,    99,    28,   100,    -1,    90,    99,
+      28,   105,   152,   100,    -1,    61,   134,    56,   134,    -1,
+      61,   134,    -1,    21,    28,   152,    -1,    28,    -1,   137,
+     105,    28,    -1,    28,    -1,   138,   105,    28,    -1,    28,
+      -1,   139,   105,    28,    -1,    40,    43,    -1,    40,    46,
+      -1,    40,    48,    -1,    40,   141,    -1,    40,   141,   142,
+      -1,    40,   142,    -1,    38,   134,    -1,   134,    -1,    47,
+      45,   134,    -1,    45,   134,    -1,    62,    63,    -1,    62,
+     141,    -1,    62,   141,   142,    -1,    62,   142,    -1,    -1,
+      33,   144,   152,    -1,    -1,    44,    28,   146,   129,   149,
+     108,   150,   131,    -1,    59,    28,    -1,    -1,    60,    28,
+     147,   129,   149,   108,   150,   131,    -1,   148,   129,   149,
+     108,   150,   131,    32,    -1,   148,   129,   149,   108,   150,
+     131,    -1,    89,    28,    -1,    -1,    28,    -1,   149,   105,
+      28,    -1,   149,   108,   105,    28,    -1,    -1,    28,   153,
+      -1,    -1,   134,    -1,   152,   105,   134,    -1,   134,    -1,
+     153,   105,   134,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   120,   120,   121,   122,   125,   130,   135,   140,   145,
-     146,   147,   148,   151,   157,   160,   161,   162,   168,   175,
-     181,   187,   194,   202,   203,   206,   207,   212,   225,   243,
-     257,   262,   265,   270,   280,   292,   304,   314,   324,   334,
-     346,   347,   350,   351,   354,   355,   358,   366,   367,   373,
-     381,   382,   383,   386,   389,   396,   403,   411,   414,   417,
-     418,   419,   422,   428,   432,   435,   438,   441,   444,   445,
-     448,   451,   452,   453,   456,   460,   468,   474,   475,   476,
-     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
-     487,   488,   489,   490,   491,   492,   493,   494,   495,   496,
-     497,   498,   499,   500,   501,   502,   503,   504,   505,   508,
-     513,   514,   515,   516,   517,   518,   519,   520,   521,   524,
-     527,   530,   534,   535,   536,   537,   538,   539,   540,   543,
-     544,   547,   548,   551,   552,   563,   564,   565,   566,   570,
-     574,   580,   581,   584,   585,   588,   589,   593,   597,   601,
-     601,   631,   631,   636,   637,   637,   642,   649,   655,   657,
-     658,   659,   660,   663,   667,   675,   676,   677,   680,   681
+       0,   121,   121,   122,   123,   126,   131,   136,   141,   146,
+     147,   148,   149,   152,   158,   161,   162,   163,   169,   176,
+     182,   188,   195,   203,   204,   207,   208,   213,   226,   244,
+     258,   263,   266,   271,   281,   293,   305,   315,   325,   335,
+     347,   348,   351,   352,   355,   356,   359,   367,   368,   374,
+     382,   385,   388,   392,   395,   402,   409,   417,   420,   423,
+     424,   425,   428,   434,   438,   441,   444,   447,   450,   451,
+     454,   457,   458,   459,   462,   466,   474,   480,   481,   482,
+     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
+     493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
+     503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
+     515,   520,   521,   522,   523,   524,   525,   526,   527,   528,
+     531,   534,   537,   541,   542,   543,   544,   545,   546,   547,
+     550,   551,   554,   555,   558,   559,   570,   571,   572,   573,
+     577,   581,   587,   588,   591,   592,   595,   596,   600,   604,
+     608,   608,   638,   638,   643,   644,   644,   649,   656,   662,
+     664,   665,   666,   667,   670,   674,   682,   683,   684,   687,
+     688
 };
 #endif
 
@@ -739,12 +741,12 @@ static const char *const yytname[] =
   "'<'", "'['", "']'", "','", "$accept", "program", "nl", "thennl",
   "nlelse", "nlelsif", "programline", "asgn", "stmtoneliner", "stmt",
   "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
-  "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",
-  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "tell",
-  "expr", "reference", "proc", "globallist", "propertylist",
-  "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1",
-  "defn", "@2", "@3", "on", "argdef", "argstore", "macro", "arglist",
-  "nonemptyarglist", 0
+  "elseifstmtoneliner1", "elseifstmt1", "cond", "begincond", "endcond",
+  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
+  "when", "tell", "expr", "reference", "proc", "globallist",
+  "propertylist", "instancelist", "gotofunc", "gotoframe", "gotomovie",
+  "playfunc", "@1", "defn", "@2", "@3", "on", "argdef", "argstore",
+  "macro", "arglist", "nonemptyarglist", 0
 };
 #endif
 
@@ -775,18 +777,19 @@ static const yytype_uint8 yyr1[] =
      113,   113,   113,   114,   114,   115,   115,   115,   115,   115,
      115,   115,   115,   116,   116,   116,   116,   116,   116,   116,
      117,   117,   118,   118,   119,   119,   120,   121,   121,   121,
-     122,   122,   122,   123,   124,   125,   126,   127,   128,   129,
-     129,   129,   130,   131,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   133,
+     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+     131,   131,   132,   133,   134,   134,   134,   134,   134,   134,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   135,
-     135,   136,   136,   137,   137,   138,   138,   138,   138,   138,
-     138,   139,   139,   140,   140,   141,   141,   141,   141,   142,
-     141,   144,   143,   143,   145,   143,   143,   143,   146,   147,
-     147,   147,   147,   148,   149,   150,   150,   150,   151,   151
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     135,   136,   136,   136,   136,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
+     137,   137,   138,   138,   139,   139,   140,   140,   140,   140,
+     140,   140,   141,   141,   142,   142,   143,   143,   143,   143,
+     144,   143,   146,   145,   145,   147,   145,   145,   145,   148,
+     149,   149,   149,   149,   150,   151,   152,   152,   152,   153,
+     153
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -797,18 +800,19 @@ static const yytype_uint8 yyr2[] =
        4,     4,     5,     1,     1,     1,     1,     7,    10,    11,
        3,     6,     4,     6,     9,     9,     9,     6,    10,    10,
        0,     3,     2,     1,     2,     1,     6,     1,     6,     6,
-       1,     3,     3,     2,     3,     1,     1,     0,     0,     1,
+       3,     0,     0,     2,     3,     1,     1,     0,     0,     1,
        2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
        2,     2,     4,     4,     1,     1,     2,     1,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       2,     3,     3,     3,     3,     2,     2,     3,     3,     4,
-       4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
-       2,     1,     1,     2,     1,     2,     2,     2,     1,     2,
-       2,     1,     2,     4,     4,     6,     4,     2,     3,     1,
-       3,     1,     3,     1,     3,     2,     2,     2,     2,     3,
-       2,     2,     1,     3,     2,     2,     2,     3,     2,     0,
-       3,     0,     8,     2,     0,     8,     7,     6,     2,     0,
-       1,     3,     4,     0,     2,     0,     1,     3,     1,     3
+       3,     2,     3,     3,     3,     3,     2,     2,     3,     3,
+       4,     4,     4,     6,     4,     6,     4,     6,     4,     6,
+       2,     2,     1,     1,     2,     1,     2,     2,     2,     1,
+       2,     2,     1,     2,     4,     4,     6,     4,     2,     3,
+       1,     3,     1,     3,     1,     3,     2,     2,     2,     2,
+       3,     2,     2,     1,     3,     2,     2,     2,     3,     2,
+       0,     3,     0,     8,     2,     0,     8,     7,     6,     2,
+       0,     1,     3,     4,     0,     2,     0,     1,     3,     1,
+       3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -816,107 +820,107 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    64,    75,     0,    65,   118,   121,     0,     0,
-       0,    69,     0,     0,     0,    74,    67,    66,   149,   114,
+       0,     0,    64,    75,     0,    65,   119,   122,     0,     0,
+       0,    69,     0,     0,     0,    74,    67,    66,   150,   115,
        0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
-       0,     0,     0,     0,     0,     0,   165,     0,     3,    77,
-      25,    12,    26,     0,     0,     0,     0,     0,    23,    68,
-      24,   111,   112,    10,    57,    11,     5,     4,    74,     0,
-      76,   120,   119,     0,   168,   122,   165,    70,     0,    71,
-     109,   165,   164,   165,   113,   129,   115,     0,   135,     0,
-     136,     0,   137,   142,   138,   140,   151,   110,     0,    53,
-       0,     0,     0,     0,   153,   154,   127,   145,   146,   148,
-     133,   117,    90,     0,     0,     0,     0,     0,   131,   116,
-     158,     0,    95,    96,     0,   166,     0,     1,     9,     0,
-       0,     0,     0,    50,    58,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   166,     0,     3,    77,
+      25,    12,    26,     0,     0,    51,     0,     0,    23,    68,
+      24,   112,   113,    10,    57,    11,     5,     4,    74,     0,
+      76,   121,   120,     0,   169,   123,   166,    70,     0,    71,
+     110,   166,   165,   166,   114,   130,   116,     0,   136,     0,
+     137,     0,   138,   143,   139,   141,   152,   111,     0,    53,
+       0,     0,     0,     0,   154,   155,   128,   146,   147,   149,
+     134,   118,    91,     0,     0,     0,     0,     0,   132,   117,
+     159,     0,    96,    97,     0,   167,     0,     1,     9,    51,
+       0,     0,     0,    58,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   159,   165,     0,   168,     0,     0,   128,     0,
-     166,     0,   150,     0,   141,   144,     0,   139,    57,     0,
+       0,     0,   160,   166,     0,   169,     0,     0,   129,     0,
+     167,     0,   151,     0,   142,   145,     0,   140,    57,     0,
        0,     0,    54,     0,     0,     0,     0,     0,    62,    57,
-       0,   147,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    97,    98,     0,     2,     0,
-      58,     0,     0,    57,     6,    57,     0,    30,     0,    57,
-      86,    87,    85,    88,    89,    82,    92,    93,    94,    91,
-      78,    79,    80,    81,    83,    84,   160,     0,   123,   169,
-      72,    73,   130,   143,   159,    13,    14,    15,    16,    21,
-      18,     0,     0,    20,    17,   159,   126,   134,   101,     0,
-     103,     0,   105,     0,   107,     0,    99,   100,   132,   124,
-     165,   167,    57,     0,    52,     0,    59,    58,    51,    32,
-      58,     0,   163,     0,    22,    19,     0,     0,     0,     0,
-       0,     0,    58,     0,     0,    58,    60,    61,    57,     0,
-     161,     0,    57,   163,   163,   102,   104,   106,   108,   125,
-       0,     0,    58,    37,    33,     7,    57,     0,    31,   162,
-     157,    57,    57,    27,    58,    57,     8,    57,    56,    58,
-      45,     0,    59,    58,    58,    47,    43,     0,   156,   152,
-     155,    57,    58,     0,    44,    40,     0,    58,     0,    42,
-       0,     0,    58,     0,    58,    57,    58,    57,    36,    34,
-      35,    57,    57,     0,    28,    38,     0,    39,     0,    57,
-      57,    29,    41,    58,    58,    58,    46,    48,    49
+       0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    98,    99,     0,     2,     0,
+      58,    57,     6,    57,    52,    30,     0,    57,    87,    88,
+      85,    86,    89,    90,    82,    93,    94,    95,    92,    78,
+      79,    80,    81,    83,    84,   161,     0,   124,   170,    72,
+      73,   131,   144,   160,    13,    14,    15,    16,    21,    18,
+       0,     0,    20,    17,   160,   127,   135,   102,     0,   104,
+       0,   106,     0,   108,     0,   100,   101,   133,   125,   166,
+     168,    57,     0,     0,    59,    58,    50,    32,    58,     0,
+     164,     0,    22,    19,     0,     0,     0,     0,     0,     0,
+      58,     0,     0,    58,    60,    61,    57,     0,   162,     0,
+      57,   164,   164,   103,   105,   107,   109,   126,     0,     0,
+      58,    37,    33,     7,    57,     0,    31,   163,   158,    57,
+      57,    27,    58,    57,     8,    57,    56,    58,    45,    51,
+      59,    58,    58,    47,    43,    51,   157,   153,   156,    57,
+      58,     0,    44,    40,     0,    58,     0,    42,     0,     0,
+      58,     0,    58,    57,    58,    57,    36,    34,    35,    57,
+      57,     0,    28,    38,     0,    39,     0,    57,    57,    29,
+      41,    58,    58,    58,    46,    48,    49
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,   286,   205,   306,   318,    48,    49,    50,   287,
-      52,   346,   324,   325,   320,   326,   132,    53,    54,    55,
-     321,   266,   207,   267,    56,    57,    58,    59,    60,    86,
-     119,   111,    61,    94,    95,    62,    83,    63,   168,   179,
-      64,   227,   292,    65,   161,    75
+      -1,    47,   284,   203,   304,   316,    48,    49,    50,   285,
+      52,   344,   322,   323,   318,   324,   131,   132,   266,    53,
+      54,    55,   319,   264,   205,   265,    56,    57,    58,    59,
+      60,    86,   119,   111,    61,    94,    95,    62,    83,    63,
+     168,   179,    64,   226,   290,    65,   161,    75
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -277
+#define YYPACT_NINF -289
 static const yytype_int16 yypact[] =
 {
-     382,   -97,  -277,  -277,  1039,  -277,  -277,  1039,  1039,  1079,
-      14,  -277,  1039,  1152,  1039,  1192,  -277,  -277,  -277,    13,
-      43,   925,  -277,    69,  1039,    12,    48,    72,    75,    90,
-    1039,   966,    95,  1039,  1039,  1039,  1039,  1039,  1039,  -277,
-      99,   101,    35,  1039,  1039,  1039,  1039,     7,  -277,  -277,
-    -277,  -277,  -277,    37,    64,  1265,   842,  1039,  1702,  -277,
-    -277,  -277,  -277,  -277,  -277,  -277,  -277,  -277,    58,  1039,
-    1702,  1702,  1702,  1039,  1702,    51,  1039,  1702,  1039,    51,
-    1702,  1039,    51,  1039,  -277,  -277,    55,  1039,  -277,  1039,
-    -277,   118,  -277,  1702,    46,  -277,  -277,   155,   136,  -277,
-     -37,  1039,   -36,   113,  -277,  -277,   261,  -277,    46,  -277,
-    -277,    61,   -49,  1306,  1339,  1372,  1405,  1570,  -277,    65,
-    -277,   140,   -49,   -49,  1636,  1702,     2,  -277,   474,  1265,
-    1039,  1265,    57,  1669,  -277,   818,  1039,  1039,  1039,  1039,
-    1039,  1039,  1039,  1039,  1039,  1039,  1039,  1039,  1039,  1039,
-    1039,  1039,   141,  1039,   155,  1636,   -33,  1039,    68,   -22,
-    1636,   -20,    68,   148,  1702,  1702,  1039,  -277,  -277,    84,
-    1039,  1039,  -277,  1039,  1039,  1537,  1039,  1039,  -277,  -277,
-    1039,  -277,   151,  1039,  1039,  1039,  1039,  1039,  1039,  1039,
-    1039,  1039,  1039,   152,   -13,  -277,  -277,  1039,  -277,    82,
-    1702,    83,  1603,  -277,  -277,  -277,  1039,  -277,  1039,  -277,
-     984,   984,   984,   -49,   -49,   -49,  1702,   984,   984,  1097,
-      24,    24,   -49,   -49,  1702,  1702,  -277,   -32,  -277,  1702,
-    -277,  -277,  -277,  1702,   141,  -277,  -277,  1702,  1702,  1702,
-    1702,  1039,  1039,  1702,  1702,   141,  1702,  -277,  1702,  1234,
-    1702,  1438,  1702,  1471,  1702,  1504,  1702,  1702,  -277,  -277,
-    1039,  1702,  -277,    -5,  -277,   842,  -277,   658,  1702,  1702,
-     658,   167,    91,   -32,  1702,  1702,   -32,  1039,  1039,  1039,
-    1039,    -1,   658,   145,  1039,  -277,  -277,  -277,    -8,   169,
-    -277,   174,  -277,    91,    91,  1702,  1702,  1702,  1702,  -277,
-     171,  1039,  1702,   -10,  -277,  -277,  -277,   168,  -277,  -277,
-     566,  -277,  -277,  -277,  1702,  -277,  -277,  -277,  -277,   168,
-    -277,  1265,   842,   658,   168,   168,  -277,  1265,  -277,   658,
-     658,  -277,   658,   842,  -277,   147,   154,  -277,   176,  -277,
-     178,    63,   658,   179,  -277,  -277,  -277,  -277,  -277,  -277,
-    -277,  -277,  -277,   180,  -277,  -277,   842,  -277,   750,   750,
-    -277,  -277,  -277,  -277,   658,   658,  -277,  -277,  -277
+     358,   -95,  -289,  -289,  1015,  -289,  -289,  1015,  1015,  1055,
+      15,  -289,  1015,  1128,  1015,  1168,  -289,  -289,  -289,   -19,
+      39,   901,  -289,    43,  1015,    52,    42,    49,    57,    59,
+    1015,   942,    67,  1015,  1015,  1015,  1015,  1015,  1015,  -289,
+      73,    75,     7,  1015,  1015,  1015,  1015,     9,  -289,  -289,
+    -289,  -289,  -289,    30,    66,  -289,   818,  1015,  1621,  -289,
+    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,    35,  1015,
+    1621,  1621,  1621,  1015,  1621,    58,  1015,  1621,  1015,    58,
+    1621,  1015,    58,  1015,  -289,  -289,    60,  1015,  -289,  1015,
+    -289,   119,  -289,  1621,    18,  -289,  -289,   156,   138,  -289,
+     -40,  1015,   -34,   115,  -289,  -289,  1515,  -289,    18,  -289,
+    -289,    63,   -48,  1209,  1243,  1277,  1311,  1549,  -289,    77,
+    -289,   143,   -48,   -48,  1583,  1621,     8,  -289,   450,  -289,
+    1015,    70,  1015,  -289,   794,  1015,  1015,  1015,  1015,  1015,
+    1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,
+    1015,  1015,   144,  1015,   156,  1583,   -31,  1015,    79,   -27,
+    1583,   -25,    79,   147,  1621,  1621,  1015,  -289,  -289,   104,
+    1015,  1015,  -289,  1015,  1015,  1481,  1015,  1015,  -289,  -289,
+    1015,  -289,   150,  1015,  1015,  1015,  1015,  1015,  1015,  1015,
+    1015,  1015,  1015,   157,   -11,  -289,  -289,  1015,  -289,    97,
+    1621,  -289,  -289,  -289,  1621,  -289,  1015,  -289,    23,    23,
+      23,    23,  1655,  1655,   -48,  1621,    23,    23,   217,    25,
+      25,   -48,   -48,  1621,  1621,  -289,   -46,  -289,  1621,  -289,
+    -289,  -289,  1621,   144,  -289,  -289,  1621,  1621,  1621,  1621,
+    1015,  1015,  1621,  1621,   144,  1621,  -289,  1621,  1345,  1621,
+    1379,  1621,  1413,  1621,  1447,  1621,  1621,  -289,  -289,  1015,
+    1621,  -289,    -4,   818,  -289,   634,  -289,  1621,   634,   171,
+      96,   -46,  1621,  1621,   -46,  1015,  1015,  1015,  1015,    -7,
+     634,   151,  1015,  -289,  -289,  -289,   -30,   174,  -289,   179,
+    -289,    96,    96,  1621,  1621,  1621,  1621,  -289,   178,  1015,
+    1621,   -32,  -289,  -289,  -289,   175,  -289,  -289,   542,  -289,
+    -289,  -289,  1621,  -289,  -289,  -289,  -289,   175,  -289,  -289,
+     818,   634,   175,   175,  -289,  -289,  -289,   634,   634,  -289,
+     634,   818,  -289,   154,   161,  -289,   182,  -289,   183,    84,
+     634,   184,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
+    -289,   185,  -289,  -289,   818,  -289,   726,   726,  -289,  -289,
+    -289,  -289,   634,   634,  -289,  -289,  -289
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -277,  -277,    18,  -277,  -276,  -277,    85,  -277,   -50,     0,
-    -277,  -277,  -277,   -89,  -268,  -108,  -127,  -277,  -277,  -277,
-    -264,   -44,    28,  -198,  -277,  -277,     1,    49,  -277,  -277,
-    -277,  -277,  -277,   188,   -19,  -277,  -277,  -277,  -277,  -277,
-    -277,  -204,  -172,  -277,   -43,     8
+    -289,  -289,    21,  -289,  -288,  -289,    91,  -289,   -55,     0,
+    -289,  -289,  -289,   -81,  -259,   -99,  -123,  -289,  -289,  -289,
+    -289,  -289,  -261,     2,     4,  -199,  -289,  -289,     3,    55,
+    -289,  -289,  -289,  -289,  -289,   198,   -12,  -289,  -289,  -289,
+    -289,  -289,  -289,  -212,  -130,  -289,   -41,    10
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -926,372 +930,362 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -10
 static const yytype_int16 yytable[] =
 {
-      51,    66,   199,   126,   201,    70,   134,   127,    71,    72,
-      74,   270,   109,    77,    74,    80,    74,   173,   176,    67,
-     152,    79,    93,    82,   304,    97,   316,   317,   142,   283,
-     273,   106,    93,   158,   112,   113,   114,   115,   116,   117,
-     162,   276,    76,   327,   122,   123,   124,   125,   305,   284,
-     305,   334,   150,   151,   174,   177,   133,   334,   135,   345,
-     327,   100,   101,    84,   282,   128,    66,   228,    98,    99,
-     154,    85,   157,   271,   155,   167,   102,   125,   230,   155,
-     231,   156,   160,   157,   125,   197,   159,   259,   164,   181,
-     165,    89,   260,    91,   310,   139,   140,    96,   141,   299,
-     103,   142,   175,   104,   197,    66,   196,   197,   323,   203,
-     204,    14,   235,   329,   330,   351,   352,   332,   105,   148,
-     149,   311,   312,   110,   234,   150,   151,   118,    51,   120,
-     133,   200,   202,   342,   121,   245,   129,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   209,   125,   130,   157,   153,   229,   265,
-     163,   364,   365,   166,   172,   178,   182,   233,   194,   226,
-     193,   237,   238,   197,   239,   240,   232,   243,   244,   247,
-     258,   246,   262,   264,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   336,   290,   291,   169,   261,   301,
-     341,   308,   309,   313,   316,   305,   347,   268,   349,   269,
-     350,   354,   361,   198,   319,   285,   339,   281,   236,   108,
-     136,   137,     0,     0,     0,   138,   139,   140,   263,   141,
-     170,   171,   142,   143,   144,     0,     0,     0,     0,     0,
-       0,     0,   274,   275,   307,   272,     0,   145,   146,   147,
-     148,   149,     0,     0,     0,     0,   150,   151,     0,     0,
-       0,   125,   322,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   337,   333,     0,     0,     0,     0,   295,   296,
-     297,   298,     0,   344,     0,   302,     0,     0,     0,     0,
-       0,   293,     0,     0,   294,   288,     0,     0,   289,     0,
-       0,   356,   314,   358,     0,     0,   362,   359,   360,     0,
-     300,     0,     0,   303,     0,     0,     0,   180,     0,     0,
-       0,     0,   133,     0,     0,     0,   136,   137,   133,     0,
-     315,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,   331,     0,     0,     0,     0,   335,     0,     0,
-       0,   338,   340,   145,   146,   147,   148,   149,   363,   363,
-     343,     0,   150,   151,     0,   348,     0,     0,     0,     0,
-     353,     0,   355,     0,   357,     0,     0,     0,     0,     0,
-       0,     0,    -9,     1,     0,     0,     0,     0,     0,     0,
-       0,   366,   367,   368,     2,     3,     4,     5,     0,     6,
+      51,   133,   302,    66,   314,   126,   199,    70,   268,   127,
+      71,    72,    74,   315,   173,    77,    74,    80,    74,   109,
+     176,   271,    67,    79,    93,    82,   303,    97,   303,   142,
+     281,    84,   274,   106,    93,   158,   112,   113,   114,   115,
+     116,   117,   162,    76,   325,   343,   122,   123,   124,   125,
+     282,   174,    66,   150,   151,   100,   101,   177,   332,   269,
+     134,   325,   280,    89,   332,    91,   152,    85,   128,   227,
+     102,    96,   154,   229,   157,   230,   155,   103,   157,   125,
+     197,   155,   167,   156,   160,   104,   125,   105,   159,   258,
+     164,   308,   165,   297,   259,   110,   181,   141,   197,   141,
+     142,   118,   142,   120,   175,   321,   121,    66,    98,    99,
+     327,   328,   196,   197,   330,   145,   146,   147,   148,   149,
+     148,   149,   201,   202,   150,   151,   150,   151,    51,   129,
+     340,    14,   234,   200,   153,   204,   349,   350,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   207,   125,   130,   362,   363,
+     228,   309,   310,   157,   166,   163,   172,   178,   182,   232,
+     233,   194,   225,   236,   237,   231,   238,   239,   246,   242,
+     243,   244,   193,   245,   197,   257,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   334,   261,   169,   288,
+     260,   289,   339,   263,   262,   299,   306,   307,   283,   267,
+     311,   314,   303,   345,   347,   348,   352,   359,   279,   198,
+     317,   135,   136,   337,   235,   137,   138,   139,   140,   108,
+     141,   170,   171,   142,   143,   144,     0,     0,     0,     0,
+       0,     0,     0,   272,   273,     0,     0,   270,   145,   146,
+     147,   148,   149,     0,     0,     0,     0,   150,   151,     0,
+       0,     0,   125,     0,     0,   335,     0,     0,     0,   286,
+       0,     0,   287,     0,     0,     0,   342,     0,   293,   294,
+     295,   296,     0,     0,   298,   300,     0,   301,   305,     0,
+       0,   141,   291,     0,   142,   292,     0,     0,     0,   360,
+       0,     0,   312,     0,   313,     0,   320,     0,     0,     0,
+     146,   147,   148,   149,     0,     0,   329,   331,   150,   151,
+       0,   333,     0,     0,     0,   336,   338,     0,     0,     0,
+       0,     0,     0,     0,   341,     0,     0,     0,     0,   346,
+       0,     0,     0,     0,   351,   354,   353,   356,   355,     0,
+       0,   357,   358,     0,     0,     0,   361,   361,    -9,     1,
+       0,     0,     0,     0,     0,   364,   365,   366,     0,     0,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+       0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
+       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
+       0,     0,    23,     0,     0,     0,     0,    24,    25,    26,
+       0,     0,     0,    27,     0,     0,     0,    28,    29,    30,
+      31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
+      36,    37,    38,     0,     0,    39,    40,    41,    42,     0,
+       0,    43,    44,     0,     0,     0,    -9,    45,     0,     0,
+       0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    13,     0,    14,    15,    16,
+       0,    17,     0,    18,     0,     0,     0,    19,     0,    20,
+      21,    22,     0,     0,    23,     0,     0,     0,     0,    24,
+      25,    26,     0,     0,     0,    27,     0,     0,     0,    28,
+      29,    30,    31,     0,    32,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,    39,    40,    41,
+      42,     0,     0,    43,    44,     0,     0,     0,     0,    45,
+       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
        7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
-      15,    16,     0,    17,     0,    18,     0,     0,     0,    19,
-       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
+      68,    16,     0,    17,   326,    18,     0,     0,     0,    19,
+       0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
        0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
-       0,    28,    29,    30,    31,     0,    32,     0,     0,     0,
+       0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
        0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
-      40,    41,    42,     0,     0,    43,    44,     0,     0,     0,
-      -9,    45,     0,     0,     0,    46,     2,     3,     4,     5,
+      40,     0,    42,     0,     0,    43,    44,     0,     0,     0,
+      66,    45,     0,     0,     0,    46,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
-       0,    19,     0,    20,    21,    22,     0,     0,    23,     0,
+       0,    14,    68,    16,     0,    17,     0,    18,     0,     0,
+       0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
        0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
-       0,     0,     0,    28,    29,    30,    31,     0,    32,     0,
+       0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
        0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,    39,    40,    41,    42,     0,     0,    43,    44,     0,
-       0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
+       0,    39,    40,     0,    42,     0,     0,    43,    44,     0,
+       0,     0,    66,    45,     0,     0,     0,    46,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    68,    16,     0,    17,   328,    18,
+      12,    13,     0,    14,    68,    16,     0,    17,     0,    18,
        0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
        0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
        0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
       32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
       38,     0,     0,    39,    40,     0,    42,     0,     0,    43,
-      44,     0,     0,     0,    66,    45,     0,     0,     0,    46,
+      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
        2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
-       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
-       0,     0,     0,     0,     0,     0,     0,    24,    25,    26,
-       0,     0,     0,    27,     0,     0,     0,     0,     0,    30,
-      31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,    39,    40,     0,    42,     0,
-       0,    43,    44,     0,     0,     0,    66,    45,     0,     0,
-       0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    13,     0,    14,    68,    16,
-       0,    17,     0,    18,     0,     0,     0,    19,     0,    20,
-      21,    22,     0,     0,     0,     0,     0,     0,     0,    24,
-      25,    26,     0,     0,     0,    27,     0,     0,     0,     0,
-       0,    30,    31,     0,    32,     0,     0,     0,     0,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-      34,    35,    36,    37,    38,     0,     0,    39,    40,     0,
-      42,     0,     0,    43,    44,     0,     0,     0,     0,    45,
-       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
-      68,    16,   208,    17,     0,    18,     0,     0,     0,    19,
-       0,    20,    21,   136,   137,     0,     0,     0,   138,   139,
-     140,    24,   141,    26,     0,   142,   143,   144,     0,     0,
-       0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
-     145,   146,   147,   148,   149,    33,    66,     0,     0,   150,
-     151,     0,    34,    35,    36,    37,    38,     0,     0,     0,
-      40,     0,    42,     0,     0,    43,    44,     2,     3,     4,
-       5,    45,     0,     0,     0,    46,     0,     0,    11,    12,
-      13,     0,    14,    68,    16,     0,    17,     0,     0,     0,
-       0,     0,     0,    87,     0,     0,     0,     0,    88,     0,
-      89,    90,    91,    92,    69,     0,    26,     0,     2,     3,
-       4,     5,     0,     0,     0,     0,     0,     0,     0,    11,
-      12,    13,     0,    14,    68,    16,     0,    17,    33,     0,
-       0,     0,     0,     0,    87,    34,    35,    36,    37,    38,
-       0,    89,     0,    91,     0,    69,     0,    26,    43,    44,
-       0,     0,     0,     0,    45,     0,     0,     0,    46,   107,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
-       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     2,     3,     4,     5,   139,   140,     0,   141,    43,
-      44,   142,    11,    12,    13,    45,    14,    68,    16,    46,
-      17,     0,     0,     0,     0,     0,   145,   146,   147,   148,
-     149,     0,     0,     0,     0,   150,   151,     0,    69,     0,
-      26,     2,     3,     4,     5,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
-      17,     0,    33,     0,     0,     0,     0,     0,     0,    34,
-      35,    36,    37,    38,     0,     0,     0,     0,    69,     0,
-      26,     0,    43,    44,     0,     0,     0,     0,    45,     0,
-       0,     0,    46,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
-      35,    36,    37,    38,     2,     3,     4,     5,   139,   140,
-       0,   141,    43,    44,   142,    11,    12,    13,    73,    14,
-      68,    16,    46,    17,     0,     0,     0,     0,     0,     0,
-     146,   147,   148,   149,     0,     0,     0,     0,   150,   151,
-       0,    69,     0,    26,     2,     3,     4,     5,     0,     0,
+       0,    11,    12,    13,     0,    14,    68,    16,   206,    17,
+       0,    18,     0,     0,     0,    19,     0,    20,    21,   135,
+     136,     0,     0,   137,   138,   139,   140,    24,   141,    26,
+       0,   142,   143,   144,     0,     0,     0,     0,     0,    30,
+      31,     0,    32,     0,     0,     0,   145,   146,   147,   148,
+     149,    33,    66,     0,     0,   150,   151,     0,    34,    35,
+      36,    37,    38,     0,     0,     0,    40,     0,    42,     0,
+       0,    43,    44,     2,     3,     4,     5,    45,     0,     0,
+       0,    46,     0,     0,    11,    12,    13,     0,    14,    68,
+      16,     0,    17,     0,     0,     0,     0,     0,     0,    87,
+       0,     0,     0,     0,    88,     0,    89,    90,    91,    92,
+      69,     0,    26,     0,     2,     3,     4,     5,     0,     0,
        0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,     0,     0,
-       0,    69,     0,    26,     0,    43,    44,     0,     0,     0,
-       0,    78,     0,     0,     0,    46,     0,     0,     0,     0,
+      68,    16,     0,    17,    33,     0,     0,     0,     0,     0,
+      87,    34,    35,    36,    37,    38,     0,    89,     0,    91,
+       0,    69,     0,    26,    43,    44,     0,     0,     0,     0,
+      45,     0,     0,     0,    46,   107,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
        0,     0,    34,    35,    36,    37,    38,     2,     3,     4,
-       5,   277,     0,     0,     0,    43,    44,     0,    11,    12,
-      13,    81,    14,    68,    16,    46,    17,     0,     0,   136,
-     137,     0,     0,     0,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,    69,     0,    26,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
-     149,     0,     0,     0,     0,   150,   151,     0,    33,     0,
+       5,     0,     0,     0,     0,    43,    44,     0,    11,    12,
+      13,    45,    14,    68,    16,    46,    17,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    69,     0,    26,     2,     3,     4,
+       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,     0,    14,    68,    16,     0,    17,     0,    33,     0,
        0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,   183,     0,     0,     0,     0,    43,    44,
-     184,     0,     0,     0,   131,     0,     0,     0,    46,     0,
-       0,   136,   137,     0,     0,     0,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,   185,     0,     0,     0,
-       0,     0,     0,   186,     0,     0,     0,     0,   145,   146,
-     147,   148,   149,     0,   136,   137,     0,   150,   151,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,   187,
-       0,     0,     0,     0,     0,     0,   188,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,   136,   137,     0,
-     150,   151,   138,   139,   140,     0,   141,     0,     0,   142,
-     143,   144,   189,     0,     0,     0,     0,     0,     0,   190,
-       0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
-     136,   137,     0,   150,   151,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,   278,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,   136,   137,     0,   150,   151,   138,   139,
-     140,     0,   141,     0,     0,   142,   143,   144,   279,     0,
+       0,     0,     0,     0,    69,     0,    26,     0,    43,    44,
+       0,     0,     0,     0,    45,     0,     0,     0,    46,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
+       2,     3,     4,     5,     0,     0,     0,     0,    43,    44,
+       0,    11,    12,    13,    73,    14,    68,    16,    46,    17,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     145,   146,   147,   148,   149,     0,   136,   137,     0,   150,
-     151,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,   280,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,   136,
-     137,     0,   150,   151,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,     0,     0,     0,     0,     0,     0,
-       0,   241,     0,     0,     0,     0,   145,   146,   147,   148,
-     149,     0,   136,   137,     0,   150,   151,   138,   139,   140,
+       0,     0,     0,     0,     0,     0,     0,    69,     0,    26,
+       2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
+       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
+      36,    37,    38,     0,     0,     0,     0,    69,     0,    26,
+       0,    43,    44,     0,     0,     0,     0,    78,     0,     0,
+       0,    46,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
+      36,    37,    38,     0,     0,     0,   183,     0,     0,     0,
+       0,    43,    44,   184,     0,     0,     0,    81,     0,     0,
+       0,    46,     0,     0,   135,   136,     0,     0,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+     185,     0,     0,     0,     0,     0,     0,   186,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,   187,     0,     0,     0,     0,     0,
+       0,   188,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,   189,     0,
+       0,     0,     0,     0,     0,   190,     0,     0,     0,   145,
+     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,   275,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
+       0,     0,   142,   143,   144,     0,   276,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,   278,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
        0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   242,   145,
-     146,   147,   148,   149,     0,   136,   137,     0,   150,   151,
-     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
-       0,     0,     0,     0,     0,   191,   192,     0,     0,     0,
-       0,     0,   145,   146,   147,   148,   149,     0,   136,   137,
-       0,   150,   151,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   206,   145,   146,   147,   148,   149,
-       0,   136,   137,   195,   150,   151,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
-     147,   148,   149,     0,   136,   137,   195,   150,   151,   138,
+       0,     0,     0,     0,     0,   240,     0,     0,     0,   145,
+     146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   180,   241,   145,   146,   147,   148,   149,     0,     0,
+     135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
+       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
      139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     206,   145,   146,   147,   148,   149,     0,   136,   137,     0,
-     150,   151,   138,   139,   140,     0,   141,     0,     0,   142,
-     143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
-       0,     0,     0,   150,   151
+       0,     0,     0,     0,   191,   192,     0,     0,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
+     150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+       0,     0,     0,   195,   150,   151,   135,   136,     0,     0,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+     135,   136,   150,   151,   137,   138,     0,     0,     0,   141,
+       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,     0,     0,   150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    98,   129,    46,   131,     4,    56,     0,     7,     8,
-       9,   209,    31,    12,    13,    14,    15,    54,    54,     1,
-      64,    13,    21,    15,    32,    24,    36,   303,    77,    34,
-     234,    30,    31,    76,    33,    34,    35,    36,    37,    38,
-      83,   245,    28,   307,    43,    44,    45,    46,    58,    54,
-      58,   319,   101,   102,    91,    91,    55,   325,    57,   335,
-     324,    13,    14,    50,   262,    47,    98,   100,    56,    57,
-      69,    28,   105,   105,    73,    94,    28,    76,   100,    78,
-     100,    73,    81,   105,    83,   105,    78,   100,    87,   108,
-      89,    45,   105,    47,   292,    71,    72,    28,    74,   100,
-      28,    77,   101,    28,   105,    98,   104,   105,   306,    52,
-      53,    27,    28,   311,   312,    52,    53,   315,    28,    95,
-      96,   293,   294,    28,   168,   101,   102,    28,   128,    28,
-     129,   130,   131,   331,    99,   179,    99,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   135,   153,    91,   105,    99,   157,   203,
-     105,   359,   360,    45,    28,    52,   105,   166,    28,    28,
-     105,   170,   171,   105,   173,   174,    28,   176,   177,    28,
-      28,   180,   100,   100,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   321,    28,   105,    42,   197,    54,
-     327,    32,    28,    32,    36,    58,    52,   206,    32,   208,
-      32,    32,    32,   128,   303,   265,   324,   260,   169,    31,
-      65,    66,    -1,    -1,    -1,    70,    71,    72,   200,    74,
-      75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   241,   242,   288,   227,    -1,    92,    93,    94,
-      95,    96,    -1,    -1,    -1,    -1,   101,   102,    -1,    -1,
-      -1,   260,   306,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   322,   317,    -1,    -1,    -1,    -1,   277,   278,
-     279,   280,    -1,   333,    -1,   284,    -1,    -1,    -1,    -1,
-      -1,   273,    -1,    -1,   276,   267,    -1,    -1,   270,    -1,
-      -1,   345,   301,   347,    -1,    -1,   356,   351,   352,    -1,
-     282,    -1,    -1,   285,    -1,    -1,    -1,    56,    -1,    -1,
-      -1,    -1,   321,    -1,    -1,    -1,    65,    66,   327,    -1,
-     302,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,   314,    -1,    -1,    -1,    -1,   319,    -1,    -1,
-      -1,   323,   324,    92,    93,    94,    95,    96,   358,   359,
-     332,    -1,   101,   102,    -1,   337,    -1,    -1,    -1,    -1,
-     342,    -1,   344,    -1,   346,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   363,   364,   365,    12,    13,    14,    15,    -1,    17,
+       0,    56,    32,    98,    36,    46,   129,     4,   207,     0,
+       7,     8,     9,   301,    54,    12,    13,    14,    15,    31,
+      54,   233,     1,    13,    21,    15,    58,    24,    58,    77,
+      34,    50,   244,    30,    31,    76,    33,    34,    35,    36,
+      37,    38,    83,    28,   305,   333,    43,    44,    45,    46,
+      54,    91,    98,   101,   102,    13,    14,    91,   317,   105,
+      57,   322,   261,    45,   323,    47,    64,    28,    47,   100,
+      28,    28,    69,   100,   105,   100,    73,    28,   105,    76,
+     105,    78,    94,    73,    81,    28,    83,    28,    78,   100,
+      87,   290,    89,   100,   105,    28,   108,    74,   105,    74,
+      77,    28,    77,    28,   101,   304,    99,    98,    56,    57,
+     309,   310,   104,   105,   313,    92,    93,    94,    95,    96,
+      95,    96,    52,    53,   101,   102,   101,   102,   128,    99,
+     329,    27,    28,   130,    99,   132,    52,    53,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   134,   153,    91,   357,   358,
+     157,   291,   292,   105,    45,   105,    28,    52,   105,   166,
+     168,    28,    28,   170,   171,    28,   173,   174,    28,   176,
+     177,   179,   105,   180,   105,    28,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   319,   100,    42,    28,
+     197,   105,   325,   201,   200,    54,    32,    28,   263,   206,
+      32,    36,    58,    52,    32,    32,    32,    32,   259,   128,
+     301,    65,    66,   322,   169,    69,    70,    71,    72,    31,
+      74,    75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   240,   241,    -1,    -1,   226,    92,    93,
+      94,    95,    96,    -1,    -1,    -1,    -1,   101,   102,    -1,
+      -1,    -1,   259,    -1,    -1,   320,    -1,    -1,    -1,   265,
+      -1,    -1,   268,    -1,    -1,    -1,   331,    -1,   275,   276,
+     277,   278,    -1,    -1,   280,   282,    -1,   283,   286,    -1,
+      -1,    74,   271,    -1,    77,   274,    -1,    -1,    -1,   354,
+      -1,    -1,   299,    -1,   300,    -1,   304,    -1,    -1,    -1,
+      93,    94,    95,    96,    -1,    -1,   312,   315,   101,   102,
+      -1,   317,    -1,    -1,    -1,   321,   322,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   330,    -1,    -1,    -1,    -1,   335,
+      -1,    -1,    -1,    -1,   340,   343,   342,   345,   344,    -1,
+      -1,   349,   350,    -1,    -1,    -1,   356,   357,     0,     1,
+      -1,    -1,    -1,    -1,    -1,   361,   362,   363,    -1,    -1,
+      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
+      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
+      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
+      -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,
+      -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
+      62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    87,    88,    89,    90,    -1,
+      -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,    -1,
+      -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
+      40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,
+      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
+      60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    89,
+      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
+      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
       18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
-      -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
+      28,    29,    -1,    31,    32,    33,    -1,    -1,    -1,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
-      -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
       -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
-      88,    89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
+      88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
       98,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
       -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
       -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
-      -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
       -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    89,    90,    -1,    -1,    93,    94,    -1,
-      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    12,    13,
+      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
+      -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,    13,
       14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    32,    33,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
       -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
       -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
       84,    -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,
-      94,    -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,
+      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
       12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
-      -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,
-      62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,
-      -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,    -1,
-      -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
-      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
-      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    -1,
-      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
-      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
-      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    54,    31,    -1,    33,    -1,    -1,    -1,    37,
-      -1,    39,    40,    65,    66,    -1,    -1,    -1,    70,    71,
-      72,    49,    74,    51,    -1,    77,    78,    79,    -1,    -1,
-      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    73,    98,    -1,    -1,   101,
-     102,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
-      88,    -1,    90,    -1,    -1,    93,    94,    12,    13,    14,
-      15,    99,    -1,    -1,    -1,   103,    -1,    -1,    23,    24,
-      25,    -1,    27,    28,    29,    -1,    31,    -1,    -1,    -1,
-      -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,    43,    -1,
-      45,    46,    47,    48,    49,    -1,    51,    -1,    12,    13,
-      14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    73,    -1,
-      -1,    -1,    -1,    -1,    38,    80,    81,    82,    83,    84,
-      -1,    45,    -1,    47,    -1,    49,    -1,    51,    93,    94,
-      -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    63,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    12,    13,    14,    15,    71,    72,    -1,    74,    93,
-      94,    77,    23,    24,    25,    99,    27,    28,    29,   103,
-      31,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    -1,    -1,    -1,    -1,   101,   102,    -1,    49,    -1,
-      51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      31,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    83,    84,    -1,    -1,    -1,    -1,    49,    -1,
-      51,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,
-      -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    83,    84,    12,    13,    14,    15,    71,    72,
-      -1,    74,    93,    94,    77,    23,    24,    25,    99,    27,
-      28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,   101,   102,
-      -1,    49,    -1,    51,    12,    13,    14,    15,    -1,    -1,
+      -1,    23,    24,    25,    -1,    27,    28,    29,    54,    31,
+      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    65,
+      66,    -1,    -1,    69,    70,    71,    72,    49,    74,    51,
+      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    61,
+      62,    -1,    64,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    73,    98,    -1,    -1,   101,   102,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    -1,    88,    -1,    90,    -1,
+      -1,    93,    94,    12,    13,    14,    15,    99,    -1,    -1,
+      -1,   103,    -1,    -1,    23,    24,    25,    -1,    27,    28,
+      29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,
+      -1,    -1,    -1,    -1,    43,    -1,    45,    46,    47,    48,
+      49,    -1,    51,    -1,    12,    13,    14,    15,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    -1,    93,    94,    -1,    -1,    -1,
-      -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
+      28,    29,    -1,    31,    73,    -1,    -1,    -1,    -1,    -1,
+      38,    80,    81,    82,    83,    84,    -1,    45,    -1,    47,
+      -1,    49,    -1,    51,    93,    94,    -1,    -1,    -1,    -1,
+      99,    -1,    -1,    -1,   103,    63,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
       -1,    -1,    80,    81,    82,    83,    84,    12,    13,    14,
-      15,    47,    -1,    -1,    -1,    93,    94,    -1,    23,    24,
-      25,    99,    27,    28,    29,   103,    31,    -1,    -1,    65,
-      66,    -1,    -1,    -1,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    49,    -1,    51,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    -1,    -1,    -1,    -1,   101,   102,    -1,    73,    -1,
+      15,    -1,    -1,    -1,    -1,    93,    94,    -1,    23,    24,
+      25,    99,    27,    28,    29,   103,    31,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,
+      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
+      25,    -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,
       -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    93,    94,
-      54,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,
-      -1,    65,    66,    -1,    -1,    -1,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    65,    66,    -1,   101,   102,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    65,    66,    -1,
-     101,   102,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
-      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
-      65,    66,    -1,   101,   102,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    65,    66,    -1,   101,   102,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    47,    -1,
+      -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    93,    94,
+      -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
+      12,    13,    14,    15,    -1,    -1,    -1,    -1,    93,    94,
+      -1,    23,    24,    25,    99,    27,    28,    29,   103,    31,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    65,    66,    -1,   101,
-     102,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    65,
-      66,    -1,   101,   102,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    54,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    -1,    65,    66,    -1,   101,   102,    70,    71,    72,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,
+      12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    -1,    -1,    49,    -1,    51,
+      -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
+      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    -1,    47,    -1,    -1,    -1,
+      -1,    93,    94,    54,    -1,    -1,    -1,    99,    -1,    -1,
+      -1,   103,    -1,    -1,    65,    66,    -1,    -1,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
+     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    54,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
+      -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
+     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
       -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
-      93,    94,    95,    96,    -1,    65,    66,    -1,   101,   102,
-      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    94,    95,    96,    -1,    65,    66,
-      -1,   101,   102,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    96,
-      -1,    65,    66,   100,   101,   102,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    65,    66,   100,   101,   102,    70,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    56,    91,    92,    93,    94,    95,    96,    -1,    -1,
+      65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
+      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
       71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,    92,    93,    94,    95,    96,    -1,    65,    66,    -1,
-     101,   102,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
-      -1,    -1,    -1,   101,   102
+      -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
+     101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    -1,    -1,   100,   101,   102,    65,    66,    -1,    -1,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      65,    66,   101,   102,    69,    70,    -1,    -1,    -1,    74,
+      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    -1,    -1,    -1,   101,   102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1303,38 +1297,38 @@ static const yytype_uint8 yystos[] =
       39,    40,    41,    44,    49,    50,    51,    55,    59,    60,
       61,    62,    64,    73,    80,    81,    82,    83,    84,    87,
       88,    89,    90,    93,    94,    99,   103,   107,   112,   113,
-     114,   115,   116,   123,   124,   125,   130,   131,   132,   133,
-     134,   138,   141,   143,   146,   149,    98,   108,    28,    49,
-     132,   132,   132,    99,   132,   151,    28,   132,    99,   151,
-     132,    99,   151,   142,    50,    28,   135,    38,    43,    45,
-      46,    47,    48,   132,   139,   140,    28,   132,    56,    57,
-      13,    14,    28,    28,    28,    28,   132,    63,   139,   140,
-      28,   137,   132,   132,   132,   132,   132,   132,    28,   136,
-      28,    99,   132,   132,   132,   132,   150,     0,   108,    99,
-      91,    99,   122,   132,   114,   132,    65,    66,    70,    71,
+     114,   115,   116,   125,   126,   127,   132,   133,   134,   135,
+     136,   140,   143,   145,   148,   151,    98,   108,    28,    49,
+     134,   134,   134,    99,   134,   153,    28,   134,    99,   153,
+     134,    99,   153,   144,    50,    28,   137,    38,    43,    45,
+      46,    47,    48,   134,   141,   142,    28,   134,    56,    57,
+      13,    14,    28,    28,    28,    28,   134,    63,   141,   142,
+      28,   139,   134,   134,   134,   134,   134,   134,    28,   138,
+      28,    99,   134,   134,   134,   134,   152,     0,   108,    99,
+      91,   122,   123,   114,   134,    65,    66,    69,    70,    71,
       72,    74,    77,    78,    79,    92,    93,    94,    95,    96,
-     101,   102,   127,    99,   132,   132,   151,   105,   150,   151,
-     132,   150,   150,   105,   132,   132,    45,   140,   144,    42,
-      75,    76,    28,    54,    91,   132,    54,    91,    52,   145,
-      56,   140,   105,    47,    54,    47,    54,    47,    54,    47,
+     101,   102,   129,    99,   134,   134,   153,   105,   152,   153,
+     134,   152,   152,   105,   134,   134,    45,   142,   146,    42,
+      75,    76,    28,    54,    91,   134,    54,    91,    52,   147,
+      56,   142,   105,    47,    54,    47,    54,    47,    54,    47,
       54,    85,    86,   105,    28,   100,   104,   105,   112,   122,
-     132,   122,   132,    52,    53,   109,    91,   128,    54,   108,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,    28,   147,   100,   132,
-     100,   100,    28,   132,   127,    28,   133,   132,   132,   132,
-     132,    54,    91,   132,   132,   127,   132,    28,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,    28,   100,
-     105,   132,   100,   128,   100,   127,   127,   129,   132,   132,
-     129,   105,   108,   147,   132,   132,   147,    47,    47,    47,
-      47,   150,   129,    34,    54,   114,   108,   115,   128,   128,
-      28,   105,   148,   108,   108,   132,   132,   132,   132,   100,
-     128,    54,   132,   128,    32,    58,   110,   127,    32,    28,
-     129,   148,   148,    32,   132,   128,    36,   110,   111,   119,
-     120,   126,   127,   129,   118,   119,   121,   126,    32,   129,
-     129,   128,   129,   127,   120,   128,   122,   114,   128,   121,
-     128,   122,   129,   128,   114,   110,   117,    52,   128,    32,
-      32,    52,    53,   128,    32,   128,   127,   128,   127,   127,
-     127,    32,   114,   115,   129,   129,   128,   128,   128
+     134,    52,    53,   109,   134,   130,    54,   108,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,    28,   149,   100,   134,   100,
+     100,    28,   134,   129,    28,   135,   134,   134,   134,   134,
+      54,    91,   134,   134,   129,   134,    28,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,    28,   100,   105,
+     134,   100,   130,   129,   129,   131,   124,   134,   131,   105,
+     108,   149,   134,   134,   149,    47,    47,    47,    47,   152,
+     131,    34,    54,   114,   108,   115,   130,   130,    28,   105,
+     150,   108,   108,   134,   134,   134,   134,   100,   130,    54,
+     134,   130,    32,    58,   110,   129,    32,    28,   131,   150,
+     150,    32,   134,   130,    36,   110,   111,   119,   120,   128,
+     129,   131,   118,   119,   121,   128,    32,   131,   131,   130,
+     131,   129,   120,   130,   122,   114,   130,   121,   130,   122,
+     131,   130,   114,   110,   117,    52,   130,    32,    32,    52,
+      53,   130,    32,   130,   129,   130,   129,   129,   129,    32,
+     114,   115,   131,   131,   130,   130,   130
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2149,12 +2143,12 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 122 "engines/director/lingo/lingo-gr.y"
+#line 123 "engines/director/lingo/lingo-gr.y"
     { yyerrok; ;}
     break;
 
   case 5:
-#line 125 "engines/director/lingo/lingo-gr.y"
+#line 126 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
@@ -2162,7 +2156,7 @@ yyreduce:
     break;
 
   case 6:
-#line 130 "engines/director/lingo/lingo-gr.y"
+#line 131 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
@@ -2170,7 +2164,7 @@ yyreduce:
     break;
 
   case 7:
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 136 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 5;
@@ -2178,7 +2172,7 @@ yyreduce:
     break;
 
   case 8:
-#line 140 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 8;
@@ -2186,7 +2180,7 @@ yyreduce:
     break;
 
   case 13:
-#line 151 "engines/director/lingo/lingo-gr.y"
+#line 152 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2196,24 +2190,24 @@ yyreduce:
     break;
 
   case 14:
-#line 157 "engines/director/lingo/lingo-gr.y"
+#line 158 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
 			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
   case 15:
-#line 160 "engines/director/lingo/lingo-gr.y"
+#line 161 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
   case 16:
-#line 161 "engines/director/lingo/lingo-gr.y"
+#line 162 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
   case 17:
-#line 162 "engines/director/lingo/lingo-gr.y"
+#line 163 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2223,7 +2217,7 @@ yyreduce:
     break;
 
   case 18:
-#line 168 "engines/director/lingo/lingo-gr.y"
+#line 169 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2234,7 +2228,7 @@ yyreduce:
     break;
 
   case 19:
-#line 175 "engines/director/lingo/lingo-gr.y"
+#line 176 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2244,7 +2238,7 @@ yyreduce:
     break;
 
   case 20:
-#line 181 "engines/director/lingo/lingo-gr.y"
+#line 182 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2254,7 +2248,7 @@ yyreduce:
     break;
 
   case 21:
-#line 187 "engines/director/lingo/lingo-gr.y"
+#line 188 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2265,7 +2259,7 @@ yyreduce:
     break;
 
   case 22:
-#line 194 "engines/director/lingo/lingo-gr.y"
+#line 195 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2275,7 +2269,7 @@ yyreduce:
     break;
 
   case 27:
-#line 212 "engines/director/lingo/lingo-gr.y"
+#line 213 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(5) - (7)].code) - (yyvsp[(1) - (7)].code));
@@ -2287,7 +2281,7 @@ yyreduce:
     break;
 
   case 28:
-#line 225 "engines/director/lingo/lingo-gr.y"
+#line 226 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2305,7 +2299,7 @@ yyreduce:
     break;
 
   case 29:
-#line 243 "engines/director/lingo/lingo-gr.y"
+#line 244 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
@@ -2323,7 +2317,7 @@ yyreduce:
     break;
 
   case 30:
-#line 257 "engines/director/lingo/lingo-gr.y"
+#line 258 "engines/director/lingo/lingo-gr.y"
     {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
@@ -2332,21 +2326,21 @@ yyreduce:
     break;
 
   case 31:
-#line 262 "engines/director/lingo/lingo-gr.y"
+#line 263 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
   case 32:
-#line 265 "engines/director/lingo/lingo-gr.y"
+#line 266 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 		;}
     break;
 
   case 33:
-#line 270 "engines/director/lingo/lingo-gr.y"
+#line 271 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2360,7 +2354,7 @@ yyreduce:
     break;
 
   case 34:
-#line 280 "engines/director/lingo/lingo-gr.y"
+#line 281 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2376,7 +2370,7 @@ yyreduce:
     break;
 
   case 35:
-#line 292 "engines/director/lingo/lingo-gr.y"
+#line 293 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2392,7 +2386,7 @@ yyreduce:
     break;
 
   case 36:
-#line 304 "engines/director/lingo/lingo-gr.y"
+#line 305 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
@@ -2406,7 +2400,7 @@ yyreduce:
     break;
 
   case 37:
-#line 314 "engines/director/lingo/lingo-gr.y"
+#line 315 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2420,7 +2414,7 @@ yyreduce:
     break;
 
   case 38:
-#line 324 "engines/director/lingo/lingo-gr.y"
+#line 325 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2434,7 +2428,7 @@ yyreduce:
     break;
 
   case 39:
-#line 334 "engines/director/lingo/lingo-gr.y"
+#line 335 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2448,17 +2442,17 @@ yyreduce:
     break;
 
   case 40:
-#line 346 "engines/director/lingo/lingo-gr.y"
+#line 347 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
   case 41:
-#line 347 "engines/director/lingo/lingo-gr.y"
+#line 348 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 46:
-#line 358 "engines/director/lingo/lingo-gr.y"
+#line 359 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2468,7 +2462,7 @@ yyreduce:
     break;
 
   case 48:
-#line 367 "engines/director/lingo/lingo-gr.y"
+#line 368 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2478,7 +2472,7 @@ yyreduce:
     break;
 
   case 49:
-#line 373 "engines/director/lingo/lingo-gr.y"
+#line 374 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2488,22 +2482,27 @@ yyreduce:
     break;
 
   case 50:
-#line 381 "engines/director/lingo/lingo-gr.y"
+#line 382 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
   case 51:
-#line 382 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code2(g_lingo->c_eq, STOP); ;}
+#line 385 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_inCond = true; ;}
+    break;
+
+  case 52:
+#line 388 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_inCond = false; ;}
     break;
 
   case 53:
-#line 386 "engines/director/lingo/lingo-gr.y"
+#line 392 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
   case 54:
-#line 389 "engines/director/lingo/lingo-gr.y"
+#line 395 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2512,7 +2511,7 @@ yyreduce:
     break;
 
   case 55:
-#line 396 "engines/director/lingo/lingo-gr.y"
+#line 402 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2521,7 +2520,7 @@ yyreduce:
     break;
 
   case 56:
-#line 403 "engines/director/lingo/lingo-gr.y"
+#line 409 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2531,22 +2530,22 @@ yyreduce:
     break;
 
   case 57:
-#line 411 "engines/director/lingo/lingo-gr.y"
+#line 417 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 58:
-#line 414 "engines/director/lingo/lingo-gr.y"
+#line 420 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 59:
-#line 417 "engines/director/lingo/lingo-gr.y"
+#line 423 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 62:
-#line 422 "engines/director/lingo/lingo-gr.y"
+#line 428 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2555,73 +2554,73 @@ yyreduce:
     break;
 
   case 63:
-#line 428 "engines/director/lingo/lingo-gr.y"
+#line 434 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
   case 64:
-#line 432 "engines/director/lingo/lingo-gr.y"
+#line 438 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;}
     break;
 
   case 65:
-#line 435 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_floatpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
   case 66:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
     {											// D3
 		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 67:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 69:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 70:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 71:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 457 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 72:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 458 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 73:
-#line 453 "engines/director/lingo/lingo-gr.y"
+#line 459 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
 		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
   case 74:
-#line 456 "engines/director/lingo/lingo-gr.y"
+#line 462 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
@@ -2629,7 +2628,7 @@ yyreduce:
     break;
 
   case 75:
-#line 460 "engines/director/lingo/lingo-gr.y"
+#line 466 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2641,7 +2640,7 @@ yyreduce:
     break;
 
   case 76:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 474 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2651,389 +2650,394 @@ yyreduce:
     break;
 
   case 78:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
   case 79:
-#line 476 "engines/director/lingo/lingo-gr.y"
+#line 482 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
   case 80:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 483 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
   case 81:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 484 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
   case 82:
-#line 479 "engines/director/lingo/lingo-gr.y"
+#line 485 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
   case 83:
-#line 480 "engines/director/lingo/lingo-gr.y"
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
   case 84:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 487 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
   case 85:
-#line 482 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_neq); ;}
+#line 488 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_eq); ;}
     break;
 
   case 86:
-#line 483 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_ge); ;}
+#line 489 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
   case 87:
-#line 484 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_le); ;}
+#line 490 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
   case 88:
-#line 485 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_and); ;}
+#line 491 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
   case 89:
-#line 486 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_or); ;}
+#line 492 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
   case 90:
-#line 487 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_not); ;}
+#line 493 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
   case 91:
-#line 488 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_ampersand); ;}
+#line 494 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
   case 92:
-#line 489 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_concat); ;}
+#line 495 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
   case 93:
-#line 490 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_contains); ;}
+#line 496 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 94:
-#line 491 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_starts); ;}
+#line 497 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 95:
-#line 492 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
+#line 498 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 96:
-#line 493 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
+#line 499 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 97:
-#line 494 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
+#line 500 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 98:
-#line 495 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
+#line 501 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 99:
-#line 496 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_intersects); ;}
+#line 502 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 100:
-#line 497 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_within); ;}
+#line 503 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 101:
-#line 498 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charOf); ;}
+#line 504 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 102:
-#line 499 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charToOf); ;}
+#line 505 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 103:
-#line 500 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemOf); ;}
+#line 506 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 104:
-#line 501 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemToOf); ;}
+#line 507 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 105:
-#line 502 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineOf); ;}
+#line 508 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 106:
-#line 503 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineToOf); ;}
+#line 509 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 107:
-#line 504 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_wordOf); ;}
+#line 510 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 108:
-#line 505 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_wordToOf); ;}
+#line 511 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 109:
-#line 508 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_wordToOf); ;}
+    break;
+
+  case 110:
+#line 515 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 110:
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 520 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 113:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 523 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 114:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 524 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 118:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 528 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 119:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 531 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 120:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 534 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 121:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 537 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 122:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 541 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 123:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 542 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 124:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 543 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
-  case 125:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 544 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
-  case 126:
-#line 538 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 545 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 127:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 546 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 128:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 547 "engines/director/lingo/lingo-gr.y"
     { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 129:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 550 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 130:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 551 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 131:
-#line 547 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 554 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 132:
-#line 548 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 555 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 133:
-#line 551 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 558 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 134:
-#line 552 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 559 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 135:
-#line 563 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 570 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 136:
-#line 564 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 571 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 137:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 572 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 138:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 573 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 139:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 577 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 140:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 581 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 145:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 595 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 146:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 596 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 147:
-#line 593 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 600 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 148:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 604 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 149:
-#line 601 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 608 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 150:
-#line 601 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 608 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 151:
-#line 631 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 638 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 152:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 639 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg));
 			g_lingo->_indef = false; ;}
     break;
 
-  case 153:
-#line 636 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 643 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;}
     break;
 
-  case 154:
-#line 637 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 644 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 155:
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 645 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; ;}
     break;
 
-  case 156:
-#line 642 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 649 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
@@ -3043,8 +3047,8 @@ yyreduce:
 		checkEnd((yyvsp[(7) - (7)].s), (yyvsp[(1) - (7)].s)->c_str(), false); ;}
     break;
 
-  case 157:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 656 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
@@ -3052,38 +3056,38 @@ yyreduce:
 		g_lingo->_ignoreMe = false; ;}
     break;
 
-  case 158:
-#line 655 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 662 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 159:
-#line 657 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 664 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 160:
-#line 658 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 665 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 161:
-#line 659 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 666 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 162:
-#line 660 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 667 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 163:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 670 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 164:
-#line 667 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 674 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3092,34 +3096,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 165:
-#line 675 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 682 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 166:
-#line 676 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 683 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 167:
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 684 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 168:
-#line 680 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 687 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 169:
-#line 681 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 688 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3123 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3333,6 +3337,6 @@ yyreturn:
 }
 
 
-#line 684 "engines/director/lingo/lingo-gr.y"
+#line 691 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 9f45121..6024ff1 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -60,7 +60,7 @@ extern int yyparse();
 using namespace Director;
 void yyerror(const char *s) {
 	g_lingo->_hadError = true;
-	warning("LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
+	warning("######################  LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
 }
 
 void checkEnd(Common::String *token, const char *expect, bool required) {
@@ -109,10 +109,11 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %type<s> on
 
 %right '='
-%left tLT tLE tGT tGE tNEQ tCONTAINS tSTARTS
+%left tAND tOR
+%left tLT tLE tGT tGE tNEQ tCONTAINS tSTARTS tEQ
 %left '&'
 %left '+' '-'
-%left '*' '/' '%' tAND tOR tMOD
+%left '*' '/' '%' tMOD
 %right UNARY
 
 %%
@@ -378,11 +379,16 @@ elseifstmt1: elseifstmtoneliner
 		g_lingo->codeLabel($1); }
 	;
 
-cond:	   expr 				{ g_lingo->code1(STOP); }
-	| expr '=' expr				{ g_lingo->code2(g_lingo->c_eq, STOP); }
-	| '(' cond ')'
+cond:	begincond expr endcond	{ g_lingo->code1(STOP); }
 	;
 
+begincond:	  /* nothing */		{ g_lingo->_inCond = true; }
+	;
+
+endcond:	  /* nothing */		{ g_lingo->_inCond = false; }
+	;
+
+
 repeatwhile:	tREPEAT tWHILE		{ $$ = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); }
 	;
 
@@ -479,6 +485,7 @@ expr: INT		{
 	| expr tMOD expr			{ g_lingo->code1(g_lingo->c_mod); }
 	| expr '>' expr				{ g_lingo->code1(g_lingo->c_gt); }
 	| expr '<' expr				{ g_lingo->code1(g_lingo->c_lt); }
+	| expr tEQ expr				{ g_lingo->code1(g_lingo->c_eq); }
 	| expr tNEQ expr			{ g_lingo->code1(g_lingo->c_neq); }
 	| expr tGE expr				{ g_lingo->code1(g_lingo->c_ge); }
 	| expr tLE expr				{ g_lingo->code1(g_lingo->c_le); }
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 991f9e8..d8bfaec 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 74
-#define YY_END_OF_BUFFER 75
+#define YY_NUM_RULES 75
+#define YY_END_OF_BUFFER 76
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,38 +373,38 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[274] =
+static yyconst flex_int16_t yy_accept[275] =
     {   0,
-        0,    0,   75,   73,    4,   71,   71,   73,   73,   73,
-       70,   70,   70,   69,   70,   70,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   73,    3,    3,    4,   71,    0,
-        0,    0,    0,    0,   72,    5,   66,    2,   68,   69,
-       65,   63,   64,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   23,   13,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   36,   37,   67,
-       39,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       56,   67,   67,   67,    1,    3,    3,    0,    5,    2,
-
-       68,   67,    7,   67,   67,   67,   67,   67,   67,   17,
-       67,   67,   67,   67,    0,   67,   67,   67,   67,   67,
-       67,   67,   32,   67,   67,   35,   67,   67,   67,   67,
-       44,   67,   46,   67,   67,   67,   67,   67,   67,   67,
-       67,    0,   67,   67,    9,   67,   11,   12,   16,    0,
-       17,   19,   67,   67,   67,    0,   67,   67,   26,   27,
-       28,   29,   67,   67,   67,   34,   38,   40,   67,   67,
-       67,   67,   67,   48,    0,   54,   60,   67,   58,   62,
-       15,    6,   67,   67,   17,   17,   67,   20,   67,   22,
-       67,   67,   30,   67,   33,   67,   67,   67,   67,   67,
-
-       67,   53,   53,   53,   55,   61,   67,    0,    8,   67,
-       17,   67,   21,   67,   67,   31,   67,   67,   67,   45,
-       57,   47,    0,    0,   53,   53,   59,    0,   67,   18,
-       67,   67,   67,   67,   67,    0,    0,    0,    0,   53,
-       53,   14,   10,   24,   67,   67,   42,   43,    0,    0,
-        0,   53,   53,   67,   41,    0,    0,    0,    0,    0,
-       25,   52,   51,   52,    0,    0,    0,    0,    0,    0,
-       49,   50,    0
+        0,    0,   76,   74,    4,   72,   72,   74,   74,   74,
+       71,   71,   71,   70,   71,   67,   71,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   74,    3,    3,    4,   72,
+        0,    0,    0,    0,    0,   73,    5,   66,    2,   69,
+       70,   65,   63,   64,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   23,   13,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   36,   37,
+       68,   39,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   56,   68,   68,   68,    1,    3,    3,    0,    5,
+
+        2,   69,   68,    7,   68,   68,   68,   68,   68,   68,
+       17,   68,   68,   68,   68,    0,   68,   68,   68,   68,
+       68,   68,   68,   32,   68,   68,   35,   68,   68,   68,
+       68,   44,   68,   46,   68,   68,   68,   68,   68,   68,
+       68,   68,    0,   68,   68,    9,   68,   11,   12,   16,
+        0,   17,   19,   68,   68,   68,    0,   68,   68,   26,
+       27,   28,   29,   68,   68,   68,   34,   38,   40,   68,
+       68,   68,   68,   68,   48,    0,   54,   60,   68,   58,
+       62,   15,    6,   68,   68,   17,   17,   68,   20,   68,
+       22,   68,   68,   30,   68,   33,   68,   68,   68,   68,
+
+       68,   68,   53,   53,   53,   55,   61,   68,    0,    8,
+       68,   17,   68,   21,   68,   68,   31,   68,   68,   68,
+       45,   57,   47,    0,    0,   53,   53,   59,    0,   68,
+       18,   68,   68,   68,   68,   68,    0,    0,    0,    0,
+       53,   53,   14,   10,   24,   68,   68,   42,   43,    0,
+        0,    0,   53,   53,   68,   41,    0,    0,    0,    0,
+        0,   25,   52,   51,   52,    0,    0,    0,    0,    0,
+        0,   49,   50,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -450,162 +450,162 @@ static yyconst flex_int32_t yy_meta[66] =
         5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[285] =
+static yyconst flex_int16_t yy_base[286] =
     {   0,
         0,   64,  188,  702,   68,   72,   76,   80,  148,    0,
-      702,  129,  106,   55,   71,   95,   66,   68,   66,   62,
-       72,   88,   73,    0,  104,   82,  120,  110,  136,  119,
-       83,  113,  154,  156,  105,  192,  209,  213,  702,  217,
-      180,  225,  120,  100,  702,    0,  702,    0,   89,  130,
-      702,  702,  702,    0,  114,  108,  155,  181,  178,  195,
-      191,  189,  210,  217,  220,  202,   89,    0,  205,  220,
-      214,  214,  226,  215,  232,  212,  219,    0,    0,  226,
-        0,  238,  252,  224,  234,  241,  246,  267,  254,  264,
-        0,  265,  253,  259,  702,  292,  315,  265,    0,    0,
-
-       85,  280,    0,  274,  274,  273,  281,  284,  293,  320,
-      286,  289,  301,  312,  333,  299,  319,  308,  320,  312,
-      313,  320,    0,  322,  315,    0,  322,  312,  317,  325,
-        0,  336,    0,  334,  328,  335,  385,  335,  344,  353,
-      359,  360,  350,  356,    0,  374,    0,    0,    0,  185,
-        0,    0,  363,  373,  379,  368,  382,  368,    0,    0,
-        0,    0,  373,  375,  387,    0,    0,  392,  385,  390,
-      395,  380,  383,    0,  418,  157,    0,  405,  403,    0,
-      395,    0,  409,  406,    0,    0,  407,    0,  414,  702,
-      414,  410,    0,  412,    0,  427,  418,  416,  415,  433,
-
-      424,  473,  475,  479,  456,    0,  433,  488,    0,  434,
-        0,  430,    0,  447,  474,    0,  477,  452,  463,    0,
-        0,    0,  495,  483,  497,  499,    0,  486,  471,    0,
-      493,  497,  498,  476,  483,  522,  509,  514,  512,  543,
-      555,  702,    0,    0,  508,  519,    0,    0,  515,  561,
-      530,  567,  578,  534,    0,  538,  584,  550,  589,  593,
-        0,  702,  595,  702,  599,  559,  603,  563,  610,  615,
-      616,  620,  702,  657,  659,  662,  665,  671,  676,  681,
-      684,  689,  691,  696
+      702,  129,  106,   55,   71,  702,   95,   66,   68,   66,
+       62,   72,   88,   73,    0,  104,   82,  120,  110,  136,
+      119,   83,  113,  154,  156,  105,  192,  209,  213,  702,
+      217,  180,  225,  120,  100,  702,    0,  702,    0,   89,
+      130,  702,  702,  702,    0,  114,  108,  155,  181,  178,
+      195,  191,  189,  210,  217,  220,  202,   89,    0,  205,
+      220,  214,  214,  226,  215,  232,  212,  219,    0,    0,
+      226,    0,  238,  252,  224,  234,  241,  246,  267,  254,
+      264,    0,  265,  253,  259,  702,  292,  315,  265,    0,
+
+        0,   85,  280,    0,  274,  274,  273,  281,  284,  293,
+      320,  286,  289,  301,  312,  333,  299,  319,  308,  320,
+      312,  313,  320,    0,  322,  315,    0,  322,  312,  317,
+      325,    0,  336,    0,  334,  328,  335,  385,  335,  344,
+      353,  359,  360,  350,  356,    0,  374,    0,    0,    0,
+      185,    0,    0,  363,  373,  379,  368,  382,  368,    0,
+        0,    0,    0,  373,  375,  387,    0,    0,  392,  385,
+      390,  395,  380,  383,    0,  418,  157,    0,  405,  403,
+        0,  395,    0,  409,  406,    0,    0,  407,    0,  414,
+      702,  414,  410,    0,  412,    0,  427,  418,  416,  415,
+
+      433,  424,  473,  475,  479,  456,    0,  433,  488,    0,
+      434,    0,  430,    0,  447,  474,    0,  477,  452,  463,
+        0,    0,    0,  495,  483,  497,  499,    0,  486,  471,
+        0,  493,  497,  498,  476,  483,  522,  509,  514,  512,
+      543,  555,  702,    0,    0,  508,  519,    0,    0,  515,
+      561,  530,  567,  578,  534,    0,  538,  584,  550,  589,
+      593,    0,  702,  595,  702,  599,  559,  603,  563,  610,
+      615,  616,  620,  702,  657,  659,  662,  665,  671,  676,
+      681,  684,  689,  691,  696
     } ;
 
-static yyconst flex_int16_t yy_def[285] =
+static yyconst flex_int16_t yy_def[286] =
     {   0,
-      273,    1,  273,  273,  273,  273,  273,  273,  274,  275,
-      273,  273,  273,  273,  273,  273,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  274,  273,  277,  273,  278,  273,  273,
-      273,  273,  273,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  273,  273,  273,  273,  277,  278,
-
-      273,  276,  276,  276,  276,  276,  276,  276,  276,  279,
-      276,  276,  276,  276,  273,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  273,  276,  276,  276,  276,  276,  276,  276,  280,
-      281,  276,  276,  276,  276,  273,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  282,  276,  276,  276,  276,  276,
-      273,  276,  276,  276,  283,  281,  276,  276,  276,  273,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-
-      276,  282,  282,  282,  273,  276,  276,  273,  276,  276,
-      283,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  273,  273,  282,  282,  276,  273,  276,  276,
-      276,  276,  276,  276,  276,  273,  273,  273,  273,  282,
-      282,  273,  276,  276,  276,  276,  276,  276,  273,  273,
-      273,  282,  282,  276,  276,  273,  284,  273,  273,  273,
-      276,  273,  284,  273,  273,  273,  273,  273,  273,  273,
-      284,  284,    0,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273
+      274,    1,  274,  274,  274,  274,  274,  274,  275,  276,
+      274,  274,  274,  274,  274,  274,  274,  277,  277,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  275,  274,  278,  274,  279,  274,
+      274,  274,  274,  274,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  274,  274,  274,  274,  278,
+
+      279,  274,  277,  277,  277,  277,  277,  277,  277,  277,
+      280,  277,  277,  277,  277,  274,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  274,  277,  277,  277,  277,  277,  277,  277,
+      281,  282,  277,  277,  277,  277,  274,  277,  277,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  277,  283,  277,  277,  277,  277,
+      277,  274,  277,  277,  277,  284,  282,  277,  277,  277,
+      274,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+
+      277,  277,  283,  283,  283,  274,  277,  277,  274,  277,
+      277,  284,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  274,  274,  283,  283,  277,  274,  277,
+      277,  277,  277,  277,  277,  277,  274,  274,  274,  274,
+      283,  283,  274,  277,  277,  277,  277,  277,  277,  274,
+      274,  274,  283,  283,  277,  277,  274,  285,  274,  274,
+      274,  277,  274,  285,  274,  274,  274,  274,  274,  274,
+      274,  285,  285,    0,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274
     } ;
 
 static yyconst flex_int16_t yy_nxt[768] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   11,
-       13,    4,   14,   15,   11,   16,   17,   18,   19,   20,
-       21,   22,   23,   24,   25,   24,   26,   27,   28,   29,
-       30,   24,   31,   32,   33,   24,   24,   34,   24,   24,
-       24,   17,   18,   19,   20,   21,   22,   23,   24,   25,
-       26,   27,   28,   29,   30,   24,   31,   32,   33,   24,
-       24,   34,   24,   24,   35,   36,   49,   50,   37,   38,
-       39,   39,   40,   41,   42,   42,   41,   41,   42,   42,
-       41,   40,   39,   39,   40,   51,   52,   55,   57,   58,
-      115,   60,   43,  115,   56,   59,   43,  101,   61,   66,
-
-       62,  101,   67,   85,   64,   45,   71,   95,   95,   53,
-       63,   72,   55,   57,   58,   60,   48,   43,   56,   59,
-       65,   43,   61,   66,   62,   68,   67,  103,   85,   64,
-       76,   71,   69,   86,   63,   72,   73,   47,   70,   77,
-       74,   49,   50,   87,   65,   82,   98,   88,  102,   75,
-       68,   83,  103,   45,   84,   76,   69,   78,   86,  205,
-      205,   73,   70,   77,   79,   74,   80,   87,   81,   82,
-       98,   88,  102,   75,   89,   83,  104,   90,   84,   92,
-       93,   41,   78,   91,   41,   94,  150,  273,   79,  150,
-       80,  273,   81,   96,   39,   39,   97,  105,  273,   89,
-
-       43,  104,   90,  273,   92,   93,  106,   91,  110,   94,
-       97,   39,   39,   97,   38,   39,   39,   40,   40,   39,
-       39,   40,  105,  107,  109,   43,   41,   42,   42,   41,
-      106,  114,  108,  110,  111,  112,  113,  273,  116,  117,
-      118,  273,  119,  120,  121,   43,  127,  107,  109,  122,
-      125,  123,  273,  126,  128,  114,  108,  273,  131,  111,
-      112,  113,  116,  117,  132,  118,  119,  120,  124,  121,
-       43,  127,  129,  122,  125,  133,  123,  126,  134,  128,
-      136,  130,  131,  135,  137,  138,  273,  140,  132,  139,
-      273,  141,  124,   96,   39,   39,   97,  129,  142,  133,
-
-      143,  147,  134,  144,  136,  130,  145,  146,  135,  137,
-      138,  140,  148,  149,  139,  141,   97,   39,   39,   97,
-      152,  150,  142,  153,  150,  143,  147,  144,  154,  155,
-      145,  146,   54,  157,  115,  160,  148,  115,  149,  158,
-      161,  273,  162,  164,  152,  163,  165,  153,  159,  166,
-      167,  168,  154,  169,  155,  170,  171,  157,  172,  160,
-      173,  174,  273,  177,  158,  161,  162,  156,  164,  163,
-      178,  165,  159,  166,  167,  168,  179,  169,  180,  170,
-      181,  171,  182,  172,  173,  174,  175,  177,  183,  175,
-      184,  156,  187,  188,  178,  189,  208,  190,  191,  208,
-
-      192,  179,  193,  180,  194,  181,  182,  195,  196,  197,
-      198,  199,  183,  176,  200,  184,  187,  201,  188,  175,
-      189,  190,  175,  191,  192,  206,  193,  207,  194,  209,
-      210,  216,  195,  196,  197,  198,  199,  176,  200,  212,
-      213,  201,  214,  215,  203,  217,  273,  218,  219,  220,
-      206,  204,  207,  221,  209,  210,  216,  222,  205,  205,
-      273,  227,  229,  212,  213,  231,  214,  215,  203,  230,
-      217,  218,  219,  220,  223,  204,  223,  223,  221,  223,
-      223,  222,  224,  223,  224,  227,  229,  234,  224,  208,
-      231,  225,  208,  230,  232,  233,  236,  235,  223,  236,
-
-      223,  223,  237,  223,  243,  273,  224,  242,  224,  247,
-      226,  234,  228,  244,  237,  245,  225,  239,  246,  232,
-      233,  235,  248,  236,  238,  249,  236,  237,  243,  239,
-      240,  241,  242,  247,  226,  250,  251,  228,  244,  237,
-      245,  239,  254,  246,  223,  255,  248,  223,  238,  256,
-      249,  238,  224,  239,  240,  241,  223,  258,  262,  223,
-      250,  251,  257,  273,  224,  257,  254,  261,  259,  255,
-      264,  259,  273,  256,  273,  238,  224,  252,  273,  260,
-      269,  258,  260,  262,  270,  257,  273,  224,  257,  253,
-      265,  261,  273,  265,  267,  264,  273,  267,  273,  273,
-
-      265,  252,  273,  265,  267,  269,  273,  267,  237,  270,
-      273,  271,  237,  253,  271,  273,  272,  271,  266,  272,
-      271,  272,  268,  239,  272,  273,  273,  239,  266,  273,
-      273,  273,  268,  237,  273,  273,  273,  237,  273,  273,
-      273,  273,  266,  273,  273,  273,  268,  239,  273,  273,
-      273,  239,  266,  273,  273,  273,  268,   44,   44,  273,
-       44,   44,   44,   46,   46,   54,   54,   54,   99,   99,
-       99,  100,  100,  273,  100,  100,  100,  151,  273,  151,
-      151,  151,  185,  273,  273,  185,  185,  186,  186,  186,
-      202,  273,  273,  202,  211,  211,  211,  263,  273,  273,
-
-      263,    3,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273
+       13,    4,   14,   15,   16,   17,   18,   19,   20,   21,
+       22,   23,   24,   25,   26,   25,   27,   28,   29,   30,
+       31,   25,   32,   33,   34,   25,   25,   35,   25,   25,
+       25,   18,   19,   20,   21,   22,   23,   24,   25,   26,
+       27,   28,   29,   30,   31,   25,   32,   33,   34,   25,
+       25,   35,   25,   25,   36,   37,   50,   51,   38,   39,
+       40,   40,   41,   42,   43,   43,   42,   42,   43,   43,
+       42,   41,   40,   40,   41,   52,   53,   56,   58,   59,
+      116,   61,   44,  116,   57,   60,   44,  102,   62,   67,
+
+       63,  102,   68,   86,   65,   46,   72,   96,   96,   54,
+       64,   73,   56,   58,   59,   61,   49,   44,   57,   60,
+       66,   44,   62,   67,   63,   69,   68,  104,   86,   65,
+       77,   72,   70,   87,   64,   73,   74,   48,   71,   78,
+       75,   50,   51,   88,   66,   83,   99,   89,  103,   76,
+       69,   84,  104,   46,   85,   77,   70,   79,   87,  206,
+      206,   74,   71,   78,   80,   75,   81,   88,   82,   83,
+       99,   89,  103,   76,   90,   84,  105,   91,   85,   93,
+       94,   42,   79,   92,   42,   95,  151,  274,   80,  151,
+       81,  274,   82,   97,   40,   40,   98,  106,  274,   90,
+
+       44,  105,   91,  274,   93,   94,  107,   92,  111,   95,
+       98,   40,   40,   98,   39,   40,   40,   41,   41,   40,
+       40,   41,  106,  108,  110,   44,   42,   43,   43,   42,
+      107,  115,  109,  111,  112,  113,  114,  274,  117,  118,
+      119,  274,  120,  121,  122,   44,  128,  108,  110,  123,
+      126,  124,  274,  127,  129,  115,  109,  274,  132,  112,
+      113,  114,  117,  118,  133,  119,  120,  121,  125,  122,
+       44,  128,  130,  123,  126,  134,  124,  127,  135,  129,
+      137,  131,  132,  136,  138,  139,  274,  141,  133,  140,
+      274,  142,  125,   97,   40,   40,   98,  130,  143,  134,
+
+      144,  148,  135,  145,  137,  131,  146,  147,  136,  138,
+      139,  141,  149,  150,  140,  142,   98,   40,   40,   98,
+      153,  151,  143,  154,  151,  144,  148,  145,  155,  156,
+      146,  147,   55,  158,  116,  161,  149,  116,  150,  159,
+      162,  274,  163,  165,  153,  164,  166,  154,  160,  167,
+      168,  169,  155,  170,  156,  171,  172,  158,  173,  161,
+      174,  175,  274,  178,  159,  162,  163,  157,  165,  164,
+      179,  166,  160,  167,  168,  169,  180,  170,  181,  171,
+      182,  172,  183,  173,  174,  175,  176,  178,  184,  176,
+      185,  157,  188,  189,  179,  190,  209,  191,  192,  209,
+
+      193,  180,  194,  181,  195,  182,  183,  196,  197,  198,
+      199,  200,  184,  177,  201,  185,  188,  202,  189,  176,
+      190,  191,  176,  192,  193,  207,  194,  208,  195,  210,
+      211,  217,  196,  197,  198,  199,  200,  177,  201,  213,
+      214,  202,  215,  216,  204,  218,  274,  219,  220,  221,
+      207,  205,  208,  222,  210,  211,  217,  223,  206,  206,
+      274,  228,  230,  213,  214,  232,  215,  216,  204,  231,
+      218,  219,  220,  221,  224,  205,  224,  224,  222,  224,
+      224,  223,  225,  224,  225,  228,  230,  235,  225,  209,
+      232,  226,  209,  231,  233,  234,  237,  236,  224,  237,
+
+      224,  224,  238,  224,  244,  274,  225,  243,  225,  248,
+      227,  235,  229,  245,  238,  246,  226,  240,  247,  233,
+      234,  236,  249,  237,  239,  250,  237,  238,  244,  240,
+      241,  242,  243,  248,  227,  251,  252,  229,  245,  238,
+      246,  240,  255,  247,  224,  256,  249,  224,  239,  257,
+      250,  239,  225,  240,  241,  242,  224,  259,  263,  224,
+      251,  252,  258,  274,  225,  258,  255,  262,  260,  256,
+      265,  260,  274,  257,  274,  239,  225,  253,  274,  261,
+      270,  259,  261,  263,  271,  258,  274,  225,  258,  254,
+      266,  262,  274,  266,  268,  265,  274,  268,  274,  274,
+
+      266,  253,  274,  266,  268,  270,  274,  268,  238,  271,
+      274,  272,  238,  254,  272,  274,  273,  272,  267,  273,
+      272,  273,  269,  240,  273,  274,  274,  240,  267,  274,
+      274,  274,  269,  238,  274,  274,  274,  238,  274,  274,
+      274,  274,  267,  274,  274,  274,  269,  240,  274,  274,
+      274,  240,  267,  274,  274,  274,  269,   45,   45,  274,
+       45,   45,   45,   47,   47,   55,   55,   55,  100,  100,
+      100,  101,  101,  274,  101,  101,  101,  152,  274,  152,
+      152,  152,  186,  274,  274,  186,  186,  187,  187,  187,
+      203,  274,  274,  203,  212,  212,  212,  264,  274,  274,
+
+      264,    3,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274
     } ;
 
 static yyconst flex_int16_t yy_chk[768] =
@@ -618,82 +618,82 @@ static yyconst flex_int16_t yy_chk[768] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    2,   14,   14,    2,    5,
         5,    5,    5,    6,    6,    6,    6,    7,    7,    7,
-        7,    8,    8,    8,    8,   15,   15,   17,   18,   19,
-       67,   20,    6,   67,   17,   19,    7,  101,   21,   23,
-
-       21,   49,   23,   31,   22,   44,   26,   35,   35,   16,
-       21,   26,   17,   18,   19,   20,   13,    6,   17,   19,
-       22,    7,   21,   23,   21,   25,   23,   56,   31,   22,
-       28,   26,   25,   32,   21,   26,   27,   12,   25,   28,
-       27,   50,   50,   32,   22,   30,   43,   32,   55,   27,
-       25,   30,   56,    9,   30,   28,   25,   29,   32,  176,
-      176,   27,   25,   28,   29,   27,   29,   32,   29,   30,
-       43,   32,   55,   27,   33,   30,   57,   33,   30,   34,
-       34,   41,   29,   33,   41,   34,  150,    3,   29,  150,
-       29,    0,   29,   36,   36,   36,   36,   58,    0,   33,
-
-       41,   57,   33,    0,   34,   34,   59,   33,   62,   34,
-       37,   37,   37,   37,   38,   38,   38,   38,   40,   40,
-       40,   40,   58,   60,   61,   41,   42,   42,   42,   42,
-       59,   66,   60,   62,   63,   64,   65,    0,   69,   69,
-       70,    0,   71,   72,   73,   42,   80,   60,   61,   74,
-       76,   75,    0,   77,   82,   66,   60,    0,   84,   63,
-       64,   65,   69,   69,   85,   70,   71,   72,   75,   73,
-       42,   80,   83,   74,   76,   86,   75,   77,   87,   82,
-       89,   83,   84,   88,   90,   92,    0,   93,   85,   92,
-        0,   94,   75,   96,   96,   96,   96,   83,   98,   86,
-
-      102,  107,   87,  104,   89,   83,  105,  106,   88,   90,
-       92,   93,  108,  109,   92,   94,   97,   97,   97,   97,
-      111,  110,   98,  112,  110,  102,  107,  104,  113,  114,
-      105,  106,  110,  116,  115,  118,  108,  115,  109,  117,
-      119,    0,  120,  122,  111,  121,  124,  112,  117,  125,
-      127,  128,  113,  129,  114,  130,  132,  116,  134,  118,
-      135,  136,    0,  138,  117,  119,  120,  115,  122,  121,
-      139,  124,  117,  125,  127,  128,  140,  129,  141,  130,
-      142,  132,  143,  134,  135,  136,  137,  138,  144,  137,
-      146,  115,  153,  154,  139,  155,  181,  156,  157,  181,
-
-      158,  140,  163,  141,  164,  142,  143,  165,  168,  169,
-      170,  171,  144,  137,  172,  146,  153,  173,  154,  175,
-      155,  156,  175,  157,  158,  178,  163,  179,  164,  183,
-      184,  194,  165,  168,  169,  170,  171,  137,  172,  187,
-      189,  173,  191,  192,  175,  196,    0,  197,  198,  199,
-      178,  175,  179,  200,  183,  184,  194,  201,  205,  205,
-        0,  207,  210,  187,  189,  214,  191,  192,  175,  212,
-      196,  197,  198,  199,  202,  175,  203,  202,  200,  203,
-      204,  201,  202,  204,  203,  207,  210,  218,  204,  208,
-      214,  203,  208,  212,  215,  217,  223,  219,  225,  223,
-
-      226,  225,  224,  226,  229,    0,  225,  228,  226,  234,
-      204,  218,  208,  231,  223,  232,  203,  224,  233,  215,
-      217,  219,  235,  236,  223,  237,  236,  224,  229,  223,
-      225,  226,  228,  234,  204,  238,  239,  208,  231,  223,
-      232,  224,  245,  233,  240,  246,  235,  240,  223,  249,
-      237,  236,  240,  223,  225,  226,  241,  251,  256,  241,
-      238,  239,  250,    0,  241,  250,  245,  254,  252,  246,
-      258,  252,    0,  249,    0,  236,  252,  240,    0,  253,
-      266,  251,  253,  256,  268,  257,    0,  253,  257,  241,
-      259,  254,    0,  259,  260,  258,  263,  260,    0,  263,
-
-      265,  240,    0,  265,  267,  266,    0,  267,  259,  268,
-        0,  269,  260,  241,  269,    0,  270,  271,  259,  270,
-      271,  272,  260,  259,  272,    0,    0,  260,  265,    0,
-        0,    0,  267,  259,    0,    0,    0,  260,    0,    0,
-        0,    0,  259,    0,    0,    0,  260,  259,    0,    0,
-        0,  260,  265,    0,    0,    0,  267,  274,  274,    0,
-      274,  274,  274,  275,  275,  276,  276,  276,  277,  277,
-      277,  278,  278,    0,  278,  278,  278,  279,    0,  279,
-      279,  279,  280,    0,    0,  280,  280,  281,  281,  281,
-      282,    0,    0,  282,  283,  283,  283,  284,    0,    0,
-
-      284,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273
+        7,    8,    8,    8,    8,   15,   15,   18,   19,   20,
+       68,   21,    6,   68,   18,   20,    7,  102,   22,   24,
+
+       22,   50,   24,   32,   23,   45,   27,   36,   36,   17,
+       22,   27,   18,   19,   20,   21,   13,    6,   18,   20,
+       23,    7,   22,   24,   22,   26,   24,   57,   32,   23,
+       29,   27,   26,   33,   22,   27,   28,   12,   26,   29,
+       28,   51,   51,   33,   23,   31,   44,   33,   56,   28,
+       26,   31,   57,    9,   31,   29,   26,   30,   33,  177,
+      177,   28,   26,   29,   30,   28,   30,   33,   30,   31,
+       44,   33,   56,   28,   34,   31,   58,   34,   31,   35,
+       35,   42,   30,   34,   42,   35,  151,    3,   30,  151,
+       30,    0,   30,   37,   37,   37,   37,   59,    0,   34,
+
+       42,   58,   34,    0,   35,   35,   60,   34,   63,   35,
+       38,   38,   38,   38,   39,   39,   39,   39,   41,   41,
+       41,   41,   59,   61,   62,   42,   43,   43,   43,   43,
+       60,   67,   61,   63,   64,   65,   66,    0,   70,   70,
+       71,    0,   72,   73,   74,   43,   81,   61,   62,   75,
+       77,   76,    0,   78,   83,   67,   61,    0,   85,   64,
+       65,   66,   70,   70,   86,   71,   72,   73,   76,   74,
+       43,   81,   84,   75,   77,   87,   76,   78,   88,   83,
+       90,   84,   85,   89,   91,   93,    0,   94,   86,   93,
+        0,   95,   76,   97,   97,   97,   97,   84,   99,   87,
+
+      103,  108,   88,  105,   90,   84,  106,  107,   89,   91,
+       93,   94,  109,  110,   93,   95,   98,   98,   98,   98,
+      112,  111,   99,  113,  111,  103,  108,  105,  114,  115,
+      106,  107,  111,  117,  116,  119,  109,  116,  110,  118,
+      120,    0,  121,  123,  112,  122,  125,  113,  118,  126,
+      128,  129,  114,  130,  115,  131,  133,  117,  135,  119,
+      136,  137,    0,  139,  118,  120,  121,  116,  123,  122,
+      140,  125,  118,  126,  128,  129,  141,  130,  142,  131,
+      143,  133,  144,  135,  136,  137,  138,  139,  145,  138,
+      147,  116,  154,  155,  140,  156,  182,  157,  158,  182,
+
+      159,  141,  164,  142,  165,  143,  144,  166,  169,  170,
+      171,  172,  145,  138,  173,  147,  154,  174,  155,  176,
+      156,  157,  176,  158,  159,  179,  164,  180,  165,  184,
+      185,  195,  166,  169,  170,  171,  172,  138,  173,  188,
+      190,  174,  192,  193,  176,  197,    0,  198,  199,  200,
+      179,  176,  180,  201,  184,  185,  195,  202,  206,  206,
+        0,  208,  211,  188,  190,  215,  192,  193,  176,  213,
+      197,  198,  199,  200,  203,  176,  204,  203,  201,  204,
+      205,  202,  203,  205,  204,  208,  211,  219,  205,  209,
+      215,  204,  209,  213,  216,  218,  224,  220,  226,  224,
+
+      227,  226,  225,  227,  230,    0,  226,  229,  227,  235,
+      205,  219,  209,  232,  224,  233,  204,  225,  234,  216,
+      218,  220,  236,  237,  224,  238,  237,  225,  230,  224,
+      226,  227,  229,  235,  205,  239,  240,  209,  232,  224,
+      233,  225,  246,  234,  241,  247,  236,  241,  224,  250,
+      238,  237,  241,  224,  226,  227,  242,  252,  257,  242,
+      239,  240,  251,    0,  242,  251,  246,  255,  253,  247,
+      259,  253,    0,  250,    0,  237,  253,  241,    0,  254,
+      267,  252,  254,  257,  269,  258,    0,  254,  258,  242,
+      260,  255,    0,  260,  261,  259,  264,  261,    0,  264,
+
+      266,  241,    0,  266,  268,  267,    0,  268,  260,  269,
+        0,  270,  261,  242,  270,    0,  271,  272,  260,  271,
+      272,  273,  261,  260,  273,    0,    0,  261,  266,    0,
+        0,    0,  268,  260,    0,    0,    0,  261,    0,    0,
+        0,    0,  260,    0,    0,    0,  261,  260,    0,    0,
+        0,  261,  266,    0,    0,    0,  268,  275,  275,    0,
+      275,  275,  275,  276,  276,  277,  277,  277,  278,  278,
+      278,  279,  279,    0,  279,  279,  279,  280,    0,  280,
+      280,  280,  281,    0,    0,  281,  281,  282,  282,  282,
+      283,    0,    0,  283,  284,  284,  284,  285,    0,    0,
+
+      285,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1013,13 +1013,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 274 )
+				if ( yy_current_state >= 275 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 273 );
+		while ( yy_current_state != 274 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1486,7 +1486,12 @@ YY_RULE_SETUP
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 261 "engines/director/lingo/lingo-lex.l"
+#line 260 "engines/director/lingo/lingo-lex.l"
+{ count(); return g_lingo->_inCond ? tEQ : '='; }
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 262 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1533,43 +1538,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 306 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return FLOAT; }
-	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 307 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{ count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 308 "engines/director/lingo/lingo-lex.l"
-{ count(); return *yytext; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 71:
-/* rule 71 can match eol */
 YY_RULE_SETUP
 #line 309 "engines/director/lingo/lingo-lex.l"
-{ return '\n'; }
+{ count(); return *yytext; }
 	YY_BREAK
 case 72:
+/* rule 72 can match eol */
 YY_RULE_SETUP
 #line 310 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{ return '\n'; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 311 "engines/director/lingo/lingo-lex.l"
-{ count(); }
+{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 313 "engines/director/lingo/lingo-lex.l"
+#line 312 "engines/director/lingo/lingo-lex.l"
+{ count(); }
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 314 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1573 "engines/director/lingo/lingo-lex.cpp"
+#line 1578 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1863,7 +1868,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 274 )
+			if ( yy_current_state >= 275 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1891,11 +1896,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 274 )
+		if ( yy_current_state >= 275 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 273);
+	yy_is_jam = (yy_current_state == 274);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2529,7 +2534,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 313 "engines/director/lingo/lingo-lex.l"
+#line 314 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index f4f8fc0..15dc312 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -71,7 +71,7 @@ identifier [_[:alpha:]][_[:alnum:]]*
 constfloat [[:digit:]]+\.[[:digit:]]*
 constinteger [[:digit:]]+
 conststring \"[^\"\r\n]*\"
-operator [-+*/%=^:,()><&\[\]]
+operator [-+*/%^:,()><&\[\]]
 newline [ \t]*[\n\r]
 whitespace [\t ]
 
@@ -257,6 +257,7 @@ whitespace [\t ]
 [>][=]					{ count(); return tGE; }
 [<][=]					{ count(); return tLE; }
 [&][&]					{ count(); return tCONCAT; }
+[=]							{ count(); return g_lingo->_inCond ? tEQ : '='; }
 
 {identifier}		{
 		count();
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 805bcb5..36a7a11 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -59,6 +59,7 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
 	_hadError = false;
 
 	_inFactory = false;
+	_inCond = false;
 
 	_floatPrecision = 4;
 	_floatPrecisionFormat = "%.4f";
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 872ac21..6a0f087 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -565,6 +565,7 @@ public:
 
 	bool _inFactory;
 	Common::String _currentFactory;
+	bool _inCond;
 
 	bool _exitRepeat;
 
diff --git a/engines/director/lingo/tests/if.lingo b/engines/director/lingo/tests/if.lingo
index 512a154..d7809e7 100644
--- a/engines/director/lingo/tests/if.lingo
+++ b/engines/director/lingo/tests/if.lingo
@@ -3,6 +3,8 @@ set x = 1
 if x = 5 then exit
 else put 10.0
 
+set y = 4
+
 repeat with x = 1 to 6
 	if x = 3 then put 30
 	else if x = 4 then put 40
@@ -42,5 +44,8 @@ end repeat
         go to frame 1
     end if
 
---  specialized macros to determine which sub-menu to return to
---  (these two files appear in two different menus)
+if abs(y) = x and abs(x) = y then
+  put TRUE
+else
+  put FALSE
+end if




More information about the Scummvm-git-logs mailing list