From fc4cfe96127629de8c03a4e279e228b2716028bd Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 1 Feb 2011 15:01:54 -0500 Subject: [PATCH] match quoted strings the same way whether in a Defaults line or as a user/group/netgroup name. Fixes escaped double quotes in quoted user/group/netgroup names. --HG-- branch : 1.7 --- toke.c | 2157 ++++++++++++++++++++++++++++---------------------------- toke.l | 37 +- 2 files changed, 1101 insertions(+), 1093 deletions(-) diff --git a/toke.c b/toke.c index b35f3d69f..cab5b4907 100644 --- a/toke.c +++ b/toke.c @@ -291,74 +291,72 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); #define YY_NUM_RULES 54 #define YY_END_OF_BUFFER 55 -static yyconst short int yy_accept[593] = +static yyconst short int yy_accept[588] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 42, 50, 49, 48, 42, 53, 42, + 0, 0, 55, 42, 50, 49, 48, 53, 53, 42, 43, 44, 42, 45, 42, 42, 42, 42, 47, 46, - 53, 37, 37, 37, 37, 37, 37, 37, 53, 42, - 42, 50, 53, 37, 37, 37, 37, 37, 1, 53, + 37, 37, 37, 37, 37, 37, 37, 53, 42, 42, + 50, 41, 53, 37, 37, 37, 37, 37, 1, 53, 42, 42, 16, 15, 16, 15, 15, 53, 53, 53, 2, 8, 7, 8, 3, 8, 4, 53, 12, 12, - 12, 10, 11, 42, 0, 50, 48, 42, 0, 0, - 0, 52, 0, 42, 32, 0, 0, 31, 0, 40, - 40, 0, 42, 42, 0, 42, 42, 42, 42, 0, - - 35, 37, 37, 37, 37, 37, 37, 37, 42, 51, - 42, 50, 0, 0, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 1, 0, 38, 38, 0, 42, 16, - 16, 14, 13, 14, 0, 0, 2, 8, 0, 5, - 6, 8, 8, 12, 0, 12, 12, 0, 9, 41, - 41, 0, 0, 32, 0, 0, 42, 42, 42, 42, - 42, 0, 0, 35, 35, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 42, 0, 0, 0, 0, 0, - 0, 42, 42, 42, 42, 42, 0, 42, 9, 0, - 42, 42, 42, 42, 42, 42, 0, 36, 36, 36, - - 0, 0, 35, 35, 35, 35, 35, 35, 35, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 42, 0, - 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, - 42, 42, 0, 0, 36, 36, 36, 0, 35, 35, - 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 0, 24, 37, 37, 37, 37, 37, 37, - 37, 37, 42, 0, 0, 0, 0, 42, 42, 42, - 42, 42, 42, 42, 42, 0, 36, 0, 35, 35, - 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, - - 37, 37, 37, 37, 37, 42, 0, 0, 0, 42, - 42, 42, 33, 33, 33, 0, 0, 35, 35, 35, - 35, 35, 35, 35, 0, 0, 0, 0, 0, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 37, 37, 0, 23, 37, 37, 37, - 37, 0, 22, 0, 25, 42, 0, 0, 0, 42, - 42, 42, 42, 33, 33, 33, 33, 0, 35, 0, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, + 12, 10, 11, 42, 0, 50, 48, 0, 52, 0, + 42, 32, 0, 0, 31, 0, 40, 40, 0, 42, + 42, 0, 42, 42, 42, 42, 0, 35, 37, 37, - 37, 37, 37, 39, 0, 0, 0, 42, 19, 38, - 42, 34, 34, 34, 35, 0, 0, 0, 35, 35, + 37, 37, 37, 37, 37, 42, 51, 42, 50, 0, + 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, + 1, 0, 38, 38, 0, 42, 16, 16, 14, 13, + 14, 0, 0, 2, 8, 0, 5, 6, 8, 8, + 12, 0, 12, 12, 0, 9, 0, 0, 32, 0, + 0, 42, 42, 42, 42, 42, 0, 0, 35, 35, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 42, + 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, + 42, 0, 42, 9, 0, 42, 42, 42, 42, 42, + 42, 0, 36, 36, 36, 0, 0, 35, 35, 35, + + 35, 35, 35, 35, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 42, 0, 0, 0, 0, 0, 0, + 42, 42, 42, 42, 42, 42, 42, 0, 0, 36, + 36, 36, 0, 35, 35, 0, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 0, 24, 37, + 37, 37, 37, 37, 37, 37, 37, 42, 0, 0, + 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, + 0, 36, 0, 35, 35, 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 0, 0, 0, 0, 0, 35, 35, 35, 35, - 35, 35, 35, 35, 37, 37, 37, 37, 0, 21, - 0, 26, 0, 19, 0, 0, 42, 0, 42, 42, - 42, 34, 34, 34, 34, 34, 0, 0, 0, 0, - 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 37, 37, 37, 37, 37, 37, 37, 37, + + 42, 0, 0, 0, 42, 42, 42, 33, 33, 33, + 0, 0, 35, 35, 35, 35, 35, 35, 35, 0, + 0, 0, 0, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 37, 37, + 0, 23, 37, 37, 37, 37, 0, 22, 0, 25, + 42, 0, 0, 0, 42, 42, 42, 42, 33, 33, + 33, 33, 0, 35, 0, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 0, 29, 37, 37, 37, 0, 0, 0, 20, + 35, 35, 37, 37, 37, 37, 37, 37, 39, 0, - 19, 0, 0, 19, 0, 42, 42, 42, 34, 34, + 0, 0, 42, 19, 38, 42, 34, 34, 34, 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 0, 0, 0, 0, + 0, 35, 35, 35, 35, 35, 35, 35, 35, 37, + 37, 37, 37, 0, 21, 0, 26, 0, 19, 0, + 0, 42, 0, 42, 42, 42, 34, 34, 34, 34, + 34, 0, 0, 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 0, 27, 37, 37, 20, 0, 17, 0, 42, - 42, 42, 42, 42, 0, 0, 0, 0, 0, 35, - 35, 35, 35, 35, 35, 35, 35, 0, 30, 37, - 0, 42, 42, 42, 35, 35, 35, 35, 35, 35, - 0, 28, 0, 42, 42, 42, 42, 42, 35, 35, - 35, 35, 35, 0, 18, 33, 33, 33, 33, 33, - 33, 0 + 35, 35, 35, 35, 35, 35, 0, 29, 37, 37, + 37, 0, 0, 0, 20, 19, 0, 0, 19, 0, + 42, 42, 42, 34, 34, 0, 0, 0, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 0, 27, 37, 37, + 20, 0, 17, 0, 42, 42, 42, 42, 42, 0, + 0, 0, 0, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 0, 30, 37, 0, 42, 42, 42, 35, + 35, 35, 35, 35, 35, 0, 28, 0, 42, 42, + 42, 42, 42, 35, 35, 35, 35, 35, 0, 18, + 33, 33, 33, 33, 33, 33, 0 } ; static yyconst int yy_ec[256] = @@ -404,568 +402,570 @@ static yyconst int yy_meta[66] = 13, 13, 13, 13, 13 } ; -static yyconst short int yy_base[659] = +static yyconst short int yy_base[652] = { 0, - 0, 64, 65, 66, 72, 87, 134, 198, 262, 309, - 83, 98, 2616, 2548, 2586, 3619, 2562, 356, 402, 58, - 3619, 3619, 2517, 3619, 106, 412, 139, 105, 2540, 3619, - 3619, 467, 2516, 517, 2487, 2486, 2496, 2482, 571, 149, - 44, 175, 595, 2444, 2446, 2438, 2433, 2434, 2494, 204, - 268, 65, 0, 3619, 2474, 3619, 0, 276, 650, 114, - 0, 2420, 3619, 79, 3619, 93, 3619, 131, 2417, 71, - 103, 3619, 140, 2416, 206, 2461, 2458, 672, 2456, 2428, - 2426, 3619, 217, 286, 125, 2380, 321, 2377, 347, 328, - 2375, 382, 322, 705, 2398, 2407, 379, 429, 393, 2387, - - 124, 745, 0, 2366, 2361, 253, 2351, 2347, 241, 3619, - 99, 558, 2329, 2333, 2325, 2319, 2320, 147, 116, 214, - 233, 181, 29, 2380, 534, 555, 2325, 617, 126, 0, - 2359, 178, 3619, 3619, 614, 268, 0, 2297, 677, 3619, - 3619, 2296, 315, 2295, 2337, 243, 280, 295, 2339, 2292, - 3619, 2336, 2320, 2274, 705, 777, 789, 824, 859, 894, - 2307, 2259, 934, 129, 975, 1015, 2252, 2232, 2224, 2221, - 2229, 2224, 2213, 2222, 287, 2193, 2197, 2162, 2162, 2167, - 323, 321, 2170, 235, 163, 304, 811, 331, 2217, 2215, - 638, 369, 1057, 1092, 724, 379, 2193, 2184, 730, 421, - - 2166, 2163, 363, 628, 1127, 808, 437, 1168, 834, 2162, - 365, 434, 2153, 2151, 2141, 2139, 2119, 2117, 422, 2099, - 2095, 2069, 2082, 2069, 413, 444, 542, 495, 528, 1210, - 1245, 1280, 2106, 2105, 842, 2097, 2074, 2072, 2035, 563, - 867, 570, 875, 586, 1315, 0, 885, 1326, 911, 674, - 1367, 953, 603, 3619, 2006, 1993, 2006, 1986, 1962, 1965, - 1965, 1929, 538, 1922, 1905, 1906, 328, 431, 21, 556, - 920, 592, 1409, 1444, 994, 1944, 1942, 1874, 1872, 1477, - 684, 1034, 1067, 1077, 686, 691, 756, 1000, 767, 1519, - 0, 1102, 1530, 1111, 961, 1571, 1146, 1854, 1831, 663, - - 526, 1809, 1816, 790, 791, 655, 1823, 1742, 239, 580, - 640, 721, 1612, 1646, 1680, 1774, 1765, 1757, 1185, 1715, - 1193, 1042, 1755, 1220, 1228, 1766, 1255, 1265, 1290, 770, - 985, 1025, 1298, 1298, 1337, 1797, 0, 1348, 1808, 1384, - 1154, 1849, 1419, 1697, 1690, 847, 3619, 1689, 1682, 1693, - 1632, 959, 3619, 1000, 3619, 652, 1618, 1595, 539, 1044, - 576, 740, 1427, 670, 1890, 1924, 1462, 1634, 1633, 1392, - 808, 1468, 1058, 1959, 0, 764, 1970, 1495, 1236, 2010, - 1549, 1590, 1622, 1632, 1137, 1265, 1656, 1658, 1503, 1660, - 2052, 0, 1690, 2063, 1669, 1435, 1699, 1534, 1531, 1534, - - 1530, 1100, 1101, 1509, 1447, 1439, 816, 572, 1849, 1428, - 2105, 2140, 2175, 2210, 1450, 1734, 1774, 1827, 1368, 1211, - 1246, 1866, 1281, 2245, 0, 798, 2256, 1898, 1452, 2296, - 1908, 1932, 1346, 1942, 1989, 2029, 1540, 1581, 2073, 819, - 853, 2338, 0, 896, 1152, 1284, 1248, 1113, 1193, 3619, - 1351, 3619, 1089, 1552, 2087, 813, 872, 671, 1322, 2087, - 1090, 2348, 2383, 2418, 2453, 1785, 2035, 1123, 2120, 2150, - 2130, 1083, 1040, 1410, 1623, 2158, 1669, 2488, 0, 937, - 2499, 2183, 1598, 2539, 2193, 2219, 2228, 2274, 1725, 1026, - 1121, 1369, 3619, 1392, 958, 877, 811, 836, 1594, 742, - - 1455, 1675, 2383, 1677, 2418, 2581, 2616, 2651, 2282, 1875, - 2315, 2358, 2396, 760, 715, 1828, 1943, 2429, 1971, 2686, - 0, 1171, 2697, 2437, 1742, 2463, 717, 2472, 2517, 1998, - 649, 1596, 3619, 1740, 619, 3619, 559, 3619, 1288, 2525, - 1311, 2739, 2774, 2558, 2564, 530, 2591, 2601, 2626, 451, - 437, 2087, 371, 363, 2634, 0, 1301, 1780, 3619, 1832, - 2097, 2809, 2844, 2879, 2659, 2667, 2675, 326, 0, 305, - 1833, 3619, 200, 2715, 1664, 2914, 2949, 2725, 3619, 2748, - 2758, 1916, 3619, 175, 3619, 2785, 2793, 2826, 127, 2859, - 2835, 3619, 2997, 3011, 3025, 3039, 3053, 3067, 3081, 3095, - - 3109, 3123, 3129, 3143, 3157, 1360, 3171, 3185, 3199, 3213, - 3227, 3241, 3255, 3269, 3275, 3282, 3296, 3310, 3316, 3323, - 3329, 3335, 3341, 3348, 3354, 3360, 3366, 3373, 3381, 3387, - 3393, 3399, 3406, 3414, 3420, 3426, 3433, 3441, 3447, 3455, - 3462, 3470, 3476, 3484, 3491, 3499, 3513, 3527, 3533, 3541, - 3548, 3562, 3568, 3576, 3582, 3590, 1881, 3604 + 0, 64, 65, 70, 75, 100, 147, 211, 275, 322, + 86, 111, 2608, 2559, 2604, 3633, 2601, 3633, 368, 44, + 3633, 3633, 2542, 3633, 113, 378, 124, 146, 2551, 3633, + 433, 2521, 483, 2528, 2527, 2528, 2513, 537, 154, 36, + 150, 3633, 561, 2483, 2479, 2460, 2455, 2456, 2508, 203, + 288, 45, 0, 3633, 2503, 3633, 0, 305, 616, 71, + 0, 2458, 3633, 61, 3633, 71, 3633, 80, 2457, 109, + 131, 3633, 124, 2440, 638, 2485, 2482, 2482, 3633, 211, + 219, 83, 2436, 336, 2427, 663, 410, 2424, 688, 234, + 699, 2416, 2423, 356, 500, 169, 2412, 145, 739, 0, + + 2403, 2401, 262, 2391, 2372, 134, 3633, 130, 524, 2346, + 2333, 2304, 2299, 2300, 94, 72, 229, 235, 198, 237, + 2330, 569, 567, 2277, 793, 196, 0, 2320, 153, 3633, + 3633, 578, 190, 0, 2275, 344, 3633, 3633, 2254, 303, + 2251, 2285, 310, 241, 245, 2278, 2276, 2264, 2215, 818, + 545, 831, 866, 901, 936, 2248, 2235, 976, 286, 1017, + 1057, 2226, 2206, 2198, 2193, 2199, 2192, 2179, 2188, 242, + 2158, 2162, 2134, 2134, 2139, 313, 265, 2142, 273, 272, + 295, 600, 271, 2189, 2187, 635, 345, 1099, 1134, 511, + 307, 2108, 2107, 685, 350, 2106, 2105, 339, 716, 1169, + + 724, 404, 1210, 758, 2077, 358, 377, 2054, 2046, 2036, + 2034, 2015, 2022, 357, 2006, 2008, 1993, 2005, 1977, 377, + 355, 580, 379, 391, 1252, 1287, 1322, 2014, 1992, 790, + 1990, 1988, 1987, 1985, 529, 815, 593, 839, 596, 1357, + 0, 849, 1368, 874, 660, 1409, 884, 435, 3633, 1941, + 1932, 1945, 1925, 1915, 1886, 1886, 1854, 561, 1828, 1811, + 1783, 557, 110, 508, 568, 912, 369, 1451, 1486, 922, + 1818, 1800, 1799, 1782, 1519, 646, 955, 995, 1036, 658, + 671, 749, 1074, 772, 1561, 0, 1109, 1572, 1082, 892, + 1613, 1118, 1744, 1740, 603, 513, 1723, 1729, 624, 724, + + 768, 1719, 1673, 570, 555, 460, 824, 1654, 1688, 1722, + 1690, 1677, 1676, 1142, 1757, 1150, 963, 1797, 1188, 1158, + 1626, 1229, 1262, 1272, 901, 922, 1243, 1297, 1297, 1308, + 1839, 0, 1310, 1850, 1330, 1003, 1891, 1340, 1595, 1598, + 764, 3633, 1579, 1571, 1535, 1519, 780, 3633, 875, 3633, + 736, 1504, 1482, 656, 953, 636, 897, 1386, 626, 1932, + 1966, 1395, 1487, 1431, 1428, 815, 1459, 1037, 2001, 0, + 487, 2012, 1467, 1196, 2052, 1496, 1506, 1538, 1591, 1179, + 1220, 1442, 1477, 1630, 1664, 2094, 0, 1666, 2105, 1638, + 1278, 1675, 1411, 1409, 1354, 1350, 924, 961, 1318, 1307, + + 1274, 1061, 675, 1708, 1254, 2147, 2182, 2217, 2252, 1212, + 1699, 1732, 1743, 1171, 1263, 1341, 1707, 1428, 2287, 0, + 608, 2298, 1774, 1477, 2338, 1816, 1782, 1135, 1869, 1910, + 1942, 1506, 1529, 1901, 826, 860, 2380, 0, 980, 1041, + 1103, 1087, 1041, 1042, 3633, 1058, 3633, 992, 1541, 1962, + 708, 899, 291, 1058, 1950, 1319, 2390, 2425, 2460, 2495, + 1827, 1974, 1011, 1985, 2031, 2071, 927, 920, 1592, 1744, + 2077, 1758, 2530, 0, 1061, 2541, 2122, 1877, 2581, 2157, + 2131, 2166, 2191, 1807, 912, 1128, 1194, 3633, 1235, 835, + 802, 765, 818, 721, 767, 1614, 1836, 2217, 1930, 2252, + + 2623, 2658, 2693, 2265, 1515, 2230, 2275, 2317, 779, 761, + 1986, 2013, 2355, 2032, 2728, 0, 1122, 2739, 2363, 1919, + 2400, 683, 2409, 2434, 2326, 676, 1393, 3633, 1434, 623, + 3633, 657, 3633, 1251, 2442, 1387, 2781, 2816, 2475, 2481, + 635, 2508, 2518, 2560, 543, 526, 2148, 427, 424, 2600, + 0, 1233, 1595, 3633, 1596, 2213, 2851, 2886, 2921, 2566, + 2631, 2639, 389, 0, 350, 1597, 3633, 349, 2647, 1685, + 2956, 2991, 2669, 3633, 2680, 2702, 2450, 3633, 215, 3633, + 2715, 2757, 2765, 82, 2798, 2806, 3633, 3039, 3053, 3067, + 3081, 3095, 3109, 3123, 3137, 3151, 3157, 3171, 3185, 1355, + + 3199, 3213, 3227, 3241, 3255, 3269, 3283, 3289, 3296, 3310, + 3324, 3330, 3337, 3343, 3349, 3355, 3362, 3368, 3374, 3380, + 3387, 3395, 3401, 3407, 3413, 3420, 3428, 3434, 3440, 3447, + 3455, 3461, 3469, 3476, 3484, 3490, 3498, 3505, 3513, 3527, + 3541, 3547, 3555, 3562, 3576, 3582, 3590, 3596, 3604, 862, + 3618 } ; -static yyconst short int yy_def[659] = +static yyconst short int yy_def[652] = { 0, - 592, 1, 1, 1, 593, 593, 594, 594, 595, 595, - 596, 596, 592, 597, 592, 592, 592, 598, 599, 600, - 592, 592, 601, 592, 602, 597, 26, 26, 603, 592, - 592, 592, 32, 32, 34, 34, 34, 34, 597, 26, - 597, 592, 599, 32, 32, 34, 34, 34, 592, 592, - 604, 597, 605, 592, 605, 592, 605, 592, 599, 592, - 606, 607, 592, 607, 592, 607, 592, 608, 609, 609, - 609, 592, 592, 597, 597, 592, 592, 598, 610, 598, - 611, 592, 612, 592, 600, 613, 600, 601, 601, 602, - 614, 597, 597, 26, 603, 94, 94, 94, 94, 615, - - 616, 32, 34, 34, 34, 34, 34, 34, 597, 592, - 597, 592, 592, 592, 592, 592, 592, 611, 597, 94, - 597, 597, 597, 592, 592, 604, 617, 597, 597, 605, - 605, 592, 592, 592, 612, 592, 606, 607, 607, 592, - 592, 607, 607, 609, 592, 609, 609, 592, 592, 597, - 592, 611, 618, 613, 613, 592, 597, 597, 597, 94, - 160, 619, 592, 620, 592, 32, 34, 34, 34, 34, - 34, 34, 34, 34, 597, 592, 592, 592, 592, 592, - 611, 597, 160, 597, 597, 597, 592, 597, 592, 618, - 597, 597, 597, 597, 597, 597, 621, 622, 622, 199, - - 623, 622, 624, 165, 592, 205, 205, 592, 205, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 597, 592, - 592, 592, 592, 592, 611, 597, 597, 597, 597, 597, - 597, 597, 592, 625, 625, 235, 625, 626, 627, 628, - 592, 629, 208, 629, 629, 245, 629, 592, 248, 248, - 592, 248, 592, 592, 34, 34, 34, 34, 34, 34, - 34, 34, 597, 592, 592, 592, 611, 597, 597, 597, - 597, 597, 597, 597, 597, 630, 630, 631, 632, 592, - 592, 592, 592, 592, 633, 633, 634, 251, 634, 634, - 290, 634, 592, 293, 293, 592, 293, 34, 34, 34, - - 34, 34, 34, 34, 34, 597, 592, 592, 611, 597, - 597, 597, 597, 597, 597, 592, 635, 636, 280, 592, - 320, 320, 592, 320, 592, 592, 592, 592, 592, 592, - 637, 637, 638, 296, 638, 638, 336, 638, 592, 339, - 339, 592, 339, 34, 34, 592, 592, 34, 34, 34, - 34, 592, 592, 592, 592, 597, 592, 592, 611, 597, - 597, 597, 597, 597, 597, 597, 597, 592, 639, 592, - 640, 323, 640, 640, 374, 374, 592, 377, 377, 592, - 377, 592, 592, 592, 592, 641, 641, 642, 342, 642, - 642, 391, 642, 592, 394, 394, 394, 34, 34, 34, - - 34, 34, 34, 597, 592, 592, 611, 597, 597, 597, - 597, 597, 597, 597, 592, 592, 592, 592, 643, 643, - 644, 380, 644, 644, 424, 424, 592, 427, 427, 592, - 427, 592, 592, 592, 592, 592, 592, 645, 645, 646, - 646, 646, 442, 442, 34, 34, 34, 34, 592, 592, - 592, 592, 592, 592, 611, 611, 597, 647, 648, 597, - 597, 597, 597, 597, 597, 597, 592, 592, 592, 592, - 592, 592, 649, 649, 650, 430, 650, 650, 478, 478, - 592, 481, 481, 592, 481, 592, 592, 592, 592, 651, - 651, 592, 592, 34, 34, 34, 592, 652, 611, 597, - - 647, 647, 647, 648, 648, 597, 597, 597, 597, 597, - 592, 592, 592, 592, 653, 653, 654, 484, 654, 654, - 520, 520, 592, 523, 523, 523, 592, 592, 592, 592, - 592, 592, 592, 34, 34, 592, 652, 592, 611, 597, - 597, 597, 597, 597, 592, 592, 592, 592, 592, 592, - 655, 655, 656, 656, 656, 555, 555, 592, 592, 34, - 611, 597, 597, 597, 592, 592, 592, 592, 657, 657, - 592, 592, 658, 597, 597, 597, 597, 597, 592, 592, - 592, 592, 592, 658, 592, 597, 597, 597, 597, 597, - 597, 0, 592, 592, 592, 592, 592, 592, 592, 592, - - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592 + 587, 1, 1, 1, 588, 588, 589, 589, 590, 590, + 591, 591, 587, 592, 587, 587, 587, 587, 593, 594, + 587, 587, 595, 587, 596, 592, 26, 26, 597, 587, + 587, 31, 31, 33, 33, 33, 33, 592, 26, 592, + 587, 587, 593, 31, 31, 33, 33, 33, 587, 587, + 598, 592, 599, 587, 599, 587, 599, 587, 593, 587, + 600, 601, 587, 601, 587, 601, 587, 602, 603, 603, + 603, 587, 587, 592, 592, 587, 587, 604, 587, 605, + 587, 594, 606, 594, 595, 595, 596, 607, 592, 592, + 26, 597, 91, 91, 91, 91, 608, 609, 31, 33, + + 33, 33, 33, 33, 33, 592, 587, 592, 587, 587, + 587, 587, 587, 587, 604, 592, 91, 592, 592, 592, + 587, 587, 598, 610, 592, 592, 599, 599, 587, 587, + 587, 605, 587, 600, 601, 601, 587, 587, 601, 601, + 603, 587, 603, 603, 587, 587, 604, 611, 606, 606, + 587, 592, 592, 592, 91, 155, 612, 587, 613, 587, + 31, 33, 33, 33, 33, 33, 33, 33, 33, 592, + 587, 587, 587, 587, 587, 604, 592, 155, 592, 592, + 592, 587, 592, 587, 611, 592, 592, 592, 592, 592, + 592, 614, 615, 615, 194, 616, 615, 617, 160, 587, + + 200, 200, 587, 200, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 592, 587, 587, 587, 587, 587, 604, + 592, 592, 592, 592, 592, 592, 592, 587, 618, 618, + 230, 618, 619, 620, 621, 587, 622, 203, 622, 622, + 240, 622, 587, 243, 243, 587, 243, 587, 587, 33, + 33, 33, 33, 33, 33, 33, 33, 592, 587, 587, + 587, 604, 592, 592, 592, 592, 592, 592, 592, 592, + 623, 623, 624, 625, 587, 587, 587, 587, 587, 626, + 626, 627, 246, 627, 627, 285, 627, 587, 288, 288, + 587, 288, 33, 33, 33, 33, 33, 33, 33, 33, + + 592, 587, 587, 604, 592, 592, 592, 592, 592, 592, + 587, 628, 629, 275, 587, 315, 315, 587, 315, 587, + 587, 587, 587, 587, 587, 630, 630, 631, 291, 631, + 631, 331, 631, 587, 334, 334, 587, 334, 33, 33, + 587, 587, 33, 33, 33, 33, 587, 587, 587, 587, + 592, 587, 587, 604, 592, 592, 592, 592, 592, 592, + 592, 592, 587, 632, 587, 633, 318, 633, 633, 369, + 369, 587, 372, 372, 587, 372, 587, 587, 587, 587, + 634, 634, 635, 337, 635, 635, 386, 635, 587, 389, + 389, 389, 33, 33, 33, 33, 33, 33, 592, 587, + + 587, 604, 592, 592, 592, 592, 592, 592, 592, 587, + 587, 587, 587, 636, 636, 637, 375, 637, 637, 419, + 419, 587, 422, 422, 587, 422, 587, 587, 587, 587, + 587, 587, 638, 638, 639, 639, 639, 437, 437, 33, + 33, 33, 33, 587, 587, 587, 587, 587, 587, 604, + 604, 592, 640, 641, 592, 592, 592, 592, 592, 592, + 592, 587, 587, 587, 587, 587, 587, 642, 642, 643, + 425, 643, 643, 473, 473, 587, 476, 476, 587, 476, + 587, 587, 587, 587, 644, 644, 587, 587, 33, 33, + 33, 587, 645, 604, 592, 640, 640, 640, 641, 641, + + 592, 592, 592, 592, 592, 587, 587, 587, 587, 646, + 646, 647, 479, 647, 647, 515, 515, 587, 518, 518, + 518, 587, 587, 587, 587, 587, 587, 587, 33, 33, + 587, 645, 587, 604, 592, 592, 592, 592, 592, 587, + 587, 587, 587, 587, 587, 648, 648, 649, 649, 649, + 550, 550, 587, 587, 33, 604, 592, 592, 592, 587, + 587, 587, 587, 650, 650, 587, 587, 651, 592, 592, + 592, 592, 592, 587, 587, 587, 587, 587, 651, 587, + 592, 592, 592, 592, 592, 592, 0, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587 } ; -static yyconst short int yy_nxt[3685] = +static yyconst short int yy_nxt[3699] = { 0, 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, 34, 34, 35, 36, 34, 37, - 34, 38, 34, 34, 34, 34, 34, 39, 14, 40, - 40, 40, 40, 40, 40, 14, 14, 14, 14, 14, - 14, 14, 41, 14, 14, 42, 49, 49, 75, 43, - 50, 50, 146, 15, 54, 55, 75, 56, 311, 51, - 51, 86, 186, 56, 70, 16, 71, 72, 15, 54, - 55, 75, 56, 44, 45, 56, 57, 46, 56, 70, - - 16, 71, 72, 140, 47, 87, 147, 48, 111, 91, - 56, 57, 75, 91, 91, 136, 110, 141, 145, 58, - 98, 98, 98, 98, 98, 99, 139, 52, 52, 129, - 73, 91, 143, 110, 58, 15, 16, 17, 163, 59, - 139, 148, 149, 163, 144, 73, 75, 165, 592, 82, - 145, 175, 204, 92, 97, 97, 97, 97, 97, 97, - 97, 97, 74, 75, 96, 96, 96, 96, 96, 96, - 96, 96, 87, 75, 75, 182, 112, 585, 188, 136, - 110, 60, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 15, - - 16, 17, 585, 59, 113, 114, 181, 74, 115, 74, - 75, 74, 228, 74, 74, 116, 125, 74, 117, 84, - 84, 84, 84, 84, 84, 84, 84, 74, 75, 74, - 74, 74, 84, 84, 84, 84, 84, 84, 84, 84, - 185, 82, 136, 110, 146, 60, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 15, 16, 17, 63, 59, 183, 136, - 110, 127, 64, 65, 66, 127, 127, 132, 110, 133, - 75, 134, 75, 147, 169, 133, 67, 134, 75, 170, - 145, 359, 171, 127, 172, 184, 148, 149, 226, 134, - - 134, 84, 84, 84, 84, 84, 84, 84, 84, 68, - 15, 16, 17, 63, 59, 128, 136, 110, 370, 64, - 65, 66, 85, 134, 85, 82, 85, 145, 85, 85, - 82, 91, 85, 67, 75, 91, 91, 157, 158, 159, - 157, 157, 157, 157, 157, 85, 85, 219, 88, 518, - 88, 75, 88, 91, 88, 88, 68, 79, 88, 79, - 74, 79, 139, 79, 79, 226, 253, 79, 75, 75, - 88, 88, 88, 226, 225, 92, 592, 163, 75, 79, - 79, 79, 191, 90, 370, 74, 204, 90, 254, 74, - 74, 229, 309, 90, 161, 161, 161, 161, 161, 161, - - 161, 161, 95, 80, 82, 90, 90, 74, 161, 161, - 161, 161, 161, 161, 83, 82, 75, 84, 84, 84, - 84, 84, 84, 84, 84, 93, 75, 94, 94, 94, - 94, 94, 94, 94, 94, 95, 237, 237, 237, 96, - 96, 96, 96, 96, 161, 161, 161, 161, 161, 161, - 161, 161, 246, 246, 246, 246, 246, 247, 310, 75, - 518, 96, 96, 96, 96, 96, 96, 74, 255, 75, - 267, 74, 256, 74, 476, 263, 74, 74, 75, 74, - 74, 74, 102, 102, 102, 102, 102, 102, 102, 102, - 95, 75, 268, 74, 102, 102, 102, 102, 102, 103, - - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 75, 103, 96, 96, 96, 96, - 96, 96, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 103, 103, 103, 103, 103, 103, 103, 103, - 592, 82, 75, 545, 103, 103, 103, 103, 103, 84, - 84, 84, 84, 84, 84, 84, 84, 226, 127, 112, - 348, 538, 127, 127, 349, 95, 74, 74, 74, 74, - 74, 74, 109, 110, 74, 75, 74, 163, 74, 74, - 127, 270, 74, 241, 163, 75, 204, 113, 114, 75, - 306, 115, 407, 243, 74, 74, 74, 82, 116, 592, - - 163, 117, 128, 75, 253, 271, 269, 83, 312, 243, - 84, 84, 84, 84, 84, 84, 84, 84, 126, 75, - 74, 457, 126, 75, 74, 74, 254, 75, 126, 592, - 592, 592, 592, 592, 592, 592, 592, 360, 409, 75, - 126, 126, 74, 209, 209, 209, 209, 209, 209, 209, - 209, 118, 82, 230, 231, 232, 230, 230, 230, 230, - 230, 560, 135, 163, 346, 592, 592, 592, 592, 592, - 592, 592, 592, 79, 502, 79, 150, 79, 138, 79, - 79, 138, 138, 79, 363, 75, 347, 75, 138, 291, - 291, 291, 291, 291, 292, 79, 79, 79, 163, 75, - - 163, 138, 75, 361, 241, 163, 154, 204, 154, 243, - 154, 356, 154, 154, 243, 404, 154, 75, 503, 80, - 160, 160, 160, 160, 160, 160, 160, 160, 154, 154, - 154, 163, 160, 160, 160, 160, 160, 191, 476, 192, - 192, 192, 192, 192, 192, 235, 235, 236, 237, 237, - 237, 237, 237, 201, 160, 160, 160, 160, 160, 160, - 166, 166, 166, 166, 166, 166, 166, 166, 75, 241, - 163, 75, 166, 166, 166, 166, 166, 362, 91, 288, - 592, 163, 91, 422, 163, 419, 419, 75, 91, 75, - 288, 352, 354, 243, 160, 160, 160, 160, 160, 160, - - 91, 91, 191, 410, 192, 192, 192, 192, 192, 192, - 192, 192, 127, 353, 355, 82, 127, 455, 82, 473, - 473, 370, 127, 245, 245, 245, 245, 245, 245, 245, - 245, 372, 241, 163, 127, 127, 75, 191, 538, 193, - 193, 193, 193, 193, 193, 193, 193, 592, 346, 244, - 244, 244, 244, 244, 244, 244, 244, 277, 277, 277, - 277, 277, 277, 277, 277, 201, 592, 163, 456, 499, - 347, 75, 191, 536, 194, 194, 194, 194, 194, 195, - 192, 192, 282, 283, 284, 282, 282, 282, 282, 282, - 252, 252, 252, 252, 252, 252, 252, 252, 241, 163, - - 286, 286, 286, 286, 286, 286, 75, 74, 243, 196, - 196, 196, 196, 196, 196, 196, 196, 490, 490, 75, - 535, 196, 196, 196, 196, 196, 290, 290, 290, 290, - 290, 290, 290, 290, 500, 313, 314, 315, 313, 313, - 313, 313, 313, 196, 196, 196, 196, 196, 196, 198, - 199, 200, 200, 200, 200, 200, 200, 201, 515, 515, - 352, 202, 202, 202, 202, 202, 592, 75, 289, 289, - 289, 289, 289, 289, 289, 289, 337, 337, 337, 337, - 337, 338, 353, 202, 202, 202, 202, 202, 202, 163, - 205, 206, 207, 205, 205, 205, 205, 205, 208, 163, - - 534, 354, 209, 209, 209, 209, 209, 271, 288, 272, - 272, 272, 272, 272, 272, 297, 297, 297, 297, 297, - 297, 297, 297, 355, 209, 209, 209, 209, 209, 209, - 210, 210, 210, 210, 210, 210, 210, 210, 241, 163, - 163, 75, 210, 210, 210, 210, 210, 325, 288, 326, - 326, 326, 326, 326, 326, 326, 326, 375, 375, 375, - 375, 375, 376, 422, 196, 196, 196, 196, 196, 196, - 191, 592, 192, 192, 192, 192, 192, 192, 192, 192, - 325, 372, 327, 327, 327, 327, 327, 327, 327, 327, - 325, 75, 328, 328, 328, 328, 328, 329, 326, 326, - - 408, 449, 451, 460, 75, 191, 372, 192, 192, 192, - 192, 192, 192, 192, 192, 241, 163, 332, 332, 332, - 332, 332, 332, 450, 452, 288, 336, 336, 336, 336, - 336, 336, 336, 336, 241, 163, 467, 75, 497, 75, - 241, 163, 242, 242, 242, 242, 242, 242, 242, 242, - 243, 163, 496, 492, 244, 244, 244, 244, 244, 592, - 288, 335, 335, 335, 335, 335, 335, 335, 335, 392, - 392, 392, 392, 392, 393, 493, 244, 244, 244, 244, - 244, 244, 163, 248, 249, 250, 248, 248, 248, 248, - 248, 251, 551, 551, 449, 252, 252, 252, 252, 252, - - 324, 324, 324, 324, 324, 324, 324, 324, 374, 374, - 374, 374, 374, 374, 374, 374, 450, 252, 252, 252, - 252, 252, 252, 271, 370, 272, 272, 272, 272, 272, - 272, 272, 272, 592, 372, 373, 373, 373, 373, 373, - 373, 373, 373, 382, 383, 384, 382, 382, 382, 382, - 382, 425, 425, 425, 425, 425, 426, 75, 271, 370, - 273, 273, 273, 273, 273, 273, 273, 273, 325, 422, - 326, 326, 326, 326, 326, 326, 326, 326, 325, 163, - 326, 326, 326, 326, 326, 326, 326, 326, 334, 561, - 82, 495, 75, 271, 592, 274, 274, 274, 274, 274, - - 275, 272, 272, 325, 422, 326, 326, 326, 326, 326, - 326, 241, 163, 343, 343, 343, 343, 343, 343, 343, - 343, 334, 569, 569, 540, 502, 494, 75, 241, 163, - 286, 286, 286, 286, 286, 286, 286, 286, 243, 241, - 163, 287, 287, 287, 287, 287, 287, 287, 287, 288, - 592, 163, 451, 289, 289, 289, 289, 289, 75, 432, - 334, 241, 163, 387, 387, 387, 387, 387, 387, 505, - 492, 334, 137, 137, 452, 289, 289, 289, 289, 289, - 289, 163, 293, 294, 295, 293, 293, 293, 293, 293, - 296, 372, 493, 532, 297, 297, 297, 297, 297, 391, - - 391, 391, 391, 391, 391, 391, 391, 416, 417, 418, - 416, 416, 416, 416, 416, 533, 297, 297, 297, 297, - 297, 297, 271, 370, 272, 272, 272, 272, 272, 272, - 272, 272, 592, 422, 390, 390, 390, 390, 390, 390, - 390, 390, 411, 412, 413, 414, 411, 411, 411, 411, - 443, 443, 443, 443, 443, 444, 75, 271, 592, 272, - 272, 272, 272, 272, 272, 272, 272, 479, 479, 479, - 479, 479, 480, 319, 75, 75, 363, 364, 364, 364, - 364, 364, 364, 381, 381, 381, 381, 381, 381, 381, - 381, 75, 320, 321, 322, 320, 320, 320, 320, 320, - - 323, 454, 503, 453, 324, 324, 324, 324, 324, 75, - 424, 424, 424, 424, 424, 424, 424, 424, 397, 397, - 397, 397, 397, 397, 397, 397, 324, 324, 324, 324, - 324, 324, 241, 163, 332, 332, 332, 332, 332, 332, - 332, 332, 288, 241, 163, 333, 333, 333, 333, 333, - 333, 333, 333, 334, 163, 458, 75, 335, 335, 335, - 335, 335, 592, 334, 423, 423, 423, 423, 423, 423, - 423, 423, 448, 447, 446, 458, 445, 458, 458, 335, - 335, 335, 335, 335, 335, 163, 339, 340, 341, 339, - 339, 339, 339, 339, 342, 163, 82, 532, 343, 343, - - 343, 343, 343, 432, 389, 433, 433, 433, 433, 433, - 433, 433, 433, 521, 521, 521, 521, 521, 522, 533, - 343, 343, 343, 343, 343, 343, 363, 364, 364, 364, - 364, 364, 364, 364, 364, 432, 370, 434, 434, 434, - 434, 434, 434, 434, 434, 432, 476, 435, 435, 435, - 435, 435, 436, 433, 433, 539, 319, 239, 406, 75, - 363, 365, 365, 365, 365, 365, 365, 365, 365, 241, - 163, 241, 163, 592, 163, 405, 403, 574, 592, 334, - 592, 389, 592, 389, 442, 442, 442, 442, 442, 442, - 442, 442, 476, 75, 363, 366, 366, 366, 366, 366, - - 367, 364, 364, 241, 163, 439, 439, 439, 439, 439, - 439, 75, 592, 389, 441, 441, 441, 441, 441, 441, - 441, 441, 503, 402, 505, 401, 400, 75, 370, 399, - 371, 371, 371, 371, 371, 371, 371, 371, 372, 163, - 398, 558, 373, 373, 373, 373, 373, 467, 389, 468, - 468, 468, 468, 468, 468, 468, 468, 556, 556, 556, - 556, 556, 557, 559, 373, 373, 373, 373, 373, 373, - 377, 378, 379, 377, 377, 377, 377, 377, 380, 325, - 319, 558, 381, 381, 381, 381, 381, 467, 239, 469, - 469, 469, 469, 469, 469, 469, 469, 201, 460, 358, - - 510, 510, 510, 559, 381, 381, 381, 381, 381, 381, - 241, 163, 387, 387, 387, 387, 387, 387, 387, 387, - 334, 241, 163, 388, 388, 388, 388, 388, 388, 388, - 388, 389, 75, 571, 571, 390, 390, 390, 390, 390, - 467, 370, 470, 470, 470, 470, 470, 471, 468, 468, - 357, 476, 458, 351, 350, 572, 572, 390, 390, 390, - 390, 390, 390, 163, 394, 395, 396, 394, 394, 394, - 394, 394, 458, 345, 458, 459, 397, 397, 397, 397, - 397, 431, 431, 431, 431, 431, 431, 431, 431, 583, - 510, 510, 510, 344, 583, 319, 75, 239, 397, 397, - - 397, 397, 397, 397, 363, 364, 364, 364, 364, 364, - 364, 364, 364, 478, 478, 478, 478, 478, 478, 478, - 478, 592, 75, 477, 477, 477, 477, 477, 477, 477, - 477, 579, 579, 579, 579, 579, 579, 75, 363, 364, - 364, 364, 364, 364, 364, 364, 364, 486, 487, 488, - 486, 486, 486, 486, 486, 432, 370, 433, 433, 433, - 433, 433, 433, 433, 433, 201, 518, 201, 264, 308, - 307, 75, 370, 305, 420, 420, 420, 420, 420, 420, - 420, 420, 372, 370, 592, 421, 421, 421, 421, 421, - 421, 421, 421, 422, 518, 304, 303, 423, 423, 423, - - 423, 423, 432, 302, 433, 433, 433, 433, 433, 433, - 433, 433, 163, 527, 527, 527, 527, 527, 527, 423, - 423, 423, 423, 423, 423, 427, 428, 429, 427, 427, - 427, 427, 427, 430, 301, 300, 299, 431, 431, 431, - 431, 431, 432, 298, 433, 433, 433, 433, 433, 433, - 511, 512, 513, 511, 511, 511, 511, 511, 280, 431, - 431, 431, 431, 431, 431, 241, 163, 439, 439, 439, - 439, 439, 439, 439, 439, 389, 241, 163, 440, 440, - 440, 440, 440, 440, 440, 440, 241, 163, 455, 82, - 441, 441, 441, 441, 441, 239, 389, 201, 561, 82, - - 370, 498, 506, 507, 508, 506, 506, 506, 506, 506, - 518, 573, 441, 441, 441, 441, 441, 441, 460, 276, - 461, 461, 461, 461, 461, 461, 461, 461, 201, 101, - 264, 266, 264, 467, 75, 468, 468, 468, 468, 468, - 468, 468, 468, 467, 265, 468, 468, 468, 468, 468, - 468, 264, 75, 460, 262, 462, 462, 462, 462, 462, - 462, 462, 462, 467, 261, 468, 468, 468, 468, 468, - 468, 468, 468, 485, 485, 485, 485, 485, 485, 485, - 485, 260, 259, 258, 257, 95, 201, 75, 460, 239, - 463, 463, 463, 463, 463, 464, 465, 465, 520, 520, - - 520, 520, 520, 520, 520, 520, 592, 201, 519, 519, - 519, 519, 519, 519, 519, 519, 101, 82, 189, 227, - 224, 223, 75, 460, 222, 466, 466, 466, 461, 461, - 461, 461, 461, 163, 527, 527, 527, 527, 527, 527, - 527, 527, 163, 528, 528, 528, 528, 528, 528, 528, - 528, 221, 220, 218, 217, 216, 215, 75, 370, 214, - 474, 474, 474, 474, 474, 474, 474, 474, 422, 370, - 213, 475, 475, 475, 475, 475, 475, 475, 475, 476, - 212, 211, 101, 477, 477, 477, 477, 477, 163, 529, - 529, 529, 529, 529, 530, 527, 527, 509, 509, 509, - - 509, 509, 509, 509, 509, 477, 477, 477, 477, 477, - 477, 481, 482, 483, 481, 481, 481, 481, 481, 484, - 93, 155, 82, 485, 485, 485, 485, 485, 545, 75, - 546, 546, 546, 546, 546, 546, 546, 546, 82, 75, - 189, 144, 145, 139, 139, 485, 485, 485, 485, 485, - 485, 241, 163, 491, 491, 491, 491, 491, 491, 491, - 491, 460, 131, 465, 465, 465, 465, 465, 465, 465, - 465, 545, 187, 547, 547, 547, 547, 547, 547, 547, - 547, 124, 180, 179, 501, 178, 177, 176, 501, 174, - 501, 501, 173, 168, 501, 75, 460, 167, 465, 465, - - 465, 465, 465, 465, 465, 465, 501, 501, 501, 545, - 101, 548, 548, 548, 548, 548, 549, 546, 546, 504, - 74, 101, 156, 504, 89, 504, 504, 155, 82, 504, - 75, 460, 150, 465, 465, 465, 465, 465, 465, 509, - 509, 504, 504, 504, 526, 526, 526, 526, 526, 526, - 526, 526, 555, 555, 555, 555, 555, 555, 555, 555, - 151, 77, 76, 75, 145, 75, 460, 139, 509, 509, - 509, 509, 509, 509, 509, 509, 592, 131, 554, 554, - 554, 554, 554, 554, 554, 554, 163, 527, 527, 527, - 527, 527, 527, 527, 527, 124, 123, 122, 121, 120, - - 75, 370, 119, 516, 516, 516, 516, 516, 516, 516, - 516, 476, 370, 108, 517, 517, 517, 517, 517, 517, - 517, 517, 518, 107, 106, 105, 519, 519, 519, 519, - 519, 163, 527, 527, 527, 527, 527, 527, 527, 527, - 562, 563, 564, 562, 562, 562, 562, 562, 519, 519, - 519, 519, 519, 519, 523, 524, 525, 523, 523, 523, - 523, 523, 104, 101, 89, 77, 526, 526, 526, 526, - 526, 540, 75, 541, 541, 541, 541, 541, 541, 565, - 566, 567, 565, 565, 565, 565, 565, 76, 526, 526, - 526, 526, 526, 526, 540, 75, 541, 541, 541, 541, - - 541, 541, 541, 541, 545, 75, 546, 546, 546, 546, - 546, 546, 546, 546, 545, 592, 546, 546, 546, 546, - 546, 546, 546, 546, 592, 592, 592, 592, 75, 540, - 592, 542, 542, 542, 542, 542, 542, 542, 542, 545, - 592, 546, 546, 546, 546, 546, 546, 370, 592, 570, - 570, 570, 570, 570, 570, 570, 570, 592, 592, 592, - 592, 592, 592, 75, 540, 592, 543, 543, 543, 543, - 543, 544, 541, 541, 579, 579, 579, 579, 579, 579, - 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, - 581, 581, 581, 581, 581, 582, 579, 579, 75, 370, - - 592, 552, 552, 552, 552, 552, 552, 552, 552, 518, - 370, 592, 553, 553, 553, 553, 553, 553, 553, 553, - 592, 592, 592, 592, 554, 554, 554, 554, 554, 592, - 586, 587, 588, 586, 586, 586, 586, 586, 574, 592, - 575, 575, 575, 575, 575, 575, 554, 554, 554, 554, - 554, 554, 540, 592, 541, 541, 541, 541, 541, 541, - 541, 541, 75, 579, 579, 579, 579, 579, 579, 579, - 579, 592, 75, 579, 579, 579, 579, 579, 579, 579, - 579, 592, 592, 592, 592, 592, 75, 540, 592, 541, - 541, 541, 541, 541, 541, 541, 541, 592, 592, 592, - - 589, 589, 589, 589, 589, 589, 589, 589, 586, 586, - 586, 586, 586, 586, 586, 586, 592, 592, 592, 592, - 592, 75, 574, 592, 575, 575, 575, 575, 575, 575, - 575, 575, 75, 592, 592, 592, 592, 592, 592, 592, - 75, 590, 590, 590, 590, 590, 591, 589, 589, 592, - 589, 589, 589, 589, 589, 589, 75, 574, 592, 576, - 576, 576, 576, 576, 576, 576, 576, 592, 592, 592, - 592, 592, 592, 75, 589, 589, 589, 589, 589, 589, - 589, 589, 75, 592, 592, 592, 592, 592, 592, 592, - 592, 75, 574, 592, 577, 577, 577, 577, 577, 578, - - 575, 575, 592, 592, 592, 592, 75, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 75, 574, 592, 575, - 575, 575, 575, 575, 575, 575, 575, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 75, 574, 592, 575, 575, 575, 575, 575, 575, - 575, 575, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 75, 53, 53, 53, + 26, 26, 26, 29, 30, 18, 14, 31, 31, 31, + 31, 32, 33, 33, 33, 33, 34, 35, 33, 36, + 33, 37, 33, 33, 33, 33, 33, 38, 14, 39, + 39, 39, 39, 39, 39, 14, 14, 14, 14, 14, + 14, 14, 40, 14, 14, 41, 49, 83, 42, 43, + 50, 49, 133, 107, 42, 50, 15, 54, 55, 51, + 56, 140, 107, 75, 51, 137, 56, 70, 16, 71, + 72, 84, 75, 44, 45, 138, 79, 46, 56, 57, + + 108, 15, 54, 55, 47, 56, 587, 48, 136, 126, + 143, 56, 70, 16, 71, 72, 88, 88, 136, 75, + 88, 88, 58, 56, 57, 145, 146, 52, 141, 75, + 84, 177, 52, 73, 144, 133, 107, 305, 88, 94, + 94, 94, 94, 94, 94, 94, 94, 58, 15, 16, + 17, 109, 59, 176, 133, 107, 142, 75, 73, 158, + 89, 95, 95, 95, 95, 95, 96, 74, 160, 93, + 93, 93, 93, 93, 93, 93, 93, 75, 142, 110, + 111, 75, 170, 112, 156, 156, 156, 156, 156, 156, + 113, 133, 107, 114, 60, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 15, 16, 17, 122, 59, 580, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 74, 75, 144, 75, 145, 146, 183, 152, + 153, 154, 152, 152, 152, 152, 152, 180, 60, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 15, 16, 17, 63, + 59, 75, 75, 178, 75, 64, 65, 66, 142, 75, + 181, 124, 124, 164, 497, 124, 124, 179, 165, 67, + + 158, 166, 214, 167, 133, 107, 129, 107, 130, 199, + 131, 143, 75, 124, 130, 79, 131, 221, 75, 75, + 75, 223, 68, 15, 16, 17, 63, 59, 131, 131, + 92, 224, 64, 65, 66, 125, 221, 82, 498, 82, + 82, 82, 75, 82, 82, 135, 67, 82, 135, 135, + 136, 580, 131, 158, 75, 135, 221, 142, 186, 248, + 82, 82, 199, 365, 220, 232, 232, 232, 135, 68, + 79, 156, 156, 156, 156, 156, 156, 156, 156, 79, + 80, 249, 266, 81, 81, 81, 81, 81, 81, 81, + 81, 90, 75, 91, 91, 91, 91, 91, 91, 91, + + 91, 92, 75, 263, 75, 93, 93, 93, 93, 93, + 258, 250, 513, 88, 88, 251, 75, 88, 88, 241, + 241, 241, 241, 241, 242, 75, 75, 93, 93, 93, + 93, 93, 93, 74, 262, 88, 248, 587, 75, 74, + 365, 221, 74, 74, 265, 74, 74, 74, 99, 99, + 99, 99, 99, 99, 99, 99, 92, 89, 249, 74, + 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 75, 100, 93, 93, 93, 93, 93, 93, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 100, 100, + + 100, 100, 100, 100, 100, 100, 587, 75, 414, 414, + 100, 100, 100, 100, 100, 156, 156, 156, 156, 156, + 156, 156, 156, 356, 186, 109, 187, 187, 187, 187, + 187, 187, 74, 74, 74, 74, 74, 74, 106, 107, + 74, 74, 74, 158, 74, 74, 88, 343, 74, 513, + 88, 344, 199, 110, 111, 75, 88, 112, 75, 79, + 74, 74, 74, 79, 113, 306, 471, 114, 88, 88, + 124, 124, 79, 80, 124, 124, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 124, 587, 587, 587, 587, 587, 587, 587, + + 587, 124, 75, 92, 341, 124, 236, 158, 75, 587, + 158, 124, 355, 301, 125, 75, 238, 115, 79, 238, + 307, 304, 354, 124, 124, 347, 342, 75, 132, 468, + 468, 587, 587, 587, 587, 587, 587, 587, 587, 74, + 358, 74, 74, 74, 264, 74, 74, 348, 540, 74, + 225, 226, 227, 225, 225, 225, 225, 225, 79, 533, + 158, 74, 74, 74, 85, 555, 85, 85, 85, 199, + 85, 85, 158, 75, 85, 286, 286, 286, 286, 286, + 287, 238, 75, 75, 236, 158, 85, 85, 85, 87, + 158, 74, 74, 87, 238, 74, 74, 158, 404, 87, + + 230, 230, 231, 232, 232, 232, 232, 232, 196, 402, + 79, 87, 87, 74, 155, 155, 155, 155, 155, 155, + 155, 155, 75, 79, 452, 349, 155, 155, 155, 155, + 155, 204, 204, 204, 204, 204, 204, 204, 204, 240, + 240, 240, 240, 240, 240, 240, 240, 350, 155, 155, + 155, 155, 155, 155, 161, 161, 161, 161, 161, 161, + 161, 161, 236, 158, 494, 341, 161, 161, 161, 161, + 161, 587, 283, 239, 239, 239, 239, 239, 239, 239, + 239, 347, 534, 75, 471, 587, 158, 342, 155, 155, + 155, 155, 155, 155, 123, 283, 74, 74, 123, 399, + + 74, 74, 417, 348, 123, 272, 272, 272, 272, 272, + 272, 272, 272, 196, 75, 75, 123, 123, 74, 149, + 533, 149, 149, 149, 351, 149, 149, 531, 365, 149, + 277, 278, 279, 277, 277, 277, 277, 277, 367, 236, + 158, 149, 149, 149, 186, 530, 187, 187, 187, 187, + 187, 187, 187, 187, 247, 247, 247, 247, 247, 247, + 247, 247, 236, 158, 281, 281, 281, 281, 281, 281, + 578, 75, 238, 587, 158, 578, 349, 529, 75, 186, + 357, 188, 188, 188, 188, 188, 188, 188, 188, 285, + 285, 285, 285, 285, 285, 285, 285, 587, 350, 284, + + 284, 284, 284, 284, 284, 284, 284, 332, 332, 332, + 332, 332, 333, 75, 186, 158, 189, 189, 189, 189, + 189, 190, 187, 187, 238, 444, 158, 308, 309, 310, + 308, 308, 308, 308, 308, 266, 158, 267, 267, 267, + 267, 267, 267, 417, 75, 283, 75, 445, 75, 74, + 367, 191, 191, 191, 191, 191, 191, 191, 191, 75, + 405, 495, 446, 191, 191, 191, 191, 191, 320, 75, + 321, 321, 321, 321, 321, 321, 321, 321, 370, 370, + 370, 370, 370, 371, 447, 191, 191, 191, 191, 191, + 191, 193, 194, 195, 195, 195, 195, 195, 195, 196, + + 75, 485, 485, 197, 197, 197, 197, 197, 320, 403, + 322, 322, 322, 322, 322, 322, 322, 322, 387, 387, + 387, 387, 387, 388, 462, 197, 197, 197, 197, 197, + 197, 158, 200, 201, 202, 200, 200, 200, 200, 200, + 203, 492, 487, 444, 204, 204, 204, 204, 204, 320, + 587, 323, 323, 323, 323, 323, 324, 321, 321, 446, + 367, 497, 450, 79, 488, 445, 204, 204, 204, 204, + 204, 204, 205, 205, 205, 205, 205, 205, 205, 205, + 491, 447, 510, 510, 205, 205, 205, 205, 205, 292, + 292, 292, 292, 292, 292, 292, 292, 331, 331, 331, + + 331, 331, 331, 331, 331, 500, 191, 191, 191, 191, + 191, 191, 186, 451, 187, 187, 187, 187, 187, 187, + 187, 187, 236, 158, 327, 327, 327, 327, 327, 327, + 490, 587, 283, 330, 330, 330, 330, 330, 330, 330, + 330, 236, 158, 546, 546, 489, 75, 186, 427, 187, + 187, 187, 187, 187, 187, 187, 187, 319, 319, 319, + 319, 319, 319, 319, 319, 369, 369, 369, 369, 369, + 369, 369, 369, 377, 378, 379, 377, 377, 377, 377, + 377, 75, 236, 158, 237, 237, 237, 237, 237, 237, + 237, 237, 238, 158, 367, 487, 239, 239, 239, 239, + + 239, 587, 283, 368, 368, 368, 368, 368, 368, 368, + 368, 420, 420, 420, 420, 420, 421, 488, 239, 239, + 239, 239, 239, 239, 158, 243, 244, 245, 243, 243, + 243, 243, 243, 246, 158, 314, 527, 247, 247, 247, + 247, 247, 320, 329, 321, 321, 321, 321, 321, 321, + 321, 321, 556, 79, 564, 564, 236, 158, 528, 247, + 247, 247, 247, 247, 247, 266, 283, 267, 267, 267, + 267, 267, 267, 267, 267, 320, 365, 321, 321, 321, + 321, 321, 321, 321, 321, 320, 367, 321, 321, 321, + 321, 321, 321, 438, 438, 438, 438, 438, 439, 75, + + 266, 75, 268, 268, 268, 268, 268, 268, 268, 268, + 236, 158, 338, 338, 338, 338, 338, 338, 338, 338, + 329, 587, 158, 236, 158, 382, 382, 382, 382, 382, + 382, 329, 455, 329, 75, 266, 449, 269, 269, 269, + 269, 269, 270, 267, 267, 386, 386, 386, 386, 386, + 386, 386, 386, 587, 365, 385, 385, 385, 385, 385, + 385, 385, 385, 448, 417, 75, 75, 134, 134, 75, + 236, 158, 281, 281, 281, 281, 281, 281, 281, 281, + 238, 236, 158, 282, 282, 282, 282, 282, 282, 282, + 282, 283, 443, 442, 527, 284, 284, 284, 284, 284, + + 535, 406, 407, 408, 409, 406, 406, 406, 406, 358, + 359, 359, 359, 359, 359, 359, 528, 284, 284, 284, + 284, 284, 284, 158, 288, 289, 290, 288, 288, 288, + 288, 288, 291, 75, 75, 553, 292, 292, 292, 292, + 292, 587, 75, 411, 412, 413, 411, 411, 411, 411, + 411, 417, 441, 440, 314, 236, 158, 554, 292, 292, + 292, 292, 292, 292, 266, 329, 267, 267, 267, 267, + 267, 267, 267, 267, 376, 376, 376, 376, 376, 376, + 376, 376, 419, 419, 419, 419, 419, 419, 419, 419, + 236, 158, 474, 474, 474, 474, 474, 475, 75, 266, + + 384, 267, 267, 267, 267, 267, 267, 267, 267, 587, + 234, 418, 418, 418, 418, 418, 418, 418, 418, 427, + 158, 428, 428, 428, 428, 428, 428, 428, 428, 329, + 505, 505, 505, 75, 315, 316, 317, 315, 315, 315, + 315, 315, 318, 158, 453, 401, 319, 319, 319, 319, + 319, 427, 384, 429, 429, 429, 429, 429, 429, 429, + 429, 400, 75, 398, 453, 397, 453, 453, 319, 319, + 319, 319, 319, 319, 236, 158, 327, 327, 327, 327, + 327, 327, 327, 327, 283, 236, 158, 328, 328, 328, + 328, 328, 328, 328, 328, 329, 553, 566, 566, 330, + + 330, 330, 330, 330, 427, 365, 430, 430, 430, 430, + 430, 431, 428, 428, 396, 417, 395, 587, 554, 567, + 567, 330, 330, 330, 330, 330, 330, 158, 334, 335, + 336, 334, 334, 334, 334, 334, 337, 394, 393, 320, + 338, 338, 338, 338, 338, 392, 392, 392, 392, 392, + 392, 392, 392, 437, 437, 437, 437, 437, 437, 437, + 437, 498, 338, 338, 338, 338, 338, 338, 358, 359, + 359, 359, 359, 359, 359, 359, 359, 587, 158, 236, + 158, 434, 434, 434, 434, 434, 434, 384, 587, 384, + 436, 436, 436, 436, 436, 436, 436, 436, 569, 314, + + 234, 75, 358, 360, 360, 360, 360, 360, 360, 360, + 360, 453, 462, 196, 463, 463, 463, 463, 463, 463, + 463, 463, 426, 426, 426, 426, 426, 426, 426, 426, + 353, 453, 75, 453, 454, 75, 358, 361, 361, 361, + 361, 361, 362, 359, 359, 462, 352, 464, 464, 464, + 464, 464, 464, 464, 464, 75, 462, 365, 465, 465, + 465, 465, 465, 466, 463, 463, 346, 471, 345, 75, + 365, 587, 366, 366, 366, 366, 366, 366, 366, 366, + 367, 471, 340, 339, 368, 368, 368, 368, 368, 473, + 473, 473, 473, 473, 473, 473, 473, 481, 482, 483, + + 481, 481, 481, 481, 481, 314, 368, 368, 368, 368, + 368, 368, 372, 373, 374, 372, 372, 372, 372, 372, + 375, 158, 234, 196, 376, 376, 376, 376, 376, 587, + 384, 472, 472, 472, 472, 472, 472, 472, 472, 587, + 455, 196, 505, 505, 505, 259, 376, 376, 376, 376, + 376, 376, 236, 158, 382, 382, 382, 382, 382, 382, + 382, 382, 329, 236, 158, 383, 383, 383, 383, 383, + 383, 383, 383, 384, 75, 303, 302, 385, 385, 385, + 385, 385, 427, 498, 428, 428, 428, 428, 428, 428, + 428, 428, 516, 516, 516, 516, 516, 517, 300, 385, + + 385, 385, 385, 385, 385, 158, 389, 390, 391, 389, + 389, 389, 389, 389, 236, 158, 299, 298, 392, 392, + 392, 392, 392, 427, 384, 428, 428, 428, 428, 428, + 428, 428, 428, 587, 551, 551, 551, 551, 551, 552, + 392, 392, 392, 392, 392, 392, 358, 359, 359, 359, + 359, 359, 359, 359, 359, 427, 297, 428, 428, 428, + 428, 428, 428, 450, 79, 501, 502, 503, 501, 501, + 501, 501, 501, 296, 295, 294, 493, 500, 293, 75, + 358, 359, 359, 359, 359, 359, 359, 359, 359, 506, + 507, 508, 506, 506, 506, 506, 506, 75, 462, 365, + + 463, 463, 463, 463, 463, 463, 463, 463, 275, 471, + 234, 196, 271, 75, 365, 196, 415, 415, 415, 415, + 415, 415, 415, 415, 367, 365, 365, 416, 416, 416, + 416, 416, 416, 416, 416, 417, 513, 98, 259, 418, + 418, 418, 418, 418, 462, 587, 463, 463, 463, 463, + 463, 463, 463, 463, 261, 513, 259, 260, 259, 257, + 256, 418, 418, 418, 418, 418, 418, 422, 423, 424, + 422, 422, 422, 422, 422, 425, 255, 254, 253, 426, + 426, 426, 426, 426, 462, 252, 463, 463, 463, 463, + 463, 463, 480, 480, 480, 480, 480, 480, 480, 480, + + 92, 426, 426, 426, 426, 426, 426, 236, 158, 434, + 434, 434, 434, 434, 434, 434, 434, 384, 236, 158, + 435, 435, 435, 435, 435, 435, 435, 435, 196, 234, + 196, 98, 436, 436, 436, 436, 436, 515, 515, 515, + 515, 515, 515, 515, 515, 158, 522, 522, 522, 522, + 522, 522, 522, 522, 436, 436, 436, 436, 436, 436, + 455, 365, 456, 456, 456, 456, 456, 456, 456, 456, + 587, 513, 514, 514, 514, 514, 514, 514, 514, 514, + 158, 523, 523, 523, 523, 523, 523, 523, 523, 79, + 184, 222, 219, 218, 75, 455, 217, 457, 457, 457, + + 457, 457, 457, 457, 457, 158, 524, 524, 524, 524, + 524, 525, 522, 522, 556, 79, 216, 215, 496, 213, + 212, 496, 496, 211, 496, 496, 210, 568, 496, 75, + 455, 209, 458, 458, 458, 458, 458, 459, 460, 460, + 496, 496, 496, 540, 208, 541, 541, 541, 541, 541, + 541, 541, 541, 499, 207, 206, 499, 499, 98, 499, + 499, 90, 150, 499, 75, 455, 79, 461, 461, 461, + 456, 456, 456, 456, 456, 499, 499, 499, 79, 184, + 504, 504, 504, 504, 504, 504, 504, 504, 540, 141, + 542, 542, 542, 542, 542, 542, 542, 542, 142, 75, + + 365, 136, 469, 469, 469, 469, 469, 469, 469, 469, + 417, 365, 75, 470, 470, 470, 470, 470, 470, 470, + 470, 471, 136, 128, 182, 472, 472, 472, 472, 472, + 540, 121, 543, 543, 543, 543, 543, 544, 541, 541, + 158, 522, 522, 522, 522, 522, 522, 472, 472, 472, + 472, 472, 472, 476, 477, 478, 476, 476, 476, 476, + 476, 479, 175, 174, 173, 480, 480, 480, 480, 480, + 521, 521, 521, 521, 521, 521, 521, 521, 550, 550, + 550, 550, 550, 550, 550, 550, 172, 480, 480, 480, + 480, 480, 480, 236, 158, 486, 486, 486, 486, 486, + + 486, 486, 486, 455, 171, 460, 460, 460, 460, 460, + 460, 460, 460, 587, 169, 549, 549, 549, 549, 549, + 549, 549, 549, 158, 522, 522, 522, 522, 522, 522, + 522, 522, 168, 163, 162, 98, 74, 75, 455, 98, + 460, 460, 460, 460, 460, 460, 460, 460, 158, 522, + 522, 522, 522, 522, 522, 522, 522, 557, 558, 559, + 557, 557, 557, 557, 557, 574, 574, 574, 574, 574, + 574, 151, 75, 455, 86, 460, 460, 460, 460, 460, + 460, 504, 504, 150, 79, 77, 76, 75, 535, 75, + 536, 536, 536, 536, 536, 536, 560, 561, 562, 560, + + 560, 560, 560, 560, 142, 136, 128, 75, 455, 121, + 504, 504, 504, 504, 504, 504, 504, 504, 120, 119, + 118, 540, 75, 541, 541, 541, 541, 541, 541, 541, + 541, 540, 117, 541, 541, 541, 541, 541, 541, 541, + 541, 116, 75, 365, 105, 511, 511, 511, 511, 511, + 511, 511, 511, 471, 365, 104, 512, 512, 512, 512, + 512, 512, 512, 512, 513, 103, 102, 101, 514, 514, + 514, 514, 514, 540, 98, 541, 541, 541, 541, 541, + 541, 574, 574, 574, 574, 574, 574, 574, 574, 86, + 514, 514, 514, 514, 514, 514, 518, 519, 520, 518, + + 518, 518, 518, 518, 77, 76, 75, 587, 521, 521, + 521, 521, 521, 365, 587, 565, 565, 565, 565, 565, + 565, 565, 565, 587, 587, 587, 587, 587, 587, 587, + 521, 521, 521, 521, 521, 521, 535, 587, 536, 536, + 536, 536, 536, 536, 536, 536, 575, 575, 575, 575, + 575, 575, 575, 575, 576, 576, 576, 576, 576, 577, + 574, 574, 581, 582, 583, 581, 581, 581, 581, 581, + 75, 535, 587, 537, 537, 537, 537, 537, 537, 537, + 537, 587, 569, 587, 570, 570, 570, 570, 570, 570, + 587, 587, 587, 587, 75, 574, 574, 574, 574, 574, + + 574, 574, 574, 587, 587, 75, 535, 587, 538, 538, + 538, 538, 538, 539, 536, 536, 75, 574, 574, 574, + 574, 574, 574, 574, 574, 587, 587, 587, 587, 587, + 584, 584, 584, 584, 584, 584, 584, 584, 587, 587, + 75, 365, 587, 547, 547, 547, 547, 547, 547, 547, + 547, 513, 365, 587, 548, 548, 548, 548, 548, 548, + 548, 548, 75, 587, 587, 587, 549, 549, 549, 549, + 549, 587, 581, 581, 581, 581, 581, 581, 581, 581, + 585, 585, 585, 585, 585, 586, 584, 584, 549, 549, + 549, 549, 549, 549, 535, 587, 536, 536, 536, 536, + + 536, 536, 536, 536, 75, 587, 587, 587, 587, 587, + 587, 587, 75, 584, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 584, 584, 587, 75, 535, + 587, 536, 536, 536, 536, 536, 536, 536, 536, 587, + 587, 587, 587, 587, 587, 75, 587, 587, 587, 587, + 587, 587, 587, 75, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 75, 569, 587, 570, 570, 570, 570, + 570, 570, 570, 570, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 75, 569, + + 587, 571, 571, 571, 571, 571, 571, 571, 571, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 75, 569, 587, 572, 572, 572, 572, + 572, 573, 570, 570, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 75, 569, + 587, 570, 570, 570, 570, 570, 570, 570, 570, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + + 587, 587, 587, 75, 569, 587, 570, 570, 570, 570, + 570, 570, 570, 570, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 75, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 74, 592, 592, 592, 74, 592, 74, - 74, 74, 592, 592, 74, 74, 74, 78, 78, 592, + 53, 53, 53, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 74, 587, 587, 587, 587, + + 587, 74, 74, 74, 587, 587, 74, 74, 74, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 85, 592, 592, 592, 85, - - 592, 85, 85, 85, 85, 592, 85, 85, 85, 88, - 592, 592, 592, 88, 592, 88, 88, 88, 592, 592, - 88, 88, 88, 90, 592, 592, 90, 90, 90, 90, - 90, 90, 592, 592, 90, 90, 90, 100, 100, 592, - 592, 592, 100, 126, 592, 592, 126, 126, 126, 126, - 126, 126, 592, 592, 126, 126, 126, 130, 592, 592, - 130, 130, 130, 130, 130, 130, 592, 130, 592, 130, - 130, 138, 592, 592, 138, 592, 138, 138, 138, 138, - 138, 592, 138, 138, 138, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 144, - - 144, 592, 144, 592, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 79, 79, 592, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 153, 153, 592, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 154, 592, 592, 592, 154, - 592, 154, 154, 154, 592, 592, 154, 154, 154, 91, - 592, 592, 91, 91, 91, 91, 91, 91, 592, 592, - 91, 91, 91, 162, 162, 592, 592, 592, 162, 164, - 164, 164, 592, 592, 592, 164, 127, 592, 592, 127, - - 127, 127, 127, 127, 127, 592, 592, 127, 127, 127, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 197, 197, 592, 592, 592, 197, - 203, 203, 203, 592, 592, 592, 203, 233, 233, 592, - 592, 592, 233, 234, 234, 592, 592, 592, 234, 238, - 238, 592, 592, 592, 238, 240, 240, 240, 592, 592, - 592, 240, 276, 276, 592, 592, 592, 276, 278, 278, - 592, 592, 592, 278, 279, 279, 592, 592, 592, 279, - 281, 281, 281, 592, 592, 592, 281, 285, 285, 285, - 285, 592, 592, 592, 285, 316, 316, 592, 592, 592, - - 316, 317, 317, 592, 592, 592, 317, 318, 318, 592, - 592, 592, 318, 330, 330, 330, 592, 592, 592, 330, - 331, 331, 331, 331, 592, 592, 592, 331, 368, 368, - 592, 592, 592, 368, 369, 369, 592, 592, 592, 369, - 385, 385, 385, 592, 592, 592, 385, 386, 386, 386, - 386, 592, 592, 592, 386, 415, 415, 592, 592, 592, - 415, 419, 592, 419, 419, 592, 592, 592, 419, 437, - 437, 437, 592, 592, 592, 437, 438, 438, 438, 438, - 592, 592, 592, 438, 472, 472, 592, 592, 592, 472, - 473, 592, 473, 473, 592, 592, 592, 473, 489, 489, - - 489, 592, 592, 592, 489, 490, 490, 490, 592, 592, - 592, 592, 490, 501, 592, 592, 501, 501, 592, 501, - 501, 501, 592, 592, 501, 501, 501, 504, 592, 592, - 504, 504, 592, 504, 504, 504, 592, 592, 504, 504, - 504, 514, 514, 592, 592, 592, 514, 515, 592, 515, - 515, 592, 592, 592, 515, 531, 531, 592, 592, 592, - 592, 531, 537, 537, 537, 537, 537, 537, 537, 537, - 537, 537, 537, 537, 537, 537, 550, 550, 592, 592, - 592, 550, 551, 592, 551, 551, 592, 592, 592, 551, - 568, 568, 592, 592, 592, 568, 569, 592, 569, 592, - - 592, 592, 592, 569, 584, 584, 584, 584, 584, 584, - 584, 584, 584, 584, 584, 584, 584, 584, 13, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592 + 78, 78, 78, 82, 587, 587, 587, 587, 587, 82, + 82, 82, 82, 587, 82, 82, 82, 85, 587, 587, + 587, 587, 587, 85, 85, 85, 587, 587, 85, 85, + 85, 87, 587, 587, 87, 87, 87, 87, 87, 87, + 587, 587, 87, 87, 87, 97, 97, 587, 587, 587, + 97, 123, 587, 587, 123, 123, 123, 123, 123, 123, + 587, 587, 123, 123, 123, 127, 587, 587, 127, 127, + 127, 127, 127, 127, 587, 127, 587, 127, 127, 135, + + 587, 587, 135, 587, 135, 135, 135, 135, 135, 587, + 135, 135, 135, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 141, 141, 587, + 141, 587, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 148, 148, 587, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 149, + 587, 587, 587, 587, 587, 149, 149, 149, 587, 587, + 149, 149, 149, 88, 587, 587, 88, 88, 88, 88, + 88, 88, 587, 587, 88, 88, 88, 157, 157, 587, + + 587, 587, 157, 159, 159, 159, 587, 587, 587, 159, + 124, 587, 587, 124, 124, 124, 124, 124, 124, 587, + 587, 124, 124, 124, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 192, 192, + 587, 587, 587, 192, 198, 198, 198, 587, 587, 587, + 198, 228, 228, 587, 587, 587, 228, 229, 229, 587, + 587, 587, 229, 233, 233, 587, 587, 587, 233, 235, + 235, 235, 587, 587, 587, 235, 271, 271, 587, 587, + 587, 271, 273, 273, 587, 587, 587, 273, 274, 274, + 587, 587, 587, 274, 276, 276, 276, 587, 587, 587, + + 276, 280, 280, 280, 280, 587, 587, 587, 280, 311, + 311, 587, 587, 587, 311, 312, 312, 587, 587, 587, + 312, 313, 313, 587, 587, 587, 313, 325, 325, 325, + 587, 587, 587, 325, 326, 326, 326, 326, 587, 587, + 587, 326, 363, 363, 587, 587, 587, 363, 364, 364, + 587, 587, 587, 364, 380, 380, 380, 587, 587, 587, + 380, 381, 381, 381, 381, 587, 587, 587, 381, 410, + 410, 587, 587, 587, 410, 414, 587, 414, 414, 587, + 587, 587, 414, 432, 432, 432, 587, 587, 587, 432, + 433, 433, 433, 433, 587, 587, 587, 433, 467, 467, + + 587, 587, 587, 467, 468, 587, 468, 468, 587, 587, + 587, 468, 484, 484, 484, 587, 587, 587, 484, 485, + 485, 485, 587, 587, 587, 587, 485, 496, 587, 587, + 496, 587, 587, 496, 496, 496, 587, 587, 496, 496, + 496, 499, 587, 587, 499, 587, 587, 499, 499, 499, + 587, 587, 499, 499, 499, 509, 509, 587, 587, 587, + 509, 510, 587, 510, 510, 587, 587, 587, 510, 526, + 526, 587, 587, 587, 587, 526, 532, 532, 532, 532, + 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, + 545, 545, 587, 587, 587, 545, 546, 587, 546, 546, + + 587, 587, 587, 546, 563, 563, 587, 587, 587, 563, + 564, 587, 564, 587, 587, 587, 587, 564, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 13, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587 + } ; -static yyconst short int yy_chk[3685] = +static yyconst short int yy_chk[3699] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -973,405 +973,407 @@ static yyconst short int yy_chk[3685] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 3, 4, 269, 2, - 3, 4, 70, 5, 5, 5, 123, 5, 269, 3, - 4, 20, 123, 5, 11, 11, 11, 11, 6, 6, - 6, 41, 6, 2, 2, 5, 5, 2, 6, 12, - - 12, 12, 12, 64, 2, 20, 71, 2, 41, 25, - 6, 6, 52, 25, 25, 60, 60, 66, 70, 5, - 28, 28, 28, 28, 28, 28, 64, 3, 4, 52, - 11, 25, 68, 68, 6, 7, 7, 7, 101, 7, - 66, 73, 73, 164, 73, 12, 111, 101, 85, 118, - 71, 111, 164, 25, 27, 27, 27, 27, 27, 27, - 27, 27, 40, 119, 40, 40, 40, 40, 40, 40, - 40, 40, 85, 129, 589, 119, 42, 584, 129, 132, - 132, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, - - 8, 8, 573, 8, 42, 42, 118, 75, 42, 75, - 185, 75, 185, 75, 75, 42, 50, 75, 42, 50, - 50, 50, 50, 50, 50, 50, 50, 120, 122, 75, - 75, 75, 83, 83, 83, 83, 83, 83, 83, 83, - 122, 309, 109, 109, 146, 8, 8, 8, 8, 8, + 1, 1, 1, 1, 1, 2, 3, 20, 2, 2, + 3, 4, 60, 60, 4, 4, 5, 5, 5, 3, + 5, 68, 68, 40, 4, 64, 5, 11, 11, 11, + 11, 20, 52, 2, 2, 66, 115, 2, 5, 5, + + 40, 6, 6, 6, 2, 6, 82, 2, 64, 52, + 70, 6, 12, 12, 12, 12, 25, 25, 66, 116, + 25, 25, 5, 6, 6, 73, 73, 3, 73, 584, + 82, 116, 4, 11, 71, 106, 106, 263, 25, 27, + 27, 27, 27, 27, 27, 27, 27, 6, 7, 7, + 7, 41, 7, 115, 129, 129, 70, 263, 12, 98, + 25, 28, 28, 28, 28, 28, 28, 39, 98, 39, + 39, 39, 39, 39, 39, 39, 39, 108, 71, 41, + 41, 106, 108, 41, 96, 96, 96, 96, 96, 96, + 41, 133, 133, 41, 7, 7, 7, 7, 7, 7, + + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 8, 8, 8, 50, 8, 579, 50, 50, + 50, 50, 50, 50, 50, 50, 80, 80, 80, 80, + 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, + 81, 81, 117, 126, 144, 119, 145, 145, 126, 90, + 90, 90, 90, 90, 90, 90, 90, 119, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 9, 9, 9, 9, 9, 120, 136, - 136, 51, 9, 9, 9, 51, 51, 58, 58, 58, - 121, 58, 184, 147, 106, 58, 9, 58, 109, 106, - 146, 309, 106, 51, 106, 121, 148, 148, 184, 58, - - 58, 84, 84, 84, 84, 84, 84, 84, 84, 9, - 10, 10, 10, 10, 10, 51, 143, 143, 570, 10, - 10, 10, 87, 58, 87, 181, 87, 147, 87, 87, - 267, 90, 87, 10, 175, 90, 90, 93, 93, 93, - 93, 93, 93, 93, 93, 87, 87, 175, 89, 568, - 89, 186, 89, 90, 89, 89, 10, 18, 89, 18, - 18, 18, 143, 18, 18, 186, 211, 18, 182, 93, - 89, 89, 89, 182, 181, 90, 554, 203, 188, 18, - 18, 18, 192, 92, 553, 92, 203, 92, 211, 92, - 92, 188, 267, 92, 97, 97, 97, 97, 97, 97, - - 97, 97, 196, 18, 19, 92, 92, 92, 99, 99, - 99, 99, 99, 99, 19, 225, 192, 19, 19, 19, - 19, 19, 19, 19, 19, 26, 196, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 200, 200, 200, 26, - 26, 26, 26, 26, 98, 98, 98, 98, 98, 98, - 98, 98, 207, 207, 207, 207, 207, 207, 268, 26, - 551, 26, 26, 26, 26, 26, 26, 32, 212, 219, - 225, 32, 212, 32, 550, 219, 32, 32, 268, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 226, 226, 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, 32, - 32, 32, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 359, 228, 546, 34, 34, 34, 34, 34, 125, - 125, 125, 125, 125, 125, 125, 125, 228, 126, 112, - 301, 537, 126, 126, 301, 227, 34, 34, 34, 34, - 34, 34, 39, 39, 39, 229, 39, 240, 39, 39, - 126, 229, 39, 242, 242, 263, 240, 112, 112, 227, - 263, 112, 359, 242, 39, 39, 39, 43, 112, 244, - - 244, 112, 126, 270, 253, 272, 227, 43, 270, 244, - 43, 43, 43, 43, 43, 43, 43, 43, 128, 408, - 128, 408, 128, 361, 128, 128, 253, 310, 128, 135, - 135, 135, 135, 135, 135, 135, 135, 310, 361, 272, - 128, 128, 128, 204, 204, 204, 204, 204, 204, 204, - 204, 43, 59, 191, 191, 191, 191, 191, 191, 191, - 191, 535, 59, 531, 300, 59, 59, 59, 59, 59, - 59, 59, 59, 78, 458, 78, 78, 78, 139, 78, - 78, 139, 139, 78, 364, 191, 300, 311, 139, 250, - 250, 250, 250, 250, 250, 78, 78, 78, 281, 356, - - 285, 139, 306, 311, 286, 286, 155, 281, 155, 285, - 155, 306, 155, 155, 286, 356, 155, 364, 458, 78, - 94, 94, 94, 94, 94, 94, 94, 94, 155, 155, - 155, 527, 94, 94, 94, 94, 94, 195, 515, 195, - 195, 195, 195, 195, 195, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 94, 94, 94, 94, 94, 94, - 102, 102, 102, 102, 102, 102, 102, 102, 312, 287, - 287, 195, 102, 102, 102, 102, 102, 312, 156, 287, - 289, 289, 156, 514, 330, 376, 376, 362, 156, 500, - 289, 304, 305, 330, 102, 102, 102, 102, 102, 102, - - 156, 156, 157, 362, 157, 157, 157, 157, 157, 157, - 157, 157, 187, 304, 305, 456, 187, 407, 407, 426, - 426, 371, 187, 206, 206, 206, 206, 206, 206, 206, - 206, 371, 440, 440, 187, 187, 157, 158, 498, 158, - 158, 158, 158, 158, 158, 158, 158, 209, 346, 209, - 209, 209, 209, 209, 209, 209, 209, 235, 235, 235, - 235, 235, 235, 235, 235, 235, 441, 441, 407, 456, - 346, 158, 159, 497, 159, 159, 159, 159, 159, 159, - 159, 159, 241, 241, 241, 241, 241, 241, 241, 241, - 243, 243, 243, 243, 243, 243, 243, 243, 247, 247, - - 247, 247, 247, 247, 247, 247, 159, 160, 247, 160, - 160, 160, 160, 160, 160, 160, 160, 444, 444, 457, - 496, 160, 160, 160, 160, 160, 249, 249, 249, 249, - 249, 249, 249, 249, 457, 271, 271, 271, 271, 271, - 271, 271, 271, 160, 160, 160, 160, 160, 160, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 480, 480, - 352, 163, 163, 163, 163, 163, 252, 271, 252, 252, - 252, 252, 252, 252, 252, 252, 295, 295, 295, 295, - 295, 295, 352, 163, 163, 163, 163, 163, 163, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 331, - - 495, 354, 165, 165, 165, 165, 165, 275, 331, 275, - 275, 275, 275, 275, 275, 288, 288, 288, 288, 288, - 288, 288, 288, 354, 165, 165, 165, 165, 165, 165, - 166, 166, 166, 166, 166, 166, 166, 166, 332, 332, - 490, 275, 166, 166, 166, 166, 166, 282, 332, 282, - 282, 282, 282, 282, 282, 282, 282, 322, 322, 322, - 322, 322, 322, 473, 166, 166, 166, 166, 166, 166, - 193, 373, 193, 193, 193, 193, 193, 193, 193, 193, - 283, 373, 283, 283, 283, 283, 283, 283, 283, 283, - 284, 360, 284, 284, 284, 284, 284, 284, 284, 284, - - 360, 402, 403, 461, 193, 194, 472, 194, 194, 194, - 194, 194, 194, 194, 194, 292, 292, 292, 292, 292, - 292, 292, 292, 402, 403, 292, 294, 294, 294, 294, - 294, 294, 294, 294, 491, 491, 468, 461, 453, 194, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 385, 448, 445, 205, 205, 205, 205, 205, 297, - 385, 297, 297, 297, 297, 297, 297, 297, 297, 341, - 341, 341, 341, 341, 341, 445, 205, 205, 205, 205, - 205, 205, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 522, 522, 449, 208, 208, 208, 208, 208, - - 319, 319, 319, 319, 319, 319, 319, 319, 321, 321, - 321, 321, 321, 321, 321, 321, 449, 208, 208, 208, - 208, 208, 208, 230, 420, 230, 230, 230, 230, 230, - 230, 230, 230, 324, 420, 324, 324, 324, 324, 324, - 324, 324, 324, 325, 325, 325, 325, 325, 325, 325, - 325, 379, 379, 379, 379, 379, 379, 230, 231, 421, - 231, 231, 231, 231, 231, 231, 231, 231, 327, 421, - 327, 327, 327, 327, 327, 327, 327, 327, 328, 386, - 328, 328, 328, 328, 328, 328, 328, 328, 386, 539, - 539, 447, 231, 232, 423, 232, 232, 232, 232, 232, - - 232, 232, 232, 329, 423, 329, 329, 329, 329, 329, - 329, 333, 333, 334, 334, 334, 334, 334, 334, 334, - 334, 333, 557, 557, 541, 459, 446, 232, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 335, 335, 451, 248, 248, 248, 248, 248, 541, 433, - 335, 338, 338, 338, 338, 338, 338, 338, 338, 459, - 492, 338, 606, 606, 451, 248, 248, 248, 248, 248, - 248, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 419, 492, 494, 251, 251, 251, 251, 251, 340, - - 340, 340, 340, 340, 340, 340, 340, 370, 370, 370, - 370, 370, 370, 370, 370, 494, 251, 251, 251, 251, - 251, 251, 273, 474, 273, 273, 273, 273, 273, 273, - 273, 273, 343, 474, 343, 343, 343, 343, 343, 343, - 343, 343, 363, 363, 363, 363, 363, 363, 363, 363, - 396, 396, 396, 396, 396, 396, 273, 274, 501, 274, - 274, 274, 274, 274, 274, 274, 274, 429, 429, 429, - 429, 429, 429, 415, 363, 410, 367, 367, 367, 367, - 367, 367, 367, 372, 372, 372, 372, 372, 372, 372, - 372, 274, 280, 280, 280, 280, 280, 280, 280, 280, - - 280, 406, 501, 405, 280, 280, 280, 280, 280, 367, - 378, 378, 378, 378, 378, 378, 378, 378, 389, 389, - 389, 389, 389, 389, 389, 389, 280, 280, 280, 280, - 280, 280, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 437, 454, 404, 293, 293, 293, - 293, 293, 381, 437, 381, 381, 381, 381, 381, 381, - 381, 381, 401, 400, 399, 454, 398, 454, 454, 293, - 293, 293, 293, 293, 293, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 438, 499, 532, 296, 296, - - 296, 296, 296, 382, 438, 382, 382, 382, 382, 382, - 382, 382, 382, 483, 483, 483, 483, 483, 483, 532, - 296, 296, 296, 296, 296, 296, 313, 313, 313, 313, - 313, 313, 313, 313, 313, 383, 475, 383, 383, 383, - 383, 383, 383, 383, 383, 384, 475, 384, 384, 384, - 384, 384, 384, 384, 384, 499, 369, 368, 358, 313, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 387, - 387, 388, 388, 390, 390, 357, 351, 575, 502, 387, - 504, 388, 477, 390, 395, 395, 395, 395, 395, 395, - 395, 395, 477, 314, 315, 315, 315, 315, 315, 315, - - 315, 315, 315, 393, 393, 393, 393, 393, 393, 393, - 393, 575, 397, 393, 397, 397, 397, 397, 397, 397, - 397, 397, 502, 350, 504, 349, 348, 315, 320, 345, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 489, - 344, 534, 320, 320, 320, 320, 320, 416, 489, 416, - 416, 416, 416, 416, 416, 416, 416, 525, 525, 525, - 525, 525, 525, 534, 320, 320, 320, 320, 320, 320, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 326, - 318, 558, 323, 323, 323, 323, 323, 417, 317, 417, - 417, 417, 417, 417, 417, 417, 417, 316, 466, 308, - - 466, 466, 466, 558, 323, 323, 323, 323, 323, 323, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 339, 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 466, 560, 571, 339, 339, 339, 339, 339, - 418, 516, 418, 418, 418, 418, 418, 418, 418, 418, - 307, 516, 409, 303, 302, 560, 571, 339, 339, 339, - 339, 339, 339, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 409, 299, 409, 409, 342, 342, 342, 342, - 342, 422, 422, 422, 422, 422, 422, 422, 422, 657, - 510, 510, 510, 298, 657, 279, 409, 278, 342, 342, - - 342, 342, 342, 342, 365, 365, 365, 365, 365, 365, - 365, 365, 365, 428, 428, 428, 428, 428, 428, 428, - 428, 431, 510, 431, 431, 431, 431, 431, 431, 431, - 431, 582, 582, 582, 582, 582, 582, 365, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 432, 432, 432, - 432, 432, 432, 432, 432, 434, 517, 434, 434, 434, - 434, 434, 434, 434, 434, 277, 517, 276, 266, 265, - 264, 366, 374, 262, 374, 374, 374, 374, 374, 374, - 374, 374, 374, 377, 519, 377, 377, 377, 377, 377, - 377, 377, 377, 377, 519, 261, 260, 377, 377, 377, - - 377, 377, 435, 259, 435, 435, 435, 435, 435, 435, - 435, 435, 530, 530, 530, 530, 530, 530, 530, 377, - 377, 377, 377, 377, 377, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 258, 257, 256, 380, 380, 380, - 380, 380, 436, 255, 436, 436, 436, 436, 436, 436, - 467, 467, 467, 467, 467, 467, 467, 467, 239, 380, - 380, 380, 380, 380, 380, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 394, 439, 439, 455, 455, - 394, 394, 394, 394, 394, 238, 439, 237, 561, 561, - - 552, 455, 460, 460, 460, 460, 460, 460, 460, 460, - 552, 561, 394, 394, 394, 394, 394, 394, 411, 236, - 411, 411, 411, 411, 411, 411, 411, 411, 234, 233, - 224, 223, 222, 469, 460, 469, 469, 469, 469, 469, - 469, 469, 469, 471, 221, 471, 471, 471, 471, 471, - 471, 220, 411, 412, 218, 412, 412, 412, 412, 412, - 412, 412, 412, 470, 217, 470, 470, 470, 470, 470, - 470, 470, 470, 476, 476, 476, 476, 476, 476, 476, - 476, 216, 215, 214, 213, 210, 202, 412, 413, 201, - 413, 413, 413, 413, 413, 413, 413, 413, 482, 482, - - 482, 482, 482, 482, 482, 482, 485, 198, 485, 485, - 485, 485, 485, 485, 485, 485, 197, 190, 189, 183, - 180, 179, 413, 414, 178, 414, 414, 414, 414, 414, - 414, 414, 414, 486, 486, 486, 486, 486, 486, 486, - 486, 486, 487, 487, 487, 487, 487, 487, 487, 487, - 487, 177, 176, 174, 173, 172, 171, 414, 424, 170, - 424, 424, 424, 424, 424, 424, 424, 424, 424, 427, - 169, 427, 427, 427, 427, 427, 427, 427, 427, 427, - 168, 167, 162, 427, 427, 427, 427, 427, 488, 488, - 488, 488, 488, 488, 488, 488, 488, 509, 509, 509, - - 509, 509, 509, 509, 509, 427, 427, 427, 427, 427, - 427, 430, 430, 430, 430, 430, 430, 430, 430, 430, - 161, 154, 153, 430, 430, 430, 430, 430, 511, 509, - 511, 511, 511, 511, 511, 511, 511, 511, 152, 150, - 149, 145, 144, 142, 138, 430, 430, 430, 430, 430, - 430, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 462, 131, 462, 462, 462, 462, 462, 462, 462, - 462, 512, 127, 512, 512, 512, 512, 512, 512, 512, - 512, 124, 117, 116, 503, 115, 114, 113, 503, 108, - 503, 503, 107, 105, 503, 462, 463, 104, 463, 463, - - 463, 463, 463, 463, 463, 463, 503, 503, 503, 513, - 100, 513, 513, 513, 513, 513, 513, 513, 513, 505, - 96, 95, 91, 505, 88, 505, 505, 86, 81, 505, - 463, 464, 80, 464, 464, 464, 464, 464, 464, 464, - 464, 505, 505, 505, 518, 518, 518, 518, 518, 518, - 518, 518, 524, 524, 524, 524, 524, 524, 524, 524, - 79, 77, 76, 74, 69, 464, 465, 62, 465, 465, - 465, 465, 465, 465, 465, 465, 526, 55, 526, 526, - 526, 526, 526, 526, 526, 526, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 49, 48, 47, 46, 45, - - 465, 478, 44, 478, 478, 478, 478, 478, 478, 478, - 478, 478, 481, 38, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 37, 36, 35, 481, 481, 481, 481, - 481, 529, 529, 529, 529, 529, 529, 529, 529, 529, - 540, 540, 540, 540, 540, 540, 540, 540, 481, 481, - 481, 481, 481, 481, 484, 484, 484, 484, 484, 484, - 484, 484, 33, 29, 23, 17, 484, 484, 484, 484, - 484, 544, 540, 544, 544, 544, 544, 544, 544, 545, - 545, 545, 545, 545, 545, 545, 545, 15, 484, 484, - 484, 484, 484, 484, 506, 14, 506, 506, 506, 506, - - 506, 506, 506, 506, 547, 544, 547, 547, 547, 547, - 547, 547, 547, 547, 548, 13, 548, 548, 548, 548, - 548, 548, 548, 548, 0, 0, 0, 0, 506, 507, - 0, 507, 507, 507, 507, 507, 507, 507, 507, 549, - 0, 549, 549, 549, 549, 549, 549, 555, 0, 555, - 555, 555, 555, 555, 555, 555, 555, 0, 0, 0, - 0, 0, 0, 507, 508, 0, 508, 508, 508, 508, - 508, 508, 508, 508, 565, 565, 565, 565, 565, 565, - 565, 565, 566, 566, 566, 566, 566, 566, 566, 566, - 567, 567, 567, 567, 567, 567, 567, 567, 508, 520, - - 0, 520, 520, 520, 520, 520, 520, 520, 520, 520, - 523, 0, 523, 523, 523, 523, 523, 523, 523, 523, - 0, 0, 0, 0, 523, 523, 523, 523, 523, 0, - 574, 574, 574, 574, 574, 574, 574, 574, 578, 0, - 578, 578, 578, 578, 578, 578, 523, 523, 523, 523, - 523, 523, 542, 0, 542, 542, 542, 542, 542, 542, - 542, 542, 574, 580, 580, 580, 580, 580, 580, 580, - 580, 0, 578, 581, 581, 581, 581, 581, 581, 581, - 581, 0, 0, 0, 0, 0, 542, 543, 0, 543, - 543, 543, 543, 543, 543, 543, 543, 0, 0, 0, - - 586, 586, 586, 586, 586, 586, 586, 586, 587, 587, - 587, 587, 587, 587, 587, 587, 0, 0, 0, 0, - 0, 543, 562, 0, 562, 562, 562, 562, 562, 562, - 562, 562, 586, 0, 0, 0, 0, 0, 0, 0, - 587, 588, 588, 588, 588, 588, 588, 588, 588, 0, - 591, 591, 591, 591, 591, 591, 562, 563, 0, 563, - 563, 563, 563, 563, 563, 563, 563, 0, 0, 0, - 0, 0, 0, 588, 590, 590, 590, 590, 590, 590, - 590, 590, 591, 0, 0, 0, 0, 0, 0, 0, - 0, 563, 564, 0, 564, 564, 564, 564, 564, 564, - - 564, 564, 0, 0, 0, 0, 590, 0, 0, 0, + 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, + 9, 90, 118, 117, 120, 9, 9, 9, 144, 170, + 120, 51, 51, 103, 453, 51, 51, 118, 103, 9, + + 159, 103, 170, 103, 140, 140, 58, 58, 58, 159, + 58, 143, 177, 51, 58, 176, 58, 177, 183, 180, + 179, 180, 9, 10, 10, 10, 10, 10, 58, 58, + 191, 183, 10, 10, 10, 51, 179, 84, 453, 84, + 84, 84, 181, 84, 84, 136, 10, 84, 136, 136, + 140, 568, 58, 198, 191, 136, 181, 143, 187, 206, + 84, 84, 198, 565, 176, 195, 195, 195, 136, 10, + 19, 94, 94, 94, 94, 94, 94, 94, 94, 220, + 19, 206, 267, 19, 19, 19, 19, 19, 19, 19, + 19, 26, 187, 26, 26, 26, 26, 26, 26, 26, + + 26, 26, 221, 221, 214, 26, 26, 26, 26, 26, + 214, 207, 563, 87, 87, 207, 267, 87, 87, 202, + 202, 202, 202, 202, 202, 26, 223, 26, 26, 26, + 26, 26, 26, 31, 220, 87, 248, 549, 224, 31, + 548, 223, 31, 31, 224, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 87, 248, 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, 31, 31, 31, 33, 33, + + 33, 33, 33, 33, 33, 33, 33, 306, 371, 371, + 33, 33, 33, 33, 33, 95, 95, 95, 95, 95, + 95, 95, 95, 306, 190, 109, 190, 190, 190, 190, + 190, 190, 33, 33, 33, 33, 33, 33, 38, 38, + 38, 38, 38, 235, 38, 38, 151, 296, 38, 546, + 151, 296, 235, 109, 109, 264, 151, 109, 190, 262, + 38, 38, 38, 43, 109, 264, 545, 109, 151, 151, + 123, 123, 304, 43, 123, 123, 43, 43, 43, 43, + 43, 43, 43, 43, 122, 122, 122, 122, 122, 122, + 122, 122, 123, 132, 132, 132, 132, 132, 132, 132, + + 132, 182, 305, 222, 295, 182, 237, 237, 258, 239, + 239, 182, 305, 258, 123, 265, 237, 43, 59, 239, + 265, 262, 304, 182, 182, 299, 295, 222, 59, 421, + 421, 59, 59, 59, 59, 59, 59, 59, 59, 75, + 359, 75, 75, 75, 222, 75, 75, 299, 541, 75, + 186, 186, 186, 186, 186, 186, 186, 186, 354, 532, + 276, 75, 75, 75, 86, 530, 86, 86, 86, 276, + 86, 86, 280, 359, 86, 245, 245, 245, 245, 245, + 245, 280, 186, 356, 281, 281, 86, 86, 86, 89, + 526, 89, 89, 89, 281, 89, 89, 522, 356, 89, + + 194, 194, 194, 194, 194, 194, 194, 194, 194, 354, + 451, 89, 89, 89, 91, 91, 91, 91, 91, 91, + 91, 91, 403, 494, 403, 300, 91, 91, 91, 91, + 91, 199, 199, 199, 199, 199, 199, 199, 199, 201, + 201, 201, 201, 201, 201, 201, 201, 300, 91, 91, + 91, 91, 91, 91, 99, 99, 99, 99, 99, 99, + 99, 99, 282, 282, 451, 341, 99, 99, 99, 99, + 99, 204, 282, 204, 204, 204, 204, 204, 204, 204, + 204, 347, 494, 351, 510, 284, 284, 341, 99, 99, + 99, 99, 99, 99, 125, 284, 125, 125, 125, 351, + + 125, 125, 509, 347, 125, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 495, 301, 125, 125, 125, 150, + 493, 150, 150, 150, 301, 150, 150, 492, 366, 150, + 236, 236, 236, 236, 236, 236, 236, 236, 366, 435, + 435, 150, 150, 150, 152, 491, 152, 152, 152, 152, + 152, 152, 152, 152, 238, 238, 238, 238, 238, 238, + 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, + 650, 307, 242, 436, 436, 650, 349, 490, 152, 153, + 307, 153, 153, 153, 153, 153, 153, 153, 153, 244, + 244, 244, 244, 244, 244, 244, 244, 247, 349, 247, + + 247, 247, 247, 247, 247, 247, 247, 290, 290, 290, + 290, 290, 290, 153, 154, 325, 154, 154, 154, 154, + 154, 154, 154, 154, 325, 397, 485, 266, 266, 266, + 266, 266, 266, 266, 266, 270, 326, 270, 270, 270, + 270, 270, 270, 468, 357, 326, 452, 397, 154, 155, + 467, 155, 155, 155, 155, 155, 155, 155, 155, 266, + 357, 452, 398, 155, 155, 155, 155, 155, 277, 270, + 277, 277, 277, 277, 277, 277, 277, 277, 317, 317, + 317, 317, 317, 317, 398, 155, 155, 155, 155, 155, + 155, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 355, 439, 439, 158, 158, 158, 158, 158, 278, 355, + 278, 278, 278, 278, 278, 278, 278, 278, 336, 336, + 336, 336, 336, 336, 463, 158, 158, 158, 158, 158, + 158, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 448, 440, 444, 160, 160, 160, 160, 160, 279, + 368, 279, 279, 279, 279, 279, 279, 279, 279, 446, + 368, 454, 402, 402, 440, 444, 160, 160, 160, 160, + 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, + 443, 446, 475, 475, 161, 161, 161, 161, 161, 283, + 283, 283, 283, 283, 283, 283, 283, 289, 289, 289, + + 289, 289, 289, 289, 289, 454, 161, 161, 161, 161, + 161, 161, 188, 402, 188, 188, 188, 188, 188, 188, + 188, 188, 287, 287, 287, 287, 287, 287, 287, 287, + 442, 292, 287, 292, 292, 292, 292, 292, 292, 292, + 292, 486, 486, 517, 517, 441, 188, 189, 428, 189, + 189, 189, 189, 189, 189, 189, 189, 314, 314, 314, + 314, 314, 314, 314, 314, 316, 316, 316, 316, 316, + 316, 316, 316, 320, 320, 320, 320, 320, 320, 320, + 320, 189, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 380, 414, 487, 200, 200, 200, 200, + + 200, 319, 380, 319, 319, 319, 319, 319, 319, 319, + 319, 374, 374, 374, 374, 374, 374, 487, 200, 200, + 200, 200, 200, 200, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 381, 410, 489, 203, 203, 203, + 203, 203, 322, 381, 322, 322, 322, 322, 322, 322, + 322, 322, 534, 534, 552, 552, 327, 327, 489, 203, + 203, 203, 203, 203, 203, 225, 327, 225, 225, 225, + 225, 225, 225, 225, 225, 323, 415, 323, 323, 323, + 323, 323, 323, 323, 323, 324, 415, 324, 324, 324, + 324, 324, 324, 391, 391, 391, 391, 391, 391, 225, + + 226, 405, 226, 226, 226, 226, 226, 226, 226, 226, + 328, 328, 329, 329, 329, 329, 329, 329, 329, 329, + 328, 330, 330, 333, 333, 333, 333, 333, 333, 333, + 333, 330, 456, 333, 226, 227, 401, 227, 227, 227, + 227, 227, 227, 227, 227, 335, 335, 335, 335, 335, + 335, 335, 335, 338, 416, 338, 338, 338, 338, 338, + 338, 338, 338, 400, 416, 399, 456, 600, 600, 227, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 396, 395, 527, 243, 243, 243, 243, 243, + + 536, 358, 358, 358, 358, 358, 358, 358, 358, 362, + 362, 362, 362, 362, 362, 362, 527, 243, 243, 243, + 243, 243, 243, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 358, 536, 529, 246, 246, 246, 246, + 246, 418, 362, 365, 365, 365, 365, 365, 365, 365, + 365, 418, 394, 393, 364, 382, 382, 529, 246, 246, + 246, 246, 246, 246, 268, 382, 268, 268, 268, 268, + 268, 268, 268, 268, 367, 367, 367, 367, 367, 367, + 367, 367, 373, 373, 373, 373, 373, 373, 373, 373, + 383, 383, 424, 424, 424, 424, 424, 424, 268, 269, + + 383, 269, 269, 269, 269, 269, 269, 269, 269, 376, + 363, 376, 376, 376, 376, 376, 376, 376, 376, 377, + 432, 377, 377, 377, 377, 377, 377, 377, 377, 432, + 505, 505, 505, 269, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 433, 449, 353, 275, 275, 275, 275, + 275, 378, 433, 378, 378, 378, 378, 378, 378, 378, + 378, 352, 505, 346, 449, 345, 449, 449, 275, 275, + 275, 275, 275, 275, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 553, 555, 566, 288, + + 288, 288, 288, 288, 379, 469, 379, 379, 379, 379, + 379, 379, 379, 379, 344, 469, 343, 496, 553, 555, + 566, 288, 288, 288, 288, 288, 288, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 340, 339, 321, + 291, 291, 291, 291, 291, 384, 384, 384, 384, 384, + 384, 384, 384, 390, 390, 390, 390, 390, 390, 390, + 390, 496, 291, 291, 291, 291, 291, 291, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 385, 385, 388, + 388, 388, 388, 388, 388, 388, 388, 385, 392, 388, + 392, 392, 392, 392, 392, 392, 392, 392, 570, 313, + + 312, 308, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 404, 411, 311, 411, 411, 411, 411, 411, 411, + 411, 411, 417, 417, 417, 417, 417, 417, 417, 417, + 303, 404, 570, 404, 404, 309, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 412, 302, 412, 412, 412, + 412, 412, 412, 412, 412, 404, 413, 470, 413, 413, + 413, 413, 413, 413, 413, 413, 298, 470, 297, 310, + 315, 472, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 472, 294, 293, 315, 315, 315, 315, 315, 423, + 423, 423, 423, 423, 423, 423, 423, 427, 427, 427, + + 427, 427, 427, 427, 427, 274, 315, 315, 315, 315, + 315, 315, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 484, 273, 272, 318, 318, 318, 318, 318, 426, + 484, 426, 426, 426, 426, 426, 426, 426, 426, 497, + 461, 271, 461, 461, 461, 261, 318, 318, 318, 318, + 318, 318, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 461, 260, 259, 334, 334, 334, + 334, 334, 429, 497, 429, 429, 429, 429, 429, 429, + 429, 429, 478, 478, 478, 478, 478, 478, 257, 334, + + 334, 334, 334, 334, 334, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 434, 434, 256, 255, 337, 337, + 337, 337, 337, 430, 434, 430, 430, 430, 430, 430, + 430, 430, 430, 499, 520, 520, 520, 520, 520, 520, + 337, 337, 337, 337, 337, 337, 360, 360, 360, 360, + 360, 360, 360, 360, 360, 431, 254, 431, 431, 431, + 431, 431, 431, 450, 450, 455, 455, 455, 455, 455, + 455, 455, 455, 253, 252, 251, 450, 499, 250, 360, + 361, 361, 361, 361, 361, 361, 361, 361, 361, 462, + 462, 462, 462, 462, 462, 462, 462, 455, 464, 511, + + 464, 464, 464, 464, 464, 464, 464, 464, 234, 511, + 233, 232, 231, 361, 369, 229, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 372, 512, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 512, 228, 219, 372, + 372, 372, 372, 372, 465, 514, 465, 465, 465, 465, + 465, 465, 465, 465, 218, 514, 217, 216, 215, 213, + 212, 372, 372, 372, 372, 372, 372, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 211, 210, 209, 375, + 375, 375, 375, 375, 466, 208, 466, 466, 466, 466, + 466, 466, 471, 471, 471, 471, 471, 471, 471, 471, + + 205, 375, 375, 375, 375, 375, 375, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 197, 196, + 193, 192, 389, 389, 389, 389, 389, 477, 477, 477, + 477, 477, 477, 477, 477, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 389, 389, 389, 389, 389, 389, + 406, 547, 406, 406, 406, 406, 406, 406, 406, 406, + 480, 547, 480, 480, 480, 480, 480, 480, 480, 480, + 482, 482, 482, 482, 482, 482, 482, 482, 482, 185, + 184, 178, 175, 174, 406, 407, 173, 407, 407, 407, + + 407, 407, 407, 407, 407, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 556, 556, 172, 171, 498, 169, + 168, 498, 498, 167, 498, 498, 166, 556, 498, 407, + 408, 165, 408, 408, 408, 408, 408, 408, 408, 408, + 498, 498, 498, 506, 164, 506, 506, 506, 506, 506, + 506, 506, 506, 500, 163, 162, 500, 500, 157, 500, + 500, 156, 149, 500, 408, 409, 148, 409, 409, 409, + 409, 409, 409, 409, 409, 500, 500, 500, 147, 146, + 504, 504, 504, 504, 504, 504, 504, 504, 507, 142, + 507, 507, 507, 507, 507, 507, 507, 507, 141, 409, + + 419, 139, 419, 419, 419, 419, 419, 419, 419, 419, + 419, 422, 504, 422, 422, 422, 422, 422, 422, 422, + 422, 422, 135, 128, 124, 422, 422, 422, 422, 422, + 508, 121, 508, 508, 508, 508, 508, 508, 508, 508, + 525, 525, 525, 525, 525, 525, 525, 422, 422, 422, + 422, 422, 422, 425, 425, 425, 425, 425, 425, 425, + 425, 425, 114, 113, 112, 425, 425, 425, 425, 425, + 513, 513, 513, 513, 513, 513, 513, 513, 519, 519, + 519, 519, 519, 519, 519, 519, 111, 425, 425, 425, + 425, 425, 425, 437, 437, 437, 437, 437, 437, 437, + + 437, 437, 437, 457, 110, 457, 457, 457, 457, 457, + 457, 457, 457, 521, 105, 521, 521, 521, 521, 521, + 521, 521, 521, 523, 523, 523, 523, 523, 523, 523, + 523, 523, 104, 102, 101, 97, 93, 457, 458, 92, + 458, 458, 458, 458, 458, 458, 458, 458, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 535, 535, 535, + 535, 535, 535, 535, 535, 577, 577, 577, 577, 577, + 577, 88, 458, 459, 85, 459, 459, 459, 459, 459, + 459, 459, 459, 83, 78, 77, 76, 74, 539, 535, + 539, 539, 539, 539, 539, 539, 540, 540, 540, 540, + + 540, 540, 540, 540, 69, 62, 55, 459, 460, 49, + 460, 460, 460, 460, 460, 460, 460, 460, 48, 47, + 46, 542, 539, 542, 542, 542, 542, 542, 542, 542, + 542, 543, 45, 543, 543, 543, 543, 543, 543, 543, + 543, 44, 460, 473, 37, 473, 473, 473, 473, 473, + 473, 473, 473, 473, 476, 36, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 35, 34, 32, 476, 476, + 476, 476, 476, 544, 29, 544, 544, 544, 544, 544, + 544, 560, 560, 560, 560, 560, 560, 560, 560, 23, + 476, 476, 476, 476, 476, 476, 479, 479, 479, 479, + + 479, 479, 479, 479, 17, 15, 14, 13, 479, 479, + 479, 479, 479, 550, 0, 550, 550, 550, 550, 550, + 550, 550, 550, 0, 0, 0, 0, 0, 0, 0, + 479, 479, 479, 479, 479, 479, 501, 0, 501, 501, + 501, 501, 501, 501, 501, 501, 561, 561, 561, 561, + 561, 561, 561, 561, 562, 562, 562, 562, 562, 562, + 562, 562, 569, 569, 569, 569, 569, 569, 569, 569, + 501, 502, 0, 502, 502, 502, 502, 502, 502, 502, + 502, 0, 573, 0, 573, 573, 573, 573, 573, 573, + 0, 0, 0, 0, 569, 575, 575, 575, 575, 575, + + 575, 575, 575, 0, 0, 502, 503, 0, 503, 503, + 503, 503, 503, 503, 503, 503, 573, 576, 576, 576, + 576, 576, 576, 576, 576, 0, 0, 0, 0, 0, + 581, 581, 581, 581, 581, 581, 581, 581, 0, 0, + 503, 515, 0, 515, 515, 515, 515, 515, 515, 515, + 515, 515, 518, 0, 518, 518, 518, 518, 518, 518, + 518, 518, 581, 0, 0, 0, 518, 518, 518, 518, + 518, 0, 582, 582, 582, 582, 582, 582, 582, 582, + 583, 583, 583, 583, 583, 583, 583, 583, 518, 518, + 518, 518, 518, 518, 537, 0, 537, 537, 537, 537, + + 537, 537, 537, 537, 582, 0, 0, 0, 0, 0, + 0, 0, 583, 585, 585, 585, 585, 585, 585, 585, + 585, 586, 586, 586, 586, 586, 586, 0, 537, 538, + 0, 538, 538, 538, 538, 538, 538, 538, 538, 0, + 0, 0, 0, 0, 0, 585, 0, 0, 0, 0, + 0, 0, 0, 586, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 538, 557, 0, 557, 557, 557, 557, + 557, 557, 557, 557, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 557, 558, + + 0, 558, 558, 558, 558, 558, 558, 558, 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 564, 576, 0, 576, - 576, 576, 576, 576, 576, 576, 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 558, 559, 0, 559, 559, 559, 559, + 559, 559, 559, 559, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 559, 571, + 0, 571, 571, 571, 571, 571, 571, 571, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 576, 577, 0, 577, 577, 577, 577, 577, 577, - 577, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 577, 593, 593, 593, + 0, 0, 0, 571, 572, 0, 572, 572, 572, 572, + 572, 572, 572, 572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 572, 588, + 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, + 588, 588, 588, 589, 589, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 590, 590, 590, + 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, + 590, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 592, 0, 0, 0, 0, + + 0, 592, 592, 592, 0, 0, 592, 592, 592, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 594, 594, 594, 594, 594, 594, 594, 594, 594, - 594, 594, 594, 594, 594, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 597, 0, 0, 0, 597, 0, 597, - 597, 597, 0, 0, 597, 597, 597, 598, 598, 0, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, - 599, 599, 599, 599, 599, 600, 0, 0, 0, 600, - - 0, 600, 600, 600, 600, 0, 600, 600, 600, 601, - 0, 0, 0, 601, 0, 601, 601, 601, 0, 0, - 601, 601, 601, 602, 0, 0, 602, 602, 602, 602, - 602, 602, 0, 0, 602, 602, 602, 603, 603, 0, - 0, 0, 603, 604, 0, 0, 604, 604, 604, 604, - 604, 604, 0, 0, 604, 604, 604, 605, 0, 0, - 605, 605, 605, 605, 605, 605, 0, 605, 0, 605, - 605, 607, 0, 0, 607, 0, 607, 607, 607, 607, - 607, 0, 607, 607, 607, 608, 608, 608, 608, 608, - 608, 608, 608, 608, 608, 608, 608, 608, 608, 609, - - 609, 0, 609, 0, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 610, 610, 0, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 612, 612, 0, 612, 612, 612, 612, 612, 612, - 612, 612, 612, 612, 612, 613, 0, 0, 0, 613, - 0, 613, 613, 613, 0, 0, 613, 613, 613, 614, - 0, 0, 614, 614, 614, 614, 614, 614, 0, 0, - 614, 614, 614, 615, 615, 0, 0, 0, 615, 616, - 616, 616, 0, 0, 0, 616, 617, 0, 0, 617, - - 617, 617, 617, 617, 617, 0, 0, 617, 617, 617, - 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, - 618, 618, 618, 618, 619, 619, 0, 0, 0, 619, - 620, 620, 620, 0, 0, 0, 620, 621, 621, 0, - 0, 0, 621, 622, 622, 0, 0, 0, 622, 623, - 623, 0, 0, 0, 623, 624, 624, 624, 0, 0, - 0, 624, 625, 625, 0, 0, 0, 625, 626, 626, - 0, 0, 0, 626, 627, 627, 0, 0, 0, 627, - 628, 628, 628, 0, 0, 0, 628, 629, 629, 629, - 629, 0, 0, 0, 629, 630, 630, 0, 0, 0, - - 630, 631, 631, 0, 0, 0, 631, 632, 632, 0, - 0, 0, 632, 633, 633, 633, 0, 0, 0, 633, - 634, 634, 634, 634, 0, 0, 0, 634, 635, 635, - 0, 0, 0, 635, 636, 636, 0, 0, 0, 636, - 637, 637, 637, 0, 0, 0, 637, 638, 638, 638, - 638, 0, 0, 0, 638, 639, 639, 0, 0, 0, - 639, 640, 0, 640, 640, 0, 0, 0, 640, 641, - 641, 641, 0, 0, 0, 641, 642, 642, 642, 642, - 0, 0, 0, 642, 643, 643, 0, 0, 0, 643, - 644, 0, 644, 644, 0, 0, 0, 644, 645, 645, - - 645, 0, 0, 0, 645, 646, 646, 646, 0, 0, - 0, 0, 646, 647, 0, 0, 647, 647, 0, 647, - 647, 647, 0, 0, 647, 647, 647, 648, 0, 0, - 648, 648, 0, 648, 648, 648, 0, 0, 648, 648, - 648, 649, 649, 0, 0, 0, 649, 650, 0, 650, - 650, 0, 0, 0, 650, 651, 651, 0, 0, 0, - 0, 651, 652, 652, 652, 652, 652, 652, 652, 652, - 652, 652, 652, 652, 652, 652, 653, 653, 0, 0, - 0, 653, 654, 0, 654, 654, 0, 0, 0, 654, - 655, 655, 0, 0, 0, 655, 656, 0, 656, 0, - - 0, 0, 0, 656, 658, 658, 658, 658, 658, 658, - 658, 658, 658, 658, 658, 658, 658, 658, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592 + 593, 593, 593, 594, 0, 0, 0, 0, 0, 594, + 594, 594, 594, 0, 594, 594, 594, 595, 0, 0, + 0, 0, 0, 595, 595, 595, 0, 0, 595, 595, + 595, 596, 0, 0, 596, 596, 596, 596, 596, 596, + 0, 0, 596, 596, 596, 597, 597, 0, 0, 0, + 597, 598, 0, 0, 598, 598, 598, 598, 598, 598, + 0, 0, 598, 598, 598, 599, 0, 0, 599, 599, + 599, 599, 599, 599, 0, 599, 0, 599, 599, 601, + + 0, 0, 601, 0, 601, 601, 601, 601, 601, 0, + 601, 601, 601, 602, 602, 602, 602, 602, 602, 602, + 602, 602, 602, 602, 602, 602, 602, 603, 603, 0, + 603, 0, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 604, 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 605, 605, 0, 605, 605, + 605, 605, 605, 605, 605, 605, 605, 605, 605, 606, + 0, 0, 0, 0, 0, 606, 606, 606, 0, 0, + 606, 606, 606, 607, 0, 0, 607, 607, 607, 607, + 607, 607, 0, 0, 607, 607, 607, 608, 608, 0, + + 0, 0, 608, 609, 609, 609, 0, 0, 0, 609, + 610, 0, 0, 610, 610, 610, 610, 610, 610, 0, + 0, 610, 610, 610, 611, 611, 611, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 612, 612, + 0, 0, 0, 612, 613, 613, 613, 0, 0, 0, + 613, 614, 614, 0, 0, 0, 614, 615, 615, 0, + 0, 0, 615, 616, 616, 0, 0, 0, 616, 617, + 617, 617, 0, 0, 0, 617, 618, 618, 0, 0, + 0, 618, 619, 619, 0, 0, 0, 619, 620, 620, + 0, 0, 0, 620, 621, 621, 621, 0, 0, 0, + + 621, 622, 622, 622, 622, 0, 0, 0, 622, 623, + 623, 0, 0, 0, 623, 624, 624, 0, 0, 0, + 624, 625, 625, 0, 0, 0, 625, 626, 626, 626, + 0, 0, 0, 626, 627, 627, 627, 627, 0, 0, + 0, 627, 628, 628, 0, 0, 0, 628, 629, 629, + 0, 0, 0, 629, 630, 630, 630, 0, 0, 0, + 630, 631, 631, 631, 631, 0, 0, 0, 631, 632, + 632, 0, 0, 0, 632, 633, 0, 633, 633, 0, + 0, 0, 633, 634, 634, 634, 0, 0, 0, 634, + 635, 635, 635, 635, 0, 0, 0, 635, 636, 636, + + 0, 0, 0, 636, 637, 0, 637, 637, 0, 0, + 0, 637, 638, 638, 638, 0, 0, 0, 638, 639, + 639, 639, 0, 0, 0, 0, 639, 640, 0, 0, + 640, 0, 0, 640, 640, 640, 0, 0, 640, 640, + 640, 641, 0, 0, 641, 0, 0, 641, 641, 641, + 0, 0, 641, 641, 641, 642, 642, 0, 0, 0, + 642, 643, 0, 643, 643, 0, 0, 0, 643, 644, + 644, 0, 0, 0, 0, 644, 645, 645, 645, 645, + 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, + 646, 646, 0, 0, 0, 646, 647, 0, 647, 647, + + 0, 0, 0, 647, 648, 648, 0, 0, 0, 648, + 649, 0, 649, 0, 0, 0, 0, 649, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587 + } ; static yy_state_type yy_last_accepting_state; @@ -1464,6 +1466,7 @@ extern int parse_error; int sudolineno = 1; char *sudoers; static int sawspace = 0; +static int prev_state = INITIAL; static int arg_len = 0; static int arg_size = 0; @@ -1502,7 +1505,7 @@ extern void yyerror __P((const char *)); #define INSTR 5 -#line 1505 "lex.yy.c" +#line 1508 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1656,9 +1659,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 128 "toke.l" +#line 129 "toke.l" -#line 1661 "lex.yy.c" +#line 1664 "lex.yy.c" if ( yy_init ) { @@ -1710,13 +1713,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 >= 593 ) + if ( yy_current_state >= 588 ) 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] != 3619 ); + while ( yy_base[yy_current_state] != 3633 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1744,12 +1747,12 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 129 "toke.l" +#line 130 "toke.l" BEGIN STARTDEFS; YY_BREAK case 2: YY_RULE_SETUP -#line 131 "toke.l" +#line 132 "toke.l" { BEGIN INDEFS; LEXTRACE("DEFVAR "); @@ -1761,7 +1764,7 @@ YY_RULE_SETUP case 3: YY_RULE_SETUP -#line 140 "toke.l" +#line 141 "toke.l" { BEGIN STARTDEFS; LEXTRACE(", "); @@ -1770,7 +1773,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 146 "toke.l" +#line 147 "toke.l" { LEXTRACE("= "); return '='; @@ -1778,7 +1781,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 151 "toke.l" +#line 152 "toke.l" { LEXTRACE("+= "); return '+'; @@ -1786,7 +1789,7 @@ YY_RULE_SETUP YY_BREAK case 6: YY_RULE_SETUP -#line 156 "toke.l" +#line 157 "toke.l" { LEXTRACE("-= "); return '-'; @@ -1794,16 +1797,17 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 161 "toke.l" +#line 162 "toke.l" { LEXTRACE("BEGINSTR "); yylval.string = NULL; + prev_state = YY_START; BEGIN INSTR; } YY_BREAK case 8: YY_RULE_SETUP -#line 167 "toke.l" +#line 169 "toke.l" { LEXTRACE("WORD(2) "); if (!fill(yytext, yyleng)) @@ -1815,7 +1819,7 @@ YY_RULE_SETUP case 9: YY_RULE_SETUP -#line 176 "toke.l" +#line 178 "toke.l" { /* Line continuation char followed by newline. */ ++sudolineno; @@ -1824,16 +1828,27 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 182 "toke.l" +#line 184 "toke.l" { LEXTRACE("ENDSTR "); - BEGIN INDEFS; + BEGIN prev_state; + if (prev_state == INITIAL) { + switch (yylval.string[0]) { + case '%': + LEXTRACE("USERGROUP "); + return USERGROUP; + case '+': + LEXTRACE("NETGROUP "); + return NETGROUP; + } + } + LEXTRACE("WORD(4) "); return WORD; } YY_BREAK case 11: YY_RULE_SETUP -#line 188 "toke.l" +#line 201 "toke.l" { LEXTRACE("BACKSLASH "); if (!append(yytext, yyleng)) @@ -1842,7 +1857,7 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 194 "toke.l" +#line 207 "toke.l" { LEXTRACE("STRBODY "); if (!append(yytext, yyleng)) @@ -1853,7 +1868,7 @@ YY_RULE_SETUP case 13: YY_RULE_SETUP -#line 202 "toke.l" +#line 215 "toke.l" { /* quoted fnmatch glob char, pass verbatim */ LEXTRACE("QUOTEDCHAR "); @@ -1864,7 +1879,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 210 "toke.l" +#line 223 "toke.l" { /* quoted sudoers special char, strip backslash */ LEXTRACE("QUOTEDCHAR "); @@ -1875,7 +1890,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 218 "toke.l" +#line 231 "toke.l" { BEGIN INITIAL; yyless(0); @@ -1884,7 +1899,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 224 "toke.l" +#line 237 "toke.l" { LEXTRACE("ARG "); if (!fill_args(yytext, yyleng, sawspace)) @@ -1895,7 +1910,7 @@ YY_RULE_SETUP case 17: YY_RULE_SETUP -#line 232 "toke.l" +#line 245 "toke.l" { char *path; @@ -1911,7 +1926,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 245 "toke.l" +#line 258 "toke.l" { char *path; @@ -1930,7 +1945,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 261 "toke.l" +#line 274 "toke.l" { int n; for (n = 0; isblank((unsigned char)yytext[n]); n++) @@ -1962,7 +1977,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 290 "toke.l" +#line 303 "toke.l" { int n; for (n = 0; isblank((unsigned char)yytext[n]); n++) @@ -1985,7 +2000,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 310 "toke.l" +#line 323 "toke.l" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); @@ -1994,7 +2009,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 316 "toke.l" +#line 329 "toke.l" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); @@ -2003,7 +2018,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 322 "toke.l" +#line 335 "toke.l" { LEXTRACE("NOEXEC "); return NOEXEC; @@ -2011,7 +2026,7 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 327 "toke.l" +#line 340 "toke.l" { LEXTRACE("EXEC "); return EXEC; @@ -2019,7 +2034,7 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 332 "toke.l" +#line 345 "toke.l" { LEXTRACE("SETENV "); return SETENV; @@ -2027,7 +2042,7 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 337 "toke.l" +#line 350 "toke.l" { LEXTRACE("NOSETENV "); return NOSETENV; @@ -2035,7 +2050,7 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 342 "toke.l" +#line 355 "toke.l" { LEXTRACE("LOG_OUTPUT "); return LOG_OUTPUT; @@ -2043,7 +2058,7 @@ YY_RULE_SETUP YY_BREAK case 28: YY_RULE_SETUP -#line 347 "toke.l" +#line 360 "toke.l" { LEXTRACE("NOLOG_OUTPUT "); return NOLOG_OUTPUT; @@ -2051,7 +2066,7 @@ YY_RULE_SETUP YY_BREAK case 29: YY_RULE_SETUP -#line 352 "toke.l" +#line 365 "toke.l" { LEXTRACE("LOG_INPUT "); return LOG_INPUT; @@ -2059,7 +2074,7 @@ YY_RULE_SETUP YY_BREAK case 30: YY_RULE_SETUP -#line 357 "toke.l" +#line 370 "toke.l" { LEXTRACE("NOLOG_INPUT "); return NOLOG_INPUT; @@ -2067,7 +2082,7 @@ YY_RULE_SETUP YY_BREAK case 31: YY_RULE_SETUP -#line 362 "toke.l" +#line 375 "toke.l" { /* netgroup */ if (!fill(yytext, yyleng)) @@ -2078,7 +2093,7 @@ YY_RULE_SETUP YY_BREAK case 32: YY_RULE_SETUP -#line 370 "toke.l" +#line 383 "toke.l" { /* UN*X group */ if (!fill(yytext, yyleng)) @@ -2089,7 +2104,7 @@ YY_RULE_SETUP YY_BREAK case 33: YY_RULE_SETUP -#line 378 "toke.l" +#line 391 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); @@ -2099,7 +2114,7 @@ YY_RULE_SETUP YY_BREAK case 34: YY_RULE_SETUP -#line 385 "toke.l" +#line 398 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); @@ -2109,7 +2124,7 @@ YY_RULE_SETUP YY_BREAK case 35: YY_RULE_SETUP -#line 392 "toke.l" +#line 405 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); @@ -2123,7 +2138,7 @@ YY_RULE_SETUP YY_BREAK case 36: YY_RULE_SETUP -#line 403 "toke.l" +#line 416 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); @@ -2137,7 +2152,7 @@ YY_RULE_SETUP YY_BREAK case 37: YY_RULE_SETUP -#line 414 "toke.l" +#line 427 "toke.l" { if (strcmp(yytext, "ALL") == 0) { LEXTRACE("ALL "); @@ -2162,7 +2177,7 @@ YY_RULE_SETUP YY_BREAK case 38: YY_RULE_SETUP -#line 436 "toke.l" +#line 449 "toke.l" { /* no command args allowed for Defaults!/path */ if (!fill_cmnd(yytext, yyleng)) @@ -2173,7 +2188,7 @@ YY_RULE_SETUP YY_BREAK case 39: YY_RULE_SETUP -#line 444 "toke.l" +#line 457 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2183,7 +2198,7 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 451 "toke.l" +#line 464 "toke.l" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { @@ -2201,27 +2216,17 @@ YY_RULE_SETUP YY_BREAK case 41: YY_RULE_SETUP -#line 466 "toke.l" +#line 479 "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; - } + LEXTRACE("BEGINSTR "); + yylval.string = NULL; + prev_state = YY_START; + BEGIN INSTR; } YY_BREAK case 42: YY_RULE_SETUP -#line 483 "toke.l" +#line 486 "toke.l" { /* a word */ if (!fill(yytext, yyleng)) @@ -2232,7 +2237,7 @@ YY_RULE_SETUP YY_BREAK case 43: YY_RULE_SETUP -#line 491 "toke.l" +#line 494 "toke.l" { LEXTRACE("( "); return '('; @@ -2240,7 +2245,7 @@ YY_RULE_SETUP YY_BREAK case 44: YY_RULE_SETUP -#line 496 "toke.l" +#line 499 "toke.l" { LEXTRACE(") "); return ')'; @@ -2248,7 +2253,7 @@ YY_RULE_SETUP YY_BREAK case 45: YY_RULE_SETUP -#line 501 "toke.l" +#line 504 "toke.l" { LEXTRACE(", "); return ','; @@ -2256,7 +2261,7 @@ YY_RULE_SETUP YY_BREAK case 46: YY_RULE_SETUP -#line 506 "toke.l" +#line 509 "toke.l" { LEXTRACE("= "); return '='; @@ -2264,7 +2269,7 @@ YY_RULE_SETUP YY_BREAK case 47: YY_RULE_SETUP -#line 511 "toke.l" +#line 514 "toke.l" { LEXTRACE(": "); return ':'; @@ -2272,7 +2277,7 @@ YY_RULE_SETUP YY_BREAK case 48: YY_RULE_SETUP -#line 516 "toke.l" +#line 519 "toke.l" { if (yyleng % 2 == 1) return '!'; /* return '!' */ @@ -2280,7 +2285,7 @@ YY_RULE_SETUP YY_BREAK case 49: YY_RULE_SETUP -#line 521 "toke.l" +#line 524 "toke.l" { BEGIN INITIAL; ++sudolineno; @@ -2290,14 +2295,14 @@ YY_RULE_SETUP YY_BREAK case 50: YY_RULE_SETUP -#line 528 "toke.l" +#line 531 "toke.l" { /* throw away space/tabs */ sawspace = TRUE; /* but remember for fill_args */ } YY_BREAK case 51: YY_RULE_SETUP -#line 532 "toke.l" +#line 535 "toke.l" { sawspace = TRUE; /* remember for fill_args */ ++sudolineno; @@ -2306,7 +2311,7 @@ YY_RULE_SETUP YY_BREAK case 52: YY_RULE_SETUP -#line 538 "toke.l" +#line 541 "toke.l" { BEGIN INITIAL; ++sudolineno; @@ -2316,7 +2321,7 @@ YY_RULE_SETUP YY_BREAK case 53: YY_RULE_SETUP -#line 545 "toke.l" +#line 548 "toke.l" { LEXTRACE("ERROR "); return ERROR; @@ -2328,7 +2333,7 @@ case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(STARTDEFS): case YY_STATE_EOF(INDEFS): case YY_STATE_EOF(INSTR): -#line 550 "toke.l" +#line 553 "toke.l" { if (YY_START != INITIAL) { BEGIN INITIAL; @@ -2341,10 +2346,10 @@ case YY_STATE_EOF(INSTR): YY_BREAK case 54: YY_RULE_SETUP -#line 560 "toke.l" +#line 563 "toke.l" ECHO; YY_BREAK -#line 2347 "lex.yy.c" +#line 2352 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -2635,7 +2640,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 >= 593 ) + if ( yy_current_state >= 588 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2670,11 +2675,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 >= 593 ) + if ( yy_current_state >= 588 ) 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 == 592); + yy_is_jam = (yy_current_state == 587); return yy_is_jam ? 0 : yy_current_state; } @@ -3235,7 +3240,7 @@ int main() return 0; } #endif -#line 560 "toke.l" +#line 563 "toke.l" static unsigned char hexchar(s) diff --git a/toke.l b/toke.l index 8375495c4..9a475bc4e 100644 --- a/toke.l +++ b/toke.l @@ -75,6 +75,7 @@ extern int parse_error; int sudolineno = 1; char *sudoers; static int sawspace = 0; +static int prev_state = INITIAL; static int arg_len = 0; static int arg_size = 0; @@ -109,7 +110,7 @@ IPV4ADDR {OCTET}(\.{OCTET}){3} IPV6ADDR ({HEX16}?:){2,7}{HEX16}?|({HEX16}?:){2,6}:{IPV4ADDR} HOSTNAME [[:alnum:]_-]+ -WORD ([^#>!=:,\(\) \t\n\\]|\\[^\n])+ +WORD ([^#>!=:,\(\) \t\n\\\"]|\\[^\n])+ ID #-?[0-9]+ PATH \/(\\[\,:= \t#]|[^\,:=\\ \t\n#])+ ENVAR ([^#!=, \t\n\\\"]|\\[^\n])([^#=, \t\n\\\"]|\\[^\n])* @@ -161,6 +162,7 @@ DEFVAR [a-z_]+ \" { LEXTRACE("BEGINSTR "); yylval.string = NULL; + prev_state = YY_START; BEGIN INSTR; } @@ -181,7 +183,18 @@ DEFVAR [a-z_]+ \" { LEXTRACE("ENDSTR "); - BEGIN INDEFS; + BEGIN prev_state; + if (prev_state == INITIAL) { + switch (yylval.string[0]) { + case '%': + LEXTRACE("USERGROUP "); + return USERGROUP; + case '+': + LEXTRACE("NETGROUP "); + return NETGROUP; + } + } + LEXTRACE("WORD(4) "); return WORD; } @@ -463,21 +476,11 @@ sudoedit { } } /* a pathname */ -\"[^"\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; - } +^\" { + LEXTRACE("BEGINSTR "); + yylval.string = NULL; + prev_state = YY_START; + BEGIN INSTR; } ({ID}|{WORD}) { -- 2.40.0