8
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Nov 1998 16:15:15 +0000 (16:15 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Nov 1998 16:15:15 +0000 (16:15 +0000)
Extensive changes.  See ChangeLog.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23620 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/java-tree.h
gcc/java/parse.c

index d80c6c9..eedcb00 100644 (file)
@@ -49,11 +49,13 @@ struct JCF;
       MODIFY_EXPR_FROM_INITIALIZATION_P (in MODIFY_EXPR)
    3: IS_AN_IMPORT_ON_DEMAND_P (in IDENTIFIER_NODE)
       RESOLVE_PACKAGE_NAME_P (in EXPR_WITH_FILE_LOCATION)
+      SWITCH_HAS_DEFAULT (in SWITCH_EXPR)
    4: IS_A_COMMAND_LINE_FILENAME_P (in IDENTIFIER_NODE)
       RESOLVE_TYPE_NAME_P (in EXPR_WITH_FILE_LOCATION)
    5: HAS_BEEN_ALREADY_PARSED_P (in IDENTIFIER_NODE)
       IS_BREAK_STMT_P (in EXPR_WITH_FILE_LOCATION)
       IS_CRAFTED_STRING_BUFFER_P (in CALL_EXPR)
+   6: CAN_COMPLETE_NORMALLY (in statement nodes).
 
    Usage of TYPE_LANG_FLAG_?:
    0: CLASS_METHOD_CHECKED_P (in RECORD_TYPE)
@@ -262,6 +264,7 @@ extern tree class_dtable_decl;
 extern struct CPool *outgoing_cpool; 
 extern tree current_constant_pool_data_ref;
 
+extern tree wfl_operator;
 
 struct lang_identifier
 {
@@ -541,6 +544,8 @@ extern int alloc_name_constant PROTO ((int, tree));
 extern void emit_register_classes PROTO (());
 extern void lang_init_source PROTO ((int));
 extern void write_classfile PROTO ((tree));
+extern char *print_int_node PROTO ((tree));
+extern void parse_error_context VPROTO ((tree cl, char *msg, ...));
 extern tree build_primtype_type_ref PROTO ((char *));
 
 /* Access flags etc for a method (a FUNCTION_DECL): */
@@ -713,6 +718,9 @@ extern tree *type_map;
 /* True if EXPR is RHS sub-tree of a compound assign expression */
 #define COMPOUND_ASSIGN_P(EXPR) TREE_LANG_FLAG_1 (EXPR)
 
+/* True if a SWITCH_EXPR has a DEFAULT_EXPR. */
+#define SWITCH_HAS_DEFAULT(NODE) TREE_LANG_FLAG_3 (NODE)
+
 /* True if EXPR (a WFL in that case) was created after the
    reduction of PRIMARY . XXX */
 #define PRIMARY_P(EXPR) TREE_LANG_FLAG_2 (EXPR)
@@ -739,6 +747,9 @@ extern tree *type_map;
 /* True if EXPR (a CALL_EXPR in that case) is a crafted StringBuffer */
 #define IS_CRAFTED_STRING_BUFFER_P(EXPR) TREE_LANG_FLAG_5 (EXPR)
 
+/* True if NODE (a statement) can complete normally. */
+#define CAN_COMPLETE_NORMALLY(NODE) TREE_LANG_FLAG_6(NODE)
+
 /* Add a FIELD_DECL to RECORD_TYPE RTYPE.
    The field has name NAME (a char*), and type FTYPE.
    Unless this is the first field, FIELD most hold the previous field.
index 8646523..6cfae0b 100644 (file)
@@ -175,7 +175,7 @@ static enum tree_code binop_lookup[19] =
 
 /* Fake WFL used to report error message. It is initialized once if
    needed and reused with it's location information is overriden.  */
-static tree wfl_operator = NULL_TREE;
+tree wfl_operator = NULL_TREE;
 
 /* The "$L" identifier we use to create labels.  */
 static tree label_id = NULL_TREE;
@@ -286,8 +286,8 @@ static const short yyprhs[] = {     0,
    665,   667,   670,   673,   676,   679,   682,   685,   688,   691,
    695,   700,   705,   711,   716,   722,   729,   737,   744,   746,
    748,   750,   752,   754,   756,   758,   764,   767,   771,   776,
-   784,   792,   795,   800,   803,   807,   813,   816,   820,   824,
-   829,   831,   834,   837,   839,   841,   844,   848,   851,   854,
+   784,   792,   793,   797,   802,   805,   809,   815,   818,   822,
+   826,   831,   833,   836,   839,   841,   844,   848,   851,   854,
    858,   861,   866,   869,   872,   876,   881,   884,   886,   894,
    902,   909,   913,   919,   924,   932,   939,   942,   945,   949,
    952,   953,   955,   957,   960,   961,   963,   965,   969,   973,
@@ -393,11 +393,11 @@ static const short yyrhs[] = {   123,
     94,   185,     0,    48,     1,     0,    48,    93,     1,     0,
     48,    93,   263,     1,     0,    48,    93,   263,    94,   186,
     56,   185,     0,    48,    93,   263,    94,   186,    56,   186,
-     0,   198,   199,     0,    68,    93,   263,    94,     0,    68,
-     1,     0,    68,    93,     1,     0,    68,    93,   263,    94,
-     1,     0,    95,    96,     0,    95,   203,    96,     0,    95,
-   200,    96,     0,    95,   200,   203,    96,     0,   201,     0,
-   200,   201,     0,   202,   181,     0,   203,     0,   204,     0,
+     0,     0,   199,   198,   200,     0,    68,    93,   263,    94,
+     0,    68,     1,     0,    68,    93,     1,     0,    68,    93,
+   263,    94,     1,     0,    95,    96,     0,    95,   203,    96,
+     0,    95,   201,    96,     0,    95,   201,   203,    96,     0,
+   202,     0,   201,   202,     0,   203,   181,     0,   204,     0,
    203,   204,     0,    62,   264,    88,     0,    47,    88,     0,
     62,     1,     0,    62,   264,     1,     0,    47,     1,     0,
     66,    93,   263,    94,     0,   205,   185,     0,    66,     1,
@@ -493,56 +493,56 @@ static const short yyrhs[] = {   123,
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   271,   277,   279,   280,   281,   282,   283,   287,   289,   292,
-   294,   295,   298,   300,   303,   307,   311,   315,   321,   323,
-   325,   327,   332,   334,   337,   341,   346,   351,   353,   354,
-   355,   356,   357,   358,   359,   362,   367,   373,   375,   378,
-   381,   383,   387,   389,   392,   419,   421,   425,   438,   440,
-   444,   451,   452,   454,   464,   469,   484,   488,   491,   494,
-   497,   499,   501,   503,   507,   509,   511,   513,   517,   519,
-   521,   528,   534,   539,   543,   546,   550,   552,   555,   557,
-   558,   559,   563,   565,   566,   568,   573,   576,   586,   589,
-   591,   595,   598,   605,   611,   619,   621,   623,   625,   627,
-   631,   633,   638,   645,   646,   650,   653,   655,   657,   659,
-   661,   663,   665,   667,   674,   677,   679,   684,   686,   690,
-   695,   700,   704,   709,   711,   713,   720,   722,   724,   728,
-   731,   733,   737,   739,   740,   745,   750,   756,   764,   771,
-   774,   777,   781,   784,   788,   797,   799,   801,   806,   813,
-   821,   823,   827,   835,   846,   850,   853,   856,   859,   862,
-   865,   868,   871,   873,   877,   883,   888,   890,   894,   897,
-   901,   903,   906,   908,   909,   911,   915,   919,   925,   930,
-   935,   939,   943,   949,   951,   952,   957,   960,   964,   969,
-   977,   979,   982,   984,   986,   990,   994,   997,  1001,  1003,
-  1004,  1005,  1006,  1007,  1017,  1019,  1020,  1021,  1022,  1025,
-  1027,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,  1036,
-  1039,  1044,  1055,  1062,  1066,  1077,  1087,  1093,  1099,  1105,
-  1107,  1113,  1115,  1121,  1123,  1125,  1127,  1129,  1133,  1135,
-  1136,  1137,  1138,  1139,  1140,  1143,  1146,  1148,  1150,  1154,
-  1159,  1164,  1172,  1178,  1180,  1182,  1186,  1189,  1191,  1193,
-  1202,  1204,  1211,  1216,  1225,  1227,  1234,  1240,  1245,  1247,
-  1249,  1253,  1261,  1264,  1266,  1268,  1272,  1277,  1286,  1291,
-  1294,  1301,  1303,  1305,  1309,  1312,  1321,  1328,  1330,  1334,
-  1347,  1349,  1355,  1361,  1365,  1367,  1371,  1374,  1376,  1380,
-  1383,  1385,  1387,  1391,  1394,  1396,  1398,  1402,  1405,  1407,
-  1409,  1413,  1419,  1421,  1425,  1432,  1434,  1436,  1438,  1442,
-  1450,  1453,  1455,  1457,  1461,  1463,  1470,  1478,  1495,  1497,
-  1499,  1503,  1509,  1514,  1516,  1519,  1521,  1523,  1525,  1526,
-  1527,  1528,  1532,  1534,  1536,  1541,  1543,  1545,  1547,  1549,
-  1553,  1556,  1561,  1563,  1568,  1569,  1570,  1571,  1572,  1574,
-  1576,  1578,  1580,  1582,  1586,  1588,  1591,  1597,  1602,  1606,
-  1609,  1611,  1613,  1617,  1619,  1621,  1623,  1627,  1630,  1634,
-  1640,  1642,  1650,  1653,  1655,  1659,  1662,  1670,  1674,  1677,
-  1679,  1690,  1701,  1706,  1715,  1717,  1721,  1724,  1726,  1731,
-  1736,  1741,  1748,  1750,  1751,  1752,  1755,  1760,  1765,  1767,
-  1768,  1770,  1772,  1773,  1775,  1779,  1782,  1786,  1789,  1793,
-  1795,  1797,  1799,  1800,  1802,  1806,  1814,  1816,  1818,  1830,
-  1832,  1838,  1840,  1842,  1846,  1848,  1853,  1858,  1863,  1865,
-  1867,  1871,  1873,  1878,  1883,  1885,  1889,  1891,  1896,  1901,
-  1906,  1908,  1910,  1914,  1916,  1921,  1926,  1931,  1936,  1938,
-  1940,  1942,  1944,  1946,  1950,  1952,  1957,  1962,  1964,  1968,
-  1970,  1975,  1979,  1981,  1986,  1990,  1992,  1997,  2001,  2003,
-  2008,  2012,  2014,  2019,  2023,  2025,  2030,  2036,  2038,  2042,
-  2044,  2047,  2050,  2058,  2060,  2061,  2064,  2066,  2069,  2073
+   266,   272,   274,   275,   276,   277,   278,   282,   284,   287,
+   289,   290,   293,   295,   298,   302,   306,   310,   316,   318,
+   320,   322,   327,   329,   332,   336,   341,   346,   348,   349,
+   350,   351,   352,   353,   354,   357,   362,   368,   370,   373,
+   376,   378,   382,   384,   387,   414,   416,   420,   433,   435,
+   439,   446,   447,   449,   459,   464,   479,   483,   486,   489,
+   492,   494,   496,   498,   502,   504,   506,   508,   512,   514,
+   516,   523,   529,   534,   538,   541,   545,   547,   550,   552,
+   553,   554,   558,   560,   561,   563,   568,   571,   581,   584,
+   586,   590,   593,   600,   606,   614,   616,   618,   620,   622,
+   626,   628,   633,   640,   641,   645,   648,   650,   652,   654,
+   656,   658,   660,   662,   669,   672,   674,   679,   681,   685,
+   690,   695,   699,   704,   706,   708,   715,   717,   719,   723,
+   726,   728,   732,   734,   735,   740,   745,   751,   759,   766,
+   769,   772,   776,   779,   783,   792,   794,   796,   801,   808,
+   816,   818,   822,   830,   841,   845,   848,   851,   854,   857,
+   860,   863,   866,   868,   872,   878,   883,   885,   889,   892,
+   896,   898,   901,   903,   904,   906,   910,   914,   920,   925,
+   930,   934,   938,   944,   946,   947,   952,   955,   959,   964,
+   972,   974,   977,   979,   981,   985,   989,   992,   996,   998,
+   999,  1000,  1001,  1002,  1012,  1014,  1015,  1016,  1017,  1020,
+  1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
+  1034,  1039,  1050,  1057,  1061,  1072,  1082,  1088,  1094,  1100,
+  1102,  1108,  1110,  1116,  1118,  1120,  1122,  1124,  1128,  1130,
+  1131,  1132,  1133,  1134,  1135,  1138,  1141,  1143,  1145,  1149,
+  1154,  1159,  1165,  1174,  1180,  1182,  1184,  1188,  1190,  1191,
+  1192,  1195,  1197,  1200,  1204,  1206,  1209,  1216,  1222,  1224,
+  1226,  1230,  1238,  1241,  1243,  1245,  1249,  1254,  1263,  1268,
+  1271,  1278,  1280,  1282,  1286,  1289,  1298,  1305,  1307,  1311,
+  1324,  1326,  1332,  1338,  1342,  1344,  1348,  1351,  1353,  1357,
+  1360,  1362,  1364,  1368,  1371,  1373,  1375,  1379,  1382,  1384,
+  1386,  1390,  1396,  1398,  1402,  1409,  1411,  1413,  1415,  1419,
+  1427,  1430,  1432,  1434,  1438,  1440,  1447,  1455,  1473,  1475,
+  1477,  1481,  1487,  1492,  1494,  1497,  1499,  1501,  1503,  1504,
+  1505,  1506,  1510,  1512,  1514,  1519,  1521,  1523,  1525,  1527,
+  1531,  1534,  1539,  1541,  1546,  1547,  1548,  1549,  1550,  1552,
+  1554,  1556,  1558,  1560,  1564,  1566,  1569,  1575,  1580,  1584,
+  1587,  1589,  1591,  1595,  1597,  1599,  1601,  1605,  1608,  1612,
+  1618,  1620,  1628,  1631,  1633,  1637,  1640,  1648,  1652,  1655,
+  1657,  1668,  1679,  1684,  1693,  1695,  1699,  1702,  1704,  1709,
+  1714,  1719,  1726,  1728,  1729,  1730,  1733,  1738,  1743,  1745,
+  1746,  1748,  1750,  1751,  1753,  1757,  1760,  1764,  1767,  1771,
+  1773,  1775,  1777,  1778,  1780,  1784,  1792,  1794,  1796,  1808,
+  1810,  1816,  1818,  1820,  1824,  1826,  1831,  1836,  1841,  1843,
+  1845,  1849,  1851,  1856,  1861,  1863,  1867,  1869,  1874,  1879,
+  1884,  1886,  1888,  1892,  1894,  1899,  1904,  1909,  1914,  1916,
+  1918,  1920,  1922,  1924,  1928,  1930,  1935,  1940,  1942,  1946,
+  1948,  1953,  1957,  1959,  1964,  1968,  1970,  1975,  1979,  1981,
+  1986,  1990,  1992,  1997,  2001,  2003,  2008,  2014,  2016,  2020,
+  2022,  2025,  2028,  2036,  2038,  2039,  2042,  2044,  2047,  2051
 };
 #endif
 
@@ -583,22 +583,22 @@ static const char * const yytname[] = {   "$","error","$undefined.","PLUS_TK",
 "local_variable_declaration","statement","statement_nsi","statement_without_trailing_substatement",
 "empty_statement","label_decl","labeled_statement","labeled_statement_nsi","expression_statement",
 "statement_expression","if_then_statement","if_then_else_statement","if_then_else_statement_nsi",
-"switch_statement","switch_expression","switch_block","switch_block_statement_groups",
-"switch_block_statement_group","group_of_labels","switch_labels","switch_label",
-"while_expression","while_statement","while_statement_nsi","do_statement_begin",
-"do_statement","for_statement","for_statement_nsi","for_header","for_begin",
-"for_init","for_update","statement_expression_list","break_statement","continue_statement",
-"return_statement","throw_statement","synchronized_statement","synchronized",
-"try_statement","catches","catch_clause","catch_clause_parameter","finally",
-"primary","primary_no_new_array","class_instance_creation_expression","something_dot_new",
-"argument_list","array_creation_expression","dim_exprs","dim_expr","dims","field_access",
-"method_invocation","array_access","postfix_expression","post_increment_expression",
-"post_decrement_expression","unary_expression","pre_increment_expression","pre_decrement_expression",
-"unary_expression_not_plus_minus","cast_expression","multiplicative_expression",
-"additive_expression","shift_expression","relational_expression","equality_expression",
-"and_expression","exclusive_or_expression","inclusive_or_expression","conditional_and_expression",
-"conditional_or_expression","conditional_expression","assignment_expression",
-"assignment","left_hand_side","assignment_operator","expression","constant_expression", NULL
+"switch_statement","@9","switch_expression","switch_block","switch_block_statement_groups",
+"switch_block_statement_group","switch_labels","switch_label","while_expression",
+"while_statement","while_statement_nsi","do_statement_begin","do_statement",
+"for_statement","for_statement_nsi","for_header","for_begin","for_init","for_update",
+"statement_expression_list","break_statement","continue_statement","return_statement",
+"throw_statement","synchronized_statement","synchronized","try_statement","catches",
+"catch_clause","catch_clause_parameter","finally","primary","primary_no_new_array",
+"class_instance_creation_expression","something_dot_new","argument_list","array_creation_expression",
+"dim_exprs","dim_expr","dims","field_access","method_invocation","array_access",
+"postfix_expression","post_increment_expression","post_decrement_expression",
+"unary_expression","pre_increment_expression","pre_decrement_expression","unary_expression_not_plus_minus",
+"cast_expression","multiplicative_expression","additive_expression","shift_expression",
+"relational_expression","equality_expression","and_expression","exclusive_or_expression",
+"inclusive_or_expression","conditional_and_expression","conditional_or_expression",
+"conditional_expression","assignment_expression","assignment","left_hand_side",
+"assignment_operator","expression","constant_expression", NULL
 };
 #endif
 
@@ -628,8 +628,8 @@ static const short yyr1[] = {     0,
    188,   189,   190,   190,   191,   192,   192,   192,   192,   192,
    192,   192,   192,   192,   192,   192,   192,   192,   193,   193,
    193,   193,   193,   193,   193,   194,   194,   194,   194,   195,
-   196,   197,   198,   198,   198,   198,   199,   199,   199,   199,
-   200,   200,   201,   202,   203,   203,   204,   204,   204,   204,
+   196,   198,   197,   199,   199,   199,   199,   200,   200,   200,
+   200,   201,   201,   202,   203,   203,   204,   204,   204,   204,
    204,   205,   206,   206,   206,   206,   207,   208,   209,   210,
    210,   210,   210,   210,   211,   211,   212,   212,   212,   213,
    214,   214,   214,   214,   215,   215,   216,   216,   216,   217,
@@ -681,8 +681,8 @@ static const short yyr2[] = {     0,
      1,     2,     2,     2,     2,     2,     2,     2,     2,     3,
      4,     4,     5,     4,     5,     6,     7,     6,     1,     1,
      1,     1,     1,     1,     1,     5,     2,     3,     4,     7,
-     7,     2,     4,     2,     3,     5,     2,     3,     3,     4,
-     1,     2,     2,     1,     1,     2,     3,     2,     2,     3,
+     7,     0,     3,     4,     2,     3,     5,     2,     3,     3,
+     4,     1,     2,     2,     1,     2,     3,     2,     2,     3,
      2,     4,     2,     2,     3,     4,     2,     1,     7,     7,
      6,     3,     5,     4,     7,     6,     2,     2,     3,     2,
      0,     1,     1,     2,     0,     1,     1,     3,     3,     2,
@@ -738,7 +738,7 @@ static const short yydefact[] = {     0,
    141,     0,    55,     0,     0,   278,     0,     0,     0,     0,
      0,     0,     0,     0,   337,     0,   221,     0,     8,   404,
      0,     0,   195,     0,   210,     0,   191,   193,     0,   194,
-   199,   211,     0,   200,   212,     0,   201,   202,   213,     0,
+   199,   211,     0,   200,   212,     0,   201,   202,   213,   252,
      0,   203,     0,   214,   204,   291,     0,   215,   216,   217,
    219,   218,     0,   220,   245,   244,     0,   242,   243,   240,
    241,   239,   125,   123,     0,   116,     0,     0,   414,   404,
@@ -750,40 +750,40 @@ static const short yydefact[] = {     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    497,   498,     0,   143,     0,   142,   135,   104,   133,   137,
    189,   140,     0,   228,   229,   227,   247,     0,   313,     0,
-   302,   300,     0,   310,   308,     0,   274,     0,   254,     0,
+   302,   300,     0,   310,   308,     0,   274,     0,   255,     0,
    324,     0,   288,     0,   306,   304,     0,     0,   197,     0,
      0,   224,   222,     0,     0,   190,   188,   192,   196,   320,
-   404,   223,   226,     0,   252,   273,     0,   404,     0,   293,
-   297,   290,     0,     0,   317,     0,   126,   124,   122,   121,
-   132,   131,   350,   345,     0,   387,   377,   376,   359,     0,
-   370,   378,     0,   371,     0,   360,     0,     0,     0,     0,
-     0,     0,   347,   338,   182,   181,     0,   349,   344,   389,
-     0,   367,   399,     0,   348,   343,   365,   346,   366,   386,
-   401,     0,   364,     0,   439,   436,   440,   437,   441,   438,
-   445,   443,   446,   444,   451,   448,   452,   449,   453,   450,
-   461,   456,   463,   458,   460,   455,   462,   457,   464,     0,
-   459,   468,   466,   469,   467,   472,   471,   475,   474,   478,
-   477,   481,   480,   484,   483,   488,     0,     0,   493,   492,
-   144,   134,   404,     0,     0,   145,     0,   248,     0,   314,
-   312,   303,   301,   311,   309,   275,     0,   255,     0,     0,
-     0,   321,   325,     0,   322,   289,   307,   305,   338,     0,
-   198,   230,     0,     0,     0,     0,   257,     0,   261,     0,
-   264,   265,     0,   294,     0,   282,     0,     0,   319,     0,
-   395,   396,     0,   382,   383,     0,   379,   372,     0,   375,
-   373,   374,   361,   352,     0,   433,   427,   430,     0,     0,
-   428,   186,   183,   185,   390,     0,   400,   397,     0,   402,
-   398,   355,     0,   487,     0,     0,   146,     0,     0,   147,
-   249,     0,   276,   272,     0,   329,     0,   333,   332,   326,
-   323,   327,   234,     0,   231,   232,     0,   271,   268,   269,
-   500,     0,   259,   262,   264,     0,   258,   266,     0,   299,
-   298,   284,     0,   296,     0,   318,     0,   393,     0,   381,
-   380,   385,   384,   354,   362,   351,   432,   426,   434,   429,
-   369,   368,   391,     0,   356,   357,   489,   486,     0,   148,
-     0,     0,     0,   246,     0,   199,     0,   206,   207,     0,
-   208,   209,     0,   256,   330,     0,   235,     0,     0,   233,
-   270,   267,   260,     0,     0,   283,     0,   316,   315,   394,
-   353,   392,   358,     0,   149,     0,     0,     0,   225,   277,
-     0,   331,   328,   238,   236,     0,     0,   281,     0,     0,
+   404,   223,   226,     0,   273,     0,   404,     0,   293,   297,
+   290,     0,     0,   317,     0,   126,   124,   122,   121,   132,
+   131,   350,   345,     0,   387,   377,   376,   359,     0,   370,
+   378,     0,   371,     0,   360,     0,     0,     0,     0,     0,
+     0,   347,   338,   182,   181,     0,   349,   344,   389,     0,
+   367,   399,     0,   348,   343,   365,   346,   366,   386,   401,
+     0,   364,     0,   439,   436,   440,   437,   441,   438,   445,
+   443,   446,   444,   451,   448,   452,   449,   453,   450,   461,
+   456,   463,   458,   460,   455,   462,   457,   464,     0,   459,
+   468,   466,   469,   467,   472,   471,   475,   474,   478,   477,
+   481,   480,   484,   483,   488,     0,     0,   493,   492,   144,
+   134,   404,     0,     0,   145,     0,   248,     0,   314,   312,
+   303,   301,   311,   309,   275,     0,   256,     0,     0,     0,
+   321,   325,     0,   322,   289,   307,   305,   338,     0,   198,
+   230,     0,     0,     0,   253,     0,   294,     0,   282,     0,
+     0,   319,     0,   395,   396,     0,   382,   383,     0,   379,
+   372,     0,   375,   373,   374,   361,   352,     0,   433,   427,
+   430,     0,     0,   428,   186,   183,   185,   390,     0,   400,
+   397,     0,   402,   398,   355,     0,   487,     0,     0,   146,
+     0,     0,   147,   249,     0,   276,   272,     0,   329,     0,
+   333,   332,   326,   323,   327,   234,     0,   231,   232,     0,
+     0,     0,   258,     0,   262,     0,   265,     0,   299,   298,
+   284,     0,   296,     0,   318,     0,   393,     0,   381,   380,
+   385,   384,   354,   362,   351,   432,   426,   434,   429,   369,
+   368,   391,     0,   356,   357,   489,   486,     0,   148,     0,
+     0,     0,   246,     0,   199,     0,   206,   207,     0,   208,
+   209,     0,   257,   330,     0,   235,     0,     0,   233,   271,
+   268,   269,   500,     0,   260,   263,     0,   259,     0,   266,
+     0,     0,   283,     0,   316,   315,   394,   353,   392,   358,
+     0,   149,     0,     0,     0,   225,   277,     0,   331,   328,
+   238,   236,     0,   270,   267,   261,     0,   281,     0,     0,
      0,   150,     0,   250,     0,     0,   237,   279,   280,   152,
      0,     0,     0,     0,   151,     0,     0,     0,     0,   286,
      0,   251,   285,     0,     0,     0
@@ -792,1209 +792,1238 @@ static const short yydefact[] = {     0,
 static const short yydefgoto[] = {   774,
    210,   278,   211,    85,    86,    68,    60,    87,   212,    22,
     23,    24,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,   132,   105,    47,    70,   104,   130,   162,   163,
+   282,   283,   132,   105,    47,    70,   104,   130,   162,   163,
    164,    91,   114,   115,   116,   213,   166,   258,    92,   111,
    181,   182,   136,   185,   398,   168,   169,   170,   260,   171,
-   172,   402,   554,   284,    18,    43,    72,    65,   107,    44,
+   172,   402,   553,   284,    18,    43,    72,    65,   107,    44,
     63,    94,    95,    96,    97,   214,   358,   285,   175,   437,
-   286,   287,   288,   289,   290,   705,   291,   292,   293,   294,
-   708,   295,   296,   297,   298,   709,   299,   300,   445,   588,
-   589,   590,   591,   592,   301,   302,   711,   303,   304,   305,
-   712,   306,   307,   452,   673,   674,   308,   309,   310,   311,
-   312,   313,   314,   572,   573,   574,   575,   215,   216,   217,
-   218,   491,   219,   471,   472,   473,   220,   221,   222,   223,
+   719,   287,   288,   289,   290,   694,   291,   292,   293,   294,
+   697,   295,   296,   297,   298,   698,   299,   444,   300,   585,
+   654,   655,   656,   657,   301,   302,   700,   303,   304,   305,
+   701,   306,   307,   451,   662,   663,   308,   309,   310,   311,
+   312,   313,   314,   571,   572,   573,   574,   215,   216,   217,
+   218,   490,   219,   470,   471,   472,   220,   221,   222,   223,
    224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
    234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-   244,   393,   492,   662
+   244,   393,   491,   714
 };
 
-static const short yypact[] = {   466,
--32768,-32768,   432,   -55,   484,   498,-32768,-32768,   425,    21,
-   576,-32768,-32768,-32768,-32768,   594,-32768,-32768,-32768,-32768,
-    13,-32768,-32768,-32768,   348,-32768,   361,-32768,    28,   143,
--32768,-32768,   592,   618,-32768,   -55,   505,-32768,-32768,   478,
--32768,   510,   -46,   -30,-32768,   514,    23,-32768,-32768,   -55,
-   633,   360,-32768,   413,-32768,    95,-32768,-32768,-32768,-32768,
-   -11,  1145,-32768,   521,   -46,-32768,-32768,    67,   525,-32768,
--32768,   -46,   -30,-32768,    23,-32768,-32768,-32768,   542,-32768,
--32768,-32768,   554,     4,-32768,-32768,    48,   184,   791,-32768,
--32768,   212,-32768,  1241,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   107,   126,-32768,   -46,-32768,-32768,   156,
-     9,-32768,   235,   435,-32768,   790,     9,    34,    37,   182,
--32768,   580,   582,-32768,-32768,-32768,-32768,   588,   861,-32768,
--32768,   126,   434,   620,    56,-32768,-32768,-32768,   625,  1878,
-    72,   328,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     9,
--32768,   448,     9,-32768,-32768,   311,   342,-32768,   384,   791,
--32768,  1029,-32768,-32768,-32768,-32768,   174,-32768,   373,-32768,
--32768,   437,-32768,-32768,  1600,-32768,-32768,-32768,   628,   901,
-   -67,-32768,-32768,-32768,   395,-32768,-32768,-32768,   167,-32768,
--32768,  2625,  2690,  2741,  2806,   489,    16,   572,-32768,  2857,
-  2922,  2973,  5113,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   500,   949,    49,-32768,   509,   461,-32768,   641,-32768,   810,
--32768,   823,   881,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   995,   926,  1016,   918,   932,   613,   629,   637,   659,    10,
--32768,-32768,-32768,   887,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   839,   437,-32768,-32768,-32768,   341,   590,   586,
--32768,   811,   305,   335,  3038,-32768,   141,  1929,    12,   352,
-   357,    98,   430,   255,   609,  5410,-32768,   -55,   701,   902,
-   511,   873,-32768,   627,-32768,  1532,-32768,-32768,   649,-32768,
--32768,-32768,  1673,-32768,-32768,   664,-32768,-32768,-32768,   674,
-  1673,-32768,  1673,-32768,-32768,  5461,   704,-32768,-32768,-32768,
--32768,-32768,   447,-32768,   693,   834,   881,   939,   944,-32768,
--32768,-32768,-32768,   899,   644,-32768,   692,   647,-32768,   416,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    27,
--32768,   655,   954,   631,   631,   452,-32768,-32768,-32768,-32768,
--32768,   624,  1046,    22,-32768,   717,-32768,   603,    31,  5178,
-  3089,   604,-32768,    -8,  3154,-32768,   457,-32768,-32768,  3205,
-  3270,  3321,  3386,  3437,  3502,  3553,  3618,  3669,  3734,  3785,
-  3850,   760,  3901,  3966,  4017,  4082,  4133,  4198,  4249,  1994,
--32768,-32768,  4314,-32768,   176,-32768,-32768,-32768,   718,-32768,
--32768,-32768,  1532,-32768,-32768,-32768,-32768,  4365,-32768,   217,
--32768,-32768,   219,-32768,-32768,   227,-32768,  4430,-32768,  4481,
--32768,   751,-32768,  4895,-32768,-32768,   238,    59,   682,  2045,
-   686,-32768,-32768,   -55,  2110,-32768,-32768,-32768,-32768,-32768,
-  1061,-32768,-32768,   602,-32768,-32768,   723,  1000,   901,-32768,
--32768,-32768,   117,  2161,-32768,  4546,-32768,   899,-32768,-32768,
--32768,-32768,-32768,-32768,   121,   738,-32768,-32768,-32768,  2226,
-   631,-32768,   362,   631,   362,-32768,  2277,  4597,   204,   690,
-  2342,   711,-32768,   973,-32768,-32768,  1813,-32768,-32768,-32768,
-   308,-32768,-32768,   240,-32768,-32768,-32768,-32768,-32768,   744,
--32768,   244,-32768,  5229,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   995,-32768,   995,-32768,   926,-32768,   926,-32768,   926,
--32768,  1016,-32768,  1016,-32768,  1016,-32768,  1016,-32768,     4,
--32768,-32768,   918,-32768,   918,-32768,   932,-32768,   613,-32768,
-   629,-32768,   637,-32768,   659,-32768,   846,   761,-32768,-32768,
--32768,-32768,  1043,  1532,   758,-32768,  1532,-32768,   271,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   316,-32768,   759,   460,
-   257,   751,-32768,   373,-32768,-32768,-32768,-32768,-32768,   469,
-   682,-32768,   868,    86,   205,  4662,-32768,   605,-32768,  1600,
-   635,-32768,   778,-32768,  5029,-32768,  4920,   775,   792,   796,
--32768,-32768,  5294,-32768,-32768,   247,-32768,   787,   261,-32768,
-   787,-32768,-32768,   126,    88,-32768,-32768,-32768,  4713,  5071,
--32768,-32768,-32768,-32768,-32768,  4778,-32768,-32768,  5345,-32768,
--32768,   126,   474,-32768,  4829,   827,-32768,  1532,  2393,-32768,
--32768,  1739,-32768,-32768,   294,-32768,   736,-32768,-32768,-32768,
--32768,-32768,-32768,  2458,-32768,-32768,   894,-32768,-32768,-32768,
--32768,   400,-32768,-32768,   713,  1441,-32768,-32768,  5410,-32768,
--32768,-32768,   803,   812,  4962,-32768,   309,-32768,   515,-32768,
--32768,-32768,-32768,-32768,-32768,   126,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   584,-32768,   126,-32768,-32768,   486,-32768,
-   256,   102,   495,-32768,   863,   878,  1739,-32768,-32768,  1739,
--32768,-32768,   843,-32768,   850,   858,-32768,   959,   135,-32768,
--32768,-32768,-32768,   876,  1673,-32768,   888,-32768,-32768,-32768,
--32768,-32768,-32768,  2509,-32768,   293,  4365,  1673,-32768,-32768,
-  2574,-32768,-32768,-32768,-32768,   961,   907,-32768,  1673,   296,
-   138,-32768,   322,-32768,  4920,   909,-32768,-32768,-32768,-32768,
-   300,  1739,   915,  4962,-32768,   911,  1739,   917,  1739,-32768,
-  1739,-32768,-32768,  1017,  1019,-32768
+static const short yypact[] = {   465,
+-32768,-32768,   172,   -63,   391,   416,-32768,-32768,   463,   205,
+   546,-32768,-32768,-32768,-32768,   535,-32768,-32768,-32768,-32768,
+    11,-32768,-32768,-32768,   295,-32768,   353,-32768,    15,   560,
+-32768,-32768,   551,   630,-32768,   -63,   443,-32768,-32768,   500,
+-32768,   450,   -51,   -27,-32768,   453,    40,-32768,-32768,   -63,
+   654,   395,-32768,   358,-32768,    24,-32768,-32768,-32768,-32768,
+   167,   921,-32768,   486,   -51,-32768,-32768,   247,   512,-32768,
+-32768,   -51,   -27,-32768,    40,-32768,-32768,-32768,   554,-32768,
+-32768,-32768,   556,   150,-32768,-32768,   187,   -44,   741,-32768,
+-32768,    29,-32768,  1997,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   220,   262,-32768,   -51,-32768,-32768,   313,
+     5,-32768,   484,   679,-32768,   570,     5,    66,    88,   325,
+-32768,   562,   566,-32768,-32768,-32768,-32768,   637,  1188,-32768,
+-32768,   262,   707,   657,   210,-32768,-32768,-32768,   662,  2015,
+   242,   446,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     5,
+-32768,   732,     5,-32768,-32768,   366,   372,-32768,   411,   741,
+-32768,  1592,-32768,-32768,-32768,-32768,    59,-32768,   448,-32768,
+-32768,   466,-32768,-32768,  1807,-32768,-32768,-32768,   674,   775,
+   -22,-32768,-32768,-32768,   469,-32768,-32768,-32768,   579,-32768,
+-32768,  2762,  2827,  2878,  2943,   473,    18,   685,-32768,  2994,
+  3059,  3110,  5187,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   522,   908,    81,-32768,   534,   547,-32768,   688,-32768,   621,
+-32768,   743,   813,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   885,   860,   949,   891,   857,   635,   671,   656,   703,   194,
+-32768,-32768,-32768,   786,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   843,   466,-32768,-32768,-32768,   357,   625,   650,
+-32768,   449,   162,   219,  3175,-32768,   177,  2066,    20,   294,
+   364,    73,   390,   207,   665,  5484,-32768,   -63,   378,   869,
+   424,   954,-32768,   706,-32768,  1739,-32768,-32768,   651,-32768,
+-32768,-32768,  1875,-32768,-32768,   684,-32768,-32768,-32768,-32768,
+  1875,-32768,  1875,-32768,-32768,  5535,   730,-32768,-32768,-32768,
+-32768,-32768,   396,-32768,   716,   751,   813,   849,   852,-32768,
+-32768,-32768,-32768,   829,   691,-32768,   754,   698,-32768,   434,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    21,
+-32768,   708,   876,   710,   710,   401,-32768,-32768,-32768,-32768,
+-32768,   609,   956,   268,-32768,   719,-32768,   470,    32,  5252,
+  3226,   584,-32768,   -40,  3291,-32768,   413,-32768,-32768,  3342,
+  3407,  3458,  3523,  3574,  3639,  3690,  3755,  3806,  3871,  3922,
+  3987,   736,  4038,  4103,  4154,  4219,  4270,  4335,  4386,  2131,
+-32768,-32768,  4451,-32768,     0,-32768,-32768,-32768,   744,-32768,
+-32768,-32768,  1739,-32768,-32768,-32768,-32768,  4502,-32768,    36,
+-32768,-32768,    48,-32768,-32768,    89,-32768,  4567,-32768,  4618,
+-32768,   641,-32768,  1328,-32768,-32768,    94,   300,   737,  2182,
+   557,-32768,-32768,   -63,  2247,-32768,-32768,-32768,-32768,-32768,
+   979,-32768,-32768,   755,-32768,   780,   893,   775,-32768,-32768,
+-32768,   119,  2298,-32768,  4683,-32768,   829,-32768,-32768,-32768,
+-32768,-32768,-32768,   130,   761,-32768,-32768,-32768,  2363,   710,
+-32768,   139,   710,   139,-32768,  2414,  4734,   250,   -42,  2479,
+   628,-32768,  5560,-32768,-32768,  1126,-32768,-32768,-32768,   514,
+-32768,-32768,   251,-32768,-32768,-32768,-32768,-32768,   773,-32768,
+   253,-32768,  5303,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   885,-32768,   885,-32768,   860,-32768,   860,-32768,   860,-32768,
+   949,-32768,   949,-32768,   949,-32768,   949,-32768,   150,-32768,
+-32768,   891,-32768,   891,-32768,   857,-32768,   635,-32768,   671,
+-32768,   656,-32768,   703,-32768,   867,   797,-32768,-32768,-32768,
+-32768,   933,  1739,   789,-32768,  1739,-32768,   304,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   345,-32768,   806,   421,   202,
+   641,-32768,   448,-32768,-32768,-32768,-32768,-32768,   430,   737,
+-32768,   917,   116,   371,-32768,   831,-32768,  5075,-32768,  5008,
+   823,   836,   839,-32768,-32768,  5368,-32768,-32768,   263,-32768,
+   848,   266,-32768,   848,-32768,-32768,   262,   222,-32768,-32768,
+-32768,  4799,  5122,-32768,-32768,-32768,-32768,-32768,  4850,-32768,
+-32768,  5419,-32768,-32768,   262,   517,-32768,  4915,   738,-32768,
+  1739,  2530,-32768,-32768,  1941,-32768,-32768,   231,-32768,   794,
+-32768,-32768,-32768,-32768,-32768,-32768,  2595,-32768,-32768,   935,
+    30,  4966,-32768,   509,-32768,  1489,-32768,  5484,-32768,-32768,
+-32768,   859,   846,  5033,-32768,   237,-32768,   633,-32768,-32768,
+-32768,-32768,-32768,-32768,   262,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   687,-32768,   262,-32768,-32768,   440,-32768,    97,
+   227,   441,-32768,   907,   931,  1941,-32768,-32768,  1941,-32768,
+-32768,   878,-32768,   914,   918,-32768,  1001,   236,-32768,-32768,
+-32768,-32768,-32768,   342,-32768,-32768,  1562,-32768,  1671,-32768,
+   926,  1875,-32768,   928,-32768,-32768,-32768,-32768,-32768,-32768,
+  2646,-32768,   105,  4502,  1875,-32768,-32768,  2711,-32768,-32768,
+-32768,-32768,  1010,-32768,-32768,-32768,   924,-32768,  1875,   136,
+   245,-32768,   398,-32768,  5008,   929,-32768,-32768,-32768,-32768,
+   160,  1941,   939,  5033,-32768,   971,  1941,   943,  1941,-32768,
+  1941,-32768,-32768,  1038,  1041,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   -22,   -52,   634,   109,  -119,   375,-32768,    -3,   583,
--32768,   129,-32768,  1011,   746,-32768,   663,-32768,-32768,   814,
-   -53,   -60,-32768,-32768,   977,   952,-32768,  -125,-32768,   867,
--32768,   -99,  -115,   895,  -173,  -191,-32768,-32768,   115,   -39,
-   783,  -326,   -98,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   879,-32768,-32768,   640,   -58,-32768,-32768,-32768,-32768,   996,
-   643,-32768,   960,-32768,-32768,   354,-32768,  -111,   800,  -383,
-  -387,  -275,-32768,   766,    63,    97,  -586,-32768,  -423,-32768,
--32768,-32768,  -282,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   476,-32768,   496,  -565,  -350,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  -320,-32768,  -335,   768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   522,-32768,   523,-32768,-32768,   -15,
--32768,  -340,-32768,   754,   386,  -260,   975,   243,  1095,   266,
-   423,   490,  -147,   513,   569,  -479,-32768,   683,   729,   585,
-   685,   698,   714,   715,   719,   720,-32768,   477,   724,   668,
--32768,-32768,    44,-32768
+-32768,     7,   -53,   660,    87,  -121,   -35,-32768,    -3,   -75,
+-32768,   134,-32768,  1033,   582,-32768,     9,-32768,-32768,   837,
+    17,   132,-32768,-32768,   992,   976,-32768,  -126,-32768,   892,
+-32768,   153,  -103,   920,  -172,  -199,-32768,-32768,   311,   689,
+   808,  -326,   -69,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   902,-32768,-32768,   661,   -54,-32768,-32768,-32768,-32768,  1014,
+   623,-32768,   975,-32768,-32768,   120,-32768,  -124,   814,  -401,
+  -164,  -276,-32768,   767,   296,   146,  -434,-32768,  -358,-32768,
+-32768,-32768,  -271,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   423,   429,  -442,  -343,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  -333,-32768,  -640,   781,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   508,-32768,   519,-32768,-32768,   -15,
+-32768,  -420,-32768,   746,   336,  -248,  1100,   185,  1122,   333,
+   379,   425,  -130,   569,   613,  -469,-32768,   565,   709,   563,
+   567,   714,   717,   705,   718,   720,-32768,   477,   701,   690,
+-32768,-32768,    42,-32768
 };
 
 
-#define        YYLAST          5570
+#define        YYLAST          5669
 
 
 static const short yytable[] = {    21,
-   460,    90,    29,    93,   621,   324,   176,   152,    89,    84,
-   438,   357,   341,    38,   184,   557,   341,   174,   143,   556,
-   -31,     1,   483,   451,   389,   668,   326,   463,    48,   165,
-    20,   488,   327,    90,   144,    93,    84,   146,    61,    83,
-    89,    84,    61,   117,   333,   335,   337,   339,    62,   363,
-   174,   249,   348,   350,   251,   706,   186,   259,    88,   483,
-    61,   134,   165,   499,     2,    61,   123,   101,   161,    64,
-   173,    83,   246,   261,    69,   160,    84,    20,   346,   180,
-    84,     4,   150,   153,   475,    88,   656,     5,   685,    50,
-    88,   480,   482,   464,   584,    76,   390,   489,   421,   668,
-   118,   161,   656,   173,  -154,   135,    83,    84,   160,    84,
-   179,    39,   342,    40,   283,   484,   342,   594,   -66,     7,
-   706,   282,   279,   706,    61,    88,    49,    84,    50,    88,
-    61,   145,    25,    27,   147,   745,   615,   123,   745,    83,
-   690,   411,   -34,     1,   119,   344,   399,   -93,   -93,   352,
-    59,   458,   579,   187,    67,   396,    88,   325,    88,   315,
-   422,   -66,   429,   633,    52,    54,   638,   137,    57,   247,
-   637,   280,    59,   640,   257,   706,    88,    59,    57,   657,
-   706,   686,   706,   245,   706,   626,     2,   626,   330,   330,
-   330,   330,   157,    77,    61,   736,   330,   330,   353,   180,
-    84,   626,   666,     4,   618,   658,   128,   110,   462,     5,
-   608,   113,   124,   611,   601,  -292,   595,   560,   707,   562,
-   129,   602,   506,   508,   510,   283,    20,   564,   746,    84,
-   179,   761,   282,   279,   626,   137,    59,   626,   577,   412,
-   627,     7,    67,   167,   630,   354,   245,   680,   133,    88,
-   110,   113,   449,   279,   700,   425,   655,   648,   -96,   434,
-   -96,   682,   679,   -96,   -96,   -96,   -96,   189,  -103,   551,
-   315,   641,  -103,   180,    84,   327,   167,   315,    88,   148,
-   120,   438,   280,   707,    50,   315,   707,   315,   694,   441,
-   315,   710,   659,   720,   714,   624,   744,   441,   702,   441,
-   757,   605,   448,   281,   179,  -320,   345,   189,   410,   728,
-   125,   416,   671,   719,   451,   561,   643,   563,   581,   428,
-   716,   713,   641,    88,    61,   565,   -96,   133,   248,   530,
-   617,   -96,   -96,   -96,   -96,   407,   578,   628,   707,   727,
-    20,   631,   283,   707,   681,   707,   367,   707,    41,   282,
-   279,   157,   417,   426,   735,   442,   710,   419,   683,   710,
-    71,    45,   438,   446,   642,   447,   330,   330,   330,   330,
+   459,   555,    29,   357,   174,   176,   324,    93,    84,   438,
+   286,    38,   184,   614,   583,    48,    16,    31,   341,   152,
+   341,   462,    20,   724,    76,    16,    16,    16,    99,   124,
+   710,   498,   487,   103,   450,    84,   559,   174,    61,    93,
+    84,    31,    61,    62,   259,    20,    16,   143,   561,    16,
+    16,   612,   120,   159,   602,   608,    50,   134,    88,   257,
+    61,   333,   335,   337,   339,    61,   144,    16,    83,   348,
+   350,   326,    64,   421,   173,    84,   346,   327,    89,    84,
+   249,   363,   626,   251,   159,    88,   159,   463,   146,   563,
+    88,    69,   155,   550,   576,   123,   474,   648,   488,   327,
+    83,   135,   261,   479,   481,   709,    84,   173,    84,    39,
+    89,    40,  -154,    49,   763,    50,   649,   711,   342,   587,
+   342,   279,    77,   768,    61,    88,    84,   125,    59,    88,
+    61,    17,    67,   399,   560,    83,   741,    25,    27,   179,
+    17,    17,    17,   679,   344,   160,   562,   422,   352,   180,
+    59,   630,   457,  -103,   633,    59,    88,  -103,    88,   315,
+   757,    17,  -320,   145,    17,    17,   123,   157,    83,    52,
+    54,   280,    19,    57,   429,   668,    88,   411,   160,   -93,
+   -93,   245,    17,    57,   396,   147,   325,   564,   330,   330,
+   330,   330,   577,    90,    61,   732,   330,   330,   353,    84,
+   695,   683,   641,   752,   -31,     1,   461,   425,   389,   650,
+   186,   691,   110,   720,    59,   619,   113,  -292,   588,   407,
+    67,   601,   674,   594,   604,    90,   708,   649,    84,   689,
+   595,   703,   279,   203,   760,   602,   742,   725,   556,   505,
+   507,   509,   246,   354,   245,   742,   118,   101,     2,    88,
+   611,   620,   279,   623,  -320,   110,   113,    20,   765,   179,
+   161,   695,    20,   669,   695,     4,   671,    50,   482,   180,
+   315,     5,   189,    84,   720,   412,   696,   315,    88,   438,
+   390,   165,   280,   119,   345,   315,   617,   315,   434,   441,
+   315,   699,    20,   161,   417,    41,   157,   441,   -66,   441,
+   482,   702,   447,     7,   634,   426,   410,   187,   281,   416,
+   751,   408,   189,   705,   165,   675,   660,   428,   450,   128,
+   733,   619,   448,    88,    61,  -254,   619,   695,   529,   743,
+   580,   157,   695,   179,   695,   619,   695,   696,   761,   247,
+   696,   -66,   744,   180,   619,   636,   610,   598,   621,   279,
+   624,   367,   699,    45,   438,   699,   129,    42,    74,   316,
+   670,   483,   702,   672,   419,   702,   330,   330,   330,   330,
    330,   330,   330,   330,   330,   330,   330,   330,    88,   330,
-   330,   330,   330,   330,   330,   330,   713,   315,  -253,   713,
-   438,   752,   451,   751,   760,   413,    84,  -320,   765,   553,
-   721,   625,   427,   157,   494,  -138,   189,   626,   502,   644,
-    42,   710,   -65,    74,   281,   762,   710,   316,   710,   763,
-   710,   281,    42,    46,   -30,     1,   434,   408,   768,   281,
-   423,   281,    19,   548,   177,   157,    67,   252,    99,   397,
-   317,   713,  -155,   103,   418,    88,   713,   455,   713,   420,
-   713,   559,   476,   189,  -157,   -65,   203,   503,   609,   649,
-   646,   567,   652,   569,   -65,   -28,     1,   157,     2,   653,
-   466,   688,   451,   494,   330,    46,   253,     2,    55,     3,
-   330,   451,    56,    78,    26,     4,   653,   722,   684,   134,
-    57,     5,   500,   283,   328,   407,   283,   598,    28,   600,
-   282,   279,   155,   282,   279,    53,   695,   -65,   360,     2,
-    58,   432,   361,   606,    66,    80,   362,    20,    81,    20,
-     3,    98,   424,     7,   494,   102,     4,   178,   316,   283,
-   245,   281,     5,   138,   139,   316,   282,   279,   315,   456,
-     6,   315,   109,   316,   477,   316,   250,   139,   316,   504,
-   280,   317,   647,   280,   112,   -25,   -25,   365,   317,    57,
-   731,   654,   189,    20,     7,   729,   317,   696,   317,    20,
-   733,   317,   343,   626,   315,   -29,     1,   283,   734,   315,
-   149,   315,   151,    20,   282,   279,   280,   737,   154,   340,
-    20,   -32,     1,   180,    84,    20,   -25,   318,   433,    20,
-   359,   -25,   -25,   -25,   495,   283,    20,   -25,   730,   364,
-    20,   -25,   282,   279,   626,   330,   330,   -33,     1,     2,
-   183,    78,   315,   385,   179,   188,   315,    20,   323,   661,
-     3,   330,   -35,     1,   280,     2,     4,    35,   441,    20,
-   386,   366,     5,    88,   457,   316,     3,   461,   585,   387,
-   315,   585,     4,    80,    36,   465,    81,    20,     5,   315,
-    37,     2,   280,   586,   319,    20,   586,    20,   317,   692,
-   496,    31,   388,    20,     7,   497,     2,   732,     4,   498,
-   401,   585,   281,   626,     5,   281,   495,   320,   400,    20,
-     7,   315,   459,     4,   315,    31,   586,   587,   486,     5,
-   663,  -153,   487,   441,   704,    20,   441,   100,   318,   315,
-    20,   159,   724,    20,   106,   318,     7,   478,   281,   435,
-   479,   441,   315,   318,   359,   318,    20,   470,   318,    20,
-   667,     7,    20,   315,   441,     2,   715,  -339,  -339,   315,
-    20,    78,   159,   321,   159,   441,   315,   439,   315,   131,
-   580,   315,   496,   315,    30,   315,    34,   497,   441,   585,
-   529,   498,   443,   441,    57,   441,   281,   441,   444,   442,
-   281,    20,   446,    80,   586,   319,    81,    20,    51,     2,
-   753,   139,   319,   619,   756,    78,   609,   748,   593,  -339,
-   319,   121,   319,  -339,   281,   319,   316,   118,   320,   316,
-   754,   359,   454,   739,   620,   320,   740,   609,   723,    78,
-   570,   759,   485,   320,   571,   320,   552,    80,   320,   317,
-    81,    20,   317,    32,   704,   318,   610,   495,   612,   748,
-   603,   754,   316,   759,    35,   281,   629,   316,   281,   316,
-    78,    80,   322,    32,    81,    20,   634,    32,   635,   122,
-   639,    36,   645,   281,   321,   317,   607,    37,   766,   607,
-   317,   321,   317,   770,    32,   772,   281,   773,   655,   321,
-   669,   321,    80,   675,   321,    81,    20,   281,  -341,  -341,
-   316,   140,     2,   609,   316,   676,   141,   142,    78,   677,
-   281,   699,   319,   496,   720,   281,   725,   281,   497,   281,
-  -495,  -495,   498,   317,   156,   404,   405,   317,   316,   406,
-    78,   595,    20,  -496,  -496,   320,    35,   316,   738,    79,
-    80,     4,    78,    81,    20,   368,   369,     5,   373,   374,
-  -341,   317,   394,  -205,  -341,   378,   379,   380,   381,    37,
-   317,   741,    80,   742,    35,    81,    20,   383,   384,   316,
-    78,   743,   316,   322,    80,   157,   158,    81,    20,   744,
-   322,   757,   522,   524,   526,   528,   769,   316,   322,   747,
-   322,   321,   317,   322,   382,   317,   318,   391,   392,   318,
-   316,   749,    80,  -405,  -405,    81,    20,   -15,  -406,  -406,
-   317,   316,  -494,  -494,   360,   141,   142,   316,   430,   370,
-   371,   372,   431,   317,   316,   758,   316,   764,   767,   316,
-   771,   316,   318,   316,   317,   531,   775,   318,   776,   318,
-   317,    33,    78,   375,   376,   377,   108,   317,   256,   317,
-    75,   196,   317,   190,   317,   395,   317,   197,   254,  -494,
-  -494,   360,   555,   319,   198,   361,   319,    73,   199,   362,
-   467,   468,   469,   127,    80,   512,   514,    81,    20,   403,
-   318,   200,   201,   664,   318,   202,   320,   533,   535,   320,
-   322,   450,   156,   453,   204,   205,   206,   207,    78,   319,
-   208,   209,   537,   665,   319,   -15,   319,    79,   318,     4,
-  -494,  -494,   360,   650,   651,     5,   430,   318,   474,   539,
-   362,   541,   320,   516,   518,   520,   543,   320,   545,   320,
-    80,   698,     0,    81,    20,     0,   550,     0,     0,     0,
-     0,     0,   321,   157,   255,   321,     0,   319,   -15,   318,
-     0,   319,   318,  -494,  -494,   360,  -494,  -494,   360,   430,
-     0,     0,   481,   636,     0,     0,   362,   318,     0,     0,
-   320,  -494,  -494,   360,   320,   319,     0,   361,   321,     0,
-   318,   431,     0,   321,   319,   321,   331,   331,   331,   331,
-     0,   318,     0,     0,   331,   331,     0,   318,   320,     0,
-     0,     0,     0,     0,   318,     0,   318,   320,     2,   318,
-     0,   318,     0,   318,    78,     0,   319,     0,     0,   319,
-     0,     0,     0,    79,     0,     4,   321,     0,     0,     0,
-   321,     5,     0,     0,   319,     0,     0,     0,     0,   320,
-     0,   322,   320,     0,   322,     0,    80,   319,     0,    81,
-    20,     0,     0,     0,   321,     0,     0,   320,   319,     0,
-    82,     0,     0,   321,   319,     0,     0,     0,     0,     0,
-   320,   319,     0,   319,     0,     0,   319,   322,   319,     0,
-   319,   320,   322,     0,   322,     0,     0,   320,     0,     0,
-     0,     0,     0,     0,   320,   321,   320,     0,   321,   320,
-     0,   320,     0,   320,     2,     0,   332,   332,   332,   332,
-    78,     0,     0,   321,   332,   332,     0,     0,     0,    79,
-     0,     4,     0,     0,     0,   322,   321,     5,     0,   322,
-     0,     0,     0,     0,     0,     0,     0,   321,     0,     0,
-     0,     0,    80,   321,     0,    81,    20,     0,     0,     0,
-   321,     0,   321,   322,     0,   321,   126,   321,     0,   321,
-     0,     0,   322,     0,   331,   331,   331,   331,   331,   331,
-   331,   331,   331,   331,   331,   331,     0,   331,   331,   331,
-   331,   331,   331,   331,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   322,     0,     0,   322,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   322,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   322,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   322,     0,     0,     0,
-     0,     0,   322,     0,     0,     0,     0,     0,     0,   322,
-     0,   322,     0,     0,   322,     0,   322,     0,   322,     0,
-     0,   262,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   331,     0,     0,     0,     0,     0,   331,     0,
-     0,     0,     0,     0,   332,   332,   332,   332,   332,   332,
-   332,   332,   332,   332,   332,   332,     0,   332,   332,   332,
-   332,   332,   332,   332,   263,   194,   195,  -263,   264,   265,
-    78,   266,     0,     0,   267,     0,     0,     0,   268,   196,
-     0,     0,  -263,     0,     0,   269,   270,     5,   271,     0,
-   272,   273,   198,   274,     0,     0,   275,     0,     0,     0,
-     0,     0,    80,     0,     0,    81,    20,     0,     0,     0,
-     0,     0,   262,   276,     0,   157,  -263,     0,     0,   277,
-     0,     0,   204,   205,   206,   207,     0,     0,   208,   209,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   330,   330,   330,   330,   330,   330,   418,   315,   631,  -155,
+   423,    26,   450,   578,    84,    71,   454,   635,   634,   552,
+   413,   475,   493,   696,   -65,   133,   501,   427,   696,   -65,
+   696,   189,   696,   502,    67,    46,    28,   651,   699,   281,
+    46,   639,   148,   699,   432,   699,   281,   699,   702,   745,
+   646,   547,   652,   702,   281,   702,   281,   702,   637,   167,
+   646,   407,   438,    53,    88,   642,   248,   -65,   645,   558,
+    58,   157,   -65,    66,   434,   397,   420,    42,   189,   566,
+  -138,   568,   -30,     1,   -28,     1,   653,   252,   -25,   -25,
+   316,   493,   167,   330,   118,   465,    20,   316,   359,   330,
+   673,   677,   424,   450,   137,   316,    98,   316,   455,  -157,
+   316,   762,   450,   476,   591,    57,   593,   499,   684,   279,
+    55,    20,   279,   253,    56,   503,     2,   317,     2,   -25,
+   599,   433,   102,   640,   -25,   -25,   -25,     3,   134,     3,
+   -25,   493,   647,     4,   -25,     4,   360,   245,    20,     5,
+   361,     5,   731,   734,   362,    20,   281,   315,    20,     6,
+   315,   726,   157,   404,   405,   -29,     1,   406,   728,   280,
+   -32,     1,   280,   318,   109,   651,   112,   494,   730,   -34,
+     1,     7,   149,     7,    57,   485,   151,   189,   328,   486,
+   652,    20,   315,   340,   315,   -96,   133,   279,    35,   137,
+   -96,   -96,   -96,   -96,   494,    20,    84,   316,   442,     2,
+    30,   603,    34,   605,     2,    36,   445,    20,   446,   319,
+     3,    37,   279,     2,   715,     3,     4,   618,   330,   330,
+   685,     4,     5,   619,    51,   315,   619,     5,   317,   315,
+     4,   579,   359,   495,   330,   317,     5,   280,   496,   -33,
+     1,   441,   497,   317,   364,   317,    88,   154,   317,    20,
+   315,    20,    20,   365,     7,   385,   179,    20,   315,     7,
+   495,    20,   280,   -35,     1,   496,   180,   183,     7,   497,
+   681,   140,   188,   279,   318,   279,   141,   142,   387,    20,
+   -96,   318,   -96,     2,   323,   -96,   -96,   -96,   -96,   318,
+   315,   318,   386,   315,   318,   343,   281,   100,   366,   281,
+     4,   456,   441,   713,   106,   441,     5,     2,   460,   721,
+   569,   315,   477,   315,   570,   478,   315,   177,   464,   359,
+   319,  -495,  -495,   280,     4,   280,   388,   319,   441,   315,
+     5,   613,    20,   400,   602,   319,   727,   319,     7,   131,
+   319,   441,   619,   315,    78,   317,   528,   316,   494,   315,
+   316,   121,    20,   320,   401,   441,   315,    20,   315,   439,
+     2,   315,     7,   315,   458,   315,    78,  -153,   441,    20,
+  -339,  -339,    57,   441,   281,   441,    80,   441,   281,    81,
+    20,   117,   316,    20,   316,   753,    20,   138,   139,   756,
+   729,   318,   443,    20,    35,    78,   619,   321,    80,   281,
+    78,    81,    20,    20,   704,  -341,  -341,     2,   435,   122,
+   178,    36,   688,    78,   495,   600,   469,    37,   600,   496,
+   150,   153,  -339,   497,   484,   316,  -339,    80,    35,   316,
+    81,    20,    80,    20,    78,    81,    20,   319,   453,   281,
+   250,   139,   281,  -496,  -496,    80,   139,     2,    81,    20,
+   316,   736,   551,    78,   737,   586,    32,  -341,   316,   584,
+   281,  -341,   281,   596,   320,   281,    80,   368,   369,    81,
+    20,   320,   373,   374,   322,   622,    32,   627,   281,   320,
+    32,   320,   383,   384,   320,    80,   391,   392,    81,    20,
+   316,   632,   281,   316,   628,   317,     2,    32,   317,   370,
+   371,   372,    78,  -405,  -405,   281,  -406,  -406,   321,   638,
+   281,   316,   281,   316,   281,   321,   316,   766,   378,   379,
+   380,   381,   770,   321,   772,   321,   773,   648,   321,   316,
+   317,   664,   317,   658,    80,   141,   142,    81,    20,   665,
+   693,   318,   666,   316,   318,   709,   394,   511,   513,   316,
+   521,   523,   525,   527,   602,   588,   316,   382,   316,   532,
+   534,   316,   722,   316,   -15,   316,   375,   376,   377,  -494,
+  -494,   360,   735,   317,     2,   430,   318,   317,   318,   431,
+    78,   320,   466,   467,   468,   322,   738,   319,   -15,    79,
+   319,     4,   322,  -494,  -494,   360,  -205,     5,   317,   430,
+   322,   442,   322,   362,   445,   322,   317,    35,  -494,  -494,
+   360,   741,    80,    78,   361,    81,    20,   739,   362,   318,
+   757,   740,   319,   318,   319,   321,    82,   748,   -15,   747,
+    37,   749,   758,  -494,  -494,   360,   769,   764,   317,   430,
+   754,   317,   767,   629,   318,    80,   771,   775,    81,    20,
+   776,   530,   318,    33,   759,    75,  -494,  -494,   360,   317,
+   108,   317,   480,   256,   317,   319,   362,   693,   190,   319,
+   395,   254,   748,   554,   754,    73,   759,   317,   127,  -494,
+  -494,   360,   449,   403,   318,   361,   716,   318,   643,   431,
+   319,   317,   717,   515,   517,   519,   452,   317,   319,   644,
+   473,   540,   322,   549,   317,   318,   317,   318,   536,   317,
+   318,   317,   538,   317,   687,   542,     0,     0,   544,     0,
+     0,     0,     0,   318,     0,     0,     0,     0,     0,     0,
+   319,   320,     0,   319,   320,     0,   615,   318,   192,   193,
+     0,     0,     0,   318,     0,     0,     0,     0,     0,     0,
+   318,   319,   318,   319,     0,   318,   319,   318,     0,   318,
+     0,     0,     0,     0,     0,     0,   320,     0,   320,   319,
+     0,     0,     0,     0,     0,   321,     0,     0,   321,     0,
+   194,   195,     0,   319,     0,    78,     0,     0,     0,   319,
+     0,     0,     0,     0,   196,     0,   319,     0,   319,     0,
+   197,   319,     0,   319,     0,   319,     0,   198,     0,   320,
+   321,   199,   321,   320,     0,     0,     0,    80,     0,     0,
+    81,    20,     0,     0,   200,   201,     0,     0,   202,     0,
+   203,   616,     0,     0,   320,     0,     0,   204,   205,   206,
+   207,   156,   320,   208,   209,     0,     0,    78,     0,     0,
+     0,     0,   322,   321,     0,   322,    79,   321,     4,     0,
+     0,     0,     0,     0,     5,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   320,     0,     0,   320,   321,    80,
+     0,     0,    81,    20,     0,     0,   321,   322,     0,   322,
+     0,     0,   157,   158,     0,   320,     0,   320,     0,     0,
+   320,   331,   331,   331,   331,     0,     0,     0,     0,   331,
+   331,     0,     0,   320,     0,     0,     0,     0,   321,     0,
+     0,   321,     0,   332,   332,   332,   332,   320,     0,     0,
+   322,   332,   332,   320,   322,     0,     0,     0,   575,   321,
+   320,   321,   320,     0,   321,   320,     0,   320,     0,   320,
+     0,     0,     0,     0,     0,   322,     0,   321,     0,     0,
+     0,     0,     0,   322,     0,     0,     0,     0,     0,     0,
+     0,   321,     0,     0,     0,     0,     0,   321,     0,     0,
+     0,  -287,  -287,  -287,   321,     0,   321,  -287,     0,   321,
+     0,   321,     0,   321,     0,   322,  -287,     0,   322,     0,
+     0,     0,  -287,     0,     0,     0,     0,     0,     0,  -287,
+     0,     0,     0,  -287,     0,     0,   322,     0,   322,  -287,
+     0,   322,  -287,  -287,     0,     0,     0,     0,     0,     0,
+  -287,     0,     0,     0,   322,     0,  -287,     0,     0,  -287,
+  -287,  -287,  -287,     0,     0,  -287,  -287,     0,   322,     0,
+     0,     0,     0,     0,   322,     0,     0,     0,     0,     0,
+     0,   322,     0,   322,     0,     0,   322,     0,   322,     0,
+   322,     0,     0,     0,     0,     0,     0,     0,     0,   331,
+   331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+   331,     0,   331,   331,   331,   331,   331,   331,   331,   262,
+     0,   332,   332,   332,   332,   332,   332,   332,   332,   332,
+   332,   332,   332,     0,   332,   332,   332,   332,   332,   332,
+   332,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   332,     0,     0,   263,   194,   195,   332,   264,
+     0,     0,   263,   194,   195,   651,   264,   265,    78,   266,
+     0,     0,   267,     0,     0,     0,   268,   196,     0,     0,
+   652,     0,     0,   269,   270,     5,   271,     0,   272,   273,
+   198,   274,   262,     0,   275,     0,     0,     0,     0,     0,
+    80,     0,     0,    81,    20,     0,   331,     0,     0,     0,
+     0,   276,   331,   157,   718,     0,     0,   277,     0,     0,
+   204,   205,   206,   207,     0,     0,   208,   209,   332,     0,
+     0,     0,     0,     0,   332,   263,   194,   195,   651,   264,
    265,    78,   266,     0,     0,   267,     0,     0,     0,   268,
-   196,     0,     0,   331,   331,     0,   269,   270,     5,   271,
-   262,   272,   273,   198,   274,     0,     0,   275,     0,   331,
-     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
-     0,     0,     0,     0,   276,     0,   157,   436,     0,     0,
+   196,     0,     0,   652,     0,     0,   269,   270,     5,   271,
+     0,   272,   273,   198,   274,   156,     0,   275,     0,     0,
+     0,    78,     0,    80,     0,     0,    81,    20,     0,     0,
+    79,     0,     4,     0,   276,     0,   157,   746,     5,     0,
    277,     0,     0,   204,   205,   206,   207,     0,     0,   208,
-   209,     0,     0,   263,   194,   195,     0,   264,   265,    78,
-   266,     0,     0,   267,     0,     0,     0,   268,   196,     0,
-     0,     0,     0,     0,   269,   270,     5,   271,     0,   272,
-   273,   198,   274,   262,     0,   275,     0,     0,     0,     0,
-     0,    80,     0,     0,    81,    20,     0,     0,     0,     0,
-     0,     0,   276,     0,   157,     0,     0,     0,   277,     0,
-     0,   204,   205,   206,   207,     0,     0,   208,   209,     0,
-     0,     0,     0,   332,   332,     0,   440,   194,   195,     0,
-   264,   265,    78,   266,     0,     0,   267,     0,     0,   332,
-   268,   196,     0,     0,     0,     0,     0,   269,   270,   262,
-   271,     0,   272,   273,   198,   274,     0,     0,   275,     0,
-     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,     0,     0,     0,     0,   276,     0,   157,     0,     0,
-     0,   277,     0,     0,   204,   205,   206,   207,     0,     0,
-   208,   209,   440,   194,   195,     0,   703,   265,    78,   266,
+   209,   262,     0,    80,     0,     0,    81,    20,     0,     0,
+     0,     0,     0,     0,     0,     0,   157,   255,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   331,   331,     0,   263,   194,   195,  -264,   264,   265,
+    78,   266,     0,     0,   267,     0,     0,   331,   268,   196,
+     0,     0,  -264,   332,   332,   269,   270,     5,   271,   262,
+   272,   273,   198,   274,     0,     0,   275,     0,     0,   332,
+     0,     0,    80,     0,     0,    81,    20,     0,     0,     0,
+     0,     0,     0,   276,     0,   157,  -264,     0,     0,   277,
+     0,     0,   204,   205,   206,   207,     0,     0,   208,   209,
+     0,     0,   263,   194,   195,     0,   264,   265,    78,   266,
      0,     0,   267,     0,     0,     0,   268,   196,     0,     0,
-     0,     0,     0,   269,   270,     0,   271,     0,   272,   273,
-   198,   274,     0,   622,   275,   192,   193,     0,     0,     0,
+     0,     0,     0,   269,   270,     5,   271,   262,   272,   273,
+   198,   274,     0,     0,   275,     0,     0,     0,     0,     0,
     80,     0,     0,    81,    20,     0,     0,     0,     0,     0,
-     0,   276,     0,   157,     0,     0,     0,   277,     0,     0,
+     0,   276,     0,   157,   436,     0,     0,   277,     0,     0,
    204,   205,   206,   207,     0,     0,   208,   209,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   194,   195,     0,
-     0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
-     0,   196,     0,     0,     0,     0,     0,   197,   191,     0,
-   192,   193,     0,     0,   198,     0,     0,     0,   199,     0,
-     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,   200,   201,     0,     0,   202,     0,   203,   623,     0,
-     0,     0,     0,     0,   204,   205,   206,   207,     0,     0,
-   208,   209,   194,   195,     0,     0,     0,    78,     0,   414,
-     0,   192,   193,     0,     0,     0,   196,     0,     0,     0,
-     0,     0,   197,     0,     0,     0,     0,     0,     0,   198,
+   263,   194,   195,     0,   264,   265,    78,   266,     0,     0,
+   267,     0,     0,     0,   268,   196,     0,     0,     0,     0,
+     0,   269,   270,     5,   271,   262,   272,   273,   198,   274,
+     0,     0,   275,     0,     0,     0,     0,     0,    80,     0,
+     0,    81,    20,     0,     0,     0,     0,     0,     0,   276,
+     0,   157,     0,     0,     0,   277,     0,     0,   204,   205,
+   206,   207,     0,     0,   208,   209,     0,     0,   440,   194,
+   195,     0,   264,   265,    78,   266,     0,     0,   267,     0,
+     0,     0,   268,   196,     0,     0,     0,     0,     0,   269,
+   270,   262,   271,     0,   272,   273,   198,   274,     0,     0,
+   275,     0,     0,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,     0,     0,     0,     0,   276,     0,   157,
+     0,     0,     0,   277,     0,     0,   204,   205,   206,   207,
+     0,     0,   208,   209,   440,   194,   195,     0,   692,   265,
+    78,   266,     0,     0,   267,     0,     0,     0,   268,   196,
+     0,     0,     0,     0,     0,   269,   270,     0,   271,     0,
+   272,   273,   198,   274,     0,   191,   275,   192,   193,     0,
+     0,     0,    80,     0,     0,    81,    20,     0,     0,     0,
+     0,     0,     0,   276,     0,   157,     0,     0,     0,   277,
+     2,     0,   204,   205,   206,   207,    78,     0,   208,   209,
+     0,     0,     0,     0,     0,    79,     0,     4,     0,   194,
+   195,     0,     0,     5,    78,     0,   414,     0,   192,   193,
+     0,     0,     0,   196,     0,     0,     0,     0,    80,   197,
+     0,    81,    20,     0,     0,     0,   198,     0,     0,     0,
+   199,     0,   126,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,   200,   201,     0,     0,   202,     0,   203,
+   194,   195,     0,     0,     0,    78,   204,   205,   206,   207,
+     0,     0,   208,   209,   196,     0,     0,     0,     0,     0,
+   197,   545,     0,   192,   193,     0,     0,   198,     0,     0,
+     0,   199,     0,     0,     0,     0,     0,    80,     0,     0,
+    81,    20,     0,     0,   200,   201,     0,     0,   202,     0,
+     0,     0,     0,     0,   415,     0,     0,   204,   205,   206,
+   207,     0,     0,   208,   209,   194,   195,     0,     0,     0,
+    78,     0,   492,     0,   192,   193,     0,     0,     0,   196,
+     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
+     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
+     0,     0,    80,     0,     0,    81,    20,     0,   546,   200,
+   201,     0,     0,   202,     0,     0,   194,   195,     0,     0,
+     0,    78,   204,   205,   206,   207,     0,     0,   208,   209,
+   196,     0,     0,     0,     0,     0,   197,   581,     0,   192,
+   193,     0,     0,   198,     0,     0,     0,   199,     0,     0,
+     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
+   200,   201,     0,     0,   202,     0,     0,     0,     0,   148,
+     0,     0,     0,   204,   205,   206,   207,     0,     0,   208,
+   209,   194,   195,     0,     0,     0,    78,     0,   589,     0,
+   192,   193,     0,     0,     0,   196,     0,     0,     0,     0,
+     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,
+     0,     0,   199,     0,     0,     0,     0,     0,    80,     0,
+     0,    81,    20,     0,     0,   200,   201,     0,     0,   202,
+   582,     0,   194,   195,     0,     0,     0,    78,   204,   205,
+   206,   207,     0,     0,   208,   209,   196,     0,     0,     0,
+     0,     0,   197,   597,     0,   192,   193,     0,     0,   198,
      0,     0,     0,   199,     0,     0,     0,     0,     0,    80,
      0,     0,    81,    20,     0,     0,   200,   201,     0,     0,
-   202,     0,   203,   194,   195,     0,     0,     0,    78,   204,
-   205,   206,   207,     0,     0,   208,   209,   196,     0,     0,
-     0,     0,     0,   197,   546,     0,   192,   193,     0,     0,
+   202,     0,     0,     0,     0,     0,   590,     0,     0,   204,
+   205,   206,   207,     0,     0,   208,   209,   194,   195,     0,
+     0,     0,    78,     0,   606,     0,   192,   193,     0,     0,
+     0,   196,     0,     0,     0,     0,     0,   197,     0,     0,
+     0,     0,     0,     0,   198,     0,     0,     0,   199,     0,
+     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
+     0,   200,   201,     0,     0,   202,     0,     0,   194,   195,
+   598,     0,     0,    78,   204,   205,   206,   207,     0,     0,
+   208,   209,   196,     0,     0,     0,     0,     0,   197,   492,
+     0,   192,   193,     0,     0,   198,     0,     0,     0,   199,
+     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
+     0,     0,   200,   201,     0,     0,   202,   607,     0,     0,
+     0,     0,     0,     0,     0,   204,   205,   206,   207,     0,
+     0,   208,   209,   194,   195,     0,     0,     0,    78,     0,
+   581,     0,   192,   193,     0,     0,     0,   196,     0,     0,
+     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,
    198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
     80,     0,     0,    81,    20,     0,     0,   200,   201,     0,
-     0,   202,     0,     0,     0,     0,     0,   415,     0,     0,
-   204,   205,   206,   207,     0,     0,   208,   209,   194,   195,
-     0,     0,     0,    78,     0,   493,     0,   192,   193,     0,
-     0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
-     0,     0,     0,     0,     0,   198,     0,     0,     0,   199,
-     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
-     0,   547,   200,   201,     0,     0,   202,     0,     0,   194,
-   195,     0,     0,     0,    78,   204,   205,   206,   207,     0,
-     0,   208,   209,   196,     0,     0,     0,     0,     0,   197,
-   582,     0,   192,   193,     0,     0,   198,     0,     0,     0,
-   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
-    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
-     0,     0,   148,     0,     0,     0,   204,   205,   206,   207,
-     0,     0,   208,   209,   194,   195,     0,     0,     0,    78,
-     0,   596,     0,   192,   193,     0,     0,     0,   196,     0,
-     0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
+     0,   202,     0,     0,   194,   195,   598,     0,     0,    78,
+   204,   205,   206,   207,     0,     0,   208,   209,   196,     0,
+     0,     0,     0,     0,   197,   706,     0,   192,   193,     0,
      0,   198,     0,     0,     0,   199,     0,     0,     0,     0,
      0,    80,     0,     0,    81,    20,     0,     0,   200,   201,
-     0,     0,   202,   583,     0,   194,   195,     0,     0,     0,
-    78,   204,   205,   206,   207,     0,     0,   208,   209,   196,
-     0,     0,     0,     0,     0,   197,   604,     0,   192,   193,
+     0,     0,   202,   690,     0,     0,     0,     0,     0,     0,
+     0,   204,   205,   206,   207,     0,     0,   208,   209,   194,
+   195,     0,     0,     0,    78,     0,   706,     0,   192,   193,
+     0,     0,     0,   196,     0,     0,     0,     0,     0,   197,
+     0,     0,     0,     0,     0,     0,   198,     0,     0,     0,
+   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,   200,   201,     0,     0,   202,   707,     0,
+   194,   195,     0,     0,     0,    78,   204,   205,   206,   207,
+     0,     0,   208,   209,   196,     0,     0,     0,     0,     0,
+   197,   589,     0,   192,   193,     0,     0,   198,     0,     0,
+     0,   199,     0,     0,     0,     0,     0,    80,     0,     0,
+    81,    20,     0,     0,   200,   201,     0,     0,   202,   750,
+     0,     0,     0,     0,     0,     0,     0,   204,   205,   206,
+   207,     0,     0,   208,   209,   194,   195,     0,     0,     0,
+    78,     0,   329,     0,   192,   193,     0,     0,     0,   196,
+     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
      0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
      0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
-   201,     0,     0,   202,     0,     0,     0,     0,     0,   597,
-     0,     0,   204,   205,   206,   207,     0,     0,   208,   209,
-   194,   195,     0,     0,     0,    78,     0,   613,     0,   192,
-   193,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-   197,     0,     0,     0,     0,     0,     0,   198,     0,     0,
-     0,   199,     0,     0,     0,     0,     0,    80,     0,     0,
-    81,    20,     0,     0,   200,   201,     0,     0,   202,     0,
-     0,   194,   195,   605,     0,     0,    78,   204,   205,   206,
-   207,     0,     0,   208,   209,   196,     0,     0,     0,     0,
-     0,   197,   493,     0,   192,   193,     0,     0,   198,     0,
+   201,     0,     0,   202,     0,     0,   194,   195,     0,   755,
+     0,    78,   204,   205,   206,   207,     0,     0,   208,   209,
+   196,     0,     0,     0,     0,     0,   197,   334,     0,   192,
+   193,     0,     0,   198,     0,     0,     0,   199,     0,     0,
+     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
+   200,   201,     0,     0,   202,     0,     0,     0,     0,     0,
+     0,     0,     0,   204,   205,   206,   207,     0,     0,   208,
+   209,   194,   195,     0,     0,     0,    78,     0,   336,     0,
+   192,   193,     0,     0,     0,   196,     0,     0,     0,     0,
+     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,
      0,     0,   199,     0,     0,     0,     0,     0,    80,     0,
      0,    81,    20,     0,     0,   200,   201,     0,     0,   202,
-   614,     0,     0,     0,     0,     0,     0,     0,   204,   205,
-   206,   207,     0,     0,   208,   209,   194,   195,     0,     0,
-     0,    78,     0,   582,     0,   192,   193,     0,     0,     0,
-   196,     0,     0,     0,     0,     0,   197,     0,     0,     0,
-     0,     0,     0,   198,     0,     0,     0,   199,     0,     0,
-     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
-   200,   201,     0,     0,   202,     0,     0,   194,   195,   605,
-     0,     0,    78,   204,   205,   206,   207,     0,     0,   208,
-   209,   196,     0,     0,     0,     0,     0,   197,   717,     0,
-   192,   193,     0,     0,   198,     0,     0,     0,   199,     0,
-     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,   200,   201,     0,     0,   202,   701,     0,     0,     0,
-     0,     0,     0,     0,   204,   205,   206,   207,     0,     0,
-   208,   209,   194,   195,     0,     0,     0,    78,     0,   717,
-     0,   192,   193,     0,     0,     0,   196,     0,     0,     0,
-     0,     0,   197,     0,     0,     0,     0,     0,     0,   198,
+     0,     0,   194,   195,     0,     0,     0,    78,   204,   205,
+   206,   207,     0,     0,   208,   209,   196,     0,     0,     0,
+     0,     0,   197,   338,     0,   192,   193,     0,     0,   198,
      0,     0,     0,   199,     0,     0,     0,     0,     0,    80,
      0,     0,    81,    20,     0,     0,   200,   201,     0,     0,
-   202,   718,     0,   194,   195,     0,     0,     0,    78,   204,
-   205,   206,   207,     0,     0,   208,   209,   196,     0,     0,
-     0,     0,     0,   197,   596,     0,   192,   193,     0,     0,
+   202,     0,     0,     0,     0,     0,     0,     0,     0,   204,
+   205,   206,   207,     0,     0,   208,   209,   194,   195,     0,
+     0,     0,    78,     0,   347,     0,   192,   193,     0,     0,
+     0,   196,     0,     0,     0,     0,     0,   197,     0,     0,
+     0,     0,     0,     0,   198,     0,     0,     0,   199,     0,
+     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
+     0,   200,   201,     0,     0,   202,     0,     0,   194,   195,
+     0,     0,     0,    78,   204,   205,   206,   207,     0,     0,
+   208,   209,   196,     0,     0,     0,     0,     0,   197,   349,
+     0,   192,   193,     0,     0,   198,     0,     0,     0,   199,
+     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
+     0,     0,   200,   201,     0,     0,   202,     0,     0,     0,
+     0,     0,     0,     0,     0,   204,   205,   206,   207,     0,
+     0,   208,   209,   194,   195,     0,     0,     0,    78,     0,
+   351,     0,   192,   193,     0,     0,     0,   196,     0,     0,
+     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,
    198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
     80,     0,     0,    81,    20,     0,     0,   200,   201,     0,
-     0,   202,   750,     0,     0,     0,     0,     0,     0,     0,
-   204,   205,   206,   207,     0,     0,   208,   209,   194,   195,
-     0,     0,     0,    78,     0,   329,     0,   192,   193,     0,
-     0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
-     0,     0,     0,     0,     0,   198,     0,     0,     0,   199,
-     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
-     0,     0,   200,   201,     0,     0,   202,     0,     0,   194,
-   195,     0,   755,     0,    78,   204,   205,   206,   207,     0,
-     0,   208,   209,   196,     0,     0,     0,     0,     0,   197,
-   334,     0,   192,   193,     0,     0,   198,     0,     0,     0,
-   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
-    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
-     0,     0,     0,     0,     0,     0,   204,   205,   206,   207,
-     0,     0,   208,   209,   194,   195,     0,     0,     0,    78,
-     0,   336,     0,   192,   193,     0,     0,     0,   196,     0,
-     0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
+     0,   202,     0,     0,   194,   195,     0,     0,     0,    78,
+   204,   205,   206,   207,     0,     0,   208,   209,   196,     0,
+     0,     0,     0,     0,   197,   409,     0,   192,   193,     0,
      0,   198,     0,     0,     0,   199,     0,     0,     0,     0,
      0,    80,     0,     0,    81,    20,     0,     0,   200,   201,
-     0,     0,   202,     0,     0,   194,   195,     0,     0,     0,
-    78,   204,   205,   206,   207,     0,     0,   208,   209,   196,
-     0,     0,     0,     0,     0,   197,   338,     0,   192,   193,
-     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
-     0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
-   201,     0,     0,   202,     0,     0,     0,     0,     0,     0,
-     0,     0,   204,   205,   206,   207,     0,     0,   208,   209,
-   194,   195,     0,     0,     0,    78,     0,   347,     0,   192,
-   193,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-   197,     0,     0,     0,     0,     0,     0,   198,     0,     0,
+     0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,   204,   205,   206,   207,     0,     0,   208,   209,   194,
+   195,     0,     0,     0,    78,     0,   492,     0,   192,   193,
+     0,     0,     0,   196,     0,     0,     0,     0,     0,   197,
+     0,     0,     0,     0,     0,     0,   198,     0,     0,     0,
+   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
+   194,   195,     0,     0,     0,    78,   204,   205,   206,   207,
+     0,     0,   208,   209,   196,     0,     0,     0,     0,     0,
+   197,   500,     0,   192,   193,     0,     0,   198,     0,     0,
      0,   199,     0,     0,     0,     0,     0,    80,     0,     0,
     81,    20,     0,     0,   200,   201,     0,     0,   202,     0,
-     0,   194,   195,     0,     0,     0,    78,   204,   205,   206,
-   207,     0,     0,   208,   209,   196,     0,     0,     0,     0,
-     0,   197,   349,     0,   192,   193,     0,     0,   198,     0,
+     0,     0,     0,     0,     0,     0,     0,   204,   205,   206,
+   207,     0,     0,   208,   209,   194,   195,     0,     0,     0,
+    78,     0,   504,     0,   192,   193,     0,     0,     0,   196,
+     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
+     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
+     0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
+   201,     0,     0,   202,     0,     0,   194,   195,     0,     0,
+     0,    78,   204,   205,   206,   207,     0,     0,   208,   209,
+   196,     0,     0,     0,     0,     0,   197,   506,     0,   192,
+   193,     0,     0,   198,     0,     0,     0,   199,     0,     0,
+     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
+   200,   201,     0,     0,   202,     0,     0,     0,     0,     0,
+     0,     0,     0,   204,   205,   206,   207,     0,     0,   208,
+   209,   194,   195,     0,     0,     0,    78,     0,   508,     0,
+   192,   193,     0,     0,     0,   196,     0,     0,     0,     0,
+     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,
      0,     0,   199,     0,     0,     0,     0,     0,    80,     0,
      0,    81,    20,     0,     0,   200,   201,     0,     0,   202,
-     0,     0,     0,     0,     0,     0,     0,     0,   204,   205,
-   206,   207,     0,     0,   208,   209,   194,   195,     0,     0,
-     0,    78,     0,   351,     0,   192,   193,     0,     0,     0,
-   196,     0,     0,     0,     0,     0,   197,     0,     0,     0,
-     0,     0,     0,   198,     0,     0,     0,   199,     0,     0,
-     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
-   200,   201,     0,     0,   202,     0,     0,   194,   195,     0,
-     0,     0,    78,   204,   205,   206,   207,     0,     0,   208,
-   209,   196,     0,     0,     0,     0,     0,   197,   409,     0,
-   192,   193,     0,     0,   198,     0,     0,     0,   199,     0,
-     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,   200,   201,     0,     0,   202,     0,     0,     0,     0,
-     0,     0,     0,     0,   204,   205,   206,   207,     0,     0,
-   208,   209,   194,   195,     0,     0,     0,    78,     0,   493,
-     0,   192,   193,     0,     0,     0,   196,     0,     0,     0,
-     0,     0,   197,     0,     0,     0,     0,     0,     0,   198,
+     0,     0,   194,   195,     0,     0,     0,    78,   204,   205,
+   206,   207,     0,     0,   208,   209,   196,     0,     0,     0,
+     0,     0,   197,   510,     0,   192,   193,     0,     0,   198,
      0,     0,     0,   199,     0,     0,     0,     0,     0,    80,
      0,     0,    81,    20,     0,     0,   200,   201,     0,     0,
-   202,     0,     0,   194,   195,     0,     0,     0,    78,   204,
-   205,   206,   207,     0,     0,   208,   209,   196,     0,     0,
-     0,     0,     0,   197,   501,     0,   192,   193,     0,     0,
+   202,     0,     0,     0,     0,     0,     0,     0,     0,   204,
+   205,   206,   207,     0,     0,   208,   209,   194,   195,     0,
+     0,     0,    78,     0,   512,     0,   192,   193,     0,     0,
+     0,   196,     0,     0,     0,     0,     0,   197,     0,     0,
+     0,     0,     0,     0,   198,     0,     0,     0,   199,     0,
+     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
+     0,   200,   201,     0,     0,   202,     0,     0,   194,   195,
+     0,     0,     0,    78,   204,   205,   206,   207,     0,     0,
+   208,   209,   196,     0,     0,     0,     0,     0,   197,   514,
+     0,   192,   193,     0,     0,   198,     0,     0,     0,   199,
+     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
+     0,     0,   200,   201,     0,     0,   202,     0,     0,     0,
+     0,     0,     0,     0,     0,   204,   205,   206,   207,     0,
+     0,   208,   209,   194,   195,     0,     0,     0,    78,     0,
+   516,     0,   192,   193,     0,     0,     0,   196,     0,     0,
+     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,
    198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
     80,     0,     0,    81,    20,     0,     0,   200,   201,     0,
-     0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
-   204,   205,   206,   207,     0,     0,   208,   209,   194,   195,
-     0,     0,     0,    78,     0,   505,     0,   192,   193,     0,
-     0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
-     0,     0,     0,     0,     0,   198,     0,     0,     0,   199,
-     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
-     0,     0,   200,   201,     0,     0,   202,     0,     0,   194,
-   195,     0,     0,     0,    78,   204,   205,   206,   207,     0,
-     0,   208,   209,   196,     0,     0,     0,     0,     0,   197,
-   507,     0,   192,   193,     0,     0,   198,     0,     0,     0,
-   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
-    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
-     0,     0,     0,     0,     0,     0,   204,   205,   206,   207,
-     0,     0,   208,   209,   194,   195,     0,     0,     0,    78,
-     0,   509,     0,   192,   193,     0,     0,     0,   196,     0,
-     0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
+     0,   202,     0,     0,   194,   195,     0,     0,     0,    78,
+   204,   205,   206,   207,     0,     0,   208,   209,   196,     0,
+     0,     0,     0,     0,   197,   518,     0,   192,   193,     0,
      0,   198,     0,     0,     0,   199,     0,     0,     0,     0,
      0,    80,     0,     0,    81,    20,     0,     0,   200,   201,
-     0,     0,   202,     0,     0,   194,   195,     0,     0,     0,
-    78,   204,   205,   206,   207,     0,     0,   208,   209,   196,
-     0,     0,     0,     0,     0,   197,   511,     0,   192,   193,
-     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
-     0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
-   201,     0,     0,   202,     0,     0,     0,     0,     0,     0,
-     0,     0,   204,   205,   206,   207,     0,     0,   208,   209,
-   194,   195,     0,     0,     0,    78,     0,   513,     0,   192,
-   193,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-   197,     0,     0,     0,     0,     0,     0,   198,     0,     0,
+     0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,   204,   205,   206,   207,     0,     0,   208,   209,   194,
+   195,     0,     0,     0,    78,     0,   520,     0,   192,   193,
+     0,     0,     0,   196,     0,     0,     0,     0,     0,   197,
+     0,     0,     0,     0,     0,     0,   198,     0,     0,     0,
+   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
+   194,   195,     0,     0,     0,    78,   204,   205,   206,   207,
+     0,     0,   208,   209,   196,     0,     0,     0,     0,     0,
+   197,   522,     0,   192,   193,     0,     0,   198,     0,     0,
      0,   199,     0,     0,     0,     0,     0,    80,     0,     0,
     81,    20,     0,     0,   200,   201,     0,     0,   202,     0,
-     0,   194,   195,     0,     0,     0,    78,   204,   205,   206,
-   207,     0,     0,   208,   209,   196,     0,     0,     0,     0,
-     0,   197,   515,     0,   192,   193,     0,     0,   198,     0,
+     0,     0,     0,     0,     0,     0,     0,   204,   205,   206,
+   207,     0,     0,   208,   209,   194,   195,     0,     0,     0,
+    78,     0,   524,     0,   192,   193,     0,     0,     0,   196,
+     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
+     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
+     0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
+   201,     0,     0,   202,     0,     0,   194,   195,     0,     0,
+     0,    78,   204,   205,   206,   207,     0,     0,   208,   209,
+   196,     0,     0,     0,     0,     0,   197,   526,     0,   192,
+   193,     0,     0,   198,     0,     0,     0,   199,     0,     0,
+     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
+   200,   201,     0,     0,   202,     0,     0,     0,     0,     0,
+     0,     0,     0,   204,   205,   206,   207,     0,     0,   208,
+   209,   194,   195,     0,     0,     0,    78,     0,   531,     0,
+   192,   193,     0,     0,     0,   196,     0,     0,     0,     0,
+     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,
      0,     0,   199,     0,     0,     0,     0,     0,    80,     0,
      0,    81,    20,     0,     0,   200,   201,     0,     0,   202,
-     0,     0,     0,     0,     0,     0,     0,     0,   204,   205,
-   206,   207,     0,     0,   208,   209,   194,   195,     0,     0,
-     0,    78,     0,   517,     0,   192,   193,     0,     0,     0,
-   196,     0,     0,     0,     0,     0,   197,     0,     0,     0,
-     0,     0,     0,   198,     0,     0,     0,   199,     0,     0,
-     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
-   200,   201,     0,     0,   202,     0,     0,   194,   195,     0,
-     0,     0,    78,   204,   205,   206,   207,     0,     0,   208,
-   209,   196,     0,     0,     0,     0,     0,   197,   519,     0,
-   192,   193,     0,     0,   198,     0,     0,     0,   199,     0,
-     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,   200,   201,     0,     0,   202,     0,     0,     0,     0,
-     0,     0,     0,     0,   204,   205,   206,   207,     0,     0,
-   208,   209,   194,   195,     0,     0,     0,    78,     0,   521,
-     0,   192,   193,     0,     0,     0,   196,     0,     0,     0,
-     0,     0,   197,     0,     0,     0,     0,     0,     0,   198,
+     0,     0,   194,   195,     0,     0,     0,    78,   204,   205,
+   206,   207,     0,     0,   208,   209,   196,     0,     0,     0,
+     0,     0,   197,   533,     0,   192,   193,     0,     0,   198,
      0,     0,     0,   199,     0,     0,     0,     0,     0,    80,
      0,     0,    81,    20,     0,     0,   200,   201,     0,     0,
-   202,     0,     0,   194,   195,     0,     0,     0,    78,   204,
-   205,   206,   207,     0,     0,   208,   209,   196,     0,     0,
-     0,     0,     0,   197,   523,     0,   192,   193,     0,     0,
+   202,     0,     0,     0,     0,     0,     0,     0,     0,   204,
+   205,   206,   207,     0,     0,   208,   209,   194,   195,     0,
+     0,     0,    78,     0,   535,     0,   192,   193,     0,     0,
+     0,   196,     0,     0,     0,     0,     0,   197,     0,     0,
+     0,     0,     0,     0,   198,     0,     0,     0,   199,     0,
+     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
+     0,   200,   201,     0,     0,   202,     0,     0,   194,   195,
+     0,     0,     0,    78,   204,   205,   206,   207,     0,     0,
+   208,   209,   196,     0,     0,     0,     0,     0,   197,   537,
+     0,   192,   193,     0,     0,   198,     0,     0,     0,   199,
+     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
+     0,     0,   200,   201,     0,     0,   202,     0,     0,     0,
+     0,     0,     0,     0,     0,   204,   205,   206,   207,     0,
+     0,   208,   209,   194,   195,     0,     0,     0,    78,     0,
+   539,     0,   192,   193,     0,     0,     0,   196,     0,     0,
+     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,
    198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
     80,     0,     0,    81,    20,     0,     0,   200,   201,     0,
-     0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
-   204,   205,   206,   207,     0,     0,   208,   209,   194,   195,
-     0,     0,     0,    78,     0,   525,     0,   192,   193,     0,
-     0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
-     0,     0,     0,     0,     0,   198,     0,     0,     0,   199,
-     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
-     0,     0,   200,   201,     0,     0,   202,     0,     0,   194,
-   195,     0,     0,     0,    78,   204,   205,   206,   207,     0,
-     0,   208,   209,   196,     0,     0,     0,     0,     0,   197,
-   527,     0,   192,   193,     0,     0,   198,     0,     0,     0,
-   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
-    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
-     0,     0,     0,     0,     0,     0,   204,   205,   206,   207,
-     0,     0,   208,   209,   194,   195,     0,     0,     0,    78,
-     0,   532,     0,   192,   193,     0,     0,     0,   196,     0,
-     0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
+     0,   202,     0,     0,   194,   195,     0,     0,     0,    78,
+   204,   205,   206,   207,     0,     0,   208,   209,   196,     0,
+     0,     0,     0,     0,   197,   541,     0,   192,   193,     0,
      0,   198,     0,     0,     0,   199,     0,     0,     0,     0,
      0,    80,     0,     0,    81,    20,     0,     0,   200,   201,
-     0,     0,   202,     0,     0,   194,   195,     0,     0,     0,
-    78,   204,   205,   206,   207,     0,     0,   208,   209,   196,
-     0,     0,     0,     0,     0,   197,   534,     0,   192,   193,
-     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
-     0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
-   201,     0,     0,   202,     0,     0,     0,     0,     0,     0,
-     0,     0,   204,   205,   206,   207,     0,     0,   208,   209,
-   194,   195,     0,     0,     0,    78,     0,   536,     0,   192,
-   193,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-   197,     0,     0,     0,     0,     0,     0,   198,     0,     0,
+     0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,   204,   205,   206,   207,     0,     0,   208,   209,   194,
+   195,     0,     0,     0,    78,     0,   543,     0,   192,   193,
+     0,     0,     0,   196,     0,     0,     0,     0,     0,   197,
+     0,     0,     0,     0,     0,     0,   198,     0,     0,     0,
+   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
+   194,   195,     0,     0,     0,    78,   204,   205,   206,   207,
+     0,     0,   208,   209,   196,     0,     0,     0,     0,     0,
+   197,   548,     0,   192,   193,     0,     0,   198,     0,     0,
      0,   199,     0,     0,     0,     0,     0,    80,     0,     0,
     81,    20,     0,     0,   200,   201,     0,     0,   202,     0,
-     0,   194,   195,     0,     0,     0,    78,   204,   205,   206,
-   207,     0,     0,   208,   209,   196,     0,     0,     0,     0,
-     0,   197,   538,     0,   192,   193,     0,     0,   198,     0,
+     0,     0,     0,     0,     0,     0,     0,   204,   205,   206,
+   207,     0,     0,   208,   209,   194,   195,     0,     0,     0,
+    78,     0,   557,     0,   192,   193,     0,     0,     0,   196,
+     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
+     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
+     0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
+   201,     0,     0,   202,     0,     0,   194,   195,     0,     0,
+     0,    78,   204,   205,   206,   207,     0,     0,   208,   209,
+   196,     0,     0,     0,     0,     0,   197,   565,     0,   192,
+   193,     0,     0,   198,     0,     0,     0,   199,     0,     0,
+     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
+   200,   201,     0,     0,   202,     0,     0,     0,     0,     0,
+     0,     0,     0,   204,   205,   206,   207,     0,     0,   208,
+   209,   194,   195,     0,     0,     0,    78,     0,   567,     0,
+   192,   193,     0,     0,     0,   196,     0,     0,     0,     0,
+     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,
      0,     0,   199,     0,     0,     0,     0,     0,    80,     0,
      0,    81,    20,     0,     0,   200,   201,     0,     0,   202,
-     0,     0,     0,     0,     0,     0,     0,     0,   204,   205,
-   206,   207,     0,     0,   208,   209,   194,   195,     0,     0,
-     0,    78,     0,   540,     0,   192,   193,     0,     0,     0,
-   196,     0,     0,     0,     0,     0,   197,     0,     0,     0,
-     0,     0,     0,   198,     0,     0,     0,   199,     0,     0,
-     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
-   200,   201,     0,     0,   202,     0,     0,   194,   195,     0,
-     0,     0,    78,   204,   205,   206,   207,     0,     0,   208,
-   209,   196,     0,     0,     0,     0,     0,   197,   542,     0,
-   192,   193,     0,     0,   198,     0,     0,     0,   199,     0,
-     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,   200,   201,     0,     0,   202,     0,     0,     0,     0,
-     0,     0,     0,     0,   204,   205,   206,   207,     0,     0,
-   208,   209,   194,   195,     0,     0,     0,    78,     0,   544,
-     0,   192,   193,     0,     0,     0,   196,     0,     0,     0,
-     0,     0,   197,     0,     0,     0,     0,     0,     0,   198,
+     0,     0,   194,   195,     0,     0,     0,    78,   204,   205,
+   206,   207,     0,     0,   208,   209,   196,     0,     0,     0,
+     0,     0,   197,   592,     0,   192,   193,     0,     0,   198,
      0,     0,     0,   199,     0,     0,     0,     0,     0,    80,
      0,     0,    81,    20,     0,     0,   200,   201,     0,     0,
-   202,     0,     0,   194,   195,     0,     0,     0,    78,   204,
-   205,   206,   207,     0,     0,   208,   209,   196,     0,     0,
-     0,     0,     0,   197,   549,     0,   192,   193,     0,     0,
+   202,     0,     0,     0,     0,     0,     0,     0,     0,   204,
+   205,   206,   207,     0,     0,   208,   209,   194,   195,     0,
+     0,     0,    78,     0,   609,     0,   192,   193,     0,     0,
+     0,   196,     0,     0,     0,     0,     0,   197,     0,     0,
+     0,     0,     0,     0,   198,     0,     0,     0,   199,     0,
+     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
+     0,   200,   201,     0,     0,   202,     0,     0,   194,   195,
+     0,     0,     0,    78,   204,   205,   206,   207,     0,     0,
+   208,   209,   196,     0,     0,     0,     0,     0,   197,   676,
+     0,   192,   193,     0,     0,   198,     0,     0,     0,   199,
+     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
+     0,     0,   200,   201,     0,     0,   202,     0,     0,     0,
+     0,     0,     0,     0,     0,   204,   205,   206,   207,     0,
+     0,   208,   209,   194,   195,     0,     0,     0,    78,     0,
+   680,     0,   192,   193,     0,     0,     0,   196,     0,     0,
+     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,
    198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
     80,     0,     0,    81,    20,     0,     0,   200,   201,     0,
-     0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
-   204,   205,   206,   207,     0,     0,   208,   209,   194,   195,
-     0,     0,     0,    78,     0,   558,     0,   192,   193,     0,
-     0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
-     0,     0,     0,     0,     0,   198,     0,     0,     0,   199,
-     0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
-     0,     0,   200,   201,     0,     0,   202,     0,     0,   194,
-   195,     0,     0,     0,    78,   204,   205,   206,   207,     0,
-     0,   208,   209,   196,     0,     0,     0,     0,     0,   197,
-   566,     0,   192,   193,     0,     0,   198,     0,     0,     0,
-   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
-    20,     0,     0,   200,   201,     0,     0,   202,     0,     0,
-     0,     0,     0,     0,     0,     0,   204,   205,   206,   207,
-     0,     0,   208,   209,   194,   195,     0,     0,     0,    78,
-     0,   568,     0,   192,   193,     0,     0,     0,   196,     0,
-     0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
+     0,   202,     0,     0,   194,   195,     0,     0,     0,    78,
+   204,   205,   206,   207,     0,     0,   208,   209,   196,     0,
+     0,     0,     0,     0,   197,   686,     0,   192,   193,     0,
      0,   198,     0,     0,     0,   199,     0,     0,     0,     0,
      0,    80,     0,     0,    81,    20,     0,     0,   200,   201,
-     0,     0,   202,     0,     0,   194,   195,     0,     0,     0,
-    78,   204,   205,   206,   207,     0,     0,   208,   209,   196,
-     0,     0,     0,     0,     0,   197,   599,     0,   192,   193,
-     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
-     0,     0,    80,     0,     0,    81,    20,     0,     0,   200,
-   201,     0,     0,   202,     0,     0,     0,     0,     0,     0,
-     0,     0,   204,   205,   206,   207,     0,     0,   208,   209,
-   194,   195,     0,     0,     0,    78,     0,   616,     0,   192,
-   193,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-   197,     0,     0,     0,     0,     0,     0,   198,     0,     0,
+     0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,   204,   205,   206,   207,     0,     0,   208,   209,   194,
+   195,     0,     0,     0,    78,     0,   712,     0,   192,   193,
+     0,     0,     0,   196,     0,     0,     0,     0,     0,   197,
+     0,     0,     0,     0,     0,     0,   198,     0,     0,     0,
+   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,   200,   201,     0,     0,   202,   661,     0,
+   194,   195,     0,     0,     0,    78,   204,   205,   206,   207,
+     0,     0,   208,   209,   196,     0,     0,     0,     0,     0,
+   197,     0,     0,   723,     0,     0,     0,   198,     0,     0,
      0,   199,     0,     0,     0,     0,     0,    80,     0,     0,
-    81,    20,     0,     0,   200,   201,     0,     0,   202,     0,
-     0,   194,   195,     0,     0,     0,    78,   204,   205,   206,
-   207,     0,     0,   208,   209,   196,     0,     0,     0,     0,
-     0,   197,   660,     0,   192,   193,     0,     0,   198,     0,
+    81,    20,   194,   195,   200,   201,     0,    78,   202,     0,
+     0,     0,     0,     0,     0,     0,   196,   204,   205,   206,
+   207,     0,   197,   208,   209,   659,     0,   194,   195,   198,
+     0,     0,    78,   199,     0,     0,     0,     0,     0,    80,
+     0,   196,    81,    20,     0,     0,     0,   197,     0,     0,
+   276,  -295,     0,     0,   198,     0,     0,     0,   199,   204,
+   205,   206,   207,     0,    80,   208,   209,    81,    20,   194,
+   195,     0,   678,     0,    78,   276,  -295,     0,     0,     0,
+     0,     0,     0,   196,   204,   205,   206,   207,     0,   197,
+   208,   209,     0,     0,     0,     0,   198,     0,     0,     0,
+   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
+    20,     0,     0,     0,     0,     0,     0,   276,     0,     0,
+     0,    78,     0,     0,     0,     0,   204,   205,   206,   207,
+   196,     0,   208,   209,     0,     0,   197,     0,     0,   192,
+   193,     0,     0,   198,     0,     0,     0,   199,     0,     0,
+     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
+   200,   201,     0,     0,   202,     0,     0,     0,     0,     0,
+     0,     0,     0,   204,   205,   206,   207,     0,     0,   208,
+   209,   194,   195,     0,     0,     0,    78,     0,     0,     0,
+     0,     0,     0,     0,     0,   196,     0,     0,     0,     0,
+     0,   197,     0,     0,   192,   193,     0,     0,   198,     0,
      0,     0,   199,     0,     0,     0,     0,     0,    80,     0,
      0,    81,    20,     0,     0,   200,   201,     0,     0,   202,
-     0,     0,     0,     0,     0,     0,     0,     0,   204,   205,
+     0,   203,   355,     0,     0,     0,   356,     0,   204,   205,
    206,   207,     0,     0,   208,   209,   194,   195,     0,     0,
-     0,    78,     0,   687,     0,   192,   193,     0,     0,     0,
+     0,    78,     0,     0,     0,   192,   193,     0,     0,     0,
    196,     0,     0,     0,     0,     0,   197,     0,     0,     0,
      0,     0,     0,   198,     0,     0,     0,   199,     0,     0,
      0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
-   200,   201,     0,     0,   202,     0,     0,   194,   195,     0,
+   200,   201,     0,     0,   202,   489,     0,   194,   195,     0,
      0,     0,    78,   204,   205,   206,   207,     0,     0,   208,
-   209,   196,     0,     0,     0,     0,     0,   197,   691,     0,
+   209,   196,     0,     0,     0,     0,     0,   197,     0,     0,
    192,   193,     0,     0,   198,     0,     0,     0,   199,     0,
      0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,   200,   201,     0,     0,   202,     0,     0,     0,     0,
+     0,   200,   201,     0,     0,   202,   625,     0,     0,     0,
      0,     0,     0,     0,   204,   205,   206,   207,     0,     0,
-   208,   209,   194,   195,     0,     0,     0,    78,     0,   697,
-     0,   192,   193,     0,     0,     0,   196,     0,     0,     0,
-     0,     0,   197,     0,     0,     0,     0,     0,     0,   198,
-     0,     0,     0,   199,     0,     0,     0,     0,     0,    80,
-     0,     0,    81,    20,     0,     0,   200,   201,     0,     0,
-   202,     0,     0,   194,   195,     0,     0,     0,    78,   204,
-   205,   206,   207,     0,     0,   208,   209,   196,     0,     0,
-     0,     0,     0,   197,     0,   576,     0,     0,     0,     0,
-   198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
-    80,     0,     0,    81,    20,     0,     0,   200,   201,     0,
-   672,   202,     0,     0,     0,     0,     0,     0,     0,     0,
-   204,   205,   206,   207,     0,     0,   208,   209,  -287,  -287,
-  -287,     0,     0,     0,  -287,     0,     0,     0,     0,     0,
-     0,     0,     0,  -287,     0,     0,     0,     0,     0,  -287,
-     0,     0,   726,     0,   194,   195,  -287,     0,     0,    78,
-  -287,     0,     0,     0,     0,     0,  -287,     0,   196,  -287,
-  -287,     0,     0,     0,   197,     0,     0,  -287,     0,     0,
-     0,   198,     0,  -287,     0,   199,  -287,  -287,  -287,  -287,
-     0,    80,  -287,  -287,    81,    20,   194,   195,     0,     0,
-     0,    78,   276,  -295,     0,     0,     0,     0,     0,     0,
-   196,   204,   205,   206,   207,     0,   197,   208,   209,   670,
-     0,     0,     0,   198,     0,     0,     0,   199,     0,     0,
-     0,     0,     0,    80,     0,     0,    81,    20,     0,     0,
-     0,     0,     0,     0,   276,  -295,     0,     0,     0,     0,
-     0,     0,     0,   204,   205,   206,   207,     0,     0,   208,
-   209,   689,     0,   194,   195,     0,     0,     0,    78,     0,
-     0,     0,     0,     0,     0,     0,     0,   196,     0,     0,
-     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,
-   198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
-    80,     0,     0,    81,    20,   192,   193,     0,     0,     0,
-    78,   276,     0,     0,     0,     0,     0,     0,     0,   196,
-   204,   205,   206,   207,     0,   197,   208,   209,     0,     0,
-     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
-     0,     0,    80,     0,     0,    81,    20,   194,   195,   200,
-   201,     0,    78,   202,     0,     0,     0,     0,     0,     0,
-     0,   196,   204,   205,   206,   207,     0,   197,   208,   209,
-   192,   193,     0,     0,   198,     0,     0,     0,   199,     0,
-     0,     0,     0,     0,    80,     0,     0,    81,    20,     0,
-     0,   200,   201,     0,     0,   202,     0,   203,   355,     0,
-     0,     0,   356,     0,   204,   205,   206,   207,     0,     0,
    208,   209,   194,   195,     0,     0,     0,    78,     0,     0,
      0,   192,   193,     0,     0,     0,   196,     0,     0,     0,
      0,     0,   197,     0,     0,     0,     0,     0,     0,   198,
      0,     0,     0,   199,     0,     0,     0,     0,     0,    80,
      0,     0,    81,    20,     0,     0,   200,   201,     0,     0,
-   202,   490,     0,   194,   195,     0,     0,     0,    78,   204,
+   202,   667,     0,   194,   195,     0,     0,     0,    78,   204,
    205,   206,   207,     0,     0,   208,   209,   196,     0,     0,
      0,     0,     0,   197,     0,     0,   192,   193,     0,     0,
    198,     0,     0,     0,   199,     0,     0,     0,     0,     0,
     80,     0,     0,    81,    20,     0,     0,   200,   201,     0,
-     0,   202,   632,     0,     0,     0,     0,     0,     0,     0,
+     0,   202,   682,     0,     0,     0,     0,     0,     0,     0,
    204,   205,   206,   207,     0,     0,   208,   209,   194,   195,
-     0,     0,     0,    78,     0,     0,     0,   192,   193,     0,
+     0,     0,     0,    78,     0,     0,     0,     0,     0,     0,
      0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
      0,     0,     0,     0,     0,   198,     0,     0,     0,   199,
      0,     0,     0,     0,     0,    80,     0,     0,    81,    20,
-     0,     0,   200,   201,     0,     0,   202,   678,     0,   194,
+     0,     0,   200,   201,     0,     0,   202,     0,     2,   194,
    195,     0,     0,     0,    78,   204,   205,   206,   207,     0,
      0,   208,   209,   196,     0,     0,     0,     0,     0,   197,
-     0,     0,   192,   193,     0,     0,   198,     0,     0,     0,
-   199,     0,     0,     0,     0,     0,    80,     0,     0,    81,
-    20,     0,     0,   200,   201,     0,     0,   202,   693,     0,
-     0,     0,     0,     0,     0,     0,   204,   205,   206,   207,
-     0,     0,   208,   209,   194,   195,     0,     0,     0,    78,
-     0,     0,     0,     0,     0,     0,     0,     0,   196,     0,
-     0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
-     0,   198,     0,     0,     0,   199,     0,     0,     0,     0,
-     0,    80,     0,     0,    81,    20,     0,     0,   200,   201,
-     0,     0,   202,     0,     2,   194,   195,     0,     0,     0,
-    78,   204,   205,   206,   207,     0,     0,   208,   209,   196,
-     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
-     0,     0,   198,     0,     0,     0,   199,     0,     0,     0,
-     0,     0,    80,     0,     0,    81,    20,     0,     0,     0,
-     0,     0,     0,   276,     0,     0,     0,     0,     0,     0,
-     0,     0,   204,   205,   206,   207,     0,     0,   208,   209
+     0,     0,     0,     0,     0,     0,   198,     0,     0,    78,
+   199,     0,     0,     0,     0,     0,    80,     0,   196,    81,
+    20,     0,     0,     0,   197,     0,     0,   276,     0,     0,
+     0,   198,     0,     0,     0,   199,   204,   205,   206,   207,
+     0,    80,   208,   209,    81,    20,     0,     0,   200,   201,
+     0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,   204,   205,   206,   207,     0,     0,   208,   209
 };
 
 static const short yycheck[] = {     3,
-   327,    62,     6,    62,   484,   179,   132,   123,    62,    62,
-   286,   203,     1,     1,   134,   403,     1,   129,   117,   403,
-     0,     1,     1,   306,    15,   591,    94,     1,     1,   129,
-    86,     1,   100,    94,     1,    94,    89,     1,    42,    62,
-    94,    94,    46,    83,   192,   193,   194,   195,    95,     1,
-   162,   150,   200,   201,   153,   642,     1,   169,    62,     1,
-    64,    53,   162,    72,    44,    69,    89,     1,   129,   100,
-   129,    94,     1,   172,    52,   129,   129,    86,   198,   133,
-   133,    61,   122,   123,   345,    89,     1,    67,     1,   101,
-    94,   352,   353,    67,   435,     1,    87,    67,     1,   665,
-    97,   162,     1,   162,    93,    97,   129,   160,   162,   162,
-   133,    99,   101,   101,   175,    94,   101,     1,    52,    99,
-   707,   175,   175,   710,   128,   129,    99,   180,   101,   133,
-   134,    98,     4,     5,    98,     1,   477,   160,     1,   162,
-   620,     1,     0,     1,    97,   198,   258,    99,   100,   202,
-    42,   325,    94,    98,    46,   254,   160,   180,   162,   175,
-   272,    95,   278,   504,    36,    37,   554,     1,    40,    98,
-   554,   175,    64,   557,     1,   762,   180,    69,    50,    94,
-   767,    94,   769,   140,   771,   100,    44,   100,   192,   193,
-   194,   195,    95,    99,   198,    94,   200,   201,   202,   253,
-   253,   100,   590,    61,     1,     1,   100,    79,   328,    67,
-   471,    83,     1,   474,    94,    99,   100,     1,   642,     1,
-    95,   101,   370,   371,   372,   286,    86,     1,    94,   282,
-   253,    94,   286,   286,   100,     1,   128,   100,     1,    99,
-     1,    99,   134,   129,     1,   202,   203,     1,    93,   253,
-   122,   123,   306,   306,   638,     1,     1,     1,    92,   282,
-    94,     1,   603,    97,    98,    99,   100,   139,    95,    94,
-   286,     1,    99,   327,   327,   100,   162,   293,   282,    98,
-    97,   557,   286,   707,   101,   301,   710,   303,   629,   293,
-   306,   642,    88,     1,     1,   487,     1,   301,   639,   303,
-     1,    98,   306,   175,   327,     1,   198,   179,   265,     1,
-    99,   268,   595,   654,   597,    99,     1,    99,   434,   276,
-   647,   642,     1,   327,   328,    99,    92,    93,     1,   382,
-   478,    97,    98,    99,   100,     1,    99,    98,   762,   675,
-    86,    98,   403,   767,    98,   769,   218,   771,     1,   403,
-   403,    95,     1,    99,    99,   293,   707,     1,    98,   710,
-     1,     1,   638,   301,    94,   303,   370,   371,   372,   373,
+   327,   403,     6,   203,   129,   132,   179,    62,    62,   286,
+   175,     1,   134,   483,   435,     1,     0,     9,     1,   123,
+     1,     1,    86,   664,     1,     9,    10,    11,    64,     1,
+     1,    72,     1,    69,   306,    89,     1,   162,    42,    94,
+    94,    33,    46,    95,   169,    86,    30,   117,     1,    33,
+    34,    94,    97,   129,    97,   476,   101,    53,    62,     1,
+    64,   192,   193,   194,   195,    69,     1,    51,    62,   200,
+   201,    94,   100,     1,   129,   129,   198,   100,    62,   133,
+   150,     1,   503,   153,   160,    89,   162,    67,     1,     1,
+    94,    52,   128,    94,     1,    89,   345,     1,    67,   100,
+    94,    97,   172,   352,   353,     1,   160,   162,   162,    99,
+    94,   101,    93,    99,   755,   101,     1,    88,   101,     1,
+   101,   175,    99,   764,   128,   129,   180,    99,    42,   133,
+   134,     0,    46,   258,    99,   129,     1,     4,     5,   133,
+     9,    10,    11,   613,   198,   129,    99,   272,   202,   133,
+    64,   553,   325,    95,   556,    69,   160,    99,   162,   175,
+     1,    30,     1,    98,    33,    34,   160,    95,   162,    36,
+    37,   175,     1,    40,   278,   596,   180,     1,   162,    99,
+   100,   140,    51,    50,   254,    98,   180,    99,   192,   193,
+   194,   195,    99,    62,   198,    99,   200,   201,   202,   253,
+   635,   622,     1,    99,     0,     1,   328,     1,    15,    94,
+     1,   632,    79,   656,   128,   100,    83,    99,   100,     1,
+   134,   470,     1,    94,   473,    94,   647,     1,   282,   631,
+   101,     1,   286,    95,    99,    97,     1,     1,   403,   370,
+   371,   372,     1,   202,   203,     1,    97,     1,    44,   253,
+     1,     1,   306,     1,    93,   122,   123,    86,    99,   253,
+   129,   696,    86,     1,   699,    61,     1,   101,     1,   253,
+   286,    67,   139,   327,   717,    99,   635,   293,   282,   556,
+    87,   129,   286,    97,   198,   301,   486,   303,   282,   293,
+   306,   635,    86,   162,     1,     1,    95,   301,    52,   303,
+     1,   635,   306,    99,     1,    99,   265,    98,   175,   268,
+   731,    93,   179,   640,   162,    94,   588,   276,   590,   100,
+    94,   100,   306,   327,   328,    95,   100,   762,   382,    94,
+   434,    95,   767,   327,   769,   100,   771,   696,    94,    98,
+   699,    95,     1,   327,   100,     1,   477,    98,    98,   403,
+    98,   218,   696,     1,   631,   699,    95,    63,     1,   175,
+    98,    94,   696,    98,     1,   699,   370,   371,   372,   373,
    374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
-   384,   385,   386,   387,   388,   389,   707,   403,    95,   710,
-   666,    99,   675,   734,    99,   267,   449,    93,    99,   403,
-     1,    94,   274,    95,   361,    95,   278,   100,   365,    94,
-    63,   762,    52,     1,   286,    94,   767,   175,   769,   755,
-   771,   293,    63,    63,     0,     1,   449,    93,   764,   301,
-     1,   303,     1,   390,     1,    95,   328,    96,    64,    99,
-   175,   762,    95,    69,    93,   449,   767,     1,   769,    93,
-   771,   408,     1,   325,    95,    95,    95,     1,    97,   571,
-     1,   418,   574,   420,    52,     0,     1,    95,    44,     1,
-   342,   619,   755,   430,   478,    63,    93,    44,     1,    55,
-   484,   764,     5,    50,     1,    61,     1,    88,   614,    53,
-   362,    67,   364,   554,   100,     1,   557,   454,     1,   456,
-   554,   554,   128,   557,   557,     1,   632,    95,    93,    44,
-     1,     1,    97,   470,     1,    82,   101,    86,    85,    86,
-    55,     1,    93,    99,   481,     1,    61,    94,   286,   590,
-   487,   403,    67,    99,   100,   293,   590,   590,   554,    93,
-    75,   557,     1,   301,    93,   303,    99,   100,   306,    93,
-   554,   286,    93,   557,     1,    45,    46,    97,   293,   431,
-   686,    93,   434,    86,    99,   677,   301,    94,   303,    86,
-   696,   306,     1,   100,   590,     0,     1,   638,    93,   595,
-     1,   597,     1,    86,   638,   638,   590,    93,     1,   101,
-    86,     0,     1,   647,   647,    86,    86,   175,    88,    86,
-   101,    91,    92,    93,     1,   666,    86,    97,    94,   101,
-    86,   101,   666,   666,   100,   619,   620,     0,     1,    44,
-     1,    50,   638,    11,   647,     1,   642,    86,     1,   586,
-    55,   635,     0,     1,   638,    44,    61,    44,   642,    86,
-    12,     1,    67,   647,     1,   403,    55,     1,    47,    13,
-   666,    47,    61,    82,    61,     1,    85,    86,    67,   675,
-    67,    44,   666,    62,   175,    86,    62,    86,   403,   626,
-    67,     9,    14,    86,    99,    72,    44,    94,    61,    76,
-    95,    47,   554,   100,    67,   557,     1,   175,    99,    86,
-    99,   707,     1,    61,   710,    33,    62,    96,    96,    67,
-    96,    93,   100,   707,   642,    86,   710,    65,   286,   725,
-    86,   129,   669,    86,    72,   293,    99,    94,   590,    93,
-    97,   725,   738,   301,   101,   303,    86,    97,   306,    86,
-    96,    99,    86,   749,   738,    44,     1,    45,    46,   755,
-    86,    50,   160,   175,   162,   749,   762,    99,   764,   107,
-    65,   767,    67,   769,     9,   771,    11,    72,   762,    47,
-     1,    76,    99,   767,   636,   769,   638,   771,    95,   707,
-   642,    86,   710,    82,    62,   286,    85,    86,    33,    44,
-   737,   100,   293,    94,   741,    50,    97,   725,    66,    97,
-   301,     1,   303,   101,   666,   306,   554,    97,   286,   557,
-   738,   101,    99,   707,    94,   293,   710,    97,    96,    50,
-    60,   749,    96,   301,    64,   303,    99,    82,   306,   554,
-    85,    86,   557,    10,   762,   403,   473,     1,   475,   767,
-    93,   769,   590,   771,    44,   707,    93,   595,   710,   597,
-    50,    82,   175,    30,    85,    86,     1,    34,    88,    59,
-    93,    61,    94,   725,   286,   590,   471,    67,   762,   474,
-   595,   293,   597,   767,    51,   769,   738,   771,     1,   301,
-    93,   303,    82,    99,   306,    85,    86,   749,    45,    46,
-   638,    92,    44,    97,   642,    94,    97,    98,    50,    94,
-   762,    65,   403,    67,     1,   767,    94,   769,    72,   771,
-    91,    92,    76,   638,    44,    95,    96,   642,   666,    99,
-    50,   100,    86,    91,    92,   403,    44,   675,    56,    59,
-    82,    61,    50,    85,    86,    45,    46,    67,     3,     4,
-    97,   666,    94,    56,   101,    18,    19,    20,    21,    67,
-   675,    99,    82,    94,    44,    85,    86,    16,    17,   707,
-    50,    94,   710,   286,    82,    95,    96,    85,    86,     1,
-   293,     1,   378,   379,   380,   381,    56,   725,   301,    94,
-   303,   403,   707,   306,    57,   710,   554,    91,    92,   557,
-   738,    94,    82,    45,    46,    85,    86,    86,    45,    46,
-   725,   749,    91,    92,    93,    97,    98,   755,    97,     5,
-     6,     7,   101,   738,   762,    99,   764,    99,    94,   767,
-    94,   769,   590,   771,   749,   382,     0,   595,     0,   597,
-   755,    11,    50,     8,     9,    10,    75,   762,   162,   764,
-    54,    59,   767,   139,   769,   253,   771,    65,   160,    91,
-    92,    93,   403,   554,    72,    97,   557,    52,    76,   101,
-    97,    98,    99,    94,    82,   373,   374,    85,    86,   260,
-   638,    89,    90,   588,   642,    93,   554,   383,   384,   557,
-   403,   306,    44,   306,   102,   103,   104,   105,    50,   590,
-   108,   109,   385,   588,   595,    86,   597,    59,   666,    61,
-    91,    92,    93,   572,   572,    67,    97,   675,   345,   386,
-   101,   387,   590,   375,   376,   377,   388,   595,   389,   597,
-    82,   635,    -1,    85,    86,    -1,   393,    -1,    -1,    -1,
-    -1,    -1,   554,    95,    96,   557,    -1,   638,    86,   707,
-    -1,   642,   710,    91,    92,    93,    91,    92,    93,    97,
-    -1,    -1,    97,   101,    -1,    -1,   101,   725,    -1,    -1,
-   638,    91,    92,    93,   642,   666,    -1,    97,   590,    -1,
-   738,   101,    -1,   595,   675,   597,   192,   193,   194,   195,
-    -1,   749,    -1,    -1,   200,   201,    -1,   755,   666,    -1,
-    -1,    -1,    -1,    -1,   762,    -1,   764,   675,    44,   767,
-    -1,   769,    -1,   771,    50,    -1,   707,    -1,    -1,   710,
-    -1,    -1,    -1,    59,    -1,    61,   638,    -1,    -1,    -1,
-   642,    67,    -1,    -1,   725,    -1,    -1,    -1,    -1,   707,
-    -1,   554,   710,    -1,   557,    -1,    82,   738,    -1,    85,
-    86,    -1,    -1,    -1,   666,    -1,    -1,   725,   749,    -1,
-    96,    -1,    -1,   675,   755,    -1,    -1,    -1,    -1,    -1,
-   738,   762,    -1,   764,    -1,    -1,   767,   590,   769,    -1,
-   771,   749,   595,    -1,   597,    -1,    -1,   755,    -1,    -1,
-    -1,    -1,    -1,    -1,   762,   707,   764,    -1,   710,   767,
-    -1,   769,    -1,   771,    44,    -1,   192,   193,   194,   195,
-    50,    -1,    -1,   725,   200,   201,    -1,    -1,    -1,    59,
-    -1,    61,    -1,    -1,    -1,   638,   738,    67,    -1,   642,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   749,    -1,    -1,
-    -1,    -1,    82,   755,    -1,    85,    86,    -1,    -1,    -1,
-   762,    -1,   764,   666,    -1,   767,    96,   769,    -1,   771,
-    -1,    -1,   675,    -1,   370,   371,   372,   373,   374,   375,
-   376,   377,   378,   379,   380,   381,    -1,   383,   384,   385,
-   386,   387,   388,   389,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   707,    -1,    -1,   710,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   725,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   738,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   749,    -1,    -1,    -1,
-    -1,    -1,   755,    -1,    -1,    -1,    -1,    -1,    -1,   762,
-    -1,   764,    -1,    -1,   767,    -1,   769,    -1,   771,    -1,
-    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   478,    -1,    -1,    -1,    -1,    -1,   484,    -1,
-    -1,    -1,    -1,    -1,   370,   371,   372,   373,   374,   375,
-   376,   377,   378,   379,   380,   381,    -1,   383,   384,   385,
-   386,   387,   388,   389,    44,    45,    46,    47,    48,    49,
-    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
-    -1,    -1,    62,    -1,    -1,    65,    66,    67,    68,    -1,
-    70,    71,    72,    73,    -1,    -1,    76,    -1,    -1,    -1,
-    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,
-    -1,    -1,     1,    93,    -1,    95,    96,    -1,    -1,    99,
-    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   384,   385,   386,   387,   388,   389,    93,   403,   553,    95,
+     1,     1,   664,    94,   448,     1,     1,    94,     1,   403,
+   267,     1,   361,   762,    52,    93,   365,   274,   767,    52,
+   769,   278,   771,     1,   328,    63,     1,    47,   762,   286,
+    63,     1,    98,   767,     1,   769,   293,   771,   762,    88,
+     1,   390,    62,   767,   301,   769,   303,   771,    94,   129,
+     1,     1,   719,     1,   448,   570,     1,    95,   573,   408,
+     1,    95,    95,     1,   448,    99,    93,    63,   325,   418,
+    95,   420,     0,     1,     0,     1,    96,    96,    45,    46,
+   286,   430,   162,   477,    97,   342,    86,   293,   101,   483,
+   607,   612,    93,   755,     1,   301,     1,   303,    93,    95,
+   306,    94,   764,    93,   453,   362,   455,   364,   625,   553,
+     1,    86,   556,    93,     5,    93,    44,   175,    44,    86,
+   469,    88,     1,    93,    91,    92,    93,    55,    53,    55,
+    97,   480,    93,    61,   101,    61,    93,   486,    86,    67,
+    97,    67,    93,    93,   101,    86,   403,   553,    86,    75,
+   556,   666,    95,    95,    96,     0,     1,    99,   675,   553,
+     0,     1,   556,   175,     1,    47,     1,     1,   685,     0,
+     1,    99,     1,    99,   431,    96,     1,   434,   100,   100,
+    62,    86,   588,   101,   590,    92,    93,   631,    44,     1,
+    97,    98,    99,   100,     1,    86,   640,   403,   293,    44,
+     9,   472,    11,   474,    44,    61,   301,    86,   303,   175,
+    55,    67,   656,    44,    96,    55,    61,    94,   612,   613,
+    94,    61,    67,   100,    33,   631,   100,    67,   286,   635,
+    61,    65,   101,    67,   628,   293,    67,   631,    72,     0,
+     1,   635,    76,   301,   101,   303,   640,     1,   306,    86,
+   656,    86,    86,    97,    99,    11,   640,    86,   664,    99,
+    67,    86,   656,     0,     1,    72,   640,     1,    99,    76,
+   619,    92,     1,   717,   286,   719,    97,    98,    13,    86,
+    92,   293,    94,    44,     1,    97,    98,    99,   100,   301,
+   696,   303,    12,   699,   306,     1,   553,    65,     1,   556,
+    61,     1,   696,   652,    72,   699,    67,    44,     1,   658,
+    60,   717,    94,   719,    64,    97,   722,     1,     1,   101,
+   286,    91,    92,   717,    61,   719,    14,   293,   722,   735,
+    67,    94,    86,    99,    97,   301,    94,   303,    99,   107,
+   306,   735,   100,   749,    50,   403,     1,   553,     1,   755,
+   556,     1,    86,   175,    95,   749,   762,    86,   764,    99,
+    44,   767,    99,   769,     1,   771,    50,    93,   762,    86,
+    45,    46,   629,   767,   631,   769,    82,   771,   635,    85,
+    86,    83,   588,    86,   590,   734,    86,    99,   100,   738,
+    94,   403,    99,    86,    44,    50,   100,   175,    82,   656,
+    50,    85,    86,    86,     1,    45,    46,    44,    93,    59,
+    94,    61,    65,    50,    67,   470,    97,    67,   473,    72,
+   122,   123,    97,    76,    96,   631,   101,    82,    44,   635,
+    85,    86,    82,    86,    50,    85,    86,   403,    99,   696,
+    99,   100,   699,    91,    92,    82,   100,    44,    85,    86,
+   656,   696,    99,    50,   699,    66,    10,    97,   664,    95,
+   717,   101,   719,    93,   286,   722,    82,    45,    46,    85,
+    86,   293,     3,     4,   175,    93,    30,     1,   735,   301,
+    34,   303,    16,    17,   306,    82,    91,    92,    85,    86,
+   696,    93,   749,   699,    88,   553,    44,    51,   556,     5,
+     6,     7,    50,    45,    46,   762,    45,    46,   286,    94,
+   767,   717,   769,   719,   771,   293,   722,   762,    18,    19,
+    20,    21,   767,   301,   769,   303,   771,     1,   306,   735,
+   588,    99,   590,    93,    82,    97,    98,    85,    86,    94,
+   635,   553,    94,   749,   556,     1,    94,   373,   374,   755,
+   378,   379,   380,   381,    97,   100,   762,    57,   764,   383,
+   384,   767,    94,   769,    86,   771,     8,     9,    10,    91,
+    92,    93,    56,   631,    44,    97,   588,   635,   590,   101,
+    50,   403,    97,    98,    99,   286,    99,   553,    86,    59,
+   556,    61,   293,    91,    92,    93,    56,    67,   656,    97,
+   301,   696,   303,   101,   699,   306,   664,    44,    91,    92,
+    93,     1,    82,    50,    97,    85,    86,    94,   101,   631,
+     1,    94,   588,   635,   590,   403,    96,   722,    86,    94,
+    67,    94,    99,    91,    92,    93,    56,    99,   696,    97,
+   735,   699,    94,   101,   656,    82,    94,     0,    85,    86,
+     0,   382,   664,    11,   749,    54,    91,    92,    93,   717,
+    75,   719,    97,   162,   722,   631,   101,   762,   139,   635,
+   253,   160,   767,   403,   769,    52,   771,   735,    94,    91,
+    92,    93,   306,   260,   696,    97,   654,   699,   571,   101,
+   656,   749,   654,   375,   376,   377,   306,   755,   664,   571,
+   345,   387,   403,   393,   762,   717,   764,   719,   385,   767,
+   722,   769,   386,   771,   628,   388,    -1,    -1,   389,    -1,
+    -1,    -1,    -1,   735,    -1,    -1,    -1,    -1,    -1,    -1,
+   696,   553,    -1,   699,   556,    -1,     1,   749,     3,     4,
+    -1,    -1,    -1,   755,    -1,    -1,    -1,    -1,    -1,    -1,
+   762,   717,   764,   719,    -1,   767,   722,   769,    -1,   771,
+    -1,    -1,    -1,    -1,    -1,    -1,   588,    -1,   590,   735,
+    -1,    -1,    -1,    -1,    -1,   553,    -1,    -1,   556,    -1,
+    45,    46,    -1,   749,    -1,    50,    -1,    -1,    -1,   755,
+    -1,    -1,    -1,    -1,    59,    -1,   762,    -1,   764,    -1,
+    65,   767,    -1,   769,    -1,   771,    -1,    72,    -1,   631,
+   588,    76,   590,   635,    -1,    -1,    -1,    82,    -1,    -1,
+    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,
+    95,    96,    -1,    -1,   656,    -1,    -1,   102,   103,   104,
+   105,    44,   664,   108,   109,    -1,    -1,    50,    -1,    -1,
+    -1,    -1,   553,   631,    -1,   556,    59,   635,    61,    -1,
+    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   696,    -1,    -1,   699,   656,    82,
+    -1,    -1,    85,    86,    -1,    -1,   664,   588,    -1,   590,
+    -1,    -1,    95,    96,    -1,   717,    -1,   719,    -1,    -1,
+   722,   192,   193,   194,   195,    -1,    -1,    -1,    -1,   200,
+   201,    -1,    -1,   735,    -1,    -1,    -1,    -1,   696,    -1,
+    -1,   699,    -1,   192,   193,   194,   195,   749,    -1,    -1,
+   631,   200,   201,   755,   635,    -1,    -1,    -1,     1,   717,
+   762,   719,   764,    -1,   722,   767,    -1,   769,    -1,   771,
+    -1,    -1,    -1,    -1,    -1,   656,    -1,   735,    -1,    -1,
+    -1,    -1,    -1,   664,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   749,    -1,    -1,    -1,    -1,    -1,   755,    -1,    -1,
+    -1,    44,    45,    46,   762,    -1,   764,    50,    -1,   767,
+    -1,   769,    -1,   771,    -1,   696,    59,    -1,   699,    -1,
+    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+    -1,    -1,    -1,    76,    -1,    -1,   717,    -1,   719,    82,
+    -1,   722,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,
+    93,    -1,    -1,    -1,   735,    -1,    99,    -1,    -1,   102,
+   103,   104,   105,    -1,    -1,   108,   109,    -1,   749,    -1,
+    -1,    -1,    -1,    -1,   755,    -1,    -1,    -1,    -1,    -1,
+    -1,   762,    -1,   764,    -1,    -1,   767,    -1,   769,    -1,
+   771,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   370,
+   371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
+   381,    -1,   383,   384,   385,   386,   387,   388,   389,     1,
+    -1,   370,   371,   372,   373,   374,   375,   376,   377,   378,
+   379,   380,   381,    -1,   383,   384,   385,   386,   387,   388,
+   389,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   478,    -1,    -1,    44,    45,    46,   484,    48,
+    -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
+    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    -1,    -1,
+    62,    -1,    -1,    65,    66,    67,    68,    -1,    70,    71,
+    72,    73,     1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+    82,    -1,    -1,    85,    86,    -1,   477,    -1,    -1,    -1,
+    -1,    93,   483,    95,    96,    -1,    -1,    99,    -1,    -1,
+   102,   103,   104,   105,    -1,    -1,   108,   109,   477,    -1,
+    -1,    -1,    -1,    -1,   483,    44,    45,    46,    47,    48,
     49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
-    59,    -1,    -1,   619,   620,    -1,    65,    66,    67,    68,
-     1,    70,    71,    72,    73,    -1,    -1,    76,    -1,   635,
-    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
-    -1,    -1,    -1,    -1,    93,    -1,    95,    96,    -1,    -1,
+    59,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    68,
+    -1,    70,    71,    72,    73,    44,    -1,    76,    -1,    -1,
+    -1,    50,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    59,    -1,    61,    -1,    93,    -1,    95,    96,    67,    -1,
     99,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
-   109,    -1,    -1,    44,    45,    46,    -1,    48,    49,    50,
-    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    -1,
-    -1,    -1,    -1,    -1,    65,    66,    67,    68,    -1,    70,
-    71,    72,    73,     1,    -1,    76,    -1,    -1,    -1,    -1,
-    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,
-    -1,    -1,    93,    -1,    95,    -1,    -1,    -1,    99,    -1,
-    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    -1,
-    -1,    -1,    -1,   619,   620,    -1,    44,    45,    46,    -1,
-    48,    49,    50,    51,    -1,    -1,    54,    -1,    -1,   635,
-    58,    59,    -1,    -1,    -1,    -1,    -1,    65,    66,     1,
-    68,    -1,    70,    71,    72,    73,    -1,    -1,    76,    -1,
-    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    -1,    -1,    -1,    -1,    93,    -1,    95,    -1,    -1,
-    -1,    99,    -1,    -1,   102,   103,   104,   105,    -1,    -1,
-   108,   109,    44,    45,    46,    -1,    48,    49,    50,    51,
+   109,     1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   612,   613,    -1,    44,    45,    46,    47,    48,    49,
+    50,    51,    -1,    -1,    54,    -1,    -1,   628,    58,    59,
+    -1,    -1,    62,   612,   613,    65,    66,    67,    68,     1,
+    70,    71,    72,    73,    -1,    -1,    76,    -1,    -1,   628,
+    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,
+    -1,    -1,    -1,    93,    -1,    95,    96,    -1,    -1,    99,
+    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,
+    -1,    -1,    44,    45,    46,    -1,    48,    49,    50,    51,
     -1,    -1,    54,    -1,    -1,    -1,    58,    59,    -1,    -1,
-    -1,    -1,    -1,    65,    66,    -1,    68,    -1,    70,    71,
-    72,    73,    -1,     1,    76,     3,     4,    -1,    -1,    -1,
+    -1,    -1,    -1,    65,    66,    67,    68,     1,    70,    71,
+    72,    73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
     82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,
-    -1,    93,    -1,    95,    -1,    -1,    -1,    99,    -1,    -1,
+    -1,    93,    -1,    95,    96,    -1,    -1,    99,    -1,    -1,
    102,   103,   104,   105,    -1,    -1,   108,   109,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    -1,
-    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,
-     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    89,    90,    -1,    -1,    93,    -1,    95,    96,    -1,
-    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,
-   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,
-    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+    44,    45,    46,    -1,    48,    49,    50,    51,    -1,    -1,
+    54,    -1,    -1,    -1,    58,    59,    -1,    -1,    -1,    -1,
+    -1,    65,    66,    67,    68,     1,    70,    71,    72,    73,
+    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,
+    -1,    95,    -1,    -1,    -1,    99,    -1,    -1,   102,   103,
+   104,   105,    -1,    -1,   108,   109,    -1,    -1,    44,    45,
+    46,    -1,    48,    49,    50,    51,    -1,    -1,    54,    -1,
+    -1,    -1,    58,    59,    -1,    -1,    -1,    -1,    -1,    65,
+    66,     1,    68,    -1,    70,    71,    72,    73,    -1,    -1,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    95,
+    -1,    -1,    -1,    99,    -1,    -1,   102,   103,   104,   105,
+    -1,    -1,   108,   109,    44,    45,    46,    -1,    48,    49,
+    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
+    -1,    -1,    -1,    -1,    -1,    65,    66,    -1,    68,    -1,
+    70,    71,    72,    73,    -1,     1,    76,     3,     4,    -1,
+    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,
+    -1,    -1,    -1,    93,    -1,    95,    -1,    -1,    -1,    99,
+    44,    -1,   102,   103,   104,   105,    50,    -1,   108,   109,
+    -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    -1,    45,
+    46,    -1,    -1,    67,    50,    -1,     1,    -1,     3,     4,
+    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    82,    65,
+    -1,    85,    86,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+    76,    -1,    96,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    95,
+    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,
+    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,
+    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,
+    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
+    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,
+    -1,    -1,    -1,    -1,    99,    -1,    -1,   102,   103,   104,
+   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,
+    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,
+    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,
+    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,
+    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109,
+    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,
+     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    98,
+    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
+   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,
+     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
+    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,
+    94,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,
+   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,
+    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,
     -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,
     -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,
-    93,    -1,    95,    45,    46,    -1,    -1,    -1,    50,   102,
-   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,
-    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,
+    93,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,   102,
+   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,
+    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,
+    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
+    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,
+    98,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,
+   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,
+    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,
+    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
+    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,
+    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,
+     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,
+    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
     72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
     82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,
-    -1,    93,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,
-   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46,
-    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,
-    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
-    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
-    -1,    88,    89,    90,    -1,    -1,    93,    -1,    -1,    45,
-    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,
-    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,
-     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,
-    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
-    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
-    -1,    -1,    98,    -1,    -1,    -1,   102,   103,   104,   105,
-    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,
-    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,
-    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+    -1,    93,    -1,    -1,    45,    46,    98,    -1,    -1,    50,
+   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,
+    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,
     -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
     -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,
-    -1,    -1,    93,    94,    -1,    45,    46,    -1,    -1,    -1,
-    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59,
-    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,
+    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45,
+    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,
+    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
+    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1,
+    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,
+    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,
+    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,
+    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
+    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    94,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,
+   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,
+    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,
+    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
     -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
     -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
-    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    99,
-    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,
-    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,
-     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
-    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,
-    -1,    45,    46,    98,    -1,    -1,    50,   102,   103,   104,
-   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,
-    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,
+    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    99,
+    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109,
+    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,
+     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
+   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,
+     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,
     -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,
-    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,
-   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,
-    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,
-    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
-    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    98,
-    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,
-   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,
-     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,
-   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,
-    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,
+   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,
+    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,
     -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,
     -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,
-    93,    94,    -1,    45,    46,    -1,    -1,    -1,    50,   102,
-   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,
-    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,
+    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,
+   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,
+    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,
+    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
+    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,
+    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,
+   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,
+    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,
+    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
+    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,
+    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,
+     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,
+    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
     72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
     82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,
-    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46,
-    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,
-    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
-    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
-    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,
-    46,    -1,    99,    -1,    50,   102,   103,   104,   105,    -1,
-    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,
-     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,
-    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
-    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,
-    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,
-    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,
-    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,
+   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,
+    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,
     -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
     -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,
-    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,
-    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59,
-    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,
-    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
-    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,
-    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,
-     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45,
+    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,
+    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
+    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
+    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,
+    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,
+    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,
     -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
     85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,
-    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,
-   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,
-    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,
+   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,
+    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,
+    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
+    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,
+    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109,
+    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,
+     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
+   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,
+     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,
     -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,
-   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,
-    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,
-    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
-    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,
-    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,
-   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,
-     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,
-   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,
-    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,
+   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,
+    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,
     -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,
     -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,
-    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,
-   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,
-    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,
+    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,
+   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,
+    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,
+    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
+    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,
+    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,
+   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,
+    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,
+    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
+    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,
+    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,
+     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,
+    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
     72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
     82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,
-    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46,
-    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,
-    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
-    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
-    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,
-    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,
-    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,
-     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,
-    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
-    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,
-    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,
-    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,
-    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,
+   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,
+    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,
     -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
     -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,
-    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,
-    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59,
-    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,
-    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
-    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,
-    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,
-     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45,
+    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,
+    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
+    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
+    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,
+    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,
+    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,
     -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
     85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,
-    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,
-   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,
-    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,
+   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,
+    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,
+    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
+    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,
+    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109,
+    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,
+     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
+   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,
+     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,
     -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,
-   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,
-    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,
-    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
-    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,
-    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,
-   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,
-     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,
-   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,
-    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,
+   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,
+    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,
     -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,
     -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,
-    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,
-   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,
-    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,
+    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,
+   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,
+    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,
+    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
+    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,
+    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,
+   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,
+    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,
+    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
+    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,
+    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,
+     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,
+    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
     72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
     82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,
-    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46,
-    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,
-    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
-    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
-    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,
-    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,
-    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,
-     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,
-    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
-    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,
-    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,
-    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,
-    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,
+   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,
+    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,
     -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
     -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,
-    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,
-    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59,
-    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,
-    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
-    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,
-    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,
-     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45,
+    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,
+    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
+    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
+    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,
+    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,
+    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,
     -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
     85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,
-    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,
-   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,
-    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,
+   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,
+    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,
+    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
+    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,
+    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109,
+    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,
+     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
+   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,
+     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,
     -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,
-   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,
-    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,
-    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
-    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
-    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,
-    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,
-   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,
-     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,
-   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,
-    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,
+   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,
+    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,
     -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,
     -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,
-    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,
-   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,
-    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,
+    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,
+   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,
+    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,
+    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
+    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,
+    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,
+   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,
+    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,
+    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
+    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,
+    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,
+     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,
+    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
     72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
     82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,
-    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46,
-    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,
-    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
-    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
-    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,
-    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,
-    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,
-     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,
-    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
-    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,
-    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,
-    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,
-    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,
+   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,
+    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,
     -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
     -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,
-    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,
-    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59,
-    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,
-    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,
-    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,
-    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,
-     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45,
+    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,
+    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
+    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    89,    90,    -1,    -1,    93,     1,    -1,
+    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,
+    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,
+    65,    -1,    -1,     1,    -1,    -1,    -1,    72,    -1,    -1,
     -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
-    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,
-    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,
-   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,
-    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,
+    85,    86,    45,    46,    89,    90,    -1,    50,    93,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    59,   102,   103,   104,
+   105,    -1,    65,   108,   109,     1,    -1,    45,    46,    72,
+    -1,    -1,    50,    76,    -1,    -1,    -1,    -1,    -1,    82,
+    -1,    59,    85,    86,    -1,    -1,    -1,    65,    -1,    -1,
+    93,    94,    -1,    -1,    72,    -1,    -1,    -1,    76,   102,
+   103,   104,   105,    -1,    82,   108,   109,    85,    86,    45,
+    46,    -1,     1,    -1,    50,    93,    94,    -1,    -1,    -1,
+    -1,    -1,    -1,    59,   102,   103,   104,   105,    -1,    65,
+   108,   109,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
+    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,
+    -1,    50,    -1,    -1,    -1,    -1,   102,   103,   104,   105,
+    59,    -1,   108,   109,    -1,    -1,    65,    -1,    -1,     3,
+     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
+    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
+   109,    45,    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+    -1,    65,    -1,    -1,     3,     4,    -1,    -1,    72,    -1,
     -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,
     -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,
+    -1,    95,    96,    -1,    -1,    -1,   100,    -1,   102,   103,
    104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,
-    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,
+    -1,    50,    -1,    -1,    -1,     3,     4,    -1,    -1,    -1,
     59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
-    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,
+    89,    90,    -1,    -1,    93,    94,    -1,    45,    46,    -1,
     -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,
-   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,
+   109,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
      3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,
+    -1,    89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,
-   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,
-    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,
-    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,
-    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,
-   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,
-    -1,    -1,    -1,    65,    -1,     1,    -1,    -1,    -1,    -1,
-    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
-    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,
-     1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   102,   103,   104,   105,    -1,    -1,   108,   109,    44,    45,
-    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
-    -1,    -1,     1,    -1,    45,    46,    72,    -1,    -1,    50,
-    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    59,    85,
-    86,    -1,    -1,    -1,    65,    -1,    -1,    93,    -1,    -1,
-    -1,    72,    -1,    99,    -1,    76,   102,   103,   104,   105,
-    -1,    82,   108,   109,    85,    86,    45,    46,    -1,    -1,
-    -1,    50,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
-    59,   102,   103,   104,   105,    -1,    65,   108,   109,     1,
-    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,
-    -1,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,
-   109,     1,    -1,    45,    46,    -1,    -1,    -1,    50,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,
-    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
-    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
-    82,    -1,    -1,    85,    86,     3,     4,    -1,    -1,    -1,
-    50,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
-   102,   103,   104,   105,    -1,    65,   108,   109,    -1,    -1,
-    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-    -1,    -1,    82,    -1,    -1,    85,    86,    45,    46,    89,
-    90,    -1,    50,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    59,   102,   103,   104,   105,    -1,    65,   108,   109,
-     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
-    -1,    89,    90,    -1,    -1,    93,    -1,    95,    96,    -1,
-    -1,    -1,   100,    -1,   102,   103,   104,   105,    -1,    -1,
    108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,    -1,
     -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,
     -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
@@ -2007,29 +2036,20 @@ static const short yycheck[] = {     3,
     82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,
     -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46,
-    -1,    -1,    -1,    50,    -1,    -1,    -1,     3,     4,    -1,
+    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
-    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1,    45,
+    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    44,    45,
     46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,
     -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,
-    -1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,
-    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
-    86,    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,
-    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,
-    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
-    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,
-    -1,    -1,    93,    -1,    44,    45,    46,    -1,    -1,    -1,
-    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59,
-    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,
-    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109
+    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    50,
+    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    59,    85,
+    86,    -1,    -1,    -1,    65,    -1,    -1,    93,    -1,    -1,
+    -1,    72,    -1,    -1,    -1,    76,   102,   103,   104,   105,
+    -1,    82,   108,   109,    85,    86,    -1,    -1,    89,    90,
+    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   102,   103,   104,   105,    -1,    -1,   108,   109
 };
 #define YYPURE 1
 
@@ -2532,66 +2552,66 @@ yyreduce:
   switch (yyn) {
 
 case 1:
-#line 273 "./parse.y"
+#line 268 "./parse.y"
 {;
     break;}
 case 18:
-#line 317 "./parse.y"
+#line 312 "./parse.y"
 { 
                  yyval.node = build_java_array_type (yyvsp[-2].node, -1);
                  CLASS_LOADED_P (yyval.node) = 1;
                ;
     break;}
 case 19:
-#line 322 "./parse.y"
+#line 317 "./parse.y"
 { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
     break;}
 case 20:
-#line 324 "./parse.y"
+#line 319 "./parse.y"
 { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
     break;}
 case 21:
-#line 326 "./parse.y"
+#line 321 "./parse.y"
 {RULE ("']' expected"); RECOVER;;
     break;}
 case 22:
-#line 328 "./parse.y"
+#line 323 "./parse.y"
 {RULE ("']' expected"); RECOVER;;
     break;}
 case 26:
-#line 343 "./parse.y"
+#line 338 "./parse.y"
 { yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
     break;}
 case 28:
-#line 352 "./parse.y"
+#line 347 "./parse.y"
 {yyval.node = NULL;;
     break;}
 case 36:
-#line 364 "./parse.y"
+#line 359 "./parse.y"
 {
                  yyval.node = NULL;
                ;
     break;}
 case 37:
-#line 368 "./parse.y"
+#line 363 "./parse.y"
 {
                  yyval.node = NULL;
                ;
     break;}
 case 40:
-#line 380 "./parse.y"
+#line 375 "./parse.y"
 { ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node); ;
     break;}
 case 41:
-#line 382 "./parse.y"
+#line 377 "./parse.y"
 {yyerror ("Missing name"); RECOVER;;
     break;}
 case 42:
-#line 384 "./parse.y"
+#line 379 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 45:
-#line 394 "./parse.y"
+#line 389 "./parse.y"
 {
                  tree name = EXPR_WFL_NODE (yyvsp[-1].node), node, last_name;
                  int   i = IDENTIFIER_LENGTH (name)-1;
@@ -2619,15 +2639,15 @@ case 45:
                ;
     break;}
 case 46:
-#line 420 "./parse.y"
+#line 415 "./parse.y"
 {yyerror ("Missing name"); RECOVER;;
     break;}
 case 47:
-#line 422 "./parse.y"
+#line 417 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 48:
-#line 427 "./parse.y"
+#line 422 "./parse.y"
 {
                  tree name = EXPR_WFL_NODE (yyvsp[-3].node);
                  tree node = build_tree_list (yyvsp[-3].node, NULL_TREE);
@@ -2641,15 +2661,15 @@ case 48:
                ;
     break;}
 case 49:
-#line 439 "./parse.y"
+#line 434 "./parse.y"
 {yyerror ("'*' expected"); RECOVER;;
     break;}
 case 50:
-#line 441 "./parse.y"
+#line 436 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 51:
-#line 446 "./parse.y"
+#line 441 "./parse.y"
 {
                  maybe_generate_clinit ();
                  maybe_generate_finit ();
@@ -2657,24 +2677,24 @@ case 51:
                ;
     break;}
 case 53:
-#line 453 "./parse.y"
+#line 448 "./parse.y"
 { yyval.node = NULL; ;
     break;}
 case 54:
-#line 455 "./parse.y"
+#line 450 "./parse.y"
 {
                  YYERROR_NOW;
                  yyerror ("Class or interface declaration expected");
                ;
     break;}
 case 55:
-#line 466 "./parse.y"
+#line 461 "./parse.y"
 {
                  yyval.value = (1 << yyvsp[0].value);
                ;
     break;}
 case 56:
-#line 470 "./parse.y"
+#line 465 "./parse.y"
 {
                  int acc = (1 << yyvsp[0].value);
                  if (yyval.value & acc)
@@ -2688,116 +2708,116 @@ case 56:
                ;
     break;}
 case 57:
-#line 486 "./parse.y"
+#line 481 "./parse.y"
 { create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 58:
-#line 488 "./parse.y"
+#line 483 "./parse.y"
 { 
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 59:
-#line 492 "./parse.y"
+#line 487 "./parse.y"
 { create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 60:
-#line 494 "./parse.y"
+#line 489 "./parse.y"
 {      
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 61:
-#line 498 "./parse.y"
+#line 493 "./parse.y"
 {yyerror ("Missing class name"); RECOVER;;
     break;}
 case 62:
-#line 500 "./parse.y"
+#line 495 "./parse.y"
 {yyerror ("Missing class name"); RECOVER;;
     break;}
 case 63:
-#line 502 "./parse.y"
+#line 497 "./parse.y"
 {if (!ctxp->class_err) yyerror ("'{' expected"); DRECOVER(class1);;
     break;}
 case 64:
-#line 504 "./parse.y"
+#line 499 "./parse.y"
 {if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;;
     break;}
 case 65:
-#line 508 "./parse.y"
+#line 503 "./parse.y"
 { yyval.node = NULL; ;
     break;}
 case 66:
-#line 510 "./parse.y"
+#line 505 "./parse.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 67:
-#line 512 "./parse.y"
+#line 507 "./parse.y"
 {yyerror ("'{' expected"); ctxp->class_err=1;;
     break;}
 case 68:
-#line 514 "./parse.y"
+#line 509 "./parse.y"
 {yyerror ("Missing super class name"); ctxp->class_err=1;;
     break;}
 case 69:
-#line 518 "./parse.y"
+#line 513 "./parse.y"
 { yyval.node = NULL_TREE; ;
     break;}
 case 70:
-#line 520 "./parse.y"
+#line 515 "./parse.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 71:
-#line 522 "./parse.y"
+#line 517 "./parse.y"
 {
                  ctxp->class_err=1;
                  yyerror ("Missing interface name"); 
                ;
     break;}
 case 72:
-#line 530 "./parse.y"
+#line 525 "./parse.y"
 { 
                  ctxp->interface_number = 1;
                  yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
                ;
     break;}
 case 73:
-#line 535 "./parse.y"
+#line 530 "./parse.y"
 { 
                  ctxp->interface_number++;
                  yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
                ;
     break;}
 case 74:
-#line 540 "./parse.y"
+#line 535 "./parse.y"
 {yyerror ("Missing interface name"); RECOVER;;
     break;}
 case 75:
-#line 545 "./parse.y"
+#line 540 "./parse.y"
 { yyval.node = ctxp->current_parsed_class; ;
     break;}
 case 76:
-#line 547 "./parse.y"
+#line 542 "./parse.y"
 { yyval.node = ctxp->current_parsed_class; ;
     break;}
 case 82:
-#line 560 "./parse.y"
+#line 555 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("instance initializer"); ;
     break;}
 case 85:
-#line 567 "./parse.y"
+#line 562 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("inner classe declaration"); ;
     break;}
 case 86:
-#line 569 "./parse.y"
+#line 564 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("inner interface declaration"); ;
     break;}
 case 87:
-#line 575 "./parse.y"
+#line 570 "./parse.y"
 { register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ;
     break;}
 case 88:
-#line 577 "./parse.y"
+#line 572 "./parse.y"
 {
                  check_modifiers 
                    ("Illegal modifier `%s' for field declaration",
@@ -2807,19 +2827,19 @@ case 88:
                ;
     break;}
 case 90:
-#line 590 "./parse.y"
+#line 585 "./parse.y"
 { yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 91:
-#line 592 "./parse.y"
+#line 587 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 92:
-#line 597 "./parse.y"
+#line 592 "./parse.y"
 { yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ;
     break;}
 case 93:
-#line 599 "./parse.y"
+#line 594 "./parse.y"
 { 
                  if (java_error_count)
                    yyvsp[0].node = NULL_TREE;
@@ -2828,7 +2848,7 @@ case 93:
                ;
     break;}
 case 94:
-#line 606 "./parse.y"
+#line 601 "./parse.y"
 {
                  yyerror ("Missing variable initializer");
                  yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE);
@@ -2836,7 +2856,7 @@ case 94:
                ;
     break;}
 case 95:
-#line 612 "./parse.y"
+#line 607 "./parse.y"
 {
                  yyerror ("';' expected");
                  yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE);
@@ -2844,234 +2864,234 @@ case 95:
                ;
     break;}
 case 97:
-#line 622 "./parse.y"
+#line 617 "./parse.y"
 { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
     break;}
 case 98:
-#line 624 "./parse.y"
+#line 619 "./parse.y"
 {yyerror ("Invalid declaration"); DRECOVER(vdi);;
     break;}
 case 99:
-#line 626 "./parse.y"
+#line 621 "./parse.y"
 {yyerror ("']' expected"); DRECOVER(vdi);;
     break;}
 case 100:
-#line 628 "./parse.y"
+#line 623 "./parse.y"
 {yyerror ("Unbalanced ']'"); DRECOVER(vdi);;
     break;}
 case 102:
-#line 634 "./parse.y"
+#line 629 "./parse.y"
 { yyval.node = NULL; ;
     break;}
 case 103:
-#line 640 "./parse.y"
+#line 635 "./parse.y"
 {
                  current_function_decl = yyvsp[0].node;
                  source_start_java_method (current_function_decl);
                ;
     break;}
 case 104:
-#line 645 "./parse.y"
+#line 640 "./parse.y"
 { complete_method_declaration (yyvsp[0].node); ;
     break;}
 case 105:
-#line 647 "./parse.y"
+#line 642 "./parse.y"
 {YYNOT_TWICE yyerror ("'{' expected"); RECOVER;;
     break;}
 case 106:
-#line 652 "./parse.y"
+#line 647 "./parse.y"
 { yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 107:
-#line 654 "./parse.y"
+#line 649 "./parse.y"
 { yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 108:
-#line 656 "./parse.y"
+#line 651 "./parse.y"
 { yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 109:
-#line 658 "./parse.y"
+#line 653 "./parse.y"
 { yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 110:
-#line 660 "./parse.y"
+#line 655 "./parse.y"
 {RECOVER;;
     break;}
 case 111:
-#line 662 "./parse.y"
+#line 657 "./parse.y"
 {RECOVER;;
     break;}
 case 112:
-#line 664 "./parse.y"
+#line 659 "./parse.y"
 {yyerror ("Identifier expected"); RECOVER;;
     break;}
 case 113:
-#line 666 "./parse.y"
+#line 661 "./parse.y"
 {yyerror ("Identifier expected"); RECOVER;;
     break;}
 case 114:
-#line 668 "./parse.y"
+#line 663 "./parse.y"
 {
                  yyerror ("Invalid method declaration, return type required");
                  RECOVER;
                ;
     break;}
 case 115:
-#line 676 "./parse.y"
+#line 671 "./parse.y"
 { yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ;
     break;}
 case 116:
-#line 678 "./parse.y"
+#line 673 "./parse.y"
 { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 117:
-#line 680 "./parse.y"
+#line 675 "./parse.y"
 {
                  /* Issue a warning here: obsolete declaration. FIXME */
                  yyval.node = NULL;    /* FIXME */
                ;
     break;}
 case 118:
-#line 685 "./parse.y"
+#line 680 "./parse.y"
 {yyerror ("')' expected"); DRECOVER(method_declarator);;
     break;}
 case 119:
-#line 687 "./parse.y"
+#line 682 "./parse.y"
 {yyerror ("']' expected"); RECOVER;;
     break;}
 case 120:
-#line 692 "./parse.y"
+#line 687 "./parse.y"
 {
                  ctxp->formal_parameter_number = 1;
                ;
     break;}
 case 121:
-#line 696 "./parse.y"
+#line 691 "./parse.y"
 {
                  ctxp->formal_parameter_number += 1;
                  yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node);
                ;
     break;}
 case 122:
-#line 701 "./parse.y"
+#line 696 "./parse.y"
 {yyerror ("Missing formal parameter term"); RECOVER;;
     break;}
 case 123:
-#line 706 "./parse.y"
+#line 701 "./parse.y"
 {
                  yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
                ;
     break;}
 case 124:
-#line 710 "./parse.y"
+#line 705 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("final local"); ;
     break;}
 case 125:
-#line 712 "./parse.y"
+#line 707 "./parse.y"
 {yyerror ("Missing identifier"); RECOVER;;
     break;}
 case 126:
-#line 714 "./parse.y"
+#line 709 "./parse.y"
 {
                  SOURCE_FRONTEND_DEBUG (("Modifiers: %d", yyvsp[-2].value));
                  yyerror ("Missing identifier"); RECOVER;
                ;
     break;}
 case 127:
-#line 721 "./parse.y"
+#line 716 "./parse.y"
 { yyval.node = NULL_TREE; ;
     break;}
 case 128:
-#line 723 "./parse.y"
+#line 718 "./parse.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 129:
-#line 725 "./parse.y"
+#line 720 "./parse.y"
 {yyerror ("Missing class type term"); RECOVER;;
     break;}
 case 130:
-#line 730 "./parse.y"
+#line 725 "./parse.y"
 { yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;
     break;}
 case 131:
-#line 732 "./parse.y"
+#line 727 "./parse.y"
 { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node); ;
     break;}
 case 132:
-#line 734 "./parse.y"
+#line 729 "./parse.y"
 {yyerror ("Missing class type term"); RECOVER;;
     break;}
 case 135:
-#line 741 "./parse.y"
+#line 736 "./parse.y"
 { yyval.node = NULL_TREE; ;
     break;}
 case 136:
-#line 747 "./parse.y"
+#line 742 "./parse.y"
 {
                  RULE ("STATIC_INITIALIZER");
                ;
     break;}
 case 137:
-#line 751 "./parse.y"
+#line 746 "./parse.y"
 {
                  RULE ("STATIC_INITIALIZER");
                ;
     break;}
 case 138:
-#line 758 "./parse.y"
+#line 753 "./parse.y"
 {
                  SOURCE_FRONTEND_DEBUG (("Modifiers: %d", yyvsp[0].value));
                ;
     break;}
 case 139:
-#line 766 "./parse.y"
+#line 761 "./parse.y"
 {
                  current_function_decl = yyvsp[0].node;
                  source_start_java_method (current_function_decl);
                ;
     break;}
 case 140:
-#line 771 "./parse.y"
+#line 766 "./parse.y"
 { complete_method_declaration (yyvsp[0].node); ;
     break;}
 case 141:
-#line 776 "./parse.y"
+#line 771 "./parse.y"
 { yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 142:
-#line 778 "./parse.y"
+#line 773 "./parse.y"
 { yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 143:
-#line 783 "./parse.y"
+#line 778 "./parse.y"
 { yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ;
     break;}
 case 144:
-#line 785 "./parse.y"
+#line 780 "./parse.y"
 { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 145:
-#line 793 "./parse.y"
+#line 788 "./parse.y"
 { 
                  BLOCK_EXPR_BODY (yyvsp[0].node) = size_zero_node;
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 146:
-#line 798 "./parse.y"
+#line 793 "./parse.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 147:
-#line 800 "./parse.y"
+#line 795 "./parse.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 148:
-#line 802 "./parse.y"
+#line 797 "./parse.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 149:
-#line 808 "./parse.y"
+#line 803 "./parse.y"
 { 
                  yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE); 
                  yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node);
@@ -3079,7 +3099,7 @@ case 149:
                ;
     break;}
 case 150:
-#line 814 "./parse.y"
+#line 809 "./parse.y"
 { 
                  yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node); 
                  yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node);
@@ -3087,15 +3107,15 @@ case 150:
                ;
     break;}
 case 151:
-#line 822 "./parse.y"
+#line 817 "./parse.y"
 {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
     break;}
 case 152:
-#line 824 "./parse.y"
+#line 819 "./parse.y"
 {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
     break;}
 case 153:
-#line 829 "./parse.y"
+#line 824 "./parse.y"
 {
                  tree wfl = build_wfl_node (this_identifier_node, 
                                             input_filename, 0, 0);
@@ -3104,7 +3124,7 @@ case 153:
                ;
     break;}
 case 154:
-#line 836 "./parse.y"
+#line 831 "./parse.y"
 {
                  tree wfl = build_wfl_node (super_identifier_node,
                                             input_filename, 0, 0);
@@ -3113,167 +3133,167 @@ case 154:
                ;
     break;}
 case 155:
-#line 848 "./parse.y"
+#line 843 "./parse.y"
 { create_interface (0, yyvsp[0].node, NULL_TREE); ;
     break;}
 case 156:
-#line 850 "./parse.y"
+#line 845 "./parse.y"
 {
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 157:
-#line 854 "./parse.y"
+#line 849 "./parse.y"
 { create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ;
     break;}
 case 158:
-#line 856 "./parse.y"
+#line 851 "./parse.y"
 {
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 159:
-#line 860 "./parse.y"
+#line 855 "./parse.y"
 { create_interface (0, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 160:
-#line 862 "./parse.y"
+#line 857 "./parse.y"
 {
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 161:
-#line 866 "./parse.y"
+#line 861 "./parse.y"
 { create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 162:
-#line 868 "./parse.y"
+#line 863 "./parse.y"
 {
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 163:
-#line 872 "./parse.y"
+#line 867 "./parse.y"
 {yyerror ("(here)'{' expected"); RECOVER;;
     break;}
 case 164:
-#line 874 "./parse.y"
+#line 869 "./parse.y"
 {yyerror ("(there)'{' expected"); RECOVER;;
     break;}
 case 165:
-#line 879 "./parse.y"
+#line 874 "./parse.y"
 { 
                  ctxp->interface_number = 1;
                  yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
                ;
     break;}
 case 166:
-#line 884 "./parse.y"
+#line 879 "./parse.y"
 { 
                  ctxp->interface_number++;
                  yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
                ;
     break;}
 case 167:
-#line 889 "./parse.y"
+#line 884 "./parse.y"
 {yyerror ("Invalid interface type"); RECOVER;;
     break;}
 case 168:
-#line 891 "./parse.y"
+#line 886 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 169:
-#line 896 "./parse.y"
+#line 891 "./parse.y"
 { yyval.node = NULL_TREE; ;
     break;}
 case 170:
-#line 898 "./parse.y"
+#line 893 "./parse.y"
 { yyval.node = NULL_TREE; ;
     break;}
 case 175:
-#line 910 "./parse.y"
+#line 905 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("inner class declaration"); ;
     break;}
 case 176:
-#line 912 "./parse.y"
+#line 907 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("inner interface declaration"); ;
     break;}
 case 178:
-#line 921 "./parse.y"
+#line 916 "./parse.y"
 { 
                  check_abstract_method_header (yyvsp[-1].node);
                  current_function_decl = NULL_TREE; /* FIXME ? */
                ;
     break;}
 case 179:
-#line 926 "./parse.y"
+#line 921 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 180:
-#line 932 "./parse.y"
+#line 927 "./parse.y"
 {
                  RULE ("ARRAY_INITIALIZER (empty)");
                ;
     break;}
 case 181:
-#line 936 "./parse.y"
+#line 931 "./parse.y"
 {
                  RULE ("ARRAY_INITIALIZER (variable)");
                ;
     break;}
 case 182:
-#line 940 "./parse.y"
+#line 935 "./parse.y"
 {
                  RULE ("ARRAY_INITIALIZER (,)");
                ;
     break;}
 case 183:
-#line 944 "./parse.y"
+#line 939 "./parse.y"
 {
                  RULE ("ARRAY_INITIALIZER (variable, ,)");
                ;
     break;}
 case 186:
-#line 953 "./parse.y"
+#line 948 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 187:
-#line 959 "./parse.y"
+#line 954 "./parse.y"
 { yyval.node = size_zero_node; ;
     break;}
 case 188:
-#line 961 "./parse.y"
+#line 956 "./parse.y"
 { yyval.node = yyvsp[0].node; ;
     break;}
 case 189:
-#line 966 "./parse.y"
+#line 961 "./parse.y"
 { enter_block (); ;
     break;}
 case 190:
-#line 971 "./parse.y"
+#line 966 "./parse.y"
 { 
                  maybe_absorb_scoping_blocks ();
                  yyval.node = exit_block ();
                ;
     break;}
 case 194:
-#line 985 "./parse.y"
-{ yyval.node = java_method_add_stmt (current_function_decl, yyvsp[0].node); ;
+#line 980 "./parse.y"
+{ java_method_add_stmt (current_function_decl, yyvsp[0].node); ;
     break;}
 case 195:
-#line 987 "./parse.y"
-{ yyval.node = parse_jdk1_1_error ("inner class declaration"); ;
+#line 982 "./parse.y"
+{ parse_jdk1_1_error ("inner class declaration"); ;
     break;}
 case 197:
-#line 996 "./parse.y"
+#line 991 "./parse.y"
 { declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 198:
-#line 998 "./parse.y"
+#line 993 "./parse.y"
 { declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 204:
-#line 1008 "./parse.y"
+#line 1003 "./parse.y"
 { 
                  /* If the for loop is unlabeled, we must return the
                     block it was defined it. It our last chance to
@@ -3283,11 +3303,11 @@ case 204:
                ;
     break;}
 case 221:
-#line 1041 "./parse.y"
+#line 1036 "./parse.y"
 { yyval.node = size_zero_node; ;
     break;}
 case 222:
-#line 1046 "./parse.y"
+#line 1041 "./parse.y"
 {
                  yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node), 
                                            EXPR_WFL_NODE (yyvsp[-1].node));
@@ -3297,7 +3317,7 @@ case 222:
                ;
     break;}
 case 223:
-#line 1057 "./parse.y"
+#line 1052 "./parse.y"
 { 
                  yyval.node = complete_labeled_statement (yyvsp[-1].node, yyvsp[0].node);
                  pop_labeled_block ();
@@ -3305,11 +3325,11 @@ case 223:
                ;
     break;}
 case 224:
-#line 1063 "./parse.y"
+#line 1058 "./parse.y"
 {yyerror ("':' expected"); RECOVER;;
     break;}
 case 225:
-#line 1068 "./parse.y"
+#line 1063 "./parse.y"
 { 
                  yyval.node = complete_labeled_statement (yyvsp[-1].node, yyvsp[0].node);
                  pop_labeled_block ();
@@ -3317,7 +3337,7 @@ case 225:
                ;
     break;}
 case 226:
-#line 1079 "./parse.y"
+#line 1074 "./parse.y"
 {
                  /* We have a statement. Generate a WFL around it so
                     we can debug it */
@@ -3328,7 +3348,7 @@ case 226:
                ;
     break;}
 case 227:
-#line 1088 "./parse.y"
+#line 1083 "./parse.y"
 {
                  if (ctxp->prevent_ese != lineno)
                    yyerror ("Invalid expression statement");
@@ -3336,7 +3356,7 @@ case 227:
                ;
     break;}
 case 228:
-#line 1094 "./parse.y"
+#line 1089 "./parse.y"
 {
                  if (ctxp->prevent_ese != lineno)
                    yyerror ("Invalid expression statement");
@@ -3344,7 +3364,7 @@ case 228:
                ;
     break;}
 case 229:
-#line 1100 "./parse.y"
+#line 1095 "./parse.y"
 {
                  if (ctxp->prevent_ese != lineno)
                    yyerror ("Invalid expression statement");
@@ -3352,11 +3372,11 @@ case 229:
                ;
     break;}
 case 230:
-#line 1106 "./parse.y"
+#line 1101 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 231:
-#line 1108 "./parse.y"
+#line 1103 "./parse.y"
 {
                  yyerror ("Constructor invocation must be first "
                           "thing in a constructor"); 
@@ -3364,11 +3384,11 @@ case 231:
                ;
     break;}
 case 232:
-#line 1114 "./parse.y"
+#line 1109 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 233:
-#line 1116 "./parse.y"
+#line 1111 "./parse.y"
 {
                  yyerror ("Constructor invocation must be first "
                           "thing in a constructor"); 
@@ -3376,193 +3396,156 @@ case 233:
                ;
     break;}
 case 234:
-#line 1122 "./parse.y"
+#line 1117 "./parse.y"
 {yyerror ("'(' expected"); RECOVER;;
     break;}
 case 235:
-#line 1124 "./parse.y"
+#line 1119 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 236:
-#line 1126 "./parse.y"
+#line 1121 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 237:
-#line 1128 "./parse.y"
+#line 1123 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 238:
-#line 1130 "./parse.y"
+#line 1125 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 246:
-#line 1145 "./parse.y"
+#line 1140 "./parse.y"
 { yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node, NULL_TREE); ;
     break;}
 case 247:
-#line 1147 "./parse.y"
+#line 1142 "./parse.y"
 {yyerror ("'(' expected"); RECOVER;;
     break;}
 case 248:
-#line 1149 "./parse.y"
+#line 1144 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 249:
-#line 1151 "./parse.y"
+#line 1146 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 250:
-#line 1156 "./parse.y"
+#line 1151 "./parse.y"
 { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 251:
-#line 1161 "./parse.y"
+#line 1156 "./parse.y"
 { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 252:
-#line 1166 "./parse.y"
-{ 
-                 TREE_OPERAND (yyvsp[-1].node, 1) = yyvsp[0].node;
-                 yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-1].node), yyvsp[-1].node);
+#line 1161 "./parse.y"
+{
+                 enter_block ();
                ;
     break;}
 case 253:
-#line 1174 "./parse.y"
+#line 1165 "./parse.y"
 { 
-                 yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE);
-                 EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
+                 /* Make into "proper list" of COMPOUND_EXPRs.
+                    I.e. make the last statment also have its own COMPOUND_EXPR. */
+                 maybe_absorb_scoping_blocks ();
+                 TREE_OPERAND (yyvsp[-2].node, 1) = exit_block ();
+                 yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-2].node), yyvsp[-2].node);
                ;
     break;}
 case 254:
-#line 1179 "./parse.y"
-{yyerror ("'(' expected"); RECOVER;;
+#line 1176 "./parse.y"
+{ 
+                 yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE);
+                 EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
+               ;
     break;}
 case 255:
 #line 1181 "./parse.y"
-{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;
+{yyerror ("'(' expected"); RECOVER;;
     break;}
 case 256:
 #line 1183 "./parse.y"
-{yyerror ("'{' expected"); RECOVER;;
+{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;
     break;}
 case 257:
-#line 1188 "./parse.y"
-{ yyval.node = NULL_TREE; ;
-    break;}
-case 258:
-#line 1190 "./parse.y"
-{ yyval.node = build_tree_list (yyvsp[-1].node, NULL_TREE); ;
-    break;}
-case 259:
-#line 1192 "./parse.y"
-{ yyval.node = yyvsp[-1].node; ;
-    break;}
-case 260:
-#line 1194 "./parse.y"
-{ 
-                 /* Switch labels alone are empty switch statements */
-                 tree sl = build_tree_list (yyvsp[-1].node, NULL_TREE);
-                 TREE_CHAIN (sl) = yyvsp[-2].node;
-                 yyval.node = sl;
-               ;
-    break;}
-case 262:
-#line 1205 "./parse.y"
-{ 
-                 TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
-                 yyval.node = yyvsp[0].node;
-               ;
-    break;}
-case 263:
-#line 1213 "./parse.y"
-{ yyval.node = build_tree_list (yyvsp[-1].node, exit_block ()); ;
-    break;}
-case 264:
-#line 1218 "./parse.y"
-{ 
-                 /* All statements attached to this group of cases
-                    will be stored in a block */
-                 enter_block ();
-                 yyval.node = yyvsp[0].node;
-               ;
-    break;}
-case 266:
-#line 1228 "./parse.y"
-{
-                 TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
-                 yyval.node = yyvsp[0].node;
-               ;
+#line 1185 "./parse.y"
+{yyerror ("'{' expected"); RECOVER;;
     break;}
 case 267:
-#line 1236 "./parse.y"
+#line 1211 "./parse.y"
 { 
-                 yyval.node = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node);
-                 EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
+                 tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node);
+                 EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location;
+                 java_method_add_stmt (current_function_decl, lab);
                ;
     break;}
 case 268:
-#line 1241 "./parse.y"
+#line 1217 "./parse.y"
 { 
-                 yyval.node = build1 (DEFAULT_EXPR, NULL_TREE, NULL_TREE);
-                 EXPR_WFL_LINECOL (yyval.node) = yyvsp[-1].operator.location;
+                 tree lab = build1 (DEFAULT_EXPR, NULL_TREE, NULL_TREE);
+                 EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location;
+                 java_method_add_stmt (current_function_decl, lab);
                ;
     break;}
 case 269:
-#line 1246 "./parse.y"
+#line 1223 "./parse.y"
 {yyerror ("Missing or invalid constant expression"); RECOVER;;
     break;}
 case 270:
-#line 1248 "./parse.y"
+#line 1225 "./parse.y"
 {yyerror ("':' expected"); RECOVER;;
     break;}
 case 271:
-#line 1250 "./parse.y"
+#line 1227 "./parse.y"
 {yyerror ("':' expected"); RECOVER;;
     break;}
 case 272:
-#line 1255 "./parse.y"
+#line 1232 "./parse.y"
 { 
                  tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0);
                  yyval.node = build_new_loop (body);
                ;
     break;}
 case 273:
-#line 1263 "./parse.y"
+#line 1240 "./parse.y"
 { yyval.node = complete_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
     break;}
 case 274:
-#line 1265 "./parse.y"
+#line 1242 "./parse.y"
 {YYERROR_NOW; yyerror ("'(' expected"); RECOVER;;
     break;}
 case 275:
-#line 1267 "./parse.y"
+#line 1244 "./parse.y"
 {yyerror ("Missing term and ')' expected"); RECOVER;;
     break;}
 case 276:
-#line 1269 "./parse.y"
+#line 1246 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 277:
-#line 1274 "./parse.y"
+#line 1251 "./parse.y"
 { yyval.node = complete_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
     break;}
 case 278:
-#line 1279 "./parse.y"
+#line 1256 "./parse.y"
 { 
                  tree body = build_loop_body (0, NULL_TREE, 1);
                  yyval.node = build_new_loop (body);
                ;
     break;}
 case 279:
-#line 1288 "./parse.y"
+#line 1265 "./parse.y"
 { yyval.node = complete_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ;
     break;}
 case 280:
-#line 1293 "./parse.y"
+#line 1270 "./parse.y"
 { yyval.node = complete_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
     break;}
 case 281:
-#line 1295 "./parse.y"
+#line 1272 "./parse.y"
 { 
                  yyval.node = complete_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
                  /* We have not condition, so we get rid of the EXIT_EXPR */
@@ -3571,23 +3554,23 @@ case 281:
                ;
     break;}
 case 282:
-#line 1302 "./parse.y"
+#line 1279 "./parse.y"
 {yyerror ("Invalid control expression"); RECOVER;;
     break;}
 case 283:
-#line 1304 "./parse.y"
+#line 1281 "./parse.y"
 {yyerror ("Invalid update expression"); RECOVER;;
     break;}
 case 284:
-#line 1306 "./parse.y"
+#line 1283 "./parse.y"
 {yyerror ("Invalid update expression"); RECOVER;;
     break;}
 case 285:
-#line 1311 "./parse.y"
+#line 1288 "./parse.y"
 { yyval.node = complete_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
     break;}
 case 286:
-#line 1313 "./parse.y"
+#line 1290 "./parse.y"
 { 
                  yyval.node = complete_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
                  /* We have not condition, so we get rid of the EXIT_EXPR */
@@ -3596,7 +3579,7 @@ case 286:
                ;
     break;}
 case 287:
-#line 1323 "./parse.y"
+#line 1300 "./parse.y"
 { 
                  /* This scope defined for local variable that may be
                      defined within the scope of the for loop */
@@ -3604,15 +3587,15 @@ case 287:
                ;
     break;}
 case 288:
-#line 1329 "./parse.y"
+#line 1306 "./parse.y"
 {yyerror ("'(' expected"); DRECOVER(for_1);;
     break;}
 case 289:
-#line 1331 "./parse.y"
+#line 1308 "./parse.y"
 {yyerror ("Invalid init statement"); RECOVER;;
     break;}
 case 290:
-#line 1336 "./parse.y"
+#line 1313 "./parse.y"
 { 
                  /* We now declare the loop body. The loop is
                      declared as a for loop. */
@@ -3625,11 +3608,11 @@ case 290:
                ;
     break;}
 case 291:
-#line 1348 "./parse.y"
+#line 1325 "./parse.y"
 { yyval.node = size_zero_node; ;
     break;}
 case 292:
-#line 1350 "./parse.y"
+#line 1327 "./parse.y"
 { 
                  /* Init statement recorded within the previously
                      defined block scope */
@@ -3637,7 +3620,7 @@ case 292:
                ;
     break;}
 case 293:
-#line 1356 "./parse.y"
+#line 1333 "./parse.y"
 { 
                  /* Local variable are recorded within the previously
                     defined block scope */
@@ -3645,94 +3628,94 @@ case 293:
                ;
     break;}
 case 294:
-#line 1362 "./parse.y"
+#line 1339 "./parse.y"
 {yyerror ("';' expected"); DRECOVER(for_init_1);;
     break;}
 case 295:
-#line 1366 "./parse.y"
+#line 1343 "./parse.y"
 {yyval.node = size_zero_node;;
     break;}
 case 296:
-#line 1368 "./parse.y"
+#line 1345 "./parse.y"
 { yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ;
     break;}
 case 297:
-#line 1373 "./parse.y"
+#line 1350 "./parse.y"
 { yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ;
     break;}
 case 298:
-#line 1375 "./parse.y"
+#line 1352 "./parse.y"
 { yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ;
     break;}
 case 299:
-#line 1377 "./parse.y"
+#line 1354 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 300:
-#line 1382 "./parse.y"
+#line 1359 "./parse.y"
 { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ;
     break;}
 case 301:
-#line 1384 "./parse.y"
+#line 1361 "./parse.y"
 { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ;
     break;}
 case 302:
-#line 1386 "./parse.y"
+#line 1363 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 303:
-#line 1388 "./parse.y"
+#line 1365 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 304:
-#line 1393 "./parse.y"
+#line 1370 "./parse.y"
 { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ;
     break;}
 case 305:
-#line 1395 "./parse.y"
+#line 1372 "./parse.y"
 { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ;
     break;}
 case 306:
-#line 1397 "./parse.y"
+#line 1374 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 307:
-#line 1399 "./parse.y"
+#line 1376 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 308:
-#line 1404 "./parse.y"
+#line 1381 "./parse.y"
 { yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ;
     break;}
 case 309:
-#line 1406 "./parse.y"
+#line 1383 "./parse.y"
 { yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ;
     break;}
 case 310:
-#line 1408 "./parse.y"
+#line 1385 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 311:
-#line 1410 "./parse.y"
+#line 1387 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 312:
-#line 1415 "./parse.y"
+#line 1392 "./parse.y"
 { 
                  yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node);
                  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
                ;
     break;}
 case 313:
-#line 1420 "./parse.y"
+#line 1397 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 314:
-#line 1422 "./parse.y"
+#line 1399 "./parse.y"
 {yyerror ("';' expected"); RECOVER;;
     break;}
 case 315:
-#line 1427 "./parse.y"
+#line 1404 "./parse.y"
 { 
                  yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
                  EXPR_WFL_LINECOL (yyval.node) = 
@@ -3740,53 +3723,53 @@ case 315:
                ;
     break;}
 case 316:
-#line 1433 "./parse.y"
+#line 1410 "./parse.y"
 {yyerror ("'{' expected"); RECOVER;;
     break;}
 case 317:
-#line 1435 "./parse.y"
+#line 1412 "./parse.y"
 {yyerror ("'(' expected"); RECOVER;;
     break;}
 case 318:
-#line 1437 "./parse.y"
+#line 1414 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 319:
-#line 1439 "./parse.y"
+#line 1416 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 320:
-#line 1444 "./parse.y"
+#line 1421 "./parse.y"
 {
                  if ((1 << yyvsp[0].value) != ACC_SYNCHRONIZED)
                    fatal ("synchronized was '%d' - yyparse", (1 << yyvsp[0].value));
                ;
     break;}
 case 321:
-#line 1452 "./parse.y"
+#line 1429 "./parse.y"
 { yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node, NULL_TREE); ;
     break;}
 case 322:
-#line 1454 "./parse.y"
+#line 1431 "./parse.y"
 { yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, NULL_TREE, yyvsp[0].node); ;
     break;}
 case 323:
-#line 1456 "./parse.y"
+#line 1433 "./parse.y"
 { yyval.node = build_try_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 324:
-#line 1458 "./parse.y"
+#line 1435 "./parse.y"
 {yyerror ("'{' expected"); DRECOVER (try_statement);;
     break;}
 case 326:
-#line 1464 "./parse.y"
+#line 1441 "./parse.y"
 { 
                  TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
                  yyval.node = yyvsp[0].node;
                ;
     break;}
 case 327:
-#line 1472 "./parse.y"
+#line 1449 "./parse.y"
 { 
                  java_method_add_stmt (current_function_decl, yyvsp[0].node);
                  exit_block ();
@@ -3794,16 +3777,17 @@ case 327:
                ;
     break;}
 case 328:
-#line 1480 "./parse.y"
+#line 1457 "./parse.y"
 { 
                  /* We add a block to define a scope for
                     formal_parameter (CCBP). The formal parameter is
                     declared initialized by the appropriate function
                     call */
                  tree ccpb = enter_block ();
-                 tree init = build_assignment (ASSIGN_TK, yyvsp[-2].operator.location, 
-                                               TREE_PURPOSE (yyvsp[-1].node), 
-                                               soft_exceptioninfo_call_node);
+                 tree init = /* flag_emit_class_files ? NULL_TREE
+                                : */ build_assignment (ASSIGN_TK, yyvsp[-2].operator.location,
+                                       TREE_PURPOSE (yyvsp[-1].node), 
+                                       soft_exceptioninfo_call_node);
                  declare_local_variables (0, TREE_VALUE (yyvsp[-1].node),
                                           build_tree_list (TREE_PURPOSE (yyvsp[-1].node),
                                                            init));
@@ -3812,179 +3796,179 @@ case 328:
                ;
     break;}
 case 329:
-#line 1496 "./parse.y"
+#line 1474 "./parse.y"
 {yyerror ("'(' expected"); RECOVER;;
     break;}
 case 330:
-#line 1498 "./parse.y"
+#line 1476 "./parse.y"
 {yyerror ("Missing term or ')' expected"); DRECOVER (2);;
     break;}
 case 331:
-#line 1500 "./parse.y"
+#line 1478 "./parse.y"
 {yyerror ("')' expected"); DRECOVER (1);;
     break;}
 case 332:
-#line 1505 "./parse.y"
+#line 1483 "./parse.y"
 { 
                  yyval.node = build (FINALLY_EXPR, NULL_TREE,
                              create_label_decl (generate_name ()), yyvsp[0].node);
                ;
     break;}
 case 333:
-#line 1510 "./parse.y"
+#line 1488 "./parse.y"
 {yyerror ("'{' expected"); RECOVER; ;
     break;}
 case 337:
-#line 1522 "./parse.y"
+#line 1500 "./parse.y"
 { yyval.node = build_this (yyvsp[0].operator.location); ;
     break;}
 case 338:
-#line 1524 "./parse.y"
+#line 1502 "./parse.y"
 {yyval.node = yyvsp[-1].node;;
     break;}
 case 343:
-#line 1533 "./parse.y"
+#line 1511 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("class literals"); ;
     break;}
 case 344:
-#line 1535 "./parse.y"
+#line 1513 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("class literals"); ;
     break;}
 case 345:
-#line 1537 "./parse.y"
+#line 1515 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("class literals"); ;
     break;}
 case 346:
-#line 1542 "./parse.y"
+#line 1520 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("class literals"); ;
     break;}
 case 347:
-#line 1544 "./parse.y"
+#line 1522 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 348:
-#line 1546 "./parse.y"
+#line 1524 "./parse.y"
 {yyerror ("'class' or 'this' expected" ); RECOVER;;
     break;}
 case 349:
-#line 1548 "./parse.y"
+#line 1526 "./parse.y"
 {yyerror ("'class' expected" ); RECOVER;;
     break;}
 case 350:
-#line 1550 "./parse.y"
+#line 1528 "./parse.y"
 {yyerror ("'class' expected" ); RECOVER;;
     break;}
 case 351:
-#line 1555 "./parse.y"
+#line 1533 "./parse.y"
 { yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 352:
-#line 1557 "./parse.y"
+#line 1535 "./parse.y"
 { yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ;
     break;}
 case 353:
-#line 1562 "./parse.y"
+#line 1540 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;
     break;}
 case 354:
-#line 1564 "./parse.y"
+#line 1542 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;
     break;}
 case 359:
-#line 1573 "./parse.y"
+#line 1551 "./parse.y"
 {yyerror ("'(' expected"); DRECOVER(new_1);;
     break;}
 case 360:
-#line 1575 "./parse.y"
+#line 1553 "./parse.y"
 {yyerror ("'(' expected"); RECOVER;;
     break;}
 case 361:
-#line 1577 "./parse.y"
+#line 1555 "./parse.y"
 {yyerror ("')' or term expected"); RECOVER;;
     break;}
 case 362:
-#line 1579 "./parse.y"
+#line 1557 "./parse.y"
 {yyerror ("')' expected"); RECOVER;;
     break;}
 case 363:
-#line 1581 "./parse.y"
+#line 1559 "./parse.y"
 {YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;;
     break;}
 case 364:
-#line 1583 "./parse.y"
+#line 1561 "./parse.y"
 {yyerror ("'(' expected"); RECOVER;;
     break;}
 case 367:
-#line 1593 "./parse.y"
+#line 1571 "./parse.y"
 { 
                  yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE);
                  ctxp->formal_parameter_number = 1; 
                ;
     break;}
 case 368:
-#line 1598 "./parse.y"
+#line 1576 "./parse.y"
 {
                  ctxp->formal_parameter_number += 1;
                  yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node);
                ;
     break;}
 case 369:
-#line 1603 "./parse.y"
+#line 1581 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 370:
-#line 1608 "./parse.y"
+#line 1586 "./parse.y"
 { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
     break;}
 case 371:
-#line 1610 "./parse.y"
+#line 1588 "./parse.y"
 { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
     break;}
 case 372:
-#line 1612 "./parse.y"
+#line 1590 "./parse.y"
 { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, ctxp->osb_number); ;
     break;}
 case 373:
-#line 1614 "./parse.y"
+#line 1592 "./parse.y"
 { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, ctxp->osb_number); ;
     break;}
 case 374:
-#line 1618 "./parse.y"
+#line 1596 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("anonymous array"); ;
     break;}
 case 375:
-#line 1620 "./parse.y"
+#line 1598 "./parse.y"
 { yyval.node = parse_jdk1_1_error ("anonymous array"); ;
     break;}
 case 376:
-#line 1622 "./parse.y"
+#line 1600 "./parse.y"
 {yyerror ("'[' expected"); DRECOVER ("]");;
     break;}
 case 377:
-#line 1624 "./parse.y"
+#line 1602 "./parse.y"
 {yyerror ("']' expected"); RECOVER;;
     break;}
 case 378:
-#line 1629 "./parse.y"
+#line 1607 "./parse.y"
 { yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;
     break;}
 case 379:
-#line 1631 "./parse.y"
+#line 1609 "./parse.y"
 { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ;
     break;}
 case 380:
-#line 1636 "./parse.y"
+#line 1614 "./parse.y"
 { 
                  EXPR_WFL_LINECOL (yyvsp[-1].node) = yyvsp[-2].operator.location;
                  yyval.node = yyvsp[-1].node;
                ;
     break;}
 case 381:
-#line 1641 "./parse.y"
+#line 1619 "./parse.y"
 {yyerror ("']' expected"); RECOVER;;
     break;}
 case 382:
-#line 1643 "./parse.y"
+#line 1621 "./parse.y"
 {
                  yyerror ("Missing term");
                  yyerror ("']' expected");
@@ -3992,23 +3976,23 @@ case 382:
                ;
     break;}
 case 383:
-#line 1652 "./parse.y"
+#line 1630 "./parse.y"
 { ctxp->osb_number = 1; ;
     break;}
 case 384:
-#line 1654 "./parse.y"
+#line 1632 "./parse.y"
 { ctxp->osb_number++; ;
     break;}
 case 385:
-#line 1656 "./parse.y"
+#line 1634 "./parse.y"
 { yyerror ("']' expected"); RECOVER;;
     break;}
 case 386:
-#line 1661 "./parse.y"
+#line 1639 "./parse.y"
 { yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
     break;}
 case 387:
-#line 1663 "./parse.y"
+#line 1641 "./parse.y"
 {
                  tree super_wfl = 
                    build_wfl_node (super_identifier_node, 
@@ -4018,19 +4002,19 @@ case 387:
                ;
     break;}
 case 388:
-#line 1671 "./parse.y"
+#line 1649 "./parse.y"
 {yyerror ("Field expected"); DRECOVER (super_field_acces);;
     break;}
 case 389:
-#line 1676 "./parse.y"
+#line 1654 "./parse.y"
 { yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ;
     break;}
 case 390:
-#line 1678 "./parse.y"
+#line 1656 "./parse.y"
 { yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 391:
-#line 1680 "./parse.y"
+#line 1658 "./parse.y"
 { 
                  if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR)
                    yyval.node = build_this_super_qualified_invocation 
@@ -4043,7 +4027,7 @@ case 391:
                ;
     break;}
 case 392:
-#line 1691 "./parse.y"
+#line 1669 "./parse.y"
 { 
                  if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR)
                    yyval.node = build_this_super_qualified_invocation 
@@ -4056,121 +4040,121 @@ case 392:
                ;
     break;}
 case 393:
-#line 1702 "./parse.y"
+#line 1680 "./parse.y"
 { 
                  yyval.node = build_this_super_qualified_invocation 
                    (0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location);
                ;
     break;}
 case 394:
-#line 1707 "./parse.y"
+#line 1685 "./parse.y"
 {
                  yyval.node = build_this_super_qualified_invocation 
                    (0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location);
                ;
     break;}
 case 395:
-#line 1716 "./parse.y"
+#line 1694 "./parse.y"
 { yyerror ("'(' expected"); DRECOVER (method_invocation); ;
     break;}
 case 396:
-#line 1718 "./parse.y"
+#line 1696 "./parse.y"
 { yyerror ("'(' expected"); DRECOVER (method_invocation); ;
     break;}
 case 397:
-#line 1723 "./parse.y"
+#line 1701 "./parse.y"
 { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 398:
-#line 1725 "./parse.y"
+#line 1703 "./parse.y"
 { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 399:
-#line 1727 "./parse.y"
+#line 1705 "./parse.y"
 {
                  yyerror ("Missing term and ']' expected");
                  DRECOVER(array_access);
                ;
     break;}
 case 400:
-#line 1732 "./parse.y"
+#line 1710 "./parse.y"
 {
                  yyerror ("']' expected");
                  DRECOVER(array_access);
                ;
     break;}
 case 401:
-#line 1737 "./parse.y"
+#line 1715 "./parse.y"
 {
                  yyerror ("Missing term and ']' expected");
                  DRECOVER(array_access);
                ;
     break;}
 case 402:
-#line 1742 "./parse.y"
+#line 1720 "./parse.y"
 {
                  yyerror ("']' expected");
                  DRECOVER(array_access);
                ;
     break;}
 case 407:
-#line 1757 "./parse.y"
+#line 1735 "./parse.y"
 { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
     break;}
 case 408:
-#line 1762 "./parse.y"
+#line 1740 "./parse.y"
 { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
     break;}
 case 411:
-#line 1769 "./parse.y"
+#line 1747 "./parse.y"
 {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
     break;}
 case 412:
-#line 1771 "./parse.y"
+#line 1749 "./parse.y"
 {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
     break;}
 case 414:
-#line 1774 "./parse.y"
+#line 1752 "./parse.y"
 {yyerror ("Missing term"); RECOVER;
     break;}
 case 415:
-#line 1776 "./parse.y"
+#line 1754 "./parse.y"
 {yyerror ("Missing term"); RECOVER;
     break;}
 case 416:
-#line 1781 "./parse.y"
+#line 1759 "./parse.y"
 {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
     break;}
 case 417:
-#line 1783 "./parse.y"
+#line 1761 "./parse.y"
 {yyerror ("Missing term"); RECOVER;
     break;}
 case 418:
-#line 1788 "./parse.y"
+#line 1766 "./parse.y"
 {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
     break;}
 case 419:
-#line 1790 "./parse.y"
+#line 1768 "./parse.y"
 {yyerror ("Missing term"); RECOVER;
     break;}
 case 421:
-#line 1796 "./parse.y"
+#line 1774 "./parse.y"
 {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
     break;}
 case 422:
-#line 1798 "./parse.y"
+#line 1776 "./parse.y"
 {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
     break;}
 case 424:
-#line 1801 "./parse.y"
+#line 1779 "./parse.y"
 {yyerror ("Missing term"); RECOVER;
     break;}
 case 425:
-#line 1803 "./parse.y"
+#line 1781 "./parse.y"
 {yyerror ("Missing term"); RECOVER;
     break;}
 case 426:
-#line 1808 "./parse.y"
+#line 1786 "./parse.y"
 { 
                  tree type = yyvsp[-3].node;
                  while (ctxp->osb_number--)
@@ -4179,15 +4163,15 @@ case 426:
                ;
     break;}
 case 427:
-#line 1815 "./parse.y"
+#line 1793 "./parse.y"
 { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 428:
-#line 1817 "./parse.y"
+#line 1795 "./parse.y"
 { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 429:
-#line 1819 "./parse.y"
+#line 1797 "./parse.y"
 { 
                  char *ptr;
                  while (ctxp->osb_number--)
@@ -4201,11 +4185,11 @@ case 429:
                ;
     break;}
 case 430:
-#line 1831 "./parse.y"
+#line 1809 "./parse.y"
 {yyerror ("']' expected, invalid type expression");;
     break;}
 case 431:
-#line 1833 "./parse.y"
+#line 1811 "./parse.y"
 {
                  if (ctxp->prevent_ese != lineno)
                    yyerror ("Invalid type expression"); RECOVER;
@@ -4213,243 +4197,243 @@ case 431:
                ;
     break;}
 case 432:
-#line 1839 "./parse.y"
+#line 1817 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 433:
-#line 1841 "./parse.y"
+#line 1819 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 434:
-#line 1843 "./parse.y"
+#line 1821 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 436:
-#line 1849 "./parse.y"
+#line 1827 "./parse.y"
 { 
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), 
                                    yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node);
                ;
     break;}
 case 437:
-#line 1854 "./parse.y"
+#line 1832 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 438:
-#line 1859 "./parse.y"
+#line 1837 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 439:
-#line 1864 "./parse.y"
+#line 1842 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 440:
-#line 1866 "./parse.y"
+#line 1844 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 441:
-#line 1868 "./parse.y"
+#line 1846 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 443:
-#line 1874 "./parse.y"
+#line 1852 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 444:
-#line 1879 "./parse.y"
+#line 1857 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 445:
-#line 1884 "./parse.y"
+#line 1862 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 446:
-#line 1886 "./parse.y"
+#line 1864 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 448:
-#line 1892 "./parse.y"
+#line 1870 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 449:
-#line 1897 "./parse.y"
+#line 1875 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 450:
-#line 1902 "./parse.y"
+#line 1880 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 451:
-#line 1907 "./parse.y"
+#line 1885 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 452:
-#line 1909 "./parse.y"
+#line 1887 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 453:
-#line 1911 "./parse.y"
+#line 1889 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 455:
-#line 1917 "./parse.y"
+#line 1895 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 456:
-#line 1922 "./parse.y"
+#line 1900 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 457:
-#line 1927 "./parse.y"
+#line 1905 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 458:
-#line 1932 "./parse.y"
+#line 1910 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 459:
-#line 1937 "./parse.y"
+#line 1915 "./parse.y"
 { yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 460:
-#line 1939 "./parse.y"
+#line 1917 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 461:
-#line 1941 "./parse.y"
+#line 1919 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 462:
-#line 1943 "./parse.y"
+#line 1921 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 463:
-#line 1945 "./parse.y"
+#line 1923 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 464:
-#line 1947 "./parse.y"
+#line 1925 "./parse.y"
 {yyerror ("Invalid reference type"); RECOVER;;
     break;}
 case 466:
-#line 1953 "./parse.y"
+#line 1931 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 467:
-#line 1958 "./parse.y"
+#line 1936 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 468:
-#line 1963 "./parse.y"
+#line 1941 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 469:
-#line 1965 "./parse.y"
+#line 1943 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 471:
-#line 1971 "./parse.y"
+#line 1949 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 472:
-#line 1976 "./parse.y"
+#line 1954 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 474:
-#line 1982 "./parse.y"
+#line 1960 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 475:
-#line 1987 "./parse.y"
+#line 1965 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 477:
-#line 1993 "./parse.y"
+#line 1971 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 478:
-#line 1998 "./parse.y"
+#line 1976 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 480:
-#line 2004 "./parse.y"
+#line 1982 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 481:
-#line 2009 "./parse.y"
+#line 1987 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 483:
-#line 2015 "./parse.y"
+#line 1993 "./parse.y"
 {
                  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
                                    yyvsp[-2].node, yyvsp[0].node); 
                ;
     break;}
 case 484:
-#line 2020 "./parse.y"
+#line 1998 "./parse.y"
 {yyerror ("Missing term"); RECOVER;;
     break;}
 case 486:
-#line 2026 "./parse.y"
+#line 2004 "./parse.y"
 {
                  yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);
                  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location;
                ;
     break;}
 case 487:
-#line 2031 "./parse.y"
+#line 2009 "./parse.y"
 {
                  YYERROR_NOW;
                  yyerror ("Missing term");
@@ -4457,19 +4441,19 @@ case 487:
                ;
     break;}
 case 488:
-#line 2037 "./parse.y"
+#line 2015 "./parse.y"
 {yyerror ("Missing term"); DRECOVER (2);;
     break;}
 case 489:
-#line 2039 "./parse.y"
+#line 2017 "./parse.y"
 {yyerror ("Missing term"); DRECOVER (3);;
     break;}
 case 492:
-#line 2049 "./parse.y"
+#line 2027 "./parse.y"
 { yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 493:
-#line 2051 "./parse.y"
+#line 2029 "./parse.y"
 {
                  if (ctxp->prevent_ese != lineno)
                    yyerror ("Missing term");
@@ -4674,7 +4658,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 2077 "./parse.y"
+#line 2055 "./parse.y"
 
 \f
 
@@ -4860,19 +4844,15 @@ yyerror (msg)
 }
 
 static void
-parse_error (msg)
-     char *msg;
-{
-  java_error (NULL);
-  java_error (msg);
-}
-
-static void
-issue_warning_error_from_context (cl, msg)
+issue_warning_error_from_context (cl, msg, ap)
      tree cl;
      char *msg;
+     va_list ap;
 {
   char *saved;
+  char buffer [4096];
+  vsprintf (buffer, msg, ap);
+  force_error = 1;
 
   ctxp->elc.line = EXPR_WFL_LINENO (cl);
   ctxp->elc.col  = (EXPR_WFL_COLNO (cl) == 0xfff ? -1 : EXPR_WFL_COLNO (cl));
@@ -4881,20 +4861,21 @@ issue_warning_error_from_context (cl, msg)
   saved = ctxp->filename;
   if (TREE_CODE (cl) == EXPR_WITH_FILE_LOCATION && EXPR_WFL_FILENAME_NODE (cl))
     ctxp->filename = EXPR_WFL_FILENAME (cl);
-  parse_error (msg);
+  java_error (NULL);
+  java_error (buffer);
   ctxp->filename = saved;
+  force_error = 0;
 }
 
 /* Issue an error message at a current source line CL */
 
-static void
+void
 parse_error_context VPROTO ((tree cl, char *msg, ...))
 {
 #ifndef __STDC__
   tree cl;
   char *msg;
 #endif
-  char buffer [4096];
   va_list ap;
 
   VA_START (ap, msg);
@@ -4902,11 +4883,8 @@ parse_error_context VPROTO ((tree cl, char *msg, ...))
   cl = va_arg (ap, tree);
   msg = va_arg (ap, char *);
 #endif
-  vsprintf (buffer, msg, ap);
-
-  force_error = 1;
-  issue_warning_error_from_context (cl, buffer);
-  force_error = 0;
+  issue_warning_error_from_context (cl, msg, ap);
+  va_end (ap);
 }
 
 /* Issue a warning at a current source line CL */
@@ -4918,7 +4896,6 @@ parse_warning_context VPROTO ((tree cl, char *msg, ...))
   tree cl;
   char *msg;
 #endif
-  char buffer [4096];
   va_list ap;
 
   VA_START (ap, msg);
@@ -4926,11 +4903,11 @@ parse_warning_context VPROTO ((tree cl, char *msg, ...))
   cl = va_arg (ap, tree);
   msg = va_arg (ap, char *);
 #endif
-  vsprintf (buffer, msg, ap);
 
-  force_error = do_warning = 1;
-  issue_warning_error_from_context (cl, buffer);
-  do_warning = force_error = 0;
+  do_warning = 1;
+  issue_warning_error_from_context (cl, msg, ap);
+  force_error = 0;
+  va_end (ap);
 }
 
 void
@@ -7750,21 +7727,10 @@ static tree
 add_stmt_to_compound (existing, type, stmt)
      tree existing, type, stmt;
 {
-  tree node;
-
-  if (existing && (TREE_CODE (existing) == COMPOUND_EXPR)
-      && TREE_OPERAND (existing, 1) == size_zero_node)
-    {
-      TREE_OPERAND (existing, 1) = stmt;
-      TREE_TYPE (existing) = type;
-      return existing;
-    }
-  else if (existing)
-    node = build (COMPOUND_EXPR, type, existing, stmt);
+  if (existing)
+    return build (COMPOUND_EXPR, type, existing, stmt);
   else
-    node = build (COMPOUND_EXPR, type, stmt, size_zero_node);
-  
-  return node;
+    return stmt;
 }
 
 /* Hold THIS for the scope of the current public method decl.  */
@@ -8323,7 +8289,8 @@ resolve_field_access (qual_wfl, field_decl, field_type)
                                     type_found, DECL_NAME (decl));
       if (field_ref == error_mark_node)
        return error_mark_node;
-      if (is_static && !static_final_found)
+      if (is_static && !static_final_found
+         && ! flag_emit_class_files)
        {
          field_ref = build_class_init (type_found, field_ref);
          /* If the static field was identified by an expression that
@@ -8382,8 +8349,8 @@ resolve_qualified_expression_name (wfl, found_decl, where_found, type_found)
          if (complete_function_arguments (qual_wfl))
            return 1;
          *where_found = 
-           patch_method_invocation_stmt (qual_wfl, decl, type,
-                                         &is_static, NULL, from_super);
+           patch_method_invocation (qual_wfl, decl, type,
+                                    &is_static, NULL, from_super);
          if (*where_found == error_mark_node)
            return 1;
          *type_found = type = QUAL_DECL_TYPE (*where_found);
@@ -8806,12 +8773,12 @@ maybe_access_field (decl, where, type)
   return decl;
 }
 
-/* Build a method invocation statement, by patching PATCH. If non NULL
+/* Build a method invocation, by patching PATCH. If non NULL
    and according to the situation, PRIMARY and WHERE may be
    used. IS_STATIC is set to 1 if the invoked function is static. */
 
 static tree
-patch_method_invocation_stmt (patch, primary, where, is_static, ret_decl, super)
+patch_method_invocation (patch, primary, where, is_static, ret_decl, super)
      tree patch, primary, where;
      int *is_static;
      tree *ret_decl;
@@ -9084,7 +9051,6 @@ patch_invoke (patch, method, args, from_super)
 {
   int im;
   tree dtable, func;
-  tree signature = build_java_signature (TREE_TYPE (method));
   tree original_call, t, ta;
 
   /* Last step for args: convert build-in types. If we're dealing with
@@ -9099,31 +9065,39 @@ patch_invoke (patch, method, args, from_super)
        TREE_TYPE (TREE_VALUE (ta)) != TREE_VALUE (t))
       TREE_VALUE (ta) = convert (TREE_VALUE (t), TREE_VALUE (ta));
   
-  switch ((im = invocation_mode (method, from_super)))
+  if (flag_emit_class_files)
+    func = method;
+  else
     {
-    case INVOKE_VIRTUAL:
-      dtable = invoke_build_dtable (0, args);
-      func = build_invokevirtual (dtable, method);
-      break;
+      tree signature = build_java_signature (TREE_TYPE (method));
+      switch ((im = invocation_mode (method, from_super)))
+       {
+       case INVOKE_VIRTUAL:
+         dtable = invoke_build_dtable (0, args);
+         func = build_invokevirtual (dtable, method);
+         break;
 
-    case INVOKE_SUPER:
-    case INVOKE_STATIC:
-      func = build_known_method_ref (method, TREE_TYPE (method),
-                                    DECL_CONTEXT (method), signature, args);
-      break;
+       case INVOKE_SUPER:
+       case INVOKE_STATIC:
+         func = build_known_method_ref (method, TREE_TYPE (method),
+                                        DECL_CONTEXT (method),
+                                        signature, args);
+         break;
 
-    case INVOKE_INTERFACE:
-      dtable = invoke_build_dtable (1, args);
-      func = build_invokeinterface (dtable, DECL_NAME (method), signature);
-      break;
+       case INVOKE_INTERFACE:
+         dtable = invoke_build_dtable (1, args);
+         func = build_invokeinterface (dtable, DECL_NAME (method), signature);
+         break;
 
-    default:
-      fatal ("Unknown invocation mode `%d' - build_invoke", im);
-      return NULL_TREE;
+       default:
+         fatal ("Unknown invocation mode `%d' - build_invoke", im);
+         return NULL_TREE;
+       }
+
+      /* Ensure self_type is initialized, (invokestatic). FIXME */
+      func = build1 (NOP_EXPR, build_pointer_type (TREE_TYPE (method)), func);
     }
 
-  /* Ensure self_type is initialized, (invokestatic). FIXME */
-  func = build1 (NOP_EXPR, build_pointer_type (TREE_TYPE (method)), func);
   TREE_TYPE (patch) = TREE_TYPE (TREE_TYPE (method));
   TREE_OPERAND (patch, 0) = func;
   TREE_OPERAND (patch, 1) = args;
@@ -9138,6 +9112,11 @@ patch_invoke (patch, method, args, from_super)
     {
       tree class = DECL_CONTEXT (method);
       tree c1, saved_new, size, new;
+      if (flag_emit_class_files)
+       {
+         TREE_TYPE (patch) = build_pointer_type (class);
+         return patch;
+       }
       if (!TYPE_SIZE (class))
        safe_layout_class (class);
       size = size_in_bytes (class);
@@ -9622,11 +9601,66 @@ java_complete_tree (node)
          IDENTIFIER_LOCAL_VALUE (DECL_NAME (cn)) = cn;
          INITIALIZED_P (cn) = 0;
        }
-      if (BLOCK_EXPR_BODY (node))
+      if (BLOCK_EXPR_BODY (node) == NULL_TREE)
+         CAN_COMPLETE_NORMALLY (node) = 1;
+      else
        {
-         BLOCK_EXPR_BODY (node) = java_complete_tree (BLOCK_EXPR_BODY (node));
-         if (BLOCK_EXPR_BODY (node) == error_mark_node)
+         tree stmt = BLOCK_EXPR_BODY (node);
+         tree *ptr;
+         int error_seen = 0;
+         if (TREE_CODE (stmt) == COMPOUND_EXPR)
+           {
+             /* Re-order from (((A; B); C); ...; Z) to (A; (B; (C ; (...; Z)))).
+                This makes it easier to scan the statements left-to-right
+                without using recursion (which might overflow the stack
+                if the block has many statements. */
+             for (;;)
+               {
+                 tree left = TREE_OPERAND (stmt, 0);
+                 if (TREE_CODE (left) != COMPOUND_EXPR)
+                   break;
+                 TREE_OPERAND (stmt, 0) = TREE_OPERAND (left, 1);
+                 TREE_OPERAND (left, 1) = stmt;
+                 stmt = left;
+               }
+             BLOCK_EXPR_BODY (node) = stmt;
+           }
+
+         /* Now do the actual complete, without deep recursion for long blocks. */
+         ptr = &BLOCK_EXPR_BODY (node);
+         while (TREE_CODE (*ptr) == COMPOUND_EXPR)
+           {
+             tree cur = java_complete_tree (TREE_OPERAND (*ptr, 0));
+             tree *next = &TREE_OPERAND (*ptr, 1);
+             TREE_OPERAND (*ptr, 0) = cur;
+             if (TREE_CODE (cur) == ERROR_MARK)
+               error_seen++;
+             else if (! CAN_COMPLETE_NORMALLY (cur))
+               {
+                 wfl_op2 = *next;
+                 for (;;)
+                   {
+                     if (TREE_CODE (wfl_op2) == BLOCK)
+                       wfl_op2 = BLOCK_EXPR_BODY (wfl_op2);
+                     else if (TREE_CODE (wfl_op2) == COMPOUND_EXPR)
+                       wfl_op2 = TREE_OPERAND (wfl_op2, 0);
+                     else
+                       break;
+                   }
+                 if (TREE_CODE (wfl_op2) != CASE_EXPR
+                     && TREE_CODE (wfl_op2) != DEFAULT_EXPR)
+                   {
+                     SET_WFL_OPERATOR (wfl_operator, *ptr, wfl_op2);
+                     parse_error_context (wfl_operator, "Unreachable statement");
+                   }
+               }
+             ptr = next;
+           }
+         *ptr = java_complete_tree (*ptr);
+
+         if (TREE_CODE (*ptr) == ERROR_MARK || error_seen > 0)
            return error_mark_node;
+         CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (*ptr);
        }
       /* Turn local bindings to null */
       for (cn = BLOCK_EXPR_DECLS (node); cn; cn = TREE_CHAIN (cn))
@@ -9640,6 +9674,7 @@ java_complete_tree (node)
     case THROW_EXPR:
       wfl_op1 = TREE_OPERAND (node, 0);
       COMPLETE_CHECK_OP_0 (node);
+      /* CAN_COMPLETE_NORMALLY (node) = 0; */
       return patch_throw_statement (node, wfl_op1);
 
     case SYNCHRONIZED_EXPR:
@@ -9657,6 +9692,8 @@ java_complete_tree (node)
        COMPLETE_CHECK_OP_1 (node);
       TREE_TYPE (node) = void_type_node;
       POP_LABELED_BLOCK ();
+      if (CAN_COMPLETE_NORMALLY (LABELED_BLOCK_BODY (node)))
+       CAN_COMPLETE_NORMALLY (node) = 1;
       return node;
 
     case EXIT_BLOCK_EXPR:
@@ -9664,6 +9701,58 @@ java_complete_tree (node)
          the EXIT_BLOCK_EXPR which doesn't exist it Java */
       return patch_bc_statement (node);
 
+    case CASE_EXPR:
+      cn = java_complete_tree (TREE_OPERAND (node, 0));
+      if (cn == error_mark_node)
+       return cn;
+
+      /* First, the case expression must be constant */
+      cn = fold (cn);
+
+      if (!TREE_CONSTANT (cn))
+       {
+         EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node);
+         parse_error_context (node, "Constant expression required");
+         return error_mark_node;
+       }
+
+      nn = ctxp->current_loop;
+
+      /* It must be assignable to the type of the switch expression. */
+      if (!try_builtin_assignconv (NULL_TREE, TREE_TYPE (TREE_OPERAND (nn, 0)), cn))
+       {
+         EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node);
+         parse_error_context 
+           (wfl_operator,
+            "Incompatible type for case. Can't convert `%s' to `int'",
+            lang_printable_name (TREE_TYPE (cn), 0));
+         return error_mark_node;
+       }
+
+      cn = fold (convert (int_type_node, cn));
+
+      /* Multiple instance of a case label bearing the same
+        value is checked during code generation. The case
+        expression is allright so far. */
+      TREE_OPERAND (node, 0) = cn;
+      CAN_COMPLETE_NORMALLY (node) = 1;
+      break;
+
+    case DEFAULT_EXPR:
+      nn = ctxp->current_loop;
+      /* Only one default label is allowed per switch statement */
+      if (SWITCH_HAS_DEFAULT (nn))
+       {
+         EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node);
+         parse_error_context (wfl_operator, 
+                              "Duplicate case label: `default'");
+         return error_mark_node;
+       }
+      else
+       SWITCH_HAS_DEFAULT (nn) = 1;
+      CAN_COMPLETE_NORMALLY (node) = 1;
+      break;
+
     case SWITCH_EXPR:
     case LOOP_EXPR:
       PUSH_LOOP (node);
@@ -9685,7 +9774,11 @@ java_complete_tree (node)
       /* If we returned something different, that's because we
          inserted a label. Pop the label too. */
       if (nn != node)
-       POP_LABELED_BLOCK ();
+       {
+         if (CAN_COMPLETE_NORMALLY (node))
+           CAN_COMPLETE_NORMALLY (nn) = 1;
+         POP_LABELED_BLOCK ();
+       }
       POP_LOOP ();
       return nn;
 
@@ -9720,24 +9813,38 @@ java_complete_tree (node)
 
       /* 3- Expression section */
     case COMPOUND_EXPR:
-      TREE_OPERAND (node, 0) = java_complete_tree (TREE_OPERAND (node, 0));
+      wfl_op2 = TREE_OPERAND (node, 1);
+      TREE_OPERAND (node, 0) = nn = java_complete_tree (TREE_OPERAND (node, 0));
+      if (! CAN_COMPLETE_NORMALLY (nn) && TREE_CODE (nn) != ERROR_MARK)
+       {
+         SET_WFL_OPERATOR (wfl_operator, node, wfl_op2);
+         parse_error_context (wfl_operator, "Unreachable statement");
+       }
       TREE_OPERAND (node, 1) = java_complete_tree (TREE_OPERAND (node, 1));
       if (TREE_OPERAND (node, 1) == error_mark_node)
        return error_mark_node;
       TREE_TYPE (node) = TREE_TYPE (TREE_OPERAND (node, 1));
+      CAN_COMPLETE_NORMALLY (node)
+       = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 1));
       break;
 
     case RETURN_EXPR:
+      /* CAN_COMPLETE_NORMALLY (node) = 0; */
       return patch_return (node);
 
     case EXPR_WITH_FILE_LOCATION:
       if (!EXPR_WFL_NODE (node) /* Or a PRIMARY flag ? */
          || TREE_CODE (EXPR_WFL_NODE (node)) == IDENTIFIER_NODE)
-        return resolve_expression_name (node, NULL);
+       {
+         node = resolve_expression_name (node, NULL);
+         CAN_COMPLETE_NORMALLY (node) = 1;
+       }
       else
        {
-         EXPR_WFL_NODE (node) = java_complete_tree (EXPR_WFL_NODE (node));
+         tree body = java_complete_tree (EXPR_WFL_NODE (node));
+         EXPR_WFL_NODE (node) = body;
          TREE_SIDE_EFFECTS (node) = 1;
+         CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (body);
          if (EXPR_WFL_NODE (node) == error_mark_node)
            {
              /* Its important for the evaluation of assignment that
@@ -9747,6 +9854,7 @@ java_complete_tree (node)
            }
          else
            TREE_TYPE (node) = TREE_TYPE (EXPR_WFL_NODE (node));
+         
        }
       break;
 
@@ -9774,10 +9882,12 @@ java_complete_tree (node)
        }
       /* They complete the array creation expression, if no errors
          were found. */
+      CAN_COMPLETE_NORMALLY (node) = 1;
       return (flag ? error_mark_node : patch_newarray (node));
 
     case NEW_CLASS_EXPR:
     case CALL_EXPR:
+      CAN_COMPLETE_NORMALLY (node) = 1;
       /* Complete function's argument(s) first */
       if (complete_function_arguments (node))
        return error_mark_node;
@@ -9786,8 +9896,8 @@ java_complete_tree (node)
          tree decl, wfl = TREE_OPERAND (node, 0);
          int in_this = CALL_THIS_CONSTRUCTOR_P (node);
 
-         node = patch_method_invocation_stmt (node, NULL_TREE, 
-                                              NULL_TREE, 0, &decl, 0);
+         node = patch_method_invocation (node, NULL_TREE,
+                                         NULL_TREE, 0, &decl, 0);
          if (node != error_mark_node)
            {
              check_thrown_exceptions (EXPR_WFL_LINECOL (node), decl);
@@ -9827,14 +9937,6 @@ java_complete_tree (node)
       nn = java_complete_tree (TREE_OPERAND (node, 1));
       if (nn == error_mark_node)
        {
-         /* It's hopeless, but we can further things on to discover
-            an error during the assignment. In any cases, the
-            assignment operation fails. */
-         if (TREE_CODE (TREE_OPERAND (node, 1)) != EXPR_WITH_FILE_LOCATION
-             && TREE_TYPE (TREE_OPERAND (node, 1)) != error_mark_node
-             && TREE_TYPE (TREE_OPERAND (node, 1)))
-           patch_assignment (node, wfl_op1, wfl_op2);
-
          /* Now, we still mark the lhs as initialized */
          if (DECL_P (TREE_OPERAND (node, 0)))
            INITIALIZED_P (TREE_OPERAND (node, 0)) = 1;
@@ -9848,7 +9950,9 @@ java_complete_tree (node)
         STRING_CST or a StringBuffer at this stage */
       if ((nn = patch_string (TREE_OPERAND (node, 1))))
        TREE_OPERAND (node, 1) = nn;
-      return patch_assignment (node, wfl_op1, wfl_op2);
+      node = patch_assignment (node, wfl_op1, wfl_op2);
+      CAN_COMPLETE_NORMALLY (node) = 1;
+      return node;
 
     case MULT_EXPR:
     case PLUS_EXPR:
@@ -9874,6 +9978,7 @@ java_complete_tree (node)
       wfl_op1 = TREE_OPERAND (node, 0);
       wfl_op2 = TREE_OPERAND (node, 1);
 
+      CAN_COMPLETE_NORMALLY (node) = 1;
       /* Don't complete string nodes if dealing with the PLUS operand. */
       if (TREE_CODE (node) != PLUS_EXPR || !JSTRING_P (wfl_op1))
        {
@@ -9906,6 +10011,7 @@ java_complete_tree (node)
       /* There are cases were wfl_op1 is a WFL. patch_unaryop knows
         how to handle those cases. */
       wfl_op1 = TREE_OPERAND (node, 0);
+      CAN_COMPLETE_NORMALLY (node) = 1;
       TREE_OPERAND (node, 0) = java_complete_tree (wfl_op1);
       if (TREE_OPERAND (node, 0) == error_mark_node)
        return error_mark_node;
@@ -9951,6 +10057,7 @@ java_complete_tree (node)
       return current_this;
 
     default:
+      CAN_COMPLETE_NORMALLY (node) = 1;
       /* Ok: may be we have a STRING_CST or a crafted `StringBuffer'
         and it's time to turn it into the appropriate String object
         */
@@ -10206,7 +10313,7 @@ build_assignment (op, op_location, lhs, rhs)
 
 /* Print an INTEGER_CST node in a static buffer, and return the buffer. */
 
-static char *
+char *
 print_int_node (node)
     tree node;
 {
@@ -10671,6 +10778,17 @@ valid_cast_to_p (source, dest)
    converted to type DEST through the methond invocation conversion
    process (5.3) */
 
+static tree
+do_unary_numeric_promotion (arg)
+     tree arg;
+{
+  tree type = TREE_TYPE (arg);
+  if (TREE_CODE (type) == INTEGER_TYPE ? TYPE_PRECISION (type) < 32
+      : TREE_CODE (type) == CHAR_TYPE)
+    arg = convert (int_type_node, arg);
+  return arg;
+}
+
 static int
 valid_method_invocation_conversion_p (dest, source)
      tree dest, source;
@@ -10874,8 +10992,8 @@ patch_binop (node, wfl_op1, wfl_op2)
 
       /* Unary numeric promotion (5.6.1) is performed on each operand
          separatly */
-      op1 = convert (promote_type (op1_type), op1);
-      op2 = convert (promote_type (op2_type), op2);
+      op1 = do_unary_numeric_promotion (op1);
+      op2 = do_unary_numeric_promotion (op2);
 
       /* The type of the shift expression is the type of the promoted
          type of the left-hand operand */
@@ -10890,7 +11008,7 @@ patch_binop (node, wfl_op1, wfl_op2)
                           build_int_2 (0x3f, 0)));
 
       /* The >>> operator is a >> operating on unsigned quantities */
-      if (code == URSHIFT_EXPR)
+      if (code == URSHIFT_EXPR && ! flag_emit_class_files)
        {
          op1 = convert (unsigned_type (prom_type), op1);
          TREE_SET_CODE (node, RSHIFT_EXPR);
@@ -10924,6 +11042,11 @@ patch_binop (node, wfl_op1, wfl_op2)
          /* If the first operand is null, the result is always false */
          if (op1 == null_pointer_node)
            return boolean_false_node;
+         else if (flag_emit_class_files)
+           {
+             TREE_OPERAND (node, 1) = op2_type;
+             return node;
+           }
          /* Otherwise we have to invoke instance of to figure it out */
          else
            {
@@ -11264,10 +11387,13 @@ patch_string_cst (node)
      tree node;
 {
   int location;
-  push_obstacks (&permanent_obstack, &permanent_obstack);
-  node = get_identifier (TREE_STRING_POINTER (node));
-  location = alloc_name_constant (CONSTANT_String, node);
-  node = build_ref_from_constant_pool (location);
+  if (! flag_emit_class_files)
+    {
+      push_obstacks (&permanent_obstack, &permanent_obstack);
+      node = get_identifier (TREE_STRING_POINTER (node));
+      location = alloc_name_constant (CONSTANT_String, node);
+      node = build_ref_from_constant_pool (location);
+    }
   TREE_TYPE (node) = promote_type (string_type_node);
   TREE_CONSTANT (node) = 1;
   return node;
@@ -11420,8 +11546,8 @@ patch_unaryop (node, wfl_op)
       /* Unary numeric promotion is performed on operand */
       else
        {
-         prom_type = promote_type (op_type);
-         op = convert (prom_type, op);
+         op = do_unary_numeric_promotion (op);
+         prom_type = TREE_TYPE (op);
          if (code == UNARY_PLUS_EXPR)
            node = op;
        }
@@ -11437,8 +11563,8 @@ patch_unaryop (node, wfl_op)
        }
       else
        {
-         prom_type = promote_type (op_type);
-         op = convert (prom_type, op);
+         op = do_unary_numeric_promotion (op);
+         prom_type = TREE_TYPE (op);
        }
       break;
 
@@ -11458,22 +11584,11 @@ patch_unaryop (node, wfl_op)
     case CONVERT_EXPR:
       value = patch_cast (node, wfl_operator);
       if (value == error_mark_node)
-       {
-         TREE_TYPE (node) = error_mark_node;
-         error_found = 1;
-       }
-      else
-       node = value;
+       return value;
+      node = value;
       break;
     }
   
-  /* Check variable initialization */
-  if (not_initialized_as_it_should_p (op))
-    {
-      ERROR_VARIABLE_NOT_INITIALIZED (wfl_op, DECL_NAME (op));
-      INITIALIZED_P (op) = 1;
-    }
-  
   if (error_found)
     return error_mark_node;
   /* In the case of UNARY_PLUS_EXPR, we replaced NODE by a new one */
@@ -11557,7 +11672,16 @@ patch_cast (node, wfl_operator)
          conversion (5.2) */
 
       if (valid_ref_assignconv_cast_p (op_type, cast_type, 0))
-       return node;
+       {
+         TREE_SET_CODE (node, NOP_EXPR);
+         return node;
+       }
+
+      if (flag_emit_class_files)
+       {
+         TREE_SET_CODE (node, CONVERT_EXPR);
+         return node;
+       }
 
       /* The cast requires a run-time check */
       return build (CALL_EXPR, promote_type (cast_type),
@@ -11608,17 +11732,10 @@ patch_array_ref (node, wfl_array, wfl_index)
   tree array_type  = TREE_TYPE (array);
   tree index = TREE_OPERAND (node, 1);
   tree index_type = TREE_TYPE (index);
-  tree promoted_index_type;
   int error_found = 0;
 
   EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node);
 
-  if (not_initialized_as_it_should_p (array))
-    {
-      ERROR_VARIABLE_NOT_INITIALIZED (wfl_array, DECL_NAME (array));
-      INITIALIZED_P (array) = 1;
-    }
-
   if (TREE_CODE (array_type) == POINTER_TYPE)
     array_type = TREE_TYPE (array_type);
 
@@ -11634,8 +11751,8 @@ patch_array_ref (node, wfl_array, wfl_index)
 
   /* The array index underdoes unary numeric promotion. The promoted
      type must be int */
-  promoted_index_type = promote_type (index_type);
-  if (promoted_index_type != int_type_node)
+  index = do_unary_numeric_promotion (index);
+  if (TREE_TYPE (index) != int_type_node)
     {
       int could_cast = valid_cast_to_p (index_type, int_type_node);
       parse_error_context 
@@ -11648,26 +11765,15 @@ patch_array_ref (node, wfl_array, wfl_index)
       error_found = 1;
     }
 
-  /* Now if the index is a var/parm decl, check on its initialization */
-  if (not_initialized_as_it_should_p (index))
-    {
-      ERROR_VARIABLE_NOT_INITIALIZED (wfl_index, DECL_NAME (index));
-      INITIALIZED_P (index) = 1;
-    }
-
   if (error_found)
     return error_mark_node;
-  index = convert (promoted_index_type, index);
 
   array_type = TYPE_ARRAY_ELEMENT (array_type);
-  if (TREE_CODE (array_type) == RECORD_TYPE 
-      && !JPRIMITIVE_TYPE_P (TREE_TYPE (array_type)))
-    array_type = promote_type (array_type);
 
   if (flag_emit_class_files)
     {
-      TREE_OPERAND (node, 0)= array;
-      TREE_OPERAND (node, 1)= index;
+      TREE_OPERAND (node, 0) = array;
+      TREE_OPERAND (node, 1) = index;
     }
   else
     node = build_java_arrayaccess (array, array_type, index);
@@ -11699,7 +11805,6 @@ patch_newarray (node)
   int error_found = 0;
   int ndims = 0;
   int xdims = TREE_INT_CST_LOW (TREE_OPERAND (node, 2));
-  int total_dims;
 
   /* Dimension types are verified. It's better for the types to be
      verified in order. */
@@ -11719,7 +11824,7 @@ patch_newarray (node)
         promoted type must be int. */
       else
        {
-         dim = convert (promote_type (TREE_TYPE (dim)), dim);
+         dim = do_unary_numeric_promotion (dim);
          if (TREE_TYPE (dim) != int_type_node)
            dim_error = 1;
        }
@@ -11737,15 +11842,6 @@ patch_newarray (node)
          error_found = 1;
        }
 
-      /* Check for uninitialized variables */
-      if (not_initialized_as_it_should_p (dim))
-       {
-         ERROR_VARIABLE_NOT_INITIALIZED (TREE_PURPOSE (cdim), 
-                                         DECL_NAME (dim));
-         INITIALIZED_P (dim) = 1;
-         error_found = 1;
-       }
-
       TREE_PURPOSE (cdim) = NULL_TREE;
     }
 
@@ -11761,12 +11857,30 @@ patch_newarray (node)
       return error_mark_node;
     }
 
+  /* Set array_type to the actual (promoted) array type of the result. */
+  if (TREE_CODE (type) == RECORD_TYPE)
+    type = build_pointer_type (type);
+  while (--xdims >= 0)
+    {
+      type = promote_type (build_java_array_type (type, -1));
+    }
+  dims = nreverse (dims);
+  array_type = type;
+  for (cdim = dims; cdim; cdim = TREE_CHAIN (cdim))
+    {
+      type = array_type;
+      array_type = build_java_array_type (type,
+                                         TREE_CODE (cdim) == INTEGER_CST ?
+                                         TREE_INT_CST_LOW (cdim) : -1);
+      array_type = promote_type (array_type);
+    }
+  dims = nreverse (dims);
+
   /* The node is transformed into a function call. Things are done
      differently according to the number of dimensions. If the number
      of dimension is equal to 1, then the nature of the base type
      (primitive or not) matters. */
-  total_dims = xdims + ndims;
-  if (total_dims == 1)
+  if (ndims == 1)
     {
       if (JPRIMITIVE_TYPE_P (type))
        {
@@ -11792,28 +11906,16 @@ patch_newarray (node)
          return build_newarray (type_code, TREE_VALUE (dims));
        }
       else
-       return build_anewarray (type, TREE_VALUE (dims));
+       return build_anewarray (TREE_TYPE (type), TREE_VALUE (dims));
     }
   
-  /* Add extra dimensions as unknown dimensions */
-  while (xdims--)
-    dims = 
-      chainon (dims, build_tree_list (NULL_TREE, integer_negative_one_node));
-  dims = chainon (dims, build_tree_list (NULL_TREE, integer_zero_node));
-
   /* Can't reuse what's already written in expr.c because it uses the
      JVM stack representation. Provide a build_multianewarray. FIXME */
-  array_type = type;
-  for (cdim = TREE_CHAIN (dims); cdim; cdim = TREE_CHAIN (cdim))
-    array_type = build_java_array_type (promote_type (array_type), 
-                                       TREE_CODE (cdim) == INTEGER_CST ?
-                                       TREE_INT_CST_LOW (cdim) : -1);
-  return build (CALL_EXPR,
-               promote_type (array_type),
+  return build (CALL_EXPR, array_type,
                build_address_of (soft_multianewarray_node),
-               tree_cons (NULL_TREE, build_class_ref (array_type),
+               tree_cons (NULL_TREE, build_class_ref (TREE_TYPE (array_type)),
                           tree_cons (NULL_TREE, 
-                                     build_int_2 (total_dims, 0), dims )),
+                                     build_int_2 (ndims, 0), dims )),
                NULL_TREE);
 }
 
@@ -11962,6 +12064,9 @@ patch_if_else_statement (node)
   
   TREE_TYPE (node) = void_type_node;
   TREE_SIDE_EFFECTS (node) = 1;
+  CAN_COMPLETE_NORMALLY (node)
+    = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0))
+    | CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 1));
   return node;
 }
 
@@ -12275,9 +12380,11 @@ patch_bc_statement (node)
       /* Everything looks good. We can fix the `continue' jump to go
          at the place in the loop were the continue is. The continue
         is the current labeled block, by construction. */
-      EXIT_BLOCK_LABELED_BLOCK (node) = ctxp->current_labeled_block;
+      EXIT_BLOCK_LABELED_BLOCK (node) = bc_label = ctxp->current_labeled_block;
     }
 
+  CAN_COMPLETE_NORMALLY (bc_label) = 1;
+
   /* Our break/continue don't return values. */
   TREE_TYPE (node) = void_type_node;
   /* Encapsulate the break within a compound statement so that it's
@@ -12313,6 +12420,15 @@ patch_exit_expr (node)
      return */
   TREE_OPERAND (node, 0) = 
     fold (build1 (TRUTH_NOT_EXPR, boolean_type_node, expression));
+
+  if (! integer_zerop (TREE_OPERAND (node, 0))
+      && ctxp->current_loop != NULL_TREE
+      && TREE_CODE (ctxp->current_loop) == LOOP_EXPR)
+    CAN_COMPLETE_NORMALLY (ctxp->current_loop) = 1;
+  if (! integer_onep (TREE_OPERAND (node, 0)))
+    CAN_COMPLETE_NORMALLY (node) = 1;
+
+
   TREE_TYPE (node) = void_type_node;
   return node;
 }
@@ -12323,9 +12439,7 @@ static tree
 patch_switch_statement (node)
      tree node;
 {
-  int error_found = 0;
   tree se = TREE_OPERAND (node, 0), se_type, sb;
-  tree default_found = NULL_TREE;
 
   /* Complete the switch expression */
   se = TREE_OPERAND (node, 0) = java_complete_tree (se);
@@ -12343,150 +12457,21 @@ patch_switch_statement (node)
       return error_mark_node;
     }
 
-  /* Process the switch body. We should have a list of TREE_LIST. The
-     PURPOSE of each node should be a list of case values, VALUE
-     should be the associated block. We try to process all cases and
-     defaults before returning, possibly finding errors.  */
-  TREE_OPERAND (node, 1) = nreverse (TREE_OPERAND (node, 1));
-  for (sb = TREE_OPERAND (node, 1); sb; sb = TREE_CHAIN (sb))
-    {
-      tree label;
-
-      /* If we don't have a TREE_LIST here, we have a statement inside
-        the switch that isn't tied to a label. This error is caught
-        by the parser and we don't have to report it here. */
-
-      TREE_PURPOSE (sb) = nreverse (TREE_PURPOSE (sb));
-      for (label = TREE_PURPOSE (sb); label; label = TREE_CHAIN (label))
-       {
-         tree case_expr;
-         
-         /* Verification of the default label */
-         if (TREE_CODE (label) == DEFAULT_EXPR)
-           {
-             /* Only one default label is allowed per switch
-                 statement */
-             if (default_found)
-               {
-                 EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label);
-                 parse_error_context (wfl_operator, 
-                                      "Duplicate case label: `default'");
-                 error_found = 1;
-               }
-             else
-               default_found = label;
-             continue;
-           }
-         /* Verification of case labels */
-         else
-           {
-             case_expr = java_complete_tree (TREE_OPERAND (label, 0));
-             if (case_expr == error_mark_node)
-               continue;
-
-             /* First, the case expression must be constant */
-             case_expr = fold (case_expr);
-             if (!TREE_CONSTANT (case_expr))
-               {
-                 EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label);
-                 parse_error_context (label, "Constant expression required");
-                 error_found = 1;
-                 break;
-               }
-             
-             /* It must be assignable to the type of the switch
-                expression. */
-             if (!try_builtin_assignconv (NULL_TREE, se_type, case_expr))
-               {
-                 EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label);
-                 parse_error_context 
-                   (wfl_operator,
-                    "Incompatible type for case. Can't convert `%s' to `int'",
-                    lang_printable_name (TREE_TYPE (case_expr), 0));
-                 error_found = 1;
-                 break;
-               }
-
-             /* Multiple instance of a case label bearing the same
-                 value is checked during code generation. The case
-                 expression is allright so far. */
-             TREE_OPERAND (label, 0) = case_expr;
-           }
-       }
-
-      /* First TREE_VALUE should be the block tied to this list of
-         cases. Check that this block exists and the walk it */
-      if (TREE_VALUE (sb))
-       {
-         TREE_VALUE (sb) = java_complete_tree (TREE_VALUE (sb));
-         if (TREE_VALUE (sb) == error_mark_node)
-           error_found = 1;
-       }
-    }
+  TREE_OPERAND (node, 1) = java_complete_tree (TREE_OPERAND (node, 1));
 
   /* Ready to return */
-  if (error_found)
+  if (TREE_CODE (TREE_OPERAND (node, 1)) == ERROR_MARK)
     {
       TREE_TYPE (node) = error_mark_node;
       return error_mark_node;
     }
   TREE_TYPE (node) = void_type_node;
   TREE_SIDE_EFFECTS (node) = 1;
+  CAN_COMPLETE_NORMALLY (node)
+    = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 1)) ||        ! SWITCH_HAS_DEFAULT (node);
   return node;
 }
 
-/* Do the expansion of a Java switch. With Gcc, switches are front-end
-   dependant things, but they rely on gcc routines. This function is
-   placed here because it uses things defined locally in parse.y. */
-
-static tree case_identity (t, v)
-     tree t __attribute__ ((__unused__));
-     tree v;
-{
-  return v;
-}
-
-void
-java_expand_switch (exp)
-     tree exp;
-{
-  tree sb;
-  expand_start_case (0, TREE_OPERAND (exp, 0), int_type_node, "switch");
-
-  for (sb = TREE_OPERAND (exp, 1); sb; sb = TREE_CHAIN (sb))
-    {
-      /* We have a list of TREE_LIST. PURPOSE is the case value, and
-        when it exists, VALUE is the associated block */
-      
-      /* The first CASE element should contain the associated block,
-        if any. All other should be case statements related to the
-        same block */
-      tree label;
-      for (label = TREE_PURPOSE (sb); label; label = TREE_CHAIN (label))
-       {
-         tree label_decl = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
-         if (TREE_CODE (label) == CASE_EXPR)
-           {
-             tree duplicate;
-             if (pushcase (TREE_OPERAND (label, 0), case_identity,
-                           label_decl, &duplicate) == 2)
-               {
-                 EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label);
-                 parse_error_context
-                   (wfl_operator, "Duplicate case label: `%s'",
-                    print_int_node (TREE_OPERAND (label, 0)));
-               }
-           }
-         else
-           pushcase (NULL_TREE, 0, label_decl, NULL);
-       }
-      /* Expand the associated block, if any */
-      if (TREE_VALUE (sb))
-       expand_expr_stmt (TREE_VALUE (sb));
-    } 
-  expand_end_case (TREE_OPERAND (exp, 0));
-}
-
 /* 14.18 The try statement */
 
 /* Wrap BLOCK around a LABELED_BLOCK, set DECL to the newly generated
@@ -12525,7 +12510,7 @@ build_try_statement (location, try_block, catches, finally)
 {
   tree node, rff;
 
-  if (finally)
+  if (finally && ! flag_emit_class_files)
     {
       /* This block defines a scope for the entire try[-catch]-finally
         sequence. It hold a local variable used to return from the
@@ -12592,7 +12577,8 @@ build_try_statement (location, try_block, catches, finally)
   /* If we have a finally, surround this whole thing by a block where
      the RFF local variable is defined. */
 
-  return (finally ? build_expr_block (node, rff) : node);
+  return (finally && ! flag_emit_class_files ? build_expr_block (node, rff)
+         : node);
 }
 
 /* Get the catch clause block from an element of the catch clause
@@ -12699,13 +12685,6 @@ patch_try_statement (node)
              break;
            }
        }
-      if (unreachable)
-       continue;
-
-      /* Things to do here: the exception must be thrown */
-
-      /* Link this type to the caught type list */
-      caught_type_list = tree_cons (NULL_TREE, carg_type, caught_type_list);
 
       /* Complete the catch clause block */
       catch_block = java_complete_tree (TREE_OPERAND (current, 0));
@@ -12714,21 +12693,36 @@ patch_try_statement (node)
          error_found = 1;
          continue;
        }
+      if (CAN_COMPLETE_NORMALLY (catch_block))
+       CAN_COMPLETE_NORMALLY (node) = 1;
       TREE_OPERAND (current, 0) = catch_block;
+
+      if (unreachable)
+       continue;
+
+      /* Things to do here: the exception must be thrown */
+
+      /* Link this type to the caught type list */
+      caught_type_list = tree_cons (NULL_TREE, carg_type, caught_type_list);
+
     }
 
   PUSH_EXCEPTIONS (caught_type_list);
   if ((try = java_complete_tree (try)) == error_mark_node)
     error_found = 1;
+  if (CAN_COMPLETE_NORMALLY (try))
+    CAN_COMPLETE_NORMALLY (node) = 1;
   POP_EXCEPTIONS ();
 
   /* Process finally */
   if (finally)
     {
-      FINALLY_EXPR_BLOCK (finally) = 
-       java_complete_tree (FINALLY_EXPR_BLOCK (finally));
-      if (FINALLY_EXPR_BLOCK (finally) == error_mark_node)
+      current = java_complete_tree (FINALLY_EXPR_BLOCK (finally));
+      FINALLY_EXPR_BLOCK (finally) = current;
+      if (current == error_mark_node)
        error_found = 1;
+      if (! CAN_COMPLETE_NORMALLY (current))
+       CAN_COMPLETE_NORMALLY (node) = 0;
     }
 
   /* Verification ends here */
@@ -12875,7 +12869,8 @@ patch_throw_statement (node, wfl_op1)
      unchecked exception or its value is always caught by some try
      statement that contains it. FIXME, static initializer. */
   
-  BUILD_THROW (node, expr);
+  if (! flag_emit_class_files)
+    BUILD_THROW (node, expr);
   return node;
 }
 
@@ -13046,5 +13041,6 @@ patch_conditional_expr (node, wfl_cond, wfl_op1)
 
   TREE_TYPE (node) = resulting_type;
   TREE_SET_CODE (node, COND_EXPR);
+  CAN_COMPLETE_NORMALLY (node) = 1;
   return node;
 }