]> granicus.if.org Git - sudo/commitdiff
toke.c replaces lex.yy.c
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 26 Oct 2004 22:29:32 +0000 (22:29 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 26 Oct 2004 22:29:32 +0000 (22:29 +0000)
toke.c [moved from lex.yy.c with 51% similarity]

diff --git a/lex.yy.c b/toke.c
similarity index 51%
rename from lex.yy.c
rename to toke.c
index 2d1d1f9a08f4a9dda91ac09db084acaaa717e24b..170c926a76b9d7aa33441405c970b4d477d7679d 100644 (file)
--- a/lex.yy.c
+++ b/toke.c
@@ -1,3 +1,4 @@
+#line 2 "toke.c"
 /*     $OpenBSD: flex.skl,v 1.8 2004/02/09 11:38:31 espie Exp $        */
 
 /* A lexical scanner generated by flex */
@@ -264,6 +265,9 @@ static void yy_flex_free YY_PROTO(( void * ));
 
 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
 
+
+#define yywrap() 1
+#define YY_SKIP_YYWRAP
 typedef unsigned char YY_CHAR;
 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 typedef int yy_state_type;
@@ -287,7 +291,7 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 
 #define YY_NUM_RULES 42
 #define YY_END_OF_BUFFER 43
-static yyconst short int yy_accept[382] =
+static yyconst short int yy_accept[385] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,   43,   32,   38,   37,   36,   41,   32,   26,
@@ -322,15 +326,15 @@ static yyconst short int yy_accept[382] =
        21,   27,   27,   30,    0,   32,   14,   28,   24,   24,
        24,   24,   27,   27,   28,   32,   25,   25,   25,   27,
 
-        0,   16,    0,   32,    0,   28,   25,   25,   25,   27,
-       32,   32,   25,   25,   25,   25,   25,    0,   20,    0,
-        0,   13,   15,   14,    0,   28,   28,   25,   25,   25,
-       25,   25,   32,   32,   32,   25,   25,   28,   28,   28,
-       25,   25,   32,   32,   32,   32,   32,   28,   28,   28,
-       28,   28,   32,   32,   32,   28,   28,   28,   32,   32,
-       32,   32,   32,   28,   28,   28,   28,   28,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-        0
+        0,   16,    0,   32,    0,   32,   28,   25,   25,   25,
+       27,   32,   32,   25,   25,   25,   25,   25,    0,   20,
+        0,    0,   13,   15,   14,    0,   14,    0,   28,   28,
+       25,   25,   25,   25,   25,   32,   32,   32,   25,   25,
+       28,   28,   28,   25,   25,   32,   32,   32,   32,   32,
+       28,   28,   28,   28,   28,   32,   32,   32,   28,   28,
+       28,   32,   32,   32,   32,   32,   28,   28,   28,   28,
+       28,   24,   24,   24,   24,   24,   24,   24,   24,   24,
+       24,   24,   24,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -341,14 +345,14 @@ static yyconst int yy_ec[256] =
         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   23,    1,    1,
-       24,   25,   10,   25,   26,   27,   28,   29,   30,   27,
-       27,   31,   32,   27,   27,   27,   33,   34,   35,   36,
-       27,   37,   38,   39,   40,   27,   41,   42,   27,   27,
-       10,   43,   10,    1,   44,    1,   45,   46,   47,   48,
-
-       49,   50,   46,   46,   51,   46,   46,   52,   53,   54,
-       55,   46,   46,   56,   57,   58,   59,   46,   46,   46,
-       46,   46,    1,    1,    1,    1,    1,    1,    1,    1,
+       24,   25,   10,   26,   27,   28,   29,   30,   31,   28,
+       28,   32,   33,   28,   28,   28,   34,   35,   36,   37,
+       28,   38,   39,   40,   41,   28,   42,   43,   28,   28,
+       10,   44,   10,    1,   45,    1,   46,   47,   48,   49,
+
+       50,   51,   47,   47,   52,   47,   47,   53,   54,   55,
+       56,   47,   47,   57,   58,   59,   60,   47,   47,   47,
+       47,   47,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -365,846 +369,586 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[60] =
+static yyconst int yy_meta[61] =
     {   0,
         1,    2,    2,    3,    1,    4,    1,    3,    3,    1,
         1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    5,    4,    3,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    6,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7
+        1,    1,    1,    6,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7
     } ;
 
-static yyconst short int yy_base[403] =
+static yyconst short int yy_base[407] =
     {   0,
-        0,   54,   94,    0,   59,   60,  152,  157,  199,  257,
-      315,  357, 1026,  982, 1020, 3235, 1016, 1015,  962, 3235,
-     3235,  961, 3235,  163,  387,  417,  447, 3235, 3235,  490,
-      960,  966,  963,  970,  548,   20,  159,  941,  940,  933,
-      919,  920,  931,   56,  929, 3235,  927,  169,  560,  590,
-      620,  663,  923,  929,  924,  932,  721,   21,  955,    0,
-     3235,  950,    0, 3235,  745,   68,    0,  910,  180,  141,
-     3235,  144, 3235,   84,  907,  787,  946,  942,  940, 3235,
-      884,  811,  883,  835,  189,  882,  859,  219,  156,  871,
-      901,  250,    0,  886,  879,  183,  874,  187, 3235,   41,
-
-      154,   38,  168,  164,  166,  179,  868,  943,  259,  867,
-      967,  866,  991,  321, 1015,  331,  182, 1027, 1057,  324,
-        0,  878,  862,  252,  857,  231,   45,  892,    0,  882,
-      224, 3235, 3235,  281,    0,  838,  370,  386,  174,  289,
-     3235, 3235,  837,  288,  373, 1087, 1117, 1147,  842,  837,
-      824,  829,  836,  819,  243,  226,  323,  244,  279,  252,
-      280, 1177, 1207, 1237,  828,  823,  807,  813,  820,  807,
-      322,  799, 3235,  291,  416,  446,  455,  340, 1267, 1297,
-      545,  333,  801,  792,  787,  780,  775,  335,  163,  343,
-      314,  356,  573,  381, 1327, 1357,  601,  388,  775,  778,
-
-      773,  763,  759,  371,  350, 1387, 1417, 1447,  400, 3235,
-      763,  766,  758,  748,  755,  369,  321,  148,  373, 1477,
-     1507, 1537,  724,  728,  722,  715,  721,  384,  580,  401,
-     1567, 1597,  610,  691,  424,  687,  630,  439,  399,  440,
-      402,  435,  629,  439, 1627, 1657,  718,  632,  479,  623,
-      619,  490,  436, 1686, 1715, 1744,  492,  582, 3235,  617,
-      596,  612, 3235,  441,  564,  532,  512, 1773, 1802, 1831,
-      652,  551,  541,  510,  754,  440, 1860, 1889,  762,  663,
-     3235,  521,  664,  453,  454,  542,  717,  808,  471, 1918,
-     1947,  857,  448,  665,  437, 1977, 2007, 2037, 2067,  729,
-
-      739, 3235,  653,  600,  403, 2097, 2127, 2157, 2187,  741,
-      885,  618, 2217, 2247, 2277, 2307,  749,  783, 3235,  330,
-      656, 3235,  256,  222, 2349,  913,  744, 2361, 2391, 2421,
-     2451,  836, 2481, 2511, 2541,  920,  881, 2571, 2601, 2631,
-      964,  944, 1012,  788, 2661, 2691,  992, 1040,  789, 2721,
-     2751, 1068, 2781, 2811, 2841, 2871, 2901, 2931, 1047,  790,
-     2961, 2991, 1077, 1097,  795, 3021, 3051, 1107, 1127, 1135,
-     1163, 1191, 1219, 1226,  188, 1254, 1247,  181, 1282, 1310,
-     3235, 3094, 3101, 3108, 3115, 3122, 3129, 3136, 3143, 3150,
-     3157, 3164, 3171, 3178,   83, 3185, 3192, 3199, 3206, 3213,
-
-     3220, 3227
+        0,   55,   96,    0,   60,   61,  155,  160,  203,  262,
+      321,  364, 1480, 1435, 1476, 2057, 1473, 1473, 1431, 2057,
+     2057, 1421, 2057,  166,  176,  197,  253, 2057, 2057,  408,
+     1421, 1427, 1426, 1434,  467,   20,  170, 1397, 1400, 1393,
+     1388, 1389, 1392,   57, 1391, 2057, 1390,  177,  330,  339,
+      373,  492, 1389, 1386, 1385, 1390,  551,   21, 1402,    0,
+     2057, 1391,    0, 2057,  567,   69,    0, 1345,  580,  136,
+     2057,  144, 2057,   80, 1344,  221, 1377, 1374, 1372, 2057,
+     1329,  275, 1322,  492,  376, 1321,  591,  319,  157,  609,
+      618,  627,    0, 1328, 1323,   55, 1318,  232, 2057,   46,
+
+      173,  145,  180,  168,  188,   44, 1311,  652,  272, 1310,
+      661, 1305,  685,  670,  694,  704,  194,  713,  722,  733,
+        0, 1316, 1304,  205, 1272,  299,  133, 1308,    0, 1288,
+      293, 2057, 2057,  301,    0, 1238,  556,  756,  337,  359,
+     2057, 2057, 1237,  327,  582,  753,  765,  774, 1224, 1219,
+     1181, 1187, 1186, 1155,  342,  234,  329,  234,  338,  356,
+      355,  785,  794,  803, 1155, 1142, 1122, 1128, 1118, 1097,
+      360, 1091, 2057,  367,  825,  830,  839,  552,  859,  868,
+      877,  408, 1094, 1075, 1070, 1065, 1034,  428,  429,  361,
+      143,  430,  888,  558,  897,  906,  917,  585, 1035, 1043,
+
+     1038, 1006,  994,  433,  573,  926,  935,  946,  587, 2057,
+      999,  969,  906,  891,  872,  436,  553,  352,  442,  955,
+      964,  975,  865,  863,  801,  787,  768,  440,  984,  598,
+      993, 1004, 1013,  751,  596,  725,  714,  599,  605,  237,
+      565,  607, 1022,  606, 1033, 1042, 1051,  677,  657,  665,
+      646,  681,  638, 1063, 1072, 1081,  690,  705, 2057,  636,
+      625,  714, 2057,  701,  618,  711,  523, 1093, 1102, 1111,
+      839,  597,  577,  804, 1122,  637, 1132, 1141, 1152,  841,
+     2057,  523,  842,  443,  562,  655,  827, 1161,  824, 1171,
+     1182, 1191,  443,  843,  389, 1200, 1211, 1220, 1229,  844,
+
+      849, 2057,  709,  720,  370,  363, 1240, 1249, 1258, 1269,
+     1172, 1278,  732, 1287, 1298, 1307, 1316, 1327, 1338, 2057,
+      351,  897, 2057,  287,  284, 1344,  261, 1368, 1365,  826,
+     1380, 1394, 1409, 1423, 1389, 1438, 1452, 1467, 1481, 1346,
+     1496, 1510, 1525, 1539, 1402, 1546,  915, 1556, 1575, 1585,
+     1591,  944, 1604, 1620, 1633, 1641, 1651, 1662, 1672, 1682,
+     1691, 1701,  973, 1711, 1720, 1730, 1740, 1002, 1749, 1759,
+     1769, 1778, 1788, 1798, 1807, 1817, 1827,  125, 1836, 1846,
+      121, 1856, 1865, 2057, 1909, 1916, 1923, 1930, 1937, 1944,
+     1951, 1958, 1965, 1972, 1979, 1986, 1993,   84, 2000, 2007,
+
+     2014, 2021, 2028, 2035, 2042, 2049
     } ;
 
-static yyconst short int yy_def[403] =
+static yyconst short int yy_def[407] =
     {   0,
-      381,    1,  381,    3,    1,    1,  382,  382,  383,  383,
-      384,  384,  381,  385,  381,  381,  381,  386,  387,  381,
-      381,  388,  381,  389,  385,  385,  385,  381,  381,  381,
-       30,   30,   30,   30,  385,  385,  386,   30,   30,   30,
-       30,   30,  390,  381,  391,  381,  392,  393,  390,  390,
-      390,  381,   52,   52,   52,   52,  390,  390,  381,  394,
-      381,  394,  394,  381,  381,  381,  395,  396,  397,  396,
-      381,  396,  381,  398,  385,  385,  381,  381,  386,  381,
-      387,  387,  388,  388,  389,  399,  385,  385,  385,  385,
-      385,  385,   30,   30,   30,   30,   30,  385,  381,  385,
-
-      386,  385,  385,  385,  385,  385,  390,  390,  381,  391,
-      391,  392,  392,  393,  390,  390,  390,  390,  390,  390,
-       52,   52,   52,   52,   52,  390,  390,  381,  394,  394,
-      381,  381,  381,  381,  395,  396,  396,  397,  400,  397,
-      381,  381,  396,  396,  381,  385,  385,  385,   30,   30,
-       30,   30,   30,   30,  385,  386,  385,  385,  385,  385,
-      385,  390,  390,  390,   52,   52,   52,   52,   52,   52,
-      390,  396,  381,  400,  397,  397,  385,  385,  385,  385,
-      385,   30,   30,   30,   30,   30,   30,  385,  386,  385,
-      385,  385,  390,  390,  390,  390,  390,   52,   52,   52,
-
-       52,   52,   52,  390,  400,  385,  385,  385,  381,  381,
-       30,   30,   30,   30,   30,  385,  386,  385,  385,  390,
-      390,  390,   52,   52,   52,   52,   52,  390,  385,  385,
-      385,  385,  385,   30,   30,   30,   30,   30,  385,  386,
-      385,  385,  390,  390,  390,  390,  390,   52,   52,   52,
-       52,   52,  390,  385,  385,  385,   30,  381,  381,   30,
-       30,  381,  381,  385,  386,  385,  385,  390,  390,  390,
-       52,   52,   52,  390,  385,  385,  385,  385,  385,  381,
-      381,   30,   30,  385,  386,  385,  385,  390,  390,  390,
-      390,  390,   52,   52,  390,  385,  385,  385,  385,   30,
-
-      381,  381,  401,  385,  402,  390,  390,  390,  390,   52,
-      385,  385,  385,  385,  385,  385,  385,  381,  381,  401,
-      401,  381,  385,  402,  402,  390,  390,  390,  390,  390,
-      390,  390,  385,  385,  385,  385,  385,  390,  390,  390,
-      390,  390,  385,  385,  385,  385,  385,  390,  390,  390,
-      390,  390,  385,  385,  385,  390,  390,  390,  385,  385,
-      385,  385,  385,  390,  390,  390,  390,  390,  385,  385,
-      385,  390,  390,  390,  385,  385,  385,  390,  390,  390,
-        0,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381
+      384,    1,  384,    3,    1,    1,  385,  385,  386,  386,
+      387,  387,  384,  388,  384,  384,  384,  389,  390,  384,
+      384,  391,  384,  392,  388,  388,  388,  384,  384,  384,
+       30,   30,   30,   30,  388,  388,  389,   30,   30,   30,
+       30,   30,  393,  384,  394,  384,  395,  396,  393,  393,
+      393,  384,   52,   52,   52,   52,  393,  393,  384,  397,
+      384,  397,  397,  384,  384,  384,  398,  399,  400,  399,
+      384,  399,  384,  401,  388,  388,  384,  384,  389,  384,
+      390,  390,  391,  391,  392,  402,  388,  388,  388,  388,
+      388,  388,   30,   30,   30,   30,   30,  388,  384,  388,
+
+      389,  388,  388,  388,  388,  388,  393,  393,  384,  394,
+      394,  395,  395,  396,  393,  393,  393,  393,  393,  393,
+       52,   52,   52,   52,   52,  393,  393,  384,  397,  397,
+      384,  384,  384,  384,  398,  399,  399,  400,  403,  400,
+      384,  384,  399,  399,  384,  388,  388,  388,   30,   30,
+       30,   30,   30,   30,  388,  389,  388,  388,  388,  388,
+      388,  393,  393,  393,   52,   52,   52,   52,   52,   52,
+      393,  399,  384,  403,  400,  400,  388,  388,  388,  388,
+      388,   30,   30,   30,   30,   30,   30,  388,  389,  388,
+      388,  388,  393,  393,  393,  393,  393,   52,   52,   52,
+
+       52,   52,   52,  393,  403,  388,  388,  388,  384,  384,
+       30,   30,   30,   30,   30,  388,  389,  388,  388,  393,
+      393,  393,   52,   52,   52,   52,   52,  393,  388,  388,
+      388,  388,  388,   30,   30,   30,   30,   30,  388,  389,
+      388,  388,  393,  393,  393,  393,  393,   52,   52,   52,
+       52,   52,  393,  388,  388,  388,   30,  384,  384,   30,
+       30,  384,  384,  388,  389,  388,  388,  393,  393,  393,
+       52,   52,   52,  393,  388,  388,  388,  388,  388,  384,
+      384,   30,   30,  388,  389,  388,  388,  393,  393,  393,
+      393,  393,   52,   52,  393,  388,  388,  388,  388,   30,
+
+      384,  384,  404,  388,  405,  406,  393,  393,  393,  393,
+       52,  388,  388,  388,  388,  388,  388,  388,  384,  384,
+      404,  404,  384,  388,  405,  405,  406,  406,  393,  393,
+      393,  393,  393,  393,  393,  388,  388,  388,  388,  388,
+      393,  393,  393,  393,  393,  388,  388,  388,  388,  388,
+      393,  393,  393,  393,  393,  388,  388,  388,  393,  393,
+      393,  388,  388,  388,  388,  388,  393,  393,  393,  393,
+      393,  388,  388,  388,  393,  393,  393,  388,  388,  388,
+      393,  393,  393,    0,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+
+      384,  384,  384,  384,  384,  384
     } ;
 
-static yyconst short int yy_nxt[3295] =
+static yyconst short int yy_nxt[2118] =
     {   0,
        14,   15,   16,   17,   14,   18,   19,   20,   21,   14,
        22,   23,   14,   14,   24,   25,   26,   27,   25,   25,
-       25,   25,   28,   29,   21,   30,   30,   30,   30,   31,
-       30,   30,   32,   33,   30,   34,   30,   30,   30,   30,
-       30,   30,   35,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   36,   14,   14,   37,
-       59,   59,   76,  108,   21,   21,   21,   21,  109,  134,
-       99,  109,  109,  109,  109,  109,  109,  109,  100,  127,
-       76,   38,   39,   76,   40,  144,   99,  108,  155,  135,
-       41,  157,  171,   42,   43,   15,   16,   17,   43,   44,
-
-       45,   21,   46,   43,   47,   23,   43,   43,   48,   49,
-       50,   51,   49,   49,   49,   49,   28,   29,   21,   52,
-       52,   52,   52,   53,   52,   52,   54,   55,   52,   56,
-       52,   52,   52,   52,   52,   52,   57,   43,   43,   43,
+       25,   25,   28,   29,   21,   14,   30,   30,   30,   30,
+       31,   30,   30,   32,   33,   30,   34,   30,   30,   30,
+       30,   30,   30,   35,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   36,   14,   14,
+       37,   59,   59,   76,  108,   21,   21,   21,   21,  109,
+      134,   99,  109,  109,  109,  109,  109,  109,  109,  100,
+      127,  144,   99,   38,   39,  151,   40,   76,  152,   76,
+      135,  153,   41,  161,  155,   42,   43,   15,   16,   17,
+
+       43,   44,   45,   21,   46,   43,   47,   23,   43,   43,
+       48,   49,   50,   51,   49,   49,   49,   49,   28,   29,
+       21,   43,   52,   52,   52,   52,   53,   52,   52,   54,
+       55,   52,   56,   52,   52,   52,   52,   52,   52,   57,
        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       58,   43,   43,   15,   61,   62,   80,   63,   15,   61,
-       62,   80,   63,   64,  141,   80,   86,  142,   64,   88,
-       86,   86,   86,  241,   64,   63,   86,   86,  173,   64,
-       63,  139,  139,  137,  136,  139,  137,   86,  134,   99,
-       76,  139,   86,   86,   65,  116,   86,   86,   76,   65,
-
-       15,   16,   17,  139,   18,   87,   76,  156,   76,  101,
-       76,  115,  151,   86,  217,  152,  174,  158,  153,  160,
-      159,   76,  140,  108,  108,  134,   99,  161,   80,   76,
-       76,   87,  134,   99,  146,  147,  148,  146,  146,  146,
-      146,   66,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   15,   16,
-       17,   76,   18,   88,  325,   89,   89,   89,   89,   89,
-       89,  109,  189,  108,  109,  109,  109,  109,  109,  109,
-      109,  167,  134,   99,  168,   76,   76,  169,  191,  134,
-       99,  139,   76,  175,   76,  205,  192,  188,   76,   66,
+       43,   43,   43,   58,   43,   43,   15,   61,   62,  141,
+       63,   15,   61,   62,  108,   63,   64,  142,   76,   86,
+       88,   64,   80,   86,   86,   80,  108,   64,   63,  137,
+       86,  171,   64,   63,   86,   86,   76,  137,   76,   88,
+       86,   89,   89,   89,   89,   89,   89,   89,   65,  157,
+
+       76,   86,  219,   65,   15,   16,   17,  116,   18,   87,
+       88,   76,   90,   90,   90,   90,   90,   90,   90,   76,
+      115,  101,   75,   76,   75,  159,   75,  156,   75,   75,
+      158,   76,   75,  134,   99,  167,   80,  108,  168,   80,
+       76,  169,  160,   75,   75,   75,   66,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   15,   16,   17,   88,   18,   91,   91,
+       91,   91,   91,   92,   89,   76,   81,   76,   81,  191,
+       81,  189,   81,   81,  109,  265,   81,  109,  109,  109,
+      109,  109,  109,  109,  134,   99,   76,   81,   81,   81,
 
+      134,   99,  134,   99,  328,   66,   67,   67,   67,   67,
        67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   15,   16,   17,   69,
-       18,   76,   76,   80,   86,   70,   71,   72,   86,   86,
-      137,  176,  322,  174,  209,  190,  190,  116,   73,  117,
-      117,  117,  117,  117,  117,   86,  162,  163,  164,  162,
-      162,  162,  162,  177,  173,  210,   76,   74,   15,   16,
-       17,   69,   18,  115,  108,   76,  108,   70,   71,   72,
-      190,  136,  219,  108,   86,  136,  204,   76,   86,  240,
-       73,  136,   76,  216,   86,   76,  218,  139,  139,  209,
-      172,  139,  174,  136,  193,   86,   86,  139,   76,   74,
-
-       88,  209,   89,   89,   89,   89,   89,   89,   89,  139,
-      210,   76,  190,  108,  229,   76,  239,  139,  139,  228,
-      172,  139,  210,  108,  242,  258,  108,  139,  140,   76,
-       88,  253,   90,   90,   90,   90,   90,   90,   90,  139,
-      262,   76,   80,   76,   76,  325,  259,  139,  139,  264,
-      175,  139,  243,  266,  275,  303,   80,  139,  140,   76,
-       88,  263,   91,   91,   91,   91,   91,   92,   89,  139,
-      206,  207,  208,  206,  206,  206,  206,   76,  108,  108,
-      258,  108,   76,   76,  310,  288,  274,  265,  140,   76,
-       75,  262,  267,  280,   75,   76,   75,   76,  284,   75,
-
-       75,  259,   75,   75,   75,   93,   93,   93,   93,   93,
-       93,   93,  263,  108,  281,   93,   93,   93,   93,   93,
+       67,   67,   15,   16,   17,   69,   18,  326,  134,   99,
+       76,   70,   71,   72,  146,  147,  148,  146,  146,  146,
+      146,  173,  108,  116,   73,  117,  117,  117,  117,  117,
+      117,  117,  116,  323,  118,  118,  118,  118,  118,  118,
+      118,  139,   76,  175,   74,   15,   16,   17,   69,   18,
+      137,  205,   76,  108,   70,   71,   72,  190,  241,   86,
+      174,   76,  108,   86,   86,   76,  116,   73,  119,  119,
+      119,  119,  119,  120,  117,   76,  190,  188,   76,   76,
+
+       86,  192,  176,  108,   76,  218,  328,   74,   75,  209,
+      174,  190,   75,  326,   75,  204,  108,   75,   75,   87,
+       75,   75,   75,   93,   93,   93,   93,   93,   93,   93,
+      210,   80,  108,   75,   93,   93,   93,   93,   93,   93,
        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   76,   93,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   98,
-       99,   75,  108,   75,   76,   75,   75,  300,  177,   75,
-      178,  178,  178,  178,  178,  178,   80,  295,  287,  294,
-       75,   75,   75,  116,   76,  117,  117,  117,  117,  117,
-      117,  117,  286,  258,   76,  293,  304,   76,  220,  221,
-      222,  220,  220,  220,  220,  254,  255,  256,  254,  254,
-
-      254,  254,  108,  116,  259,  118,  118,  118,  118,  118,
-      118,  118,  285,  262,  193,  108,  194,  194,  194,  194,
-      194,  194,   76,  229,  283,  230,  230,  230,  230,  230,
-      230,  311,  108,  116,  263,  119,  119,  119,  119,  119,
-      120,  117,   76,  108,  268,  269,  270,  268,  268,  268,
-      268,  282,   76,  280,  321,  322,  323,  321,  322,  273,
-       76,  272,  108,  107,  280,  301,  301,  107,  271,  107,
-      261,  108,  107,  107,  281,  107,  107,  107,  121,  121,
-      121,  121,  121,  121,  121,  281,  302,  302,  121,  121,
+       93,   76,   93,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   75,   75,   75,   75,   75,   98,   99,
+       75,   76,   75,   76,   75,   75,  108,  216,   75,   76,
+      311,  217,  228,  108,  239,   76,   76,  190,  253,   75,
+       75,   75,  107,   83,  242,   83,  107,   83,  107,   83,
+
+       83,  107,  107,   83,  107,  107,  107,  121,  121,  121,
+      121,  121,  121,  121,   83,   83,   83,  107,  121,  121,
       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-
       121,  121,  121,  121,  121,  108,  121,  107,  107,  107,
       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
-      107,  107,  126,   99,  107,  260,  107,  257,  107,  107,
-      318,  243,  107,  244,  244,  244,  244,  244,  244,  305,
-      301,  305,  318,  107,  107,  107,  131,   99,  132,  252,
-      133,  319,  251,  250,  132,  249,  133,  326,  248,   76,
-      108,  302,  311,  319,  337,  337,  337,  133,  133,  296,
-      297,  298,  299,  296,  296,  296,  275,  276,  276,  276,
-      276,  276,  276,  238,  318,  237,  108,  133,   75,  236,
-       75,   76,   75,  235,   75,   75,   76,  234,   75,  227,
-
-      226,  343,  348,  359,   76,  319,  225,  224,  364,   75,
-       75,   75,   81,  223,   81,  215,   81,  214,   81,   81,
-      213,  212,   81,  306,  307,  308,  309,  306,  306,  306,
-       76,  108,   76,   81,   81,   81,   83,  108,   83,  211,
-       83,  137,   83,   83,  203,  202,   83,  201,  200,  326,
-      108,  342,  342,  342,  199,  198,  187,   83,   83,   83,
-       85,  186,   75,  185,   85,  184,   75,   75,  183,  182,
-       85,  288,  289,  289,  289,  289,  289,  289,  108,  137,
-      137,   85,   85,   75,   88,  130,   89,   89,   89,   89,
-       89,   89,   89,  128,  170,  166,  337,  337,  337,  108,
-
-      333,  334,  335,  333,  333,  333,  333,  165,  113,  111,
-      108,  154,  150,   76,   88,  149,   89,   89,   89,   89,
-       89,   89,   89,   76,  145,   84,   82,   76,  338,  339,
-      340,  338,  338,  338,  338,  336,  336,  336,  336,  336,
-      336,  336,   80,   76,  107,   78,  107,   77,  107,   76,
-      107,  107,  137,  130,  107,  108,  128,  125,  124,  342,
-      342,  342,   76,  123,  122,  107,  107,  107,  110,  113,
-      110,  111,  110,  108,  110,  110,  106,  105,  110,  341,
-      341,  341,  341,  341,  341,  341,  108,  104,  103,  110,
-      110,  110,  112,  102,  112,   97,  112,   96,  112,  112,
-
-       95,   94,  112,   84,   82,  343,  108,  344,  344,  344,
-      344,  344,  344,  112,  112,  112,  114,   80,  107,   78,
-      114,   77,  107,  107,   76,  381,  114,  353,  354,  355,
-      353,  353,  353,  353,   76,  381,  381,  114,  114,  107,
-      116,  381,  117,  117,  117,  117,  117,  117,  117,  381,
-      381,  381,  381,  381,   76,  356,  357,  358,  356,  356,
-      356,  356,  369,  370,  371,  369,  369,  369,  369,  108,
-      116,  381,  117,  117,  117,  117,  117,  117,  117,  381,
-      381,  348,  108,  349,  349,  349,  349,  349,  349,   76,
-      359,  381,  360,  360,  360,  360,  360,  360,  381,  108,
-
-      177,  381,  178,  178,  178,  178,  178,  178,  178,  381,
-      108,  381,  372,  373,  374,  372,  372,  372,  372,   76,
-      364,  381,  365,  365,  365,  365,  365,  365,  381,   76,
-      177,  381,  179,  179,  179,  179,  179,  179,  179,  108,
-      381,  381,  375,  375,  375,  375,  375,  375,  375,  108,
-      369,  369,  369,  369,  369,  369,  369,  381,  381,   76,
-      177,  381,  180,  180,  180,  180,  180,  181,  178,   76,
-      381,  381,  381,  381,  381,  381,  381,   76,  376,  376,
-      376,  376,  376,  377,  375,  381,  381,  381,  381,   76,
-      193,  381,  194,  194,  194,  194,  194,  194,  194,  381,
-
-      381,  381,  381,  381,  381,   76,  378,  378,  378,  378,
-      378,  378,  378,  381,  381,  381,  381,  381,  381,  108,
-      193,  381,  195,  195,  195,  195,  195,  195,  195,  381,
-      381,  381,  381,  108,  372,  372,  372,  372,  372,  372,
-      372,  379,  379,  379,  379,  379,  380,  378,  381,  108,
-      193,  381,  196,  196,  196,  196,  196,  197,  194,  381,
-      381,  108,  375,  375,  375,  375,  375,  375,  108,  375,
-      375,  375,  375,  375,  375,  375,  381,  381,  381,  108,
-      177,  381,  178,  178,  178,  178,  178,  178,  178,   76,
-      381,  381,  381,  381,  381,  381,   76,  378,  378,  378,
-
-      378,  378,  378,  378,  381,  381,  381,  381,  381,   76,
-      177,  381,  178,  178,  178,  178,  178,  178,  178,  381,
-      381,  381,  381,  381,  108,  378,  378,  378,  378,  378,
-      378,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      193,  381,  194,  194,  194,  194,  194,  194,  194,  381,
-      381,  381,  108,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      193,  381,  194,  194,  194,  194,  194,  194,  194,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-
-      229,  381,  230,  230,  230,  230,  230,  230,  230,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      229,  381,  231,  231,  231,  231,  231,  231,  231,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      229,  381,  232,  232,  232,  232,  232,  233,  230,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      243,  381,  244,  244,  244,  244,  244,  244,  244,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      243,  381,  245,  245,  245,  245,  245,  245,  245,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      243,  381,  246,  246,  246,  246,  246,  247,  244,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      229,  381,  230,  230,  230,  230,  230,  230,  230,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      229,  381,  230,  230,  230,  230,  230,  230,  230,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      243,  381,  244,  244,  244,  244,  244,  244,  244,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      243,  381,  244,  244,  244,  244,  244,  244,  244,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-
-      275,  276,  276,  276,  276,  276,  276,  276,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,   76,  275,
-      277,  277,  277,  277,  277,  277,  277,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,   76,  275,  278,
-      278,  278,  278,  278,  279,  276,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,   76,  288,  289,  289,
-      289,  289,  289,  289,  289,  381,  381,  381,  381,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  108,  288,  290,  290,  290,
-      290,  290,  290,  290,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  108,  288,  291,  291,  291,  291,
-      291,  292,  289,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  275,  276,  276,  276,  276,  276,
-      276,  276,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,   76,  275,  276,  276,  276,  276,  276,  276,
-      276,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,   76,  288,  289,  289,  289,  289,  289,  289,  289,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      108,  288,  289,  289,  289,  289,  289,  289,  289,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      311,  381,  312,  312,  312,  312,  312,  312,  312,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      311,  381,  313,  313,  313,  313,  313,  313,  313,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      311,  381,  314,  314,  314,  314,  314,  315,  316,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      311,  381,  317,  317,  317,  312,  312,  312,  312,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      326,  381,  327,  327,  327,  327,  327,  327,  327,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      326,  381,  328,  328,  328,  328,  328,  328,  328,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      326,  381,  329,  329,  329,  329,  329,  330,  331,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-
-      326,  381,  332,  332,  332,  327,  327,  327,  327,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
-      311,  381,  316,  316,  316,  316,  316,  316,  316,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      311,  381,  316,  316,  316,  316,  316,  316,  316,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      311,  381,  316,  316,  316,  316,  316,  316,  336,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      311,  381,  336,  336,  336,  336,  336,  336,  336,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
-      324,  381,  324,  381,  324,  381,  324,  324,  381,  381,
-      324,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  324,  324,  324,  326,  381,  331,  331,  331,  331,
-      331,  331,  331,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,  381,  108,  326,  381,  331,  331,  331,  331,
-      331,  331,  331,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  326,  381,  331,  331,  331,  331,
-      331,  331,  341,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  326,  381,  341,  341,  341,  341,
-      341,  341,  341,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  343,  381,  344,  344,  344,  344,
-
-      344,  344,  344,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  343,  381,  345,  345,  345,  345,
-      345,  345,  345,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  343,  381,  346,  346,  346,  346,
-      346,  347,  344,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  348,  381,  349,  349,  349,  349,
-      349,  349,  349,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  348,  381,  350,  350,  350,  350,
-      350,  350,  350,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  348,  381,  351,  351,  351,  351,
-      351,  352,  349,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  343,  381,  344,  344,  344,  344,
-      344,  344,  344,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,  381,   76,  343,  381,  344,  344,  344,  344,
-      344,  344,  344,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  348,  381,  349,  349,  349,  349,
-      349,  349,  349,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  348,  381,  349,  349,  349,  349,
-      349,  349,  349,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  359,  381,  360,  360,  360,  360,
-
-      360,  360,  360,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  359,  381,  361,  361,  361,  361,
-      361,  361,  361,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  359,  381,  362,  362,  362,  362,
-      362,  363,  360,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  364,  381,  365,  365,  365,  365,
-      365,  365,  365,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  364,  381,  366,  366,  366,  366,
-      366,  366,  366,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  364,  381,  367,  367,  367,  367,
-      367,  368,  365,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  359,  381,  360,  360,  360,  360,
-      360,  360,  360,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-
-      381,  381,  381,   76,  359,  381,  360,  360,  360,  360,
-      360,  360,  360,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,   76,  364,  381,  365,  365,  365,  365,
-      365,  365,  365,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,  364,  381,  365,  365,  365,  365,
-      365,  365,  365,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  108,   60,   60,   60,   60,   60,   60,
-
-       60,   21,   21,   21,   21,   21,   21,   21,   68,   68,
-       68,   68,   68,   68,   68,   75,  381,  381,  381,  381,
-       75,   75,   79,   79,   79,   79,   79,   79,   79,   81,
-      381,  381,  381,  381,   81,   81,   83,  381,  381,  381,
-      381,   83,   83,   85,  381,   85,  381,  381,   85,   85,
-      107,  381,  381,  381,  381,  107,  107,  110,  381,  381,
-      381,  381,  110,  110,  112,  381,  381,  381,  381,  112,
-      112,  114,  381,  114,  381,  381,  114,  114,  129,  381,
-      129,  129,  381,  381,  129,  136,  381,  136,  381,  136,
-      136,  136,  138,  138,  138,  138,  138,  138,  138,  143,
-
-      143,  143,  143,  143,  143,  143,   86,  381,   86,  381,
-      381,   86,   86,  139,  139,  139,  139,  139,  139,  139,
-      320,  320,  320,  320,  320,  320,  320,  324,  381,  381,
-      381,  381,  324,  324,   13,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381
-
+      107,  107,  126,   99,  107,   80,  107,  136,  107,  107,
+      300,  136,  107,  303,   80,  177,   76,  136,  131,   99,
+      132,  193,  133,  107,  107,  107,  132,  173,  133,  136,
+      287,  139,  139,   86,  136,  139,  209,   86,  209,  133,
+      133,  139,   85,   86,   75,   76,   85,  258,   75,   75,
+
+      262,  108,   85,  139,   86,   86,  294,  210,   76,  210,
+      133,  229,  240,   85,   85,   75,  174,  266,  259,  243,
+       80,  263,   88,  140,   89,   89,   89,   89,   89,   89,
+       89,   88,  293,   89,   89,   89,   89,   89,   89,   89,
+       88,   76,   89,   89,   89,   89,   89,   89,   76,  108,
+       76,  275,   76,  107,  283,  107,  264,  107,  258,  107,
+      107,   76,  110,  107,  110,  267,  110,  285,  110,  110,
+       76,  282,  110,   86,  107,  107,  107,   86,   86,  259,
+       76,  108,  262,  110,  110,  110,  112,  273,  112,  274,
+      112,  280,  112,  112,   86,  114,  112,  107,   76,  114,
+
+      304,  107,  107,  263,  272,  114,  258,  112,  112,  112,
+      322,  323,  281,  115,  271,  262,  114,  114,  107,  162,
+      163,  164,  162,  162,  162,  162,  116,  259,  117,  117,
+      117,  117,  117,  117,  117,  116,  263,  117,  117,  117,
+      117,  117,  117,  117,   76,  312,  116,  108,  117,  117,
+      117,  117,  117,  117,   76,  261,  108,  139,  139,  284,
+      172,  139,  286,   76,  260,  108,  177,  139,  178,  178,
+      178,  178,  178,  178,  178,   76,  108,  324,  177,  139,
+      179,  179,  179,  179,  179,  179,  179,  177,  257,  180,
+      180,  180,  180,  180,  181,  178,   76,  252,  193,  140,
+
+      194,  194,  194,  194,  194,  194,  194,  193,   76,  195,
+      195,  195,  195,  195,  195,  195,  193,   76,  196,  196,
+      196,  196,  196,  197,  194,  251,  139,  139,  108,  172,
+      139,  139,  139,  250,  175,  139,  139,  108,  288,  329,
+      280,  139,  280,  301,  301,  319,  108,  108,  139,  305,
+      301,  305,  306,  139,  206,  207,  208,  206,  206,  206,
+      206,  281,  295,  281,  302,  302,  320,  108,  140,  108,
+       76,  302,  177,  140,  178,  178,  178,  178,  178,  178,
+      178,  177,   76,  178,  178,  178,  178,  178,  178,  178,
+      177,  249,  178,  178,  178,  178,  178,  178,  322,  323,
+
+      248,  238,   76,  220,  221,  222,  220,  220,  220,  220,
+      193,   76,  194,  194,  194,  194,  194,  194,  194,  193,
+       76,  194,  194,  194,  194,  194,  194,  194,  346,  237,
+      193,  108,  194,  194,  194,  194,  194,  194,  236,  229,
+      108,  230,  230,  230,  230,  230,  230,  230,  229,  108,
+      231,  231,  231,  231,  231,  231,  231,  351,   76,  229,
+      108,  232,  232,  232,  232,  232,  233,  230,  243,   76,
+      244,  244,  244,  244,  244,  244,  244,  243,   76,  245,
+      245,  245,  245,  245,  245,  245,  362,  108,  243,   76,
+      246,  246,  246,  246,  246,  247,  244,  235,  108,  254,
+
+      255,  256,  254,  254,  254,  254,  229,  108,  230,  230,
+      230,  230,  230,  230,  230,  367,   76,  229,  108,  230,
+      230,  230,  230,  230,  230,  230,  229,   76,  230,  230,
+      230,  230,  230,  230,  234,  227,   76,  268,  269,  270,
+      268,  268,  268,  268,  226,  108,  243,   76,  244,  244,
+      244,  244,  244,  244,  244,  243,   76,  244,  244,  244,
+      244,  244,  244,  244,  243,  108,  244,  244,  244,  244,
+      244,  244,  225,  224,  223,  215,  108,  275,  276,  276,
+      276,  276,  276,  276,  276,  108,  275,  277,  277,  277,
+      277,  277,  277,  277,  108,  275,  278,  278,  278,  278,
+
+      278,  279,  276,  214,  213,  212,   76,  288,  289,  289,
+      289,  289,  289,  289,  289,   76,  288,  290,  290,  290,
+      290,  290,  290,  290,   76,  288,  291,  291,  291,  291,
+      291,  292,  289,  211,  137,  203,  108,  296,  297,  298,
+      299,  296,  296,  296,  202,  108,  275,  276,  276,  276,
+      276,  276,  276,  276,  108,  275,  276,  276,  276,  276,
+      276,  276,  276,  201,  200,   76,  275,  276,  276,  276,
+      276,  276,  276,  319,  199,   76,  307,  308,  309,  310,
+      307,  307,  307,  198,   76,  288,  289,  289,  289,  289,
+      289,  289,  289,  187,  320,   76,  288,  289,  289,  289,
+
+      289,  289,  289,  289,  108,  288,  289,  289,  289,  289,
+      289,  289,  186,  312,  108,  313,  313,  313,  313,  313,
+      313,  313,  185,  184,  312,  108,  314,  314,  314,  314,
+      314,  314,  314,  312,  108,  315,  315,  315,  315,  315,
+      316,  317,  312,   76,  318,  318,  318,  313,  313,  313,
+      313,  183,  182,  329,   76,  330,  330,  330,  330,  330,
+      330,  330,  329,   76,  331,  331,  331,  331,  331,  331,
+      331,  329,   76,  332,  332,  332,  332,  332,  333,  334,
+      137,  137,  329,  108,  335,  335,  335,  330,  330,  330,
+      330,  130,  108,  336,  337,  338,  336,  336,  336,  336,
+
+      312,  108,  317,  317,  317,  317,  317,  317,  317,  128,
+      170,  312,  108,  317,  317,  317,  317,  317,  317,  317,
+      312,   76,  317,  317,  317,  317,  317,  317,  339,  312,
+       76,  339,  339,  339,  339,  339,  339,  339,  166,  319,
+      312,   76,  340,  340,  340,  325,  165,  325,  113,  325,
+       76,  325,  325,  111,  108,  325,  154,  150,  149,   76,
+      320,  340,  340,  340,  145,   84,  325,  325,  325,  327,
+       76,  327,   82,  327,   80,  327,  327,   78,   77,  327,
+      341,  342,  343,  341,  341,  341,  341,   76,  137,   76,
+      327,  327,  327,  329,  130,  334,  334,  334,  334,  334,
+
+      334,  334,  329,  128,  345,  345,  345,  329,  108,  334,
+      334,  334,  334,  334,  334,  334,  125,  345,  345,  345,
+      124,  123,  329,  108,  334,  334,  334,  334,  334,  334,
+      344,  122,  108,  113,  111,  108,  329,  108,  344,  344,
+      344,  344,  344,  344,  344,  108,  106,  105,  104,  103,
+      102,  346,  108,  347,  347,  347,  347,  347,  347,  347,
+       97,   96,   95,   94,   84,  346,  108,  348,  348,  348,
+      348,  348,  348,  348,   82,   80,   78,   77,   76,  384,
+      346,   76,  349,  349,  349,  349,  349,  350,  347,  384,
+      384,  384,  384,  384,  384,   76,  339,  339,  339,  339,
+
+      339,  339,  339,  384,  384,  384,  384,  384,  384,  351,
+       76,  352,  352,  352,  352,  352,  352,  352,  384,  384,
+      384,  384,  384,  351,   76,  353,  353,  353,  353,  353,
+      353,  353,  384,  384,  384,  384,  384,  384,  351,  108,
+      354,  354,  354,  354,  354,  355,  352,  384,  384,  384,
+      384,  384,  384,  108,  344,  344,  344,  344,  344,  344,
+      344,  356,  357,  358,  356,  356,  356,  356,  108,  346,
+      384,  347,  347,  347,  347,  347,  347,  347,  384,  384,
+      384,  384,  108,  384,  384,  384,  384,  384,  346,   76,
+      347,  347,  347,  347,  347,  347,  347,  384,  346,   76,
+
+      347,  347,  347,  347,  347,  347,  359,  360,  361,  359,
+      359,  359,  359,  384,  384,  384,  384,  351,   76,  352,
+      352,  352,  352,  352,  352,  352,  384,  384,   76,  384,
+      384,  384,  384,  351,  108,  352,  352,  352,  352,  352,
+      352,  352,  384,  384,  384,  384,  351,  108,  352,  352,
+      352,  352,  352,  352,  362,  384,  363,  363,  363,  363,
+      363,  363,  363,  108,  362,  384,  364,  364,  364,  364,
+      364,  364,  364,  384,  384,  362,  108,  365,  365,  365,
+      365,  365,  366,  363,   76,  367,  384,  368,  368,  368,
+      368,  368,  368,  368,   76,  367,  384,  369,  369,  369,
+
+      369,  369,  369,  369,  367,   76,  370,  370,  370,  370,
+      370,  371,  368,  384,  384,  108,  372,  373,  374,  372,
+      372,  372,  372,  384,  362,  108,  363,  363,  363,  363,
+      363,  363,  363,  362,  108,  363,  363,  363,  363,  363,
+      363,  363,  384,  362,   76,  363,  363,  363,  363,  363,
+      363,  384,  384,  384,   76,  375,  376,  377,  375,  375,
+      375,  375,  367,   76,  368,  368,  368,  368,  368,  368,
+      368,  384,  367,   76,  368,  368,  368,  368,  368,  368,
+      368,  384,  367,  108,  368,  368,  368,  368,  368,  368,
+      384,  384,  108,  378,  378,  378,  378,  378,  378,  378,
+
+      384,  384,  108,  372,  372,  372,  372,  372,  372,  372,
+      384,  384,  108,  379,  379,  379,  379,  379,  380,  378,
+      384,   76,  381,  381,  381,  381,  381,  381,  381,  384,
+      384,   76,  375,  375,  375,  375,  375,  375,  375,  384,
+      384,   76,  382,  382,  382,  382,  382,  383,  381,  384,
+      108,  378,  378,  378,  378,  378,  378,  378,  384,  384,
+      108,  378,  378,  378,  378,  378,  378,  384,  384,  384,
+      108,  381,  381,  381,  381,  381,  381,  381,  384,   76,
+      381,  381,  381,  381,  381,  381,  384,  384,  384,   76,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  108,
+
+      384,  384,  384,  384,  384,  384,  384,  384,  108,   60,
+       60,   60,   60,   60,   60,   60,   21,   21,   21,   21,
+       21,   21,   21,   68,   68,   68,   68,   68,   68,   68,
+       75,  384,  384,  384,  384,   75,   75,   79,   79,   79,
+       79,   79,   79,   79,   81,  384,  384,  384,  384,   81,
+       81,   83,  384,  384,  384,  384,   83,   83,   85,  384,
+       85,  384,  384,   85,   85,  107,  384,  384,  384,  384,
+      107,  107,  110,  384,  384,  384,  384,  110,  110,  112,
+      384,  384,  384,  384,  112,  112,  114,  384,  114,  384,
+      384,  114,  114,  129,  384,  129,  129,  384,  384,  129,
+
+      136,  384,  136,  384,  136,  136,  136,  138,  138,  138,
+      138,  138,  138,  138,  143,  143,  143,  143,  143,  143,
+      143,   86,  384,   86,  384,  384,   86,   86,  139,  139,
+      139,  139,  139,  139,  139,  321,  321,  321,  321,  321,
+      321,  321,  325,  384,  384,  384,  384,  325,  325,  327,
+      384,  384,  384,  384,  327,  327,   13,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384
     } ;
 
-static yyconst short int yy_chk[3295] =
+static yyconst short int yy_chk[2118] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
-        5,    6,   36,   58,    5,    6,    5,    6,   44,   66,
-       66,   44,   44,   44,   44,   44,   44,   44,   36,   58,
-      102,    2,    2,  100,    2,   74,   74,  127,  100,  395,
-        2,  102,  127,    2,    3,    3,    3,    3,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        2,    5,    6,   36,   58,    5,    6,    5,    6,   44,
+       66,   66,   44,   44,   44,   44,   44,   44,   44,   36,
+       58,   74,   74,    2,    2,   96,    2,  106,   96,  100,
+      398,   96,    2,  106,  100,    2,    3,    3,    3,    3,
 
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    7,    7,    7,  101,    7,    8,    8,
-        8,   37,    8,    7,   70,  189,   24,   72,    8,   89,
-       24,   24,   48,  218,    7,    7,   48,   48,  139,    8,
-        8,   69,   69,   70,   69,   69,   72,   24,   98,   98,
-      218,   69,   85,   48,    7,  117,   85,   85,   89,    8,
-
-        9,    9,    9,   69,    9,   24,  104,  101,  105,   37,
-      103,   48,   96,   85,  189,   96,  139,  103,   96,  105,
-      104,  106,   69,  378,  117,  131,  131,  106,  156,   98,
-      375,   85,  126,  126,   88,   88,   88,   88,   88,   88,
-       88,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,   10,   10,
-       10,   88,   10,   92,  324,   92,   92,   92,   92,   92,
-       92,  109,  156,  126,  109,  109,  109,  109,  109,  109,
-      109,  124,  134,  134,  124,  155,  158,  124,  158,  144,
-      144,  140,   92,  140,  160,  174,  160,  155,  323,   10,
-
+        3,    3,    3,    3,    3,    3,    7,    7,    7,   70,
+        7,    8,    8,    8,  381,    8,    7,   72,  378,   24,
+       89,    8,   37,   24,   24,  101,  127,    7,    7,   70,
+       48,  127,    8,    8,   48,   48,  191,   72,  102,   25,
+       24,   25,   25,   25,   25,   25,   25,   25,    7,  102,
+
+       89,   48,  191,    8,    9,    9,    9,  117,    9,   24,
+       26,  104,   26,   26,   26,   26,   26,   26,   26,   25,
+       48,   37,   76,  103,   76,  104,   76,  101,   76,   76,
+      103,  105,   76,   98,   98,  124,  156,  117,  124,  240,
+       26,  124,  105,   76,   76,   76,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,   10,   10,   10,   27,   10,   27,   27,
+       27,   27,   27,   27,   27,   98,   82,  158,   82,  158,
+       82,  156,   82,   82,  109,  240,   82,  109,  109,  109,
+      109,  109,  109,  109,  131,  131,   27,   82,   82,   82,
+
+      126,  126,  134,  134,  327,   10,   10,   10,   10,   10,
        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   11,   11,   11,   11,
-       11,  159,  161,  217,  114,   11,   11,   11,  114,  114,
-      144,  140,  320,  174,  182,  161,  159,  120,   11,  120,
-      120,  120,  120,  120,  120,  114,  116,  116,  116,  116,
-      116,  116,  116,  178,  205,  182,  191,   11,   12,   12,
-       12,   12,   12,  114,  171,  157,  120,   12,   12,   12,
-      157,  137,  191,  116,  145,  137,  171,  188,  145,  217,
-       12,  137,  178,  188,  145,  190,  190,  138,  138,  198,
-      138,  138,  205,  137,  194,  145,  145,  138,  192,   12,
-
-       25,  209,   25,   25,   25,   25,   25,   25,   25,  138,
-      198,  216,  192,  204,  230,  219,  216,  175,  175,  204,
-      175,  175,  209,  194,  219,  235,  228,  175,  138,   25,
-       26,  228,   26,   26,   26,   26,   26,   26,   26,  175,
-      238,  239,  240,  230,  241,  305,  235,  176,  176,  239,
-      176,  176,  244,  241,  276,  285,  285,  176,  175,   26,
-       27,  238,   27,   27,   27,   27,   27,   27,   27,  176,
-      177,  177,  177,  177,  177,  177,  177,  242,  253,  295,
-      249,  244,  276,  264,  293,  289,  253,  240,  176,   27,
-       30,  252,  242,  257,   30,  284,   30,  177,  264,   30,
-
-       30,  249,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,  252,  289,  257,   30,   30,   30,   30,   30,
+       10,   10,   11,   11,   11,   11,   11,  325,  144,  144,
+      324,   11,   11,   11,   88,   88,   88,   88,   88,   88,
+       88,  139,  126,   49,   11,   49,   49,   49,   49,   49,
+       49,   49,   50,  321,   50,   50,   50,   50,   50,   50,
+       50,  140,   88,  140,   11,   12,   12,   12,   12,   12,
+      144,  174,  157,   49,   12,   12,   12,  157,  218,   85,
+      139,  159,   50,   85,   85,  155,   51,   12,   51,   51,
+       51,   51,   51,   51,   51,  218,  159,  155,  161,  160,
+
+       85,  160,  140,  171,  190,  190,  306,   12,   30,  182,
+      174,  161,   30,  305,   30,  171,   51,   30,   30,   85,
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+      182,  189,  295,   30,   30,   30,   30,   30,   30,   30,
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   35,
-       35,   35,  274,   35,  267,   35,   35,  282,  181,   35,
-      181,  181,  181,  181,  181,  181,  265,  274,  267,  273,
-       35,   35,   35,   49,  266,   49,   49,   49,   49,   49,
-       49,   49,  266,  258,  286,  272,  286,  181,  193,  193,
-      193,  193,  193,  193,  193,  229,  229,  229,  229,  229,
-
-      229,  229,   49,   50,  258,   50,   50,   50,   50,   50,
-       50,   50,  265,  262,  197,  193,  197,  197,  197,  197,
-      197,  197,  229,  233,  261,  233,  233,  233,  233,  233,
-      233,  312,   50,   51,  262,   51,   51,   51,   51,   51,
-       51,   51,  304,  197,  243,  243,  243,  243,  243,  243,
-      243,  260,  233,  271,  303,  303,  304,  321,  321,  251,
-      312,  250,   51,   52,  280,  283,  294,   52,  248,   52,
-      237,  243,   52,   52,  271,   52,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,  280,  283,  294,   52,   52,
-       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   35,   35,
+       35,  188,   35,  192,   35,   35,  204,  188,   35,  216,
+      293,  189,  204,  228,  216,  219,  284,  192,  228,   35,
+       35,   35,   52,   84,  219,   84,   52,   84,   52,   84,
 
+       84,   52,   52,   84,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   84,   84,   84,   52,   52,   52,
        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,   57,   57,   57,  236,   57,  234,   57,   57,
-      300,  247,   57,  247,  247,  247,  247,  247,  247,  287,
-      301,  287,  310,   57,   57,   57,   65,   65,   65,  227,
-       65,  300,  226,  225,   65,  224,   65,  327,  223,  287,
-      247,  301,  317,  310,  317,  317,  317,   65,   65,  275,
-      275,  275,  275,  275,  275,  275,  279,  279,  279,  279,
-      279,  279,  279,  215,  318,  214,  327,   65,   76,  213,
-       76,  317,   76,  212,   76,   76,  275,  211,   76,  203,
-
-      202,  344,  349,  360,  279,  318,  201,  200,  365,   76,
-       76,   76,   82,  199,   82,  187,   82,  186,   82,   82,
-      185,  184,   82,  288,  288,  288,  288,  288,  288,  288,
-      344,  349,  360,   82,   82,   82,   84,  365,   84,  183,
-       84,  172,   84,   84,  170,  169,   84,  168,  167,  332,
-      288,  332,  332,  332,  166,  165,  154,   84,   84,   84,
-       87,  153,   87,  152,   87,  151,   87,   87,  150,  149,
-       87,  292,  292,  292,  292,  292,  292,  292,  332,  143,
-      136,   87,   87,   87,   90,  130,   90,   90,   90,   90,
-       90,   90,   90,  128,  125,  123,  337,  337,  337,  292,
-
-      311,  311,  311,  311,  311,  311,  311,  122,  112,  110,
-      107,   97,   95,   90,   91,   94,   91,   91,   91,   91,
-       91,   91,   91,  337,   86,   83,   81,  311,  326,  326,
-      326,  326,  326,  326,  326,  336,  336,  336,  336,  336,
-      336,  336,   79,   91,  108,   78,  108,   77,  108,   75,
-      108,  108,   68,   62,  108,  326,   59,   56,   55,  342,
-      342,  342,  336,   54,   53,  108,  108,  108,  111,   47,
-      111,   45,  111,   43,  111,  111,   42,   41,  111,  341,
-      341,  341,  341,  341,  341,  341,  342,   40,   39,  111,
-      111,  111,  113,   38,  113,   34,  113,   33,  113,  113,
-
-       32,   31,  113,   22,   19,  347,  341,  347,  347,  347,
-      347,  347,  347,  113,  113,  113,  115,   18,  115,   17,
-      115,   15,  115,  115,   14,   13,  115,  343,  343,  343,
-      343,  343,  343,  343,  347,    0,    0,  115,  115,  115,
-      118,    0,  118,  118,  118,  118,  118,  118,  118,    0,
-        0,    0,    0,    0,  343,  348,  348,  348,  348,  348,
-      348,  348,  359,  359,  359,  359,  359,  359,  359,  118,
-      119,    0,  119,  119,  119,  119,  119,  119,  119,    0,
-        0,  352,  348,  352,  352,  352,  352,  352,  352,  359,
-      363,    0,  363,  363,  363,  363,  363,  363,    0,  119,
-
-      146,    0,  146,  146,  146,  146,  146,  146,  146,    0,
-      352,    0,  364,  364,  364,  364,  364,  364,  364,  363,
-      368,    0,  368,  368,  368,  368,  368,  368,    0,  146,
-      147,    0,  147,  147,  147,  147,  147,  147,  147,  364,
-        0,    0,  369,  369,  369,  369,  369,  369,  369,  368,
-      370,  370,  370,  370,  370,  370,  370,    0,    0,  147,
-      148,    0,  148,  148,  148,  148,  148,  148,  148,  369,
-        0,    0,    0,    0,    0,    0,    0,  370,  371,  371,
-      371,  371,  371,  371,  371,    0,    0,    0,    0,  148,
-      162,    0,  162,  162,  162,  162,  162,  162,  162,    0,
-
-        0,    0,    0,    0,    0,  371,  372,  372,  372,  372,
-      372,  372,  372,    0,    0,    0,    0,    0,    0,  162,
-      163,    0,  163,  163,  163,  163,  163,  163,  163,    0,
-        0,    0,    0,  372,  373,  373,  373,  373,  373,  373,
-      373,  374,  374,  374,  374,  374,  374,  374,    0,  163,
-      164,    0,  164,  164,  164,  164,  164,  164,  164,    0,
-        0,  373,  377,  377,  377,  377,  377,  377,  374,  376,
-      376,  376,  376,  376,  376,  376,    0,    0,    0,  164,
-      179,    0,  179,  179,  179,  179,  179,  179,  179,  377,
-        0,    0,    0,    0,    0,    0,  376,  379,  379,  379,
-
-      379,  379,  379,  379,    0,    0,    0,    0,    0,  179,
-      180,    0,  180,  180,  180,  180,  180,  180,  180,    0,
-        0,    0,    0,    0,  379,  380,  380,  380,  380,  380,
-      380,    0,    0,    0,    0,    0,    0,    0,    0,  180,
-      195,    0,  195,  195,  195,  195,  195,  195,  195,    0,
-        0,    0,  380,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  195,
-      196,    0,  196,  196,  196,  196,  196,  196,  196,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  196,
-
-      206,    0,  206,  206,  206,  206,  206,  206,  206,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  206,
-      207,    0,  207,  207,  207,  207,  207,  207,  207,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  207,
-      208,    0,  208,  208,  208,  208,  208,  208,  208,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  208,
-      220,    0,  220,  220,  220,  220,  220,  220,  220,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  220,
-      221,    0,  221,  221,  221,  221,  221,  221,  221,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  221,
-      222,    0,  222,  222,  222,  222,  222,  222,  222,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  222,
-      231,    0,  231,  231,  231,  231,  231,  231,  231,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  231,
-      232,    0,  232,  232,  232,  232,  232,  232,  232,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  232,
-      245,    0,  245,  245,  245,  245,  245,  245,  245,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  245,
-      246,    0,  246,  246,  246,  246,  246,  246,  246,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  246,
-
-      254,  254,  254,  254,  254,  254,  254,  254,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  254,  255,
-      255,  255,  255,  255,  255,  255,  255,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  255,  256,  256,
-      256,  256,  256,  256,  256,  256,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  256,  268,  268,  268,
-      268,  268,  268,  268,  268,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  268,  269,  269,  269,  269,
-      269,  269,  269,  269,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  269,  270,  270,  270,  270,  270,
-      270,  270,  270,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  270,  277,  277,  277,  277,  277,  277,
-      277,  277,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,  277,  278,  278,  278,  278,  278,  278,  278,
-      278,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  278,  290,  290,  290,  290,  290,  290,  290,  290,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      290,  291,  291,  291,  291,  291,  291,  291,  291,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  291,
-      296,    0,  296,  296,  296,  296,  296,  296,  296,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  296,
-      297,    0,  297,  297,  297,  297,  297,  297,  297,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  297,
-      298,    0,  298,  298,  298,  298,  298,  298,  298,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  298,
-      299,    0,  299,  299,  299,  299,  299,  299,  299,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  299,
-      306,    0,  306,  306,  306,  306,  306,  306,  306,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  306,
-      307,    0,  307,  307,  307,  307,  307,  307,  307,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  307,
-      308,    0,  308,  308,  308,  308,  308,  308,  308,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  308,
-
-      309,    0,  309,  309,  309,  309,  309,  309,  309,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  309,
-      313,    0,  313,  313,  313,  313,  313,  313,  313,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  313,
-      314,    0,  314,  314,  314,  314,  314,  314,  314,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  314,
-      315,    0,  315,  315,  315,  315,  315,  315,  315,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  315,
-      316,    0,  316,  316,  316,  316,  316,  316,  316,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  316,
-      325,    0,  325,    0,  325,    0,  325,  325,    0,    0,
-      325,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  325,  325,  325,  328,    0,  328,  328,  328,  328,
-      328,  328,  328,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,  328,  329,    0,  329,  329,  329,  329,
-      329,  329,  329,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  329,  330,    0,  330,  330,  330,  330,
-      330,  330,  330,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  330,  331,    0,  331,  331,  331,  331,
-      331,  331,  331,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  331,  333,    0,  333,  333,  333,  333,
-
-      333,  333,  333,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  333,  334,    0,  334,  334,  334,  334,
-      334,  334,  334,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  334,  335,    0,  335,  335,  335,  335,
-      335,  335,  335,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  335,  338,    0,  338,  338,  338,  338,
-      338,  338,  338,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  338,  339,    0,  339,  339,  339,  339,
-      339,  339,  339,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  339,  340,    0,  340,  340,  340,  340,
-      340,  340,  340,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  340,  345,    0,  345,  345,  345,  345,
-      345,  345,  345,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,  345,  346,    0,  346,  346,  346,  346,
-      346,  346,  346,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  346,  350,    0,  350,  350,  350,  350,
-      350,  350,  350,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  350,  351,    0,  351,  351,  351,  351,
-      351,  351,  351,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  351,  353,    0,  353,  353,  353,  353,
-
-      353,  353,  353,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  353,  354,    0,  354,  354,  354,  354,
-      354,  354,  354,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  354,  355,    0,  355,  355,  355,  355,
-      355,  355,  355,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  355,  356,    0,  356,  356,  356,  356,
-      356,  356,  356,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  356,  357,    0,  357,  357,  357,  357,
-      357,  357,  357,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  357,  358,    0,  358,  358,  358,  358,
-      358,  358,  358,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  358,  361,    0,  361,  361,  361,  361,
-      361,  361,  361,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,  361,  362,    0,  362,  362,  362,  362,
-      362,  362,  362,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  362,  366,    0,  366,  366,  366,  366,
-      366,  366,  366,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  366,  367,    0,  367,  367,  367,  367,
-      367,  367,  367,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  367,  382,  382,  382,  382,  382,  382,
-
-      382,  383,  383,  383,  383,  383,  383,  383,  384,  384,
-      384,  384,  384,  384,  384,  385,    0,    0,    0,    0,
-      385,  385,  386,  386,  386,  386,  386,  386,  386,  387,
-        0,    0,    0,    0,  387,  387,  388,    0,    0,    0,
-        0,  388,  388,  389,    0,  389,    0,    0,  389,  389,
-      390,    0,    0,    0,    0,  390,  390,  391,    0,    0,
-        0,    0,  391,  391,  392,    0,    0,    0,    0,  392,
-      392,  393,    0,  393,    0,    0,  393,  393,  394,    0,
-      394,  394,    0,    0,  394,  396,    0,  396,    0,  396,
-      396,  396,  397,  397,  397,  397,  397,  397,  397,  398,
-
-      398,  398,  398,  398,  398,  398,  399,    0,  399,    0,
-        0,  399,  399,  400,  400,  400,  400,  400,  400,  400,
-      401,  401,  401,  401,  401,  401,  401,  402,    0,    0,
-        0,    0,  402,  402,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  381,  381,  381
-
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   57,   57,   57,  217,   57,  137,   57,   57,
+      282,  137,   57,  285,  285,  178,  267,  137,   65,   65,
+       65,  194,   65,   57,   57,   57,   65,  205,   65,  137,
+      267,   69,   69,  145,   69,   69,  198,  145,  209,   65,
+       65,   69,   87,  145,   87,  178,   87,  235,   87,   87,
+
+      238,  194,   87,   69,  145,  145,  273,  198,  241,  209,
+       65,  230,  217,   87,   87,   87,  205,  241,  235,  244,
+      265,  238,   90,   69,   90,   90,   90,   90,   90,   90,
+       90,   91,  272,   91,   91,   91,   91,   91,   91,   91,
+       92,  230,   92,   92,   92,   92,   92,   92,  239,  244,
+      242,  276,   90,  108,  261,  108,  239,  108,  249,  108,
+      108,   91,  111,  108,  111,  242,  111,  265,  111,  111,
+       92,  260,  111,  114,  108,  108,  108,  114,  114,  249,
+      276,  253,  252,  111,  111,  111,  113,  251,  113,  253,
+      113,  257,  113,  113,  114,  115,  113,  115,  286,  115,
+
+      286,  115,  115,  252,  250,  115,  258,  113,  113,  113,
+      303,  303,  257,  114,  248,  262,  115,  115,  115,  116,
+      116,  116,  116,  116,  116,  116,  118,  258,  118,  118,
+      118,  118,  118,  118,  118,  119,  262,  119,  119,  119,
+      119,  119,  119,  119,  264,  313,  120,  116,  120,  120,
+      120,  120,  120,  120,  266,  237,  118,  138,  138,  264,
+      138,  138,  266,  304,  236,  119,  146,  138,  146,  146,
+      146,  146,  146,  146,  146,  313,  120,  304,  147,  138,
+      147,  147,  147,  147,  147,  147,  147,  148,  234,  148,
+      148,  148,  148,  148,  148,  148,  146,  227,  162,  138,
+
+      162,  162,  162,  162,  162,  162,  162,  163,  147,  163,
+      163,  163,  163,  163,  163,  163,  164,  148,  164,  164,
+      164,  164,  164,  164,  164,  226,  175,  175,  162,  175,
+      175,  176,  176,  225,  176,  176,  175,  163,  289,  330,
+      271,  176,  280,  283,  294,  300,  164,  274,  175,  287,
+      301,  287,  287,  176,  177,  177,  177,  177,  177,  177,
+      177,  271,  274,  280,  283,  294,  300,  289,  175,  330,
+      287,  301,  179,  176,  179,  179,  179,  179,  179,  179,
+      179,  180,  177,  180,  180,  180,  180,  180,  180,  180,
+      181,  224,  181,  181,  181,  181,  181,  181,  322,  322,
+
+      223,  215,  179,  193,  193,  193,  193,  193,  193,  193,
+      195,  180,  195,  195,  195,  195,  195,  195,  195,  196,
+      181,  196,  196,  196,  196,  196,  196,  196,  347,  214,
+      197,  193,  197,  197,  197,  197,  197,  197,  213,  206,
+      195,  206,  206,  206,  206,  206,  206,  206,  207,  196,
+      207,  207,  207,  207,  207,  207,  207,  352,  347,  208,
+      197,  208,  208,  208,  208,  208,  208,  208,  220,  206,
+      220,  220,  220,  220,  220,  220,  220,  221,  207,  221,
+      221,  221,  221,  221,  221,  221,  363,  352,  222,  208,
+      222,  222,  222,  222,  222,  222,  222,  212,  220,  229,
+
+      229,  229,  229,  229,  229,  229,  231,  221,  231,  231,
+      231,  231,  231,  231,  231,  368,  363,  232,  222,  232,
+      232,  232,  232,  232,  232,  232,  233,  229,  233,  233,
+      233,  233,  233,  233,  211,  203,  231,  243,  243,  243,
+      243,  243,  243,  243,  202,  368,  245,  232,  245,  245,
+      245,  245,  245,  245,  245,  246,  233,  246,  246,  246,
+      246,  246,  246,  246,  247,  243,  247,  247,  247,  247,
+      247,  247,  201,  200,  199,  187,  245,  254,  254,  254,
+      254,  254,  254,  254,  254,  246,  255,  255,  255,  255,
+      255,  255,  255,  255,  247,  256,  256,  256,  256,  256,
+
+      256,  256,  256,  186,  185,  184,  254,  268,  268,  268,
+      268,  268,  268,  268,  268,  255,  269,  269,  269,  269,
+      269,  269,  269,  269,  256,  270,  270,  270,  270,  270,
+      270,  270,  270,  183,  172,  170,  268,  275,  275,  275,
+      275,  275,  275,  275,  169,  269,  277,  277,  277,  277,
+      277,  277,  277,  277,  270,  278,  278,  278,  278,  278,
+      278,  278,  278,  168,  167,  275,  279,  279,  279,  279,
+      279,  279,  279,  311,  166,  277,  288,  288,  288,  288,
+      288,  288,  288,  165,  278,  290,  290,  290,  290,  290,
+      290,  290,  290,  154,  311,  279,  291,  291,  291,  291,
+
+      291,  291,  291,  291,  288,  292,  292,  292,  292,  292,
+      292,  292,  153,  296,  290,  296,  296,  296,  296,  296,
+      296,  296,  152,  151,  297,  291,  297,  297,  297,  297,
+      297,  297,  297,  298,  292,  298,  298,  298,  298,  298,
+      298,  298,  299,  296,  299,  299,  299,  299,  299,  299,
+      299,  150,  149,  307,  297,  307,  307,  307,  307,  307,
+      307,  307,  308,  298,  308,  308,  308,  308,  308,  308,
+      308,  309,  299,  309,  309,  309,  309,  309,  309,  309,
+      143,  136,  310,  307,  310,  310,  310,  310,  310,  310,
+      310,  130,  308,  312,  312,  312,  312,  312,  312,  312,
+
+      314,  309,  314,  314,  314,  314,  314,  314,  314,  128,
+      125,  315,  310,  315,  315,  315,  315,  315,  315,  315,
+      316,  312,  316,  316,  316,  316,  316,  316,  316,  317,
+      314,  317,  317,  317,  317,  317,  317,  317,  123,  319,
+      318,  315,  318,  318,  318,  326,  122,  326,  112,  326,
+      316,  326,  326,  110,  107,  326,   97,   95,   94,  317,
+      319,  340,  340,  340,   86,   83,  326,  326,  326,  328,
+      318,  328,   81,  328,   79,  328,  328,   78,   77,  328,
+      329,  329,  329,  329,  329,  329,  329,   75,   68,  340,
+      328,  328,  328,  331,   62,  331,  331,  331,  331,  331,
+
+      331,  331,  335,   59,  335,  335,  335,  332,  329,  332,
+      332,  332,  332,  332,  332,  332,   56,  345,  345,  345,
+       55,   54,  333,  331,  333,  333,  333,  333,  333,  333,
+      333,   53,  335,   47,   45,   43,  334,  332,  334,  334,
+      334,  334,  334,  334,  334,  345,   42,   41,   40,   39,
+       38,  336,  333,  336,  336,  336,  336,  336,  336,  336,
+       34,   33,   32,   31,   22,  337,  334,  337,  337,  337,
+      337,  337,  337,  337,   19,   18,   17,   15,   14,   13,
+      338,  336,  338,  338,  338,  338,  338,  338,  338,    0,
+        0,    0,    0,    0,    0,  337,  339,  339,  339,  339,
+
+      339,  339,  339,    0,    0,    0,    0,    0,    0,  341,
+      338,  341,  341,  341,  341,  341,  341,  341,    0,    0,
+        0,    0,    0,  342,  339,  342,  342,  342,  342,  342,
+      342,  342,    0,    0,    0,    0,    0,    0,  343,  341,
+      343,  343,  343,  343,  343,  343,  343,    0,    0,    0,
+        0,    0,    0,  342,  344,  344,  344,  344,  344,  344,
+      344,  346,  346,  346,  346,  346,  346,  346,  343,  348,
+        0,  348,  348,  348,  348,  348,  348,  348,    0,    0,
+        0,    0,  344,    0,    0,    0,    0,    0,  349,  346,
+      349,  349,  349,  349,  349,  349,  349,    0,  350,  348,
+
+      350,  350,  350,  350,  350,  350,  351,  351,  351,  351,
+      351,  351,  351,    0,    0,    0,    0,  353,  349,  353,
+      353,  353,  353,  353,  353,  353,    0,    0,  350,    0,
+        0,    0,    0,  354,  351,  354,  354,  354,  354,  354,
+      354,  354,    0,    0,    0,    0,  355,  353,  355,  355,
+      355,  355,  355,  355,  356,    0,  356,  356,  356,  356,
+      356,  356,  356,  354,  357,    0,  357,  357,  357,  357,
+      357,  357,  357,    0,    0,  358,  355,  358,  358,  358,
+      358,  358,  358,  358,  356,  359,    0,  359,  359,  359,
+      359,  359,  359,  359,  357,  360,    0,  360,  360,  360,
+
+      360,  360,  360,  360,  361,  358,  361,  361,  361,  361,
+      361,  361,  361,    0,    0,  359,  362,  362,  362,  362,
+      362,  362,  362,    0,  364,  360,  364,  364,  364,  364,
+      364,  364,  364,  365,  361,  365,  365,  365,  365,  365,
+      365,  365,    0,  366,  362,  366,  366,  366,  366,  366,
+      366,    0,    0,    0,  364,  367,  367,  367,  367,  367,
+      367,  367,  369,  365,  369,  369,  369,  369,  369,  369,
+      369,    0,  370,  366,  370,  370,  370,  370,  370,  370,
+      370,    0,  371,  367,  371,  371,  371,  371,  371,  371,
+        0,    0,  369,  372,  372,  372,  372,  372,  372,  372,
+
+        0,    0,  370,  373,  373,  373,  373,  373,  373,  373,
+        0,    0,  371,  374,  374,  374,  374,  374,  374,  374,
+        0,  372,  375,  375,  375,  375,  375,  375,  375,    0,
+        0,  373,  376,  376,  376,  376,  376,  376,  376,    0,
+        0,  374,  377,  377,  377,  377,  377,  377,  377,    0,
+      375,  379,  379,  379,  379,  379,  379,  379,    0,    0,
+      376,  380,  380,  380,  380,  380,  380,    0,    0,    0,
+      377,  382,  382,  382,  382,  382,  382,  382,    0,  379,
+      383,  383,  383,  383,  383,  383,    0,    0,    0,  380,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  382,
+
+        0,    0,    0,    0,    0,    0,    0,    0,  383,  385,
+      385,  385,  385,  385,  385,  385,  386,  386,  386,  386,
+      386,  386,  386,  387,  387,  387,  387,  387,  387,  387,
+      388,    0,    0,    0,    0,  388,  388,  389,  389,  389,
+      389,  389,  389,  389,  390,    0,    0,    0,    0,  390,
+      390,  391,    0,    0,    0,    0,  391,  391,  392,    0,
+      392,    0,    0,  392,  392,  393,    0,    0,    0,    0,
+      393,  393,  394,    0,    0,    0,    0,  394,  394,  395,
+        0,    0,    0,    0,  395,  395,  396,    0,  396,    0,
+        0,  396,  396,  397,    0,  397,  397,    0,    0,  397,
+
+      399,    0,  399,    0,  399,  399,  399,  400,  400,  400,
+      400,  400,  400,  400,  401,  401,  401,  401,  401,  401,
+      401,  402,    0,  402,    0,    0,  402,  402,  403,  403,
+      403,  403,  403,  403,  403,  404,  404,  404,  404,  404,
+      404,  404,  405,    0,    0,    0,    0,  405,  405,  406,
+        0,    0,    0,    0,  406,  406,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  384,  384
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1218,9 +962,9 @@ static char *yy_last_accepting_cpos;
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "parse.lex"
+#line 1 "toke.l"
 #define INITIAL 0
-#line 2 "parse.lex"
+#line 2 "toke.l"
 /*
  * Copyright (c) 1996, 1998-2004 Todd C. Miller <Todd.Miller@courtesan.com>
  *
@@ -1273,16 +1017,13 @@ char *yytext;
 #include <ctype.h>
 #include "sudo.h"
 #include "parse.h"
-#include <sudo.tab.h>
+#include "gram.h"
 
 #ifndef lint
 static const char rcsid[] = "$Sudo$";
 #endif /* lint */
 
-#undef yywrap          /* guard against a yywrap macro */
-
 extern YYSTYPE yylval;
-extern int clearaliases;
 int sudolineno = 1;
 char *sudoers;
 static int sawspace = 0;
@@ -1292,12 +1033,11 @@ static int arg_size = 0;
 static int fill                        __P((char *, int));
 static int fill_cmnd           __P((char *, int));
 static int fill_args           __P((char *, int, int));
-static int buffer_frob         __P((char *));
-extern void reset_aliases      __P((void));
+static int switch_buffer       __P((char *));
 extern void yyerror            __P((const char *));
 
-#define        push_include(_p)        (buffer_frob((_p)))
-#define        pop_include()           (buffer_frob(NULL))
+#define        push_include(_p)        (switch_buffer((_p)))
+#define        pop_include()           (switch_buffer(NULL))
 
 /* realloc() to size + COMMANDARGINC to make room for command args */
 #define COMMANDARGINC  64
@@ -1319,7 +1059,7 @@ extern void yyerror               __P((const char *));
 
 #define INDEFS 5
 
-#line 1323 "lex.yy.c"
+#line 1063 "toke.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1473,9 +1213,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 106 "parse.lex"
+#line 103 "toke.l"
 
-#line 1479 "lex.yy.c"
+#line 1219 "toke.c"
 
        if ( yy_init )
                {
@@ -1527,13 +1267,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 382 )
+                               if ( yy_current_state >= 385 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 3235 );
+               while ( yy_base[yy_current_state] != 2057 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1561,12 +1301,12 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 107 "parse.lex"
+#line 104 "toke.l"
 BEGIN STARTDEFS;
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 109 "parse.lex"
+#line 106 "toke.l"
 {
                            BEGIN INDEFS;
                            LEXTRACE("DEFVAR ");
@@ -1578,7 +1318,7 @@ YY_RULE_SETUP
 
 case 3:
 YY_RULE_SETUP
-#line 118 "parse.lex"
+#line 115 "toke.l"
 {
                            BEGIN STARTDEFS;
                            LEXTRACE(", ");
@@ -1587,7 +1327,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 124 "parse.lex"
+#line 121 "toke.l"
 {
                            LEXTRACE("= ");
                            return('=');
@@ -1595,7 +1335,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 129 "parse.lex"
+#line 126 "toke.l"
 {
                            LEXTRACE("+= ");
                            return('+');
@@ -1603,7 +1343,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 134 "parse.lex"
+#line 131 "toke.l"
 {
                            LEXTRACE("-= ");
                            return('-');
@@ -1611,7 +1351,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 139 "parse.lex"
+#line 136 "toke.l"
 {
                            LEXTRACE("WORD(1) ");
                            if (!fill(yytext + 1, yyleng - 2))
@@ -1621,7 +1361,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 146 "parse.lex"
+#line 143 "toke.l"
 {
                            LEXTRACE("WORD(2) ");
                            if (!fill(yytext, yyleng))
@@ -1633,7 +1373,7 @@ YY_RULE_SETUP
 
 case 9:
 YY_RULE_SETUP
-#line 155 "parse.lex"
+#line 152 "toke.l"
 {
                            /* quoted fnmatch glob char, pass verbatim */
                            LEXTRACE("QUOTEDCHAR ");
@@ -1644,7 +1384,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 163 "parse.lex"
+#line 160 "toke.l"
 {
                            /* quoted sudoers special char, strip backslash */
                            LEXTRACE("QUOTEDCHAR ");
@@ -1655,7 +1395,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 171 "parse.lex"
+#line 168 "toke.l"
 {
                            BEGIN INITIAL;
                            yyless(0);
@@ -1664,7 +1404,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 177 "parse.lex"
+#line 174 "toke.l"
 {
                            LEXTRACE("ARG ");
                            if (!fill_args(yytext, yyleng, sawspace))
@@ -1675,7 +1415,7 @@ YY_RULE_SETUP
 
 case 13:
 YY_RULE_SETUP
-#line 185 "parse.lex"
+#line 182 "toke.l"
 {
                            char *cp, *ep;
                            ++sudolineno;
@@ -1694,7 +1434,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 201 "parse.lex"
+#line 198 "toke.l"
 {
                            BEGIN GOTDEFS;
                            switch (yytext[8]) {
@@ -1718,7 +1458,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 222 "parse.lex"
+#line 219 "toke.l"
 {
                            if (!fill(yytext, yyleng))
                                yyterminate();
@@ -1741,7 +1481,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 242 "parse.lex"
+#line 239 "toke.l"
 {
                                /* cmnd does not require passwd for this user */
                                LEXTRACE("NOPASSWD ");
@@ -1750,7 +1490,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 248 "parse.lex"
+#line 245 "toke.l"
 {
                                /* cmnd requires passwd for this user */
                                LEXTRACE("PASSWD ");
@@ -1759,7 +1499,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 254 "parse.lex"
+#line 251 "toke.l"
 {
                                LEXTRACE("NOEXEC ");
                                return(NOEXEC);
@@ -1767,7 +1507,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 259 "parse.lex"
+#line 256 "toke.l"
 {
                                LEXTRACE("EXEC ");
                                return(EXEC);
@@ -1775,7 +1515,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 264 "parse.lex"
+#line 261 "toke.l"
 {
                                LEXTRACE("NOMONITOR ");
                                return(NOMONITOR);
@@ -1783,7 +1523,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 269 "parse.lex"
+#line 266 "toke.l"
 {
                                LEXTRACE("MONITOR ");
                                return(MONITOR);
@@ -1791,7 +1531,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 274 "parse.lex"
+#line 271 "toke.l"
 {
                            /* netgroup */
                            if (!fill(yytext, yyleng))
@@ -1802,18 +1542,18 @@ YY_RULE_SETUP
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 282 "parse.lex"
+#line 279 "toke.l"
 {
                            /* UN*X group */
                            if (!fill(yytext, yyleng))
                                yyterminate();
-                           LEXTRACE("GROUP ");
+                           LEXTRACE("USERGROUP ");
                            return(USERGROUP);
                        }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 290 "parse.lex"
+#line 287 "toke.l"
 {
                            if (!fill(yytext, yyleng))
                                yyterminate();
@@ -1823,7 +1563,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 297 "parse.lex"
+#line 294 "toke.l"
 {
                            if (!fill(yytext, yyleng))
                                yyterminate();
@@ -1833,7 +1573,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 304 "parse.lex"
+#line 301 "toke.l"
 {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
@@ -1842,7 +1582,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 310 "parse.lex"
+#line 307 "toke.l"
 {
                            if (strcmp(yytext, "ALL") == 0) {
                                LEXTRACE("ALL ");
@@ -1857,7 +1597,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 322 "parse.lex"
+#line 319 "toke.l"
 {
                            /* username/uid that user can run command as */
                            if (!fill(yytext, yyleng))
@@ -1868,14 +1608,14 @@ YY_RULE_SETUP
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 330 "parse.lex"
+#line 327 "toke.l"
 {
                            BEGIN INITIAL;
                        }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 334 "parse.lex"
+#line 331 "toke.l"
 {
                            BEGIN GOTCMND;
                            LEXTRACE("COMMAND ");
@@ -1885,7 +1625,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 341 "parse.lex"
+#line 338 "toke.l"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
@@ -1903,7 +1643,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 356 "parse.lex"
+#line 353 "toke.l"
 {
                            /* a word */
                            if (!fill(yytext, yyleng))
@@ -1914,7 +1654,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 364 "parse.lex"
+#line 361 "toke.l"
 {
                            LEXTRACE(", ");
                            return(',');
@@ -1922,7 +1662,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 369 "parse.lex"
+#line 366 "toke.l"
 {
                            LEXTRACE("= ");
                            return('=');
@@ -1930,7 +1670,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 374 "parse.lex"
+#line 371 "toke.l"
 {
                            LEXTRACE(": ");
                            return(':');
@@ -1938,7 +1678,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 379 "parse.lex"
+#line 376 "toke.l"
 {
                            if (yyleng % 2 == 1)
                                return('!');    /* return '!' */
@@ -1946,7 +1686,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 384 "parse.lex"
+#line 381 "toke.l"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1956,14 +1696,14 @@ YY_RULE_SETUP
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 391 "parse.lex"
+#line 388 "toke.l"
 {                      /* throw away space/tabs */
                            sawspace = TRUE;    /* but remember for fill_args */
                        }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 395 "parse.lex"
+#line 392 "toke.l"
 {
                            sawspace = TRUE;    /* remember for fill_args */
                            ++sudolineno;
@@ -1972,7 +1712,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 401 "parse.lex"
+#line 398 "toke.l"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1982,7 +1722,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 408 "parse.lex"
+#line 405 "toke.l"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
@@ -1994,7 +1734,7 @@ case YY_STATE_EOF(GOTDEFS):
 case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
-#line 413 "parse.lex"
+#line 410 "toke.l"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
@@ -2007,10 +1747,10 @@ case YY_STATE_EOF(INDEFS):
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 423 "parse.lex"
+#line 420 "toke.l"
 ECHO;
        YY_BREAK
-#line 2014 "lex.yy.c"
+#line 1754 "toke.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -2301,7 +2041,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 382 )
+                       if ( yy_current_state >= 385 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2336,11 +2076,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 382 )
+               if ( yy_current_state >= 385 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 381);
+       yy_is_jam = (yy_current_state == 384);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2899,7 +2639,7 @@ int main()
        return 0;
        }
 #endif
-#line 423 "parse.lex"
+#line 420 "toke.l"
 
 static int
 fill(s, len)
@@ -2996,9 +2736,10 @@ struct sudoers_state {
 };
 
 #define MAX_SUDOERS_DEPTH      128
+#define SUDOERS_STACK_INCREMENT        16
 
 static int
-buffer_frob(path)
+switch_buffer(path)
     char *path;
 {
     static size_t stacksize, depth;
@@ -3017,8 +2758,10 @@ buffer_frob(path)
                yyerror("too many levels of includes");
                return(FALSE);
            }
-           stacksize += 16;
-           if ((state = realloc(state, sizeof(state) * stacksize)) == NULL) {
+           stacksize += SUDOERS_STACK_INCREMENT;
+           state = (struct sudoers_state *) realloc(state,
+               sizeof(state) * stacksize);
+           if (state == NULL) {
                yyerror("unable to allocate memory");
                return(FALSE);
            }
@@ -3050,14 +2793,3 @@ buffer_frob(path)
     }
     return(TRUE);
 }
-
-int
-yywrap()
-{
-
-    /* Free space used by the aliases unless called by testsudoers. */
-    if (clearaliases)
-       reset_aliases();
-
-    return(TRUE);
-}