]> granicus.if.org Git - sudo/commitdiff
Allow user/group to be double quoted in the case of non-Unix groups
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 17 May 2009 20:22:24 +0000 (20:22 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 17 May 2009 20:22:24 +0000 (20:22 +0000)
which contain spaces.

toke.c
toke.l

diff --git a/toke.c b/toke.c
index c1c86163932381c5db1be1a8b7fa7418dd596b83..c61833ba93e51034ead287e4e82b3efa418ccf06 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -288,70 +288,70 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 49
-#define YY_END_OF_BUFFER 50
-static yyconst short int yy_accept[545] =
+#define YY_NUM_RULES 50
+#define YY_END_OF_BUFFER 51
+static yyconst short int yy_accept[551] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   50,   37,   45,   44,   43,   48,   37,   38,
-       39,   37,   40,   37,   37,   37,   37,   42,   41,   48,
-       33,   33,   33,   33,   33,   33,   48,   37,   37,   45,
-       48,   33,   33,   33,   33,   33,    1,   48,   37,   37,
-       16,   15,   16,   15,   15,   48,   48,   48,    2,    8,
-        7,    8,    3,    8,    4,   48,   12,   12,   12,   10,
-       11,   37,    0,   45,   43,    0,   47,    0,   37,   28,
-        0,   27,    0,   36,   36,    0,   37,   37,    0,   37,
-       37,   37,   37,    0,   31,   33,   33,   33,   33,   33,
-
-       33,   37,   46,   37,   45,    0,    0,    0,    0,    0,
-        0,   37,   37,   37,   37,   37,    1,    0,   34,   34,
-        0,   37,   16,   16,   14,   13,   14,    0,    0,    2,
-        8,    0,    5,    6,    8,    8,   12,    0,   12,   12,
-        0,    9,    0,    0,    0,   37,   37,   37,   37,   37,
-        0,    0,   31,   31,   33,   33,   33,   33,   33,   33,
-       33,   37,    0,    0,    0,    0,    0,    0,   37,   37,
-       37,   37,   37,    0,   37,    9,    0,   37,   37,   37,
-       37,   37,   37,    0,   32,   32,   32,    0,    0,   31,
-       31,   31,   31,   31,   31,   31,   33,   33,   33,   33,
-
-       33,   33,   33,   37,    0,    0,    0,    0,    0,    0,
-       37,   37,   37,   37,   37,   37,   37,    0,    0,   32,
-       32,   32,    0,   31,   31,    0,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,    0,   24,   33,
-       33,   33,   33,   33,   37,    0,    0,    0,    0,   37,
-       37,   37,   37,   37,   37,   37,   37,    0,   32,    0,
-       31,   31,   31,    0,    0,    0,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   33,
-       33,   33,   33,   33,   37,    0,    0,    0,   37,   37,
-       37,   29,   29,   29,    0,    0,   31,   31,   31,   31,
-
-       31,   31,   31,    0,    0,    0,    0,    0,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,    0,   23,   33,   33,    0,   22,    0,   25,
-       37,    0,    0,    0,   37,   37,   37,   37,   29,   29,
-       29,   29,    0,   31,    0,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,    0,    0,    0,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   33,   33,   35,    0,    0,    0,   37,   19,
-       34,   37,   30,   30,   30,   31,    0,    0,    0,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+        0,    0,   51,   38,   46,   45,   44,   38,   49,   38,
+       39,   40,   38,   41,   38,   38,   38,   38,   43,   42,
+       49,   33,   33,   33,   33,   33,   33,   49,   38,   38,
+       46,   49,   33,   33,   33,   33,   33,    1,   49,   38,
+       38,   16,   15,   16,   15,   15,   49,   49,   49,    2,
+        8,    7,    8,    3,    8,    4,   49,   12,   12,   12,
+       10,   11,   38,    0,   46,   44,   38,    0,    0,    0,
+       48,    0,   38,   28,    0,   27,    0,   36,   36,    0,
+       38,   38,    0,   38,   38,   38,   38,    0,   31,   33,
+
+       33,   33,   33,   33,   33,   38,   47,   38,   46,    0,
+        0,    0,    0,    0,    0,   38,   38,   38,   38,   38,
+        1,    0,   34,   34,    0,   38,   16,   16,   14,   13,
+       14,    0,    0,    2,    8,    0,    5,    6,    8,    8,
+       12,    0,   12,   12,    0,    9,   37,   37,    0,    0,
+        0,   38,   38,   38,   38,   38,    0,    0,   31,   31,
+       33,   33,   33,   33,   33,   33,   33,   38,    0,    0,
+        0,    0,    0,    0,   38,   38,   38,   38,   38,    0,
+       38,    9,    0,   38,   38,   38,   38,   38,   38,    0,
+       32,   32,   32,    0,    0,   31,   31,   31,   31,   31,
+
+       31,   31,   33,   33,   33,   33,   33,   33,   33,   38,
+        0,    0,    0,    0,    0,    0,   38,   38,   38,   38,
+       38,   38,   38,    0,    0,   32,   32,   32,    0,   31,
+       31,    0,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,    0,   24,   33,   33,   33,   33,   33,
+       38,    0,    0,    0,    0,   38,   38,   38,   38,   38,
+       38,   38,   38,    0,   32,    0,   31,   31,   31,    0,
+        0,    0,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   33,   33,   33,   33,   33,
+       38,    0,    0,    0,   38,   38,   38,   29,   29,   29,
+
+        0,    0,   31,   31,   31,   31,   31,   31,   31,    0,
+        0,    0,    0,    0,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,    0,   23,
+       33,   33,    0,   22,    0,   25,   38,    0,    0,    0,
+       38,   38,   38,   38,   29,   29,   29,   29,    0,   31,
+        0,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,    0,    0,    0,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   33,   33,
+       35,    0,    0,    0,   38,   19,   34,   38,   30,   30,
+       30,   31,    0,    0,    0,   31,   31,   31,   31,   31,
 
-       31,   31,    0,    0,    0,    0,    0,   31,   31,   31,
-       31,   31,   31,   31,   31,    0,   21,    0,   26,    0,
-       19,    0,    0,   37,    0,   37,   37,   37,   30,   30,
-       30,   30,   30,    0,    0,    0,    0,    0,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,    0,    0,
-        0,   20,   19,    0,   19,    0,   37,   37,   37,   30,
-       30,    0,    0,    0,   31,   31,   31,   31,   31,   31,
+        0,    0,    0,   31,   31,   31,   31,   31,   31,   31,
+       31,    0,   21,    0,   26,    0,   19,    0,    0,   38,
+        0,   38,   38,   38,   30,   30,   30,   30,   30,    0,
+        0,    0,    0,    0,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,    0,    0,    0,   20,   19,    0,
+       19,    0,   38,   38,   38,   30,   30,    0,    0,    0,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   20,    0,   17,    0,   37,   37,   37,   37,
+       31,   31,   31,   31,   31,   31,   31,   31,   20,    0,
 
-       37,    0,    0,    0,    0,    0,   31,   31,   31,   31,
-       31,   31,   31,   31,    0,   37,   37,   37,   31,   31,
-       31,   31,   31,   31,    0,   37,   37,   37,   37,   37,
-       31,   31,   31,   31,   31,    0,   18,   29,   29,   29,
-       29,   29,   29,    0
+       17,    0,   38,   38,   38,   38,   38,    0,    0,    0,
+        0,    0,   31,   31,   31,   31,   31,   31,   31,   31,
+        0,   38,   38,   38,   31,   31,   31,   31,   31,   31,
+        0,   38,   38,   38,   38,   38,   31,   31,   31,   31,
+       31,    0,   18,   29,   29,   29,   29,   29,   29,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -397,533 +397,544 @@ static yyconst int yy_meta[63] =
        12,   12
     } ;
 
-static yyconst short int yy_base[608] =
+static yyconst short int yy_base[616] =
     {   0,
         0,   61,   62,   63,   69,   84,  128,  189,  250,  294,
-       80,  101, 2372, 2325, 2367, 3392, 2360,  337, 2310, 3392,
-     3392, 2307, 3392,  107,  347,  119,  137, 2313, 3392, 3392,
-      399, 2292,  446, 2282, 2289, 2284,  497,  145,   35,  167,
-      521, 2250, 2244, 2234, 2229, 2230, 2261,  193,  256,   55,
-        0, 3392, 2256,    0, 3392,  264,  573,  110,    0, 2214,
-     3392,   73, 3392,   76, 3392,  117, 2213,  105,  106, 3392,
-      142, 2204,  306, 2229, 2224, 2224, 3392,  201,  209, 2181,
-      506, 2180,  543,  276, 2179,  554,  306,  581, 2185, 2185,
-      325,  364,  317, 2172,   55,  618,    0, 2155,  240, 2138,
-
-     2127,  125, 3392,   98,  523, 2074, 2078, 2035, 2030, 2021,
-      146,  115,  219,   29,  212,  149, 2068,  463,  579, 2022,
-      649,  154,    0, 2062,  256, 3392, 3392,  598,  284,    0,
-     2020,  674, 3392, 3392, 2016,  488, 2014, 2051,  271,  307,
-      288, 2046, 2035, 2023,  676,  688,  720,  752,  784, 1989,
-     1978,  821,  268,  859,  896, 1971, 1927, 1942, 1937, 1929,
-     1935,  236, 1885, 1887, 1833, 1833, 1811,  300,  157, 1814,
-      259,   79,  329,  691,  344, 1857, 1840,  701,  348,  935,
-      967,  711,  366, 1818, 1817,  731,  455, 1801, 1800,  487,
-      741,  999,  760,  768, 1037,  803, 1799,  401, 1790, 1767,
-
-     1765, 1751, 1748,  356, 1721, 1683, 1652, 1665, 1652,  369,
-      442,  503,  233,  462, 1076, 1108, 1140, 1686, 1670,  838,
-     1670, 1651, 1650, 1648,  502,  876,  505,  913,  557, 1172,
-        0,  945, 1183,  954,  774, 1221,  977,  526, 3392, 1626,
-     1616, 1622, 1594, 1582,  532, 1576, 1544, 1545,  581,  363,
-       21,  577,  987,  490, 1260, 1292, 1019, 1580, 1545, 1544,
-     1530, 1322,  630, 1056, 1086, 1096,  647,  670,  794, 1116,
-      926, 1361,    0, 1126, 1372, 1148,  884, 1410, 1158,  583,
-     1510, 1517,  640,  657,  618, 1494, 1465,  486,  632,  599,
-      638, 1448, 1479, 1510, 1480, 1430, 1428, 1200, 1542, 1238,
-
-     1208, 1579, 1270, 1278, 1437, 1302, 1312, 1341,  674,  711,
-      987, 1010, 1389, 1067, 1618,    0, 1429, 1629, 1456, 1246,
-     1667, 1466,  688, 3392, 1406, 1394,  689, 3392,  743, 3392,
-      766, 1380, 1337,  605, 1017,  514,  785, 1489,  501, 1705,
-     1736, 1498, 1373, 1325, 1519,  954, 1528,  968, 1768,    0,
-      603, 1779, 1559, 1347, 1816, 1598, 1648, 1686, 1715, 1096,
-     1158, 1677, 1725, 1725, 1746, 1855,    0, 1748, 1866, 1757,
-     1397, 1798,  861,  862, 1259, 1249, 1242, 1453,  820, 1895,
-     1203, 1927, 1959, 1991, 2023, 1223, 1835, 1886, 1909, 1222,
-     1261, 1293, 1935, 1467, 2055,    0,  673, 2066, 1943, 1567,
-
-     2103, 1969, 1977, 1196, 2001, 2011, 2033, 1312, 1332, 1877,
-      814,  833, 2142,    0,  898, 1039, 3392, 1099, 3392, 1137,
-     2031, 1909, 1345,  877, 1110, 1106, 2083, 1138, 2152, 2184,
-     2216, 2248, 2046, 2120, 1069, 2162, 2172, 2194, 1056, 1002,
-     1543, 1599, 2200, 1649, 2280,    0,  916, 2291, 2224, 1917,
-     2328, 2234, 2257, 2266, 2309, 1789,  964, 1028,  907,  939,
-      314,  878,  839, 2359,  821, 2384, 2397, 2429, 2461, 2381,
-     2317, 2411, 2439, 2449,  786,  775, 1836, 1896, 2469, 1960,
-     2493,    0, 1022, 2504, 2477, 2091, 2523,  781, 2542, 2551,
-     2420,  729, 3392,  711, 3392, 1146, 2559, 1476, 2591, 2623,
-
-     2570, 2576,  638, 2602, 2612, 2633,  599,  582, 1992,  559,
-      556, 2641,    0, 1186, 2351, 2655, 2687, 2719, 2663, 2671,
-     2695,  468,    0,  391,  310, 2703, 1478, 2751, 2783, 2733,
-     3392, 2739, 2763, 2128, 3392,  193, 3392, 2771, 2791, 2801,
-      126, 2821, 2813, 3392, 2866, 2879, 2892, 2905, 2918, 2931,
-     2944, 2957, 2970, 2975, 2988, 3001, 3003, 3016, 3029, 3042,
-     3055, 3068, 3081, 3086, 3092, 3105, 3118, 3123, 3129, 3134,
-     3139, 3144, 3150, 3155, 3160, 3165, 3171, 3178, 3183, 3188,
-     3193, 3199, 3206, 3211, 3216, 3222, 3229, 3234, 3241, 3247,
-     3254, 3259, 3266, 3272, 3279, 3292, 3305, 3310, 3317, 3323,
-
-     3336, 3341, 3348, 3353, 3360, 3365, 3378
+       80,  101, 2330, 2282, 2324, 3469, 2321,  338,  381, 2253,
+     3469, 3469, 2250, 3469,  107,  391,  119,  137, 2270, 3469,
+     3469,  443, 2249,  490, 2248, 2238, 2231,  541,  145,   35,
+      167,  565, 2206, 2210, 2202, 2197, 2184, 2232,  193,  256,
+       55,    0, 3469, 2227,    0, 3469,  264,  617,  110,    0,
+     2177, 3469,   73, 3469,   76, 3469,  117, 2167,  105,  106,
+     3469,  142, 2157,  306, 2163, 2160,  639, 2123, 2122, 2113,
+     3469,  201,  209, 2060,  347, 2057,  550,  276, 2056,  587,
+      410,  669, 2076, 2082,  306,  358,  317, 2070,   55,  706,
+
+        0, 2061,  240, 2050, 2047,  125, 3469,   98,  355, 2030,
+     2034, 2026, 2011, 2010,  146,  115,  219,   29,  212,  149,
+     2067,  507,  361, 2016,  598,  154,    0, 2034,  256, 3469,
+     3469,  636,  284,    0, 1991,  567, 3469, 3469, 1964,  389,
+     1961, 1999,  271,  300,  288, 1975, 1905, 3469, 1946, 1945,
+      603,  745,  777,  809,  841, 1933, 1895,  878,  268,  916,
+      953, 1888, 1872, 1872, 1867, 1859, 1850,  236, 1824, 1828,
+     1819, 1806, 1811,  317,  157, 1804,  307,   79,  258,  669,
+      296, 1838, 1834,  686,  402,  992, 1024,  725,  337, 1782,
+     1746,  755,  499, 1744, 1707,  343,  764, 1056,  785,  515,
+
+     1094,  795, 1706,  393, 1694, 1686, 1684, 1670, 1647,  373,
+     1631, 1632, 1602, 1615, 1602,  543,  400,  556,  233,  506,
+     1133, 1165, 1197, 1621, 1620,  817, 1620, 1618, 1602, 1601,
+      540,  826,  546,  858,  602, 1229,    0,  897, 1240,  933,
+      694, 1278,  972,  601, 3469, 1584, 1572, 1548, 1548, 1536,
+      616, 1531, 1487, 1488,  387,  407,   21,  617, 1003,  423,
+     1317, 1349, 1013, 1523, 1522, 1521, 1469, 1379,  645, 1043,
+     1075, 1113,  653,  658,  736, 1033,  963, 1418,    0, 1143,
+     1429, 1152,  866, 1467, 1175,  672, 1449, 1440,  728,  745,
+      625, 1446, 1401,  310,  576,  687,  695, 1505, 1536, 1567,
+
+     1431, 1430, 1382, 1183, 1599, 1205,  941, 1636, 1215, 1257,
+     1390, 1297, 1327, 1337,  795,  841,  983, 1124, 1357, 1308,
+     1675,    0, 1367, 1686, 1396, 1265, 1724, 1448,  917, 3469,
+     1359, 1347,  918, 3469,  994, 3469,  805, 1309, 1300,  591,
+     1036,  503,  806, 1484,  631, 1762, 1793, 1515, 1336, 1335,
+     1521, 1152, 1545, 1166, 1825,    0,  627, 1836, 1553, 1404,
+     1873, 1577, 1587, 1618, 1655, 1104, 1215, 1697, 1705, 1741,
+     1708, 1912,    0, 1772, 1923, 1781, 1492, 1803, 1015, 1097,
+     1279, 1267, 1245,  818,  633, 1724, 1259, 1962, 1994, 2026,
+     2058, 1243, 1813, 1855, 1892, 1242, 1328, 1449, 1940, 1578,
+
+     2090,    0,  766, 2101, 1970, 1948, 2138, 1980, 2002, 1251,
+     2012, 2036, 2046, 1288, 1609, 2068,  838,  889, 2177,    0,
+      900, 1470, 3469, 1725, 3469, 1194, 2064, 1390,  629,  569,
+     1167, 1162, 2118,  563, 2187, 2219, 2251, 2283, 2081, 2155,
+     1151, 2197, 2207, 2229, 1116, 1113, 1656, 1781, 2235, 1804,
+     2315,    0,  957, 2326, 2259, 2126, 2363, 2269, 2292, 2301,
+     2344, 1846, 1105, 1021, 1042, 1025,  940,  971,  879, 2394,
+      860, 2419, 2432, 2464, 2496, 2416, 1749, 2446, 2474, 2484,
+      800,  768, 1893, 1981, 2504, 2013, 2528,    0, 1045, 2539,
+     2512, 2163, 2558,  718, 2577, 2586, 2455,  680, 3469,  594,
+
+     3469, 1080, 2594, 1163, 2626, 2658, 2605, 2611,  576, 2637,
+     2647, 2668,  547,  445, 2027,  437,  411, 2676,    0, 1078,
+     2386, 2690, 2722, 2754, 2698, 2706, 2730,  364,    0,  334,
+      308, 2738, 1195, 2786, 2818, 2768, 3469, 2774, 2798, 2806,
+     3469,  193, 3469, 2826, 2834, 2864,  126, 2872, 2856, 3469,
+     2917, 2930, 2943, 2956, 2969, 2982, 2995, 3008, 3021, 3034,
+     3039, 3052, 3065, 3067, 3080, 3093, 3106, 3119, 3132, 3145,
+     3158, 3163, 3169, 3182, 3195, 3200, 3206, 3211, 3216, 3221,
+     3227, 3232, 3237, 3242, 3248, 3255, 3260, 3265, 3270, 3276,
+     3283, 3288, 3293, 3299, 3306, 3311, 3318, 3324, 3331, 3336,
+
+     3343, 3349, 3356, 3369, 3382, 3387, 3394, 3400, 3413, 3418,
+     3425, 3430, 3437, 3442, 3455
     } ;
 
-static yyconst short int yy_def[608] =
+static yyconst short int yy_def[616] =
     {   0,
-      544,    1,    1,    1,  545,  545,  546,  546,  547,  547,
-      548,  548,  544,  549,  544,  544,  544,  550,  551,  544,
-      544,  552,  544,  553,  549,   25,   25,  554,  544,  544,
-      544,   31,   31,   33,   33,   33,  549,   25,  549,  544,
-      550,   31,   31,   33,   33,   33,  544,  544,  555,  549,
-      556,  544,  556,  556,  544,  544,  550,  544,  557,  558,
-      544,  558,  544,  558,  544,  559,  560,  560,  560,  544,
-      544,  549,  549,  544,  544,  561,  544,  562,  544,  551,
-      551,  552,  552,  553,  563,  549,  549,   25,  554,   88,
-       88,   88,   88,  564,  565,   31,   33,   33,   33,   33,
-
-       33,  549,  544,  549,  544,  544,  544,  544,  544,  544,
-      561,  549,   88,  549,  549,  549,  544,  544,  555,  566,
-      549,  549,  556,  556,  544,  544,  544,  562,  544,  557,
-      558,  558,  544,  544,  558,  558,  560,  544,  560,  560,
-      544,  544,  561,  567,  544,  549,  549,  549,   88,  149,
-      568,  544,  569,  544,   31,   33,   33,   33,   33,   33,
-       33,  549,  544,  544,  544,  544,  544,  561,  549,  149,
-      549,  549,  549,  544,  549,  544,  567,  549,  549,  549,
-      549,  549,  549,  570,  571,  571,  186,  572,  571,  573,
-      154,  544,  192,  192,  544,  192,   33,   33,   33,   33,
-
-       33,   33,   33,  549,  544,  544,  544,  544,  544,  561,
-      549,  549,  549,  549,  549,  549,  549,  544,  574,  574,
-      220,  574,  575,  576,  577,  544,  578,  195,  578,  578,
-      230,  578,  544,  233,  233,  544,  233,  544,  544,   33,
-       33,   33,   33,   33,  549,  544,  544,  544,  561,  549,
-      549,  549,  549,  549,  549,  549,  549,  579,  579,  580,
-      581,  544,  544,  544,  544,  544,  582,  582,  583,  236,
-      583,  583,  272,  583,  544,  275,  275,  544,  275,   33,
-       33,   33,   33,   33,  549,  544,  544,  561,  549,  549,
-      549,  549,  549,  549,  544,  584,  585,  262,  544,  299,
-
-      299,  544,  299,  544,  544,  544,  544,  544,  544,  586,
-      586,  587,  278,  587,  587,  315,  587,  544,  318,  318,
-      544,  318,  544,  544,   33,   33,  544,  544,  544,  544,
-      549,  544,  544,  561,  549,  549,  549,  549,  549,  549,
-      549,  549,  544,  588,  544,  589,  302,  589,  589,  349,
-      349,  544,  352,  352,  544,  352,  544,  544,  544,  544,
-      590,  590,  591,  321,  591,  591,  366,  591,  544,  369,
-      369,  369,   33,   33,  549,  544,  544,  561,  549,  549,
-      549,  549,  549,  549,  549,  544,  544,  544,  544,  592,
-      592,  593,  355,  593,  593,  395,  395,  544,  398,  398,
-
-      544,  398,  544,  544,  544,  544,  544,  544,  594,  594,
-      595,  595,  595,  413,  413,  544,  544,  544,  544,  544,
-      544,  561,  561,  549,  596,  597,  549,  549,  549,  549,
-      549,  549,  549,  544,  544,  544,  544,  544,  544,  598,
-      598,  599,  401,  599,  599,  445,  445,  544,  448,  448,
-      544,  448,  544,  544,  544,  544,  600,  600,  544,  601,
-      561,  549,  596,  596,  597,  597,  549,  549,  549,  549,
-      549,  544,  544,  544,  544,  602,  602,  603,  451,  603,
-      603,  481,  481,  544,  484,  484,  484,  544,  544,  544,
-      544,  544,  544,  601,  544,  561,  549,  549,  549,  549,
-
-      549,  544,  544,  544,  544,  544,  544,  604,  604,  605,
-      605,  605,  512,  512,  561,  549,  549,  549,  544,  544,
-      544,  544,  606,  606,  607,  549,  549,  549,  549,  549,
-      544,  544,  544,  544,  544,  607,  544,  549,  549,  549,
-      549,  549,  549,    0,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-
-      544,  544,  544,  544,  544,  544,  544
+      550,    1,    1,    1,  551,  551,  552,  552,  553,  553,
+      554,  554,  550,  555,  550,  550,  550,  556,  557,  558,
+      550,  550,  559,  550,  560,  555,   26,   26,  561,  550,
+      550,  550,   32,   32,   34,   34,   34,  555,   26,  555,
+      550,  557,   32,   32,   34,   34,   34,  550,  550,  562,
+      555,  563,  550,  563,  563,  550,  550,  557,  550,  564,
+      565,  550,  565,  550,  565,  550,  566,  567,  567,  567,
+      550,  550,  555,  555,  550,  550,  556,  568,  556,  569,
+      550,  570,  550,  558,  558,  559,  559,  560,  571,  555,
+      555,   26,  561,   92,   92,   92,   92,  572,  573,   32,
+
+       34,   34,   34,   34,   34,  555,  550,  555,  550,  550,
+      550,  550,  550,  550,  569,  555,   92,  555,  555,  555,
+      550,  550,  562,  574,  555,  555,  563,  563,  550,  550,
+      550,  570,  550,  564,  565,  565,  550,  550,  565,  565,
+      567,  550,  567,  567,  550,  550,  555,  550,  569,  575,
+      550,  555,  555,  555,   92,  155,  576,  550,  577,  550,
+       32,   34,   34,   34,   34,   34,   34,  555,  550,  550,
+      550,  550,  550,  569,  555,  155,  555,  555,  555,  550,
+      555,  550,  575,  555,  555,  555,  555,  555,  555,  578,
+      579,  579,  192,  580,  579,  581,  160,  550,  198,  198,
+
+      550,  198,   34,   34,   34,   34,   34,   34,   34,  555,
+      550,  550,  550,  550,  550,  569,  555,  555,  555,  555,
+      555,  555,  555,  550,  582,  582,  226,  582,  583,  584,
+      585,  550,  586,  201,  586,  586,  236,  586,  550,  239,
+      239,  550,  239,  550,  550,   34,   34,   34,   34,   34,
+      555,  550,  550,  550,  569,  555,  555,  555,  555,  555,
+      555,  555,  555,  587,  587,  588,  589,  550,  550,  550,
+      550,  550,  590,  590,  591,  242,  591,  591,  278,  591,
+      550,  281,  281,  550,  281,   34,   34,   34,   34,   34,
+      555,  550,  550,  569,  555,  555,  555,  555,  555,  555,
+
+      550,  592,  593,  268,  550,  305,  305,  550,  305,  550,
+      550,  550,  550,  550,  550,  594,  594,  595,  284,  595,
+      595,  321,  595,  550,  324,  324,  550,  324,  550,  550,
+       34,   34,  550,  550,  550,  550,  555,  550,  550,  569,
+      555,  555,  555,  555,  555,  555,  555,  555,  550,  596,
+      550,  597,  308,  597,  597,  355,  355,  550,  358,  358,
+      550,  358,  550,  550,  550,  550,  598,  598,  599,  327,
+      599,  599,  372,  599,  550,  375,  375,  375,   34,   34,
+      555,  550,  550,  569,  555,  555,  555,  555,  555,  555,
+      555,  550,  550,  550,  550,  600,  600,  601,  361,  601,
+
+      601,  401,  401,  550,  404,  404,  550,  404,  550,  550,
+      550,  550,  550,  550,  602,  602,  603,  603,  603,  419,
+      419,  550,  550,  550,  550,  550,  550,  569,  569,  555,
+      604,  605,  555,  555,  555,  555,  555,  555,  555,  550,
+      550,  550,  550,  550,  550,  606,  606,  607,  407,  607,
+      607,  451,  451,  550,  454,  454,  550,  454,  550,  550,
+      550,  550,  608,  608,  550,  609,  569,  555,  604,  604,
+      605,  605,  555,  555,  555,  555,  555,  550,  550,  550,
+      550,  610,  610,  611,  457,  611,  611,  487,  487,  550,
+      490,  490,  490,  550,  550,  550,  550,  550,  550,  609,
+
+      550,  569,  555,  555,  555,  555,  555,  550,  550,  550,
+      550,  550,  550,  612,  612,  613,  613,  613,  518,  518,
+      569,  555,  555,  555,  550,  550,  550,  550,  614,  614,
+      615,  555,  555,  555,  555,  555,  550,  550,  550,  550,
+      550,  615,  550,  555,  555,  555,  555,  555,  555,    0,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550
     } ;
 
-static yyconst short int yy_nxt[3455] =
+static yyconst short int yy_nxt[3532] =
     {   0,
-       14,   15,   16,   17,   14,   18,   19,   20,   21,   14,
-       22,   23,   14,   14,   24,   25,   26,   27,   25,   25,
-       25,   25,   25,   28,   29,   30,   14,   31,   31,   31,
-       31,   32,   33,   33,   34,   33,   35,   33,   36,   33,
-       33,   33,   33,   33,   37,   14,   38,   38,   38,   38,
-       38,   38,   14,   14,   14,   14,   14,   14,   14,   39,
-       14,   14,   40,   47,   47,   73,   41,   48,   48,  152,
-       15,   52,   53,   73,   54,  290,   49,   49,  154,   73,
-       55,   68,   16,   69,   70,   15,   52,   53,  171,   54,
-       42,   43,   55,   54,   44,   55,  104,  133,   45,   73,
-
-      134,   46,   68,   16,   69,   70,  139,   55,   54,  140,
-       85,  129,  103,   56,   85,   85,  122,  132,  136,  103,
-      132,   50,   50,   73,   71,  213,  129,  103,   56,   15,
-       16,   17,   85,   57,   91,   91,   91,   91,   91,   91,
-       91,   91,   73,  141,  142,   71,  137,  162,   77,  138,
-      138,   86,   92,   92,   92,   92,   92,   93,   72,   73,
-       90,   90,   90,   90,   90,   90,   90,   90,  105,   73,
-       73,  169,   58,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       15,   16,   17,   73,   57,  537,  106,  107,   73,  173,
-
-      108,   73,  168,  175,  109,  118,  211,  110,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   72,   58,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   15,   16,   17,   61,   57,   73,  129,  103,  120,
-       62,   63,   64,  120,  120,  125,  103,  126,  172,  127,
-      170,  157,  139,  126,   65,  127,  158,   73,  159,   85,
-       73,  120,  152,   85,   85,  129,  103,  127,  127,  141,
-      142,  191,  211,  204,   66,   15,   16,   17,   61,   57,
-
-      121,   85,   77,   73,   62,   63,   64,   72,  127,   72,
-      140,   72,  537,   72,   72,  138,   77,   72,   65,  211,
-       86,  146,  147,  148,  146,  146,  146,  146,  146,   72,
-       72,   72,  150,  150,  150,  150,  150,  150,   66,   77,
-      150,  150,  150,  150,  150,  150,  150,  150,  210,   78,
-       73,  138,   79,   79,   79,   79,   79,   79,   79,   79,
-       87,  178,   88,   88,   88,   88,   88,   88,   88,   88,
-       89,   77,  496,   73,   90,   90,   90,   90,   90,  150,
-      150,  150,  150,  150,  150,  150,  150,  211,   73,   89,
-      289,   73,   73,   90,   90,   90,   90,   90,   90,   72,
-
-       73,  214,  238,   72,  345,   72,  245,   73,   72,   72,
-       73,   72,   72,   72,   96,   96,   96,   96,   96,   96,
-       96,   96,   89,  249,  239,   72,   96,   96,   96,   96,
-       96,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   73,   97,   90,   90,   90,   90,   90,
-       90,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   97,   97,   97,   97,   97,   97,   97,   97,  544,
-      222,  222,  222,   97,   97,   97,   97,   97,   79,   79,
-       79,   79,   79,   79,   79,   79,   73,  250,   77,  129,
-      103,  479,   72,   72,   72,   72,   72,   72,  102,  103,
-
-       72,  152,   72,  253,   72,   72,   73,   80,   72,   80,
-      191,   80,  252,   80,   80,  338,  152,   80,  226,  152,
-       72,   72,   72,   77,  105,  191,   89,  238,  228,   80,
-       80,   80,  132,   78,   73,  334,   79,   79,   79,   79,
-       79,   79,   79,   79,   82,   73,   82,   73,   82,  239,
-       82,   82,  106,  107,   82,   84,  108,   72,   73,   84,
-      109,   72,   72,  110,  251,   84,   82,   82,   82,  544,
-      544,  152,  345,  380,  111,   77,   73,   84,   84,   72,
-      228,  285,  120,   77,  323,  128,  120,  120,  544,  544,
-      544,  544,  544,  544,  544,  544,  149,  149,  149,  149,
-
-      149,  149,  149,  149,  120,  479,  324,   77,  149,  149,
-      149,  149,  149,  544,  544,  544,  544,  544,  544,  544,
-      544,   73,  443,  121,  390,  390,  291,  149,  149,  149,
-      149,  149,  149,  155,  155,  155,  155,  155,  155,  155,
-      155,  327,  288,   73,  152,  155,  155,  155,  155,  155,
-      119,  502,   72,  191,  119,  378,   72,   72,  329,  336,
-      119,  152,   73,  328,  149,  149,  149,  149,  149,  149,
-      228,  331,  119,  119,   72,  131,   73,   85,  131,  131,
-      330,   85,   73,  226,  152,  131,  335,   85,  152,  323,
-      327,  337,  120,  228,  440,  440,  120,  228,  131,   85,
-
-       85,  178,  120,  179,  179,  179,  179,  179,  179,  179,
-      179,  324,  328,  495,  120,  120,  215,  216,  217,  215,
-      215,  215,  215,  215,  178,  152,  179,  179,  179,  179,
-      179,  179,   73,  178,  270,  180,  180,  180,  180,  180,
-      180,  180,  180,  152,  329,   73,  220,  220,  221,  222,
-      222,  222,  222,  222,  188,   73,  196,  196,  196,  196,
-      196,  196,  196,  196,   73,  178,  330,  181,  181,  181,
-      181,  181,  182,  179,  179,  230,  230,  230,  230,  230,
-      230,  230,  230,  231,  231,  231,  231,  231,  232,  273,
-      273,  273,  273,  273,  274,  152,   73,   72,  443,  183,
-
-      183,  183,  183,  183,  183,  183,  183,  226,  152,  393,
-       73,  183,  183,  183,  183,  183,  544,  270,  229,  229,
-      229,  229,  229,  229,  229,  229,  375,  226,  152,   73,
-      183,  183,  183,  183,  183,  183,  185,  186,  187,  187,
-      187,  187,  187,  187,  188,  381,  544,  152,  189,  189,
-      189,  189,  189,  259,  259,  259,  259,  259,  259,  259,
-      259,  188,  416,  418,   73,  466,  424,  189,  189,  189,
-      189,  189,  189,  152,  192,  193,  194,  192,  192,  192,
-      192,  192,  195,  464,  417,  419,  196,  196,  196,  196,
-      196,  264,  265,  266,  264,  264,  264,  264,  264,  316,
-
-      316,  316,  316,  316,  317,  196,  196,  196,  196,  196,
-      196,  197,  197,  197,  197,  197,  197,  197,  197,  457,
-      457,   73,   73,  197,  197,  197,  197,  197,  237,  237,
-      237,  237,  237,  237,  237,  237,  462,  476,  476,  544,
-      152,  495,  183,  183,  183,  183,  183,  183,  178,  270,
-      179,  179,  179,  179,  179,  179,  179,  179,  226,  152,
-      268,  268,  268,  268,  268,  268,  493,  345,  228,  272,
-      272,  272,  272,  272,  272,  272,  272,  347,  152,   73,
-      178,  544,  179,  179,  179,  179,  179,  179,  179,  179,
-      544,  347,  271,  271,  271,  271,  271,  271,  271,  271,
-
-      226,  152,  292,  293,  294,  292,  292,  292,  292,  292,
-      270,   73,  226,  152,  227,  227,  227,  227,  227,  227,
-      227,  227,  228,  226,  152,  393,  229,  229,  229,  229,
-      229,   73,  253,  313,  254,  254,  254,  254,  254,  254,
-      416,  226,  152,  508,  508,  229,  229,  229,  229,  229,
-      229,  152,  233,  234,  235,  233,  233,  233,  233,  233,
-      236,   73,  417,   73,  237,  237,  237,  237,  237,  304,
-      379,  305,  305,  305,  305,  305,  305,  305,  305,  347,
-      544,  152,  434,  237,  237,  237,  237,  237,  237,  253,
-      313,  254,  254,  254,  254,  254,  254,  254,  254,  304,
-
-      418,  306,  306,  306,  306,  306,  306,  306,  306,  304,
-      152,  307,  307,  307,  307,  307,  308,  305,  305,  270,
-       73,  253,  419,  255,  255,  255,  255,  255,  255,  255,
-      255,  279,  279,  279,  279,  279,  279,  279,  279,  226,
-      152,  311,  311,  311,  311,  311,  311,  515,   77,  270,
-      466,  427,   73,  253,  464,  256,  256,  256,  256,  256,
-      257,  254,  254,  315,  315,  315,  315,  315,  315,  315,
-      315,  544,  152,  314,  314,  314,  314,  314,  314,  314,
-      314,  313,   73,  459,   73,  226,  152,  268,  268,  268,
-      268,  268,  268,  268,  268,  228,  226,  152,  269,  269,
-
-      269,  269,  269,  269,  269,  269,  270,  523,  523,  403,
-      271,  271,  271,  271,  271,  303,  303,  303,  303,  303,
-      303,  303,  303,  350,  350,  350,  350,  350,  351,  271,
-      271,  271,  271,  271,  271,  152,  275,  276,  277,  275,
-      275,  275,  275,  275,  278,  347,  298,   73,  279,  279,
-      279,  279,  279,  349,  349,  349,  349,  349,  349,  349,
-      349,  367,  367,  367,  367,  367,  368,  279,  279,  279,
-      279,  279,  279,  253,  345,  254,  254,  254,  254,  254,
-      254,  254,  254,  544,  347,  348,  348,  348,  348,  348,
-      348,  348,  348,  357,  358,  359,  357,  357,  357,  357,
-
-      357,  421,  420,   73,   73,  253,  345,  254,  254,  254,
-      254,  254,  254,  254,  254,  304,  393,  305,  305,  305,
-      305,  305,  305,  305,  305,  304,  152,  305,  305,  305,
-      305,  305,  305,  305,  305,  313,   73,  299,  300,  301,
-      299,  299,  299,  299,  299,  302,  152,   77,  298,  303,
-      303,  303,  303,  303,  304,  364,  305,  305,  305,  305,
-      305,  305,  396,  396,  396,  396,  396,  397,  303,  303,
-      303,  303,  303,  303,  226,  152,  311,  311,  311,  311,
-      311,  311,  311,  311,  270,  226,  152,  312,  312,  312,
-      312,  312,  312,  312,  312,  313,  224,  377,  461,  314,
-
-      314,  314,  314,  314,  322,  322,  322,  322,  322,  322,
-      322,  322,  414,  414,  414,  414,  414,  415,  314,  314,
-      314,  314,  314,  314,  152,  318,  319,  320,  318,  318,
-      318,  318,  318,  321,  376,  374,  373,  322,  322,  322,
-      322,  322,  226,  152,  362,  362,  362,  362,  362,  362,
-      304,  298,  313,  224,  422,   77,  322,  322,  322,  322,
-      322,  322,  338,  339,  339,  339,  339,  339,  339,  339,
-      339,  366,  366,  366,  366,  366,  366,  366,  366,  544,
-      544,  365,  365,  365,  365,  365,  365,  365,  365,  497,
-      393,  526,   73,  338,  340,  340,  340,  340,  340,  340,
-
-      340,  340,  423,  188,  382,  383,  384,  385,  382,  382,
-      382,  382,  338,  339,  339,  339,  339,  339,  339,  333,
-       73,  332,   73,   73,  338,  341,  341,  341,  341,  341,
-      342,  339,  339,   73,  387,  388,  389,  387,  387,  387,
-      387,  387,   73,  356,  356,  356,  356,  356,  356,  356,
-      356,  326,  325,  298,   73,  345,  345,  346,  346,  346,
-      346,  346,  346,  346,  346,  347,  393,  224,  188,  348,
-      348,  348,  348,  348,  395,  395,  395,  395,  395,  395,
-      395,  395,  446,  446,  446,  446,  446,  447,  348,  348,
-      348,  348,  348,  348,  352,  353,  354,  352,  352,  352,
-
-      352,  352,  355,  188,  246,  287,  356,  356,  356,  356,
-      356,  544,  345,  394,  394,  394,  394,  394,  394,  394,
-      394,  286,  443,  284,  283,  356,  356,  356,  356,  356,
-      356,  226,  152,  362,  362,  362,  362,  362,  362,  362,
-      362,  313,  226,  152,  363,  363,  363,  363,  363,  363,
-      363,  363,  364,  282,  281,  280,  365,  365,  365,  365,
-      365,  403,  544,  404,  404,  404,  404,  404,  404,  404,
-      404,  262,  443,  224,  188,  365,  365,  365,  365,  365,
-      365,  152,  369,  370,  371,  369,  369,  369,  369,  369,
-      226,  152,  258,  188,  372,  372,  372,  372,  372,  403,
-
-      313,  405,  405,  405,  405,  405,  405,  405,  405,   95,
-      246,  248,  246,  372,  372,  372,  372,  372,  372,  338,
-      339,  339,  339,  339,  339,  339,  339,  339,  403,  247,
-      406,  406,  406,  406,  406,  407,  404,  404,  226,  152,
-      372,  372,  372,  372,  372,  372,  372,  372,  364,   73,
-      338,  339,  339,  339,  339,  339,  339,  339,  339,  544,
-      152,  226,  152,  410,  410,  410,  410,  410,  410,  364,
-      246,  364,  413,  413,  413,  413,  413,  413,  413,  413,
-       73,  345,  244,  391,  391,  391,  391,  391,  391,  391,
-      391,  347,  345,  243,  392,  392,  392,  392,  392,  392,
-
-      392,  392,  393,  152,  242,  241,  394,  394,  394,  394,
-      394,  544,  364,  412,  412,  412,  412,  412,  412,  412,
-      412,  240,   89,  188,  224,  394,  394,  394,  394,  394,
-      394,  398,  399,  400,  398,  398,  398,  398,  398,  401,
-      188,   95,   77,  402,  402,  402,  402,  402,  434,  345,
-      435,  435,  435,  435,  435,  435,  435,  435,  176,  443,
-      212,  209,  402,  402,  402,  402,  402,  402,  226,  152,
-      410,  410,  410,  410,  410,  410,  410,  410,  364,  226,
-      152,  411,  411,  411,  411,  411,  411,  411,  411,  208,
-      226,  152,  207,  412,  412,  412,  412,  412,  425,  434,
-
-      364,  436,  436,  436,  436,  436,  436,  436,  436,  345,
-      422,   77,  412,  412,  412,  412,  412,  412,  425,  479,
-      425,  426,  434,  460,  437,  437,  437,  437,  437,  438,
-      435,  435,  482,  482,  482,  482,  482,  483,  206,   73,
-      427,  205,  428,  428,  428,  428,  428,  428,  428,  428,
-      402,  402,  402,  402,  402,  402,  402,  402,  445,  445,
-      445,  445,  445,  445,  445,  445,  203,  202,  201,  200,
-      199,   73,  427,  544,  429,  429,  429,  429,  429,  429,
-      429,  429,  544,  479,  444,  444,  444,  444,  444,  444,
-      444,  444,  453,  454,  455,  453,  453,  453,  453,  453,
-
-      198,   95,   87,   73,  427,  345,  430,  430,  430,  430,
-      430,  431,  432,  432,  403,  479,  404,  404,  404,  404,
-      404,  404,  404,  404,  403,   77,  404,  404,  404,  404,
-      404,  404,  404,  404,  425,   73,  427,   77,  433,  433,
-      433,  428,  428,  428,  428,  428,  403,  176,  404,  404,
-      404,  404,  404,  404,  425,  137,  425,  425,  138,  427,
-      132,  471,  471,  471,  132,  124,  174,   73,  345,  117,
-      441,  441,  441,  441,  441,  441,  441,  441,  393,  345,
-      167,  442,  442,  442,  442,  442,  442,  442,  442,  443,
-       73,  166,  165,  444,  444,  444,  444,  444,  467,  468,
-
-      469,  467,  467,  467,  467,  467,  513,  513,  513,  513,
-      513,  514,  444,  444,  444,  444,  444,  444,  448,  449,
-      450,  448,  448,  448,  448,  448,  451,   73,  164,  163,
-      452,  452,  452,  452,  452,  472,  473,  474,  472,  472,
-      472,  472,  472,  531,  531,  531,  531,  531,  531,  452,
-      452,  452,  452,  452,  452,  226,  152,  458,  458,  458,
-      458,  458,  458,  458,  458,  427,  161,  432,  432,  432,
-      432,  432,  432,  432,  432,  434,  160,  435,  435,  435,
-      435,  435,  435,  435,  435,  434,  156,  435,  435,  435,
-      435,  435,  435,  435,  435,   95,   73,  427,   72,  432,
-
-      432,  432,  432,  432,  432,  432,  432,  434,   95,  435,
-      435,  435,  435,  435,  435,  452,  452,  452,  452,  452,
-      452,  452,  452,  145,   83,   81,   77,   75,   73,  427,
-       74,  432,  432,  432,  432,  432,  432,  470,  470,  481,
-      481,  481,  481,  481,  481,  481,  481,  544,   73,  480,
-      480,  480,  480,  480,  480,  480,  480,  138,  132,  124,
-       73,  427,  117,  470,  470,  470,  470,  470,  470,  470,
-      470,  152,  488,  488,  488,  488,  488,  488,  488,  488,
-      152,  489,  489,  489,  489,  489,  489,  489,  489,  116,
-      115,  114,   73,  345,  113,  477,  477,  477,  477,  477,
-
-      477,  477,  477,  443,  345,  112,  478,  478,  478,  478,
-      478,  478,  478,  478,  479,  101,  100,   99,  480,  480,
-      480,  480,  480,  152,  490,  490,  490,  490,  490,  491,
-      488,  488,  471,  471,  471,   98,   95,  480,  480,  480,
-      480,  480,  480,  484,  485,  486,  484,  484,  484,  484,
-      484,   83,  515,   77,   81,  487,  487,  487,  487,  487,
-      463,   73,  463,   75,  463,  525,  463,  463,   74,   73,
-      463,  544,  544,  544,  487,  487,  487,  487,  487,  487,
-      544,  544,  463,  463,  463,  465,  544,  465,  544,  465,
-      544,  465,  465,  544,  544,  465,  470,  470,  470,  470,
-
-      470,  470,  470,  470,  544,  544,  544,  465,  465,  465,
-      497,  544,  498,  498,  498,  498,  498,  498,  498,  498,
-      544,  544,  544,  544,  502,   73,  503,  503,  503,  503,
-      503,  503,  503,  503,  152,  488,  488,  488,  488,  488,
-      488,   73,  497,  544,  499,  499,  499,  499,  499,  499,
-      499,  499,  502,  544,  504,  504,  504,  504,  504,  504,
-      504,  504,  502,  544,  505,  505,  505,  505,  505,  506,
-      503,  503,  544,   73,  497,  544,  500,  500,  500,  500,
-      500,  501,  498,  498,  487,  487,  487,  487,  487,  487,
-      487,  487,  512,  512,  512,  512,  512,  512,  512,  512,
-
-      544,  544,  544,  544,  544,   73,  345,  544,  509,  509,
-      509,  509,  509,  509,  509,  509,  479,  345,  544,  510,
-      510,  510,  510,  510,  510,  510,  510,  544,  544,  544,
-      544,  511,  511,  511,  511,  511,  544,  544,  511,  511,
-      511,  511,  511,  511,  511,  511,  544,  544,  544,  544,
-      511,  511,  511,  511,  511,  511,  152,  488,  488,  488,
-      488,  488,  488,  488,  488,  152,  488,  488,  488,  488,
-      488,  488,  488,  488,  516,  517,  518,  516,  516,  516,
-      516,  516,  544,  497,  544,  498,  498,  498,  498,  498,
-      498,  519,  520,  521,  519,  519,  519,  519,  519,  544,
-
-      544,  544,  544,   73,  497,  544,  498,  498,  498,  498,
-      498,  498,  498,  498,   73,  502,  544,  503,  503,  503,
-      503,  503,  503,  503,  503,  502,  544,  503,  503,  503,
-      503,  503,  503,  503,  503,   73,  497,  544,  498,  498,
-      498,  498,  498,  498,  498,  498,  502,  544,  503,  503,
-      503,  503,  503,  503,  345,  544,  524,  524,  524,  524,
-      524,  524,  524,  524,  544,  544,  544,   73,  526,  544,
-      527,  527,  527,  527,  527,  527,  527,  527,  531,  531,
-      531,  531,  531,  531,  531,  531,  532,  532,  532,  532,
-      532,  532,  532,  532,  544,  544,  544,  544,  544,   73,
-
-      526,  544,  528,  528,  528,  528,  528,  528,  528,  528,
-      533,  533,  533,  533,  533,  534,  531,  531,  538,  539,
-      540,  538,  538,  538,  538,  538,  544,  544,  544,  544,
-      544,   73,  526,  544,  529,  529,  529,  529,  529,  530,
-      527,  527,  544,  544,  544,  544,  526,   73,  527,  527,
-      527,  527,  527,  527,  531,  531,  531,  531,  531,  531,
-      531,  531,  544,   73,  526,  544,  527,  527,  527,  527,
-      527,  527,  527,  527,  544,  544,  544,   73,  531,  531,
-      531,  531,  531,  531,  531,  531,  541,  541,  541,  541,
-      541,  541,  541,  541,  544,   73,  526,  544,  527,  527,
-
-      527,  527,  527,  527,  527,  527,  538,  538,  538,  538,
-      538,  538,  538,  538,  544,   73,  542,  542,  542,  542,
-      542,  543,  541,  541,  544,  544,  544,   73,  541,  541,
-      541,  541,  541,  541,  544,   73,  541,  541,  541,  541,
-      541,  541,  541,  541,  544,   73,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,   73,  544,  544,
-      544,  544,  544,  544,  544,   73,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   60,   60,   60,   60,   60,   60,   60,   60,
-
-       60,   60,   60,   60,   60,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   72,  544,
-      544,  544,   72,  544,   72,   72,   72,  544,   72,   72,
-       72,   76,   76,   76,   76,   76,   76,   76,   76,   76,
-       76,   76,   76,   76,   80,  544,  544,  544,   80,  544,
-       80,   80,   80,  544,   80,   80,   80,   82,  544,  544,
-      544,   82,  544,   82,   82,   82,  544,   82,   82,   82,
-       84,  544,  544,   84,   84,  544,   84,   84,   84,  544,
-       84,   84,   84,   94,   94,  544,  544,   94,  119,  544,
-      544,  119,  119,  544,  119,  119,  119,  544,  119,  119,
-
-      119,  123,  544,  544,  123,  123,  123,  123,  123,  123,
-      544,  544,  123,  123,  130,  130,  131,  544,  544,  131,
-      544,  544,  131,  131,  131,  131,  131,  131,  131,  135,
-      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
-      135,  135,  137,  137,  544,  137,  544,  137,  137,  137,
-      137,  137,  137,  137,  137,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  144,  144,
-      544,  144,  144,  144,  144,  144,  144,  144,  144,  144,
-      144,   85,  544,  544,   85,   85,  544,   85,   85,   85,
-      544,   85,   85,   85,  151,  151,  544,  544,  151,  153,
-
-      153,  153,  544,  544,  153,  120,  544,  544,  120,  120,
-      544,  120,  120,  120,  544,  120,  120,  120,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  184,  184,  544,  544,  184,  190,  190,  190,  544,
-      544,  190,  218,  218,  544,  544,  218,  219,  219,  544,
-      544,  219,  223,  223,  544,  544,  223,  225,  225,  225,
-      544,  544,  225,  258,  258,  544,  544,  258,  260,  260,
-      544,  544,  260,  261,  261,  544,  544,  261,  263,  263,
-      263,  544,  544,  263,  267,  267,  267,  267,  544,  544,
-      267,  295,  295,  544,  544,  295,  296,  296,  544,  544,
-
-      296,  297,  297,  544,  544,  297,  309,  309,  309,  544,
-      544,  309,  310,  310,  310,  310,  544,  544,  310,  343,
-      343,  544,  544,  343,  344,  344,  544,  544,  344,  360,
-      360,  360,  544,  544,  360,  361,  361,  361,  361,  544,
-      544,  361,  386,  386,  544,  544,  386,  390,  544,  390,
-      390,  544,  544,  390,  408,  408,  408,  544,  544,  408,
-      409,  409,  409,  409,  544,  544,  409,  439,  439,  544,
-      544,  439,  440,  544,  440,  440,  544,  544,  440,  456,
-      456,  456,  544,  544,  456,  457,  457,  457,  544,  544,
-      544,  457,  463,  544,  544,  544,  463,  544,  463,  463,
-
-      463,  544,  463,  463,  463,  465,  544,  544,  544,  465,
-      544,  465,  465,  465,  544,  465,  465,  465,  475,  475,
-      544,  544,  475,  476,  544,  476,  476,  544,  544,  476,
-      492,  492,  544,  544,  544,  492,  494,  494,  494,  494,
-      494,  494,  494,  494,  494,  494,  494,  494,  494,  507,
-      507,  544,  544,  507,  508,  544,  508,  508,  544,  544,
-      508,  522,  522,  544,  544,  522,  523,  544,  523,  544,
-      544,  544,  523,  535,  544,  544,  544,  535,  536,  536,
-      536,  536,  536,  536,  536,  536,  536,  536,  536,  536,
-      536,   13,  544,  544,  544,  544,  544,  544,  544,  544,
-
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544
+       14,   15,   16,   17,   18,   19,   20,   21,   22,   14,
+       23,   24,   14,   14,   25,   26,   27,   28,   26,   26,
+       26,   26,   26,   29,   30,   31,   14,   32,   32,   32,
+       32,   33,   34,   34,   35,   34,   36,   34,   37,   34,
+       34,   34,   34,   34,   38,   14,   39,   39,   39,   39,
+       39,   39,   14,   14,   14,   14,   14,   14,   14,   40,
+       14,   14,   41,   48,   48,   74,   42,   49,   49,  158,
+       15,   53,   54,   74,   55,  296,   50,   50,  160,   74,
+       56,   69,   16,   70,   71,   15,   53,   54,  177,   55,
+       43,   44,   56,   55,   45,   56,  108,  137,   46,   74,
+
+      138,   47,   69,   16,   70,   71,  143,   56,   55,  144,
+       89,  133,  107,   57,   89,   89,  126,  136,  140,  107,
+      136,   51,   51,   74,   72,  219,  133,  107,   57,   15,
+       16,   17,   89,   58,   95,   95,   95,   95,   95,   95,
+       95,   95,   74,  145,  146,   72,  141,  168,   81,  142,
+      142,   90,   96,   96,   96,   96,   96,   97,   73,   74,
+       94,   94,   94,   94,   94,   94,   94,   94,  109,   74,
+       74,  175,   59,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       15,   16,   17,   74,   58,  543,  110,  111,   74,  179,
+
+      112,   74,  174,  181,  113,  122,  217,  114,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   73,   59,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   15,   16,   17,   62,   58,   74,  133,  107,  124,
+       63,   64,   65,  124,  124,  129,  107,  130,  178,  131,
+      176,  163,  143,  130,   66,  131,  164,   74,  165,   89,
+       74,  124,  158,   89,   89,  133,  107,  131,  131,  145,
+      146,  197,  217,  210,   67,   15,   16,   17,   62,   58,
+
+      125,   89,   74,  144,   63,   64,   65,   73,  131,   73,
+      543,   73,   81,   73,   73,  142,  217,   73,   66,   81,
+       90,  156,  156,  156,  156,  156,  156,  156,  156,   73,
+       73,   73,  156,  156,  156,  156,  156,  156,   67,   78,
+       74,   78,   73,   78,  142,   78,   78,  351,   84,   78,
+       84,   74,   84,  220,   84,   84,  109,  158,   84,  340,
+       93,   78,   78,   78,  124,  216,  197,  217,  124,  124,
+       84,   84,   84,  156,  156,  156,  156,  156,  156,  156,
+      156,   74,   79,   81,  110,  111,  124,  485,  112,   81,
+      133,  107,  113,   82,  244,  114,   83,   83,   83,   83,
+
+       83,   83,   83,   83,   91,  125,   92,   92,   92,   92,
+       92,   92,   92,   92,   93,  184,  245,   74,   94,   94,
+       94,   94,   94,  251,  550,  152,  153,  154,  152,  152,
+      152,  152,  152,  136,  295,   74,  259,   94,   94,   94,
+       94,   94,   94,   73,   74,  256,   74,   73,  294,   73,
+      351,   74,   73,   73,   74,   73,   73,   73,  100,  100,
+      100,  100,  100,  100,  100,  100,   93,   74,  485,   73,
+      100,  100,  100,  100,  100,  101,  101,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,   74,  101,   94,
+       94,   94,   94,   94,   94,   73,   73,   73,   73,   73,
+
+       73,   73,   73,   73,   73,  101,  101,  101,  101,  101,
+      101,  101,  101,  550,  228,  228,  228,  101,  101,  101,
+      101,  101,   83,   83,   83,   83,   83,   83,   83,   83,
+      237,  237,  237,  237,  237,  238,   73,   73,   73,   73,
+       73,   73,  106,  107,   73,   81,   73,   74,   73,   73,
+       74,   86,   73,   86,  158,   86,  258,   86,   86,  232,
+      158,   86,  386,  197,   73,   73,   73,   81,  135,  234,
+      449,  135,  135,   86,   86,   86,  433,   82,  135,   93,
+       83,   83,   83,   83,   83,   83,   83,   83,   88,  508,
+       73,  135,   88,   81,   73,   73,  501,  255,   88,  123,
+
+       74,   73,  244,  123,   89,   73,   73,   74,   89,  123,
+       88,   88,   73,   74,   89,  550,  158,  257,  115,   81,
+       74,  123,  123,   73,  245,  234,   89,   89,  468,  132,
+      341,   81,  550,  550,  550,  550,  550,  550,  550,  550,
+       78,  384,   78,  147,   78,  344,   78,   78,  396,  396,
+       78,  550,  550,  550,  550,  550,  550,  550,  550,  158,
+       74,   74,   78,   78,   78,  291,  297,  158,  197,   74,
+      124,  232,  158,  329,  124,   74,  234,   74,  337,  430,
+      124,  234,  467,   79,  155,  155,  155,  155,  155,  155,
+      155,  155,  124,  124,  158,  330,  155,  155,  155,  155,
+
+      155,  221,  222,  223,  221,  221,  221,  221,  221,  279,
+      279,  279,  279,  279,  280,  155,  155,  155,  155,  155,
+      155,  161,  161,  161,  161,  161,  161,  161,  161,  333,
+       74,   74,  158,  161,  161,  161,  161,  161,  184,   74,
+      185,  185,  185,  185,  185,  185,  335,  342,  343,  232,
+      158,  334,  155,  155,  155,  155,  155,  155,  184,  276,
+      185,  185,  185,  185,  185,  185,  185,  185,  336,   74,
+      226,  226,  227,  228,  228,  228,  228,  228,  194,  202,
+      202,  202,  202,  202,  202,  202,  202,  446,  446,   74,
+      184,  449,  186,  186,  186,  186,  186,  186,  186,  186,
+
+      236,  236,  236,  236,  236,  236,  236,  236,  550,  158,
+      235,  235,  235,  235,  235,  235,  235,  235,  234,  428,
+       81,   74,  184,  399,  187,  187,  187,  187,  187,  188,
+      185,  185,  265,  265,  265,  265,  265,  265,  265,  265,
+      194,  270,  271,  272,  270,  270,  270,  270,  270,   74,
+       74,  232,  158,   74,   73,  158,  189,  189,  189,  189,
+      189,  189,  189,  189,  276,  381,  387,  429,  189,  189,
+      189,  189,  189,  243,  243,  243,  243,  243,  243,  243,
+      243,  322,  322,  322,  322,  322,  323,  189,  189,  189,
+      189,  189,  189,  191,  192,  193,  193,  193,  193,  193,
+
+      193,  194,  550,  158,  472,  195,  195,  195,  195,  195,
+      232,  158,  274,  274,  274,  274,  274,  274,  329,  333,
+      234,  463,  463,  470,  195,  195,  195,  195,  195,  195,
+      158,  198,  199,  200,  198,  198,  198,  198,  198,  201,
+      330,  334,   81,  202,  202,  202,  202,  202,  278,  278,
+      278,  278,  278,  278,  278,  278,  356,  356,  356,  356,
+      356,  357,  202,  202,  202,  202,  202,  202,  203,  203,
+      203,  203,  203,  203,  203,  203,  550,  158,  482,  482,
+      203,  203,  203,  203,  203,  550,  276,  277,  277,  277,
+      277,  277,  277,  277,  277,  335,  232,  158,  502,  189,
+
+      189,  189,  189,  189,  189,  184,  276,  185,  185,  185,
+      185,  185,  185,  185,  185,   74,  422,  336,  298,  299,
+      300,  298,  298,  298,  298,  298,  259,  501,  260,  260,
+      260,  260,  260,  260,  232,  158,   74,  184,  423,  185,
+      185,  185,  185,  185,  185,  185,  185,   74,  285,  285,
+      285,  285,  285,  285,  285,  285,  310,   74,  311,  311,
+      311,  311,  311,  311,  311,  311,  514,  514,   74,  232,
+      158,  233,  233,  233,  233,  233,  233,  233,  233,  234,
+       74,  521,   81,  235,  235,  235,  235,  235,  310,  385,
+      312,  312,  312,  312,  312,  312,  312,  312,  424,  529,
+
+      529,  499,  235,  235,  235,  235,  235,  235,  158,  239,
+      240,  241,  239,  239,  239,  239,  239,  242,  158,  158,
+      425,  243,  243,  243,  243,  243,  310,  276,  313,  313,
+      313,  313,  313,  314,  311,  311,  399,  232,  158,  353,
+      243,  243,  243,  243,  243,  243,  259,  319,  260,  260,
+      260,  260,  260,  260,  260,  260,  232,  158,  317,  317,
+      317,  317,  317,  317,  440,  351,  276,  321,  321,  321,
+      321,  321,  321,  321,  321,  353,  503,   74,  259,  550,
+      261,  261,  261,  261,  261,  261,  261,  261,  550,  353,
+      320,  320,  320,  320,  320,  320,  320,  320,  309,  309,
+
+      309,  309,  309,  309,  309,  309,  472,   74,  532,   74,
+      259,  470,  262,  262,  262,  262,  262,  263,  260,  260,
+      355,  355,  355,  355,  355,  355,  355,  355,  550,  158,
+      354,  354,  354,  354,  354,  354,  354,  354,  319,   74,
+      465,   74,  232,  158,  274,  274,  274,  274,  274,  274,
+      274,  274,  234,  232,  158,  275,  275,  275,  275,  275,
+      275,  275,  275,  276,  409,  353,  304,  277,  277,  277,
+      277,  277,  363,  364,  365,  363,  363,  363,  363,  363,
+      373,  373,  373,  373,  373,  374,  277,  277,  277,  277,
+      277,  277,  158,  281,  282,  283,  281,  281,  281,  281,
+
+      281,  284,  158,   74,  427,  285,  285,  285,  285,  285,
+      310,  319,  311,  311,  311,  311,  311,  311,  311,  311,
+      426,  550,  158,   74,  285,  285,  285,  285,  285,  285,
+      259,  319,  260,  260,  260,  260,  260,  260,  260,  260,
+      310,  351,  311,  311,  311,  311,  311,  311,  311,  311,
+      310,  353,  311,  311,  311,  311,  311,  311,  304,  230,
+      383,   74,  259,  382,  260,  260,  260,  260,  260,  260,
+      260,  260,  328,  328,  328,  328,  328,  328,  328,  328,
+      232,  158,  368,  368,  368,  368,  368,  368,  380,  379,
+      319,  428,   81,   74,  305,  306,  307,  305,  305,  305,
+
+      305,  305,  308,  310,  466,  304,  309,  309,  309,  309,
+      309,  372,  372,  372,  372,  372,  372,  372,  372,  402,
+      402,  402,  402,  402,  403,  309,  309,  309,  309,  309,
+      309,  232,  158,  317,  317,  317,  317,  317,  317,  317,
+      317,  276,  232,  158,  318,  318,  318,  318,  318,  318,
+      318,  318,  319,  230,  194,  339,  320,  320,  320,  320,
+      320,  550,  351,  371,  371,  371,  371,  371,  371,  371,
+      371,  422,  399,  338,  332,  320,  320,  320,  320,  320,
+      320,  158,  324,  325,  326,  324,  324,  324,  324,  324,
+      327,  331,  304,  423,  328,  328,  328,  328,  328,  388,
+
+      389,  390,  391,  388,  388,  388,  388,  420,  420,  420,
+      420,  420,  421,  328,  328,  328,  328,  328,  328,  344,
+      345,  345,  345,  345,  345,  345,  345,  345,   74,  344,
+      345,  345,  345,  345,  345,  345,  393,  394,  395,  393,
+      393,  393,  393,  393,  230,  194,  194,  252,  293,   74,
+      344,  346,  346,  346,  346,  346,  346,  346,  346,   74,
+      362,  362,  362,  362,  362,  362,  362,  362,  401,  401,
+      401,  401,  401,  401,  401,  401,  292,  290,  289,  288,
+       74,  344,  347,  347,  347,  347,  347,  348,  345,  345,
+      550,  550,  400,  400,  400,  400,  400,  400,  400,  400,
+
+      409,  399,  410,  410,  410,  410,  410,  410,  410,  410,
+      287,   74,  351,  286,  352,  352,  352,  352,  352,  352,
+      352,  352,  353,  158,  268,  230,  354,  354,  354,  354,
+      354,  409,  370,  411,  411,  411,  411,  411,  411,  411,
+      411,  194,  264,  194,   99,  354,  354,  354,  354,  354,
+      354,  358,  359,  360,  358,  358,  358,  358,  358,  361,
+      252,  254,  252,  362,  362,  362,  362,  362,  409,  351,
+      412,  412,  412,  412,  412,  413,  410,  410,  253,  399,
+      252,  250,  362,  362,  362,  362,  362,  362,  232,  158,
+      368,  368,  368,  368,  368,  368,  368,  368,  319,  232,
+
+      158,  369,  369,  369,  369,  369,  369,  369,  369,  370,
+      232,  158,  249,  371,  371,  371,  371,  371,  232,  158,
+      319,  550,  158,  248,  247,  246,  424,  431,  370,   93,
+      194,  370,  371,  371,  371,  371,  371,  371,  158,  375,
+      376,  377,  375,  375,  375,  375,  375,  431,  425,  431,
+      432,  378,  378,  378,  378,  378,  378,  378,  378,  378,
+      378,  378,  378,  378,  477,  477,  477,  230,   74,  194,
+      378,  378,  378,  378,  378,  378,  344,  345,  345,  345,
+      345,  345,  345,  345,  345,  232,  158,  416,  416,  416,
+      416,  416,  416,   74,  351,  370,  419,  419,  419,  419,
+
+      419,  419,  419,  419,  449,   99,   74,  344,  345,  345,
+      345,  345,  345,  345,  345,  345,  550,  550,  418,  418,
+      418,  418,  418,  418,  418,  418,  440,  449,  441,  441,
+      441,  441,  441,  441,  441,  441,   81,   74,  351,  182,
+      397,  397,  397,  397,  397,  397,  397,  397,  353,  351,
+      218,  398,  398,  398,  398,  398,  398,  398,  398,  399,
+      158,  215,  214,  400,  400,  400,  400,  400,  440,  370,
+      442,  442,  442,  442,  442,  442,  442,  442,  213,  212,
+      211,  209,  400,  400,  400,  400,  400,  400,  404,  405,
+      406,  404,  404,  404,  404,  404,  407,  208,  207,  206,
+
+      408,  408,  408,  408,  408,  440,  351,  443,  443,  443,
+      443,  443,  444,  441,  441,  205,  449,  204,   99,  408,
+      408,  408,  408,  408,  408,  232,  158,  416,  416,  416,
+      416,  416,  416,  416,  416,  370,  232,  158,  417,  417,
+      417,  417,  417,  417,  417,  417,   91,   81,   81,   74,
+      418,  418,  418,  418,  418,  408,  408,  408,  408,  408,
+      408,  408,  408,  452,  452,  452,  452,  452,  453,  418,
+      418,  418,  418,  418,  418,  433,  182,  434,  434,  434,
+      434,  434,  434,  434,  434,  451,  451,  451,  451,  451,
+      451,  451,  451,  550,  351,  450,  450,  450,  450,  450,
+
+      450,  450,  450,  141,  485,  142,   74,  433,  136,  435,
+      435,  435,  435,  435,  435,  435,  435,  459,  460,  461,
+      459,  459,  459,  459,  459,  409,  550,  410,  410,  410,
+      410,  410,  410,  410,  410,  136,  485,  128,   74,  433,
+      351,  436,  436,  436,  436,  436,  437,  438,  438,  409,
+      485,  410,  410,  410,  410,  410,  410,  410,  410,  409,
+      180,  410,  410,  410,  410,  410,  410,  431,  121,  173,
+       74,  433,  172,  439,  439,  439,  434,  434,  434,  434,
+      434,  232,  158,  171,  170,  169,  167,  431,  166,  431,
+      431,  370,  162,   99,  433,   73,  477,  477,  477,   99,
+
+      151,   87,   74,  351,   85,  447,  447,  447,  447,  447,
+      447,  447,  447,  399,  351,   81,  448,  448,  448,  448,
+      448,  448,  448,  448,  449,   74,  147,  148,  450,  450,
+      450,  450,  450,  473,  474,  475,  473,  473,  473,  473,
+      473,  488,  488,  488,  488,  488,  489,  450,  450,  450,
+      450,  450,  450,  454,  455,  456,  454,  454,  454,  454,
+      454,  457,   74,   76,   75,  458,  458,  458,  458,  458,
+      478,  479,  480,  478,  478,  478,  478,  478,  519,  519,
+      519,  519,  519,  520,  458,  458,  458,  458,  458,  458,
+      232,  158,  464,  464,  464,  464,  464,  464,  464,  464,
+
+      433,   74,  438,  438,  438,  438,  438,  438,  438,  438,
+      440,  142,  441,  441,  441,  441,  441,  441,  441,  441,
+      440,  136,  441,  441,  441,  441,  441,  441,  441,  441,
+      128,   74,  433,  121,  438,  438,  438,  438,  438,  438,
+      438,  438,  440,  120,  441,  441,  441,  441,  441,  441,
+      458,  458,  458,  458,  458,  458,  458,  458,  119,  118,
+      117,  116,  105,   74,  433,  104,  438,  438,  438,  438,
+      438,  438,  476,  476,  487,  487,  487,  487,  487,  487,
+      487,  487,  550,  103,  486,  486,  486,  486,  486,  486,
+      486,  486,  102,   99,   87,   74,  433,   85,  476,  476,
+
+      476,  476,  476,  476,  476,  476,  158,  494,  494,  494,
+      494,  494,  494,  494,  494,  158,  495,  495,  495,  495,
+      495,  495,  495,  495,   76,   75,   74,   74,  351,  550,
+      483,  483,  483,  483,  483,  483,  483,  483,  449,  351,
+      550,  484,  484,  484,  484,  484,  484,  484,  484,  485,
+      550,  550,  550,  486,  486,  486,  486,  486,  158,  496,
+      496,  496,  496,  496,  497,  494,  494,  550,  550,  550,
+      550,  550,  486,  486,  486,  486,  486,  486,  490,  491,
+      492,  490,  490,  490,  490,  490,  550,  521,   81,  550,
+      493,  493,  493,  493,  493,  469,  550,  469,  550,  469,
+
+      531,  469,  469,  550,  550,  469,  550,  550,  550,  493,
+      493,  493,  493,  493,  493,  550,  550,  469,  469,  469,
+      471,  550,  471,  550,  471,  550,  471,  471,  550,  550,
+      471,  476,  476,  476,  476,  476,  476,  476,  476,  550,
+      550,  550,  471,  471,  471,  503,  550,  504,  504,  504,
+      504,  504,  504,  504,  504,  550,  550,  550,  550,  508,
+       74,  509,  509,  509,  509,  509,  509,  509,  509,  158,
+      494,  494,  494,  494,  494,  494,   74,  503,  550,  505,
+      505,  505,  505,  505,  505,  505,  505,  508,  550,  510,
+      510,  510,  510,  510,  510,  510,  510,  508,  550,  511,
+
+      511,  511,  511,  511,  512,  509,  509,  550,   74,  503,
+      550,  506,  506,  506,  506,  506,  507,  504,  504,  493,
+      493,  493,  493,  493,  493,  493,  493,  518,  518,  518,
+      518,  518,  518,  518,  518,  550,  550,  550,  550,  550,
+       74,  351,  550,  515,  515,  515,  515,  515,  515,  515,
+      515,  485,  351,  550,  516,  516,  516,  516,  516,  516,
+      516,  516,  550,  550,  550,  550,  517,  517,  517,  517,
+      517,  550,  550,  517,  517,  517,  517,  517,  517,  517,
+      517,  550,  550,  550,  550,  517,  517,  517,  517,  517,
+      517,  158,  494,  494,  494,  494,  494,  494,  494,  494,
+
+      158,  494,  494,  494,  494,  494,  494,  494,  494,  522,
+      523,  524,  522,  522,  522,  522,  522,  550,  503,  550,
+      504,  504,  504,  504,  504,  504,  525,  526,  527,  525,
+      525,  525,  525,  525,  550,  550,  550,  550,   74,  503,
+      550,  504,  504,  504,  504,  504,  504,  504,  504,   74,
+      508,  550,  509,  509,  509,  509,  509,  509,  509,  509,
+      508,  550,  509,  509,  509,  509,  509,  509,  509,  509,
+       74,  503,  550,  504,  504,  504,  504,  504,  504,  504,
+      504,  508,  550,  509,  509,  509,  509,  509,  509,  351,
+      550,  530,  530,  530,  530,  530,  530,  530,  530,  550,
+
+      550,  550,   74,  532,  550,  533,  533,  533,  533,  533,
+      533,  533,  533,  537,  537,  537,  537,  537,  537,  537,
+      537,  538,  538,  538,  538,  538,  538,  538,  538,  550,
+      550,  550,  550,  550,   74,  532,  550,  534,  534,  534,
+      534,  534,  534,  534,  534,  539,  539,  539,  539,  539,
+      540,  537,  537,  544,  545,  546,  544,  544,  544,  544,
+      544,  550,  550,  550,  550,  550,   74,  532,  550,  535,
+      535,  535,  535,  535,  536,  533,  533,  550,  550,  550,
+      550,  532,   74,  533,  533,  533,  533,  533,  533,  537,
+      537,  537,  537,  537,  537,  537,  537,  550,   74,  532,
+
+      550,  533,  533,  533,  533,  533,  533,  533,  533,  550,
+      550,  550,   74,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  550,  550,  550,
+       74,  532,  550,  533,  533,  533,  533,  533,  533,  533,
+      533,  547,  547,  547,  547,  547,  547,  547,  547,  544,
+      544,  544,  544,  544,  544,  544,  544,  550,  550,  550,
+      550,  550,   74,  550,  550,  550,  550,  550,  550,  550,
+       74,  547,  547,  547,  547,  547,  547,  550,   74,  548,
+      548,  548,  548,  548,  549,  547,  547,  547,  547,  547,
+      547,  547,  547,  547,  547,  550,  550,  550,  550,  550,
+
+       74,  550,  550,  550,  550,  550,  550,  550,   74,  550,
+      550,  550,  550,  550,  550,  550,   74,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   73,
+      550,  550,  550,   73,  550,   73,   73,   73,  550,   73,
+       73,   73,   77,   77,  550,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   80,   80,   80,   80,   80,
+
+       80,   80,   80,   80,   80,   80,   80,   80,   84,  550,
+      550,  550,   84,  550,   84,   84,   84,  550,   84,   84,
+       84,   86,  550,  550,  550,   86,  550,   86,   86,   86,
+      550,   86,   86,   86,   88,  550,  550,   88,   88,  550,
+       88,   88,   88,  550,   88,   88,   88,   98,   98,  550,
+      550,   98,  123,  550,  550,  123,  123,  550,  123,  123,
+      123,  550,  123,  123,  123,  127,  550,  550,  127,  127,
+      127,  127,  127,  127,  550,  550,  127,  127,  134,  134,
+      135,  550,  550,  135,  550,  550,  135,  135,  135,  135,
+      135,  135,  135,  139,  139,  139,  139,  139,  139,  139,
+
+      139,  139,  139,  139,  139,  139,  141,  141,  550,  141,
+      550,  141,  141,  141,  141,  141,  141,  141,  141,   78,
+       78,  550,   78,   78,   78,   78,   78,   78,   78,   78,
+       78,   78,  149,  149,  149,  149,  149,  149,  149,  149,
+      149,  149,  149,  149,  149,  150,  150,  550,  150,  150,
+      150,  150,  150,  150,  150,  150,  150,  150,   89,  550,
+      550,   89,   89,  550,   89,   89,   89,  550,   89,   89,
+       89,  157,  157,  550,  550,  157,  159,  159,  159,  550,
+      550,  159,  124,  550,  550,  124,  124,  550,  124,  124,
+      124,  550,  124,  124,  124,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  190,  190,
+      550,  550,  190,  196,  196,  196,  550,  550,  196,  224,
+      224,  550,  550,  224,  225,  225,  550,  550,  225,  229,
+      229,  550,  550,  229,  231,  231,  231,  550,  550,  231,
+      264,  264,  550,  550,  264,  266,  266,  550,  550,  266,
+      267,  267,  550,  550,  267,  269,  269,  269,  550,  550,
+      269,  273,  273,  273,  273,  550,  550,  273,  301,  301,
+      550,  550,  301,  302,  302,  550,  550,  302,  303,  303,
+      550,  550,  303,  315,  315,  315,  550,  550,  315,  316,
+      316,  316,  316,  550,  550,  316,  349,  349,  550,  550,
+
+      349,  350,  350,  550,  550,  350,  366,  366,  366,  550,
+      550,  366,  367,  367,  367,  367,  550,  550,  367,  392,
+      392,  550,  550,  392,  396,  550,  396,  396,  550,  550,
+      396,  414,  414,  414,  550,  550,  414,  415,  415,  415,
+      415,  550,  550,  415,  445,  445,  550,  550,  445,  446,
+      550,  446,  446,  550,  550,  446,  462,  462,  462,  550,
+      550,  462,  463,  463,  463,  550,  550,  550,  463,  469,
+      550,  550,  550,  469,  550,  469,  469,  469,  550,  469,
+      469,  469,  471,  550,  550,  550,  471,  550,  471,  471,
+      471,  550,  471,  471,  471,  481,  481,  550,  550,  481,
+
+      482,  550,  482,  482,  550,  550,  482,  498,  498,  550,
+      550,  550,  498,  500,  500,  500,  500,  500,  500,  500,
+      500,  500,  500,  500,  500,  500,  513,  513,  550,  550,
+      513,  514,  550,  514,  514,  550,  550,  514,  528,  528,
+      550,  550,  528,  529,  550,  529,  550,  550,  550,  529,
+      541,  550,  550,  550,  541,  542,  542,  542,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,   13,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550
     } ;
 
-static yyconst short int yy_chk[3455] =
+static yyconst short int yy_chk[3532] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -931,380 +942,389 @@ static yyconst short int yy_chk[3455] =
         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,    3,    4,  251,    2,    3,    4,   95,
-        5,    5,    5,  114,    5,  251,    3,    4,   95,   39,
-        5,   11,   11,   11,   11,    6,    6,    6,  114,    6,
-        2,    2,    5,    5,    2,    6,   39,   62,    2,   50,
-
-       64,    2,   12,   12,   12,   12,   68,    6,    6,   69,
-       24,   58,   58,    5,   24,   24,   50,   62,   66,   66,
-       64,    3,    4,  172,   11,  172,  102,  102,    6,    7,
-        7,    7,   24,    7,   26,   26,   26,   26,   26,   26,
-       26,   26,  104,   71,   71,   12,   71,  104,  111,   68,
-       69,   24,   27,   27,   27,   27,   27,   27,   38,  112,
-       38,   38,   38,   38,   38,   38,   38,   38,   40,  102,
-      541,  112,    7,    7,    7,    7,    7,    7,    7,    7,
+        1,    1,    2,    3,    4,  257,    2,    3,    4,   99,
+        5,    5,    5,  118,    5,  257,    3,    4,   99,   40,
+        5,   11,   11,   11,   11,    6,    6,    6,  118,    6,
+        2,    2,    5,    5,    2,    6,   40,   63,    2,   51,
+
+       65,    2,   12,   12,   12,   12,   69,    6,    6,   70,
+       25,   59,   59,    5,   25,   25,   51,   63,   67,   67,
+       65,    3,    4,  178,   11,  178,  106,  106,    6,    7,
+        7,    7,   25,    7,   27,   27,   27,   27,   27,   27,
+       27,   27,  108,   72,   72,   12,   72,  108,  115,   69,
+       70,   25,   28,   28,   28,   28,   28,   28,   39,  116,
+       39,   39,   39,   39,   39,   39,   39,   39,   41,  106,
+      547,  116,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        8,    8,    8,  116,    8,  536,   40,   40,  122,  116,
+        8,    8,    8,  120,    8,  542,   41,   41,  126,  120,
 
-       40,  169,  111,  122,   40,   48,  169,   40,   48,   48,
-       48,   48,   48,   48,   48,   48,   78,   78,   78,   78,
-       78,   78,   78,   78,   79,   79,   79,   79,   79,   79,
-       79,   79,  113,    8,    8,    8,    8,    8,    8,    8,
+       41,  175,  115,  126,   41,   49,  175,   41,   49,   49,
+       49,   49,   49,   49,   49,   49,   82,   82,   82,   82,
+       82,   82,   82,   82,   83,   83,   83,   83,   83,   83,
+       83,   83,  117,    8,    8,    8,    8,    8,    8,    8,
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
-        8,    9,    9,    9,    9,    9,  115,  125,  125,   49,
-        9,    9,    9,   49,   49,   56,   56,   56,  115,   56,
-      113,   99,  139,   56,    9,   56,   99,  213,   99,   84,
-      162,   49,  153,   84,   84,  129,  129,   56,   56,  141,
-      141,  153,  213,  162,    9,   10,   10,   10,   10,   10,
-
-       49,   84,  168,  171,   10,   10,   10,   73,   56,   73,
-      140,   73,  525,   73,   73,  139,  461,   73,   10,  171,
-       84,   87,   87,   87,   87,   87,   87,   87,   87,   73,
-       73,   73,   93,   93,   93,   93,   93,   93,   10,   18,
-       91,   91,   91,   91,   91,   91,   91,   91,  168,   18,
-       87,  140,   18,   18,   18,   18,   18,   18,   18,   18,
-       25,  179,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,  210,  461,  173,   25,   25,   25,   25,   25,   92,
-       92,   92,   92,   92,   92,   92,   92,  173,  175,  183,
-      250,   25,  179,   25,   25,   25,   25,   25,   25,   31,
-
-      204,  175,  198,   31,  524,   31,  204,  250,   31,   31,
-      183,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,  210,  198,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-      187,  187,  187,   33,   33,   33,   33,   33,  118,  118,
-      118,  118,  118,  118,  118,  118,  211,  211,  288,  136,
-      136,  522,   33,   33,   33,   33,   33,   33,   37,   37,
-
-       37,  190,   37,  254,   37,   37,  214,   81,   37,   81,
-      190,   81,  214,   81,   81,  339,  225,   81,  227,  227,
-       37,   37,   37,   41,  105,  225,  212,  238,  227,   81,
-       81,   81,  136,   41,  254,  288,   41,   41,   41,   41,
-       41,   41,   41,   41,   83,  339,   83,  212,   83,  238,
-       83,   83,  105,  105,   83,   86,  105,   86,  336,   86,
-      105,   86,   86,  105,  212,   86,   83,   83,   83,  511,
-      229,  229,  510,  336,   41,   57,  245,   86,   86,   86,
-      229,  245,  119,  249,  280,   57,  119,  119,   57,   57,
-       57,   57,   57,   57,   57,   57,   88,   88,   88,   88,
-
-       88,   88,   88,   88,  119,  508,  280,  334,   88,   88,
-       88,   88,   88,  128,  128,  128,  128,  128,  128,  128,
-      128,  252,  507,  119,  351,  351,  252,   88,   88,   88,
-       88,   88,   88,   96,   96,   96,   96,   96,   96,   96,
-       96,  283,  249,  290,  263,   96,   96,   96,   96,   96,
-      121,  503,  121,  263,  121,  334,  121,  121,  284,  290,
-      121,  267,  285,  283,   96,   96,   96,   96,   96,   96,
-      267,  285,  121,  121,  121,  132,  289,  145,  132,  132,
-      284,  145,  291,  268,  268,  132,  289,  145,  309,  323,
-      327,  291,  174,  268,  397,  397,  174,  309,  132,  145,
-
-      145,  146,  174,  146,  146,  146,  146,  146,  146,  146,
-      146,  323,  327,  494,  174,  174,  178,  178,  178,  178,
-      178,  178,  178,  178,  182,  310,  182,  182,  182,  182,
-      182,  182,  146,  147,  310,  147,  147,  147,  147,  147,
-      147,  147,  147,  492,  329,  178,  186,  186,  186,  186,
-      186,  186,  186,  186,  186,  182,  191,  191,  191,  191,
-      191,  191,  191,  191,  147,  148,  329,  148,  148,  148,
-      148,  148,  148,  148,  148,  193,  193,  193,  193,  193,
-      193,  193,  193,  194,  194,  194,  194,  194,  194,  235,
-      235,  235,  235,  235,  235,  488,  148,  149,  476,  149,
-
-      149,  149,  149,  149,  149,  149,  149,  269,  269,  475,
-      331,  149,  149,  149,  149,  149,  196,  269,  196,  196,
-      196,  196,  196,  196,  196,  196,  331,  411,  411,  337,
-      149,  149,  149,  149,  149,  149,  152,  152,  152,  152,
-      152,  152,  152,  152,  152,  337,  412,  412,  152,  152,
-      152,  152,  152,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  373,  374,  379,  465,  379,  152,  152,  152,
-      152,  152,  152,  154,  154,  154,  154,  154,  154,  154,
-      154,  154,  154,  463,  373,  374,  154,  154,  154,  154,
-      154,  226,  226,  226,  226,  226,  226,  226,  226,  277,
-
-      277,  277,  277,  277,  277,  154,  154,  154,  154,  154,
-      154,  155,  155,  155,  155,  155,  155,  155,  155,  415,
-      415,  424,  462,  155,  155,  155,  155,  155,  228,  228,
-      228,  228,  228,  228,  228,  228,  424,  447,  447,  271,
-      271,  460,  155,  155,  155,  155,  155,  155,  180,  271,
-      180,  180,  180,  180,  180,  180,  180,  180,  232,  232,
-      232,  232,  232,  232,  232,  232,  459,  346,  232,  234,
-      234,  234,  234,  234,  234,  234,  234,  346,  457,  180,
-      181,  348,  181,  181,  181,  181,  181,  181,  181,  181,
-      237,  348,  237,  237,  237,  237,  237,  237,  237,  237,
-
-      311,  311,  253,  253,  253,  253,  253,  253,  253,  253,
-      311,  181,  192,  192,  192,  192,  192,  192,  192,  192,
-      192,  192,  192,  312,  312,  440,  192,  192,  192,  192,
-      192,  253,  257,  312,  257,  257,  257,  257,  257,  257,
-      416,  458,  458,  483,  483,  192,  192,  192,  192,  192,
-      192,  195,  195,  195,  195,  195,  195,  195,  195,  195,
-      195,  335,  416,  257,  195,  195,  195,  195,  195,  264,
-      335,  264,  264,  264,  264,  264,  264,  264,  264,  439,
-      314,  314,  435,  195,  195,  195,  195,  195,  195,  215,
-      314,  215,  215,  215,  215,  215,  215,  215,  215,  265,
-
-      418,  265,  265,  265,  265,  265,  265,  265,  265,  266,
-      360,  266,  266,  266,  266,  266,  266,  266,  266,  360,
-      215,  216,  418,  216,  216,  216,  216,  216,  216,  216,
-      216,  270,  270,  270,  270,  270,  270,  270,  270,  274,
-      274,  274,  274,  274,  274,  274,  274,  496,  496,  274,
-      426,  428,  216,  217,  425,  217,  217,  217,  217,  217,
-      217,  217,  217,  276,  276,  276,  276,  276,  276,  276,
-      276,  279,  361,  279,  279,  279,  279,  279,  279,  279,
-      279,  361,  428,  420,  217,  230,  230,  230,  230,  230,
-      230,  230,  230,  230,  230,  230,  233,  233,  233,  233,
-
-      233,  233,  233,  233,  233,  233,  233,  514,  514,  404,
-      233,  233,  233,  233,  233,  298,  298,  298,  298,  298,
-      298,  298,  298,  301,  301,  301,  301,  301,  301,  233,
-      233,  233,  233,  233,  233,  236,  236,  236,  236,  236,
-      236,  236,  236,  236,  236,  390,  386,  381,  236,  236,
-      236,  236,  236,  300,  300,  300,  300,  300,  300,  300,
-      300,  320,  320,  320,  320,  320,  320,  236,  236,  236,
-      236,  236,  236,  255,  391,  255,  255,  255,  255,  255,
-      255,  255,  255,  303,  391,  303,  303,  303,  303,  303,
-      303,  303,  303,  304,  304,  304,  304,  304,  304,  304,
-
-      304,  377,  376,  375,  255,  256,  392,  256,  256,  256,
-      256,  256,  256,  256,  256,  306,  392,  306,  306,  306,
-      306,  306,  306,  306,  306,  307,  408,  307,  307,  307,
-      307,  307,  307,  307,  307,  408,  256,  262,  262,  262,
-      262,  262,  262,  262,  262,  262,  409,  423,  344,  262,
-      262,  262,  262,  262,  308,  409,  308,  308,  308,  308,
-      308,  308,  354,  354,  354,  354,  354,  354,  262,  262,
-      262,  262,  262,  262,  272,  272,  272,  272,  272,  272,
-      272,  272,  272,  272,  272,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  343,  333,  423,  275,
-
-      275,  275,  275,  275,  313,  313,  313,  313,  313,  313,
-      313,  313,  371,  371,  371,  371,  371,  371,  275,  275,
-      275,  275,  275,  275,  278,  278,  278,  278,  278,  278,
-      278,  278,  278,  278,  332,  326,  325,  278,  278,  278,
-      278,  278,  317,  317,  317,  317,  317,  317,  317,  317,
-      305,  297,  317,  296,  378,  378,  278,  278,  278,  278,
-      278,  278,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  319,  319,  319,  319,  319,  319,  319,  319,  322,
-      394,  322,  322,  322,  322,  322,  322,  322,  322,  498,
-      394,  527,  292,  293,  293,  293,  293,  293,  293,  293,
-
-      293,  293,  378,  295,  338,  338,  338,  338,  338,  338,
-      338,  338,  342,  342,  342,  342,  342,  342,  342,  287,
-      498,  286,  527,  293,  294,  294,  294,  294,  294,  294,
-      294,  294,  294,  338,  345,  345,  345,  345,  345,  345,
-      345,  345,  342,  347,  347,  347,  347,  347,  347,  347,
-      347,  282,  281,  261,  294,  299,  441,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  441,  260,  259,  299,
-      299,  299,  299,  299,  353,  353,  353,  353,  353,  353,
-      353,  353,  400,  400,  400,  400,  400,  400,  299,  299,
-      299,  299,  299,  299,  302,  302,  302,  302,  302,  302,
-
-      302,  302,  302,  258,  248,  247,  302,  302,  302,  302,
-      302,  356,  442,  356,  356,  356,  356,  356,  356,  356,
-      356,  246,  442,  244,  243,  302,  302,  302,  302,  302,
-      302,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  318,  318,  318,  318,  318,  318,  318,  318,
-      318,  318,  318,  242,  241,  240,  318,  318,  318,  318,
-      318,  357,  444,  357,  357,  357,  357,  357,  357,  357,
-      357,  224,  444,  223,  222,  318,  318,  318,  318,  318,
-      318,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      362,  362,  221,  219,  321,  321,  321,  321,  321,  358,
-
-      362,  358,  358,  358,  358,  358,  358,  358,  358,  218,
-      209,  208,  207,  321,  321,  321,  321,  321,  321,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  359,  206,
-      359,  359,  359,  359,  359,  359,  359,  359,  363,  363,
-      364,  364,  364,  364,  364,  364,  364,  364,  363,  340,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  365,
-      365,  368,  368,  368,  368,  368,  368,  368,  368,  365,
-      205,  368,  370,  370,  370,  370,  370,  370,  370,  370,
-      341,  349,  203,  349,  349,  349,  349,  349,  349,  349,
-      349,  349,  352,  202,  352,  352,  352,  352,  352,  352,
-
-      352,  352,  352,  456,  201,  200,  352,  352,  352,  352,
-      352,  372,  456,  372,  372,  372,  372,  372,  372,  372,
-      372,  199,  197,  189,  188,  352,  352,  352,  352,  352,
-      352,  355,  355,  355,  355,  355,  355,  355,  355,  355,
-      185,  184,  177,  355,  355,  355,  355,  355,  387,  477,
-      387,  387,  387,  387,  387,  387,  387,  387,  176,  477,
-      170,  167,  355,  355,  355,  355,  355,  355,  366,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  366,  369,
-      369,  369,  369,  369,  369,  369,  369,  369,  369,  166,
-      410,  410,  165,  369,  369,  369,  369,  369,  380,  388,
-
-      410,  388,  388,  388,  388,  388,  388,  388,  388,  478,
-      422,  422,  369,  369,  369,  369,  369,  369,  380,  478,
-      380,  380,  389,  422,  389,  389,  389,  389,  389,  389,
-      389,  389,  450,  450,  450,  450,  450,  450,  164,  380,
-      382,  163,  382,  382,  382,  382,  382,  382,  382,  382,
-      393,  393,  393,  393,  393,  393,  393,  393,  399,  399,
-      399,  399,  399,  399,  399,  399,  161,  160,  159,  158,
-      157,  382,  383,  480,  383,  383,  383,  383,  383,  383,
-      383,  383,  402,  480,  402,  402,  402,  402,  402,  402,
-      402,  402,  403,  403,  403,  403,  403,  403,  403,  403,
-
-      156,  151,  150,  383,  384,  509,  384,  384,  384,  384,
-      384,  384,  384,  384,  405,  509,  405,  405,  405,  405,
-      405,  405,  405,  405,  406,  144,  406,  406,  406,  406,
-      406,  406,  406,  406,  421,  384,  385,  143,  385,  385,
-      385,  385,  385,  385,  385,  385,  407,  142,  407,  407,
-      407,  407,  407,  407,  421,  138,  421,  421,  137,  433,
-      135,  433,  433,  433,  131,  124,  120,  385,  395,  117,
-      395,  395,  395,  395,  395,  395,  395,  395,  395,  398,
-      110,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      433,  109,  108,  398,  398,  398,  398,  398,  427,  427,
-
-      427,  427,  427,  427,  427,  427,  486,  486,  486,  486,
-      486,  486,  398,  398,  398,  398,  398,  398,  401,  401,
-      401,  401,  401,  401,  401,  401,  401,  427,  107,  106,
-      401,  401,  401,  401,  401,  434,  434,  434,  434,  434,
-      434,  434,  434,  534,  534,  534,  534,  534,  534,  401,
-      401,  401,  401,  401,  401,  413,  413,  413,  413,  413,
-      413,  413,  413,  413,  413,  429,  101,  429,  429,  429,
-      429,  429,  429,  429,  429,  436,  100,  436,  436,  436,
-      436,  436,  436,  436,  436,  437,   98,  437,  437,  437,
-      437,  437,  437,  437,  437,   94,  429,  430,   90,  430,
-
-      430,  430,  430,  430,  430,  430,  430,  438,   89,  438,
-      438,  438,  438,  438,  438,  443,  443,  443,  443,  443,
-      443,  443,  443,   85,   82,   80,   76,   75,  430,  431,
-       74,  431,  431,  431,  431,  431,  431,  431,  431,  449,
-      449,  449,  449,  449,  449,  449,  449,  452,   72,  452,
-      452,  452,  452,  452,  452,  452,  452,   67,   60,   53,
-      431,  432,   47,  432,  432,  432,  432,  432,  432,  432,
-      432,  453,  453,  453,  453,  453,  453,  453,  453,  453,
-      454,  454,  454,  454,  454,  454,  454,  454,  454,   46,
-       45,   44,  432,  445,   43,  445,  445,  445,  445,  445,
-
-      445,  445,  445,  445,  448,   42,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,   36,   35,   34,  448,  448,
-      448,  448,  448,  455,  455,  455,  455,  455,  455,  455,
-      455,  455,  471,  471,  471,   32,   28,  448,  448,  448,
-      448,  448,  448,  451,  451,  451,  451,  451,  451,  451,
-      451,   22,  515,  515,   19,  451,  451,  451,  451,  451,
-      464,  471,  464,   17,  464,  515,  464,  464,   15,   14,
-      464,   13,    0,    0,  451,  451,  451,  451,  451,  451,
-        0,    0,  464,  464,  464,  466,    0,  466,    0,  466,
-        0,  466,  466,    0,    0,  466,  470,  470,  470,  470,
-
-      470,  470,  470,  470,    0,    0,    0,  466,  466,  466,
-      467,    0,  467,  467,  467,  467,  467,  467,  467,  467,
-        0,    0,    0,    0,  472,  470,  472,  472,  472,  472,
-      472,  472,  472,  472,  491,  491,  491,  491,  491,  491,
-      491,  467,  468,    0,  468,  468,  468,  468,  468,  468,
-      468,  468,  473,    0,  473,  473,  473,  473,  473,  473,
-      473,  473,  474,    0,  474,  474,  474,  474,  474,  474,
-      474,  474,    0,  468,  469,    0,  469,  469,  469,  469,
-      469,  469,  469,  469,  479,  479,  479,  479,  479,  479,
-      479,  479,  485,  485,  485,  485,  485,  485,  485,  485,
-
-        0,    0,    0,    0,    0,  469,  481,    0,  481,  481,
-      481,  481,  481,  481,  481,  481,  481,  484,    0,  484,
-      484,  484,  484,  484,  484,  484,  484,    0,    0,    0,
-        0,  484,  484,  484,  484,  484,  487,    0,  487,  487,
-      487,  487,  487,  487,  487,  487,    0,    0,    0,    0,
-      484,  484,  484,  484,  484,  484,  489,  489,  489,  489,
-      489,  489,  489,  489,  489,  490,  490,  490,  490,  490,
-      490,  490,  490,  490,  497,  497,  497,  497,  497,  497,
-      497,  497,    0,  501,    0,  501,  501,  501,  501,  501,
-      501,  502,  502,  502,  502,  502,  502,  502,  502,    0,
-
-        0,    0,    0,  497,  499,    0,  499,  499,  499,  499,
-      499,  499,  499,  499,  501,  504,    0,  504,  504,  504,
-      504,  504,  504,  504,  504,  505,    0,  505,  505,  505,
-      505,  505,  505,  505,  505,  499,  500,    0,  500,  500,
-      500,  500,  500,  500,  500,  500,  506,    0,  506,  506,
-      506,  506,  506,  506,  512,    0,  512,  512,  512,  512,
-      512,  512,  512,  512,    0,    0,    0,  500,  516,    0,
-      516,  516,  516,  516,  516,  516,  516,  516,  519,  519,
-      519,  519,  519,  519,  519,  519,  520,  520,  520,  520,
-      520,  520,  520,  520,    0,    0,    0,    0,    0,  516,
-
-      517,    0,  517,  517,  517,  517,  517,  517,  517,  517,
-      521,  521,  521,  521,  521,  521,  521,  521,  526,  526,
-      526,  526,  526,  526,  526,  526,    0,    0,    0,    0,
-        0,  517,  518,    0,  518,  518,  518,  518,  518,  518,
-      518,  518,    0,    0,    0,    0,  530,  526,  530,  530,
-      530,  530,  530,  530,  532,  532,  532,  532,  532,  532,
-      532,  532,    0,  518,  528,    0,  528,  528,  528,  528,
-      528,  528,  528,  528,    0,    0,    0,  530,  533,  533,
-      533,  533,  533,  533,  533,  533,  538,  538,  538,  538,
-      538,  538,  538,  538,    0,  528,  529,    0,  529,  529,
-
-      529,  529,  529,  529,  529,  529,  539,  539,  539,  539,
-      539,  539,  539,  539,    0,  538,  540,  540,  540,  540,
-      540,  540,  540,  540,    0,    0,    0,  529,  543,  543,
-      543,  543,  543,  543,    0,  539,  542,  542,  542,  542,
-      542,  542,  542,  542,    0,  540,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  543,    0,    0,
-        0,    0,    0,    0,    0,  542,  545,  545,  545,  545,
-      545,  545,  545,  545,  545,  545,  545,  545,  545,  546,
-      546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
-      546,  546,  547,  547,  547,  547,  547,  547,  547,  547,
-
-      547,  547,  547,  547,  547,  548,  548,  548,  548,  548,
-      548,  548,  548,  548,  548,  548,  548,  548,  549,    0,
-        0,    0,  549,    0,  549,  549,  549,    0,  549,  549,
-      549,  550,  550,  550,  550,  550,  550,  550,  550,  550,
-      550,  550,  550,  550,  551,    0,    0,    0,  551,    0,
-      551,  551,  551,    0,  551,  551,  551,  552,    0,    0,
-        0,  552,    0,  552,  552,  552,    0,  552,  552,  552,
-      553,    0,    0,  553,  553,    0,  553,  553,  553,    0,
-      553,  553,  553,  554,  554,    0,    0,  554,  555,    0,
-        0,  555,  555,    0,  555,  555,  555,    0,  555,  555,
-
-      555,  556,    0,    0,  556,  556,  556,  556,  556,  556,
-        0,    0,  556,  556,  557,  557,  558,    0,    0,  558,
-        0,    0,  558,  558,  558,  558,  558,  558,  558,  559,
-      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
-      559,  559,  560,  560,    0,  560,    0,  560,  560,  560,
-      560,  560,  560,  560,  560,  561,  561,  561,  561,  561,
-      561,  561,  561,  561,  561,  561,  561,  561,  562,  562,
-        0,  562,  562,  562,  562,  562,  562,  562,  562,  562,
-      562,  563,    0,    0,  563,  563,    0,  563,  563,  563,
-        0,  563,  563,  563,  564,  564,    0,    0,  564,  565,
-
-      565,  565,    0,    0,  565,  566,    0,    0,  566,  566,
-        0,  566,  566,  566,    0,  566,  566,  566,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  568,  568,    0,    0,  568,  569,  569,  569,    0,
-        0,  569,  570,  570,    0,    0,  570,  571,  571,    0,
-        0,  571,  572,  572,    0,    0,  572,  573,  573,  573,
-        0,    0,  573,  574,  574,    0,    0,  574,  575,  575,
-        0,    0,  575,  576,  576,    0,    0,  576,  577,  577,
-      577,    0,    0,  577,  578,  578,  578,  578,    0,    0,
-      578,  579,  579,    0,    0,  579,  580,  580,    0,    0,
-
-      580,  581,  581,    0,    0,  581,  582,  582,  582,    0,
-        0,  582,  583,  583,  583,  583,    0,    0,  583,  584,
-      584,    0,    0,  584,  585,  585,    0,    0,  585,  586,
-      586,  586,    0,    0,  586,  587,  587,  587,  587,    0,
-        0,  587,  588,  588,    0,    0,  588,  589,    0,  589,
-      589,    0,    0,  589,  590,  590,  590,    0,    0,  590,
-      591,  591,  591,  591,    0,    0,  591,  592,  592,    0,
-        0,  592,  593,    0,  593,  593,    0,    0,  593,  594,
-      594,  594,    0,    0,  594,  595,  595,  595,    0,    0,
-        0,  595,  596,    0,    0,    0,  596,    0,  596,  596,
-
-      596,    0,  596,  596,  596,  597,    0,    0,    0,  597,
-        0,  597,  597,  597,    0,  597,  597,  597,  598,  598,
-        0,    0,  598,  599,    0,  599,  599,    0,    0,  599,
-      600,  600,    0,    0,    0,  600,  601,  601,  601,  601,
-      601,  601,  601,  601,  601,  601,  601,  601,  601,  602,
-      602,    0,    0,  602,  603,    0,  603,  603,    0,    0,
-      603,  604,  604,    0,    0,  604,  605,    0,  605,    0,
-        0,    0,  605,  606,    0,    0,    0,  606,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-      544,  544,  544,  544
+        8,    9,    9,    9,    9,    9,  119,  129,  129,   50,
+        9,    9,    9,   50,   50,   57,   57,   57,  119,   57,
+      117,  103,  143,   57,    9,   57,  103,  219,  103,   88,
+      168,   50,  159,   88,   88,  133,  133,   57,   57,  145,
+      145,  159,  219,  168,    9,   10,   10,   10,   10,   10,
+
+       50,   88,  179,  144,   10,   10,   10,   74,   57,   74,
+      531,   74,  294,   74,   74,  143,  179,   74,   10,  174,
+       88,   95,   95,   95,   95,   95,   95,   95,   95,   74,
+       74,   74,   97,   97,   97,   97,   97,   97,   10,   18,
+      181,   18,   18,   18,  144,   18,   18,  530,   85,   18,
+       85,  177,   85,  181,   85,   85,  109,  196,   85,  294,
+      189,   18,   18,   18,  123,  174,  196,  177,  123,  123,
+       85,   85,   85,   96,   96,   96,   96,   96,   96,   96,
+       96,  189,   18,   19,  109,  109,  123,  528,  109,  255,
+      140,  140,  109,   19,  204,  109,   19,   19,   19,   19,
+
+       19,   19,   19,   19,   26,  123,   26,   26,   26,   26,
+       26,   26,   26,   26,   26,  185,  204,  210,   26,   26,
+       26,   26,   26,  210,  517,   91,   91,   91,   91,   91,
+       91,   91,   91,  140,  256,   26,  260,   26,   26,   26,
+       26,   26,   26,   32,  217,  217,  185,   32,  255,   32,
+      516,  256,   32,   32,   91,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,  260,  514,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+
+       32,   32,   32,   32,   32,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,  193,  193,  193,   34,   34,   34,
+       34,   34,  122,  122,  122,  122,  122,  122,  122,  122,
+      200,  200,  200,  200,  200,  200,   34,   34,   34,   34,
+       34,   34,   38,   38,   38,  216,   38,  342,   38,   38,
+      220,   87,   38,   87,  231,   87,  220,   87,   87,  233,
+      233,   87,  342,  231,   38,   38,   38,   42,  136,  233,
+      513,  136,  136,   87,   87,   87,  434,   42,  136,  218,
+       42,   42,   42,   42,   42,   42,   42,   42,   90,  509,
+       90,  136,   90,  340,   90,   90,  500,  216,   90,  125,
+
+      218,  125,  244,  125,  151,  125,  125,  434,  151,  125,
+       90,   90,   90,  430,  151,  235,  235,  218,   42,   58,
+      295,  125,  125,  125,  244,  235,  151,  151,  430,   58,
+      295,  429,   58,   58,   58,   58,   58,   58,   58,   58,
+       77,  340,   77,   77,   77,  345,   77,   77,  357,  357,
+       77,  132,  132,  132,  132,  132,  132,  132,  132,  269,
+      251,  258,   77,   77,   77,  251,  258,  273,  269,  291,
+      180,  274,  274,  286,  180,  345,  273,  385,  291,  385,
+      180,  274,  429,   77,   92,   92,   92,   92,   92,   92,
+       92,   92,  180,  180,  498,  286,   92,   92,   92,   92,
+
+       92,  184,  184,  184,  184,  184,  184,  184,  184,  241,
+      241,  241,  241,  241,  241,   92,   92,   92,   92,   92,
+       92,  100,  100,  100,  100,  100,  100,  100,  100,  289,
+      184,  296,  494,  100,  100,  100,  100,  100,  188,  297,
+      188,  188,  188,  188,  188,  188,  290,  296,  297,  275,
+      275,  289,  100,  100,  100,  100,  100,  100,  152,  275,
+      152,  152,  152,  152,  152,  152,  152,  152,  290,  188,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  197,
+      197,  197,  197,  197,  197,  197,  197,  403,  403,  152,
+      153,  482,  153,  153,  153,  153,  153,  153,  153,  153,
+
+      199,  199,  199,  199,  199,  199,  199,  199,  202,  315,
+      202,  202,  202,  202,  202,  202,  202,  202,  315,  384,
+      384,  153,  154,  481,  154,  154,  154,  154,  154,  154,
+      154,  154,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  232,  232,  232,  232,  232,  232,  232,  232,  337,
+      343,  417,  417,  154,  155,  316,  155,  155,  155,  155,
+      155,  155,  155,  155,  316,  337,  343,  384,  155,  155,
+      155,  155,  155,  234,  234,  234,  234,  234,  234,  234,
+      234,  283,  283,  283,  283,  283,  283,  155,  155,  155,
+      155,  155,  155,  158,  158,  158,  158,  158,  158,  158,
+
+      158,  158,  418,  418,  471,  158,  158,  158,  158,  158,
+      238,  238,  238,  238,  238,  238,  238,  238,  329,  333,
+      238,  421,  421,  469,  158,  158,  158,  158,  158,  158,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      329,  333,  467,  160,  160,  160,  160,  160,  240,  240,
+      240,  240,  240,  240,  240,  240,  307,  307,  307,  307,
+      307,  307,  160,  160,  160,  160,  160,  160,  161,  161,
+      161,  161,  161,  161,  161,  161,  277,  277,  453,  453,
+      161,  161,  161,  161,  161,  243,  277,  243,  243,  243,
+      243,  243,  243,  243,  243,  335,  317,  317,  467,  161,
+
+      161,  161,  161,  161,  161,  186,  317,  186,  186,  186,
+      186,  186,  186,  186,  186,  468,  379,  335,  259,  259,
+      259,  259,  259,  259,  259,  259,  263,  466,  263,  263,
+      263,  263,  263,  263,  464,  464,  186,  187,  379,  187,
+      187,  187,  187,  187,  187,  187,  187,  259,  276,  276,
+      276,  276,  276,  276,  276,  276,  270,  263,  270,  270,
+      270,  270,  270,  270,  270,  270,  489,  489,  187,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
+      341,  502,  502,  198,  198,  198,  198,  198,  271,  341,
+      271,  271,  271,  271,  271,  271,  271,  271,  380,  520,
+
+      520,  465,  198,  198,  198,  198,  198,  198,  201,  201,
+      201,  201,  201,  201,  201,  201,  201,  201,  366,  463,
+      380,  201,  201,  201,  201,  201,  272,  366,  272,  272,
+      272,  272,  272,  272,  272,  272,  446,  318,  318,  445,
+      201,  201,  201,  201,  201,  201,  221,  318,  221,  221,
+      221,  221,  221,  221,  221,  221,  280,  280,  280,  280,
+      280,  280,  280,  280,  441,  352,  280,  282,  282,  282,
+      282,  282,  282,  282,  282,  352,  504,  221,  222,  354,
+      222,  222,  222,  222,  222,  222,  222,  222,  285,  354,
+      285,  285,  285,  285,  285,  285,  285,  285,  304,  304,
+
+      304,  304,  304,  304,  304,  304,  432,  504,  533,  222,
+      223,  431,  223,  223,  223,  223,  223,  223,  223,  223,
+      306,  306,  306,  306,  306,  306,  306,  306,  309,  367,
+      309,  309,  309,  309,  309,  309,  309,  309,  367,  533,
+      426,  223,  236,  236,  236,  236,  236,  236,  236,  236,
+      236,  236,  236,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  410,  396,  392,  239,  239,  239,
+      239,  239,  310,  310,  310,  310,  310,  310,  310,  310,
+      326,  326,  326,  326,  326,  326,  239,  239,  239,  239,
+      239,  239,  242,  242,  242,  242,  242,  242,  242,  242,
+
+      242,  242,  414,  387,  383,  242,  242,  242,  242,  242,
+      312,  414,  312,  312,  312,  312,  312,  312,  312,  312,
+      382,  320,  320,  381,  242,  242,  242,  242,  242,  242,
+      261,  320,  261,  261,  261,  261,  261,  261,  261,  261,
+      313,  397,  313,  313,  313,  313,  313,  313,  313,  313,
+      314,  397,  314,  314,  314,  314,  314,  314,  350,  349,
+      339,  261,  262,  338,  262,  262,  262,  262,  262,  262,
+      262,  262,  319,  319,  319,  319,  319,  319,  319,  319,
+      323,  323,  323,  323,  323,  323,  323,  323,  332,  331,
+      323,  428,  428,  262,  268,  268,  268,  268,  268,  268,
+
+      268,  268,  268,  311,  428,  303,  268,  268,  268,  268,
+      268,  325,  325,  325,  325,  325,  325,  325,  325,  360,
+      360,  360,  360,  360,  360,  268,  268,  268,  268,  268,
+      268,  278,  278,  278,  278,  278,  278,  278,  278,  278,
+      278,  278,  281,  281,  281,  281,  281,  281,  281,  281,
+      281,  281,  281,  302,  301,  293,  281,  281,  281,  281,
+      281,  328,  398,  328,  328,  328,  328,  328,  328,  328,
+      328,  422,  398,  292,  288,  281,  281,  281,  281,  281,
+      281,  284,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  287,  267,  422,  284,  284,  284,  284,  284,  344,
+
+      344,  344,  344,  344,  344,  344,  344,  377,  377,  377,
+      377,  377,  377,  284,  284,  284,  284,  284,  284,  298,
+      298,  298,  298,  298,  298,  298,  298,  298,  344,  348,
+      348,  348,  348,  348,  348,  348,  351,  351,  351,  351,
+      351,  351,  351,  351,  266,  265,  264,  254,  253,  298,
+      299,  299,  299,  299,  299,  299,  299,  299,  299,  348,
+      353,  353,  353,  353,  353,  353,  353,  353,  359,  359,
+      359,  359,  359,  359,  359,  359,  252,  250,  249,  248,
+      299,  300,  300,  300,  300,  300,  300,  300,  300,  300,
+      362,  400,  362,  362,  362,  362,  362,  362,  362,  362,
+
+      363,  400,  363,  363,  363,  363,  363,  363,  363,  363,
+      247,  300,  305,  246,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  415,  230,  229,  305,  305,  305,  305,
+      305,  364,  415,  364,  364,  364,  364,  364,  364,  364,
+      364,  228,  227,  225,  224,  305,  305,  305,  305,  305,
+      305,  308,  308,  308,  308,  308,  308,  308,  308,  308,
+      215,  214,  213,  308,  308,  308,  308,  308,  365,  447,
+      365,  365,  365,  365,  365,  365,  365,  365,  212,  447,
+      211,  209,  308,  308,  308,  308,  308,  308,  321,  321,
+      321,  321,  321,  321,  321,  321,  321,  321,  321,  324,
+
+      324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+      368,  368,  208,  324,  324,  324,  324,  324,  369,  369,
+      368,  371,  371,  207,  206,  205,  424,  386,  369,  203,
+      195,  371,  324,  324,  324,  324,  324,  324,  327,  327,
+      327,  327,  327,  327,  327,  327,  327,  386,  424,  386,
+      386,  327,  327,  327,  327,  327,  370,  370,  370,  370,
+      370,  370,  370,  370,  477,  477,  477,  194,  386,  191,
+      327,  327,  327,  327,  327,  327,  346,  346,  346,  346,
+      346,  346,  346,  346,  346,  374,  374,  374,  374,  374,
+      374,  374,  374,  477,  448,  374,  376,  376,  376,  376,
+
+      376,  376,  376,  376,  448,  190,  346,  347,  347,  347,
+      347,  347,  347,  347,  347,  347,  378,  450,  378,  378,
+      378,  378,  378,  378,  378,  378,  393,  450,  393,  393,
+      393,  393,  393,  393,  393,  393,  183,  347,  355,  182,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  358,
+      176,  358,  358,  358,  358,  358,  358,  358,  358,  358,
+      462,  173,  172,  358,  358,  358,  358,  358,  394,  462,
+      394,  394,  394,  394,  394,  394,  394,  394,  171,  170,
+      169,  167,  358,  358,  358,  358,  358,  358,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  166,  165,  164,
+
+      361,  361,  361,  361,  361,  395,  483,  395,  395,  395,
+      395,  395,  395,  395,  395,  163,  483,  162,  157,  361,
+      361,  361,  361,  361,  361,  372,  372,  372,  372,  372,
+      372,  372,  372,  372,  372,  372,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  156,  150,  149,  147,
+      375,  375,  375,  375,  375,  399,  399,  399,  399,  399,
+      399,  399,  399,  406,  406,  406,  406,  406,  406,  375,
+      375,  375,  375,  375,  375,  388,  146,  388,  388,  388,
+      388,  388,  388,  388,  388,  405,  405,  405,  405,  405,
+      405,  405,  405,  408,  484,  408,  408,  408,  408,  408,
+
+      408,  408,  408,  142,  484,  141,  388,  389,  139,  389,
+      389,  389,  389,  389,  389,  389,  389,  409,  409,  409,
+      409,  409,  409,  409,  409,  411,  486,  411,  411,  411,
+      411,  411,  411,  411,  411,  135,  486,  128,  389,  390,
+      515,  390,  390,  390,  390,  390,  390,  390,  390,  412,
+      515,  412,  412,  412,  412,  412,  412,  412,  412,  413,
+      124,  413,  413,  413,  413,  413,  413,  427,  121,  114,
+      390,  391,  113,  391,  391,  391,  391,  391,  391,  391,
+      391,  416,  416,  112,  111,  110,  105,  427,  104,  427,
+      427,  416,  102,   98,  439,   94,  439,  439,  439,   93,
+
+       89,   86,  391,  401,   84,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  404,   80,  404,  404,  404,  404,
+      404,  404,  404,  404,  404,  439,   79,   78,  404,  404,
+      404,  404,  404,  433,  433,  433,  433,  433,  433,  433,
+      433,  456,  456,  456,  456,  456,  456,  404,  404,  404,
+      404,  404,  404,  407,  407,  407,  407,  407,  407,  407,
+      407,  407,  433,   76,   75,  407,  407,  407,  407,  407,
+      440,  440,  440,  440,  440,  440,  440,  440,  492,  492,
+      492,  492,  492,  492,  407,  407,  407,  407,  407,  407,
+      419,  419,  419,  419,  419,  419,  419,  419,  419,  419,
+
+      435,   73,  435,  435,  435,  435,  435,  435,  435,  435,
+      442,   68,  442,  442,  442,  442,  442,  442,  442,  442,
+      443,   61,  443,  443,  443,  443,  443,  443,  443,  443,
+       54,  435,  436,   48,  436,  436,  436,  436,  436,  436,
+      436,  436,  444,   47,  444,  444,  444,  444,  444,  444,
+      449,  449,  449,  449,  449,  449,  449,  449,   46,   45,
+       44,   43,   37,  436,  437,   36,  437,  437,  437,  437,
+      437,  437,  437,  437,  455,  455,  455,  455,  455,  455,
+      455,  455,  458,   35,  458,  458,  458,  458,  458,  458,
+      458,  458,   33,   29,   23,  437,  438,   20,  438,  438,
+
+      438,  438,  438,  438,  438,  438,  459,  459,  459,  459,
+      459,  459,  459,  459,  459,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,   17,   15,   14,  438,  451,   13,
+      451,  451,  451,  451,  451,  451,  451,  451,  451,  454,
+        0,  454,  454,  454,  454,  454,  454,  454,  454,  454,
+        0,    0,    0,  454,  454,  454,  454,  454,  461,  461,
+      461,  461,  461,  461,  461,  461,  461,    0,    0,    0,
+        0,    0,  454,  454,  454,  454,  454,  454,  457,  457,
+      457,  457,  457,  457,  457,  457,    0,  521,  521,    0,
+      457,  457,  457,  457,  457,  470,    0,  470,    0,  470,
+
+      521,  470,  470,    0,    0,  470,    0,    0,    0,  457,
+      457,  457,  457,  457,  457,    0,    0,  470,  470,  470,
+      472,    0,  472,    0,  472,    0,  472,  472,    0,    0,
+      472,  476,  476,  476,  476,  476,  476,  476,  476,    0,
+        0,    0,  472,  472,  472,  473,    0,  473,  473,  473,
+      473,  473,  473,  473,  473,    0,    0,    0,    0,  478,
+      476,  478,  478,  478,  478,  478,  478,  478,  478,  497,
+      497,  497,  497,  497,  497,  497,  473,  474,    0,  474,
+      474,  474,  474,  474,  474,  474,  474,  479,    0,  479,
+      479,  479,  479,  479,  479,  479,  479,  480,    0,  480,
+
+      480,  480,  480,  480,  480,  480,  480,    0,  474,  475,
+        0,  475,  475,  475,  475,  475,  475,  475,  475,  485,
+      485,  485,  485,  485,  485,  485,  485,  491,  491,  491,
+      491,  491,  491,  491,  491,    0,    0,    0,    0,    0,
+      475,  487,    0,  487,  487,  487,  487,  487,  487,  487,
+      487,  487,  490,    0,  490,  490,  490,  490,  490,  490,
+      490,  490,    0,    0,    0,    0,  490,  490,  490,  490,
+      490,  493,    0,  493,  493,  493,  493,  493,  493,  493,
+      493,    0,    0,    0,    0,  490,  490,  490,  490,  490,
+      490,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+
+      496,  496,  496,  496,  496,  496,  496,  496,  496,  503,
+      503,  503,  503,  503,  503,  503,  503,    0,  507,    0,
+      507,  507,  507,  507,  507,  507,  508,  508,  508,  508,
+      508,  508,  508,  508,    0,    0,    0,    0,  503,  505,
+        0,  505,  505,  505,  505,  505,  505,  505,  505,  507,
+      510,    0,  510,  510,  510,  510,  510,  510,  510,  510,
+      511,    0,  511,  511,  511,  511,  511,  511,  511,  511,
+      505,  506,    0,  506,  506,  506,  506,  506,  506,  506,
+      506,  512,    0,  512,  512,  512,  512,  512,  512,  518,
+        0,  518,  518,  518,  518,  518,  518,  518,  518,    0,
+
+        0,    0,  506,  522,    0,  522,  522,  522,  522,  522,
+      522,  522,  522,  525,  525,  525,  525,  525,  525,  525,
+      525,  526,  526,  526,  526,  526,  526,  526,  526,    0,
+        0,    0,    0,    0,  522,  523,    0,  523,  523,  523,
+      523,  523,  523,  523,  523,  527,  527,  527,  527,  527,
+      527,  527,  527,  532,  532,  532,  532,  532,  532,  532,
+      532,    0,    0,    0,    0,    0,  523,  524,    0,  524,
+      524,  524,  524,  524,  524,  524,  524,    0,    0,    0,
+        0,  536,  532,  536,  536,  536,  536,  536,  536,  538,
+      538,  538,  538,  538,  538,  538,  538,    0,  524,  534,
+
+        0,  534,  534,  534,  534,  534,  534,  534,  534,    0,
+        0,    0,  536,  539,  539,  539,  539,  539,  539,  539,
+      539,  540,  540,  540,  540,  540,  540,    0,    0,    0,
+      534,  535,    0,  535,  535,  535,  535,  535,  535,  535,
+      535,  544,  544,  544,  544,  544,  544,  544,  544,  545,
+      545,  545,  545,  545,  545,  545,  545,    0,    0,    0,
+        0,    0,  535,    0,    0,    0,    0,    0,    0,    0,
+      544,  549,  549,  549,  549,  549,  549,    0,  545,  546,
+      546,  546,  546,  546,  546,  546,  546,  548,  548,  548,
+      548,  548,  548,  548,  548,    0,    0,    0,    0,    0,
+
+      549,    0,    0,    0,    0,    0,    0,    0,  546,    0,
+        0,    0,    0,    0,    0,    0,  548,  551,  551,  551,
+      551,  551,  551,  551,  551,  551,  551,  551,  551,  551,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      552,  552,  552,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  554,  554,  554,  554,
+      554,  554,  554,  554,  554,  554,  554,  554,  554,  555,
+        0,    0,    0,  555,    0,  555,  555,  555,    0,  555,
+      555,  555,  556,  556,    0,  556,  556,  556,  556,  556,
+      556,  556,  556,  556,  556,  557,  557,  557,  557,  557,
+
+      557,  557,  557,  557,  557,  557,  557,  557,  558,    0,
+        0,    0,  558,    0,  558,  558,  558,    0,  558,  558,
+      558,  559,    0,    0,    0,  559,    0,  559,  559,  559,
+        0,  559,  559,  559,  560,    0,    0,  560,  560,    0,
+      560,  560,  560,    0,  560,  560,  560,  561,  561,    0,
+        0,  561,  562,    0,    0,  562,  562,    0,  562,  562,
+      562,    0,  562,  562,  562,  563,    0,    0,  563,  563,
+      563,  563,  563,  563,    0,    0,  563,  563,  564,  564,
+      565,    0,    0,  565,    0,    0,  565,  565,  565,  565,
+      565,  565,  565,  566,  566,  566,  566,  566,  566,  566,
+
+      566,  566,  566,  566,  566,  566,  567,  567,    0,  567,
+        0,  567,  567,  567,  567,  567,  567,  567,  567,  568,
+      568,    0,  568,  568,  568,  568,  568,  568,  568,  568,
+      568,  568,  569,  569,  569,  569,  569,  569,  569,  569,
+      569,  569,  569,  569,  569,  570,  570,    0,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  571,    0,
+        0,  571,  571,    0,  571,  571,  571,    0,  571,  571,
+      571,  572,  572,    0,    0,  572,  573,  573,  573,    0,
+        0,  573,  574,    0,    0,  574,  574,    0,  574,  574,
+      574,    0,  574,  574,  574,  575,  575,  575,  575,  575,
+
+      575,  575,  575,  575,  575,  575,  575,  575,  576,  576,
+        0,    0,  576,  577,  577,  577,    0,    0,  577,  578,
+      578,    0,    0,  578,  579,  579,    0,    0,  579,  580,
+      580,    0,    0,  580,  581,  581,  581,    0,    0,  581,
+      582,  582,    0,    0,  582,  583,  583,    0,    0,  583,
+      584,  584,    0,    0,  584,  585,  585,  585,    0,    0,
+      585,  586,  586,  586,  586,    0,    0,  586,  587,  587,
+        0,    0,  587,  588,  588,    0,    0,  588,  589,  589,
+        0,    0,  589,  590,  590,  590,    0,    0,  590,  591,
+      591,  591,  591,    0,    0,  591,  592,  592,    0,    0,
+
+      592,  593,  593,    0,    0,  593,  594,  594,  594,    0,
+        0,  594,  595,  595,  595,  595,    0,    0,  595,  596,
+      596,    0,    0,  596,  597,    0,  597,  597,    0,    0,
+      597,  598,  598,  598,    0,    0,  598,  599,  599,  599,
+      599,    0,    0,  599,  600,  600,    0,    0,  600,  601,
+        0,  601,  601,    0,    0,  601,  602,  602,  602,    0,
+        0,  602,  603,  603,  603,    0,    0,    0,  603,  604,
+        0,    0,    0,  604,    0,  604,  604,  604,    0,  604,
+      604,  604,  605,    0,    0,    0,  605,    0,  605,  605,
+      605,    0,  605,  605,  605,  606,  606,    0,    0,  606,
+
+      607,    0,  607,  607,    0,    0,  607,  608,  608,    0,
+        0,    0,  608,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  610,  610,    0,    0,
+      610,  611,    0,  611,  611,    0,    0,  611,  612,  612,
+        0,    0,  612,  613,    0,  613,    0,    0,    0,  613,
+      614,    0,    0,    0,  614,  615,  615,  615,  615,  615,
+      615,  615,  615,  615,  615,  615,  615,  615,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1438,7 +1458,7 @@ extern void yyerror               __P((const char *));
 
 #define INSTR 5
 
-#line 1442 "lex.yy.c"
+#line 1462 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1594,7 +1614,7 @@ YY_DECL
 
 #line 131 "toke.l"
 
-#line 1598 "lex.yy.c"
+#line 1618 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1646,13 +1666,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 >= 545 )
+                               if ( yy_current_state >= 551 )
                                        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] != 3392 );
+               while ( yy_base[yy_current_state] != 3469 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2103,65 +2123,85 @@ YY_RULE_SETUP
 case 37:
 YY_RULE_SETUP
 #line 446 "toke.l"
+{
+                           /* a quoted user/group name */
+                           if (!fill(yytext + 1, yyleng - 2))
+                               yyterminate();
+                           switch (yytext[1]) {
+                           case '%':
+                               LEXTRACE("USERGROUP ");
+                               return(USERGROUP);
+                           case '+':
+                               LEXTRACE("NETGROUP ");
+                               return(NETGROUP);
+                           default:
+                               LEXTRACE("WORD(4) ");
+                               return(WORD);
+                           }
+                       }
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 463 "toke.l"
 {
                            /* a word */
                            if (!fill(yytext, yyleng))
                                yyterminate();
-                           LEXTRACE("WORD(4) ");
+                           LEXTRACE("WORD(5) ");
                            return(WORD);
                        }
        YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
-#line 454 "toke.l"
+#line 471 "toke.l"
 {
                            LEXTRACE("( ");
                            return ('(');
                        }
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 459 "toke.l"
+#line 476 "toke.l"
 {
                            LEXTRACE(") ");
                            return(')');
                        }
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 464 "toke.l"
+#line 481 "toke.l"
 {
                            LEXTRACE(", ");
                            return(',');
                        }                       /* return ',' */
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 469 "toke.l"
+#line 486 "toke.l"
 {
                            LEXTRACE("= ");
                            return('=');
                        }                       /* return '=' */
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 474 "toke.l"
+#line 491 "toke.l"
 {
                            LEXTRACE(": ");
                            return(':');
                        }                       /* return ':' */
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 479 "toke.l"
+#line 496 "toke.l"
 {
                            if (yyleng % 2 == 1)
                                return('!');    /* return '!' */
                        }
        YY_BREAK
-case 44:
+case 45:
 YY_RULE_SETUP
-#line 484 "toke.l"
+#line 501 "toke.l"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -2169,25 +2209,25 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* return newline */
        YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 491 "toke.l"
+#line 508 "toke.l"
 {                      /* throw away space/tabs */
                            sawspace = TRUE;    /* but remember for fill_args */
                        }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 495 "toke.l"
+#line 512 "toke.l"
 {
                            sawspace = TRUE;    /* remember for fill_args */
                            ++sudolineno;
                            LEXTRACE("\n\t");
                        }                       /* throw away EOL after \ */
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 501 "toke.l"
+#line 518 "toke.l"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -2195,9 +2235,9 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* comment, not uid/gid */
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 508 "toke.l"
+#line 525 "toke.l"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
@@ -2209,7 +2249,7 @@ case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
 case YY_STATE_EOF(INSTR):
-#line 513 "toke.l"
+#line 530 "toke.l"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
@@ -2220,12 +2260,12 @@ case YY_STATE_EOF(INSTR):
                                yyterminate();
                        }
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 523 "toke.l"
+#line 540 "toke.l"
 ECHO;
        YY_BREAK
-#line 2229 "lex.yy.c"
+#line 2269 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -2516,7 +2556,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 >= 545 )
+                       if ( yy_current_state >= 551 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2551,11 +2591,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 >= 545 )
+               if ( yy_current_state >= 551 )
                        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 == 544);
+       yy_is_jam = (yy_current_state == 550);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -3114,7 +3154,7 @@ int main()
        return 0;
        }
 #endif
-#line 523 "toke.l"
+#line 540 "toke.l"
 
 static int
 _fill(src, len, olen)
diff --git a/toke.l b/toke.l
index ae22ee90921374ac9eae41020d9a9daece437dae..4f990d6fb3ccb23f35d31ab8f170557bbd4af2f3 100644 (file)
--- a/toke.l
+++ b/toke.l
@@ -443,11 +443,28 @@ sudoedit          {
                            }
                        }                       /* a pathname */
 
+<INITIAL,GOTDEFS>\"[^"\n]+\" {
+                           /* a quoted user/group name */
+                           if (!fill(yytext + 1, yyleng - 2))
+                               yyterminate();
+                           switch (yytext[1]) {
+                           case '%':
+                               LEXTRACE("USERGROUP ");
+                               return(USERGROUP);
+                           case '+':
+                               LEXTRACE("NETGROUP ");
+                               return(NETGROUP);
+                           default:
+                               LEXTRACE("WORD(4) ");
+                               return(WORD);
+                           }
+                       }
+
 <INITIAL,GOTDEFS>({ID}|{WORD}) {
                            /* a word */
                            if (!fill(yytext, yyleng))
                                yyterminate();
-                           LEXTRACE("WORD(4) ");
+                           LEXTRACE("WORD(5) ");
                            return(WORD);
                        }