You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by ji...@apache.org on 2017/10/05 22:03:40 UTC

[45/51] [abbrv] incubator-quickstep git commit: Type as first class citizen

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/7a048ee6/parser/preprocessed/SqlParser_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 7bdc0ab..fcd070f 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -108,6 +108,7 @@ typedef struct YYLTYPE {
 #include "parser/ParseBasicExpressions.hpp"
 #include "parser/ParseBlockProperties.hpp"
 #include "parser/ParseCaseExpressions.hpp"
+#include "parser/ParseDataType.hpp"
 #include "parser/ParseExpression.hpp"
 #include "parser/ParseGeneratorTableReference.hpp"
 #include "parser/ParseGroupBy.hpp"
@@ -147,7 +148,7 @@ typedef struct YYLTYPE {
 // Needed for Bison 2.6 and higher, which do not automatically provide this typedef.
 typedef void* yyscan_t;
 
-#line 151 "SqlParser_gen.cpp" /* yacc.c:339  */
+#line 152 "SqlParser_gen.cpp" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -209,117 +210,103 @@ extern int quickstep_yydebug;
     TOKEN_ALTER = 282,
     TOKEN_AS = 283,
     TOKEN_ASC = 284,
-    TOKEN_BIGINT = 285,
-    TOKEN_BIT = 286,
-    TOKEN_BITWEAVING = 287,
-    TOKEN_BLOCKPROPERTIES = 288,
-    TOKEN_BLOCKSAMPLE = 289,
-    TOKEN_BLOOM_FILTER = 290,
-    TOKEN_CSB_TREE = 291,
-    TOKEN_BY = 292,
-    TOKEN_CASE = 293,
-    TOKEN_CAST = 294,
-    TOKEN_CHARACTER = 295,
-    TOKEN_CHECK = 296,
-    TOKEN_COLUMN = 297,
-    TOKEN_CONSTRAINT = 298,
-    TOKEN_COPY = 299,
-    TOKEN_CREATE = 300,
-    TOKEN_CURRENT = 301,
-    TOKEN_DATE = 302,
-    TOKEN_DATETIME = 303,
-    TOKEN_DAY = 304,
-    TOKEN_DECIMAL = 305,
-    TOKEN_DEFAULT = 306,
-    TOKEN_DELETE = 307,
-    TOKEN_DESC = 308,
-    TOKEN_DISTINCT = 309,
-    TOKEN_DOUBLE = 310,
-    TOKEN_DOUBLECOLON = 311,
-    TOKEN_DROP = 312,
-    TOKEN_ELSE = 313,
-    TOKEN_END = 314,
-    TOKEN_EXISTS = 315,
-    TOKEN_EXTRACT = 316,
-    TOKEN_FALSE = 317,
-    TOKEN_FIRST = 318,
-    TOKEN_FLOAT = 319,
-    TOKEN_FOLLOWING = 320,
-    TOKEN_FOR = 321,
-    TOKEN_FOREIGN = 322,
-    TOKEN_FROM = 323,
-    TOKEN_FULL = 324,
-    TOKEN_GROUP = 325,
-    TOKEN_HASH = 326,
-    TOKEN_HAVING = 327,
-    TOKEN_HOUR = 328,
-    TOKEN_IN = 329,
-    TOKEN_INDEX = 330,
-    TOKEN_INNER = 331,
-    TOKEN_INSERT = 332,
-    TOKEN_INTEGER = 333,
-    TOKEN_INTERVAL = 334,
-    TOKEN_INTO = 335,
-    TOKEN_JOIN = 336,
-    TOKEN_KEY = 337,
-    TOKEN_LAST = 338,
-    TOKEN_LBRACE = 339,
-    TOKEN_LEFT = 340,
-    TOKEN_LIMIT = 341,
-    TOKEN_LONG = 342,
-    TOKEN_MINUTE = 343,
-    TOKEN_MONTH = 344,
-    TOKEN_NULL = 345,
-    TOKEN_NULLS = 346,
-    TOKEN_OFF = 347,
-    TOKEN_ON = 348,
-    TOKEN_ORDER = 349,
-    TOKEN_OUTER = 350,
-    TOKEN_OVER = 351,
-    TOKEN_PARTITION = 352,
-    TOKEN_PARTITIONS = 353,
-    TOKEN_PERCENT = 354,
-    TOKEN_PRECEDING = 355,
-    TOKEN_PRIMARY = 356,
-    TOKEN_PRIORITY = 357,
-    TOKEN_QUIT = 358,
-    TOKEN_RANGE = 359,
-    TOKEN_RBRACE = 360,
-    TOKEN_REAL = 361,
-    TOKEN_REFERENCES = 362,
-    TOKEN_RIGHT = 363,
-    TOKEN_ROW = 364,
-    TOKEN_ROW_DELIMITER = 365,
-    TOKEN_ROWS = 366,
-    TOKEN_SECOND = 367,
-    TOKEN_SELECT = 368,
-    TOKEN_SET = 369,
-    TOKEN_SMA = 370,
-    TOKEN_SMALLINT = 371,
-    TOKEN_STDERR = 372,
-    TOKEN_STDOUT = 373,
-    TOKEN_SUBSTRING = 374,
-    TOKEN_TABLE = 375,
-    TOKEN_THEN = 376,
-    TOKEN_TIME = 377,
-    TOKEN_TIMESTAMP = 378,
-    TOKEN_TO = 379,
-    TOKEN_TRUE = 380,
-    TOKEN_TUPLESAMPLE = 381,
-    TOKEN_UNBOUNDED = 382,
-    TOKEN_UNIQUE = 383,
-    TOKEN_UPDATE = 384,
-    TOKEN_USING = 385,
-    TOKEN_VALUES = 386,
-    TOKEN_VARCHAR = 387,
-    TOKEN_WHEN = 388,
-    TOKEN_WHERE = 389,
-    TOKEN_WINDOW = 390,
-    TOKEN_WITH = 391,
-    TOKEN_YEAR = 392,
-    TOKEN_YEARMONTH = 393,
-    TOKEN_EOF = 394,
-    TOKEN_LEX_ERROR = 395
+    TOKEN_BIT = 285,
+    TOKEN_BITWEAVING = 286,
+    TOKEN_BLOCKPROPERTIES = 287,
+    TOKEN_BLOCKSAMPLE = 288,
+    TOKEN_BLOOM_FILTER = 289,
+    TOKEN_CSB_TREE = 290,
+    TOKEN_BY = 291,
+    TOKEN_CASE = 292,
+    TOKEN_CAST = 293,
+    TOKEN_CHECK = 294,
+    TOKEN_COLUMN = 295,
+    TOKEN_CONSTRAINT = 296,
+    TOKEN_COPY = 297,
+    TOKEN_CREATE = 298,
+    TOKEN_CURRENT = 299,
+    TOKEN_DAY = 300,
+    TOKEN_DEFAULT = 301,
+    TOKEN_DELETE = 302,
+    TOKEN_DESC = 303,
+    TOKEN_DISTINCT = 304,
+    TOKEN_DOUBLECOLON = 305,
+    TOKEN_DROP = 306,
+    TOKEN_ELSE = 307,
+    TOKEN_END = 308,
+    TOKEN_EXISTS = 309,
+    TOKEN_EXTRACT = 310,
+    TOKEN_FALSE = 311,
+    TOKEN_FIRST = 312,
+    TOKEN_FOLLOWING = 313,
+    TOKEN_FOR = 314,
+    TOKEN_FOREIGN = 315,
+    TOKEN_FROM = 316,
+    TOKEN_FULL = 317,
+    TOKEN_GROUP = 318,
+    TOKEN_HASH = 319,
+    TOKEN_HAVING = 320,
+    TOKEN_HOUR = 321,
+    TOKEN_IN = 322,
+    TOKEN_INDEX = 323,
+    TOKEN_INNER = 324,
+    TOKEN_INSERT = 325,
+    TOKEN_INTERVAL = 326,
+    TOKEN_INTO = 327,
+    TOKEN_JOIN = 328,
+    TOKEN_KEY = 329,
+    TOKEN_LAST = 330,
+    TOKEN_LBRACE = 331,
+    TOKEN_LEFT = 332,
+    TOKEN_LIMIT = 333,
+    TOKEN_MINUTE = 334,
+    TOKEN_MONTH = 335,
+    TOKEN_NULL = 336,
+    TOKEN_NULLS = 337,
+    TOKEN_OFF = 338,
+    TOKEN_ON = 339,
+    TOKEN_ORDER = 340,
+    TOKEN_OUTER = 341,
+    TOKEN_OVER = 342,
+    TOKEN_PARTITION = 343,
+    TOKEN_PARTITIONS = 344,
+    TOKEN_PERCENT = 345,
+    TOKEN_PRECEDING = 346,
+    TOKEN_PRIMARY = 347,
+    TOKEN_PRIORITY = 348,
+    TOKEN_QUIT = 349,
+    TOKEN_RANGE = 350,
+    TOKEN_RBRACE = 351,
+    TOKEN_REAL = 352,
+    TOKEN_REFERENCES = 353,
+    TOKEN_RIGHT = 354,
+    TOKEN_ROW = 355,
+    TOKEN_ROW_DELIMITER = 356,
+    TOKEN_ROWS = 357,
+    TOKEN_SECOND = 358,
+    TOKEN_SELECT = 359,
+    TOKEN_SET = 360,
+    TOKEN_SMA = 361,
+    TOKEN_STDERR = 362,
+    TOKEN_STDOUT = 363,
+    TOKEN_SUBSTRING = 364,
+    TOKEN_TABLE = 365,
+    TOKEN_THEN = 366,
+    TOKEN_TO = 367,
+    TOKEN_TRUE = 368,
+    TOKEN_TUPLESAMPLE = 369,
+    TOKEN_UNBOUNDED = 370,
+    TOKEN_UNIQUE = 371,
+    TOKEN_UPDATE = 372,
+    TOKEN_USING = 373,
+    TOKEN_VALUES = 374,
+    TOKEN_WHEN = 375,
+    TOKEN_WHERE = 376,
+    TOKEN_WINDOW = 377,
+    TOKEN_WITH = 378,
+    TOKEN_YEAR = 379,
+    TOKEN_EOF = 380,
+    TOKEN_LEX_ERROR = 381
   };
 #endif
 
@@ -328,7 +315,7 @@ extern int quickstep_yydebug;
 
 union YYSTYPE
 {
-#line 115 "../SqlParser.ypp" /* yacc.c:355  */
+#line 116 "../SqlParser.ypp" /* yacc.c:355  */
 
   quickstep::ParseString *string_value_;
 
@@ -430,7 +417,7 @@ union YYSTYPE
 
   quickstep::ParsePriority *opt_priority_clause_;
 
-#line 434 "SqlParser_gen.cpp" /* yacc.c:355  */
+#line 421 "SqlParser_gen.cpp" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -459,13 +446,13 @@ int quickstep_yyparse (yyscan_t yyscanner, quickstep::ParseStatement **parsedSta
 #endif /* !YY_QUICKSTEP_YY_SQLPARSER_GEN_HPP_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
-#line 217 "../SqlParser.ypp" /* yacc.c:358  */
+#line 218 "../SqlParser.ypp" /* yacc.c:358  */
 
 /* This header needs YYSTYPE, which is defined by the %union directive above */
 #include "SqlLexer_gen.hpp"
 void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature);
 
-#line 469 "SqlParser_gen.cpp" /* yacc.c:358  */
+#line 456 "SqlParser_gen.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -709,21 +696,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  50
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1626
+#define YYLAST   792
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  152
+#define YYNTOKENS  138
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  113
+#define YYNNTS  115
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  308
+#define YYNRULES  296
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  570
+#define YYNSTATES  554
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   395
+#define YYMAXUTOK   381
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -733,11 +720,11 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     147,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     133,     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,   151,     2,     2,
-     148,   149,    23,    21,   150,    22,    27,    24,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   146,
+       2,     2,     2,     2,     2,     2,     2,   137,     2,     2,
+     134,   135,    23,    21,   136,    22,    27,    24,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   132,
        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,
@@ -770,45 +757,43 @@ static const yytype_uint8 yytranslate[] =
      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
      110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
      120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145
+     130,   131
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   643,   643,   647,   651,   655,   659,   662,   669,   672,
-     675,   678,   681,   684,   687,   690,   693,   696,   702,   708,
-     715,   721,   728,   737,   742,   751,   756,   761,   765,   771,
-     776,   779,   782,   787,   790,   793,   796,   799,   802,   805,
-     808,   811,   814,   826,   829,   832,   850,   870,   873,   876,
-     881,   886,   892,   898,   907,   911,   917,   920,   925,   930,
-     935,   942,   949,   953,   959,   962,   967,   970,   975,   978,
-     983,   986,  1005,  1008,  1013,  1017,  1023,  1026,  1029,  1032,
-    1037,  1040,  1043,  1050,  1055,  1066,  1071,  1076,  1080,  1084,
-    1090,  1093,  1099,  1107,  1110,  1113,  1119,  1124,  1129,  1133,
-    1139,  1143,  1146,  1151,  1154,  1159,  1164,  1169,  1173,  1179,
-    1188,  1191,  1196,  1199,  1218,  1223,  1227,  1233,  1239,  1248,
-    1253,  1261,  1267,  1273,  1276,  1279,  1284,  1287,  1292,  1296,
-    1302,  1305,  1308,  1313,  1318,  1323,  1326,  1329,  1334,  1337,
-    1340,  1343,  1346,  1349,  1352,  1355,  1360,  1363,  1368,  1372,
-    1376,  1379,  1383,  1386,  1391,  1394,  1399,  1402,  1407,  1411,
-    1417,  1420,  1425,  1428,  1433,  1436,  1441,  1444,  1463,  1466,
-    1471,  1475,  1481,  1487,  1492,  1495,  1500,  1503,  1508,  1511,
-    1516,  1519,  1524,  1525,  1528,  1533,  1534,  1537,  1542,  1546,
-    1552,  1559,  1562,  1565,  1570,  1573,  1576,  1582,  1585,  1590,
-    1595,  1604,  1609,  1618,  1623,  1626,  1631,  1634,  1639,  1645,
-    1651,  1654,  1657,  1660,  1663,  1666,  1672,  1681,  1687,  1692,
-    1698,  1703,  1708,  1713,  1716,  1719,  1722,  1725,  1729,  1733,
-    1736,  1739,  1742,  1745,  1748,  1753,  1756,  1762,  1766,  1773,
-    1777,  1781,  1784,  1789,  1803,  1812,  1826,  1837,  1848,  1856,
-    1867,  1870,  1875,  1879,  1885,  1890,  1894,  1900,  1905,  1908,
-    1913,  1917,  1923,  1926,  1929,  1932,  1944,  1948,  1967,  1980,
-    1995,  1998,  2001,  2004,  2007,  2010,  2015,  2019,  2025,  2028,
-    2033,  2037,  2044,  2047,  2050,  2053,  2056,  2059,  2062,  2065,
-    2068,  2071,  2076,  2087,  2090,  2095,  2098,  2101,  2107,  2111,
-    2117,  2120,  2128,  2131,  2134,  2137,  2143,  2148,  2153
+       0,   632,   632,   636,   640,   644,   648,   651,   658,   661,
+     664,   667,   670,   673,   676,   679,   682,   685,   691,   697,
+     704,   710,   717,   726,   731,   740,   745,   750,   754,   760,
+     763,   768,   774,   780,   785,   792,   795,   798,   803,   806,
+     809,   814,   819,   825,   831,   840,   844,   850,   853,   858,
+     863,   868,   875,   882,   886,   892,   895,   900,   903,   908,
+     911,   916,   919,   938,   941,   946,   950,   956,   959,   962,
+     965,   970,   973,   976,   983,   988,   999,  1004,  1009,  1013,
+    1017,  1023,  1026,  1032,  1040,  1043,  1046,  1052,  1057,  1062,
+    1066,  1072,  1076,  1079,  1084,  1087,  1092,  1097,  1102,  1106,
+    1112,  1121,  1124,  1129,  1132,  1151,  1156,  1160,  1166,  1172,
+    1181,  1186,  1194,  1200,  1206,  1209,  1212,  1217,  1220,  1225,
+    1229,  1235,  1238,  1241,  1246,  1251,  1256,  1259,  1262,  1267,
+    1270,  1273,  1276,  1279,  1282,  1285,  1288,  1293,  1296,  1301,
+    1305,  1309,  1312,  1316,  1319,  1324,  1327,  1332,  1335,  1340,
+    1344,  1350,  1353,  1358,  1361,  1366,  1369,  1374,  1377,  1396,
+    1399,  1404,  1408,  1414,  1420,  1425,  1428,  1433,  1436,  1441,
+    1444,  1449,  1452,  1457,  1458,  1461,  1466,  1467,  1470,  1475,
+    1479,  1485,  1492,  1495,  1498,  1503,  1506,  1509,  1515,  1518,
+    1523,  1528,  1537,  1542,  1551,  1556,  1559,  1564,  1567,  1572,
+    1578,  1584,  1587,  1590,  1593,  1596,  1599,  1605,  1614,  1620,
+    1625,  1631,  1636,  1641,  1646,  1649,  1652,  1655,  1658,  1662,
+    1666,  1669,  1672,  1675,  1678,  1681,  1686,  1689,  1695,  1699,
+    1706,  1710,  1714,  1717,  1722,  1725,  1730,  1741,  1749,  1760,
+    1763,  1768,  1772,  1778,  1783,  1787,  1793,  1798,  1801,  1806,
+    1810,  1816,  1819,  1822,  1825,  1837,  1841,  1860,  1875,  1878,
+    1881,  1884,  1887,  1890,  1895,  1899,  1905,  1908,  1913,  1917,
+    1924,  1927,  1930,  1933,  1936,  1939,  1942,  1945,  1948,  1951,
+    1956,  1967,  1970,  1975,  1978,  1981,  1987,  1991,  1997,  2000,
+    2008,  2011,  2014,  2017,  2023,  2028,  2033
 };
 #endif
 
@@ -824,43 +809,40 @@ static const char *const yytname[] =
   "TOKEN_NEQ", "TOKEN_LIKE", "TOKEN_REGEXP", "TOKEN_BETWEEN", "TOKEN_IS",
   "'+'", "'-'", "'*'", "'/'", "UNARY_PLUS", "UNARY_MINUS", "'.'",
   "TOKEN_ALL", "TOKEN_UNION", "TOKEN_INTERSECT", "TOKEN_ADD",
-  "TOKEN_ALTER", "TOKEN_AS", "TOKEN_ASC", "TOKEN_BIGINT", "TOKEN_BIT",
-  "TOKEN_BITWEAVING", "TOKEN_BLOCKPROPERTIES", "TOKEN_BLOCKSAMPLE",
-  "TOKEN_BLOOM_FILTER", "TOKEN_CSB_TREE", "TOKEN_BY", "TOKEN_CASE",
-  "TOKEN_CAST", "TOKEN_CHARACTER", "TOKEN_CHECK", "TOKEN_COLUMN",
-  "TOKEN_CONSTRAINT", "TOKEN_COPY", "TOKEN_CREATE", "TOKEN_CURRENT",
-  "TOKEN_DATE", "TOKEN_DATETIME", "TOKEN_DAY", "TOKEN_DECIMAL",
-  "TOKEN_DEFAULT", "TOKEN_DELETE", "TOKEN_DESC", "TOKEN_DISTINCT",
-  "TOKEN_DOUBLE", "TOKEN_DOUBLECOLON", "TOKEN_DROP", "TOKEN_ELSE",
-  "TOKEN_END", "TOKEN_EXISTS", "TOKEN_EXTRACT", "TOKEN_FALSE",
-  "TOKEN_FIRST", "TOKEN_FLOAT", "TOKEN_FOLLOWING", "TOKEN_FOR",
+  "TOKEN_ALTER", "TOKEN_AS", "TOKEN_ASC", "TOKEN_BIT", "TOKEN_BITWEAVING",
+  "TOKEN_BLOCKPROPERTIES", "TOKEN_BLOCKSAMPLE", "TOKEN_BLOOM_FILTER",
+  "TOKEN_CSB_TREE", "TOKEN_BY", "TOKEN_CASE", "TOKEN_CAST", "TOKEN_CHECK",
+  "TOKEN_COLUMN", "TOKEN_CONSTRAINT", "TOKEN_COPY", "TOKEN_CREATE",
+  "TOKEN_CURRENT", "TOKEN_DAY", "TOKEN_DEFAULT", "TOKEN_DELETE",
+  "TOKEN_DESC", "TOKEN_DISTINCT", "TOKEN_DOUBLECOLON", "TOKEN_DROP",
+  "TOKEN_ELSE", "TOKEN_END", "TOKEN_EXISTS", "TOKEN_EXTRACT",
+  "TOKEN_FALSE", "TOKEN_FIRST", "TOKEN_FOLLOWING", "TOKEN_FOR",
   "TOKEN_FOREIGN", "TOKEN_FROM", "TOKEN_FULL", "TOKEN_GROUP", "TOKEN_HASH",
   "TOKEN_HAVING", "TOKEN_HOUR", "TOKEN_IN", "TOKEN_INDEX", "TOKEN_INNER",
-  "TOKEN_INSERT", "TOKEN_INTEGER", "TOKEN_INTERVAL", "TOKEN_INTO",
-  "TOKEN_JOIN", "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LBRACE", "TOKEN_LEFT",
-  "TOKEN_LIMIT", "TOKEN_LONG", "TOKEN_MINUTE", "TOKEN_MONTH", "TOKEN_NULL",
-  "TOKEN_NULLS", "TOKEN_OFF", "TOKEN_ON", "TOKEN_ORDER", "TOKEN_OUTER",
-  "TOKEN_OVER", "TOKEN_PARTITION", "TOKEN_PARTITIONS", "TOKEN_PERCENT",
+  "TOKEN_INSERT", "TOKEN_INTERVAL", "TOKEN_INTO", "TOKEN_JOIN",
+  "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LBRACE", "TOKEN_LEFT", "TOKEN_LIMIT",
+  "TOKEN_MINUTE", "TOKEN_MONTH", "TOKEN_NULL", "TOKEN_NULLS", "TOKEN_OFF",
+  "TOKEN_ON", "TOKEN_ORDER", "TOKEN_OUTER", "TOKEN_OVER",
+  "TOKEN_PARTITION", "TOKEN_PARTITIONS", "TOKEN_PERCENT",
   "TOKEN_PRECEDING", "TOKEN_PRIMARY", "TOKEN_PRIORITY", "TOKEN_QUIT",
   "TOKEN_RANGE", "TOKEN_RBRACE", "TOKEN_REAL", "TOKEN_REFERENCES",
   "TOKEN_RIGHT", "TOKEN_ROW", "TOKEN_ROW_DELIMITER", "TOKEN_ROWS",
-  "TOKEN_SECOND", "TOKEN_SELECT", "TOKEN_SET", "TOKEN_SMA",
-  "TOKEN_SMALLINT", "TOKEN_STDERR", "TOKEN_STDOUT", "TOKEN_SUBSTRING",
-  "TOKEN_TABLE", "TOKEN_THEN", "TOKEN_TIME", "TOKEN_TIMESTAMP", "TOKEN_TO",
-  "TOKEN_TRUE", "TOKEN_TUPLESAMPLE", "TOKEN_UNBOUNDED", "TOKEN_UNIQUE",
-  "TOKEN_UPDATE", "TOKEN_USING", "TOKEN_VALUES", "TOKEN_VARCHAR",
+  "TOKEN_SECOND", "TOKEN_SELECT", "TOKEN_SET", "TOKEN_SMA", "TOKEN_STDERR",
+  "TOKEN_STDOUT", "TOKEN_SUBSTRING", "TOKEN_TABLE", "TOKEN_THEN",
+  "TOKEN_TO", "TOKEN_TRUE", "TOKEN_TUPLESAMPLE", "TOKEN_UNBOUNDED",
+  "TOKEN_UNIQUE", "TOKEN_UPDATE", "TOKEN_USING", "TOKEN_VALUES",
   "TOKEN_WHEN", "TOKEN_WHERE", "TOKEN_WINDOW", "TOKEN_WITH", "TOKEN_YEAR",
-  "TOKEN_YEARMONTH", "TOKEN_EOF", "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('",
-  "')'", "','", "'%'", "$accept", "start", "sql_statement",
-  "quit_statement", "alter_table_statement", "create_table_statement",
+  "TOKEN_EOF", "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('", "')'", "','",
+  "'%'", "$accept", "start", "sql_statement", "quit_statement",
+  "alter_table_statement", "create_table_statement",
   "create_index_statement", "drop_table_statement", "column_def",
-  "column_def_commalist", "data_type", "column_constraint_def",
-  "column_constraint_def_list", "opt_column_constraint_def_list",
-  "table_constraint_def", "table_constraint_def_commalist",
-  "opt_table_constraint_def_commalist", "opt_column_list",
-  "opt_block_properties", "opt_partition_clause", "partition_type",
-  "key_value_list", "key_value", "key_string_value", "key_string_list",
-  "key_integer_value", "key_bool_value", "index_type",
+  "column_def_commalist", "data_type", "data_type_parameter_commalist",
+  "opt_nullable", "column_constraint_def", "column_constraint_def_list",
+  "opt_column_constraint_def_list", "table_constraint_def",
+  "table_constraint_def_commalist", "opt_table_constraint_def_commalist",
+  "opt_column_list", "opt_block_properties", "opt_partition_clause",
+  "partition_type", "key_value_list", "key_value", "key_string_value",
+  "key_string_list", "key_integer_value", "key_bool_value", "index_type",
   "opt_index_properties", "insert_statement", "copy_statement",
   "copy_to_target", "opt_copy_params", "update_statement",
   "delete_statement", "assignment_list", "assignment_item",
@@ -910,18 +892,16 @@ static const yytype_uint16 yytoknum[] =
      350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
      360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
      370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
-     380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
-     390,   391,   392,   393,   394,   395,    59,    10,    40,    41,
-      44,    37
+     380,   381,    59,    10,    40,    41,    44,    37
 };
 # endif
 
-#define YYPACT_NINF -280
+#define YYPACT_NINF -257
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-280)))
+  (!!((Yystate) == (-257)))
 
-#define YYTABLE_NINF -139
+#define YYTABLE_NINF -130
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -930,63 +910,62 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     185,  -280,  -280,   -26,    38,     6,    29,    16,    26,  -280,
-      47,   210,   210,  -280,   215,    84,  -280,  -280,  -280,  -280,
-    -280,  -280,  -280,  -280,  -280,  -280,   173,    66,   201,  -280,
-     -54,   222,   210,  -280,  -280,     1,   135,   210,   210,   210,
-     210,   210,  -280,  -280,   768,   138,   113,  -280,   236,   117,
-    -280,  -280,  -280,   154,   189,    66,    47,   187,  -280,   154,
-    -280,  -280,  -280,    50,    22,   151,   294,   151,   214,   160,
-     177,  -280,   -14,  -280,  -280,   314,   317,  -280,  -280,  -280,
-     865,   170,   174,  -280,   246,  -280,  -280,   190,  -280,  -280,
-     337,   962,  -280,  -280,  -280,  -280,   204,  -280,  -280,   209,
-     279,  1059,   355,   292,   217,  -280,  -280,   358,    40,  -280,
-     313,  -280,   -18,   277,  -280,  -280,  -280,  -280,  -280,  -280,
-    1265,     5,   210,   210,   235,   210,     1,   210,  -280,   154,
-     379,  -280,    81,   162,  -280,  -280,  -280,   242,  -280,   151,
-    -280,   210,   210,   671,  -280,  -280,   260,   210,  -280,  -280,
-    -280,   671,    63,    51,  -280,  1362,   387,  -280,   183,   183,
-    -280,   276,  1362,   410,  -280,    -9,    46,  -280,     9,   177,
-    1362,  -280,  -280,   210,  1362,  -280,  -280,  -280,  -280,  1362,
-     340,  -280,  1362,    19,   317,   313,   210,   437,    73,  -280,
-     424,  -280,   154,  -280,   191,  -280,   151,   154,   201,  -280,
-     210,   172,   210,   210,   210,  -280,   288,  -280,   200,  1483,
-    1168,   235,   562,   430,   431,  -280,  -280,   525,   419,  1442,
-     205,    52,  1362,    54,  -280,  1362,  -280,   381,   315,   297,
-    -280,  -280,  -280,  -280,  -280,  -280,   374,  -280,   198,   299,
-    -280,  -280,    18,   220,   253,  -280,   300,   220,     2,   377,
-    -280,  -280,    40,  -280,  -280,  -280,  -280,   276,   347,  -280,
-    -280,   304,  1362,  -280,   276,   221,   210,  -280,  1362,  -280,
-     210,  -280,  -280,  -280,   306,   368,   370,   316,  -280,  -280,
-    -280,   223,  -280,  -280,  -280,  -280,  -280,    12,   210,   327,
-     172,   210,   195,  -280,  -280,    21,    36,   671,   671,   231,
-    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  1362,   318,
-    1362,    86,  -280,   232,   329,  1362,    67,  -280,   405,   276,
-    -280,   340,  -280,  1362,   463,  -280,   155,   210,  -280,  -280,
-     371,  -280,   375,   376,   388,     9,  -280,   471,   477,   220,
-     443,   414,   445,   344,   395,  -280,   239,  -280,  1362,  -280,
-     276,  -280,   671,   350,   351,   210,  -280,   210,  -280,  -280,
-    -280,  -280,  -280,  -280,  -280,   210,  -280,  -280,  -280,   247,
-     468,    60,  -280,   352,   359,  -280,   406,   357,  1442,  -280,
-     420,   210,  -280,  -280,   195,  -280,  -280,   431,  -280,  -280,
-    -280,  1362,   360,   237,  1059,  -280,   276,   415,  -280,  -280,
-    1442,   361,   276,  1362,  -280,   362,   363,    55,    -1,  -280,
-    -280,  -280,  -280,  -280,     9,   253,   409,   412,  -280,  1362,
-     671,   418,  1362,  -280,   472,   -22,  -280,   276,    23,   210,
-     210,   249,  -280,   252,  -280,   210,  -280,  -280,  -280,  -280,
-     380,   172,   480,   417,  -280,   671,  -280,  -280,   382,  -280,
-     293,  1059,  -280,  1362,   254,  -280,  -280,  1442,   276,  -280,
-    -280,  -280,   515,  -280,   425,  -280,  -280,   383,   430,   482,
-     434,   383,  1362,  -280,  -280,  -280,   512,  -280,   257,   262,
-    -280,  -280,  -280,   210,  -280,  -280,   386,   507,  -280,    35,
-     210,  1362,   265,   276,  -280,   270,   401,   671,  1362,   544,
-     416,   402,  -280,   311,    31,   442,  -280,   272,   210,    15,
-    -280,   408,   276,  -280,  -280,  -280,   430,   402,  -280,   210,
-    -280,   416,  -280,  1362,  -280,  -280,   459,   454,   446,   457,
-     554,   210,  -280,   278,  -280,  -280,   422,  -280,   538,  -280,
-    -280,    37,  -280,  -280,  -280,  -280,    62,   427,  -280,   210,
-     428,  -280,  -280,   503,   464,   509,  -280,   210,   280,   347,
-    -280,  -280,  -280,   284,   474,   432,  -280,   575,  -280,  -280
+     653,  -257,  -257,    37,    86,     4,    58,    84,   157,  -257,
+      55,   286,   286,  -257,   245,   185,  -257,  -257,  -257,  -257,
+    -257,  -257,  -257,  -257,  -257,  -257,   169,   -17,   226,  -257,
+     144,   276,   286,  -257,  -257,    10,   -22,   286,   286,   286,
+     286,   286,  -257,  -257,   479,   189,   125,  -257,   271,   178,
+    -257,  -257,  -257,   217,   252,   -17,    55,   254,  -257,   217,
+    -257,  -257,  -257,   174,    79,   207,   354,   207,   281,   251,
+     277,  -257,   -35,  -257,  -257,   393,   403,  -257,   491,   280,
+     294,   416,   503,  -257,   316,   569,   379,   319,  -257,  -257,
+     386,     7,  -257,   396,  -257,   -39,   360,  -257,  -257,  -257,
+    -257,  -257,  -257,   626,    48,   286,   286,   320,   286,    10,
+     286,  -257,   217,   449,  -257,    26,   278,  -257,  -257,  -257,
+     323,  -257,   207,  -257,   286,   286,   472,  -257,  -257,   324,
+     286,  -257,  -257,  -257,   472,    72,   101,  -257,   637,   156,
+     156,  -257,   310,   637,    35,    21,    14,   277,   637,  -257,
+    -257,   286,   637,  -257,  -257,  -257,  -257,   637,   286,  -257,
+     637,    17,   403,   396,   286,   339,   162,  -257,   450,  -257,
+     217,  -257,   198,  -257,   207,   217,   226,  -257,   286,   152,
+     286,   286,   286,  -257,   326,  -257,   206,   286,   576,   320,
+     315,   455,   456,  -257,  -257,   720,   444,   232,   212,    16,
+     637,   147,  -257,   637,  -257,   409,   274,  -257,  -257,  -257,
+    -257,  -257,  -257,   402,  -257,    39,  -257,  -257,     9,    74,
+     335,  -257,   334,    74,    53,   404,  -257,  -257,     7,  -257,
+    -257,   215,   337,   310,   382,  -257,  -257,   345,   637,  -257,
+     310,   228,   286,  -257,   637,  -257,   286,  -257,  -257,  -257,
+     347,   408,   410,   356,  -257,  -257,  -257,   237,  -257,  -257,
+    -257,  -257,  -257,   133,   286,   368,   152,   286,   149,  -257,
+    -257,     6,    36,   472,   472,   283,  -257,  -257,  -257,  -257,
+    -257,  -257,  -257,  -257,   637,   369,   637,    30,  -257,   241,
+     380,   637,    91,  -257,   447,   310,  -257,   286,   637,   499,
+     151,   286,  -257,  -257,   425,  -257,   426,   427,   441,    14,
+    -257,   513,   516,    74,   485,   457,  -257,   362,   362,   487,
+     395,   445,  -257,   243,  -257,   637,  -257,   310,  -257,   472,
+     406,   407,   286,  -257,   286,  -257,  -257,  -257,  -257,  -257,
+    -257,  -257,   286,  -257,  -257,  -257,   253,   509,   192,  -257,
+     411,   414,  -257,   452,   415,   232,  -257,   464,   286,  -257,
+    -257,   149,  -257,  -257,   456,  -257,  -257,  -257,   637,   418,
+     180,   569,  -257,   310,   458,  -257,  -257,   232,   420,   310,
+     637,  -257,   421,    44,   122,  -257,  -257,  -257,  -257,  -257,
+      14,   335,   462,   466,  -257,   637,   472,   460,    77,  -257,
+      77,  -257,   637,  -257,   518,   175,  -257,   310,    11,   286,
+     286,   259,  -257,   262,  -257,   286,  -257,  -257,  -257,  -257,
+     428,   152,   527,   473,  -257,   472,  -257,  -257,   434,  -257,
+     318,   569,  -257,   637,   287,  -257,  -257,   232,   310,  -257,
+    -257,   562,  -257,   481,  -257,  -257,   435,   455,   537,   502,
+     501,  -257,  -257,  -257,   435,   637,  -257,  -257,  -257,   573,
+    -257,   291,   295,  -257,  -257,  -257,   286,  -257,  -257,   454,
+     553,  -257,    18,   286,   637,   297,   310,  -257,   299,   461,
+     472,   637,   588,   474,  -257,   463,  -257,   190,    49,   497,
+    -257,   301,   286,     0,  -257,   467,   310,  -257,  -257,  -257,
+     455,   463,  -257,   286,  -257,   474,  -257,   637,  -257,  -257,
+     520,   507,   504,   512,   601,   286,  -257,   306,  -257,  -257,
+     480,  -257,   582,  -257,  -257,    23,  -257,  -257,  -257,  -257,
+      61,   486,  -257,   286,   488,  -257,  -257,   558,   519,   560,
+    -257,   286,   308,   382,  -257,  -257,  -257,   311,   532,   492,
+    -257,   621,  -257,  -257
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -994,97 +973,96 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     6,   308,     0,     0,     0,     0,     0,     0,    18,
-     123,     0,     0,     7,     0,     0,    15,     8,    10,    11,
-      13,    14,     9,    17,    12,    16,     0,   112,   119,   121,
-       0,   306,     0,   300,   301,     0,     0,     0,     0,     0,
-       0,     0,   124,   125,     0,     0,   114,   115,     0,   156,
-       1,     3,     2,     0,     0,   112,   123,     0,   110,     0,
-       5,     4,   307,     0,     0,   103,     0,   103,     0,     0,
-     197,    25,     0,   266,   263,     0,   292,   126,    40,    29,
-       0,     0,     0,    30,    31,    34,    36,     0,    37,    39,
-       0,     0,    41,   262,    35,    38,     0,    32,    33,     0,
-       0,     0,     0,     0,   127,   128,   234,   132,   218,   220,
-     222,   225,     0,   226,   229,   230,   231,   232,   224,   223,
-       0,   278,     0,     0,     0,     0,     0,     0,   111,     0,
-       0,   120,     0,     0,   100,   102,   101,     0,    98,   103,
-      97,     0,     0,     0,   106,   198,     0,     0,    94,   264,
-     265,     0,     0,   258,   255,     0,     0,    43,     0,   267,
-     236,   238,     0,     0,    44,     0,     0,   269,     0,   197,
-       0,   293,   294,     0,     0,   131,   296,   297,   295,     0,
-       0,   235,     0,     0,     0,   221,     0,     0,   197,   108,
-       0,   116,     0,   117,     0,   298,   103,     0,   118,   113,
-       0,     0,     0,     0,     0,    96,    66,    27,     0,     0,
-       0,     0,     0,   199,   201,   203,   205,     0,   223,     0,
-       0,     0,     0,   258,   252,     0,   256,     0,     0,     0,
-     272,   273,   274,   271,   275,   270,     0,   268,     0,     0,
-     134,   233,     0,     0,   158,   147,   133,   152,   135,   160,
-     129,   130,   217,   219,    42,   245,   246,   237,   174,   227,
-     279,     0,     0,   239,   260,     0,     0,   105,     0,   157,
-       0,    99,    95,    19,     0,     0,     0,     0,    20,    21,
-      22,     0,    74,    76,    77,    78,    79,     0,     0,     0,
-      64,     0,    56,   204,   212,     0,     0,     0,     0,     0,
-     282,   284,   285,   286,   287,   283,   288,   290,     0,     0,
-       0,     0,   276,     0,     0,     0,     0,   253,     0,   259,
-     251,     0,    45,     0,     0,    46,   138,     0,   148,   154,
-     144,   139,   140,   142,     0,     0,   151,     0,     0,   150,
-       0,   162,     0,     0,   176,   240,     0,   241,     0,   107,
-     109,   299,     0,     0,     0,     0,   104,     0,    81,    84,
-      82,   304,   305,   303,   302,     0,    80,    85,   280,     0,
-     278,     0,    63,    65,    68,    28,     0,     0,     0,    47,
-       0,     0,    49,    55,    57,    26,   211,   200,   202,   289,
-     291,     0,     0,     0,     0,   213,   210,     0,   209,    93,
-       0,     0,   257,     0,   250,     0,     0,     0,     0,   153,
-     155,   145,   141,   143,     0,   159,     0,     0,   149,     0,
-       0,   164,     0,   228,     0,   178,   242,   261,     0,     0,
-       0,     0,    75,     0,    67,     0,    86,    87,    88,    89,
-      90,     0,     0,    70,    48,     0,    51,    50,     0,    54,
-       0,     0,   215,     0,     0,   208,   277,     0,   254,   243,
-     244,   247,     0,   248,     0,   136,   137,   161,   163,     0,
-     166,   175,     0,   181,   180,   173,     0,    61,     0,     0,
-      58,    83,   281,     0,    24,    62,     0,     0,    23,     0,
-       0,     0,     0,   206,   214,     0,     0,     0,     0,     0,
-     168,   177,   188,   191,     0,     0,    59,     0,     0,     0,
-      52,     0,   207,   216,    92,   249,   146,   165,   167,     0,
-     122,   169,   170,     0,   192,   193,   194,     0,     0,     0,
-       0,     0,    91,     0,    72,    73,     0,    53,     0,   171,
-     189,     0,   190,   182,   184,   183,     0,     0,    69,     0,
-       0,   195,   196,     0,     0,     0,   179,     0,     0,   174,
-     185,   187,   186,     0,     0,     0,    60,     0,   172,    71
+       0,     6,   296,     0,     0,     0,     0,     0,     0,    18,
+     114,     0,     0,     7,     0,     0,    15,     8,    10,    11,
+      13,    14,     9,    17,    12,    16,     0,   103,   110,   112,
+       0,   294,     0,   288,   289,     0,     0,     0,     0,     0,
+       0,     0,   115,   116,     0,     0,   105,   106,     0,   147,
+       1,     3,     2,     0,     0,   103,   114,     0,   101,     0,
+       5,     4,   295,     0,     0,    94,     0,    94,     0,     0,
+     188,    25,     0,   255,   252,     0,   280,   117,     0,     0,
+       0,     0,     0,   251,     0,     0,     0,   118,   119,   225,
+     123,   209,   211,   213,   216,     0,   217,   220,   221,   222,
+     223,   215,   214,     0,   266,     0,     0,     0,     0,     0,
+       0,   102,     0,     0,   111,     0,     0,    91,    93,    92,
+       0,    89,    94,    88,     0,     0,     0,    97,   189,     0,
+       0,    85,   253,   254,     0,     0,   247,   244,     0,     0,
+     256,   227,   229,     0,     0,     0,     0,   188,     0,   281,
+     282,     0,     0,   122,   284,   285,   283,     0,     0,   226,
+       0,     0,     0,   212,     0,     0,   188,    99,     0,   107,
+       0,   108,     0,   286,    94,     0,   109,   104,     0,     0,
+       0,     0,     0,    87,    57,    27,     0,     0,     0,     0,
+       0,   190,   192,   194,   196,     0,   214,     0,     0,     0,
+       0,   247,   241,     0,   245,     0,     0,   260,   261,   262,
+     259,   263,   258,     0,   257,     0,   125,   224,     0,     0,
+     149,   138,   124,   143,   126,   151,   120,   121,   208,   210,
+     235,     0,    29,   228,   165,   218,   267,     0,     0,   230,
+     249,     0,     0,    96,     0,   148,     0,    90,    86,    19,
+       0,     0,     0,     0,    20,    21,    22,     0,    65,    67,
+      68,    69,    70,     0,     0,     0,    55,     0,    47,   195,
+     203,     0,     0,     0,     0,     0,   270,   272,   273,   274,
+     275,   271,   276,   278,     0,     0,     0,     0,   264,     0,
+       0,     0,     0,   242,     0,   248,   240,     0,     0,     0,
+     129,     0,   139,   145,   135,   130,   131,   133,     0,     0,
+     142,     0,     0,   141,     0,   153,    30,     0,     0,     0,
+       0,   167,   231,     0,   232,     0,    98,   100,   287,     0,
+       0,     0,     0,    95,     0,    72,    75,    73,   292,   293,
+     291,   290,     0,    71,    76,   268,     0,   266,     0,    54,
+      56,    59,    28,     0,     0,     0,    38,     0,     0,    40,
+      46,    48,    26,   202,   191,   193,   277,   279,     0,     0,
+       0,     0,   204,   201,     0,   200,    84,     0,     0,   246,
+       0,   239,     0,     0,     0,   144,   146,   136,   132,   134,
+       0,   150,     0,     0,   140,     0,     0,   155,    35,    34,
+      35,    33,     0,   219,     0,   169,   233,   250,     0,     0,
+       0,     0,    66,     0,    58,     0,    77,    78,    79,    80,
+      81,     0,     0,    61,    39,     0,    42,    41,     0,    45,
+       0,     0,   206,     0,     0,   199,   265,     0,   243,   234,
+     236,     0,   237,     0,   127,   128,   152,   154,     0,   157,
+       0,    36,    32,    31,   166,     0,   172,   171,   164,     0,
+      52,     0,     0,    49,    74,   269,     0,    24,    53,     0,
+       0,    23,     0,     0,     0,     0,   197,   205,     0,     0,
+       0,     0,     0,   159,    37,   168,   179,   182,     0,     0,
+      50,     0,     0,     0,    43,     0,   198,   207,    83,   238,
+     137,   156,   158,     0,   113,   160,   161,     0,   183,   184,
+     185,     0,     0,     0,     0,     0,    82,     0,    63,    64,
+       0,    44,     0,   162,   180,     0,   181,   173,   175,   174,
+       0,     0,    60,     0,     0,   186,   187,     0,     0,     0,
+     170,     0,     0,   165,   176,   178,   177,     0,     0,     0,
+      51,     0,   163,    62
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -126,  -280,
-    -170,   203,  -280,  -280,  -279,  -280,  -280,  -280,  -280,  -280,
-    -280,  -229,   233,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
-    -280,    42,   -41,  -280,  -280,  -280,   322,  -280,   534,  -280,
-    -280,   469,   256,   462,     0,   537,  -280,  -280,   426,  -280,
-    -103,  -280,  -280,  -181,   180,  -164,    -7,  -280,  -280,  -280,
-    -280,  -280,  -280,  -280,    74,    41,  -280,  -280,  -280,  -280,
-    -280,  -280,   101,    78,  -280,  -280,   -62,  -280,  -150,   305,
-     310,   393,   -35,   435,   433,   490,  -280,  -280,  -162,  -280,
-    -280,  -280,  -280,  -280,   390,  -280,   458,   396,  -248,  -217,
-     461,   159,  -139,  -280,  -280,  -280,  -280,  -280,  -144,    -4,
-    -280,  -280,  -280
+    -257,  -257,  -257,  -257,  -257,  -257,  -257,  -257,  -105,  -257,
+    -182,  -257,   234,   279,  -257,  -257,  -255,  -257,  -257,  -257,
+    -257,  -257,  -257,  -256,   304,  -257,  -257,  -257,  -257,  -257,
+    -257,  -257,  -257,     5,   -40,  -257,  -257,  -257,   397,  -257,
+     591,  -257,  -257,   543,   258,   539,   -50,   597,  -257,  -257,
+     515,  -257,  -101,  -257,  -257,  -180,   270,  -191,   -10,  -257,
+    -257,  -257,  -257,  -257,  -257,  -257,   159,   118,  -257,  -257,
+    -257,  -257,  -257,  -257,   184,   160,  -257,  -257,   100,  -257,
+    -131,   398,   392,   482,   -15,   521,   517,   572,  -257,  -257,
+    -142,  -257,  -257,  -257,  -257,  -257,   471,  -257,   540,   476,
+    -222,  -187,   541,   247,  -109,  -257,  -257,  -257,  -257,  -257,
+    -129,    -4,  -257,  -257,  -257
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    14,    15,    16,    17,    18,    19,    20,   207,   208,
-     102,   383,   384,   385,   278,   373,   374,   289,   443,   488,
-     536,   281,   282,   283,   284,   285,   286,   440,   484,    21,
-      22,    65,   138,    23,    24,   188,   189,    25,    58,    26,
-      46,    47,   165,    28,    29,    44,   103,   104,   105,   169,
-     106,   339,   334,   244,   245,   328,   329,   246,   341,   421,
-     470,   500,   520,   521,   522,   343,   344,   425,   475,   476,
-     530,   556,   501,   502,   526,   542,   144,   145,   213,   214,
-     215,   216,   217,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   223,   224,   153,   154,   227,   265,   118,
-     236,   313,   119,   369,   310,   120,   174,   179,   194,   121,
-     367,    30,    31
+      -1,    14,    15,    16,    17,    18,    19,    20,   185,   186,
+     230,   231,   452,   360,   361,   362,   254,   350,   351,   265,
+     423,   471,   520,   257,   258,   259,   260,   261,   262,   420,
+     467,    21,    22,    65,   121,    23,    24,   166,   167,    25,
+      58,    26,    46,    47,   144,    28,    29,    44,    86,    87,
+      88,   147,    89,   313,   308,   220,   221,   302,   303,   222,
+     315,   397,   449,   483,   504,   505,   506,   320,   321,   405,
+     458,   459,   514,   540,   485,   486,   510,   526,   127,   128,
+     191,   192,   193,   194,   195,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   201,   202,   136,   137,   205,
+     241,   101,   213,   289,   102,   346,   286,   103,   152,   157,
+     172,   104,   344,    30,    31
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1092,435 +1070,267 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      36,   221,   312,   220,   218,    48,   247,    45,    49,   107,
-     255,   372,   218,    33,   346,    34,    33,   358,    34,   359,
-      56,   193,    33,    33,    34,    34,   140,   134,    63,   297,
-      56,   297,   186,    68,    69,    70,    71,    72,   527,   292,
-     360,   337,    33,   297,    34,   152,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   161,   171,   172,   131,
-     297,   326,   295,   176,   177,   243,   166,   171,   172,   553,
-     462,   218,   148,   218,   273,    42,   171,   172,    67,   361,
-     247,   132,   528,   336,   171,   172,    37,   473,   171,   172,
-      60,   534,   181,    61,   474,    56,   397,   436,   205,    32,
-     437,   438,    39,   175,    10,   551,    43,   249,   294,   362,
-     363,    41,   133,   554,   225,   309,    48,   225,   190,    49,
-     228,   195,   146,   197,   535,   552,   267,   238,   200,   201,
-      64,    38,   182,   338,   147,   107,    10,   206,   209,   243,
-     240,    40,   364,   195,   135,   136,   454,   257,   463,   368,
-     187,   405,   264,   187,   415,   271,    10,   242,   218,   218,
-     365,   446,   485,   529,   248,   375,   242,   258,   196,   251,
-     386,   467,   477,   247,   471,   418,   256,   296,   315,   259,
-     439,   398,   260,   456,   510,   241,     1,   316,     2,   151,
-     319,   178,   222,   403,   555,   241,   209,   272,   279,   280,
-     287,   222,   428,   492,   461,   376,   395,    57,    66,   202,
-     203,   431,   143,   218,    33,    50,    34,     3,   274,   171,
-     172,   433,    53,   266,    33,    62,    34,   264,    51,   330,
-      52,    59,   243,   350,     4,     5,   331,   230,   248,    49,
-     312,   377,     6,    49,   275,   332,   453,     7,   389,   390,
-     391,   378,   247,   327,   507,    54,    27,   122,   171,   172,
-      35,   231,   190,   123,    64,   125,   351,     8,   333,   124,
-     468,   324,    10,   393,   127,   396,   232,   233,   276,   533,
-     402,   218,    55,   366,   370,   478,   479,   209,   407,   452,
-     379,    10,   137,     9,   130,   489,   482,   171,   172,   139,
-     234,   380,   491,    10,   409,   277,   218,   381,   142,   126,
-     392,   243,   141,   427,   171,   172,   143,   406,   155,    11,
-     410,   149,   156,    49,   150,   235,    12,   330,   382,    13,
-     157,   248,   171,   172,   331,    49,   171,   172,   158,  -138,
-     269,   270,   159,   332,    33,   524,    34,   516,   321,   290,
-     291,   195,   162,   287,   314,   270,   450,   163,   218,   264,
-     167,   195,    33,   164,    34,   168,   333,   170,   458,   525,
-     347,   348,   356,   357,   180,    78,    79,   448,   183,   171,
-     172,   399,   400,   192,   264,    82,   199,   264,   426,   348,
-     204,   173,    83,    84,   229,    85,   434,   435,   480,   270,
-      86,   481,   270,   494,   348,   558,   505,   270,   219,    88,
-     248,   506,   270,   563,   513,   348,   264,   239,   493,   514,
-     400,   532,   357,    89,   254,   195,   195,   548,   357,   564,
-     270,   370,    92,   566,   270,   268,   288,   503,   297,   311,
-     298,    33,    73,    34,    74,   320,   322,   323,   325,   342,
-     335,    94,   340,   345,   352,   353,   512,   354,    75,    76,
-     261,    95,   371,   503,   355,   401,   394,    97,    98,   404,
-     408,   411,    78,    79,   414,   412,   413,    99,   416,   287,
-      80,    81,    82,   100,   417,   419,   511,   422,   503,    83,
-      84,   420,    85,   423,   424,   186,   262,    86,   429,   430,
-     442,   444,   441,    87,   287,   445,    88,   447,   451,   457,
-     455,   459,   460,   465,   472,   538,   466,   469,   486,   487,
-      89,    90,   496,   497,   498,   499,    91,   547,   483,    92,
-     490,   504,    93,   348,   508,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   195,   171,   172,    94,   509,
-     515,   518,   523,   195,   531,   541,   519,   537,    95,   543,
-     544,    96,   545,   546,    97,    98,    33,    73,    34,    74,
-     549,   550,   210,   560,    99,   557,   559,   567,   561,   562,
-     100,   568,   569,    75,    76,   101,   263,   449,   349,   128,
-     432,   198,   191,   129,   464,   539,   250,    78,    79,   517,
-     565,   540,   387,   293,   309,    80,    81,    82,   388,   252,
-     185,   226,   253,   317,    83,    84,   495,    85,     0,   318,
-     237,     0,    86,     0,     0,     0,     0,   211,    87,     0,
-       0,    88,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    89,    90,     0,     0,     0,
-       0,    91,     0,     0,    92,     0,     0,    93,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    94,     0,    33,    73,    34,    74,     0,
-      10,   210,     0,    95,     0,     0,    96,     0,     0,    97,
-      98,     0,    75,    76,     0,     0,     0,     0,     0,    99,
-       0,     0,     0,     0,     0,   100,    78,    79,     0,     0,
-     212,     0,     0,     0,    80,    81,    82,     0,     0,     0,
-       0,     0,     0,    83,    84,     0,    85,     0,     0,     0,
-       0,    86,     0,     0,     0,     0,   211,    87,     0,     0,
-      88,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    89,    90,     0,     0,     0,     0,
-      91,     0,     0,    92,     0,     0,    93,     0,     0,     0,
-       0,     0,    33,    73,    34,    74,     0,     0,     0,     0,
-       0,     0,    94,     0,     0,     0,     0,     0,     0,    75,
-      76,    77,    95,     0,     0,    96,     0,     0,    97,    98,
-       0,     0,     0,    78,    79,     0,     0,     0,    99,     0,
-       0,    80,    81,    82,   100,     0,     0,     0,     0,   212,
-      83,    84,     0,    85,     0,     0,     0,     0,    86,     0,
-       0,     0,     0,     0,    87,     0,     0,    88,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    89,    90,     0,     0,     0,     0,    91,     0,     0,
-      92,     0,     0,    93,     0,     0,     0,     0,     0,    33,
-      73,    34,    74,     0,     0,     0,     0,     0,     0,    94,
-       0,     0,     0,     0,     0,     0,    75,    76,     0,    95,
-       0,     0,    96,     0,     0,    97,    98,     0,     0,     0,
-      78,    79,     0,     0,     0,    99,     0,     0,    80,    81,
-      82,   100,     0,     0,     0,     0,   101,    83,    84,     0,
-      85,     0,     0,     0,     0,    86,     0,     0,     0,     0,
-       0,    87,     0,     0,    88,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    89,    90,
-       0,     0,     0,     0,    91,     0,     0,    92,     0,     0,
-      93,     0,     0,     0,     0,     0,    33,    73,    34,    74,
-       0,     0,     0,     0,     0,     0,    94,     0,     0,     0,
-       0,     0,     0,    75,    76,     0,    95,     0,     0,    96,
-       0,     0,    97,    98,     0,     0,     0,    78,    79,     0,
-       0,     0,    99,   151,     0,    80,    81,    82,   100,     0,
-       0,     0,     0,   101,    83,    84,     0,    85,     0,     0,
-       0,     0,    86,     0,     0,     0,     0,     0,    87,     0,
-       0,    88,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    89,    90,     0,     0,     0,
-       0,    91,     0,     0,    92,     0,     0,    93,     0,     0,
-       0,     0,     0,    33,    73,    34,    74,     0,     0,     0,
-       0,     0,   160,    94,     0,     0,     0,     0,     0,     0,
-      75,    76,     0,    95,     0,     0,    96,     0,     0,    97,
-      98,     0,     0,     0,    78,    79,     0,     0,     0,    99,
-       0,     0,    80,    81,    82,   100,     0,     0,     0,     0,
-     101,    83,    84,     0,    85,     0,     0,     0,     0,    86,
-       0,     0,     0,     0,     0,    87,     0,     0,    88,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    89,    90,     0,     0,     0,     0,    91,     0,
-       0,    92,     0,     0,    93,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      94,     0,    33,    73,    34,    74,     0,    10,     0,     0,
-      95,     0,     0,    96,     0,     0,    97,    98,     0,    75,
-      76,     0,     0,     0,     0,     0,    99,     0,     0,     0,
-       0,     0,   100,    78,    79,     0,     0,   101,     0,     0,
-       0,    80,    81,    82,     0,     0,     0,     0,     0,     0,
-      83,    84,     0,    85,     0,     0,     0,     0,    86,     0,
-       0,     0,     0,   211,    87,     0,     0,    88,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    89,    90,     0,     0,     0,     0,    91,     0,     0,
-      92,     0,     0,    93,     0,     0,     0,     0,     0,    33,
-      73,    34,    74,     0,     0,     0,     0,     0,     0,    94,
-       0,     0,     0,     0,     0,     0,    75,   184,     0,    95,
-       0,     0,    96,     0,     0,    97,    98,     0,     0,     0,
-      78,    79,     0,     0,     0,    99,     0,     0,    80,    81,
-      82,   100,     0,     0,     0,     0,   212,    83,    84,     0,
-      85,     0,     0,     0,     0,    86,     0,     0,     0,     0,
-       0,    87,     0,     0,    88,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    89,    90,
-       0,     0,     0,     0,    91,     0,     0,    92,     0,     0,
-      93,     0,     0,     0,     0,     0,    33,    73,    34,    74,
-       0,     0,     0,     0,     0,     0,    94,     0,     0,     0,
-       0,     0,     0,    75,    76,     0,    95,     0,     0,    96,
-       0,     0,    97,    98,     0,     0,     0,    78,    79,     0,
-       0,     0,    99,     0,     0,    80,    81,    82,   100,     0,
-       0,     0,     0,   101,    83,    84,     0,    85,     0,     0,
-       0,     0,    86,     0,     0,     0,     0,     0,    87,     0,
-       0,    88,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    89,    90,    73,     0,    74,
-       0,    91,     0,     0,    92,     0,     0,    93,     0,     0,
-       0,     0,     0,    75,   184,     0,     0,     0,     0,     0,
-       0,     0,     0,    94,     0,     0,     0,    78,    79,     0,
-       0,     0,     0,    95,     0,     0,    96,    82,     0,    97,
-      98,     0,     0,     0,    83,    84,     0,    85,     0,    99,
-       0,     0,    86,     0,     0,   100,     0,     0,     0,     0,
-     101,    88,     0,     0,     0,     0,     0,     0,    78,    79,
-       0,     0,     0,     0,     0,    89,    90,     0,    82,     0,
-       0,     0,     0,     0,    92,    83,    84,    93,    85,     0,
-       0,     0,     0,    86,     0,     0,     0,     0,     0,     0,
-       0,     0,    88,    94,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    95,     0,     0,    89,   254,     0,    97,
-      98,     0,     0,     0,     0,    92,     0,     0,     0,    99,
-       0,     0,     0,     0,     0,   100,     0,     0,     0,     0,
-       0,     0,     0,     0,    94,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    95,     0,     0,     0,     0,     0,
-      97,    98,     0,     0,     0,     0,     0,     0,     0,     0,
-      99,     0,     0,     0,     0,     0,   100
+      36,   198,    48,   199,   223,   268,   171,    45,    49,   114,
+     288,   349,    56,    33,   273,    34,   323,   196,    33,   273,
+      34,    33,   131,    34,   273,   196,   273,   123,    63,    90,
+     154,   155,   310,    68,    69,    70,    71,    72,   300,    56,
+     374,    67,   149,   150,    66,   219,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   511,   149,   150,   271,
+     149,   150,   159,   135,    56,   149,   150,   142,   537,   518,
+     145,   178,   179,   249,    10,   164,   223,    37,    33,   196,
+      34,   196,   183,    42,   117,   535,   153,   450,   270,   129,
+      33,   311,    34,   149,   150,    64,    48,   160,   512,   130,
+     519,   168,    49,   536,   173,   299,   175,   301,   285,    43,
+     538,    57,   149,   150,   174,   382,   375,   219,    10,    38,
+     184,   187,   394,   206,    39,   248,   173,    64,   215,   391,
+     399,   401,   291,    90,   247,   398,   400,    33,   335,    34,
+     336,   363,   224,   218,   156,   233,   460,   227,   218,   434,
+     240,   234,    32,   494,   232,   345,   217,   235,   203,   353,
+     236,   337,   352,   451,   196,   196,   468,   223,   426,   513,
+     216,   217,   312,   446,   187,   272,   255,   256,   263,   440,
+     454,   539,   165,   232,   372,   292,   441,   165,   295,   433,
+     436,   118,   119,   354,   338,    10,   250,   200,   408,    40,
+     355,   149,   150,   411,   203,   115,   207,   380,   219,   475,
+     491,   149,   150,   413,   224,    49,    53,   251,   304,    49,
+     196,   339,   340,   240,   508,   305,   134,   208,   416,   327,
+     116,   417,   418,   306,    41,   356,   517,    73,   168,    74,
+     209,   210,   328,   509,    54,    50,   357,   225,   223,   252,
+     288,   341,   358,    75,   162,   307,    59,   442,    27,   343,
+     347,   106,    35,   187,   211,   447,   243,   342,   432,   370,
+     359,   373,   200,   253,    60,   456,   379,    61,    10,    62,
+     461,   462,   457,   383,    55,   212,   385,   196,   126,   219,
+      33,   386,    34,   232,   472,   149,   150,    49,   242,   105,
+     366,   367,   368,   419,   107,   224,   465,   297,    81,    49,
+     407,   109,   108,   232,   232,    51,   196,    52,    83,    33,
+      73,    34,    74,   180,   181,   188,    10,   474,   173,   110,
+     263,   149,   150,   245,   246,   120,    75,    76,   173,   149,
+     150,   266,   267,    33,    73,    34,    74,   290,   246,   500,
+     316,   317,   113,   430,   428,   369,   240,    78,    79,   122,
+      75,    76,   237,   324,   325,   438,    33,    73,    34,    74,
+     124,   196,   333,   334,   189,    80,   376,   377,   406,   325,
+     240,    78,    79,    75,   162,   125,   224,   240,   414,   415,
+      33,    81,    34,   238,   463,   246,    82,   464,   246,    80,
+     132,    83,   304,   126,   542,   173,   173,   149,   150,   305,
+     133,   347,   547,  -129,   138,    81,   240,   306,   476,   151,
+      82,   140,   477,   325,    10,    83,   489,   246,   139,    84,
+     490,   246,   497,   325,   498,   377,   516,   334,    81,   307,
+     487,   532,   334,   548,   246,   146,   550,   246,    83,   190,
+     143,   158,   161,    84,   170,   148,   177,   182,   197,   496,
+     264,   244,   263,   273,   287,   274,   487,   296,   298,   495,
+     309,   318,   314,    85,   239,   319,    33,    73,    34,    74,
+     322,   329,   188,    33,    73,    34,    74,   330,   263,   331,
+     332,   348,   487,    75,    76,    33,    73,    34,    74,   522,
+      75,    76,    77,   371,   378,   381,   384,    33,    73,    34,
+      74,   531,    75,    76,    78,    79,   387,   388,   389,   390,
+     392,    78,    79,   393,    75,    76,   395,   396,   402,   173,
+     403,   189,    80,    78,    79,   404,   164,   173,   424,    80,
+     409,   410,   422,   427,   435,    78,    79,   421,    81,   425,
+     448,    80,   431,    82,   437,    81,   439,   444,    83,   455,
+      82,   445,   466,    80,   469,    83,   470,    81,   473,   479,
+     480,   325,    82,    33,    73,    34,    74,    83,   481,    81,
+      33,    73,    34,    74,    82,   482,    84,   484,   492,    83,
+      75,    76,   488,    84,   493,   502,   499,    75,    76,   507,
+     515,   503,   521,   527,   141,    84,   190,   525,   529,   528,
+     530,    78,    79,    85,   533,   534,   134,    84,    78,    79,
+     541,   544,   543,   546,   545,    85,   551,   552,   553,    80,
+      33,    73,    34,    74,   453,   189,    80,    85,   412,   326,
+     429,    33,    73,    34,    74,    81,   111,    75,   162,   169,
+      82,   176,    81,   112,     1,    83,     2,    82,    75,    76,
+     443,   549,    83,   226,   523,   501,   365,   524,    78,    79,
+     269,   364,   293,   228,   229,   163,   204,   294,    10,    78,
+      79,   214,     0,    84,   478,     3,    80,     0,     0,     0,
+      84,     0,     0,     0,     0,     0,     0,    80,     0,     0,
+       4,     5,    81,    85,     0,     6,     0,    82,     0,     7,
+     190,     0,    83,    81,     0,     0,     0,     0,    82,     0,
+       0,     0,     0,    83,     0,     0,     0,     0,     8,     0,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+      84,   149,   150,     0,     0,     0,     0,     0,     0,     0,
+       0,    84,     9,     0,     0,     0,     0,     0,     0,     0,
+      85,     0,    10,     0,     0,     0,     0,     0,     0,     0,
+       0,    85,     0,     0,     0,    11,     0,     0,     0,     0,
+       0,    12,     0,    13,     0,     0,     0,     0,     0,     0,
+       0,     0,   285
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,   151,   219,   147,   143,    12,   168,    11,    12,    44,
-     180,   290,   151,     4,   262,     6,     4,     5,     6,     7,
-      29,   124,     4,     4,     6,     6,    67,     5,    32,     8,
-      29,     8,    27,    37,    38,    39,    40,    41,     7,   209,
-      28,    39,     4,     8,     6,    80,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    91,    21,    22,    59,
-       8,   242,   212,    23,    24,   168,   101,    21,    22,     7,
-      71,   210,    72,   212,   200,    28,    21,    22,    36,    67,
-     242,    31,    51,   247,    21,    22,    80,   109,    21,    22,
-     144,    76,   110,   147,   116,    29,    10,    37,   139,   125,
-      40,    41,    73,   107,   118,    68,    59,   169,   211,    97,
-      98,    85,    62,    51,    63,    79,   123,    63,   122,   123,
-     155,   125,   136,   127,   109,    88,   188,   162,    47,    48,
-     129,   125,   150,   131,   148,   170,   118,   141,   142,   242,
-     149,   125,   130,   147,   122,   123,   394,   182,   149,   288,
-     148,   321,   187,   148,   335,   196,   118,   148,   297,   298,
-     148,   378,   441,   132,   168,   291,   148,   148,   126,   173,
-     149,   419,   149,   335,   422,   339,   180,   212,   126,   183,
-     120,    95,   186,   400,   149,   149,     1,   222,     3,   138,
-     225,   151,   138,   126,   132,   149,   200,   197,   202,   203,
-     204,   138,   352,   451,   149,    10,   309,   141,    73,    47,
-      48,   355,   139,   352,     4,     0,     6,    32,    46,    21,
-      22,   365,    49,   150,     4,     3,     6,   262,   144,    74,
-     146,    30,   335,   268,    49,    50,    81,    54,   242,   243,
-     457,    46,    57,   247,    72,    90,     9,    62,    17,    18,
-      19,    56,   414,    33,   483,    82,     0,   119,    21,    22,
-       4,    78,   266,   150,   129,   148,   270,    82,   113,    33,
-     420,    73,   118,   308,    85,   310,    93,    94,   106,   508,
-     315,   420,    26,   287,   288,   429,   430,   291,   323,   392,
-      95,   118,   141,   108,   107,   445,   435,    21,    22,     5,
-     117,   106,     9,   118,   149,   133,   445,   112,   148,    53,
-      79,   414,    98,   348,    21,    22,   139,   321,   148,   134,
-     327,     7,   148,   327,     7,   142,   141,    74,   133,   144,
-      84,   335,    21,    22,    81,   339,    21,    22,   148,    86,
-     149,   150,     5,    90,     4,    34,     6,   497,    33,   149,
-     150,   355,   148,   357,   149,   150,   391,   148,   497,   394,
-       5,   365,     4,    84,     6,    73,   113,   150,   403,    58,
-     149,   150,   149,   150,    61,    35,    36,   381,   101,    21,
-      22,   149,   150,   148,   419,    45,     7,   422,   149,   150,
-     148,    33,    52,    53,     7,    55,   149,   150,   149,   150,
-      60,   149,   150,   149,   150,   549,   149,   150,   148,    69,
-     414,   149,   150,   557,   149,   150,   451,     7,   453,   149,
-     150,   149,   150,    83,    84,   429,   430,   149,   150,   149,
-     150,   435,    92,   149,   150,    11,   148,   472,     8,    20,
-       9,     4,     5,     6,     7,    64,   149,    73,   149,   102,
-     150,   111,    75,   149,   148,    87,   491,    87,    21,    22,
-      23,   121,   135,   498,   148,   136,   148,   127,   128,    64,
-       7,   100,    35,    36,    86,   100,   100,   137,     7,   483,
-      43,    44,    45,   143,     7,    42,   490,    42,   523,    52,
-      53,    77,    55,   149,    99,    27,    59,    60,   148,   148,
-     141,    95,   150,    66,   508,   148,    69,    87,   148,   148,
-      95,   149,   149,   104,    42,   519,   104,    99,    38,   102,
-      83,    84,     7,    98,    42,    91,    89,   531,   148,    92,
-     148,    19,    95,   150,   148,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,   549,    21,    22,   111,    42,
-     149,     7,   150,   557,   112,    96,   140,   149,   121,   105,
-     114,   124,   105,     9,   127,   128,     4,     5,     6,     7,
-     148,    33,    10,    70,   137,   148,   148,   103,   114,    70,
-     143,   149,     7,    21,    22,   148,   149,   384,   266,    55,
-     357,   129,   123,    56,   414,   521,   170,    35,    36,   498,
-     559,   523,   297,   210,    79,    43,    44,    45,   298,   174,
-     120,   153,   179,   223,    52,    53,   457,    55,    -1,   223,
-     159,    -1,    60,    -1,    -1,    -1,    -1,    65,    66,    -1,
-      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
-      -1,    89,    -1,    -1,    92,    -1,    -1,    95,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,    -1,     4,     5,     6,     7,    -1,
-     118,    10,    -1,   121,    -1,    -1,   124,    -1,    -1,   127,
-     128,    -1,    21,    22,    -1,    -1,    -1,    -1,    -1,   137,
-      -1,    -1,    -1,    -1,    -1,   143,    35,    36,    -1,    -1,
-     148,    -1,    -1,    -1,    43,    44,    45,    -1,    -1,    -1,
-      -1,    -1,    -1,    52,    53,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    -1,    -1,    -1,    -1,    65,    66,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
-      89,    -1,    -1,    92,    -1,    -1,    95,    -1,    -1,    -1,
-      -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
-      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    21,
-      22,    23,   121,    -1,    -1,   124,    -1,    -1,   127,   128,
-      -1,    -1,    -1,    35,    36,    -1,    -1,    -1,   137,    -1,
-      -1,    43,    44,    45,   143,    -1,    -1,    -1,    -1,   148,
-      52,    53,    -1,    55,    -1,    -1,    -1,    -1,    60,    -1,
-      -1,    -1,    -1,    -1,    66,    -1,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,
-      92,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,     4,
-       5,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,   111,
-      -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    -1,   121,
-      -1,    -1,   124,    -1,    -1,   127,   128,    -1,    -1,    -1,
-      35,    36,    -1,    -1,    -1,   137,    -1,    -1,    43,    44,
-      45,   143,    -1,    -1,    -1,    -1,   148,    52,    53,    -1,
-      55,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
-      -1,    66,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,
-      95,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
-      -1,    -1,    -1,    21,    22,    -1,   121,    -1,    -1,   124,
-      -1,    -1,   127,   128,    -1,    -1,    -1,    35,    36,    -1,
-      -1,    -1,   137,   138,    -1,    43,    44,    45,   143,    -1,
-      -1,    -1,    -1,   148,    52,    53,    -1,    55,    -1,    -1,
-      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    66,    -1,
-      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
-      -1,    89,    -1,    -1,    92,    -1,    -1,    95,    -1,    -1,
-      -1,    -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,
-      -1,    -1,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
-      21,    22,    -1,   121,    -1,    -1,   124,    -1,    -1,   127,
-     128,    -1,    -1,    -1,    35,    36,    -1,    -1,    -1,   137,
-      -1,    -1,    43,    44,    45,   143,    -1,    -1,    -1,    -1,
-     148,    52,    53,    -1,    55,    -1,    -1,    -1,    -1,    60,
-      -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,
-      -1,    92,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     111,    -1,     4,     5,     6,     7,    -1,   118,    -1,    -1,
-     121,    -1,    -1,   124,    -1,    -1,   127,   128,    -1,    21,
-      22,    -1,    -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,
-      -1,    -1,   143,    35,    36,    -1,    -1,   148,    -1,    -1,
-      -1,    43,    44,    45,    -1,    -1,    -1,    -1,    -1,    -1,
-      52,    53,    -1,    55,    -1,    -1,    -1,    -1,    60,    -1,
-      -1,    -1,    -1,    65,    66,    -1,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,
-      92,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,     4,
-       5,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,   111,
-      -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    -1,   121,
-      -1,    -1,   124,    -1,    -1,   127,   128,    -1,    -1,    -1,
-      35,    36,    -1,    -1,    -1,   137,    -1,    -1,    43,    44,
-      45,   143,    -1,    -1,    -1,    -1,   148,    52,    53,    -1,
-      55,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
-      -1,    66,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,
-      95,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
-      -1,    -1,    -1,    21,    22,    -1,   121,    -1,    -1,   124,
-      -1,    -1,   127,   128,    -1,    -1,    -1,    35,    36,    -1,
-      -1,    -1,   137,    -1,    -1,    43,    44,    45,   143,    -1,
-      -1,    -1,    -1,   148,    52,    53,    -1,    55,    -1,    -1,
-      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    66,    -1,
-      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    84,     5,    -1,     7,
-      -1,    89,    -1,    -1,    92,    -1,    -1,    95,    -1,    -1,
-      -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,    -1,    -1,    -1,    35,    36,    -1,
-      -1,    -1,    -1,   121,    -1,    -1,   124,    45,    -1,   127,
-     128,    -1,    -1,    -1,    52,    53,    -1,    55,    -1,   137,
-      -1,    -1,    60,    -1,    -1,   143,    -1,    -1,    -1,    -1,
-     148,    69,    -1,    -1,    -1,    -1,    -1,    -1,    35,    36,
-      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    45,    -1,
-      -1,    -1,    -1,    -1,    92,    52,    53,    95,    55,    -1,
-      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,   111,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   121,    -1,    -1,    83,    84,    -1,   127,
-     128,    -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,   137,
-      -1,    -1,    -1,    -1,    -1,   143,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   121,    -1,    -1,    -1,    -1,    -1,
-     127,   128,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     137,    -1,    -1,    -1,    -1,    -1,   143
+       4,   130,    12,   134,   146,   187,   107,    11,    12,    59,
+     197,   266,    29,     4,     8,     6,   238,   126,     4,     8,
+       6,     4,    72,     6,     8,   134,     8,    67,    32,    44,
+      23,    24,   223,    37,    38,    39,    40,    41,   218,    29,
+      10,    36,    21,    22,    66,   146,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,     7,    21,    22,   190,
+      21,    22,   101,    78,    29,    21,    22,    82,     7,    69,
+      85,    45,    46,   178,   109,    27,   218,    73,     4,   188,
+       6,   190,   122,    28,     5,    62,    90,    10,   189,   124,
+       4,    38,     6,    21,    22,   117,   106,   136,    49,   134,
+     100,   105,   106,    80,   108,    66,   110,    33,    72,    54,
+      49,   128,    21,    22,   109,   297,    86,   218,   109,   115,
+     124,   125,   313,   138,    66,   175,   130,   117,   143,   309,
+     317,   318,   116,   148,   174,   317,   318,     4,     5,     6,
+       7,   135,   146,   134,   137,   160,   135,   151,   134,   371,
+     165,   134,   115,   135,   158,   264,   135,   161,    57,    10,
+     164,    28,   267,    86,   273,   274,   421,   309,   355,   120,
+     135,   135,   119,   395,   178,   190,   180,   181,   182,   135,
+     402,   120,   134,   187,   285,   200,    64,   134,   203,     9,
+     377,   112,   113,    44,    61,   109,    44,   125,   329,   115,
+      51,    21,    22,   332,    57,    31,    50,   116,   309,   431,
+     466,    21,    22,   342,   218,   219,    47,    65,    67,   223,
+     329,    88,    89,   238,    34,    74,   125,    71,    36,   244,
+      56,    39,    40,    82,    77,    86,   492,     5,   242,     7,
+      84,    85,   246,    53,    75,     0,    97,   147,   390,    97,
+     437,   118,   103,    21,    22,   104,    30,   135,     0,   263,
+     264,   136,     4,   267,   108,   396,   166,   134,   369,   284,
+     121,   286,   125,   121,   130,   100,   291,   133,   109,     3,
+     409,   410,   107,   298,    26,   129,   135,   396,   126,   390,
+       4,   301,     6,   297,   425,    21,    22,   301,   136,   110,
+      17,    18,    19,   111,    33,   309,   415,    33,    76,   313,
+     325,    53,   134,   317,   318,   130,   425,   132,    86,     4,
+       5,     6,     7,    45,    46,    10,   109,     9,   332,    77,
+     334,    21,    22,   135,   136,   128,    21,    22,   342,    21,
+      22,   135,   136,     4,     5,     6,     7,   135,   136,   480,
+     135,   136,    98,   368,   358,    72,   371,    42,    43,     5,
+      21,    22,    23,   135,   136,   380,     4,     5,     6,     7,
+      89,   480,   135,   136,    59,    60,   135,   136,   135,   136,
+     395,    42,    43,    21,    22,   134,   390,   402,   135,   136,
+       4,    76,     6,    54,   135,   136,    81,   135,   136,    60,
+       7,    86,    67,   126,   533,   409,   410,    21,    22,    74,
+       7,   415,   541,    78,   134,    76,   431,    82,   433,    33,
+      81,     5,   135,   136,   109,    86,   135,   136,   134,   114,
+     135,   136,   135,   136,   135,   136,   135,   136,    76,   104,
+     455,   135,   136,   135,   136,    66,   135,   136,    86,   134,
+     134,    55,    92,   114,   134,   136,     7,   134,   134,   474,
+     134,    11,   466,     8,    20,     9,   481,    58,    66,   473,
+     136,   134,    68,   134,   135,    93,     4,     5,     6,     7,
+     135,   134,    10,     4,     5,     6,     7,    79,   492,    79,
+     134,   123,   507,    21,    22,     4,     5,     6,     7,   503,
+      21,    22,    23,   134,   124,    58,     7,     4,     5,     6,
+       7,   515,    21,    22,    42,    43,    91,    91,    91,    78,
+       7,    42,    43,     7,    21,    22,    41,    70,    41,   533,
+     135,    59,    60,    42,    43,    90,    27,   541,    86,    60,
+     134,   134,   128,    79,    86,    42,    43,   136,    76,   134,
+      90,    60,   134,    81,   134,    76,   135,    95,    86,    41,
+      81,    95,   134,    60,    37,    86,    93,    76,   134,     7,
+      89,   136,    81,     4,     5,     6,     7,    86,    41,    76,
+       4,     5,     6,     7,    81,    83,   114,    86,   134,    86,
+      21,    22,    19,   114,    41,     7,   135,    21,    22,   136,
+     103,   127,   135,    96,   101,   114,   134,    87,    96,   105,
+       9,    42,    43,   134,   134,    33,   125,   114,    42,    43,
+     134,    63,   134,    63,   105,   134,    94,   135,     7,    60,
+       4,     5,     6,     7,   400,    59,    60,   134,   334,   242,
+     361,     4,     5,     6,     7,    76,    55,    21,    22,   106,
+      81,   112,    76,    56,     1,    86,     3,    81,    21,    22,
+     390,   543,    86,   148,   505,   481,   274,   507,    42,    43,
+     188,   273,   201,   152,   157,   103,   136,   201,   109,    42,
+      43,   140,    -1,   114,   437,    32,    60,    -1,    -1,    -1,
+     114,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
+      47,    48,    76,   134,    -1,    52,    -1,    81,    -1,    56,
+     134,    -1,    86,    76,    -1,    -1,    -1,    -1,    81,    -1,
+      -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,    75,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+     114,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   114,    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     134,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   134,    -1,    -1,    -1,   122,    -1,    -1,    -1,    -1,
+      -1,   128,    -1,   130,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    72
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
+static const yytype_uint8 yystos[] =
 {
-       0,     1,     3,    32,    49,    50,    57,    62,    82,   108,
-     118,   134,   141,   144,   153,   154,   155,   156,   157,   158,
-     159,   181,   182,   185,   186,   189,   191,   194,   195,   196,
-     263,   264,   125,     4,     6,   194,   261,    80,   125,    73,
-     125,    85,    28,    59,   197,   261,   192,   193,   208,   261,
-       0,   144,   146,    49,    82,   194,    29,   141,   190,    30,
-     144,   147,     3,   261,   129,   183,    73,   183,   261,   261,
-     261,   261,   261,     5,     7,    21,    22,    23,    35,    36,
-      43,    44,    45,    52,    53,    55,    60,    66,    69,    83,
-      84,    89,    92,    95,   111,   121,   124,   127,   128,   137,
-     143,   148,   162,   198,   199,   200,   202,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   251,   254,
-     257,   261,   119,   150,    33,   148,   194,    85,   190,   197,
-     107,   196,    31,    62,     5,   122,   123,   141,   184,     5,
-     184,    98,   148,   139,   228,   229,   136,   148,   196,     7,
-       7,   138,   234,   247,   248,   148,   148,    84,   148,     5,
-     110,   234,   148,   148,    84,   194,   234,     5,    73,   201,
-     150,    21,    22,    33,   258,   261,    23,    24,   151,   259,
-      61,   110,   150,   101,    22,   237,    27,   148,   187,   188,
-     261,   193,   148,   202,   260,   261,   183,   261,   195,     7,
-      47,    48,    47,    48,   148,   184,   261,   160,   161,   261,
-      10,    65,   148,   230,   231,   232,   233,   234,   254,   148,
-     260,   230,   138,   245,   246,    63,   248,   249,   234,     7,
-      54,    78,    93,    94,   117,   142,   252,   252,   234,     7,
-     149,   149,   148,   202,   205,   206,   209,   240,   261,   228,
-     200,   261,   235,   236,    84,   162,   261,   234,   148,   261,
-     261,    23,    59,   149,   234,   250,   150,   228,    11,   149,
-     150,   184,   196,   160,    46,    72,   106,   133,   166,   261,
-     261,   173,   174,   175,   176,   177,   178,   261,   148,   169,
-     149,   150,   162,   233,   202,   230,   234,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    79,
-     256,    20,   251,   253,   149,   126,   234,   246,   249,   234,
-      64,    33,   149,    73,    73,   149,   205,    33,   207,   208,
-      74,    81,    90,   113,   204,   150,   207,    39,   131,   203,
-      75,   210,   102,   217,   218,   149,   250,   149,   150,   188,
-     234,   261,   148,    87,    87,   148,   149,   150,     5,     7,
-      28,    67,    97,    98,   130,   148,   261,   262,   254,   255,
-     261,   135,   166,   167,   168,   160,    10,    46,    56,    95,
-     106,   112,   133,   163,   164,   165,   149,   231,   232,    17,
-      18,    19,    79,   234,   148,   202,   234,    10,    95,   149,
-     150,   136,   234,   126,    64,   162,   261,   234,     7,   149,
-     208,   100,   100,   100,    86,   205,     7,     7,   207,    42,
-      77,   211,    42,   149,    99,   219,   149,   234,   230,   148,
-     148,   260,   174,   260,   149,   150,    37,    40,    41,   120,
-     179,   150,   141,   170,    95,   148,   251,    87,   261,   163,
-     234,   148,   202,     9,   250,    95,   251,   148,   234,   149,
-     149,   149,    71,   149,   206,   104,   104,   250,   230,    99,
-     212,   250,    42,   109,   116,   220,   221,   149,   260,   260,
-     149,   149,   254,   148,   180,   166,    38,   102,   171,   230,
-     148,     9,   250,   234,   149,   253,     7,    98,    42,    91,
-     213,   224,   225,   234,    19,   149,   149,   173,   148,    42,
-     149,   261,   234,   149,   149,   149,   230,   224,     7,   140,
-     214,   215,   216,   150,    34,    58,   226,     7,    51,   132,
-     222,   112,   149,   173,    76,   109,   172,   149,   261,   216,
-     225,    96,   227,   105,   114,   105,     9,   261,   149,   148,
-      33,    68,    88,     7,    51,   132,   223,   148,   260,   148,
-      70,   114,    70,   260,   149,   217,   149,   103,   149,     7
+       0,     1,     3,    32,    47,    48,    52,    56,    75,    99,
+     109,   122,   128,   130,   139,   140,   141,   142,   143,   144,
+     145,   169,   170,   173,   174,   177,   179,   182,   183,   184,
+     251,   252,   115,     4,     6,   182,   249,    73,   115,    66,
+     115,    77,    28,    54,   185,   249,   180,   181,   196,   249,
+       0,   130,   132,    47,    75,   182,    29,   128,   178,    30,
+     130,   133,     3,   249,   117,   171,    66,   171,   249,   249,
+     249,   249,   249,     5,     7,    21,    22,    23,    42,    43,
+      60,    76,    81,    86,   114,   134,   186,   187,   188,   190,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   239,   242,   245,   249,   110,   136,    33,   134,   182,
+      77,   178,   185,    98,   184,    31,    56,     5,   112,   113,
+     128,   172,     5,   172,    89,   134,   126,   216,   217,   124,
+     134,   184,     7,     7,   125,   222,   235,   236,   134,   134,
+       5,   101,   222,   134,   182,   222,    66,   189,   136,    21,
+      22,    33,   246,   249,    23,    24,   137,   247,    55,   101,
+     136,    92,    22,   225,    27,   134,   175,   176,   249,   181,
+     134,   190,   248,   249,   171,   249,   183,     7,    45,    46,
+      45,    46,   134,   172,   249,   146,   147,   249,    10,    59,
+     134,   218,   219,   220,   221,   222,   242,   134,   248,   218,
+     125,   233,   234,    57,   236,   237,   222,    50,    71,    84,
+      85,   108,   129,   240,   240,   222,   135,   135,   134,   190,
+     193,   194,   197,   228,   249,   216,   188,   249,   223,   224,
+     148,   149,   249,   222,   134,   249,   249,    23,    54,   135,
+     222,   238,   136,   216,    11,   135,   136,   172,   184,   146,
+      44,    65,    97,   121,   154,   249,   249,   161,   162,   163,
+     164,   165,   166,   249,   134,   157,   135,   136,   148,   221,
+     190,   218,   222,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    72,   244,    20,   239,   241,
+     135,   116,   222,   234,   237,   222,    58,    33,    66,    66,
+     193,    33,   195,   196,    67,    74,    82,   104,   192,   136,
+     195,    38,   119,   191,    68,   198,   135,   136,   134,    93,
+     205,   206,   135,   238,   135,   136,   176,   222,   249,   134,
+      79,    79,   134,   135,   136,     5,     7,    28,    61,    88,
+      89,   118,   134,   249,   250,   242,   243,   249,   123,   154,
+     155,   156,   146,    10,    44,    51,    86,    97,   103,   121,
+     151,   152,   153,   135,   219,   220,    17,    18,    19,    72,
+     222,   134,   190,   222,    10,    86,   135,   136,   124,   222,
+     116,    58,   148,   222,     7,   135,   196,    91,    91,    91,
+      78,   193,     7,     7,   195,    41,    70,   199,   148,   239,
+     148,   239,    41,   135,    90,   207,   135,   222,   218,   134,
+     134,   248,   162,   248,   135,   136,    36,    39,    40,   111,
+     167,   136,   128,   158,    86,   134,   239,    79,   249,   151,
+     222,   134,   190,     9,   238,    86,   239,   134,   222,   135,
+     135,    64,   135,   194,    95,    95,   238,   218,    90,   200,
+      10,    86,   150,   150,   238,    41,   100,   107,   208,   209,
+     135,   248,   248,   135,   135,   242,   134,   168,   154,    37,
+      93,   159,   218,   134,     9,   238,   222,   135,   241,     7,
+      89,    41,    83,   201,    86,   212,   213,   222,    19,   135,
+     135,   161,   134,    41,   135,   249,   222,   135,   135,   135,
+     218,   212,     7,   127,   202,   203,   204,   136,    34,    53,
+     214,     7,    49,   120,   210,   103,   135,   161,    69,   100,
+     160,   135,   249,   204,   213,    87,   215,    96,   105,    96,
+       9,   249,   135,   134,    33,    62,    80,     7,    49,   120,
+     211,   134,   248,   134,    63,   105,    63,   248,   135,   205,
+     135,    94,   135,     7
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
+static const yytype_uint8 yyr1[] =
 {
-       0,   152,   153,   153,   153,   153,   153,   153,   154,   154,
-     154,   154,   154,   154,   154,   154,   154,   154,   155,   156,
-     156,   156,   156,   157,   158,   159,   160,   161,   161,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   163,   163,   163,
-     163,   163,   163,   163,   164,   164,   165,   165,   166,   166,
-     166,   166,   167,   167,   168,   168,   169,   169,   170,   170,
-     171,   171,   172,   172,   173,   173,   174,   174,   174,   174,
-     175,   175,   175,   176,   177,   178,   179,   179,   179,   179,
-     180,   180,   181,   181,   181,   181,   182,   182,   182,   182,
-     183,   183,   183,   184,   184,   185,   186,   187,   187,   188,
-     189,   189,   190,   190,   191,   192,   192,   193,   194,   194,
-     195,   195,   196,   197,   197,   197,   198,   198,   199,   199,
-     200,   200,   200,   201,   202,   203,   203,   203,   204,   204,
-     204,   204,   204,   204,   204,   204,   205,   205,   206,   206,
-     206,   206,   206,   206,   207,   207,   208,   208,   209,   209,
-     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
-     215,   215,   216,   217,   218,   218,   219,   219,   220,   220,
-     221,   221,   222,   222,   222,   223,   223,   223,   224,   224,
-     225,   226,   226,   226,   227,   227,   227,   228,   228,   229,
-     230,   230,   231,   231,   232,   232,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   234,   234,   235,
-     235,   236,   236,   237,   237,   237,   237,   237,   237,   237,
-     237,   237,   237,   237,   237,   238,   238,   239,   239,   240,
-     240,   240,   240,   241,   241,   241,   241,   242,   243,   243,
-     244,   244,   245,   245,   246,   247,   247,   248,   249,   249,
-     250,   250,   251,   251,   251,   251,   251,   251,   251,   251,
-     252,   252,   252,   252,   252,   252,   253,   253,   254,   254,
-     255,   255,   256,   256,   256,   256,   256,   256,   256,   256,
-     256,   256,   257,   258,   258,   259,   259,   259,   260,   260,
-     261,   261,   262,   262,   262,   262,   263,   264,   264
+       0,   138,   139,   139,   139,   139,   139,   139,   140,   140,
+     140,   140,   140,   140,   140,   140,   140,   140,   141,   142,
+     142,   142,   142,   143,   144,   145,   146,   147,   147,   148,
+     148,   149,   149,   149,   149,   150,   150,   150,   151,   151,
+     151,   151,   151,   151,   151,   152,   152,   153,   153,   154,
+     154,   154,   154,   155,   155,   156,   156,   157,   157,   158,
+     158,   159,   159,   160,   160,   161,   161,   162,   162,   162,
+     162,   163,   163,   163,   164,   165,   166,   167,   167,   167,
+     167,   168,   168,   169,   169,   169,   169,   170,   170,   170,
+     170,   171,   171,   171,   172,   172,   173,   174,   175,   175,
+     176,   177,   177,   178,   178,   179,   180,   180,   181,   182,
+     182,   183,   183,   184,   185,   185,   185,   186,   186,   187,
+     187,   188,   188,   188,   189,   190,   191,   191,   191,   192,
+     192,   192,   192,   192,   192,   192,   192,   193,   193,   194,
+     194,   194,   194,   194,   194,   195,   195,   196,   196,   197,
+     197,   198,   198,   199,   199,   200,   200,   201,   201,   202,
+     202,   203,   203,   204,   205,   206,   206,   207,   207,   208,
+     208,   209,   209,   210,   210,   210,   211,   211,   211,   212,
+     212,   213,   214,   214,   214,   215,   215,   215,   216,   216,
+     217,   218,   218,   219,   219,   220,   220,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   222,   222,
+     223,   223,   224,   224,   225,   225,   225,   225,   225,   225,
+     225,   225,   225,   225,   225,   225,   226,   226,   227,   227,
+     228,   228,   228,   228,   229,   229,   230,   231,   231,   232,
+     232,   233,   233,   234,   235,

<TRUNCATED>