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

sev- noreply at scummvm.org
Sat Jan 28 01:03:25 UTC 2023


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

Summary:
dce0412e80 DIRECTOR: LINGO: Implement grammar for "the number of menus"


Commit: dce0412e80f2263cbdc8e91fc3a2e40fc2d2eabe
    https://github.com/scummvm/scummvm/commit/dce0412e80f2263cbdc8e91fc3a2e40fc2d2eabe
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-01-28T02:03:06+01:00

Commit Message:
DIRECTOR: LINGO: Implement grammar for "the number of menus"

Used in overringunder: Over-Ring-Under '--start-movie=10 STORE(LOOP)'

Changed paths:
    engines/director/lingo/lingo-ast.h
    engines/director/lingo/lingo-codegen.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l


diff --git a/engines/director/lingo/lingo-ast.h b/engines/director/lingo/lingo-ast.h
index 42a5dfcd9cd..31775f48853 100644
--- a/engines/director/lingo/lingo-ast.h
+++ b/engines/director/lingo/lingo-ast.h
@@ -147,7 +147,8 @@ enum NumberOfType {
 	kNumberOfWords,
 	kNumberOfItems,
 	kNumberOfLines,
-	kNumberOfMenuItems
+	kNumberOfMenuItems,
+	kNumberOfMenus,
 };
 
 /* NodeVisitor */
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 8bfb65a36ec..413b512c993 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -1418,6 +1418,12 @@ bool LingoCompiler::visitTheNumberOfNode(TheNumberOfNode *node) {
 			codeInt(kTheNumber);
 		}
 		break;
+	case kNumberOfMenus:
+		codeInt(0); // Put dummy id
+		code1(LC::c_theentitypush);
+		codeInt(kTheMenus);
+		codeInt(kTheNumber);
+		break;
 	}
 	return true;
 }
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index df648eca01a..930c61f54f9 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -224,102 +224,103 @@ enum yysymbol_kind_t
   YYSYMBOL_tDATE = 68,                     /* tDATE  */
   YYSYMBOL_tLAST = 69,                     /* tLAST  */
   YYSYMBOL_tMENU = 70,                     /* tMENU  */
-  YYSYMBOL_tMENUITEM = 71,                 /* tMENUITEM  */
-  YYSYMBOL_tMENUITEMS = 72,                /* tMENUITEMS  */
-  YYSYMBOL_tNUMBER = 73,                   /* tNUMBER  */
-  YYSYMBOL_tTHE = 74,                      /* tTHE  */
-  YYSYMBOL_tTIME = 75,                     /* tTIME  */
-  YYSYMBOL_tSOUND = 76,                    /* tSOUND  */
-  YYSYMBOL_tSPRITE = 77,                   /* tSPRITE  */
-  YYSYMBOL_tINTERSECTS = 78,               /* tINTERSECTS  */
-  YYSYMBOL_tWITHIN = 79,                   /* tWITHIN  */
-  YYSYMBOL_tTELL = 80,                     /* tTELL  */
-  YYSYMBOL_tPROPERTY = 81,                 /* tPROPERTY  */
-  YYSYMBOL_tON = 82,                       /* tON  */
-  YYSYMBOL_tMETHOD = 83,                   /* tMETHOD  */
-  YYSYMBOL_tENDIF = 84,                    /* tENDIF  */
-  YYSYMBOL_tENDREPEAT = 85,                /* tENDREPEAT  */
-  YYSYMBOL_tENDTELL = 86,                  /* tENDTELL  */
-  YYSYMBOL_tASSERTERROR = 87,              /* tASSERTERROR  */
-  YYSYMBOL_88_ = 88,                       /* '<'  */
-  YYSYMBOL_89_ = 89,                       /* '>'  */
-  YYSYMBOL_90_ = 90,                       /* '&'  */
-  YYSYMBOL_91_ = 91,                       /* '+'  */
-  YYSYMBOL_92_ = 92,                       /* '-'  */
-  YYSYMBOL_93_ = 93,                       /* '*'  */
-  YYSYMBOL_94_ = 94,                       /* '/'  */
-  YYSYMBOL_95_n_ = 95,                     /* '\n'  */
-  YYSYMBOL_96_ = 96,                       /* ','  */
-  YYSYMBOL_97_ = 97,                       /* '('  */
-  YYSYMBOL_98_ = 98,                       /* ')'  */
-  YYSYMBOL_99_ = 99,                       /* '['  */
-  YYSYMBOL_100_ = 100,                     /* ']'  */
-  YYSYMBOL_101_ = 101,                     /* ':'  */
-  YYSYMBOL_YYACCEPT = 102,                 /* $accept  */
-  YYSYMBOL_script = 103,                   /* script  */
-  YYSYMBOL_scriptpartlist = 104,           /* scriptpartlist  */
-  YYSYMBOL_scriptpart = 105,               /* scriptpart  */
-  YYSYMBOL_macro = 106,                    /* macro  */
-  YYSYMBOL_factory = 107,                  /* factory  */
-  YYSYMBOL_method = 108,                   /* method  */
-  YYSYMBOL_methodlist = 109,               /* methodlist  */
-  YYSYMBOL_nonemptymethodlist = 110,       /* nonemptymethodlist  */
-  YYSYMBOL_methodlistline = 111,           /* methodlistline  */
-  YYSYMBOL_handler = 112,                  /* handler  */
-  YYSYMBOL_endargdef = 113,                /* endargdef  */
-  YYSYMBOL_CMDID = 114,                    /* CMDID  */
-  YYSYMBOL_ID = 115,                       /* ID  */
-  YYSYMBOL_idlist = 116,                   /* idlist  */
-  YYSYMBOL_nonemptyidlist = 117,           /* nonemptyidlist  */
-  YYSYMBOL_stmt = 118,                     /* stmt  */
-  YYSYMBOL_stmt_insideif = 119,            /* stmt_insideif  */
-  YYSYMBOL_stmtoneliner = 120,             /* stmtoneliner  */
-  YYSYMBOL_proc = 121,                     /* proc  */
-  YYSYMBOL_cmdargs = 122,                  /* cmdargs  */
-  YYSYMBOL_trailingcomma = 123,            /* trailingcomma  */
-  YYSYMBOL_frameargs = 124,                /* frameargs  */
-  YYSYMBOL_asgn = 125,                     /* asgn  */
-  YYSYMBOL_to = 126,                       /* to  */
-  YYSYMBOL_definevars = 127,               /* definevars  */
-  YYSYMBOL_ifstmt = 128,                   /* ifstmt  */
-  YYSYMBOL_ifelsestmt = 129,               /* ifelsestmt  */
-  YYSYMBOL_endif = 130,                    /* endif  */
-  YYSYMBOL_loop = 131,                     /* loop  */
-  YYSYMBOL_tell = 132,                     /* tell  */
-  YYSYMBOL_when = 133,                     /* when  */
-  YYSYMBOL_stmtlist = 134,                 /* stmtlist  */
-  YYSYMBOL_nonemptystmtlist = 135,         /* nonemptystmtlist  */
-  YYSYMBOL_stmtlistline = 136,             /* stmtlistline  */
-  YYSYMBOL_stmtlist_insideif = 137,        /* stmtlist_insideif  */
-  YYSYMBOL_nonemptystmtlist_insideif = 138, /* nonemptystmtlist_insideif  */
-  YYSYMBOL_stmtlistline_insideif = 139,    /* stmtlistline_insideif  */
-  YYSYMBOL_simpleexpr_nounarymath = 140,   /* simpleexpr_nounarymath  */
-  YYSYMBOL_var = 141,                      /* var  */
-  YYSYMBOL_varorchunk = 142,               /* varorchunk  */
-  YYSYMBOL_varorthe = 143,                 /* varorthe  */
-  YYSYMBOL_chunk = 144,                    /* chunk  */
-  YYSYMBOL_chunktype = 145,                /* chunktype  */
-  YYSYMBOL_object = 146,                   /* object  */
-  YYSYMBOL_refargs = 147,                  /* refargs  */
-  YYSYMBOL_the = 148,                      /* the  */
-  YYSYMBOL_theobj = 149,                   /* theobj  */
-  YYSYMBOL_menu = 150,                     /* menu  */
-  YYSYMBOL_thedatetime = 151,              /* thedatetime  */
-  YYSYMBOL_thenumberof = 152,              /* thenumberof  */
-  YYSYMBOL_inof = 153,                     /* inof  */
-  YYSYMBOL_writablethe = 154,              /* writablethe  */
-  YYSYMBOL_writabletheobj = 155,           /* writabletheobj  */
-  YYSYMBOL_list = 156,                     /* list  */
-  YYSYMBOL_proplist = 157,                 /* proplist  */
-  YYSYMBOL_proppair = 158,                 /* proppair  */
-  YYSYMBOL_unarymath = 159,                /* unarymath  */
-  YYSYMBOL_simpleexpr = 160,               /* simpleexpr  */
-  YYSYMBOL_expr = 161,                     /* expr  */
-  YYSYMBOL_expr_nounarymath = 162,         /* expr_nounarymath  */
-  YYSYMBOL_expr_noeq = 163,                /* expr_noeq  */
-  YYSYMBOL_sprite = 164,                   /* sprite  */
-  YYSYMBOL_exprlist = 165,                 /* exprlist  */
-  YYSYMBOL_nonemptyexprlist = 166          /* nonemptyexprlist  */
+  YYSYMBOL_tMENUS = 71,                    /* tMENUS  */
+  YYSYMBOL_tMENUITEM = 72,                 /* tMENUITEM  */
+  YYSYMBOL_tMENUITEMS = 73,                /* tMENUITEMS  */
+  YYSYMBOL_tNUMBER = 74,                   /* tNUMBER  */
+  YYSYMBOL_tTHE = 75,                      /* tTHE  */
+  YYSYMBOL_tTIME = 76,                     /* tTIME  */
+  YYSYMBOL_tSOUND = 77,                    /* tSOUND  */
+  YYSYMBOL_tSPRITE = 78,                   /* tSPRITE  */
+  YYSYMBOL_tINTERSECTS = 79,               /* tINTERSECTS  */
+  YYSYMBOL_tWITHIN = 80,                   /* tWITHIN  */
+  YYSYMBOL_tTELL = 81,                     /* tTELL  */
+  YYSYMBOL_tPROPERTY = 82,                 /* tPROPERTY  */
+  YYSYMBOL_tON = 83,                       /* tON  */
+  YYSYMBOL_tMETHOD = 84,                   /* tMETHOD  */
+  YYSYMBOL_tENDIF = 85,                    /* tENDIF  */
+  YYSYMBOL_tENDREPEAT = 86,                /* tENDREPEAT  */
+  YYSYMBOL_tENDTELL = 87,                  /* tENDTELL  */
+  YYSYMBOL_tASSERTERROR = 88,              /* tASSERTERROR  */
+  YYSYMBOL_89_ = 89,                       /* '<'  */
+  YYSYMBOL_90_ = 90,                       /* '>'  */
+  YYSYMBOL_91_ = 91,                       /* '&'  */
+  YYSYMBOL_92_ = 92,                       /* '+'  */
+  YYSYMBOL_93_ = 93,                       /* '-'  */
+  YYSYMBOL_94_ = 94,                       /* '*'  */
+  YYSYMBOL_95_ = 95,                       /* '/'  */
+  YYSYMBOL_96_n_ = 96,                     /* '\n'  */
+  YYSYMBOL_97_ = 97,                       /* ','  */
+  YYSYMBOL_98_ = 98,                       /* '('  */
+  YYSYMBOL_99_ = 99,                       /* ')'  */
+  YYSYMBOL_100_ = 100,                     /* '['  */
+  YYSYMBOL_101_ = 101,                     /* ']'  */
+  YYSYMBOL_102_ = 102,                     /* ':'  */
+  YYSYMBOL_YYACCEPT = 103,                 /* $accept  */
+  YYSYMBOL_script = 104,                   /* script  */
+  YYSYMBOL_scriptpartlist = 105,           /* scriptpartlist  */
+  YYSYMBOL_scriptpart = 106,               /* scriptpart  */
+  YYSYMBOL_macro = 107,                    /* macro  */
+  YYSYMBOL_factory = 108,                  /* factory  */
+  YYSYMBOL_method = 109,                   /* method  */
+  YYSYMBOL_methodlist = 110,               /* methodlist  */
+  YYSYMBOL_nonemptymethodlist = 111,       /* nonemptymethodlist  */
+  YYSYMBOL_methodlistline = 112,           /* methodlistline  */
+  YYSYMBOL_handler = 113,                  /* handler  */
+  YYSYMBOL_endargdef = 114,                /* endargdef  */
+  YYSYMBOL_CMDID = 115,                    /* CMDID  */
+  YYSYMBOL_ID = 116,                       /* ID  */
+  YYSYMBOL_idlist = 117,                   /* idlist  */
+  YYSYMBOL_nonemptyidlist = 118,           /* nonemptyidlist  */
+  YYSYMBOL_stmt = 119,                     /* stmt  */
+  YYSYMBOL_stmt_insideif = 120,            /* stmt_insideif  */
+  YYSYMBOL_stmtoneliner = 121,             /* stmtoneliner  */
+  YYSYMBOL_proc = 122,                     /* proc  */
+  YYSYMBOL_cmdargs = 123,                  /* cmdargs  */
+  YYSYMBOL_trailingcomma = 124,            /* trailingcomma  */
+  YYSYMBOL_frameargs = 125,                /* frameargs  */
+  YYSYMBOL_asgn = 126,                     /* asgn  */
+  YYSYMBOL_to = 127,                       /* to  */
+  YYSYMBOL_definevars = 128,               /* definevars  */
+  YYSYMBOL_ifstmt = 129,                   /* ifstmt  */
+  YYSYMBOL_ifelsestmt = 130,               /* ifelsestmt  */
+  YYSYMBOL_endif = 131,                    /* endif  */
+  YYSYMBOL_loop = 132,                     /* loop  */
+  YYSYMBOL_tell = 133,                     /* tell  */
+  YYSYMBOL_when = 134,                     /* when  */
+  YYSYMBOL_stmtlist = 135,                 /* stmtlist  */
+  YYSYMBOL_nonemptystmtlist = 136,         /* nonemptystmtlist  */
+  YYSYMBOL_stmtlistline = 137,             /* stmtlistline  */
+  YYSYMBOL_stmtlist_insideif = 138,        /* stmtlist_insideif  */
+  YYSYMBOL_nonemptystmtlist_insideif = 139, /* nonemptystmtlist_insideif  */
+  YYSYMBOL_stmtlistline_insideif = 140,    /* stmtlistline_insideif  */
+  YYSYMBOL_simpleexpr_nounarymath = 141,   /* simpleexpr_nounarymath  */
+  YYSYMBOL_var = 142,                      /* var  */
+  YYSYMBOL_varorchunk = 143,               /* varorchunk  */
+  YYSYMBOL_varorthe = 144,                 /* varorthe  */
+  YYSYMBOL_chunk = 145,                    /* chunk  */
+  YYSYMBOL_chunktype = 146,                /* chunktype  */
+  YYSYMBOL_object = 147,                   /* object  */
+  YYSYMBOL_refargs = 148,                  /* refargs  */
+  YYSYMBOL_the = 149,                      /* the  */
+  YYSYMBOL_theobj = 150,                   /* theobj  */
+  YYSYMBOL_menu = 151,                     /* menu  */
+  YYSYMBOL_thedatetime = 152,              /* thedatetime  */
+  YYSYMBOL_thenumberof = 153,              /* thenumberof  */
+  YYSYMBOL_inof = 154,                     /* inof  */
+  YYSYMBOL_writablethe = 155,              /* writablethe  */
+  YYSYMBOL_writabletheobj = 156,           /* writabletheobj  */
+  YYSYMBOL_list = 157,                     /* list  */
+  YYSYMBOL_proplist = 158,                 /* proplist  */
+  YYSYMBOL_proppair = 159,                 /* proppair  */
+  YYSYMBOL_unarymath = 160,                /* unarymath  */
+  YYSYMBOL_simpleexpr = 161,               /* simpleexpr  */
+  YYSYMBOL_expr = 162,                     /* expr  */
+  YYSYMBOL_expr_nounarymath = 163,         /* expr_nounarymath  */
+  YYSYMBOL_expr_noeq = 164,                /* expr_noeq  */
+  YYSYMBOL_sprite = 165,                   /* sprite  */
+  YYSYMBOL_exprlist = 166,                 /* exprlist  */
+  YYSYMBOL_nonemptyexprlist = 167          /* nonemptyexprlist  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -647,19 +648,19 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  191
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   4501
+#define YYLAST   4485
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  102
+#define YYNTOKENS  103
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  65
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  329
+#define YYNRULES  330
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  614
+#define YYNSTATES  615
 
 /* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   342
+#define YYMAXUTOK   343
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -674,15 +675,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      95,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      96,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    90,     2,
-      97,    98,    93,    91,    96,    92,     2,    94,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   101,     2,
-      88,     2,    89,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    91,     2,
+      98,    99,    94,    92,    97,    93,     2,    95,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   102,     2,
+      89,     2,    90,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    99,     2,   100,     2,     2,     2,     2,     2,     2,
+       2,   100,     2,   101,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -707,7 +708,7 @@ static const yytype_int8 yytranslate[] =
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87
+      85,    86,    87,    88
 };
 
 #if YYDEBUG
@@ -738,15 +739,16 @@ static const yytype_int16 yyrline[] =
      661,   662,   665,   666,   669,   674,   677,   682,   688,   689,
      690,   691,   692,   695,   696,   697,   698,   699,   702,   704,
      705,   706,   707,   708,   709,   710,   711,   712,   713,   717,
-     718,   719,   720,   721,   724,   724,   726,   727,   730,   731,
-     732,   733,   734,   737,   738,   739,   745,   749,   752,   757,
-     758,   759,   760,   761,   764,   765,   768,   769,   773,   774,
+     718,   719,   720,   721,   722,   725,   725,   727,   728,   731,
+     732,   733,   734,   735,   738,   739,   740,   746,   750,   753,
+     758,   759,   760,   761,   762,   765,   766,   769,   770,   774,
      775,   776,   777,   778,   779,   780,   781,   782,   783,   784,
-     785,   786,   787,   788,   789,   790,   791,   798,   799,   800,
+     785,   786,   787,   788,   789,   790,   791,   792,   799,   800,
      801,   802,   803,   804,   805,   806,   807,   808,   809,   810,
-     811,   812,   813,   814,   815,   816,   819,   820,   821,   822,
+     811,   812,   813,   814,   815,   816,   817,   820,   821,   822,
      823,   824,   825,   826,   827,   828,   829,   830,   831,   832,
-     833,   834,   835,   836,   839,   840,   843,   844,   847,   851
+     833,   834,   835,   836,   837,   840,   841,   844,   845,   848,
+     852
 };
 #endif
 
@@ -773,30 +775,30 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "tBEFORE", "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tCHARS", "tITEM",
   "tITEMS", "tLINE", "tLINES", "tWORD", "tWORDS", "tABBREVIATED",
   "tABBREV", "tABBR", "tLONG", "tSHORT", "tDATE", "tLAST", "tMENU",
-  "tMENUITEM", "tMENUITEMS", "tNUMBER", "tTHE", "tTIME", "tSOUND",
-  "tSPRITE", "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON",
-  "tMETHOD", "tENDIF", "tENDREPEAT", "tENDTELL", "tASSERTERROR", "'<'",
-  "'>'", "'&'", "'+'", "'-'", "'*'", "'/'", "'\\n'", "','", "'('", "')'",
-  "'['", "']'", "':'", "$accept", "script", "scriptpartlist", "scriptpart",
-  "macro", "factory", "method", "methodlist", "nonemptymethodlist",
-  "methodlistline", "handler", "endargdef", "CMDID", "ID", "idlist",
-  "nonemptyidlist", "stmt", "stmt_insideif", "stmtoneliner", "proc",
-  "cmdargs", "trailingcomma", "frameargs", "asgn", "to", "definevars",
-  "ifstmt", "ifelsestmt", "endif", "loop", "tell", "when", "stmtlist",
-  "nonemptystmtlist", "stmtlistline", "stmtlist_insideif",
-  "nonemptystmtlist_insideif", "stmtlistline_insideif",
-  "simpleexpr_nounarymath", "var", "varorchunk", "varorthe", "chunk",
-  "chunktype", "object", "refargs", "the", "theobj", "menu", "thedatetime",
-  "thenumberof", "inof", "writablethe", "writabletheobj", "list",
-  "proplist", "proppair", "unarymath", "simpleexpr", "expr",
-  "expr_nounarymath", "expr_noeq", "sprite", "exprlist",
-  "nonemptyexprlist", YY_NULLPTR
+  "tMENUS", "tMENUITEM", "tMENUITEMS", "tNUMBER", "tTHE", "tTIME",
+  "tSOUND", "tSPRITE", "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY",
+  "tON", "tMETHOD", "tENDIF", "tENDREPEAT", "tENDTELL", "tASSERTERROR",
+  "'<'", "'>'", "'&'", "'+'", "'-'", "'*'", "'/'", "'\\n'", "','", "'('",
+  "')'", "'['", "']'", "':'", "$accept", "script", "scriptpartlist",
+  "scriptpart", "macro", "factory", "method", "methodlist",
+  "nonemptymethodlist", "methodlistline", "handler", "endargdef", "CMDID",
+  "ID", "idlist", "nonemptyidlist", "stmt", "stmt_insideif",
+  "stmtoneliner", "proc", "cmdargs", "trailingcomma", "frameargs", "asgn",
+  "to", "definevars", "ifstmt", "ifelsestmt", "endif", "loop", "tell",
+  "when", "stmtlist", "nonemptystmtlist", "stmtlistline",
+  "stmtlist_insideif", "nonemptystmtlist_insideif",
+  "stmtlistline_insideif", "simpleexpr_nounarymath", "var", "varorchunk",
+  "varorthe", "chunk", "chunktype", "object", "refargs", "the", "theobj",
+  "menu", "thedatetime", "thenumberof", "inof", "writablethe",
+  "writabletheobj", "list", "proplist", "proppair", "unarymath",
+  "simpleexpr", "expr", "expr_nounarymath", "expr_noeq", "sprite",
+  "exprlist", "nonemptyexprlist", YY_NULLPTR
   };
   return yy_sname[yysymbol];
 }
 #endif
 
-#define YYPACT_NINF (-511)
+#define YYPACT_NINF (-527)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -810,68 +812,68 @@ yysymbol_name (yysymbol_kind_t yysymbol)
    STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    3008,  -511,  3490,  -511,  -511,  -511,  -511,    47,  -511,   -12,
-    -511,  3490,  1860,    47,  1956,  -511,  -511,  3490,  -511,    44,
-    -511,  -511,  2052,    91,  3569,  -511,    -8,  -511,  -511,  3490,
-    2052,  1860,  3490,  -511,  -511,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,  -511,  -511,  -511,  1956,  3490,  3490,    10,
-    3805,  -511,   116,  3008,  -511,  -511,  -511,  -511,  2052,  -511,
-    -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,    56,  -511,  -511,  2148,  2148,  1956,  1956,
-    1956,  1956,    61,    51,    59,  -511,  -511,    62,    70,  -511,
-    -511,  -511,  -511,  2148,  2148,  2148,  2148,  1956,  1956,  2244,
-    1956,  1956,  1956,  1956,  3648,  1956,  2244,  2244,  1380,   802,
-      71,    87,    90,  -511,  -511,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,   900,  -511,   104,  1956,  4025,  3490,   112,
-     121,   996,  3490,  1956,  3490,  -511,  -511,    -7,  -511,  -511,
-     125,   127,  1092,   128,   129,   130,  3996,   131,  3490,  -511,
-    -511,  -511,  -511,   134,  1188,  -511,  3490,  1476,  -511,  -511,
-    -511,   449,   519,   606,   696,   160,  -511,  -511,  -511,  3490,
-    -511,  -511,  1284,  4354,  -511,   -36,   -16,    35,    65,    81,
-     160,   202,   204,  4326,  -511,  -511,  -511,  4050,   132,   133,
-     135,   157,   159,   -66,   -11,  -511,  4354,   161,   139,  1572,
-    -511,  -511,   234,  1956,  1956,  1956,  1956,  2724,  2724,  2916,
-    1956,  2820,  2820,  1956,  1956,  1956,  1956,  1956,  1956,  1956,
-    1956,  -511,  -511,  4135,  -511,  -511,  4107,  3087,  1956,  1956,
-    1956,  1956,  1956,   174,  -511,  -511,  3727,  3727,  3727,     6,
-    4164,   242,  -511,  -511,  1956,     3,  -511,  1956,  -511,  -511,
-    -511,  3805,  3166,  -511,   180,  -511,  -511,  -511,  4078,  2244,
-    1956,  2244,  1956,  2244,  1956,  2244,  1956,  -511,  -511,  -511,
-    -511,   115,  -511,   250,  4379,  -511,  -511,  -511,  -511,  -511,
-    -511,  -511,  -511,  -511,  -511,  2340,  2436,  2244,  2244,  1668,
-    -511,  1956,  1956,  1956,  1956,  -511,  1956,  2532,  -511,  -511,
-    1956,  -511,   181,  1956,    32,    32,    32,    32,   120,   120,
-    -511,   -28,    32,    32,    32,    32,   -28,   -26,   -26,  -511,
-    -511,   181,  1956,  1956,  1956,  1956,  1956,  1956,  1956,  1956,
-    1956,  1956,  1956,  1956,  1956,  1956,  1956,  1956,  1956,  1956,
-    -511,  3403,   264,  3166,    61,  -511,   187,  -511,   188,   189,
-    1956,  1956,  3166,  2628,  4190,  3490,  3490,  -511,  -511,  -511,
-       3,  -511,  4218,  -511,  -511,  -511,   203,  3166,  -511,  3166,
-    1764,  -511,  3857,  -511,  3870,  -511,  3890,  -511,  3943,  -511,
-    -511,  2244,  1956,   115,   115,   115,   115,  2244,  2244,   115,
-    2244,  2244,  -511,  -511,  -511,  -511,  -511,  -511,  -511,   181,
-    4354,  4354,  4354,  4354,  4354,  -511,  4354,  4354,  1956,   190,
-    4354,  -511,    32,    32,    32,    32,   120,   120,  -511,   -28,
-      32,    32,    32,    32,   -28,   -26,   -26,  -511,  -511,   181,
-    -511,  -511,    -2,  3403,  -511,  3245,  -511,  -511,  -511,  -511,
-    4244,     2,   208,  1956,  1956,  1956,  1956,  -511,  -511,  -511,
-      75,  3490,  -511,  -511,   200,  -511,   288,  -511,   181,  2244,
-    2244,  2244,  2244,  -511,  4354,  2244,  2244,  2244,  2244,  -511,
-     271,   231,  -511,  -511,   206,  -511,  -511,  3324,   210,  -511,
-    -511,  3403,  -511,  3166,   269,  1956,   211,  -511,  4407,  -511,
-    3963,  4407,  4407,  -511,   212,  -511,  3490,   213,  -511,  -511,
-    -511,  -511,  -511,  -511,  -511,  -511,   238,  2244,  -511,  -511,
-    3403,  -511,  -511,   225,   227,  1956,  4272,  -511,  1956,  1956,
-    1956,  1956,  1956,  1956,  1956,  1956,  1956,  1956,  1956,  1956,
-    1956,  1956,  1956,  1956,   240,  3166,    80,  -511,  2244,   225,
-    -511,   218,  4298,  3166,    96,    96,    96,   396,   396,  -511,
-     101,    96,    96,    96,    96,   101,   -15,   -15,  -511,  -511,
-    1956,  -511,  -511,  -511,  -511,  -511,  3166,   229,  4407,   230,
-     221,   222,  -511,  -511
+    3032,  -527,  3520,  -527,  -527,  -527,  -527,    35,  -527,   -16,
+    -527,  3520,  1969,    35,  2066,  -527,  -527,  3520,  -527,    -1,
+    -527,  -527,  2163,    -5,  3600,  -527,   -53,  -527,  -527,  3520,
+    2163,  1969,  3520,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,  -527,  -527,  -527,  2066,  3520,  3520,   -38,
+    3839,  -527,    71,  3032,  -527,  -527,  -527,  -527,  2163,  -527,
+    -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,    33,  -527,  -527,  2260,  2260,  2066,  2066,
+    2066,  2066,    16,   -21,   -17,  -527,  -527,    -8,    19,  -527,
+    -527,  -527,  -527,  2260,  2260,  2260,  2260,  2066,  2066,  2357,
+    2066,  2066,  2066,  2066,  3680,  2066,  2357,  2357,  1387,   803,
+      11,    22,    26,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,   902,  -527,    37,  2066,   525,  3520,    44,
+      47,   999,  3520,  2066,  3520,  -527,  -527,    -7,  -527,  -527,
+      54,    56,  1096,    61,    70,    72,   344,    74,  3520,  -527,
+    -527,  -527,  -527,    83,  1193,  -527,  3520,  1484,  -527,  -527,
+    -527,   605,   627,   696,  3892,   121,  -527,  -527,  -527,  3520,
+    -527,  -527,  1290,  4297,  -527,   -24,   -19,   -12,    10,    25,
+     121,    63,   156,  4243,  -527,  -527,  -527,  3959,    93,    94,
+      97,    98,   100,   -43,    20,  -527,  4297,   101,   107,  1581,
+    -527,  -527,   180,  2066,  2066,  2066,  2066,  2745,  2745,  2939,
+    2066,  2842,  2842,  2066,  2066,  2066,  2066,  2066,  2066,  2066,
+    2066,  -527,  -527,  4063,  -527,  -527,  4050,  3112,  2066,  2066,
+    2066,  2066,  2066,   111,  -527,  -527,  3760,  3760,  3760,     6,
+    4076,   181,  -527,  -527,  2066,     3,  -527,  2066,  -527,  -527,
+    -527,  3839,  3192,  -527,   112,  -527,  -527,  -527,  3992,  2357,
+    2066,  2357,  2066,  2357,  2066,  2357,  2066,  -527,  -527,  -527,
+    -527,    75,  -527,   184,  4310,  -527,  -527,  -527,  -527,  -527,
+    -527,  -527,  -527,  -527,  -527,  1678,  2454,  2357,  2357,  1775,
+    -527,  2066,  2066,  2066,  2066,  -527,  2066,  2551,  -527,  -527,
+    2066,  -527,   115,  2066,    32,    32,    32,    32,  4377,  4377,
+    -527,   -26,    32,    32,    32,    32,   -26,   -32,   -32,  -527,
+    -527,   115,  2066,  2066,  2066,  2066,  2066,  2066,  2066,  2066,
+    2066,  2066,  2066,  2066,  2066,  2066,  2066,  2066,  2066,  2066,
+    -527,  3432,   197,  3192,    16,  -527,   118,  -527,   119,   120,
+    2066,  2066,  3192,  2648,  4131,  3520,  3520,  -527,  -527,  -527,
+       3,  -527,  4144,  -527,  -527,  -527,   130,  3192,  -527,  3192,
+    1872,  -527,   378,  -527,  3905,  -527,  3925,  -527,  3979,  -527,
+    -527,  2357,  2066,    75,    75,    75,    75,  2357,  -527,  2357,
+      75,  2357,  2357,  -527,  -527,  -527,  -527,  -527,  -527,  -527,
+     115,  4297,  4297,  4297,  4297,  4297,  -527,  4297,  4297,  2066,
+     122,  4297,  -527,    32,    32,    32,    32,  4377,  4377,  -527,
+     -26,    32,    32,    32,    32,   -26,   -32,   -32,  -527,  -527,
+     115,  -527,  -527,    -3,  3432,  -527,  3272,  -527,  -527,  -527,
+    -527,  4157,   510,   133,  2066,  2066,  2066,  2066,  -527,  -527,
+    -527,    59,  3520,  -527,  -527,   124,  -527,   213,  -527,   115,
+    2357,  2357,  2357,  2357,  -527,  4297,  2357,  2357,  2357,  2357,
+    -527,   195,   154,  -527,  -527,   127,  -527,  -527,  3352,   131,
+    -527,  -527,  3432,  -527,  3192,   198,  2066,   137,  -527,  4323,
+    -527,   709,  4323,  4323,  -527,   139,  -527,  3520,   159,  -527,
+    -527,  -527,  -527,  -527,  -527,  -527,  -527,   166,  2357,  -527,
+    -527,  3432,  -527,  -527,   174,   175,  2066,  4212,  -527,  2066,
+    2066,  2066,  2066,  2066,  2066,  2066,  2066,  2066,  2066,  2066,
+    2066,  2066,  2066,  2066,  2066,   190,  3192,    90,  -527,  2357,
+     174,  -527,   173,  4225,  3192,    53,    53,    53,  4390,  4390,
+    -527,    79,    53,    53,    53,    53,    79,    12,    12,  -527,
+    -527,  2066,  -527,  -527,  -527,  -527,  -527,  3192,   185,  4323,
+     189,   183,   186,  -527,  -527
 };
 
 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -893,66 +895,66 @@ static const yytype_int16 yydefact[] =
       90,    89,    65,     0,    79,    24,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   124,   101,     0,    99,   179,
      180,   182,   181,    33,    40,    64,    74,    41,    56,    58,
-      34,    46,    49,    77,    70,    68,     0,     0,     0,   326,
-     192,     0,     0,   266,   187,   188,   189,   190,   221,   222,
-     191,   267,   268,   136,   269,     0,     0,     0,    98,     0,
+      34,    46,    49,    77,    70,    68,     0,     0,     0,   327,
+     192,     0,     0,   267,   187,   188,   189,   190,   221,   222,
+     191,   268,   269,   136,   270,     0,     0,     0,    98,     0,
        0,   136,     0,     0,    70,   192,   195,     0,   196,   166,
        0,     0,   136,     0,     0,     0,     0,     0,    98,   104,
      127,     1,     4,     0,   136,    10,     0,     0,   198,   214,
      197,     0,     0,     0,     0,     0,   125,   123,   149,   100,
      212,   213,   138,   139,   183,    27,    28,    29,    51,    66,
-      48,    59,   218,     0,   264,   265,   133,     0,   179,   180,
-     182,   181,     0,   192,     0,   256,   328,     0,   327,     0,
+      48,    59,   218,     0,   265,   266,   133,     0,   179,   180,
+     182,   181,     0,   192,     0,   257,   329,     0,   328,     0,
      116,   117,    60,     0,     0,     0,     0,    31,    61,    55,
        0,    36,    69,     0,     0,     0,     0,     0,     0,     0,
-     137,   129,   287,   136,   288,   126,     0,     0,     0,     0,
+     137,   129,   288,   136,   289,   126,     0,     0,     0,     0,
        0,     0,     0,     0,   122,   115,    45,    30,    32,     0,
-       0,   246,   147,   148,     0,    14,   120,    75,   118,   119,
+       0,   247,   147,   148,     0,    14,   120,    75,   118,   119,
      151,     0,   167,   150,     0,   114,    25,   215,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   208,   210,   211,
      209,     0,   102,    60,   142,   229,   230,   231,   232,   233,
      234,   235,   236,   237,   238,     0,     0,     0,     0,     0,
-     186,     0,     0,     0,     0,   254,     0,     0,   255,   253,
-       0,   184,   136,     0,   279,   280,   277,   278,   281,   282,
-     274,   284,   285,   286,   276,   275,   283,   270,   271,   272,
-     273,   136,     0,     0,     0,     0,     0,     0,     0,     0,
+     186,     0,     0,     0,     0,   255,     0,     0,   256,   254,
+       0,   184,   136,     0,   280,   281,   278,   279,   282,   283,
+     275,   285,   286,   287,   277,   276,   284,   271,   272,   273,
+     274,   136,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   137,
      131,   173,   152,   167,    70,   193,     0,   194,     0,     0,
        0,     0,   167,     0,     0,    23,     0,    18,    19,    12,
       15,    16,     0,   164,   171,   172,     0,   168,   169,   167,
-       0,   199,     0,   203,     0,   205,     0,   201,     0,   244,
-     245,     0,     0,    35,    47,    50,    78,    52,    53,    54,
-      67,    68,   220,   224,   223,   219,   324,   325,   134,   136,
-     262,   263,   261,   259,   260,   257,   258,   329,   137,     0,
-     141,   130,   298,   299,   296,   297,   300,   301,   293,   303,
-     304,   305,   295,   294,   302,   289,   290,   291,   292,   136,
-     177,   178,   158,   174,   175,     0,    11,   143,   144,   145,
-       0,     0,     0,    52,    53,    67,    68,   247,   248,   146,
-       0,    98,    17,   121,     0,   170,    22,   216,   136,     0,
-       0,     0,     0,   207,   140,     0,     0,     0,     0,   228,
-       0,     0,   226,   227,     0,   185,   132,     0,     0,   153,
-     176,   173,   154,   167,     0,     0,     0,   306,   249,   307,
-       0,   251,   252,    20,     0,   165,    23,     0,   200,   204,
-     206,   202,   239,   241,   242,   240,     0,     0,   243,   135,
-     173,   156,   159,   158,     0,     0,     0,   160,     0,     0,
+       0,   199,     0,   203,     0,   205,     0,   201,     0,   245,
+     246,     0,     0,    35,    47,    50,    78,    52,   244,    53,
+      54,    67,    68,   220,   224,   223,   219,   325,   326,   134,
+     136,   263,   264,   262,   260,   261,   258,   259,   330,   137,
+       0,   141,   130,   299,   300,   297,   298,   301,   302,   294,
+     304,   305,   306,   296,   295,   303,   290,   291,   292,   293,
+     136,   177,   178,   158,   174,   175,     0,    11,   143,   144,
+     145,     0,     0,     0,    52,    53,    67,    68,   248,   249,
+     146,     0,    98,    17,   121,     0,   170,    22,   216,   136,
+       0,     0,     0,     0,   207,   140,     0,     0,     0,     0,
+     228,     0,     0,   226,   227,     0,   185,   132,     0,     0,
+     153,   176,   173,   154,   167,     0,     0,     0,   307,   250,
+     308,     0,   252,   253,    20,     0,   165,    23,     0,   200,
+     204,   206,   202,   239,   241,   242,   240,     0,     0,   243,
+     135,   173,   156,   159,   158,     0,     0,     0,   160,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   167,     0,   217,     0,   158,
-     155,     0,     0,   167,   316,   317,   315,   318,   319,   312,
-     321,   322,   323,   314,   313,   320,   308,   309,   310,   311,
-       0,    13,    21,   225,   157,   163,   167,     0,   250,     0,
-       0,     0,   161,   162
+       0,     0,     0,     0,     0,     0,   167,     0,   217,     0,
+     158,   155,     0,     0,   167,   317,   318,   316,   319,   320,
+     313,   322,   323,   324,   315,   314,   321,   309,   310,   311,
+     312,     0,    13,    21,   225,   157,   163,   167,     0,   251,
+       0,     0,     0,   161,   162
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -511,  -511,  -511,   245,  -511,  -511,  -511,  -511,  -511,   -81,
-    -511,  -377,     0,     9,   -27,  -511,     1,  -366,   -60,  -511,
-      31,  -241,   292,  -511,  -511,  -511,  -511,  -511,  -510,  -511,
-    -511,  -511,  -379,  -511,   -78,  -479,  -511,  -149,   -83,   -22,
-     -98,  -511,    -4,  -511,  -511,   -17,  -511,     7,  -179,  -511,
-    -511,  -223,  -511,  -511,  -511,  -511,    -1,  -511,   205,    -6,
-     123,  -137,   108,  -511,  -232
+    -527,  -527,  -527,   203,  -527,  -527,  -527,  -527,  -527,  -130,
+    -527,  -388,     0,     9,   -27,  -527,     1,  -363,   -66,  -527,
+      17,  -242,   246,  -527,  -527,  -527,  -527,  -527,  -526,  -527,
+    -527,  -527,  -373,  -527,  -127,  -500,  -527,  -191,  -129,   -22,
+     -88,  -527,    -4,  -527,  -527,    58,  -527,   -42,  -224,  -527,
+    -527,  -261,  -527,  -527,  -527,  -527,   -48,  -527,   205,    -6,
+      78,  -256,   -74,  -527,  -225
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -960,11 +962,11 @@ static const yytype_int16 yydefgoto[] =
 {
        0,    72,    73,    74,    75,    76,   398,   399,   400,   401,
       77,   113,   114,   150,   127,   128,   405,    80,    81,    82,
-     151,   261,   152,    83,   284,    84,    85,    86,   519,    87,
-      88,    89,   406,   407,   408,   472,   473,   474,   153,   154,
-     386,   177,   155,   311,   156,   198,   157,   432,   433,   158,
-     159,   421,   178,   487,   160,   234,   235,   161,   162,   236,
-     263,   528,   164,   237,   238
+     151,   261,   152,    83,   284,    84,    85,    86,   520,    87,
+      88,    89,   406,   407,   408,   473,   474,   475,   153,   154,
+     386,   177,   155,   311,   156,   198,   157,   433,   434,   158,
+     159,   421,   178,   488,   160,   234,   235,   161,   162,   236,
+     263,   529,   164,   237,   238
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -972,267 +974,269 @@ static const yytype_int16 yydefgoto[] =
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      78,    79,   176,   123,   476,   185,   163,   342,   167,   165,
-     190,   115,   395,   482,   517,   471,   171,   524,   490,   124,
-     126,   270,   380,   270,   182,   163,   168,   282,   361,   390,
-     496,   239,   315,   175,   563,   336,   525,   283,   180,   316,
-     187,   126,   553,   580,   243,   244,   245,   246,   268,   269,
-     391,   270,   317,   170,   250,   271,   272,   116,   117,   318,
-     186,   181,   183,   256,   257,   258,   259,   258,   259,   604,
-      78,   579,   194,    78,    79,   169,   126,   188,   572,   573,
-     262,   270,   518,   125,   250,   337,   396,   179,   262,   338,
-     253,   254,   255,   256,   257,   258,   259,   439,   397,   262,
-     200,   449,   118,   319,   119,   189,   120,   471,   121,   193,
-     320,   262,   201,   202,   203,   204,   191,   200,   210,   211,
-     451,   122,   255,   256,   257,   258,   259,   172,   173,   262,
-     205,   212,   213,   321,   201,   202,   203,   204,   419,   223,
-     322,   273,   227,   420,   554,   563,   206,   469,   564,   323,
-     563,   195,   196,   222,   207,   471,   324,   208,   233,   576,
-     266,   294,   243,   244,   245,   246,   209,   280,   239,   270,
-     533,   196,   250,   271,   272,   602,   196,   126,   498,   388,
-     389,   279,   240,   281,   471,   241,   569,   570,   571,   572,
-     573,   298,   570,   571,   572,   573,   601,   126,   514,   265,
-     505,   506,   507,   508,   607,   296,   511,   274,   253,   254,
-     255,   256,   257,   258,   259,   307,   275,   308,   312,   309,
-     285,   310,   286,   288,   289,   290,   293,   609,   516,   295,
-     325,   403,   326,   331,   332,   340,   333,   344,   345,   346,
+      78,    79,   176,   123,   190,   185,   163,   491,   167,   165,
+     477,   115,   395,   518,   342,   124,   171,   270,   472,   483,
+     126,   380,   554,   270,   182,   163,   168,   282,   581,   390,
+     169,   172,   173,   175,   262,   361,   497,   283,   180,   170,
+     187,   126,   262,   179,   315,   116,   117,   181,   183,   317,
+     391,   580,   316,   262,   605,   239,   319,   318,   189,   336,
+     186,   564,   258,   259,   320,   262,   256,   257,   258,   259,
+      78,   191,   194,    78,    79,   206,   126,   188,   321,   207,
+     125,   270,   519,   262,   250,   205,   322,   396,   208,   264,
+     118,   325,   119,   323,   120,   193,   121,   264,   419,   397,
+     450,   324,   564,   420,   440,   565,   573,   574,   264,   239,
+     122,   472,   201,   202,   203,   204,   209,   337,   240,   452,
+     264,   338,   241,   255,   256,   257,   258,   259,   564,   195,
+     196,   212,   213,   265,   201,   202,   203,   204,   264,   223,
+     274,   273,   227,   275,   570,   571,   572,   573,   574,   577,
+     285,   555,   286,   222,   470,   534,   196,   288,   233,   472,
+     266,   294,   506,   507,   508,   509,   289,   280,   290,   512,
+     293,   571,   572,   573,   574,   200,   307,   126,   308,   295,
+     309,   279,   310,   281,   326,   499,   603,   196,   472,   388,
+     389,   298,   200,   210,   211,   331,   332,   126,   515,   333,
+     334,   335,   339,   602,   340,   296,   343,   383,   409,   393,
+     422,   608,   449,   476,   478,   479,   480,   495,   312,   527,
+     536,   516,   537,   547,   548,   403,   550,   553,   517,   531,
+     532,   533,   556,   558,   610,   576,   579,   344,   345,   346,
      347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
-     357,   358,   359,   360,   385,   385,   385,   537,   334,   335,
-     343,   339,   348,   349,   350,   352,   353,    78,   382,   383,
-     393,   264,   387,   387,   387,   409,   422,   448,   394,   264,
-     475,   402,   477,   478,   479,   175,   175,   175,   515,   494,
-     264,    78,    78,   526,   412,   535,   414,   536,   416,   546,
-     418,   547,   264,   555,   549,   552,   557,   575,   578,   518,
-     600,   577,   581,   605,   610,   611,   612,   613,   192,   492,
-     264,   199,   199,   184,   520,   440,   441,   442,   443,   495,
-     444,   446,   548,   435,   447,   314,   445,   450,   199,   199,
-     199,   199,     0,     0,   214,     0,   233,   530,   531,   532,
-       0,   224,   225,     0,     0,     0,   452,   453,   454,   455,
-     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
-     466,   467,   468,     0,     0,     0,     0,     0,     0,     0,
-       0,    78,     0,    78,   480,   481,     0,     0,     0,     0,
-       0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   115,   491,     0,    78,     0,    78,
-       0,     0,     0,     0,     0,     0,   504,     0,     0,     0,
-       0,   584,   585,   586,   587,   588,   589,   590,   591,   592,
-     593,   594,   595,   596,   597,   598,   599,     0,   558,   559,
-       0,   560,   447,     0,     0,   563,     0,     0,   564,   565,
-     566,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   608,   534,     0,     0,     0,     0,     0,
-       0,     0,     0,    78,     0,    78,   522,   299,     0,     0,
-       0,     0,     0,   300,   567,   568,   569,   570,   571,   572,
-     573,   243,   244,   245,   246,   268,   269,     0,   270,     0,
-     126,   250,   271,   272,   411,     0,   413,     0,   415,     0,
-     417,     0,     0,     0,     0,     0,     0,    78,   551,   556,
-       0,    78,     0,    78,     0,     0,     0,     0,     0,     0,
-     434,   434,   436,   437,     0,     0,     0,   253,   254,   255,
-     256,   257,   258,   259,     0,   115,     0,   301,     0,   582,
-      78,     0,     0,   302,     0,     0,     0,     0,     0,     0,
-       0,   243,   244,   245,   246,   268,   269,     0,   270,     0,
-       0,   250,   271,   272,     0,    78,     0,     0,     0,     0,
-       0,     0,     0,    78,     0,     0,     0,     0,     0,     0,
-       0,   529,   529,   529,   529,     0,     0,     0,   488,     0,
-       0,     0,     0,     0,     0,     0,    78,   253,   254,   255,
-     256,   257,   258,   259,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   503,     0,     0,     0,
-       0,     0,   509,   510,   303,   512,   513,     0,     0,     0,
-     304,     0,     0,     0,     0,     0,     0,     0,   243,   244,
-     245,   246,   268,   269,     0,   270,     0,     0,   250,   271,
-     272,     0,     0,     0,     0,     0,   529,   529,   529,   529,
-     529,   529,   529,   529,   529,   529,   529,   529,   529,   529,
-     529,   529,     0,     0,     0,     0,     0,     0,   527,   527,
-     527,   527,     0,     0,   253,   254,   255,   256,   257,   258,
-     259,     0,     0,     0,   538,   539,   540,   541,   529,     0,
-     542,   543,   544,   545,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   305,     0,     0,     0,     0,     0,
-     306,     0,     0,     0,     0,     0,     0,     0,   243,   244,
+     357,   358,   359,   360,   385,   385,   385,   538,   578,   519,
+     601,   582,   348,   349,   350,   352,   353,    78,   382,   606,
+     493,   611,   387,   387,   387,   612,   192,   184,   394,   613,
+     496,   402,   614,   521,   436,   175,   175,   175,   549,   446,
+     314,    78,    78,     0,   412,     0,   414,     0,   416,     0,
+     418,     0,     0,   585,   586,   587,   588,   589,   590,   591,
+     592,   593,   594,   595,   596,   597,   598,   599,   600,     0,
+       0,   199,   199,     0,     0,   441,   442,   443,   444,     0,
+     445,   447,     0,     0,   448,     0,     0,   451,   199,   199,
+     199,   199,     0,     0,   214,   609,   233,     0,     0,     0,
+       0,   224,   225,     0,     0,     0,   453,   454,   455,   456,
+     457,   458,   459,   460,   461,   462,   463,   464,   465,   466,
+     467,   468,   469,     0,     0,     0,     0,     0,   291,     0,
+       0,    78,     0,    78,   481,   482,   243,   244,   245,   246,
+     268,   269,    78,   270,     0,     0,   250,   271,   272,     0,
+       0,     0,     0,     0,   115,   492,   500,    78,     0,    78,
+     530,   530,   530,   530,     0,     0,   505,     0,     0,     0,
+     243,   244,   245,   246,   268,   269,     0,   270,     0,     0,
+     250,   271,   272,   253,   254,   255,   256,   257,   258,   259,
+     292,     0,     0,   448,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   535,     0,   253,   254,   255,
+     256,   257,   258,   259,    78,     0,    78,   523,     0,     0,
+       0,     0,     0,     0,     0,   530,   530,   530,   530,   530,
+     530,   530,   530,   530,   530,   530,   530,   530,   530,   530,
+     530,   126,     0,     0,   411,     0,   413,     0,   415,     0,
+     417,     0,     0,     0,     0,     0,     0,     0,    78,   552,
+     557,     0,    78,     0,    78,   525,     0,   530,     0,     0,
+     435,   435,   437,   438,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   526,     0,   115,     0,     0,     0,
+     583,    78,   243,   244,   245,   246,   268,   269,   267,   270,
+       0,     0,   250,   271,   272,     0,     0,   243,   244,   245,
+     246,   268,   269,     0,   270,     0,    78,   250,   271,   272,
+       0,     0,     0,     0,    78,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   489,   253,
+     254,   255,   256,   257,   258,   259,     0,    78,     0,     0,
+       0,     0,     0,     0,   253,   254,   255,   256,   257,   258,
+     259,     0,     0,     0,     0,     0,   504,     0,     0,     0,
+       0,     0,   510,   299,   511,     0,   513,   514,     0,   300,
+       0,     0,     0,     0,     0,     0,     0,   243,   244,   245,
+     246,   268,   269,     0,   270,   301,     0,   250,   271,   272,
+       0,   302,     0,     0,     0,     0,     0,     0,     0,   243,
+     244,   245,   246,   268,   269,     0,   270,     0,     0,   250,
+     271,   272,     0,     0,     0,     0,     0,     0,     0,   528,
+     528,   528,   528,     0,   253,   254,   255,   256,   257,   258,
+     259,     0,     0,     0,     0,   539,   540,   541,   542,     0,
+       0,   543,   544,   545,   546,     0,   253,   254,   255,   256,
+     257,   258,   259,     0,   303,     0,     0,     0,     0,     0,
+     304,     0,     0,     0,     0,     0,     0,   575,   243,   244,
      245,   246,   268,   269,     0,   270,     0,     0,   250,   271,
-     272,     0,   509,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   527,   527,   527,   527,   527,   527,   527,
-     527,   527,   527,   527,   527,   527,   527,   527,   527,     0,
-       0,     0,     0,   603,   253,   254,   255,   256,   257,   258,
-     259,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   527,   228,   229,     1,   230,
-     231,    90,   133,   134,   135,   136,    91,     8,    92,    93,
+     272,   559,   560,   510,   561,   562,   563,     0,   564,     0,
+       0,   565,   566,   567,   528,   528,   528,   528,   528,   528,
+     528,   528,   528,   528,   528,   528,   528,   528,   528,   528,
+       0,     0,     0,     0,   604,   253,   254,   255,   256,   257,
+     258,   259,     0,     0,     0,     0,     0,     0,   568,   569,
+     570,   571,   572,   573,   574,     0,   528,   228,   229,     1,
+     230,   231,    90,   133,   134,   135,   136,    91,     8,    92,
+      93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
+      99,    20,    21,   100,   101,   102,   103,    25,     0,    27,
+      28,   104,   105,   106,   107,     0,     0,     0,     0,    33,
+      34,   139,    36,    37,    38,     0,    39,    40,   140,    42,
+     141,    44,   142,    46,   143,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,     0,    57,    58,    59,   144,    61,
+      62,   145,    64,    65,   108,   109,   110,   111,     0,     0,
+       0,   112,     0,     0,     0,   146,   147,     0,     0,     0,
+       0,   166,     0,   149,     0,   232,   129,   130,     1,   131,
+     132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
       10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
-      20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
-     104,   105,   106,   107,     0,     0,     0,     0,    33,    34,
-     139,    36,    37,    38,     0,    39,    40,   140,    42,   141,
+     242,    21,   100,   101,   102,   103,    25,     0,    27,    28,
+     104,   105,   106,   107,   243,   244,   245,   246,   247,   248,
+     139,   249,    37,    38,   250,   251,   252,   140,    42,   141,
       44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,   144,    61,    62,   145,
-      64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
-       0,     0,     0,   146,   147,     0,     0,     0,     0,   166,
-       0,   149,     0,   232,   129,   130,     1,   131,   132,    90,
-     133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
-      95,    96,    97,    15,    16,    98,    18,    99,   242,    21,
-     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
-     106,   107,   243,   244,   245,   246,   247,   248,   139,   249,
-      37,    38,   250,   251,   252,   140,    42,   141,    44,   142,
-      46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,   144,    61,    62,   145,    64,    65,
+      54,    55,    56,     0,    57,    58,    59,   144,    61,    62,
+     145,    64,    65,   108,   109,   110,   111,     0,     0,     0,
+     112,   253,   254,   255,   256,   257,   258,   259,     0,   260,
+     166,     0,   149,   129,   130,     1,   131,   132,    90,   133,
+     134,   135,   136,    91,     8,    92,    93,    10,    94,    95,
+      96,    97,    15,   276,    98,    18,    99,    20,    21,   100,
+     101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
+     107,   243,   244,   245,   246,   247,   248,   139,   249,   277,
+     278,   250,   251,   252,   140,    42,   141,    44,   142,    46,
+     143,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+       0,    57,    58,    59,   144,    61,    62,   145,    64,    65,
      108,   109,   110,   111,     0,     0,     0,   112,   253,   254,
      255,   256,   257,   258,   259,     0,   260,   166,     0,   149,
      129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
       91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
-     276,    98,    18,    99,    20,    21,   100,   101,   102,   103,
-      25,     0,    27,    28,   104,   105,   106,   107,   243,   244,
-     245,   246,   247,   248,   139,   249,   277,   278,   250,   251,
+      16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
+      25,     0,   287,    28,   104,   105,   106,   107,   243,   244,
+     245,   246,   247,   248,   139,   249,    37,    38,   250,   251,
      252,   140,    42,   141,    44,   142,    46,   143,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-     144,    61,    62,   145,    64,    65,   108,   109,   110,   111,
-       0,     0,     0,   112,   253,   254,   255,   256,   257,   258,
-     259,     0,   260,   166,     0,   149,   129,   130,     1,   131,
-     132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
-      10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
-      20,    21,   100,   101,   102,   103,    25,     0,   287,    28,
-     104,   105,   106,   107,   243,   244,   245,   246,   247,   248,
-     139,   249,    37,    38,   250,   251,   252,   140,    42,   141,
-      44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,   144,    61,    62,   145,
-      64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
-     253,   254,   255,   256,   257,   258,   259,     0,   260,   166,
-       0,   149,   129,   130,     1,   131,   132,    90,   133,   134,
-     135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
-      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
-     102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
-     243,   244,   245,   246,   247,   248,   139,   249,    37,    38,
-     250,   251,   252,   140,    42,   141,    44,   142,    46,   143,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,   144,    61,    62,   145,    64,    65,   108,   109,
-     110,   111,     0,     0,     0,   112,   253,   254,   255,   256,
-     257,   258,   259,     0,   260,   166,     0,   149,   129,   130,
-       1,   131,   132,    90,   133,   134,   135,   136,    91,     8,
-      92,    93,    10,    94,    95,    96,    97,    15,    16,    98,
-      18,    99,   313,    21,   100,   101,   102,   103,    25,     0,
-      27,    28,   104,   105,   106,   107,   243,   244,   245,   246,
-     247,   248,   139,   249,    37,    38,   250,   251,   252,   140,
-      42,   141,    44,   142,    46,   143,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,   144,    61,
+      50,    51,    52,    53,    54,    55,    56,     0,    57,    58,
+      59,   144,    61,    62,   145,    64,    65,   108,   109,   110,
+     111,     0,     0,     0,   112,   253,   254,   255,   256,   257,
+     258,   259,     0,   260,   166,     0,   149,   129,   130,     1,
+     131,   132,    90,   133,   134,   135,   136,    91,     8,    92,
+      93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
+      99,    20,    21,   100,   101,   102,   103,    25,     0,    27,
+      28,   104,   105,   106,   107,   243,   244,   245,   246,   247,
+     248,   139,   249,    37,    38,   250,   251,   252,   140,    42,
+     141,    44,   142,    46,   143,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,     0,    57,    58,    59,   144,    61,
       62,   145,    64,    65,   108,   109,   110,   111,     0,     0,
        0,   112,   253,   254,   255,   256,   257,   258,   259,     0,
-       0,   166,     0,   149,   129,   130,     1,   131,   132,    90,
+     260,   166,     0,   149,   129,   130,     1,   131,   132,    90,
      133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
-      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
+      95,    96,    97,    15,    16,    98,    18,    99,   313,    21,
      100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
-     106,   107,     0,     0,     0,     0,    33,    34,   139,    36,
-      37,    38,     0,    39,    40,   140,    42,   141,    44,   142,
+     106,   107,   243,   244,   245,   246,   247,   248,   139,   249,
+      37,    38,   250,   251,   252,   140,    42,   141,    44,   142,
       46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,   144,    61,    62,   145,    64,    65,
-     108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
-       0,   146,   147,     0,     0,     0,     0,   166,   226,   149,
-     129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
-      91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
-      16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
-      25,     0,    27,    28,   104,   105,   106,   107,     0,     0,
-       0,     0,    33,    34,   139,    36,    37,    38,     0,    39,
-      40,   140,    42,   141,    44,   142,    46,   143,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-     144,    61,    62,   145,    64,    65,   108,   109,   110,   111,
-       0,     0,     0,   112,     0,     0,     0,   146,   147,     0,
-       0,     0,     0,   166,   297,   149,   129,   130,     1,   131,
-     132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
-      10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
-      20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
-     104,   105,   106,   107,     0,     0,     0,     0,    33,    34,
-     139,    36,    37,    38,     0,    39,    40,   140,    42,   141,
-      44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,   144,    61,    62,   145,
-      64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
-       0,     0,     0,   146,   147,     0,     0,     0,     0,   166,
-     341,   149,   129,   130,     1,   131,   132,    90,   133,   134,
-     135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
-      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
-     102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
-       0,     0,     0,     0,    33,    34,   139,    36,    37,    38,
-       0,    39,    40,   140,    42,   141,    44,   142,    46,   143,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      56,     0,    57,    58,    59,   144,    61,    62,   145,    64,
+      65,   108,   109,   110,   111,     0,     0,     0,   112,   253,
+     254,   255,   256,   257,   258,   259,     0,     0,   166,     0,
+     149,   129,   130,     1,   131,   132,    90,   133,   134,   135,
+     136,    91,     8,    92,    93,    10,    94,    95,    96,    97,
+      15,    16,    98,    18,    99,    20,    21,   100,   101,   102,
+     103,    25,     0,    27,    28,   104,   105,   106,   107,     0,
+       0,     0,     0,    33,    34,   139,    36,    37,    38,     0,
+      39,    40,   140,    42,   141,    44,   142,    46,   143,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,     0,    57,
       58,    59,   144,    61,    62,   145,    64,    65,   108,   109,
      110,   111,     0,     0,     0,   112,     0,     0,     0,   146,
-     147,     0,     0,     0,     0,   166,   438,   149,   129,   130,
+     147,     0,     0,     0,     0,   166,   226,   149,   129,   130,
        1,   131,   132,    90,   133,   134,   135,   136,    91,     8,
       92,    93,    10,    94,    95,    96,    97,    15,    16,    98,
       18,    99,    20,    21,   100,   101,   102,   103,    25,     0,
       27,    28,   104,   105,   106,   107,     0,     0,     0,     0,
       33,    34,   139,    36,    37,    38,     0,    39,    40,   140,
       42,   141,    44,   142,    46,   143,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,   144,    61,
-      62,   145,    64,    65,   108,   109,   110,   111,     0,     0,
-       0,   112,     0,     0,     0,   146,   147,     0,     0,     0,
-       0,   166,   497,   149,   129,   130,     1,   131,   132,    90,
-     133,   134,   135,   136,    91,     8,    92,    93,   137,    94,
-      95,    96,    97,    15,    16,    98,   138,    99,    20,    21,
-     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
-     106,   107,     0,     0,     0,     0,    33,    34,   139,    36,
-      37,    38,     0,    39,    40,   140,    42,   141,    44,   142,
-      46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,   144,    61,    62,   145,    64,    65,
-     108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
-       0,   146,   147,     0,     0,     0,     0,   148,     0,   149,
-     129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
-      91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
-      16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
-      25,     0,    27,    28,   104,   105,   106,   107,     0,     0,
-       0,     0,    33,    34,   139,    36,    37,    38,     0,    39,
-      40,   140,    42,   141,    44,   142,    46,   143,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      52,    53,    54,    55,    56,     0,    57,    58,    59,   144,
+      61,    62,   145,    64,    65,   108,   109,   110,   111,     0,
+       0,     0,   112,     0,     0,     0,   146,   147,     0,     0,
+       0,     0,   166,   297,   149,   129,   130,     1,   131,   132,
+      90,   133,   134,   135,   136,    91,     8,    92,    93,    10,
+      94,    95,    96,    97,    15,    16,    98,    18,    99,    20,
+      21,   100,   101,   102,   103,    25,     0,    27,    28,   104,
+     105,   106,   107,     0,     0,     0,     0,    33,    34,   139,
+      36,    37,    38,     0,    39,    40,   140,    42,   141,    44,
+     142,    46,   143,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,     0,    57,    58,    59,   144,    61,    62,   145,
+      64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
+       0,     0,     0,   146,   147,     0,     0,     0,     0,   166,
+     341,   149,   129,   130,     1,   131,   132,    90,   133,   134,
+     135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
+      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
+     102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
+       0,     0,     0,     0,    33,    34,   139,    36,    37,    38,
+       0,    39,    40,   140,   423,   141,   424,   142,   425,   143,
+     426,    49,    50,    51,    52,    53,    54,    55,   427,   428,
+     429,   430,    59,   144,    61,   431,   432,    64,    65,   108,
+     109,   110,   111,     0,     0,     0,   112,     0,     0,     0,
+     146,   147,     0,     0,     0,     0,   166,     0,   149,   129,
+     130,     1,   131,   132,    90,   133,   134,   135,   136,    91,
+       8,    92,    93,    10,    94,    95,    96,    97,    15,    16,
+      98,    18,    99,    20,    21,   100,   101,   102,   103,    25,
+       0,    27,    28,   104,   105,   106,   107,     0,     0,     0,
+       0,    33,    34,   139,    36,    37,    38,     0,    39,    40,
+     140,    42,   141,    44,   142,    46,   143,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,     0,    57,    58,    59,
      144,    61,    62,   145,    64,    65,   108,   109,   110,   111,
        0,     0,     0,   112,     0,     0,     0,   146,   147,     0,
-       0,     0,     0,   166,     0,   149,   129,   130,     1,   131,
+       0,     0,     0,   166,   439,   149,   129,   130,     1,   131,
      132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
       10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
       20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
      104,   105,   106,   107,     0,     0,     0,     0,    33,    34,
      139,    36,    37,    38,     0,    39,    40,   140,    42,   141,
       44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,   144,    61,    62,   145,
-      64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
-       0,     0,     0,   146,   147,     0,     0,     0,     0,   148,
-       0,   149,   129,   130,     1,   131,   132,    90,   133,   134,
-     135,   136,    91,     8,    92,    93,    10,    94,    95,    96,
-      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
-     102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
-       0,     0,     0,     0,    33,    34,   139,    36,    37,    38,
-       0,    39,    40,   140,    42,   141,    44,   142,    46,   143,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      54,    55,    56,     0,    57,    58,    59,   144,    61,    62,
+     145,    64,    65,   108,   109,   110,   111,     0,     0,     0,
+     112,     0,     0,     0,   146,   147,     0,     0,     0,     0,
+     166,   498,   149,   129,   130,     1,   131,   132,    90,   133,
+     134,   135,   136,    91,     8,    92,    93,   137,    94,    95,
+      96,    97,    15,    16,    98,   138,    99,    20,    21,   100,
+     101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
+     107,     0,     0,     0,     0,    33,    34,   139,    36,    37,
+      38,     0,    39,    40,   140,    42,   141,    44,   142,    46,
+     143,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+       0,    57,    58,    59,   144,    61,    62,   145,    64,    65,
+     108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
+       0,   146,   147,     0,     0,     0,     0,   148,     0,   149,
+     129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
+      91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
+      16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
+      25,     0,    27,    28,   104,   105,   106,   107,     0,     0,
+       0,     0,    33,    34,   139,    36,    37,    38,     0,    39,
+      40,   140,    42,   141,    44,   142,    46,   143,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,     0,    57,    58,
+      59,   144,    61,    62,   145,    64,    65,   108,   109,   110,
+     111,     0,     0,     0,   112,     0,     0,     0,   146,   147,
+       0,     0,     0,     0,   166,     0,   149,   129,   130,     1,
+     131,   132,    90,   133,   134,   135,   136,    91,     8,    92,
+      93,    10,    94,    95,    96,    97,    15,    16,    98,    18,
+      99,    20,    21,   100,   101,   102,   103,    25,     0,    27,
+      28,   104,   105,   106,   107,     0,     0,     0,     0,    33,
+      34,   139,    36,    37,    38,     0,    39,    40,   140,    42,
+     141,    44,   142,    46,   143,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,     0,    57,    58,    59,   144,    61,
+      62,   145,    64,    65,   108,   109,   110,   111,     0,     0,
+       0,   112,     0,     0,     0,   146,   147,     0,     0,     0,
+       0,   148,     0,   149,   129,   130,     1,   131,   132,    90,
+     133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
+      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
+     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
+     106,   107,     0,     0,     0,     0,    33,    34,   139,    36,
+      37,    38,     0,    39,    40,   140,    42,   141,    44,   142,
+      46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,     0,    57,    58,    59,   144,    61,    62,    63,    64,
+      65,   108,   109,   110,   111,     0,     0,     0,   112,     0,
+       0,     0,   146,   147,     0,     0,     0,     0,   197,     0,
+     149,   129,   130,     1,   131,   132,    90,   133,   134,   135,
+     136,    91,     8,    92,    93,    10,    94,    95,    96,    97,
+      15,    16,    98,    18,    99,    20,    21,   100,   101,   102,
+     103,    25,     0,    27,    28,   104,   105,   106,   107,     0,
+       0,     0,     0,    33,    34,   139,    36,    37,    38,     0,
+      39,    40,   140,    42,   141,    44,   142,    46,   143,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,     0,    57,
       58,    59,   144,    61,    62,    63,    64,    65,   108,   109,
      110,   111,     0,     0,     0,   112,     0,     0,     0,   146,
-     147,     0,     0,     0,     0,   197,     0,   149,   129,   130,
+     147,     0,     0,     0,     0,   166,     0,   149,   129,   130,
        1,   131,   132,    90,   133,   134,   135,   136,    91,     8,
       92,    93,    10,    94,    95,    96,    97,    15,    16,    98,
       18,    99,    20,    21,   100,   101,   102,   103,    25,     0,
       27,    28,   104,   105,   106,   107,     0,     0,     0,     0,
       33,    34,   139,    36,    37,    38,     0,    39,    40,   140,
       42,   141,    44,   142,    46,   143,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,   144,    61,
-      62,    63,    64,    65,   108,   109,   110,   111,     0,     0,
-       0,   112,     0,     0,     0,   146,   147,     0,     0,     0,
-       0,   166,     0,   149,   129,   130,     1,   131,   132,    90,
-     133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
-      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
-     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
-     106,   107,     0,     0,     0,     0,    33,    34,   139,    36,
-      37,    38,     0,    39,    40,   140,   423,   141,   424,   142,
-     425,   143,   426,    49,    50,    51,    52,    53,    54,    55,
-     427,   428,   429,    59,   144,    61,   430,   431,    64,    65,
-     108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
-       0,   146,   147,     0,     0,     0,     0,   166,     0,   149,
-     129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
-      91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
-      16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
-      25,     0,    27,    28,   104,   105,   106,   107,     0,     0,
-       0,     0,    33,    34,   139,    36,    37,    38,     0,    39,
-      40,   140,    42,   141,    44,   142,    46,   143,    48,    49,
-      50,    51,    52,    53,    54,    55,   427,   428,    58,    59,
-     144,    61,   430,   431,    64,    65,   108,   109,   110,   111,
-       0,     0,     0,   112,     0,     0,     0,   146,   147,     0,
-       0,     0,     0,   166,     0,   149,   228,   229,     1,   230,
-     231,    90,   133,   134,   135,   136,    91,     8,    92,    93,
-      10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
-      20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
-     104,   105,   106,   107,     0,     0,     0,     0,    33,    34,
-     139,    36,    37,    38,     0,    39,    40,   140,    42,   141,
-      44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,   144,    61,    62,   145,
+      52,    53,    54,    55,   427,     0,   429,    58,    59,   144,
+      61,   431,   432,    64,    65,   108,   109,   110,   111,     0,
+       0,     0,   112,     0,     0,     0,   146,   147,     0,     0,
+       0,     0,   166,     0,   149,   228,   229,     1,   230,   231,
+      90,   133,   134,   135,   136,    91,     8,    92,    93,    10,
+      94,    95,    96,    97,    15,    16,    98,    18,    99,    20,
+      21,   100,   101,   102,   103,    25,     0,    27,    28,   104,
+     105,   106,   107,     0,     0,     0,     0,    33,    34,   139,
+      36,    37,    38,     0,    39,    40,   140,    42,   141,    44,
+     142,    46,   143,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,     0,    57,    58,    59,   144,    61,    62,   145,
       64,    65,   108,   109,   110,   111,     0,     0,     0,   112,
        0,     0,     0,   146,   147,     0,     0,     0,     0,   166,
        0,   149,   129,   130,     1,   131,   132,    90,   133,   134,
@@ -1241,360 +1245,357 @@ static const yytype_int16 yytable[] =
      102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
        0,     0,     0,     0,    33,    34,   139,    36,    37,    38,
        0,    39,    40,   140,    42,   141,    44,   142,    46,   143,
-      48,    49,    50,    51,    52,    53,    54,    55,   483,   484,
-      58,    59,   144,    61,   485,   486,    64,    65,   108,   109,
-     110,   111,     0,     0,     0,   112,     0,     0,     0,   146,
-     147,     0,     0,     0,     0,   166,     0,   149,   129,   130,
-       1,   131,   132,    90,   133,   134,   135,   136,    91,     8,
-      92,    93,    10,    94,    95,    96,    97,    15,    16,    98,
-      18,    99,    20,    21,   100,   101,   102,   103,    25,     0,
-      27,    28,   104,   105,   106,   107,     0,     0,     0,     0,
-       0,     0,   139,    36,    37,    38,     0,    39,    40,   140,
-      42,   141,    44,   142,    46,   143,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,   144,    61,
-      62,   145,    64,    65,   108,   109,   110,   111,     0,     0,
-       0,   112,     0,     0,     0,   146,   147,     0,     0,     0,
-       0,   166,     0,   149,   129,   130,     1,   131,   132,    90,
-     133,   134,   135,   136,    91,     8,    92,    93,    10,    94,
-      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
-     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
-     106,   107,     0,     0,     0,     0,     0,     0,   139,    36,
-      37,    38,     0,     0,     0,   140,    42,   141,    44,   142,
-      46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,   144,    61,    62,   145,    64,    65,
-     108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
-       0,   146,   147,     0,     0,     0,     0,   166,     0,   149,
-     129,   130,     1,   131,   132,    90,   133,   134,   135,   136,
-      91,     8,    92,    93,    10,    94,    95,    96,    97,    15,
-      16,    98,    18,    99,    20,    21,   100,   101,   102,   103,
-      25,     0,    27,    28,   104,   105,   106,   107,     0,     0,
-       0,     0,     0,     0,   139,     0,    37,    38,     0,     0,
-       0,   140,    42,   141,    44,   142,    46,   143,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      48,    49,    50,    51,    52,    53,    54,    55,   484,     0,
+     485,    58,    59,   144,    61,   486,   487,    64,    65,   108,
+     109,   110,   111,     0,     0,     0,   112,     0,     0,     0,
+     146,   147,     0,     0,     0,     0,   166,     0,   149,   129,
+     130,     1,   131,   132,    90,   133,   134,   135,   136,    91,
+       8,    92,    93,    10,    94,    95,    96,    97,    15,    16,
+      98,    18,    99,    20,    21,   100,   101,   102,   103,    25,
+       0,    27,    28,   104,   105,   106,   107,     0,     0,     0,
+       0,     0,     0,   139,    36,    37,    38,     0,    39,    40,
+     140,    42,   141,    44,   142,    46,   143,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,     0,    57,    58,    59,
      144,    61,    62,   145,    64,    65,   108,   109,   110,   111,
-       0,     0,     0,   112,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   166,     1,   149,     0,     2,     3,     4,
-       5,     6,     7,     8,     0,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,     0,    25,    26,    27,    28,    29,    30,    31,    32,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,    38,
-       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,     0,    69,     1,     0,    70,     0,     3,     4,     5,
-       6,     7,     8,    71,     9,    10,    11,    12,    13,    14,
-      15,    16,     0,    18,    19,    20,    21,    22,    23,    24,
-       0,    25,    26,    27,    28,     0,    30,    31,    32,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,     0,
-       0,    69,     1,     0,    70,     0,     3,     4,     5,     6,
-       7,     8,   381,     9,    10,    11,    12,    13,    14,    15,
-      16,     0,    18,    19,    20,    21,    22,    23,    24,     0,
-      25,    26,    27,    28,     0,    30,    31,    32,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,    38,     0,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,     0,     0,
-      69,     1,     0,    70,     0,     3,     4,     5,     6,     7,
-       8,   404,     9,    10,    11,    12,    13,    14,    15,    16,
-       0,    18,    19,    20,    21,    22,    23,    24,     0,    25,
-      26,    27,    28,     0,    30,    31,    32,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,     0,     0,    69,
-       1,     0,    70,     0,     3,     4,     5,     6,     7,     8,
-     521,     9,    10,    11,    12,    13,    14,    15,    16,     0,
-      18,    19,    20,    21,    22,    23,    24,     0,    25,    26,
-      27,    28,     0,    30,    31,    32,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,     0,     0,    69,     1,
-       0,    70,     0,     3,     4,     5,     6,     7,     8,   550,
-       9,    10,    11,    12,    13,    14,    15,    16,     0,    18,
-      19,    20,    21,    22,    23,    24,     0,    25,    26,    27,
-      28,     0,    30,    31,    32,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+       0,     0,     0,   112,     0,     0,     0,   146,   147,     0,
+       0,     0,     0,   166,     0,   149,   129,   130,     1,   131,
+     132,    90,   133,   134,   135,   136,    91,     8,    92,    93,
+      10,    94,    95,    96,    97,    15,    16,    98,    18,    99,
+      20,    21,   100,   101,   102,   103,    25,     0,    27,    28,
+     104,   105,   106,   107,     0,     0,     0,     0,     0,     0,
+     139,    36,    37,    38,     0,     0,     0,   140,    42,   141,
+      44,   142,    46,   143,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    57,    58,    59,   144,    61,    62,
+     145,    64,    65,   108,   109,   110,   111,     0,     0,     0,
+     112,     0,     0,     0,   146,   147,     0,     0,     0,     0,
+     166,     0,   149,   129,   130,     1,   131,   132,    90,   133,
+     134,   135,   136,    91,     8,    92,    93,    10,    94,    95,
+      96,    97,    15,    16,    98,    18,    99,    20,    21,   100,
+     101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
+     107,     0,     0,     0,     0,     0,     0,   139,     0,    37,
+      38,     0,     0,     0,   140,    42,   141,    44,   142,    46,
+     143,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+       0,    57,    58,    59,   144,    61,    62,   145,    64,    65,
+     108,   109,   110,   111,     0,     0,     0,   112,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   166,     1,   149,
+       0,     2,     3,     4,     5,     6,     7,     8,     0,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,    25,    26,    27,    28,
+      29,    30,    31,    32,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,     0,    69,     1,     0,
+      70,     0,     3,     4,     5,     6,     7,     8,    71,     9,
+      10,    11,    12,    13,    14,    15,    16,     0,    18,    19,
+      20,    21,    22,    23,    24,     0,    25,    26,    27,    28,
+       0,    30,    31,    32,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,     0,     0,    69,     1,     0,
+      70,     0,     3,     4,     5,     6,     7,     8,   381,     9,
+      10,    11,    12,    13,    14,    15,    16,     0,    18,    19,
+      20,    21,    22,    23,    24,     0,    25,    26,    27,    28,
+       0,    30,    31,    32,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,     0,     0,    69,     1,     0,
+      70,     0,     3,     4,     5,     6,     7,     8,   404,     9,
+      10,    11,    12,    13,    14,    15,    16,     0,    18,    19,
+      20,    21,    22,    23,    24,     0,    25,    26,    27,    28,
+       0,    30,    31,    32,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,     0,     0,    69,     1,     0,
+      70,     0,     3,     4,     5,     6,     7,     8,   522,     9,
+      10,    11,    12,    13,    14,    15,    16,     0,    18,    19,
+      20,    21,    22,    23,    24,     0,    25,    26,    27,    28,
+       0,    30,    31,    32,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,     0,     0,    69,     1,     0,
+      70,     0,     3,     4,     5,     6,     7,     8,   551,     9,
+      10,    11,    12,    13,    14,    15,    16,     0,    18,    19,
+      20,    21,    22,    23,    24,     0,    25,    26,    27,    28,
+       0,    30,    31,    32,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    57,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,     0,     0,     0,     0,     0,
-      70,     0,     0,     0,     0,     0,     1,     0,   470,    90,
+      70,     0,     0,     0,     0,     0,     1,     0,   471,    90,
        3,     4,     5,     6,    91,     8,    92,    93,    10,    94,
       95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
      100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
      106,   107,     0,     0,     0,     0,    33,    34,    35,    36,
       37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-     108,   109,   110,   111,     0,     1,     0,   112,    90,     3,
-       4,     5,     6,    91,     8,    92,    93,    10,    94,    95,
-      96,    97,    15,    16,    98,    18,    99,    20,    21,   100,
-     101,   102,   103,    25,     0,    27,    28,   104,   105,   106,
-     107,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+      56,     0,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,   108,   109,   110,   111,     0,     1,     0,   112,    90,
+       3,     4,     5,     6,    91,     8,    92,    93,    10,    94,
+      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
+     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
+     106,   107,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,     0,    57,    58,    59,   174,    61,    62,    63,    64,
+      65,   108,   109,   110,   111,     0,     1,     0,   112,    90,
+       3,     4,     5,     6,    91,     8,    92,    93,    10,    94,
+      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
+     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
+     106,   107,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,   215,   216,   217,   218,   219,    54,   220,
+      56,     0,    57,    58,   221,    60,    61,    62,    63,    64,
+      65,   108,   109,   110,   111,     0,     1,     0,   112,    90,
+     133,   134,     5,     6,    91,     8,    92,    93,    10,    94,
+      95,    96,    97,    15,    16,    98,    18,    99,    20,    21,
+     100,   101,   102,   103,    25,     0,    27,    28,   104,   105,
+     106,   107,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,    38,     0,    39,    40,   140,    42,   141,    44,   142,
+      46,   143,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,     0,    57,    58,    59,   384,    61,    62,    63,    64,
+      65,   108,   109,   110,   111,     1,     0,     0,   112,     3,
+       4,     5,     6,     7,     8,     0,     9,    10,    11,    12,
+      13,     0,    15,    16,     0,    18,    19,    20,    21,    22,
+     101,    24,     0,    25,     0,    27,    28,     0,    30,    31,
+      32,     0,     0,     0,     0,    33,    34,    35,    36,    37,
       38,     0,    39,    40,    41,    42,    43,    44,    45,    46,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,   174,    61,    62,    63,    64,    65,   108,
-     109,   110,   111,     0,     1,     0,   112,    90,     3,     4,
-       5,     6,    91,     8,    92,    93,    10,    94,    95,    96,
-      97,    15,    16,    98,    18,    99,    20,    21,   100,   101,
-     102,   103,    25,     0,    27,    28,   104,   105,   106,   107,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,    38,
-       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,   215,   216,   217,   218,   219,    54,   220,    56,    57,
-      58,   221,    60,    61,    62,    63,    64,    65,   108,   109,
-     110,   111,     0,     1,     0,   112,    90,   133,   134,     5,
-       6,    91,     8,    92,    93,    10,    94,    95,    96,    97,
-      15,    16,    98,    18,    99,    20,    21,   100,   101,   102,
-     103,    25,     0,    27,    28,   104,   105,   106,   107,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,   140,    42,   141,    44,   142,    46,   143,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,   384,    61,    62,    63,    64,    65,   108,   109,   110,
-     111,     1,     0,     0,   112,     3,     4,     5,     6,     7,
-       8,     0,     9,    10,    11,    12,    13,     0,    15,    16,
-       0,    18,    19,    20,    21,    22,   101,    24,     0,    25,
-       0,    27,    28,     0,    30,    31,    32,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,   499,    67,     0,     0,     0,
-       0,     0,    70,     0,     0,     0,     0,     0,   500,   243,
-     244,   245,   246,   268,   269,     0,   270,     0,     0,   250,
-     271,   272,   243,   244,   245,   246,   268,   269,   501,   270,
-       0,     0,   250,   271,   272,     0,     0,     0,     0,     0,
-       0,     0,   243,   244,   245,   246,   268,   269,     0,   270,
-       0,     0,   250,   271,   272,   253,   254,   255,   256,   257,
-     258,   259,     0,     0,     0,     0,     0,     0,   253,   254,
-     255,   256,   257,   258,   259,     0,     0,     0,     0,     0,
-       0,   502,     0,     0,     0,     0,     0,     0,   253,   254,
-     255,   256,   257,   258,   259,   243,   244,   245,   246,   268,
-     269,   574,   270,     0,     0,   250,   271,   272,     0,     0,
-       0,     0,     0,     0,     0,   558,   559,     0,   560,   561,
-     562,     0,   563,     0,     0,   564,   565,   566,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     291,   253,   254,   255,   256,   257,   258,   259,   243,   244,
-     245,   246,   268,   269,     0,   270,     0,     0,   250,   271,
-     272,   567,   568,   569,   570,   571,   572,   573,   267,     0,
+       0,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+     305,    67,     0,     0,     0,     0,   306,    70,     0,     0,
+       0,     0,     0,   501,   243,   244,   245,   246,   268,   269,
+       0,   270,     0,     0,   250,   271,   272,   243,   244,   245,
+     246,   268,   269,   502,   270,     0,     0,   250,   271,   272,
        0,     0,     0,     0,     0,     0,     0,   243,   244,   245,
      246,   268,   269,     0,   270,     0,     0,   250,   271,   272,
+       0,   253,   254,   255,   256,   257,   258,   259,     0,     0,
        0,     0,     0,     0,   253,   254,   255,   256,   257,   258,
-     259,   292,   243,   244,   245,   246,   268,   269,     0,   270,
-       0,     0,   250,   271,   272,     0,     0,     0,     0,     0,
+     259,   243,   244,   245,   246,   268,   269,   503,   270,     0,
+       0,   250,   271,   272,   253,   254,   255,   256,   257,   258,
+     259,   243,   244,   245,   246,   268,   269,     0,   270,     0,
+       0,   250,   271,   272,   243,   244,   245,   246,   268,   269,
+       0,   270,     0,     0,   250,   271,   272,     0,   253,   254,
+     255,   256,   257,   258,   259,     0,   329,     0,   330,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   253,   254,
+     255,   256,   257,   258,   259,     0,     0,     0,     0,     0,
+       0,   253,   254,   255,   256,   257,   258,   259,     0,   410,
+       0,   330,   243,   244,   245,   246,   268,   269,     0,   270,
+       0,     0,   250,   271,   272,   362,   363,   364,   365,   366,
+     367,     0,   368,     0,     0,   369,   370,   371,   243,   244,
+     245,   246,   268,   269,     0,   270,     0,     0,   250,   271,
+     272,     0,     0,     0,     0,     0,     0,     0,     0,   253,
+     254,   255,   256,   257,   258,   259,     0,     0,     0,   330,
+       0,     0,   372,   373,   374,   375,   376,   377,   378,     0,
+     379,     0,     0,     0,     0,   253,   254,   255,   256,   257,
+     258,   259,   392,   243,   244,   245,   246,   268,   269,     0,
+     270,     0,     0,   250,   271,   272,   243,   244,   245,   246,
+     268,   269,     0,   270,     0,     0,   250,   271,   272,   243,
+     244,   245,   246,   268,   269,     0,   270,     0,     0,   250,
+     271,   272,     0,     0,     0,     0,     0,     0,     0,     0,
+     253,   254,   255,   256,   257,   258,   259,   490,     0,     0,
        0,     0,     0,   253,   254,   255,   256,   257,   258,   259,
-     243,   244,   245,   246,   268,   269,     0,   270,     0,     0,
-     250,   271,   272,     0,     0,     0,     0,     0,   253,   254,
-     255,   256,   257,   258,   259,     0,   329,     0,   330,   243,
+     494,     0,     0,     0,     0,     0,   253,   254,   255,   256,
+     257,   258,   259,   524,   243,   244,   245,   246,   268,   269,
+       0,   270,     0,     0,   250,   271,   272,   243,   244,   245,
+     246,   268,   269,     0,   270,     0,     0,   250,   271,   272,
+       0,     0,     0,     0,     0,   243,   244,   245,   246,   268,
+     269,     0,   270,     0,     0,   250,   271,   272,     0,     0,
+       0,   253,   254,   255,   256,   257,   258,   259,   584,     0,
+       0,     0,     0,     0,   253,   254,   255,   256,   257,   258,
+     259,   607,   327,   328,     0,     0,     0,     0,     0,     0,
+       0,     0,   253,   254,   255,   256,   257,   258,   259,   243,
      244,   245,   246,   268,   269,     0,   270,     0,     0,   250,
-     271,   272,     0,     0,     0,     0,   253,   254,   255,   256,
-     257,   258,   259,     0,   410,     0,   330,   362,   363,   364,
-     365,   366,   367,     0,   368,     0,     0,   369,   370,   371,
-       0,     0,     0,     0,     0,   253,   254,   255,   256,   257,
-     258,   259,     0,     0,     0,   330,   243,   244,   245,   246,
-     268,   269,     0,   270,     0,     0,   250,   271,   272,     0,
-       0,     0,     0,   372,   373,   374,   375,   376,   377,   378,
-       0,   379,   243,   244,   245,   246,   268,   269,     0,   270,
-       0,     0,   250,   271,   272,     0,     0,     0,     0,     0,
-       0,     0,   253,   254,   255,   256,   257,   258,   259,   392,
-     243,   244,   245,   246,   268,   269,     0,   270,     0,     0,
-     250,   271,   272,     0,     0,     0,     0,     0,   253,   254,
-     255,   256,   257,   258,   259,   489,   243,   244,   245,   246,
-     268,   269,     0,   270,     0,     0,   250,   271,   272,     0,
+     271,   272,   362,   363,   364,   365,   366,   367,     0,   368,
+       0,     0,   369,   370,   371,   559,   560,     0,   561,   562,
+     563,     0,   564,     0,     0,   565,   566,   567,     0,     0,
        0,     0,     0,     0,     0,     0,   253,   254,   255,   256,
-     257,   258,   259,   493,   243,   244,   245,   246,   268,   269,
-       0,   270,     0,     0,   250,   271,   272,     0,     0,     0,
-       0,     0,   253,   254,   255,   256,   257,   258,   259,   523,
-     243,   244,   245,   246,   268,   269,     0,   270,     0,     0,
-     250,   271,   272,     0,     0,     0,     0,     0,     0,     0,
-     253,   254,   255,   256,   257,   258,   259,   583,   243,   244,
-     245,   246,   268,   269,     0,   270,     0,     0,   250,   271,
-     272,     0,     0,     0,     0,     0,   253,   254,   255,   256,
-     257,   258,   259,   606,     0,     0,   243,   244,   245,   246,
-     268,   269,     0,   270,   327,   328,   250,   271,   272,     0,
-       0,     0,     0,     0,   253,   254,   255,   256,   257,   258,
-     259,   362,   363,   364,   365,   366,   367,     0,   368,     0,
-       0,   369,   370,   371,     0,     0,     0,     0,     0,     0,
-       0,     0,   253,   254,   255,   256,   257,   258,   259,   558,
-     559,     0,   560,   561,   562,     0,   563,     0,     0,   564,
-     565,   566,     0,     0,     0,     0,     0,   372,   373,   374,
-     375,   376,   377,   378,     0,     0,     0,     0,     0,     0,
+     257,   258,   259,     0,     0,     0,     0,     0,     0,   372,
+     373,   374,   375,   376,   377,   378,     0,     0,     0,     0,
+       0,     0,   568,   569,   570,   571,   572,   573,   574,   243,
+     244,   245,   246,     0,     0,     0,   270,     0,     0,   250,
+     271,   272,   559,   560,     0,   561,     0,     0,     0,   564,
+       0,     0,   565,   566,   567,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   567,   568,   569,   570,   571,
-     572,   573
+       0,     0,     0,     0,     0,     0,   253,   254,   255,   256,
+     257,   258,   259,     0,     0,     0,     0,     0,     0,   568,
+     569,   570,   571,   572,   573,   574
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,     0,    24,     7,   383,    32,    12,   239,    14,    13,
-      70,     2,     9,   392,    16,   381,    22,    15,   395,    31,
-      11,    49,   263,    49,    30,    31,    17,    34,   260,    23,
-     409,    97,    68,    24,    49,   101,    34,    44,    29,    75,
-      67,    32,   521,   553,    42,    43,    44,    45,    46,    47,
-      44,    49,    68,    22,    52,    53,    54,    10,    11,    75,
-      66,    30,    31,    91,    92,    93,    94,    93,    94,   579,
-      70,   550,    78,    73,    73,    31,    67,    68,    93,    94,
-     163,    49,    84,    95,    52,    96,    83,    95,   171,   100,
-      88,    89,    90,    91,    92,    93,    94,   329,    95,   182,
-     117,   342,    55,    68,    57,    95,    59,   473,    61,    78,
-      75,   194,   118,   119,   120,   121,     0,   134,   135,   136,
-     361,    74,    90,    91,    92,    93,    94,    36,    37,   212,
-      69,   137,   138,    68,   140,   141,   142,   143,    23,   145,
-      75,   168,   148,    28,   523,    49,    95,   379,    52,    68,
-      49,    95,    96,   144,    95,   521,    75,    95,   149,   536,
-     166,   188,    42,    43,    44,    45,    96,   173,    97,    49,
-      95,    96,    52,    53,    54,    95,    96,   168,   410,   277,
-     278,   172,    95,   174,   550,    95,    90,    91,    92,    93,
-      94,   197,    91,    92,    93,    94,   575,   188,   439,    95,
-     423,   424,   425,   426,   583,   196,   429,    95,    88,    89,
-      90,    91,    92,    93,    94,    55,    95,    57,   209,    59,
-      95,    61,    95,    95,    95,    95,    95,   606,   469,    95,
-      28,   291,    28,   101,   101,    96,   101,   243,   244,   245,
+       0,     0,    24,     7,    70,    32,    12,   395,    14,    13,
+     383,     2,     9,    16,   239,    31,    22,    49,   381,   392,
+      11,   263,   522,    49,    30,    31,    17,    34,   554,    23,
+      31,    36,    37,    24,   163,   260,   409,    44,    29,    22,
+      67,    32,   171,    96,    68,    10,    11,    30,    31,    68,
+      44,   551,    76,   182,   580,    98,    68,    76,    96,   102,
+      66,    49,    94,    95,    76,   194,    92,    93,    94,    95,
+      70,     0,    78,    73,    73,    96,    67,    68,    68,    96,
+      96,    49,    85,   212,    52,    69,    76,    84,    96,   163,
+      55,    28,    57,    68,    59,    78,    61,   171,    23,    96,
+     342,    76,    49,    28,   329,    52,    94,    95,   182,    98,
+      75,   474,   118,   119,   120,   121,    97,    97,    96,   361,
+     194,   101,    96,    91,    92,    93,    94,    95,    49,    96,
+      97,   137,   138,    96,   140,   141,   142,   143,   212,   145,
+      96,   168,   148,    96,    91,    92,    93,    94,    95,   537,
+      96,   524,    96,   144,   379,    96,    97,    96,   149,   522,
+     166,   188,   423,   424,   425,   426,    96,   173,    96,   430,
+      96,    92,    93,    94,    95,   117,    55,   168,    57,    96,
+      59,   172,    61,   174,    28,   410,    96,    97,   551,   277,
+     278,   197,   134,   135,   136,   102,   102,   188,   440,   102,
+     102,   101,   101,   576,    97,   196,    26,    96,    96,    28,
+      26,   584,    97,    16,    96,    96,    96,    87,   209,    86,
+      96,    99,     9,    28,    70,   291,    99,    96,   470,   485,
+     486,   487,    34,    96,   607,    96,    70,   243,   244,   245,
      246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   276,   277,   278,   498,   101,   100,
-      26,   100,   268,   269,   270,   271,   272,   267,   267,    95,
-      28,   163,   276,   277,   278,    95,    26,    96,   284,   171,
-      16,   287,    95,    95,    95,   276,   277,   278,    98,    86,
-     182,   291,   292,    85,   300,    95,   302,     9,   304,    28,
-     306,    70,   194,    34,    98,    95,    95,    95,    70,    84,
-      70,    98,    85,    95,    85,    85,    95,    95,    73,   400,
-     212,   116,   117,    31,   473,   331,   332,   333,   334,   407,
-     336,   337,   511,   326,   340,   212,   337,   343,   133,   134,
-     135,   136,    -1,    -1,   139,    -1,   337,   484,   485,   486,
+     256,   257,   258,   259,   276,   277,   278,   499,    99,    85,
+      70,    86,   268,   269,   270,   271,   272,   267,   267,    96,
+     400,    86,   276,   277,   278,    86,    73,    31,   284,    96,
+     407,   287,    96,   474,   326,   276,   277,   278,   512,   337,
+     212,   291,   292,    -1,   300,    -1,   302,    -1,   304,    -1,
+     306,    -1,    -1,   559,   560,   561,   562,   563,   564,   565,
+     566,   567,   568,   569,   570,   571,   572,   573,   574,    -1,
+      -1,   116,   117,    -1,    -1,   331,   332,   333,   334,    -1,
+     336,   337,    -1,    -1,   340,    -1,    -1,   343,   133,   134,
+     135,   136,    -1,    -1,   139,   601,   337,    -1,    -1,    -1,
       -1,   146,   147,    -1,    -1,    -1,   362,   363,   364,   365,
      366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
-     376,   377,   378,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   381,    -1,   383,   390,   391,    -1,    -1,    -1,    -1,
-      -1,    -1,   392,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   395,   396,    -1,   407,    -1,   409,
-      -1,    -1,    -1,    -1,    -1,    -1,   422,    -1,    -1,    -1,
-      -1,   558,   559,   560,   561,   562,   563,   564,   565,   566,
-     567,   568,   569,   570,   571,   572,   573,    -1,    42,    43,
-      -1,    45,   448,    -1,    -1,    49,    -1,    -1,    52,    53,
-      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   600,   491,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   473,    -1,   475,   475,    28,    -1,    -1,
-      -1,    -1,    -1,    34,    88,    89,    90,    91,    92,    93,
-      94,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
-     491,    52,    53,    54,   299,    -1,   301,    -1,   303,    -1,
-     305,    -1,    -1,    -1,    -1,    -1,    -1,   517,   517,   525,
-      -1,   521,    -1,   523,    -1,    -1,    -1,    -1,    -1,    -1,
-     325,   326,   327,   328,    -1,    -1,    -1,    88,    89,    90,
-      91,    92,    93,    94,    -1,   536,    -1,    28,    -1,   555,
-     550,    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
-      -1,    52,    53,    54,    -1,   575,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   583,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   483,   484,   485,   486,    -1,    -1,    -1,   393,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   606,    88,    89,    90,
-      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   421,    -1,    -1,    -1,
-      -1,    -1,   427,   428,    28,   430,   431,    -1,    -1,    -1,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
-      44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
-      54,    -1,    -1,    -1,    -1,    -1,   558,   559,   560,   561,
-     562,   563,   564,   565,   566,   567,   568,   569,   570,   571,
-     572,   573,    -1,    -1,    -1,    -1,    -1,    -1,   483,   484,
-     485,   486,    -1,    -1,    88,    89,    90,    91,    92,    93,
-      94,    -1,    -1,    -1,   499,   500,   501,   502,   600,    -1,
-     505,   506,   507,   508,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    28,    -1,    -1,    -1,    -1,    -1,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
+     376,   377,   378,    -1,    -1,    -1,    -1,    -1,    34,    -1,
+      -1,   381,    -1,   383,   390,   391,    42,    43,    44,    45,
+      46,    47,   392,    49,    -1,    -1,    52,    53,    54,    -1,
+      -1,    -1,    -1,    -1,   395,   396,    28,   407,    -1,   409,
+     484,   485,   486,   487,    -1,    -1,   422,    -1,    -1,    -1,
+      42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
+      52,    53,    54,    89,    90,    91,    92,    93,    94,    95,
+      96,    -1,    -1,   449,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   492,    -1,    89,    90,    91,
+      92,    93,    94,    95,   474,    -1,   476,   476,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   559,   560,   561,   562,   563,
+     564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
+     574,   492,    -1,    -1,   299,    -1,   301,    -1,   303,    -1,
+     305,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   518,   518,
+     526,    -1,   522,    -1,   524,    15,    -1,   601,    -1,    -1,
+     325,   326,   327,   328,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    34,    -1,   537,    -1,    -1,    -1,
+     556,   551,    42,    43,    44,    45,    46,    47,    33,    49,
+      -1,    -1,    52,    53,    54,    -1,    -1,    42,    43,    44,
+      45,    46,    47,    -1,    49,    -1,   576,    52,    53,    54,
+      -1,    -1,    -1,    -1,   584,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   393,    89,
+      90,    91,    92,    93,    94,    95,    -1,   607,    -1,    -1,
+      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      95,    -1,    -1,    -1,    -1,    -1,   421,    -1,    -1,    -1,
+      -1,    -1,   427,    28,   429,    -1,   431,   432,    -1,    34,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,
+      45,    46,    47,    -1,    49,    28,    -1,    52,    53,    54,
+      -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    52,
+      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   484,
+     485,   486,   487,    -1,    89,    90,    91,    92,    93,    94,
+      95,    -1,    -1,    -1,    -1,   500,   501,   502,   503,    -1,
+      -1,   506,   507,   508,   509,    -1,    89,    90,    91,    92,
+      93,    94,    95,    -1,    28,    -1,    -1,    -1,    -1,    -1,
+      34,    -1,    -1,    -1,    -1,    -1,    -1,    28,    42,    43,
       44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
-      54,    -1,   547,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   558,   559,   560,   561,   562,   563,   564,
-     565,   566,   567,   568,   569,   570,   571,   572,   573,    -1,
-      -1,    -1,    -1,   578,    88,    89,    90,    91,    92,    93,
-      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   600,     4,     5,     6,     7,
+      54,    42,    43,   548,    45,    46,    47,    -1,    49,    -1,
+      -1,    52,    53,    54,   559,   560,   561,   562,   563,   564,
+     565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
+      -1,    -1,    -1,    -1,   579,    89,    90,    91,    92,    93,
+      94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
+      91,    92,    93,    94,    95,    -1,   601,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    51,    -1,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
+      -1,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    98,    -1,   100,    -1,   102,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    87,
-      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    99,    -1,   101,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    -1,    -1,    -1,    87,    88,    89,
-      90,    91,    92,    93,    94,    -1,    96,    97,    -1,    99,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    -1,    -1,    -1,
+      88,    89,    90,    91,    92,    93,    94,    95,    -1,    97,
+      98,    -1,   100,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    -1,    -1,    -1,    88,    89,    90,
+      91,    92,    93,    94,    95,    -1,    97,    98,    -1,   100,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    -1,    36,    37,    38,    39,    40,    41,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    88,    89,    90,    91,    92,    93,
-      94,    -1,    96,    97,    -1,    99,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    87,
-      88,    89,    90,    91,    92,    93,    94,    -1,    96,    97,
-      -1,    99,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    -1,    -1,    -1,    87,    88,    89,    90,    91,
-      92,    93,    94,    -1,    96,    97,    -1,    99,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
-      -1,    87,    88,    89,    90,    91,    92,    93,    94,    -1,
-      -1,    97,    -1,    99,     4,     5,     6,     7,     8,     9,
+      84,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
+      94,    95,    -1,    97,    98,    -1,   100,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
+      -1,    88,    89,    90,    91,    92,    93,    94,    95,    -1,
+      97,    98,    -1,   100,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
-      50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    -1,    -1,    -1,    87,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    -1,    -1,    97,    98,    99,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    36,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    -1,    -1,    -1,    91,    92,    -1,
-      -1,    -1,    -1,    97,    98,    99,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    87,
-      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      98,    99,     4,     5,     6,     7,     8,     9,    10,    11,
+      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94,    95,    -1,    -1,    98,    -1,
+     100,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    36,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    98,    99,   100,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
+      36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
+      46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      -1,    -1,    98,    99,   100,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
+      39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,
+      49,    50,    51,    -1,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    -1,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    -1,    -1,    -1,    88,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      99,   100,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
@@ -1602,282 +1603,279 @@ static const yytype_int16 yycheck[] =
       -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    -1,    -1,    -1,    87,    -1,    -1,    -1,    91,
-      92,    -1,    -1,    -1,    -1,    97,    98,    99,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
-      -1,    87,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,
-      -1,    97,    98,    99,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
-      50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    -1,    -1,    -1,    87,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    -1,    -1,    97,    -1,    99,
+      82,    83,    84,    -1,    -1,    -1,    88,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    -1,    98,    -1,   100,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      -1,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    98,    99,   100,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
+      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    -1,    -1,    -1,
+      88,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
+      98,    99,   100,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
+      51,    -1,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,    -1,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,   100,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    -1,    36,    37,    38,    39,    40,    41,    -1,    -1,
       -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      64,    65,    66,    67,    68,    69,    70,    -1,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    -1,    -1,    -1,    91,    92,    -1,
-      -1,    -1,    -1,    97,    -1,    99,     4,     5,     6,     7,
+      84,    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    -1,    -1,    98,    -1,   100,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    51,    -1,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
+      -1,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    98,    -1,   100,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
+      50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,
+     100,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    36,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    -1,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    98,    -1,   100,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
+      36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
+      46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    -1,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      -1,    -1,    98,    -1,   100,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
+      39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,
+      49,    50,    51,    -1,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    -1,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    -1,    -1,    -1,    88,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      -1,   100,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
+      -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    -1,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    83,    84,    -1,    -1,    -1,    88,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    -1,    98,    -1,   100,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      -1,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
+      -1,    -1,    -1,    48,    49,    50,    51,    -1,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    98,    -1,   100,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
+      38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
+      48,    49,    50,    51,    -1,    -1,    -1,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    -1,    -1,    -1,
+      88,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
+      98,    -1,   100,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    50,
+      51,    -1,    -1,    -1,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,     6,   100,
+      -1,     9,    10,    11,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
       38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
       48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    87,
-      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    99,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
-      -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    -1,    -1,    -1,    87,    -1,    -1,    -1,    91,
-      92,    -1,    -1,    -1,    -1,    97,    -1,    99,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
-      -1,    87,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,
-      -1,    97,    -1,    99,     4,     5,     6,     7,     8,     9,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    -1,    85,     6,    -1,
+      88,    -1,    10,    11,    12,    13,    14,    15,    96,    17,
+      18,    19,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    -1,    -1,    85,     6,    -1,
+      88,    -1,    10,    11,    12,    13,    14,    15,    96,    17,
+      18,    19,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    -1,    -1,    85,     6,    -1,
+      88,    -1,    10,    11,    12,    13,    14,    15,    96,    17,
+      18,    19,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    -1,    -1,    85,     6,    -1,
+      88,    -1,    10,    11,    12,    13,    14,    15,    96,    17,
+      18,    19,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    -1,    -1,    85,     6,    -1,
+      88,    -1,    10,    11,    12,    13,    14,    15,    96,    17,
+      18,    19,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    -1,    -1,    -1,    -1,    -1,
+      88,    -1,    -1,    -1,    -1,    -1,     6,    -1,    96,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
       40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
       50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    -1,    -1,    -1,    87,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    -1,    -1,    97,    -1,    99,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    36,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    -1,    -1,    -1,    91,    92,    -1,
-      -1,    -1,    -1,    97,    -1,    99,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    -1,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    87,
-      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    99,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
-      -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    -1,    -1,    -1,    87,    -1,    -1,    -1,    91,
-      92,    -1,    -1,    -1,    -1,    97,    -1,    99,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    49,    50,    51,    -1,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
-      -1,    87,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,
-      -1,    97,    -1,    99,     4,     5,     6,     7,     8,     9,
+      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    -1,     6,    -1,    88,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,
-      50,    51,    -1,    -1,    -1,    55,    56,    57,    58,    59,
+      40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
+      50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    -1,    -1,    -1,    87,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    -1,    -1,    97,    -1,    99,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    36,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    50,    51,    -1,    -1,
-      -1,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    97,     6,    99,    -1,     9,    10,    11,
-      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    -1,    34,    35,    36,    37,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
-      -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    -1,    84,     6,    -1,    87,    -1,    10,    11,    12,
-      13,    14,    15,    95,    17,    18,    19,    20,    21,    22,
-      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
-      -1,    34,    35,    36,    37,    -1,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    -1,
-      -1,    84,     6,    -1,    87,    -1,    10,    11,    12,    13,
-      14,    15,    95,    17,    18,    19,    20,    21,    22,    23,
-      24,    -1,    26,    27,    28,    29,    30,    31,    32,    -1,
-      34,    35,    36,    37,    -1,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    -1,    -1,
-      84,     6,    -1,    87,    -1,    10,    11,    12,    13,    14,
-      15,    95,    17,    18,    19,    20,    21,    22,    23,    24,
-      -1,    26,    27,    28,    29,    30,    31,    32,    -1,    34,
-      35,    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
-      -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    -1,    -1,    84,
-       6,    -1,    87,    -1,    10,    11,    12,    13,    14,    15,
-      95,    17,    18,    19,    20,    21,    22,    23,    24,    -1,
-      26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
-      36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    -1,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    -1,    -1,    84,     6,
-      -1,    87,    -1,    10,    11,    12,    13,    14,    15,    95,
-      17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
-      27,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
-      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
-      47,    48,    49,    50,    51,    -1,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-      87,    -1,    -1,    -1,    -1,    -1,     6,    -1,    95,     9,
+      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    -1,     6,    -1,    88,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
       40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
       50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    -1,     6,    -1,    87,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    -1,     6,    -1,    88,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
+      50,    51,    -1,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,     6,    -1,    -1,    88,    10,
+      11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
+      21,    -1,    23,    24,    -1,    26,    27,    28,    29,    30,
+      31,    32,    -1,    34,    -1,    36,    37,    -1,    39,    40,
       41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
       51,    -1,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    -1,     6,    -1,    87,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
-      -1,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    -1,     6,    -1,    87,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    -1,    36,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,     6,    -1,    -1,    87,    10,    11,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
-      -1,    26,    27,    28,    29,    30,    31,    32,    -1,    34,
-      -1,    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
-      -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    28,    81,    -1,    -1,    -1,
-      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    28,    42,
-      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    52,
-      53,    54,    42,    43,    44,    45,    46,    47,    28,    49,
-      -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    42,    43,    44,    45,    46,    47,    -1,    49,
-      -1,    -1,    52,    53,    54,    88,    89,    90,    91,    92,
-      93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,
-      -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    42,    43,    44,    45,    46,
-      47,    28,    49,    -1,    -1,    52,    53,    54,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    45,    46,
-      47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      34,    88,    89,    90,    91,    92,    93,    94,    42,    43,
-      44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
-      54,    88,    89,    90,    91,    92,    93,    94,    33,    -1,
+      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      28,    82,    -1,    -1,    -1,    -1,    34,    88,    -1,    -1,
+      -1,    -1,    -1,    28,    42,    43,    44,    45,    46,    47,
+      -1,    49,    -1,    -1,    52,    53,    54,    42,    43,    44,
+      45,    46,    47,    28,    49,    -1,    -1,    52,    53,    54,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,
       45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
-      94,    95,    42,    43,    44,    45,    46,    47,    -1,    49,
-      -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
-      42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
-      52,    53,    54,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    -1,    96,    -1,    98,    42,
+      -1,    89,    90,    91,    92,    93,    94,    95,    -1,    -1,
+      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      95,    42,    43,    44,    45,    46,    47,    28,    49,    -1,
+      -1,    52,    53,    54,    89,    90,    91,    92,    93,    94,
+      95,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
+      -1,    52,    53,    54,    42,    43,    44,    45,    46,    47,
+      -1,    49,    -1,    -1,    52,    53,    54,    -1,    89,    90,
+      91,    92,    93,    94,    95,    -1,    97,    -1,    99,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
+      91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95,    -1,    97,
+      -1,    99,    42,    43,    44,    45,    46,    47,    -1,    49,
+      -1,    -1,    52,    53,    54,    42,    43,    44,    45,    46,
+      47,    -1,    49,    -1,    -1,    52,    53,    54,    42,    43,
+      44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
+      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,    99,
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    -1,
+      97,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      94,    95,    96,    42,    43,    44,    45,    46,    47,    -1,
+      49,    -1,    -1,    52,    53,    54,    42,    43,    44,    45,
+      46,    47,    -1,    49,    -1,    -1,    52,    53,    54,    42,
       43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    52,
-      53,    54,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    -1,    96,    -1,    98,    42,    43,    44,
+      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      89,    90,    91,    92,    93,    94,    95,    96,    -1,    -1,
+      -1,    -1,    -1,    89,    90,    91,    92,    93,    94,    95,
+      96,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
+      93,    94,    95,    96,    42,    43,    44,    45,    46,    47,
+      -1,    49,    -1,    -1,    52,    53,    54,    42,    43,    44,
       45,    46,    47,    -1,    49,    -1,    -1,    52,    53,    54,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
-      93,    94,    -1,    -1,    -1,    98,    42,    43,    44,    45,
-      46,    47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,
-      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
-      -1,    96,    42,    43,    44,    45,    46,    47,    -1,    49,
+      -1,    -1,    -1,    -1,    -1,    42,    43,    44,    45,    46,
+      47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95,    96,    -1,
+      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      95,    96,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    42,
+      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    52,
+      53,    54,    42,    43,    44,    45,    46,    47,    -1,    49,
+      -1,    -1,    52,    53,    54,    42,    43,    -1,    45,    46,
+      47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
+      93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    42,
+      43,    44,    45,    -1,    -1,    -1,    49,    -1,    -1,    52,
+      53,    54,    42,    43,    -1,    45,    -1,    -1,    -1,    49,
       -1,    -1,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    95,
-      42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
-      52,    53,    54,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    95,    42,    43,    44,    45,
-      46,    47,    -1,    49,    -1,    -1,    52,    53,    54,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    95,    42,    43,    44,    45,    46,    47,
-      -1,    49,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    95,
-      42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
-      52,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94,    95,    42,    43,
-      44,    45,    46,    47,    -1,    49,    -1,    -1,    52,    53,
-      54,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    95,    -1,    -1,    42,    43,    44,    45,
-      46,    47,    -1,    49,    78,    79,    52,    53,    54,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
-      94,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
-      -1,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    42,
-      43,    -1,    45,    46,    47,    -1,    49,    -1,    -1,    52,
-      53,    54,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
-      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
-      93,    94
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
+      93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95
 };
 
 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
@@ -1889,101 +1887,102 @@ static const yytype_uint8 yystos[] =
       28,    29,    30,    31,    32,    34,    35,    36,    37,    38,
       39,    40,    41,    46,    47,    48,    49,    50,    51,    53,
       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    84,
-      87,    95,   103,   104,   105,   106,   107,   112,   114,   118,
-     119,   120,   121,   125,   127,   128,   129,   131,   132,   133,
+      64,    65,    66,    67,    68,    69,    70,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    85,
+      88,    96,   104,   105,   106,   107,   108,   113,   115,   119,
+     120,   121,   122,   126,   128,   129,   130,   132,   133,   134,
        9,    14,    16,    17,    19,    20,    21,    22,    25,    27,
-      30,    31,    32,    33,    38,    39,    40,    41,    80,    81,
-      82,    83,    87,   113,   114,   115,    10,    11,    55,    57,
-      59,    61,    74,   144,    31,    95,   115,   116,   117,     4,
+      30,    31,    32,    33,    38,    39,    40,    41,    81,    82,
+      83,    84,    88,   114,   115,   116,    10,    11,    55,    57,
+      59,    61,    75,   145,    31,    96,   116,   117,   118,     4,
        5,     7,     8,    10,    11,    12,    13,    18,    26,    48,
-      55,    57,    59,    61,    74,    77,    91,    92,    97,    99,
-     115,   122,   124,   140,   141,   144,   146,   148,   151,   152,
-     156,   159,   160,   161,   164,   144,    97,   161,   115,    31,
-     122,   161,    36,    37,    74,   115,   141,   143,   154,    95,
-     115,   122,   161,   122,   124,   116,   161,   116,   115,    95,
-     120,     0,   105,   122,   161,    95,    96,    97,   147,   160,
-     147,   161,   161,   161,   161,    69,    95,    95,    95,    96,
-     147,   147,   161,   161,   160,    63,    64,    65,    66,    67,
-      69,    73,   115,   161,   160,   160,    98,   161,     4,     5,
-       7,     8,   101,   115,   157,   158,   161,   165,   166,    97,
-      95,    95,    28,    42,    43,    44,    45,    46,    47,    49,
-      52,    53,    54,    88,    89,    90,    91,    92,    93,    94,
-      96,   123,   140,   162,   164,    95,   161,    33,    46,    47,
-      49,    53,    54,   116,    95,    95,    24,    50,    51,   115,
-     161,   115,    34,    44,   126,    95,    95,    36,    95,    95,
-      95,    34,    95,    95,   116,    95,   115,    98,   161,    28,
+      55,    57,    59,    61,    75,    78,    92,    93,    98,   100,
+     116,   123,   125,   141,   142,   145,   147,   149,   152,   153,
+     157,   160,   161,   162,   165,   145,    98,   162,   116,    31,
+     123,   162,    36,    37,    75,   116,   142,   144,   155,    96,
+     116,   123,   162,   123,   125,   117,   162,   117,   116,    96,
+     121,     0,   106,   123,   162,    96,    97,    98,   148,   161,
+     148,   162,   162,   162,   162,    69,    96,    96,    96,    97,
+     148,   148,   162,   162,   161,    63,    64,    65,    66,    67,
+      69,    74,   116,   162,   161,   161,    99,   162,     4,     5,
+       7,     8,   102,   116,   158,   159,   162,   166,   167,    98,
+      96,    96,    28,    42,    43,    44,    45,    46,    47,    49,
+      52,    53,    54,    89,    90,    91,    92,    93,    94,    95,
+      97,   124,   141,   163,   165,    96,   162,    33,    46,    47,
+      49,    53,    54,   117,    96,    96,    24,    50,    51,   116,
+     162,   116,    34,    44,   127,    96,    96,    36,    96,    96,
+      96,    34,    96,    96,   117,    96,   116,    99,   162,    28,
       34,    28,    34,    28,    34,    28,    34,    55,    57,    59,
-      61,   145,   115,    28,   162,    68,    75,    68,    75,    68,
-      75,    68,    75,    68,    75,    28,    28,    78,    79,    96,
-      98,   101,   101,   101,   101,   100,   101,    96,   100,   100,
-      96,    98,   166,    26,   161,   161,   161,   161,   161,   161,
-     161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
-     161,   166,    42,    43,    44,    45,    46,    47,    49,    52,
-      53,    54,    88,    89,    90,    91,    92,    93,    94,    96,
-     123,    95,   118,    95,    74,   141,   142,   144,   142,   142,
-      23,    44,    95,    28,   161,     9,    83,    95,   108,   109,
-     110,   111,   161,   120,    95,   118,   134,   135,   136,    95,
-      96,   160,   161,   160,   161,   160,   161,   160,   161,    23,
-      28,   153,    26,    56,    58,    60,    62,    70,    71,    72,
-      76,    77,   149,   150,   160,   149,   160,   160,    98,   166,
-     161,   161,   161,   161,   161,   158,   161,   161,    96,   123,
-     161,   123,   161,   161,   161,   161,   161,   161,   161,   161,
-     161,   161,   161,   161,   161,   161,   161,   161,   161,   166,
-      95,   119,   137,   138,   139,    16,   134,    95,    95,    95,
-     161,   161,   134,    70,    71,    76,    77,   155,   160,    95,
-     113,   115,   111,    95,    86,   136,   134,    98,   166,    28,
-      28,    28,    28,   160,   161,   153,   153,   153,   153,   160,
-     160,   153,   160,   160,   123,    98,   123,    16,    84,   130,
-     139,    95,   118,    95,    15,    34,    85,   160,   163,   164,
-     163,   163,   163,    95,   116,    95,     9,   123,   160,   160,
-     160,   160,   160,   160,   160,   160,    28,    70,   150,    98,
-      95,   118,    95,   137,   134,    34,   161,    95,    42,    43,
-      45,    46,    47,    49,    52,    53,    54,    88,    89,    90,
-      91,    92,    93,    94,    28,    95,   113,    98,    70,   137,
-     130,    85,   161,    95,   163,   163,   163,   163,   163,   163,
-     163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
-      70,   134,    95,   160,   130,    95,    95,   134,   163,   134,
-      85,    85,    95,    95
+      61,   146,   116,    28,   163,    68,    76,    68,    76,    68,
+      76,    68,    76,    68,    76,    28,    28,    79,    80,    97,
+      99,   102,   102,   102,   102,   101,   102,    97,   101,   101,
+      97,    99,   167,    26,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   167,    42,    43,    44,    45,    46,    47,    49,    52,
+      53,    54,    89,    90,    91,    92,    93,    94,    95,    97,
+     124,    96,   119,    96,    75,   142,   143,   145,   143,   143,
+      23,    44,    96,    28,   162,     9,    84,    96,   109,   110,
+     111,   112,   162,   121,    96,   119,   135,   136,   137,    96,
+      97,   161,   162,   161,   162,   161,   162,   161,   162,    23,
+      28,   154,    26,    56,    58,    60,    62,    70,    71,    72,
+      73,    77,    78,   150,   151,   161,   150,   161,   161,    99,
+     167,   162,   162,   162,   162,   162,   159,   162,   162,    97,
+     124,   162,   124,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     167,    96,   120,   138,   139,   140,    16,   135,    96,    96,
+      96,   162,   162,   135,    70,    72,    77,    78,   156,   161,
+      96,   114,   116,   112,    96,    87,   137,   135,    99,   167,
+      28,    28,    28,    28,   161,   162,   154,   154,   154,   154,
+     161,   161,   154,   161,   161,   124,    99,   124,    16,    85,
+     131,   140,    96,   119,    96,    15,    34,    86,   161,   164,
+     165,   164,   164,   164,    96,   117,    96,     9,   124,   161,
+     161,   161,   161,   161,   161,   161,   161,    28,    70,   151,
+      99,    96,   119,    96,   138,   135,    34,   162,    96,    42,
+      43,    45,    46,    47,    49,    52,    53,    54,    89,    90,
+      91,    92,    93,    94,    95,    28,    96,   114,    99,    70,
+     138,   131,    86,   162,    96,   164,   164,   164,   164,   164,
+     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
+     164,    70,   135,    96,   161,   131,    96,    96,   135,   164,
+     135,    86,    86,    96,    96
 };
 
 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   102,   103,   104,   104,   105,   105,   105,   105,   105,
-     105,   106,   107,   108,   109,   109,   110,   110,   111,   111,
-     111,   112,   112,   113,   113,   113,   114,   114,   114,   114,
-     114,   114,   114,   114,   114,   114,   114,   114,   114,   114,
-     114,   114,   114,   114,   114,   114,   114,   114,   114,   114,
-     114,   114,   114,   114,   114,   114,   114,   114,   114,   114,
-     114,   114,   114,   114,   114,   114,   114,   114,   114,   114,
-     114,   114,   114,   114,   114,   114,   114,   114,   114,   115,
+       0,   103,   104,   105,   105,   106,   106,   106,   106,   106,
+     106,   107,   108,   109,   110,   110,   111,   111,   112,   112,
+     112,   113,   113,   114,   114,   114,   115,   115,   115,   115,
+     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
+     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
      115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   116,   116,
-     116,   117,   117,   118,   118,   119,   119,   119,   119,   119,
-     119,   120,   120,   120,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   122,   122,
-     122,   122,   122,   122,   122,   122,   123,   123,   124,   124,
-     124,   124,   124,   125,   125,   125,   125,   126,   126,   127,
-     127,   127,   128,   128,   129,   129,   129,   129,   130,   130,
-     131,   131,   131,   131,   132,   132,   133,   134,   134,   135,
-     135,   136,   136,   137,   137,   138,   138,   139,   139,   140,
-     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
-     140,   140,   141,   142,   142,   143,   143,   144,   144,   144,
-     144,   144,   144,   144,   144,   144,   144,   144,   145,   145,
-     145,   145,   146,   146,   147,   147,   147,   147,   148,   148,
-     148,   148,   148,   149,   149,   149,   149,   149,   150,   151,
-     151,   151,   151,   151,   151,   151,   151,   151,   151,   152,
-     152,   152,   152,   152,   153,   153,   154,   154,   155,   155,
-     155,   155,   155,   156,   156,   156,   157,   157,   157,   158,
-     158,   158,   158,   158,   159,   159,   160,   160,   161,   161,
-     161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
-     161,   161,   161,   161,   161,   161,   161,   162,   162,   162,
+     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
+     115,   115,   115,   115,   115,   115,   115,   115,   115,   116,
+     116,   116,   116,   116,   116,   116,   116,   116,   116,   116,
+     116,   116,   116,   116,   116,   116,   116,   116,   117,   117,
+     117,   118,   118,   119,   119,   120,   120,   120,   120,   120,
+     120,   121,   121,   121,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   123,   123,
+     123,   123,   123,   123,   123,   123,   124,   124,   125,   125,
+     125,   125,   125,   126,   126,   126,   126,   127,   127,   128,
+     128,   128,   129,   129,   130,   130,   130,   130,   131,   131,
+     132,   132,   132,   132,   133,   133,   134,   135,   135,   136,
+     136,   137,   137,   138,   138,   139,   139,   140,   140,   141,
+     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
+     141,   141,   142,   143,   143,   144,   144,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   146,   146,
+     146,   146,   147,   147,   148,   148,   148,   148,   149,   149,
+     149,   149,   149,   150,   150,   150,   150,   150,   151,   152,
+     152,   152,   152,   152,   152,   152,   152,   152,   152,   153,
+     153,   153,   153,   153,   153,   154,   154,   155,   155,   156,
+     156,   156,   156,   156,   157,   157,   157,   158,   158,   158,
+     159,   159,   159,   159,   159,   160,   160,   161,   161,   162,
      162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   163,   163,   163,   163,
+     162,   162,   162,   162,   162,   162,   162,   162,   163,   163,
      163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
-     163,   163,   163,   163,   164,   164,   165,   165,   166,   166
+     163,   163,   163,   163,   163,   163,   163,   164,   164,   164,
+     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
+     164,   164,   164,   164,   164,   165,   165,   166,   166,   167,
+     167
 };
 
 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
@@ -2013,15 +2012,16 @@ static const yytype_int8 yyr2[] =
        1,     1,     2,     2,     1,     2,     4,     6,     2,     4,
        4,     1,     1,     1,     1,     5,     2,     2,     2,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     6,
-       6,     6,     6,     6,     1,     1,     2,     4,     1,     2,
-       5,     2,     2,     3,     3,     3,     1,     3,     3,     3,
-       3,     3,     3,     3,     2,     2,     1,     1,     1,     1,
+       6,     6,     6,     6,     4,     1,     1,     2,     4,     1,
+       2,     5,     2,     2,     3,     3,     3,     1,     3,     3,
+       3,     3,     3,     3,     3,     2,     2,     1,     1,     1,
+       1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     1,     1,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     1,     1,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     1,     1,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     4,     4,     0,     1,     1,     3
+       3,     3,     3,     3,     3,     4,     4,     0,     1,     1,
+       3
 };
 
 
@@ -3925,464 +3925,470 @@ yyreduce:
 #line 3926 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 246: /* writablethe: tTHE ID  */
-#line 726 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new TheNode((yyvsp[0].s)); }
+  case 244: /* thenumberof: tTHE tNUMBER tOF tMENUS  */
+#line 722 "engines/director/lingo/lingo-gr.y"
+                                                                        { (yyval.node) = new TheNumberOfNode(kNumberOfMenus, nullptr); }
 #line 3932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 247: /* writablethe: tTHE ID tOF writabletheobj  */
+  case 247: /* writablethe: tTHE ID  */
 #line 727 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new TheNode((yyvsp[0].s)); }
 #line 3938 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 249: /* writabletheobj: tMENU expr_noeq  */
-#line 731 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new MenuNode((yyvsp[0].node)); }
+  case 248: /* writablethe: tTHE ID tOF writabletheobj  */
+#line 728 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
 #line 3944 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 250: /* writabletheobj: tMENUITEM expr_noeq tOF tMENU expr_noeq  */
+  case 250: /* writabletheobj: tMENU expr_noeq  */
 #line 732 "engines/director/lingo/lingo-gr.y"
-                                                                { (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new MenuNode((yyvsp[0].node)); }
 #line 3950 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 251: /* writabletheobj: tSOUND expr_noeq  */
+  case 251: /* writabletheobj: tMENUITEM expr_noeq tOF tMENU expr_noeq  */
 #line 733 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new SoundNode((yyvsp[0].node)); }
+                                                                { (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
 #line 3956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 252: /* writabletheobj: tSPRITE expr_noeq  */
+  case 252: /* writabletheobj: tSOUND expr_noeq  */
 #line 734 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new SpriteNode((yyvsp[0].node)); }
+                                                        { (yyval.node) = new SoundNode((yyvsp[0].node)); }
 #line 3962 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 253: /* list: '[' exprlist ']'  */
-#line 737 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new ListNode((yyvsp[-1].nodelist)); }
+  case 253: /* writabletheobj: tSPRITE expr_noeq  */
+#line 735 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.node) = new SpriteNode((yyvsp[0].node)); }
 #line 3968 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 254: /* list: '[' ':' ']'  */
+  case 254: /* list: '[' exprlist ']'  */
 #line 738 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new PropListNode(new NodeList); }
+                                        { (yyval.node) = new ListNode((yyvsp[-1].nodelist)); }
 #line 3974 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 255: /* list: '[' proplist ']'  */
+  case 255: /* list: '[' ':' ']'  */
 #line 739 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new PropListNode((yyvsp[-1].nodelist)); }
+                                                { (yyval.node) = new PropListNode(new NodeList); }
 #line 3980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 256: /* proplist: proppair  */
-#line 745 "engines/director/lingo/lingo-gr.y"
+  case 256: /* list: '[' proplist ']'  */
+#line 740 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.node) = new PropListNode((yyvsp[-1].nodelist)); }
+#line 3986 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 257: /* proplist: proppair  */
+#line 746 "engines/director/lingo/lingo-gr.y"
                                                         {
-		NodeList *list = new NodeList; 
+		NodeList *list = new NodeList;
 		list->push_back((yyvsp[0].node));
 		(yyval.nodelist) = list; }
-#line 3989 "engines/director/lingo/lingo-gr.cpp"
+#line 3995 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 257: /* proplist: proplist ',' proppair  */
-#line 749 "engines/director/lingo/lingo-gr.y"
+  case 258: /* proplist: proplist ',' proppair  */
+#line 750 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 3997 "engines/director/lingo/lingo-gr.cpp"
+#line 4003 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 258: /* proplist: proplist ',' expr  */
-#line 752 "engines/director/lingo/lingo-gr.y"
+  case 259: /* proplist: proplist ',' expr  */
+#line 753 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4005 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 259: /* proppair: tSYMBOL ':' expr  */
-#line 757 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
 #line 4011 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 260: /* proppair: ID ':' expr  */
+  case 260: /* proppair: tSYMBOL ':' expr  */
 #line 758 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
+                                        { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
 #line 4017 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 261: /* proppair: tSTRING ':' expr  */
+  case 261: /* proppair: ID ':' expr  */
 #line 759 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new PropPairNode(new StringNode((yyvsp[-2].s)), (yyvsp[0].node)); }
+                                                { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
 #line 4023 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 262: /* proppair: tINT ':' expr  */
+  case 262: /* proppair: tSTRING ':' expr  */
 #line 760 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.node) = new PropPairNode(new IntNode((yyvsp[-2].i)), (yyvsp[0].node)); }
+                                                { (yyval.node) = new PropPairNode(new StringNode((yyvsp[-2].s)), (yyvsp[0].node)); }
 #line 4029 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 263: /* proppair: tFLOAT ':' expr  */
+  case 263: /* proppair: tINT ':' expr  */
 #line 761 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.node) = new PropPairNode(new FloatNode((yyvsp[-2].f)), (yyvsp[0].node)); }
+                                    { (yyval.node) = new PropPairNode(new IntNode((yyvsp[-2].i)), (yyvsp[0].node)); }
 #line 4035 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 264: /* unarymath: '+' simpleexpr  */
-#line 764 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = (yyvsp[0].node); }
+  case 264: /* proppair: tFLOAT ':' expr  */
+#line 762 "engines/director/lingo/lingo-gr.y"
+                                    { (yyval.node) = new PropPairNode(new FloatNode((yyvsp[-2].f)), (yyvsp[0].node)); }
 #line 4041 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 265: /* unarymath: '-' simpleexpr  */
+  case 265: /* unarymath: '+' simpleexpr  */
 #line 765 "engines/director/lingo/lingo-gr.y"
-                                                                { (yyval.node) = new UnaryOpNode(LC::c_negate, (yyvsp[0].node)); }
+                                                { (yyval.node) = (yyvsp[0].node); }
 #line 4047 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 270: /* expr: expr '+' expr  */
-#line 775 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
+  case 266: /* unarymath: '-' simpleexpr  */
+#line 766 "engines/director/lingo/lingo-gr.y"
+                                                                { (yyval.node) = new UnaryOpNode(LC::c_negate, (yyvsp[0].node)); }
 #line 4053 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 271: /* expr: expr '-' expr  */
+  case 271: /* expr: expr '+' expr  */
 #line 776 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4059 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 272: /* expr: expr '*' expr  */
+  case 272: /* expr: expr '-' expr  */
 #line 777 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4065 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 273: /* expr: expr '/' expr  */
+  case 273: /* expr: expr '*' expr  */
 #line 778 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4071 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 274: /* expr: expr tMOD expr  */
+  case 274: /* expr: expr '/' expr  */
 #line 779 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4077 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 275: /* expr: expr '>' expr  */
+  case 275: /* expr: expr tMOD expr  */
 #line 780 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4083 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 276: /* expr: expr '<' expr  */
+  case 276: /* expr: expr '>' expr  */
 #line 781 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4089 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 277: /* expr: expr tEQ expr  */
+  case 277: /* expr: expr '<' expr  */
 #line 782 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4095 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 278: /* expr: expr tNEQ expr  */
+  case 278: /* expr: expr tEQ expr  */
 #line 783 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 279: /* expr: expr tGE expr  */
+  case 279: /* expr: expr tNEQ expr  */
 #line 784 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4107 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 280: /* expr: expr tLE expr  */
+  case 280: /* expr: expr tGE expr  */
 #line 785 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4113 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 281: /* expr: expr tAND expr  */
+  case 281: /* expr: expr tLE expr  */
 #line 786 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4119 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 282: /* expr: expr tOR expr  */
+  case 282: /* expr: expr tAND expr  */
 #line 787 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4125 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 283: /* expr: expr '&' expr  */
+  case 283: /* expr: expr tOR expr  */
 #line 788 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4131 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 284: /* expr: expr tCONCAT expr  */
+  case 284: /* expr: expr '&' expr  */
 #line 789 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 285: /* expr: expr tCONTAINS expr  */
+  case 285: /* expr: expr tCONCAT expr  */
 #line 790 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4143 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 286: /* expr: expr tSTARTS expr  */
+  case 286: /* expr: expr tCONTAINS expr  */
 #line 791 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                        { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4149 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 289: /* expr_nounarymath: expr_nounarymath '+' expr  */
-#line 800 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
+  case 287: /* expr: expr tSTARTS expr  */
+#line 792 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4155 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 290: /* expr_nounarymath: expr_nounarymath '-' expr  */
+  case 290: /* expr_nounarymath: expr_nounarymath '+' expr  */
 #line 801 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4161 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 291: /* expr_nounarymath: expr_nounarymath '*' expr  */
+  case 291: /* expr_nounarymath: expr_nounarymath '-' expr  */
 #line 802 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4167 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 292: /* expr_nounarymath: expr_nounarymath '/' expr  */
+  case 292: /* expr_nounarymath: expr_nounarymath '*' expr  */
 #line 803 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4173 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 293: /* expr_nounarymath: expr_nounarymath tMOD expr  */
+  case 293: /* expr_nounarymath: expr_nounarymath '/' expr  */
 #line 804 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4179 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 294: /* expr_nounarymath: expr_nounarymath '>' expr  */
+  case 294: /* expr_nounarymath: expr_nounarymath tMOD expr  */
 #line 805 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4185 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 295: /* expr_nounarymath: expr_nounarymath '<' expr  */
+  case 295: /* expr_nounarymath: expr_nounarymath '>' expr  */
 #line 806 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4191 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 296: /* expr_nounarymath: expr_nounarymath tEQ expr  */
+  case 296: /* expr_nounarymath: expr_nounarymath '<' expr  */
 #line 807 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 297: /* expr_nounarymath: expr_nounarymath tNEQ expr  */
+  case 297: /* expr_nounarymath: expr_nounarymath tEQ expr  */
 #line 808 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 298: /* expr_nounarymath: expr_nounarymath tGE expr  */
+  case 298: /* expr_nounarymath: expr_nounarymath tNEQ expr  */
 #line 809 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4209 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 299: /* expr_nounarymath: expr_nounarymath tLE expr  */
+  case 299: /* expr_nounarymath: expr_nounarymath tGE expr  */
 #line 810 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 300: /* expr_nounarymath: expr_nounarymath tAND expr  */
+  case 300: /* expr_nounarymath: expr_nounarymath tLE expr  */
 #line 811 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4221 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 301: /* expr_nounarymath: expr_nounarymath tOR expr  */
+  case 301: /* expr_nounarymath: expr_nounarymath tAND expr  */
 #line 812 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 302: /* expr_nounarymath: expr_nounarymath '&' expr  */
+  case 302: /* expr_nounarymath: expr_nounarymath tOR expr  */
 #line 813 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4233 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 303: /* expr_nounarymath: expr_nounarymath tCONCAT expr  */
+  case 303: /* expr_nounarymath: expr_nounarymath '&' expr  */
 #line 814 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4239 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 304: /* expr_nounarymath: expr_nounarymath tCONTAINS expr  */
+  case 304: /* expr_nounarymath: expr_nounarymath tCONCAT expr  */
 #line 815 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4245 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 305: /* expr_nounarymath: expr_nounarymath tSTARTS expr  */
+  case 305: /* expr_nounarymath: expr_nounarymath tCONTAINS expr  */
 #line 816 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4251 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 308: /* expr_noeq: expr_noeq '+' expr_noeq  */
-#line 821 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
+  case 306: /* expr_nounarymath: expr_nounarymath tSTARTS expr  */
+#line 817 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4257 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 309: /* expr_noeq: expr_noeq '-' expr_noeq  */
+  case 309: /* expr_noeq: expr_noeq '+' expr_noeq  */
 #line 822 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4263 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 310: /* expr_noeq: expr_noeq '*' expr_noeq  */
+  case 310: /* expr_noeq: expr_noeq '-' expr_noeq  */
 #line 823 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4269 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 311: /* expr_noeq: expr_noeq '/' expr_noeq  */
+  case 311: /* expr_noeq: expr_noeq '*' expr_noeq  */
 #line 824 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4275 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 312: /* expr_noeq: expr_noeq tMOD expr_noeq  */
+  case 312: /* expr_noeq: expr_noeq '/' expr_noeq  */
 #line 825 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4281 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 313: /* expr_noeq: expr_noeq '>' expr_noeq  */
+  case 313: /* expr_noeq: expr_noeq tMOD expr_noeq  */
 #line 826 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4287 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 314: /* expr_noeq: expr_noeq '<' expr_noeq  */
+  case 314: /* expr_noeq: expr_noeq '>' expr_noeq  */
 #line 827 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4293 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 315: /* expr_noeq: expr_noeq tNEQ expr_noeq  */
+  case 315: /* expr_noeq: expr_noeq '<' expr_noeq  */
 #line 828 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4299 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 316: /* expr_noeq: expr_noeq tGE expr_noeq  */
+  case 316: /* expr_noeq: expr_noeq tNEQ expr_noeq  */
 #line 829 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4305 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 317: /* expr_noeq: expr_noeq tLE expr_noeq  */
+  case 317: /* expr_noeq: expr_noeq tGE expr_noeq  */
 #line 830 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4311 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 318: /* expr_noeq: expr_noeq tAND expr_noeq  */
+  case 318: /* expr_noeq: expr_noeq tLE expr_noeq  */
 #line 831 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4317 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 319: /* expr_noeq: expr_noeq tOR expr_noeq  */
+  case 319: /* expr_noeq: expr_noeq tAND expr_noeq  */
 #line 832 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4323 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 320: /* expr_noeq: expr_noeq '&' expr_noeq  */
+  case 320: /* expr_noeq: expr_noeq tOR expr_noeq  */
 #line 833 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4329 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 321: /* expr_noeq: expr_noeq tCONCAT expr_noeq  */
+  case 321: /* expr_noeq: expr_noeq '&' expr_noeq  */
 #line 834 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4335 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 322: /* expr_noeq: expr_noeq tCONTAINS expr_noeq  */
+  case 322: /* expr_noeq: expr_noeq tCONCAT expr_noeq  */
 #line 835 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4341 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 323: /* expr_noeq: expr_noeq tSTARTS expr_noeq  */
+  case 323: /* expr_noeq: expr_noeq tCONTAINS expr_noeq  */
 #line 836 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
+                                                { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4347 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 324: /* sprite: tSPRITE expr tINTERSECTS simpleexpr  */
-#line 839 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.node) = new IntersectsNode((yyvsp[-2].node), (yyvsp[0].node)); }
+  case 324: /* expr_noeq: expr_noeq tSTARTS expr_noeq  */
+#line 837 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4353 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 325: /* sprite: tSPRITE expr tWITHIN simpleexpr  */
+  case 325: /* sprite: tSPRITE expr tINTERSECTS simpleexpr  */
 #line 840 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.node) = new WithinNode((yyvsp[-2].node), (yyvsp[0].node)); }
+                                                { (yyval.node) = new IntersectsNode((yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4359 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 326: /* exprlist: %empty  */
-#line 843 "engines/director/lingo/lingo-gr.y"
-                                                                { (yyval.nodelist) = new NodeList; }
+  case 326: /* sprite: tSPRITE expr tWITHIN simpleexpr  */
+#line 841 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.node) = new WithinNode((yyvsp[-2].node), (yyvsp[0].node)); }
 #line 4365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 328: /* nonemptyexprlist: expr  */
-#line 847 "engines/director/lingo/lingo-gr.y"
+  case 327: /* exprlist: %empty  */
+#line 844 "engines/director/lingo/lingo-gr.y"
+                                                                { (yyval.nodelist) = new NodeList; }
+#line 4371 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 329: /* nonemptyexprlist: expr  */
+#line 848 "engines/director/lingo/lingo-gr.y"
                                                         {
-		NodeList *list = new NodeList; 
+		NodeList *list = new NodeList;
 		list->push_back((yyvsp[0].node));
 		(yyval.nodelist) = list; }
-#line 4374 "engines/director/lingo/lingo-gr.cpp"
+#line 4380 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 329: /* nonemptyexprlist: nonemptyexprlist ',' expr  */
-#line 851 "engines/director/lingo/lingo-gr.y"
+  case 330: /* nonemptyexprlist: nonemptyexprlist ',' expr  */
+#line 852 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4382 "engines/director/lingo/lingo-gr.cpp"
+#line 4388 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 4386 "engines/director/lingo/lingo-gr.cpp"
+#line 4392 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -4580,7 +4586,7 @@ yyreturnlab:
   return yyresult;
 }
 
-#line 856 "engines/director/lingo/lingo-gr.y"
+#line 857 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 764624c49a2..4ea86b5abf3 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -122,23 +122,24 @@ extern int yydebug;
     tDATE = 323,                   /* tDATE  */
     tLAST = 324,                   /* tLAST  */
     tMENU = 325,                   /* tMENU  */
-    tMENUITEM = 326,               /* tMENUITEM  */
-    tMENUITEMS = 327,              /* tMENUITEMS  */
-    tNUMBER = 328,                 /* tNUMBER  */
-    tTHE = 329,                    /* tTHE  */
-    tTIME = 330,                   /* tTIME  */
-    tSOUND = 331,                  /* tSOUND  */
-    tSPRITE = 332,                 /* tSPRITE  */
-    tINTERSECTS = 333,             /* tINTERSECTS  */
-    tWITHIN = 334,                 /* tWITHIN  */
-    tTELL = 335,                   /* tTELL  */
-    tPROPERTY = 336,               /* tPROPERTY  */
-    tON = 337,                     /* tON  */
-    tMETHOD = 338,                 /* tMETHOD  */
-    tENDIF = 339,                  /* tENDIF  */
-    tENDREPEAT = 340,              /* tENDREPEAT  */
-    tENDTELL = 341,                /* tENDTELL  */
-    tASSERTERROR = 342             /* tASSERTERROR  */
+    tMENUS = 326,                  /* tMENUS  */
+    tMENUITEM = 327,               /* tMENUITEM  */
+    tMENUITEMS = 328,              /* tMENUITEMS  */
+    tNUMBER = 329,                 /* tNUMBER  */
+    tTHE = 330,                    /* tTHE  */
+    tTIME = 331,                   /* tTIME  */
+    tSOUND = 332,                  /* tSOUND  */
+    tSPRITE = 333,                 /* tSPRITE  */
+    tINTERSECTS = 334,             /* tINTERSECTS  */
+    tWITHIN = 335,                 /* tWITHIN  */
+    tTELL = 336,                   /* tTELL  */
+    tPROPERTY = 337,               /* tPROPERTY  */
+    tON = 338,                     /* tON  */
+    tMETHOD = 339,                 /* tMETHOD  */
+    tENDIF = 340,                  /* tENDIF  */
+    tENDREPEAT = 341,              /* tENDREPEAT  */
+    tENDTELL = 342,                /* tENDTELL  */
+    tASSERTERROR = 343             /* tASSERTERROR  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -162,7 +163,7 @@ union YYSTYPE
 	Director::Node *node;
 	Director::NodeList *nodelist;
 
-#line 166 "engines/director/lingo/lingo-gr.h"
+#line 167 "engines/director/lingo/lingo-gr.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -174,7 +175,7 @@ typedef union YYSTYPE YYSTYPE;
 extern YYSTYPE yylval;
 
 
-//int yyparse (void);
+int yyparse (void);
 
 
 #endif /* !YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_H_INCLUDED  */
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 0306bd0ea63..460d961cb1b 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -137,7 +137,7 @@ static void checkEnd(Common::String *token, Common::String *expect, bool require
 %token tAFTER tBEFORE tCONCAT tCONTAINS tSTARTS
 %token tCHAR tCHARS tITEM tITEMS tLINE tLINES tWORD tWORDS
 %token tABBREVIATED tABBREV tABBR tLONG tSHORT
-%token tDATE tLAST tMENU tMENUITEM tMENUITEMS tNUMBER tTHE tTIME
+%token tDATE tLAST tMENU tMENUS tMENUITEM tMENUITEMS tNUMBER tTHE tTIME
 %token tSOUND tSPRITE tINTERSECTS tWITHIN tTELL tPROPERTY
 %token tON tMETHOD tENDIF tENDREPEAT tENDTELL
 %token tASSERTERROR
@@ -719,6 +719,7 @@ thenumberof:
 	| tTHE tNUMBER tOF tITEMS inof simpleexpr	{ $$ = new TheNumberOfNode(kNumberOfItems, $simpleexpr); }
 	| tTHE tNUMBER tOF tLINES inof simpleexpr	{ $$ = new TheNumberOfNode(kNumberOfLines, $simpleexpr); }
 	| tTHE tNUMBER tOF tMENUITEMS inof menu		{ $$ = new TheNumberOfNode(kNumberOfMenuItems, $menu); }
+	| tTHE tNUMBER tOF tMENUS					{ $$ = new TheNumberOfNode(kNumberOfMenus, nullptr); }
 	;
 
 inof: tIN | tOF ;
@@ -743,7 +744,7 @@ list: '[' exprlist ']'			{ $$ = new ListNode($exprlist); }
 // keyless expressions, which will be compiled as equivalent to the
 // proppair <index>: <expr>.
 proplist: proppair[item]				{
-		NodeList *list = new NodeList; 
+		NodeList *list = new NodeList;
 		list->push_back($item);
 		$$ = list; }
 	| proplist[prev] ',' proppair[item]	{
@@ -845,7 +846,7 @@ exprlist: /* empty */						{ $$ = new NodeList; }
 	;
 
 nonemptyexprlist: expr[item]				{
-		NodeList *list = new NodeList; 
+		NodeList *list = new NodeList;
 		list->push_back($item);
 		$$ = list; }
 	| nonemptyexprlist[prev] ',' expr[item]	{
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 5f9626fa3d7..b774e30ef79 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1,6 +1,6 @@
-#line 2 "engines/director/lingo/lingo-lex.cpp"
+#line 1 "engines/director/lingo/lingo-lex.cpp"
 
-#line 4 "engines/director/lingo/lingo-lex.cpp"
+#line 3 "engines/director/lingo/lingo-lex.cpp"
 
 #define  YY_INT_ALIGNED short int
 
@@ -355,8 +355,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 86
-#define YY_END_OF_BUFFER 87
+#define YY_NUM_RULES 87
+#define YY_END_OF_BUFFER 88
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -364,47 +364,47 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[352] =
+static const flex_int16_t yy_accept[353] =
     {   0,
-        0,    0,   87,   85,    1,   83,   83,   85,   85,   82,
-       82,   81,   82,   78,   82,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   85,    1,   79,   85,    1,   83,
-        0,    0,   84,    2,   77,   80,   81,   76,   74,   75,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   25,
-       29,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   46,   47,   79,   49,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   66,   79,
-
-       79,   79,    1,    0,    0,   79,    2,   80,   79,   79,
-        7,   79,   79,   79,   79,   79,   79,   79,   79,   17,
-       79,   79,   79,   79,   23,    0,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   41,   79,   79,   44,
-       79,   79,   79,   79,   79,   53,   79,   79,   79,   57,
-       79,   79,   79,   79,   79,   63,   79,   79,   79,   79,
-       79,   79,    0,   79,    5,   79,   79,    9,   10,   79,
-       13,   79,   15,   16,    0,    0,   18,   79,   79,   79,
-        0,   79,   79,   79,   28,   30,   32,   33,   35,   79,
-       37,   79,   79,   43,   79,   48,   50,   79,   79,   79,
-
-       79,   79,   79,   79,   79,   79,   62,   64,   65,   79,
-       79,   79,   70,   72,    0,   79,   79,    6,   79,   11,
-       79,   79,   17,   20,   21,   79,   23,   79,   79,   79,
-       31,   34,   36,   79,   79,   42,   79,   79,   79,   79,
-       79,   79,   58,   59,   79,   79,    0,    0,   68,   79,
-       79,   73,    0,   79,    4,    8,   79,   14,   17,   22,
-       24,   79,   79,   79,   40,   45,   79,   79,   54,   55,
-       79,   60,   61,    0,    0,    0,   69,   71,    0,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,    0,    0,
-        0,    0,   19,   79,   12,   26,   79,   38,   51,   52,
-
-       79,    0,    0,    0,   19,   79,   79,   39,   79,    0,
-        0,    0,    0,   79,   27,   79,    0,    0,    0,    0,
-        3,   79,    0,    0,    0,    0,    0,    0,   79,    0,
-        0,    0,    0,    0,   79,    0,    0,   79,    0,    0,
-       79,    0,   79,   67,    0,   79,   67,   67,   67,   56,
-        0
+        0,    0,   88,   86,    1,   84,   84,   86,   86,   83,
+       83,   82,   83,   79,   83,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   86,    1,   80,   86,    1,   84,
+        0,    0,   85,    2,   78,   81,   82,   77,   75,   76,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   25,
+       29,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   47,   48,   80,   50,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   67,   80,
+
+       80,   80,    1,    0,    0,   80,    2,   81,   80,   80,
+        7,   80,   80,   80,   80,   80,   80,   80,   80,   17,
+       80,   80,   80,   80,   23,    0,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   42,   80,   80,   45,
+       80,   80,   80,   80,   80,   54,   80,   80,   80,   58,
+       80,   80,   80,   80,   80,   64,   80,   80,   80,   80,
+       80,   80,    0,   80,    5,   80,   80,    9,   10,   80,
+       13,   80,   15,   16,    0,    0,   18,   80,   80,   80,
+        0,   80,   80,   80,   28,   30,   32,   33,   35,   80,
+       37,   80,   80,   44,   80,   49,   51,   80,   80,   80,
+
+       80,   80,   80,   80,   80,   80,   63,   65,   66,   80,
+       80,   80,   71,   73,    0,   80,   80,    6,   80,   11,
+       80,   80,   17,   20,   21,   80,   23,   80,   80,   80,
+       31,   34,   36,   80,   38,   80,   43,   80,   80,   80,
+       80,   80,   80,   59,   60,   80,   80,    0,    0,   69,
+       80,   80,   74,    0,   80,    4,    8,   80,   14,   17,
+       22,   24,   80,   80,   80,   41,   46,   80,   80,   55,
+       56,   80,   61,   62,    0,    0,    0,   70,   72,    0,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,    0,
+        0,    0,    0,   19,   80,   12,   26,   80,   39,   52,
+
+       53,   80,    0,    0,    0,   19,   80,   80,   40,   80,
+        0,    0,    0,    0,   80,   27,   80,    0,    0,    0,
+        0,    3,   80,    0,    0,    0,    0,    0,    0,   80,
+        0,    0,    0,    0,    0,   80,    0,    0,   80,    0,
+        0,   80,    0,   80,   68,    0,   80,   68,   68,   68,
+       57,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -433,13 +433,13 @@ static const YY_CHAR yy_ec[256] =
 
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,   64,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1
     } ;
 
-static const YY_CHAR yy_meta[64] =
+static const YY_CHAR yy_meta[65] =
     {   0,
         1,    2,    3,    3,    2,    1,    1,    1,    1,    4,
         4,    1,    1,    1,    5,    5,    5,    5,    5,    5,
@@ -447,96 +447,96 @@ static const YY_CHAR yy_meta[64] =
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    1,    2
+        5,    1,    2,    2
     } ;
 
-static const flex_int16_t yy_base[359] =
+static const flex_int16_t yy_base[360] =
     {   0,
-        0,   62,  665,  796,   66,  796,  796,  572,    0,  796,
-      563,   55,   59,  796,  544,   58,   56,   61,   62,   59,
-       57,   63,   56,   98,    0,  101,  108,  109,  137,  138,
-       74,  179,  181,  133,  452,  130,  182,  362,  212,  796,
-      349,  357,  796,    0,  796,  294,   84,  796,  796,  796,
-        0,   81,   89,  102,  119,  104,  131,  143,  143,  157,
-      148,  179,  140,  155,  199,  204,  194,  184,  200,    0,
-      205,  211,  207,  212,  213,  227,  220,  232,  218,  223,
-      230,    0,    0,  226,    0,  243,  254,  232,  236,  250,
-      237,  243,  243,  254,  271,  265,  268,  265,    0,  275,
-
-      268,  271,  324,  284,  241,  292,    0,  248,  281,  294,
-        0,  287,  284,  289,  297,  302,  312,  306,  313,  336,
-      303,  316,  319,  331,  346,  190,  326,  319,  331,  327,
-      325,  342,  341,  335,  333,  342,    0,  347,  339,    0,
-      360,  350,  342,  347,  354,    0,  372,  369,  369,    0,
-      366,  370,  370,  373,  380,  380,  391,  384,  387,  396,
-      396,  404,  406,  392,  407,  397,  399,    0,  400,  418,
-        0,  404,    0,    0,  438,  189,    0,  421,  422,  429,
-      420,  419,  430,  423,    0,  424,    0,  426,    0,  430,
-      438,  435,  443,    0,  447,    0,    0,  444,  451,  456,
-
-      443,  447,  443,  460,  447,  450,    0,    0,    0,  487,
-      465,  459,  470,  466,  467,  475,  470,    0,  488,    0,
-      486,  491,    0,    0,    0,  486,  796,  494,  487,  484,
-        0,    0,    0,  485,  501,    0,  491,  495,  494,  493,
-      496,  495,    0,    0,  501,  500,  549,  115,    0,  500,
-      512,    0,  513,  515,  533,    0,  530,    0,    0,    0,
-        0,  543,  542,  543,    0,    0,  530,  533,    0,    0,
-      540,    0,    0,  549,  541,  548,    0,    0,  542,  537,
-      562,  547,  564,  574,  561,  562,  562,  588,  568,  574,
-      582,  572,    0,  580,    0,    0,  581,  584,    0,    0,
-
-      586,  586,  587,  602,  796,  603,  592,    0,  593,  597,
-      600,  615,  609,  617,    0,  621,  608,  649,  632,  618,
-        0,  624,  628,  655,  113,  633,  633,  635,  636,  668,
-      649,  640,  675,  679,  653,  663,  659,  659,  665,  692,
-      667,  698,  672,  700,  111,  673,    0,  712,   79,    0,
-      796,  775,   79,  777,  779,  783,  785,  790
+        0,   63,  272,  836,   67,  836,  836,  258,    0,  836,
+      250,   56,   60,  836,  242,   59,   57,   62,   63,   60,
+       58,   64,   57,  101,    0,  109,  120,  117,  134,  142,
+       75,  183,  175,  185,  161,  238,  215,  157,  245,  836,
+      128,  183,  836,    0,  836,  173,   85,  836,  836,  836,
+        0,   82,   84,  101,  103,  112,  127,  130,  137,  154,
+      147,  154,  135,  132,  152,  186,  163,  215,  184,    0,
+      212,  209,  179,  223,  225,  239,  232,  252,  224,  230,
+      239,    0,    0,  238,    0,  256,  271,  240,  245,  272,
+      259,  264,  263,  268,  289,  281,  292,  286,    0,  298,
+
+      291,  294,  329,  312,  120,  320,    0,  164,  308,  321,
+        0,  314,  311,  315,  319,  331,  334,  327,  337,  352,
+      325,  333,  333,  347,  363,   88,  347,  339,  357,  352,
+      351,  369,  368,  354,  357,  375,    0,  375,  368,    0,
+      383,  377,  368,  375,  381,    0,  398,  395,  393,    0,
+      394,  402,  408,  404,  410,  409,  413,  410,  413,  422,
+      422,  427,  429,  416,  428,  419,  420,    0,  420,  439,
+        0,  424,    0,    0,  461,   79,    0,  447,  448,  461,
+      450,  448,  462,  451,    0,  451,    0,  452,    0,  456,
+      463,  459,  471,    0,  473,    0,    0,  470,  477,  482,
+
+      469,  476,  476,  494,  482,  486,    0,    0,    0,  525,
+      494,  494,  505,  499,  500,  505,  500,    0,  510,    0,
+      516,  521,    0,    0,    0,  517,  836,  522,  516,  513,
+        0,    0,    0,  514,    0,  530,    0,  519,  522,  524,
+      526,  527,  526,    0,    0,  543,  537,  591,   75,    0,
+      535,  547,    0,  547,  546,  556,    0,  553,    0,    0,
+        0,    0,  568,  568,  571,    0,    0,  563,  569,    0,
+        0,  578,    0,    0,  572,  577,  572,    0,    0,  576,
+      570,  595,  580,  594,  604,  590,  591,  588,  612,  595,
+      602,  611,  604,    0,  610,    0,    0,  611,  616,    0,
+
+        0,  618,  634,  625,  634,  836,  639,  628,    0,  630,
+      634,  634,  650,  643,  652,    0,  655,  642,  679,  670,
+      645,    0,  659,  664,  695,   71,  667,  669,  670,  673,
+      703,  685,  673,  709,  715,  691,  697,  690,  690,  695,
+      728,  693,  733,  696,  747,   66,  706,    0,  751,   63,
+        0,  836,  815,   80,  817,  819,  823,  825,  830
     } ;
 
-static const flex_int16_t yy_def[359] =
+static const flex_int16_t yy_def[360] =
     {   0,
-      351,    1,  351,  351,  351,  351,  351,  352,  353,  351,
-      351,  351,  351,  351,  351,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  351,  351,  354,  351,  351,  351,
-      351,  352,  351,  355,  351,  351,  351,  351,  351,  351,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  351,  351,  351,  354,  355,  351,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  351,  351,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  351,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  356,  351,  354,  354,  354,  354,
-      351,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  351,  354,  354,  354,  354,  354,
-      354,  354,  357,  354,  354,  354,  351,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  351,  351,  354,  354,
-      354,  354,  351,  354,  354,  354,  354,  354,  357,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  351,  351,  351,  354,  354,  351,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  351,  351,
-      351,  351,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  351,  351,  351,  351,  354,  354,  354,  354,  351,
-      351,  351,  351,  354,  354,  354,  351,  351,  351,  351,
-      354,  354,  351,  351,  351,  351,  351,  351,  354,  351,
-      351,  351,  351,  351,  354,  351,  351,  354,  351,  351,
-      354,  351,  354,  358,  351,  354,  358,  358,  358,  354,
-        0,  351,  351,  351,  351,  351,  351,  351
+      352,    1,  352,  352,  352,  352,  352,  353,  354,  352,
+      352,  352,  352,  352,  352,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  352,  352,  355,  352,  352,  352,
+      352,  353,  352,  356,  352,  352,  352,  352,  352,  352,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+
+      355,  355,  352,  352,  352,  355,  356,  352,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  352,  352,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  352,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  357,  352,  355,  355,  355,  355,
+      352,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  352,  355,  355,  355,  355,  355,
+      355,  355,  358,  355,  355,  355,  352,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  352,  352,  355,
+      355,  355,  355,  352,  355,  355,  355,  355,  355,  358,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  352,  352,  352,  355,  355,  352,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  352,
+      352,  352,  352,  355,  355,  355,  355,  355,  355,  355,
+
+      355,  355,  352,  352,  352,  352,  355,  355,  355,  355,
+      352,  352,  352,  352,  355,  355,  355,  352,  352,  352,
+      352,  355,  355,  352,  352,  352,  352,  352,  352,  355,
+      352,  352,  352,  352,  352,  355,  352,  352,  355,  352,
+      352,  355,  352,  355,  359,  352,  355,  359,  359,  359,
+      355,    0,  352,  352,  352,  352,  352,  352,  352
     } ;
 
-static const flex_int16_t yy_nxt[860] =
+static const flex_int16_t yy_nxt[901] =
     {   0,
         4,    5,    6,    7,    5,    8,    9,   10,   11,    4,
        12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
@@ -544,97 +544,102 @@ static const flex_int16_t yy_nxt[860] =
        31,   32,   33,   25,   25,   34,   25,   25,   16,   17,
        18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
        28,   29,   30,   31,   32,   33,   25,   25,   34,   25,
-       25,    4,   35,   36,   46,   47,   36,   39,   40,   40,
-       39,   48,   49,   52,   55,   56,   59,   53,   69,   65,
-       60,   37,   57,   44,   62,   54,   63,   66,   67,   58,
-       61,   68,   89,   46,   47,   64,  109,   52,   55,   56,
-
-       59,   53,   69,   65,   60,   37,   57,   62,   54,   63,
-       66,   67,   58,   61,   68,   73,   89,   70,   64,  111,
-      109,  110,   76,   74,   38,   71,   77,   79,   41,   75,
-       72,  103,   40,   40,  103,  113,   78,   80,  112,   73,
-      348,   70,   81,  111,  110,  114,   76,   74,   71,  104,
-       77,   79,   75,   72,  100,  101,   82,  120,  113,   78,
-       80,  102,  112,   86,   83,   81,   84,   85,   87,  114,
-      115,   88,  344,  104,  324,  116,  247,  121,  100,  101,
-       82,  120,  117,  118,  102,  125,   86,   83,  125,   84,
-       85,   87,  105,  115,   88,   90,  106,   91,  116,   96,
-
-       92,  121,   97,   98,   65,  117,  118,   93,   94,   99,
-      119,   95,   66,   39,   40,   40,   39,  122,  123,   90,
-      106,   91,  124,   96,   92,  127,   97,   98,   65,  130,
-       93,   94,   99,  119,   95,   66,  128,  129,  131,  132,
-      133,  122,  123,  134,  142,  124,  126,  135,  127,  137,
-      175,  125,  136,  130,  139,  140,  141,  143,  108,  128,
-      129,  131,  132,  133,  146,  147,  138,  134,  142,  150,
-      135,  151,  144,  137,   41,  136,  152,  139,  140,  141,
-      148,  143,  145,  149,  153,  154,  156,  146,  147,  138,
-      155,  157,  150,  158,  151,  160,  144,  159,  163,  152,
-
-      161,  162,  103,  148,  108,  145,  149,  153,  164,  154,
-      156,  165,  166,  155,  157,  167,  168,  158,  160,  169,
-      171,  159,  163,  161,  162,  103,   40,   40,  103,  170,
-      172,  174,  164,  173,  165,  177,  166,  175,  167,  168,
-      175,  178,  169,  104,  171,  179,  180,  125,  182,  184,
-      125,  183,  170,  186,  172,  174,  173,  187,  177,  185,
-      188,  189,   43,  192,  178,  190,  191,  104,  179,  193,
-      180,  194,  182,  184,  183,  195,  186,  196,  181,  197,
-      187,  198,  185,  199,  188,  189,  105,  192,  190,  191,
-      200,  201,  205,  193,  194,  202,  203,  204,  176,  195,
-
-      196,  181,  197,  206,  198,  207,  199,  208,  126,  209,
-       39,  210,  211,  212,  200,  201,  205,  213,  202,  203,
-      204,  214,  215,  103,  216,  217,  206,  218,  207,  219,
-      208,  220,  221,  209,  210,  211,  222,  212,  224,  175,
-      225,  213,  175,  226,  229,  214,  215,  216,  227,  217,
-      218,  228,  219,  230,  220,  231,  221,  232,  233,  222,
-      234,  236,  224,  235,  225,  237,  238,  226,  229,  239,
-      240,  227,  241,  242,  228,  243,  230,  244,  231,  245,
-      232,  233,  246,  249,  234,  236,  235,  250,  247,  237,
-      238,  247,  251,  239,  240,  241,  242,  252,  243,  253,
-
-      176,  244,  245,  254,  255,  246,  256,  249,  257,  258,
-      250,  260,  261,   39,  262,  263,  251,  264,  265,  272,
-      252,  266,  253,  267,  268,  269,  254,  255,  270,  271,
-      256,  273,  257,  258,  260,  277,  261,  262,  263,  278,
-      264,  279,  265,  272,  266,  280,  267,  268,  269,  248,
-      247,  270,  271,  247,  273,  281,   50,  282,  277,  283,
-      284,  285,  278,  286,  279,  287,  288,  289,  280,  290,
-      291,   45,  292,  274,  293,  275,  294,   43,  295,  281,
-      282,  276,  296,  283,  284,  285,  286,  298,  287,  288,
-      297,  289,  290,  299,  291,  292,  274,  293,  275,  300,
-
-      294,  295,  301,  310,  276,  302,  296,  303,  304,  305,
-      298,  248,  306,  307,  297,  308,  299,  309,  312,  311,
-      313,  314,  300,  315,  316,  317,  301,  310,  302,  318,
-      303,  304,  305,  319,  321,  306,  307,  320,  308,  322,
-      309,  312,  311,  323,  313,  314,  315,  316,  317,  326,
-      324,  328,  318,  324,  329,  330,  324,  319,  321,  324,
-      320,  332,  333,  322,  351,  327,  323,  334,  335,  324,
-      336,  338,  324,  326,  328,  337,  324,  329,  330,  324,
-      324,  339,  351,  324,  332,  333,  340,  331,  327,  341,
-      334,  335,  342,  324,  336,  338,  324,  343,  337,  344,
-
-      346,  348,  344,  350,  348,  339,  351,  351,  351,  340,
-      331,  325,  341,  348,  351,  342,  348,  325,  351,  351,
-      343,  351,  351,  346,  351,  351,  350,  351,  351,  351,
-      325,  351,  351,  351,  351,  351,  351,  325,  351,  351,
-      351,  325,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  325,  351,  351,  351,  351,  351,
-      345,  351,  349,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  349,   42,   42,  351,   42,   42,
-       51,   51,  107,  107,  223,  351,  351,  223,  259,  259,
-      347,  347,  351,  347,  347,    3,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351
+       25,    4,   35,   35,   36,   46,   47,   36,   39,   40,
+       40,   39,   48,   49,   52,   55,   56,   59,   53,   69,
+       65,   60,   37,   57,   44,   62,   54,   63,   66,   67,
+       58,   61,   68,   89,   46,   47,   64,  109,   52,   55,
+
+       56,   59,   53,   69,   65,   60,   37,   57,   62,   54,
+       63,   66,   67,   58,   61,   68,  110,   89,  111,   64,
+       70,  109,  112,   73,  349,   38,   38,  345,   71,   41,
+       41,   74,  325,   72,   76,   79,  248,   75,   77,  110,
+      175,  114,  111,  113,   70,   80,  112,   73,   78,  125,
+       81,   71,  120,   82,  121,   74,   72,  115,   76,   79,
+       75,   83,   77,   84,   85,  114,  113,   86,   80,  116,
+      122,   78,   87,   81,  108,   88,  120,   82,  121,  117,
+      115,  103,  118,  108,   83,  119,   84,   85,   43,   39,
+       86,  124,  116,   96,  122,   87,   97,   98,   88,   90,
+
+      123,   91,  117,   99,   92,  118,  100,  101,  119,  127,
+      131,   93,   94,  102,  124,   95,  125,   96,  103,  125,
+       97,   98,   39,   90,  123,   91,   99,  130,   92,  106,
+      100,  101,  127,  131,   93,   94,  102,   65,   95,  103,
+       40,   40,  103,  128,  129,   66,   39,   40,   40,   39,
+      132,  130,  133,  106,   50,  134,  142,  104,   45,  135,
+      139,   65,  140,   43,  136,  141,  128,  129,   66,  137,
+      143,  352,  146,  132,  147,  133,  352,  126,  126,  134,
+      142,  104,  135,  139,  352,  140,  138,  136,  141,  144,
+      352,  150,  151,  137,  143,  146,  152,  147,  153,  145,
+
+      105,  105,  148,  154,  352,  149,  155,   41,   41,  138,
+      156,  352,  157,  144,  150,  151,  158,  352,  160,  152,
+      159,  153,  145,  161,  162,  148,  163,  154,  149,  155,
+      103,   40,   40,  103,  156,  157,  164,  352,  165,  166,
+      158,  160,  167,  168,  159,  169,  161,  162,  104,  171,
+      163,  170,  172,  175,  173,  174,  175,  177,  178,  179,
+      164,  165,  180,  166,  125,  167,  168,  125,  169,  182,
+      352,  183,  104,  171,  170,  184,  172,  173,  186,  174,
+      177,  178,  179,  187,  190,  185,  180,  188,  189,  352,
+      191,  105,  105,  182,  183,  181,  192,  193,  195,  184,
+
+      194,  186,  352,  352,  196,  197,  187,  190,  185,  198,
+      199,  188,  189,  191,  176,  176,  200,  201,  181,  202,
+      192,  193,  195,  194,  203,  126,  126,  196,  197,  204,
+      205,  209,  198,  199,  206,  207,  208,  210,  211,  212,
+      200,  201,  202,  213,  214,  215,  217,  203,  216,  218,
+      219,  220,  204,  221,  205,  209,  222,  206,  207,  208,
+      210,  211,  175,  212,  224,  175,  225,  213,  214,  215,
+      217,  216,  218,  219,  220,  226,  229,  221,  227,  222,
+      228,  230,  231,  232,  233,  234,  352,  236,  224,  237,
+      225,  238,  239,  352,  235,  240,  241,  352,  242,  226,
+
+      229,  227,  243,  228,  230,  231,  232,  233,  244,  234,
+      236,  245,  250,  237,  246,  238,  239,  235,  247,  240,
+      241,  242,  251,  176,  176,  243,  248,  252,  257,  248,
+      253,  244,  254,  255,  256,  245,  250,  246,  258,  259,
+      262,  247,  261,  263,  264,  251,  265,  266,  352,  267,
+      268,  252,  257,  253,  269,  254,  255,  256,  270,  271,
+      272,  273,  258,  259,  262,  261,  263,  264,  274,  265,
+      278,  266,  267,  268,  279,  280,  281,  269,  282,  352,
+      283,  270,  271,  272,  284,  273,  285,  249,  249,  286,
+      290,  274,  248,  278,  292,  248,  287,  279,  280,  281,
+
+      352,  288,  282,  283,  289,  291,  293,  294,  284,  295,
+      285,  296,  297,  286,  290,  275,  299,  276,  292,  287,
+      298,  352,  300,  277,  288,  301,  302,  289,  291,  293,
+      294,  352,  303,  295,  296,  304,  297,  305,  275,  299,
+      276,  306,  307,  308,  298,  300,  277,  309,  301,  310,
+      302,  311,  314,  249,  249,  303,  313,  315,  304,  316,
+      305,  317,  318,  319,  306,  307,  308,  312,  320,  322,
+      309,  321,  310,  323,  352,  311,  314,  324,  329,  313,
+      325,  315,  316,  325,  317,  318,  319,  327,  352,  330,
+      312,  331,  320,  322,  321,  333,  325,  323,  334,  325,
+
+      324,  329,  335,  328,  325,  336,  337,  325,  338,  339,
+      325,  327,  330,  325,  331,  340,  325,  341,  333,  325,
+      342,  334,  343,  344,  347,  335,  328,  332,  336,  325,
+      337,  338,  325,  339,  345,  352,  351,  345,  352,  340,
+      341,  326,  326,  342,  352,  343,  344,  347,  349,  352,
+      332,  349,  349,  352,  352,  349,  352,  326,  326,  351,
+      352,  352,  352,  352,  352,  326,  326,  352,  352,  352,
+      352,  326,  326,  352,  352,  352,  352,  326,  326,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      326,  326,  352,  352,  352,  346,  346,  352,  352,  352,
+
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  350,
+      350,  352,  352,  350,  350,   42,   42,  352,   42,   42,
+       51,   51,  107,  107,  223,  352,  352,  223,  260,  260,
+      348,  348,  352,  348,  348,    3,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352
+
     } ;
 
-static const flex_int16_t yy_chk[860] =
+static const flex_int16_t yy_chk[901] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -642,94 +647,99 @@ static const flex_int16_t yy_chk[860] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    2,   12,   12,    2,    5,    5,    5,
-        5,   13,   13,   16,   17,   18,   19,   16,   23,   21,
-       19,    2,   18,  353,   20,   16,   20,   21,   22,   18,
-       19,   22,   31,   47,   47,   20,   52,   16,   17,   18,
-
-       19,   16,   23,   21,   19,    2,   18,   20,   16,   20,
-       21,   22,   18,   19,   22,   26,   31,   24,   20,   54,
-       52,   53,   27,   26,    2,   24,   27,   28,    5,   26,
-       24,   36,   36,   36,   36,   56,   27,   28,   55,   26,
-      349,   24,   28,   54,   53,   57,   27,   26,   24,   36,
-       27,   28,   26,   24,   34,   34,   29,   63,   56,   27,
-       28,   34,   55,   30,   29,   28,   29,   29,   30,   57,
-       58,   30,  345,   36,  325,   59,  248,   64,   34,   34,
-       29,   63,   60,   61,   34,   68,   30,   29,   68,   29,
-       29,   30,   36,   58,   30,   32,   37,   32,   59,   33,
-
-       32,   64,   33,   33,   37,   60,   61,   32,   32,   33,
-       62,   32,   37,   39,   39,   39,   39,   65,   66,   32,
-       37,   32,   67,   33,   32,   69,   33,   33,   37,   72,
-       32,   32,   33,   62,   32,   37,   71,   71,   73,   74,
-       75,   65,   66,   76,   84,   67,   68,   77,   69,   78,
-      176,  126,   77,   72,   79,   80,   81,   86,  108,   71,
-       71,   73,   74,   75,   88,   89,   78,   76,   84,   91,
-       77,   92,   87,   78,   39,   77,   93,   79,   80,   81,
-       90,   86,   87,   90,   94,   95,   97,   88,   89,   78,
-       96,   98,   91,  100,   92,  101,   87,  100,  104,   93,
-
-      101,  102,  105,   90,   46,   87,   90,   94,  106,   95,
-       97,  109,  110,   96,   98,  112,  113,  100,  101,  114,
-      116,  100,  104,  101,  102,  103,  103,  103,  103,  115,
-      117,  119,  106,  118,  109,  121,  110,  120,  112,  113,
-      120,  122,  114,  103,  116,  123,  124,  125,  127,  129,
-      125,  128,  115,  130,  117,  119,  118,  131,  121,  129,
-      132,  133,   42,  136,  122,  134,  135,  103,  123,  138,
-      124,  139,  127,  129,  128,  141,  130,  142,  125,  143,
-      131,  144,  129,  145,  132,  133,  103,  136,  134,  135,
-      147,  148,  153,  138,  139,  149,  151,  152,  120,  141,
-
-      142,  125,  143,  154,  144,  155,  145,  156,  125,  157,
-       41,  158,  159,  160,  147,  148,  153,  161,  149,  151,
-      152,  162,  163,   38,  164,  165,  154,  166,  155,  167,
-      156,  169,  170,  157,  158,  159,  172,  160,  178,  175,
-      179,  161,  175,  180,  183,  162,  163,  164,  181,  165,
-      166,  182,  167,  184,  169,  186,  170,  188,  190,  172,
-      191,  193,  178,  192,  179,  195,  198,  180,  183,  199,
-      200,  181,  201,  202,  182,  203,  184,  204,  186,  205,
-      188,  190,  206,  211,  191,  193,  192,  212,  210,  195,
-      198,  210,  213,  199,  200,  201,  202,  214,  203,  215,
-
-      175,  204,  205,  216,  217,  206,  219,  211,  221,  222,
-      212,  226,  228,   35,  229,  230,  213,  234,  235,  245,
-      214,  237,  215,  238,  239,  240,  216,  217,  241,  242,
-      219,  246,  221,  222,  226,  250,  228,  229,  230,  251,
-      234,  253,  235,  245,  237,  254,  238,  239,  240,  210,
-      247,  241,  242,  247,  246,  255,   15,  257,  250,  262,
-      263,  264,  251,  267,  253,  268,  271,  274,  254,  275,
-      276,   11,  279,  247,  280,  247,  281,    8,  282,  255,
-      257,  247,  283,  262,  263,  264,  267,  285,  268,  271,
-      284,  274,  275,  286,  276,  279,  247,  280,  247,  287,
-
-      281,  282,  288,  302,  247,  289,  283,  290,  291,  292,
-      285,  247,  294,  297,  284,  298,  286,  301,  303,  302,
-      304,  306,  287,  307,  309,  310,  288,  302,  289,  311,
-      290,  291,  292,  312,  314,  294,  297,  313,  298,  316,
-      301,  303,  302,  317,  304,  306,  307,  309,  310,  319,
-      318,  320,  311,  318,  322,  323,  324,  312,  314,  324,
-      313,  326,  327,  316,    3,  319,  317,  328,  329,  330,
-      331,  335,  330,  319,  320,  332,  333,  322,  323,  333,
-      334,  336,    0,  334,  326,  327,  337,  324,  319,  338,
-      328,  329,  339,  340,  331,  335,  340,  341,  332,  342,
-
-      343,  344,  342,  346,  344,  336,    0,    0,    0,  337,
-      324,  318,  338,  348,    0,  339,  348,  324,    0,    0,
-      341,    0,    0,  343,    0,    0,  346,    0,    0,    0,
-      330,    0,    0,    0,    0,    0,    0,  333,    0,    0,
-        0,  334,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  340,    0,    0,    0,    0,    0,
-      342,    0,  344,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  348,  352,  352,    0,  352,  352,
-      354,  354,  355,  355,  356,    0,    0,  356,  357,  357,
-      358,  358,    0,  358,  358,  351,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351
+        1,    1,    1,    1,    2,   12,   12,    2,    5,    5,
+        5,    5,   13,   13,   16,   17,   18,   19,   16,   23,
+       21,   19,    2,   18,  354,   20,   16,   20,   21,   22,
+       18,   19,   22,   31,   47,   47,   20,   52,   16,   17,
+
+       18,   19,   16,   23,   21,   19,    2,   18,   20,   16,
+       20,   21,   22,   18,   19,   22,   53,   31,   54,   20,
+       24,   52,   55,   26,  350,    2,    2,  346,   24,    5,
+        5,   26,  326,   24,   27,   28,  249,   26,   27,   53,
+      176,   57,   54,   56,   24,   28,   55,   26,   27,  126,
+       28,   24,   63,   29,   64,   26,   24,   58,   27,   28,
+       26,   29,   27,   29,   29,   57,   56,   30,   28,   59,
+       65,   27,   30,   28,  108,   30,   63,   29,   64,   60,
+       58,  105,   61,   46,   29,   62,   29,   29,   42,   41,
+       30,   67,   59,   33,   65,   30,   33,   33,   30,   32,
+
+       66,   32,   60,   33,   32,   61,   34,   34,   62,   69,
+       73,   32,   32,   34,   67,   32,   68,   33,   38,   68,
+       33,   33,   35,   32,   66,   32,   33,   72,   32,   37,
+       34,   34,   69,   73,   32,   32,   34,   37,   32,   36,
+       36,   36,   36,   71,   71,   37,   39,   39,   39,   39,
+       74,   72,   75,   37,   15,   76,   84,   36,   11,   77,
+       79,   37,   80,    8,   77,   81,   71,   71,   37,   78,
+       86,    3,   88,   74,   89,   75,    0,   68,   68,   76,
+       84,   36,   77,   79,    0,   80,   78,   77,   81,   87,
+        0,   91,   92,   78,   86,   88,   93,   89,   94,   87,
+
+       36,   36,   90,   95,    0,   90,   96,   39,   39,   78,
+       97,    0,   98,   87,   91,   92,  100,    0,  101,   93,
+      100,   94,   87,  101,  102,   90,  104,   95,   90,   96,
+      103,  103,  103,  103,   97,   98,  106,    0,  109,  110,
+      100,  101,  112,  113,  100,  114,  101,  102,  103,  116,
+      104,  115,  117,  120,  118,  119,  120,  121,  122,  123,
+      106,  109,  124,  110,  125,  112,  113,  125,  114,  127,
+        0,  128,  103,  116,  115,  129,  117,  118,  130,  119,
+      121,  122,  123,  131,  134,  129,  124,  132,  133,    0,
+      135,  103,  103,  127,  128,  125,  136,  138,  141,  129,
+
+      139,  130,    0,    0,  142,  143,  131,  134,  129,  144,
+      145,  132,  133,  135,  120,  120,  147,  148,  125,  149,
+      136,  138,  141,  139,  151,  125,  125,  142,  143,  152,
+      153,  157,  144,  145,  154,  155,  156,  158,  159,  160,
+      147,  148,  149,  161,  162,  163,  165,  151,  164,  166,
+      167,  169,  152,  170,  153,  157,  172,  154,  155,  156,
+      158,  159,  175,  160,  178,  175,  179,  161,  162,  163,
+      165,  164,  166,  167,  169,  180,  183,  170,  181,  172,
+      182,  184,  186,  188,  190,  191,    0,  192,  178,  193,
+      179,  195,  198,    0,  191,  199,  200,    0,  201,  180,
+
+      183,  181,  202,  182,  184,  186,  188,  190,  203,  191,
+      192,  204,  211,  193,  205,  195,  198,  191,  206,  199,
+      200,  201,  212,  175,  175,  202,  210,  213,  219,  210,
+      214,  203,  215,  216,  217,  204,  211,  205,  221,  222,
+      228,  206,  226,  229,  230,  212,  234,  236,    0,  238,
+      239,  213,  219,  214,  240,  215,  216,  217,  241,  242,
+      243,  246,  221,  222,  228,  226,  229,  230,  247,  234,
+      251,  236,  238,  239,  252,  254,  255,  240,  256,    0,
+      258,  241,  242,  243,  263,  246,  264,  210,  210,  265,
+      275,  247,  248,  251,  277,  248,  268,  252,  254,  255,
+
+        0,  269,  256,  258,  272,  276,  280,  281,  263,  282,
+      264,  283,  284,  265,  275,  248,  286,  248,  277,  268,
+      285,    0,  287,  248,  269,  288,  289,  272,  276,  280,
+      281,    0,  290,  282,  283,  291,  284,  292,  248,  286,
+      248,  293,  295,  298,  285,  287,  248,  299,  288,  302,
+      289,  303,  305,  248,  248,  290,  304,  307,  291,  308,
+      292,  310,  311,  312,  293,  295,  298,  303,  313,  315,
+      299,  314,  302,  317,    0,  303,  305,  318,  321,  304,
+      319,  307,  308,  319,  310,  311,  312,  320,    0,  323,
+      303,  324,  313,  315,  314,  327,  325,  317,  328,  325,
+
+      318,  321,  329,  320,  331,  330,  332,  331,  333,  336,
+      334,  320,  323,  334,  324,  337,  335,  338,  327,  335,
+      339,  328,  340,  342,  344,  329,  320,  325,  330,  341,
+      332,  333,  341,  336,  343,    0,  347,  343,    0,  337,
+      338,  319,  319,  339,    0,  340,  342,  344,  345,    0,
+      325,  345,  349,    0,    0,  349,    0,  325,  325,  347,
+        0,    0,    0,    0,    0,  331,  331,    0,    0,    0,
+        0,  334,  334,    0,    0,    0,    0,  335,  335,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      341,  341,    0,    0,    0,  343,  343,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  345,
+      345,    0,    0,  349,  349,  353,  353,    0,  353,  353,
+      355,  355,  356,  356,  357,    0,    0,  357,  358,  358,
+      359,  359,    0,  359,  359,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -885,8 +895,8 @@ static Common::String *readUntilNull(const char **ptr) {
 	return res;
 }
 
-#line 889 "engines/director/lingo/lingo-lex.cpp"
-#line 890 "engines/director/lingo/lingo-lex.cpp"
+#line 898 "engines/director/lingo/lingo-lex.cpp"
+#line 899 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -1107,7 +1117,7 @@ YY_DECL
 #line 159 "engines/director/lingo/lingo-lex.l"
 
 
-#line 1111 "engines/director/lingo/lingo-lex.cpp"
+#line 1120 "engines/director/lingo/lingo-lex.cpp"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -1135,13 +1145,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 >= 352 )
+				if ( yy_current_state >= 353 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 351 );
+		while ( yy_current_state != 352 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1365,151 +1375,156 @@ YY_RULE_SETUP
 case 38:
 YY_RULE_SETUP
 #line 216 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMENUITEM;}
+{ count(); return tMENUS; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 217 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMENUITEMS; }
+{ count(); return tMENUITEM;}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 218 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMETHOD; }
+{ count(); return tMENUITEMS; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 219 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOD;}
+{ count(); return tMETHOD; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 220 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOVIE; }
+{ count(); return tMOD;}
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 221 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEXT; }
+{ count(); return tMOVIE; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 222 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNOT; }
+{ count(); return tNEXT; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 223 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNUMBER; }
+{ count(); return tNOT; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 224 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOF; }
+{ count(); return tNUMBER; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 225 "engines/director/lingo/lingo-lex.l"
-{ count(); return tON; }		// D3
+{ count(); return tOF; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 226 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOPEN; }
+{ count(); return tON; }		// D3
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 227 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOR; }
+{ count(); return tOPEN; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 228 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPLAY; }
+{ count(); return tOR; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 229 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPREVIOUS; }
+{ count(); return tPLAY; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 230 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPROPERTY; }	// D4
+{ count(); return tPREVIOUS; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 231 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPUT; }
+{ count(); return tPROPERTY; }	// D4
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 232 "engines/director/lingo/lingo-lex.l"
-{ count(); return tREPEAT; }
+{ count(); return tPUT; }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 233 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSCRIPT; }
+{ count(); return tREPEAT; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 234 "engines/director/lingo/lingo-lex.l"
-{ count(); return tASSERTERROR; }
+{ count(); return tSCRIPT; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 235 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSET; }
+{ count(); return tASSERTERROR; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 236 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSHORT; }
+{ count(); return tSET; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 237 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSOUND; }
+{ count(); return tSHORT; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 238 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSPRITE; }
+{ count(); return tSOUND; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 239 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSTARTS; }
+{ count(); return tSPRITE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 240 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTELL; }
+{ count(); return tSTARTS; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 241 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTHE; }
+{ count(); return tTELL; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 242 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTHEN; }
+{ count(); return tTHE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 243 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTIME; }
+{ count(); return tTHEN; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 244 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTO; }
+{ count(); return tTIME; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 245 "engines/director/lingo/lingo-lex.l"
+{ count(); return tTO; }
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 246 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1529,64 +1544,64 @@ YY_RULE_SETUP
 		return tWHEN;
 	}
 	YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 263 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHILE; }
-	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 264 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWINDOW; }
+{ count(); return tWHILE; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 265 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITH; }
+{ count(); return tWINDOW; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 266 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITHIN; }
+{ count(); return tWITH; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 267 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWORD; }
+{ count(); return tWITHIN; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 268 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWORDS; }
+{ count(); return tWORD; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 270 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEQ; }
+#line 269 "engines/director/lingo/lingo-lex.l"
+{ count(); return tWORDS; }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 271 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGE; }
+{ count(); return tNEQ; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 272 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLE; }
+{ count(); return tGE; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 273 "engines/director/lingo/lingo-lex.l"
-{ count(); return tCONCAT; }
+{ count(); return tLE; }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 274 "engines/director/lingo/lingo-lex.l"
-{ count(); return tEQ; }
+{ count(); return tCONCAT; }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 276 "engines/director/lingo/lingo-lex.l"
+#line 275 "engines/director/lingo/lingo-lex.l"
+{ count(); return tEQ; }
+	YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 277 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1594,43 +1609,43 @@ YY_RULE_SETUP
 		return tVARID;
 	}
 	YY_BREAK
-case 80:
-YY_RULE_SETUP
-#line 282 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return tFLOAT; }
-	YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 283 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return tINT; }
+{ count(); yylval.f = atof(yytext); return tFLOAT; }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 284 "engines/director/lingo/lingo-lex.l"
-{ count(); return *yytext; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return tINT; }
 	YY_BREAK
 case 83:
-/* rule 83 can match eol */
 YY_RULE_SETUP
 #line 285 "engines/director/lingo/lingo-lex.l"
-{ count(); return '\n'; }
+{ count(); return *yytext; }
 	YY_BREAK
 case 84:
+/* rule 84 can match eol */
 YY_RULE_SETUP
 #line 286 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = cleanupString(&yytext[1]); yylval.s->deleteLastChar(); return tSTRING; }
+{ count(); return '\n'; }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 287 "engines/director/lingo/lingo-lex.l"
-{ count(); }
+{ count(); yylval.s = cleanupString(&yytext[1]); yylval.s->deleteLastChar(); return tSTRING; }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 289 "engines/director/lingo/lingo-lex.l"
+#line 288 "engines/director/lingo/lingo-lex.l"
+{ count(); }
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 290 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1634 "engines/director/lingo/lingo-lex.cpp"
+#line 1648 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1929,7 +1944,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 >= 352 )
+			if ( yy_current_state >= 353 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1957,11 +1972,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 >= 352 )
+		if ( yy_current_state >= 353 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 351);
+	yy_is_jam = (yy_current_state == 352);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2602,7 +2617,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 289 "engines/director/lingo/lingo-lex.l"
+#line 290 "engines/director/lingo/lingo-lex.l"
 
 
 extern int yydebug;
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 30278b1be26..660a1bf324f 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -213,6 +213,7 @@ lines		{ count(); return tLINES; }
 long		{ count(); return tLONG; }
 macro		{ count(); return tMACRO; }
 menu		{ count(); return tMENU; }
+menus		{ count(); return tMENUS; }
 menuItem	{ count(); return tMENUITEM;}
 menuItems	{ count(); return tMENUITEMS; }
 method		{ count(); return tMETHOD; }




More information about the Scummvm-git-logs mailing list