From: Todd C. Miller Date: Sun, 10 Oct 1999 18:38:40 +0000 (+0000) Subject: o Add support for escaped characters in the WORD macro X-Git-Tag: SUDO_1_6_0~43 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f963da3164d56d76d5928c963cb285dc9c03bc4a;p=sudo o Add support for escaped characters in the WORD macro o Modify fill() to squash escape chars --- diff --git a/lex.yy.c b/lex.yy.c index 575104fb4..322fea1f9 100644 --- a/lex.yy.c +++ b/lex.yy.c @@ -286,7 +286,7 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); #define YY_NUM_RULES 32 #define YY_END_OF_BUFFER 33 -static yyconst short int yy_accept[476] = +static yyconst short int yy_accept[487] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 30, 1, 7, 11, 30, 30, 21, 31, 30, 10, 30, @@ -294,52 +294,53 @@ static yyconst short int yy_accept[476] = 25, 25, 25, 25, 25, 9, 6, 9, 9, 9, 9, 6, 9, 9, 9, 9, 6, 6, 9, 9, 9, 31, 9, 23, 23, 23, 24, 23, 23, 23, - 23, 23, 22, 22, 22, 23, 26, 5, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 13, 25, 25, - 25, 26, 26, 30, 1, 11, 30, 0, 8, 17, - 16, 29, 29, 30, 30, 30, 30, 30, 30, 30, + 23, 23, 22, 22, 22, 31, 23, 26, 5, 26, + 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, + 31, 26, 30, 0, 1, 11, 30, 0, 8, 0, + 17, 0, 16, 0, 29, 29, 30, 30, 30, 30, - 25, 25, 25, 0, 2, 30, 30, 30, 30, 30, + 30, 30, 30, 25, 25, 25, 30, 2, 30, 30, + 30, 30, 30, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 3, 3, 23, - 17, 16, 23, 23, 23, 23, 23, 23, 23, 23, - 22, 22, 22, 26, 26, 26, 0, 26, 26, 0, - 5, 26, 17, 16, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 25, 25, 25, 30, 30, 30, 20, - 25, 25, 30, 30, 30, 30, 30, 9, 9, 9, + 3, 3, 23, 0, 17, 0, 16, 0, 23, 23, + 23, 23, 23, 23, 23, 23, 22, 22, 22, 23, + 26, 0, 26, 0, 0, 26, 0, 5, 0, 17, + 0, 16, 0, 26, 26, 26, 26, 26, 26, 26, + 26, 25, 25, 25, 26, 30, 30, 30, 20, 25, + 25, 0, 30, 30, 30, 30, 30, 9, 9, 9, 9, 9, 9, 23, 23, 23, 20, 22, 22, 4, - 4, 4, 26, 26, 26, 20, 25, 25, 30, 30, - - 30, 30, 30, 25, 25, 30, 30, 30, 9, 9, - 9, 9, 9, 9, 9, 23, 23, 23, 23, 23, - 22, 22, 26, 26, 26, 26, 26, 25, 25, 30, - 30, 30, 25, 25, 30, 30, 9, 9, 9, 9, - 9, 23, 23, 23, 22, 22, 26, 26, 26, 25, - 25, 30, 30, 30, 30, 30, 25, 25, 30, 30, + + 4, 0, 4, 26, 26, 26, 26, 20, 25, 25, + 30, 30, 30, 30, 30, 25, 25, 30, 30, 30, 9, 9, 9, 9, 9, 9, 9, 23, 23, 23, - 23, 23, 22, 22, 26, 26, 26, 26, 26, 25, - 25, 18, 18, 18, 25, 0, 15, 30, 30, 9, - 9, 9, 9, 18, 18, 18, 22, 18, 18, 18, - - 25, 15, 30, 18, 18, 18, 18, 25, 30, 27, - 9, 9, 9, 9, 9, 9, 23, 18, 18, 18, - 18, 22, 26, 18, 18, 18, 18, 25, 30, 19, - 19, 19, 0, 14, 30, 27, 9, 9, 9, 9, - 23, 19, 19, 19, 26, 19, 19, 19, 14, 30, - 30, 19, 19, 19, 19, 19, 28, 9, 9, 9, - 9, 9, 9, 9, 23, 23, 19, 19, 19, 19, - 19, 26, 26, 19, 19, 19, 19, 19, 30, 30, - 30, 19, 19, 9, 9, 9, 9, 9, 23, 23, - 23, 19, 19, 26, 26, 26, 19, 19, 30, 30, - - 30, 30, 30, 9, 9, 9, 9, 9, 23, 23, - 23, 23, 23, 26, 26, 26, 26, 26, 30, 30, - 30, 9, 9, 9, 23, 23, 23, 26, 26, 26, - 30, 30, 30, 30, 30, 9, 9, 9, 9, 9, - 23, 23, 23, 23, 23, 26, 26, 26, 26, 26, - 18, 18, 18, 9, 9, 9, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 9, 9, 9, 18, 18, - 18, 18, 18, 18, 0 + 23, 23, 22, 22, 4, 26, 26, 26, 26, 26, + 25, 25, 30, 30, 30, 25, 25, 30, 30, 9, + 9, 9, 9, 9, 23, 23, 23, 22, 22, 26, + 26, 26, 25, 25, 30, 30, 30, 30, 30, 25, + 25, 30, 30, 9, 9, 9, 9, 9, 9, 9, + 23, 23, 23, 23, 23, 22, 22, 26, 26, 26, + 26, 26, 25, 25, 18, 18, 18, 25, 0, 15, + + 30, 30, 9, 9, 9, 9, 18, 18, 18, 22, + 18, 18, 18, 25, 30, 18, 18, 18, 18, 25, + 30, 27, 9, 9, 9, 9, 9, 9, 23, 18, + 18, 18, 18, 22, 26, 18, 18, 18, 18, 25, + 30, 19, 19, 19, 0, 14, 30, 27, 9, 9, + 9, 9, 23, 19, 19, 19, 26, 19, 19, 19, + 30, 30, 19, 19, 19, 19, 19, 28, 9, 9, + 9, 9, 9, 9, 9, 23, 23, 19, 19, 19, + 19, 19, 26, 26, 19, 19, 19, 19, 19, 30, + 30, 30, 19, 19, 9, 9, 9, 9, 9, 23, + + 23, 23, 19, 19, 26, 26, 26, 19, 19, 30, + 30, 30, 30, 30, 9, 9, 9, 9, 9, 23, + 23, 23, 23, 23, 26, 26, 26, 26, 26, 30, + 30, 30, 9, 9, 9, 23, 23, 23, 26, 26, + 26, 30, 30, 30, 30, 30, 9, 9, 9, 9, + 9, 23, 23, 23, 23, 23, 26, 26, 26, 26, + 26, 18, 18, 18, 9, 9, 9, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 9, 9, 9, 18, + 18, 18, 18, 18, 18, 0 } ; static yyconst int yy_ec[256] = @@ -376,144 +377,144 @@ static yyconst int yy_ec[256] = static yyconst int yy_meta[53] = { 0, - 1, 2, 2, 3, 1, 4, 1, 5, 5, 1, + 1, 2, 2, 3, 1, 4, 1, 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 6, 7, 5, 1, 1, 1, 1, 1, 1, + 1, 2, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst short int yy_base[514] = +static yyconst short int yy_base[521] = { 0, - 0, 26, 61, 0, 113, 0, 165, 0, 1010, 0, - 1006, 3351, 1003, 216, 0, 3351, 3351, 0, 3351, 222, - 241, 250, 259, 3351, 3351, 280, 975, 978, 54, 318, - 951, 943, 932, 921, 921, 225, 3351, 966, 228, 0, - 280, 3351, 351, 372, 346, 353, 3351, 0, 396, 933, - 936, 447, 470, 0, 0, 0, 3351, 0, 448, 496, - 505, 514, 535, 929, 928, 573, 455, 3351, 610, 646, - 535, 0, 614, 621, 676, 644, 656, 0, 713, 921, - 925, 219, 751, 0, 947, 941, 788, 941, 3351, 0, - 0, 700, 0, 785, 930, 813, 822, 800, 0, 843, - - 0, 903, 892, 239, 3351, 870, 870, 853, 855, 852, - 375, 0, 889, 451, 457, 854, 241, 866, 867, 0, - 0, 868, 0, 891, 0, 837, 831, 241, 3351, 0, - 0, 0, 864, 891, 851, 903, 912, 921, 0, 941, - 0, 823, 820, 679, 0, 954, 831, 964, 990, 824, - 3351, 535, 785, 837, 980, 968, 1020, 987, 1045, 1054, - 1063, 1084, 1121, 1158, 792, 789, 1198, 1207, 1216, 1042, - 796, 780, 767, 759, 744, 749, 726, 1225, 1234, 1243, - 1264, 749, 739, 1276, 1285, 1294, 1104, 711, 683, 1078, - 3351, 0, 1303, 1312, 1321, 1342, 690, 673, 1121, 692, - - 1367, 1376, 1003, 668, 663, 652, 634, 632, 1385, 1349, - 1394, 1403, 1412, 644, 631, 1131, 653, 1421, 1430, 1266, - 622, 617, 1437, 1451, 1476, 1485, 1494, 618, 610, 1503, - 1512, 1521, 608, 613, 614, 592, 1530, 1539, 1548, 601, - 603, 1557, 1566, 1575, 594, 598, 1584, 1593, 1602, 576, - 567, 1450, 515, 1611, 1620, 1461, 483, 233, 465, 456, - 1629, 1647, 1659, 1668, 1677, 458, 280, 1646, 470, 1686, - 1695, 1704, 442, 356, 1710, 1724, 1749, 1758, 1767, 440, - 431, 1775, 1783, 1791, 440, 460, 3351, 423, 401, 1800, - 1809, 1818, 390, 1826, 1834, 1842, 379, 1850, 1858, 1866, - - 366, 0, 1723, 372, 1874, 1882, 1735, 471, 343, 36, - 1891, 1909, 1921, 1930, 1939, 594, 1909, 363, 1947, 1955, - 1963, 595, 1969, 1983, 2007, 2015, 2023, 618, 2032, 2041, - 2050, 2059, 622, 3351, 267, 3351, 2068, 2077, 2086, 2095, - 2104, 2113, 2122, 2131, 2140, 2149, 2158, 2167, 0, 1983, - 278, 2176, 2185, 2194, 2203, 664, 0, 2212, 2230, 2242, - 2251, 2260, 2269, 2278, 1993, 270, 2287, 2296, 2305, 2314, - 966, 2229, 2328, 2353, 2362, 2371, 2380, 2389, 2398, 2407, - 2416, 2327, 325, 2425, 2434, 2443, 2452, 2461, 2470, 2479, - 2488, 2338, 695, 2497, 2506, 2515, 2522, 2529, 2536, 260, - - 2545, 2554, 2563, 2571, 2589, 2601, 2610, 2619, 2588, 237, - 2628, 2637, 2646, 2652, 2666, 2691, 2700, 2709, 2718, 2727, - 2736, 2745, 2754, 2763, 2772, 2781, 2790, 2799, 2808, 2817, - 2665, 232, 2826, 2835, 2676, 2844, 2862, 2874, 2883, 2892, - 2861, 210, 2901, 2910, 2919, 2925, 2939, 2964, 2973, 2982, - 2938, 2949, 2989, 2998, 3007, 3016, 3023, 3030, 3037, 3044, - 3051, 3058, 0, 3065, 1467, 843, 3074, 3083, 0, 3090, - 2682, 1337, 3097, 3104, 3351, 3125, 3129, 3136, 3140, 3144, - 3149, 3156, 3163, 3170, 3177, 3184, 3188, 3192, 3196, 3201, - 3207, 3214, 3221, 3227, 3233, 3239, 3245, 3252, 3257, 3261, - - 3268, 3275, 3279, 3286, 3293, 3300, 3307, 3314, 3320, 3326, - 3332, 3338, 3344 + 0, 26, 61, 0, 113, 0, 165, 0, 1101, 1063, + 1097, 3667, 1094, 216, 1060, 3667, 3667, 1053, 3667, 222, + 247, 254, 217, 3667, 3667, 284, 1050, 1052, 335, 345, + 1030, 1016, 1005, 1000, 1000, 345, 3667, 1045, 380, 0, + 382, 3667, 388, 422, 261, 232, 3667, 0, 459, 1017, + 1017, 510, 533, 1004, 999, 991, 3667, 980, 412, 559, + 435, 507, 596, 962, 966, 647, 657, 945, 3667, 694, + 730, 940, 938, 533, 755, 566, 573, 792, 939, 944, + 843, 853, 922, 890, 954, 948, 913, 920, 3667, 915, + 874, 949, 870, 972, 657, 0, 982, 208, 0, 0, + + 885, 0, 1019, 0, 871, 868, 220, 3667, 850, 853, + 845, 846, 834, 391, 0, 871, 700, 703, 740, 235, + 1044, 740, 0, 0, 843, 0, 1065, 0, 831, 826, + 304, 821, 819, 1101, 818, 1124, 816, 1147, 777, 1157, + 372, 0, 0, 829, 0, 1194, 0, 817, 814, 420, + 766, 1230, 1253, 224, 1289, 1325, 787, 3667, 785, 750, + 1361, 747, 1384, 853, 1394, 395, 1419, 0, 761, 1456, + 1493, 1530, 737, 728, 616, 1570, 1579, 1588, 1609, 726, + 716, 54, 706, 696, 677, 683, 657, 1634, 1643, 1652, + 1673, 643, 633, 1698, 1707, 1716, 1737, 639, 628, 623, + + 3667, 249, 0, 649, 1762, 1771, 1780, 1801, 627, 573, + 1826, 397, 1835, 1844, 1853, 571, 568, 561, 546, 545, + 1862, 706, 1871, 1880, 1889, 560, 537, 1898, 411, 1907, + 1916, 1925, 512, 509, 250, 1934, 503, 1943, 1952, 1961, + 509, 502, 1970, 1979, 1988, 496, 501, 503, 472, 1997, + 2006, 2015, 436, 434, 2024, 2033, 2042, 427, 416, 2051, + 2060, 2069, 399, 401, 2078, 507, 2087, 2096, 2105, 366, + 286, 356, 347, 2114, 896, 2123, 2132, 2141, 320, 345, + 2150, 518, 2159, 2168, 2177, 319, 385, 2186, 688, 2195, + 2204, 2213, 316, 391, 2222, 910, 923, 323, 425, 3667, + + 306, 298, 2231, 2240, 2249, 317, 2258, 946, 929, 314, + 2267, 969, 989, 312, 2275, 444, 0, 0, 274, 513, + 254, 36, 2284, 1007, 2293, 2302, 2311, 534, 2319, 643, + 0, 0, 271, 598, 2327, 699, 0, 0, 262, 657, + 2336, 2345, 2354, 2363, 698, 3667, 206, 3667, 2372, 2381, + 2390, 2399, 2408, 2417, 2426, 2435, 2444, 2453, 2462, 2471, + 2480, 708, 2489, 2498, 2507, 2516, 997, 0, 2525, 1014, + 2534, 2543, 2552, 2561, 2570, 2579, 729, 2588, 2597, 2606, + 2615, 1030, 2624, 752, 2633, 2642, 2651, 2660, 1067, 2669, + 2678, 2687, 2696, 763, 2705, 2714, 2723, 2732, 2741, 2750, + + 2759, 2768, 2777, 779, 2786, 2795, 2804, 2813, 1070, 2820, + 778, 2845, 2854, 2863, 2872, 1107, 2881, 2890, 2899, 2906, + 895, 2931, 2940, 2949, 2956, 897, 2981, 2990, 2999, 3008, + 3017, 3026, 3035, 3044, 3053, 3062, 3071, 3080, 3089, 3098, + 3107, 3116, 941, 3125, 3134, 3143, 3152, 1130, 3161, 3170, + 3179, 3188, 942, 3197, 3206, 3215, 3224, 955, 3233, 3242, + 3251, 3260, 3269, 3278, 3287, 3296, 3305, 3314, 3323, 3332, + 3341, 3350, 3359, 207, 3366, 1076, 1031, 3391, 3400, 206, + 3407, 1144, 205, 3430, 1168, 3667, 3467, 3473, 3479, 3485, + 3491, 3497, 3503, 3508, 3514, 3520, 3526, 3532, 3538, 3544, + + 3550, 3556, 3562, 3568, 3574, 3580, 3586, 3592, 3595, 3601, + 3606, 3612, 3618, 3624, 3630, 3636, 3642, 3648, 3654, 3660 } ; -static yyconst short int yy_def[514] = +static yyconst short int yy_def[521] = { 0, - 475, 1, 475, 3, 475, 5, 475, 7, 475, 476, - 475, 475, 475, 477, 478, 475, 475, 479, 475, 480, - 476, 476, 476, 475, 475, 475, 26, 26, 475, 26, - 26, 26, 26, 26, 26, 481, 475, 482, 483, 482, - 484, 475, 485, 481, 44, 44, 475, 482, 475, 49, - 49, 475, 49, 486, 486, 487, 475, 488, 489, 486, - 486, 486, 475, 63, 63, 63, 490, 475, 491, 492, - 493, 494, 495, 496, 490, 75, 75, 494, 475, 79, - 79, 494, 79, 476, 475, 475, 477, 497, 475, 478, - 479, 480, 498, 476, 476, 476, 476, 476, 30, 499, - - 26, 26, 26, 475, 475, 30, 30, 30, 30, 30, - 481, 482, 482, 483, 484, 485, 500, 44, 481, 44, - 44, 44, 53, 501, 49, 49, 49, 475, 475, 486, - 487, 488, 489, 486, 486, 486, 486, 486, 66, 502, - 63, 63, 63, 490, 494, 491, 503, 504, 505, 506, - 475, 507, 508, 509, 510, 511, 490, 490, 157, 157, - 157, 512, 513, 475, 164, 164, 476, 476, 476, 499, - 26, 26, 30, 30, 30, 30, 30, 44, 44, 44, - 501, 49, 49, 486, 486, 486, 502, 63, 63, 490, - 475, 494, 157, 157, 157, 513, 164, 164, 476, 476, - - 476, 476, 476, 26, 26, 30, 30, 30, 44, 481, - 44, 44, 44, 49, 49, 486, 486, 486, 486, 486, - 63, 63, 157, 490, 157, 157, 157, 164, 164, 476, - 476, 476, 26, 26, 30, 30, 44, 44, 44, 49, - 49, 486, 486, 486, 63, 63, 157, 157, 157, 164, - 164, 476, 476, 476, 476, 476, 26, 26, 30, 30, - 44, 481, 44, 44, 44, 49, 49, 486, 486, 486, - 486, 486, 63, 63, 157, 490, 157, 157, 157, 164, - 164, 476, 476, 476, 26, 475, 475, 30, 30, 44, - 44, 44, 49, 486, 486, 486, 63, 157, 157, 157, - - 164, 494, 476, 476, 476, 476, 476, 26, 30, 30, - 44, 481, 44, 44, 44, 49, 486, 486, 486, 486, - 486, 63, 157, 490, 157, 157, 157, 164, 476, 476, - 476, 476, 475, 475, 30, 475, 44, 44, 44, 44, - 486, 486, 486, 486, 157, 157, 157, 157, 494, 476, - 476, 476, 476, 476, 476, 476, 30, 44, 481, 44, - 44, 44, 44, 44, 486, 486, 486, 486, 486, 486, - 486, 157, 490, 157, 157, 157, 157, 157, 476, 476, - 476, 476, 476, 44, 44, 44, 44, 44, 486, 486, - 486, 486, 486, 157, 157, 157, 157, 157, 476, 476, - - 476, 476, 476, 44, 481, 44, 44, 44, 486, 486, - 486, 486, 486, 157, 490, 157, 157, 157, 476, 476, - 476, 44, 44, 44, 486, 486, 486, 157, 157, 157, - 476, 476, 476, 476, 476, 44, 481, 44, 44, 44, - 486, 486, 486, 486, 486, 157, 490, 157, 157, 157, - 476, 476, 476, 44, 44, 44, 486, 486, 486, 157, - 157, 157, 476, 476, 476, 481, 44, 44, 486, 486, - 486, 490, 157, 157, 0, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475 + 486, 1, 486, 3, 486, 5, 486, 7, 486, 487, + 486, 486, 486, 488, 489, 486, 486, 490, 486, 491, + 487, 21, 21, 486, 486, 486, 26, 26, 487, 26, + 26, 26, 26, 26, 26, 492, 486, 493, 494, 493, + 495, 486, 496, 492, 44, 44, 486, 493, 486, 49, + 49, 487, 49, 497, 497, 498, 486, 499, 500, 497, + 60, 60, 486, 63, 63, 497, 63, 501, 486, 502, + 503, 504, 505, 506, 501, 75, 75, 486, 78, 78, + 501, 78, 487, 487, 486, 486, 488, 507, 486, 488, + 489, 489, 490, 490, 491, 508, 487, 487, 21, 21, + + 21, 30, 509, 26, 26, 26, 487, 486, 30, 30, + 30, 30, 30, 492, 493, 493, 494, 495, 496, 510, + 44, 44, 44, 44, 44, 53, 511, 49, 49, 49, + 487, 487, 497, 497, 498, 498, 499, 499, 500, 497, + 497, 60, 60, 60, 67, 512, 63, 63, 63, 497, + 501, 501, 502, 513, 153, 514, 515, 486, 514, 516, + 516, 517, 517, 518, 501, 501, 501, 167, 167, 519, + 520, 486, 172, 172, 501, 21, 21, 21, 509, 26, + 26, 486, 30, 30, 30, 30, 30, 44, 44, 44, + 511, 49, 49, 60, 60, 60, 512, 63, 63, 501, + + 486, 513, 153, 153, 167, 167, 167, 520, 172, 172, + 21, 487, 21, 21, 21, 26, 26, 30, 30, 30, + 44, 492, 44, 44, 44, 49, 49, 60, 497, 60, + 60, 60, 63, 63, 513, 167, 501, 167, 167, 167, + 172, 172, 21, 21, 21, 26, 26, 30, 30, 44, + 44, 44, 49, 49, 60, 60, 60, 63, 63, 167, + 167, 167, 172, 172, 21, 487, 21, 21, 21, 26, + 26, 30, 30, 44, 492, 44, 44, 44, 49, 49, + 60, 497, 60, 60, 60, 63, 63, 167, 501, 167, + 167, 167, 172, 172, 21, 295, 295, 26, 486, 486, + + 30, 30, 44, 44, 44, 49, 60, 307, 307, 63, + 167, 311, 311, 172, 295, 487, 295, 295, 295, 26, + 30, 30, 44, 492, 44, 44, 44, 49, 307, 497, + 307, 307, 307, 63, 311, 501, 311, 311, 311, 172, + 21, 21, 21, 21, 486, 486, 30, 486, 44, 44, + 44, 44, 60, 60, 60, 60, 167, 167, 167, 167, + 21, 487, 21, 21, 21, 21, 487, 30, 44, 492, + 44, 44, 44, 44, 44, 60, 497, 60, 60, 60, + 60, 497, 167, 501, 167, 167, 167, 167, 501, 21, + 21, 21, 21, 487, 44, 44, 44, 44, 44, 60, + + 60, 60, 60, 497, 167, 167, 167, 167, 501, 487, + 487, 21, 21, 21, 44, 492, 44, 44, 44, 497, + 497, 60, 60, 60, 501, 501, 167, 167, 167, 21, + 21, 21, 44, 44, 44, 60, 60, 60, 167, 167, + 167, 21, 487, 21, 21, 21, 44, 492, 44, 44, + 44, 60, 497, 60, 60, 60, 167, 501, 167, 167, + 167, 21, 21, 21, 44, 44, 44, 60, 60, 60, + 167, 167, 167, 487, 487, 487, 492, 44, 44, 497, + 497, 497, 501, 501, 501, 0, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486 } ; -static yyconst short int yy_nxt[3404] = +static yyconst short int yy_nxt[3720] = { 0, 10, 11, 12, 13, 10, 14, 15, 16, 17, 18, 19, 10, 10, 20, 21, 22, 23, 21, 21, 21, 21, 24, 25, 17, 26, 26, 26, 26, 26, 27, 26, 28, 26, 26, 26, 26, 29, 10, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 31, 32, 33, 104, 105, 336, 34, 336, + 30, 30, 31, 32, 33, 182, 108, 348, 34, 348, 35, 36, 11, 37, 38, 36, 36, 39, 40, 40, 41, 42, 36, 36, 43, 44, 45, 46, 44, 44, 44, 44, 47, 48, 40, 49, 49, 49, 49, 49, @@ -523,376 +524,410 @@ static yyconst short int yy_nxt[3404] = 53, 53, 53, 54, 11, 12, 13, 54, 55, 56, 17, 57, 58, 19, 54, 54, 59, 60, 61, 62, 60, 60, 60, 60, 24, 25, 17, 63, 63, 63, - 63, 63, 64, 63, 65, 63, 63, 63, 63, 29, - 54, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 67, 11, 68, 13, 69, - 70, 71, 72, 72, 73, 19, 67, 67, 74, 75, - 76, 77, 75, 75, 75, 75, 78, 25, 72, 79, - 79, 79, 79, 79, 80, 79, 81, 79, 79, 79, - - 79, 82, 67, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 88, 89, 88, - 104, 105, 441, 88, 88, 93, 88, 84, 112, 93, - 93, 112, 112, 112, 286, 112, 112, 88, 88, 88, - 104, 105, 104, 105, 431, 93, 112, 112, 112, 409, - 112, 112, 88, 94, 287, 95, 95, 95, 95, 95, - 95, 95, 94, 112, 96, 96, 96, 96, 96, 96, - 96, 94, 399, 97, 97, 97, 97, 97, 98, 95, - 84, 286, 365, 112, 84, 84, 84, 112, 112, 84, - 350, 99, 100, 84, 101, 101, 101, 101, 101, 101, - - 101, 287, 112, 112, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 357, 101, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 383, - 383, 383, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 117, 99, 111, 286, 117, 117, - 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, - 121, 121, 122, 112, 117, 112, 317, 287, 112, 112, - 112, 335, 112, 112, 118, 303, 119, 119, 119, 119, - 119, 119, 119, 328, 112, 112, 111, 112, 112, 112, - - 111, 111, 111, 112, 112, 111, 322, 123, 124, 111, - 125, 125, 125, 125, 125, 125, 125, 316, 112, 112, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 286, 125, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 128, 105, - 310, 93, 302, 130, 112, 93, 93, 129, 112, 112, - 112, 286, 145, 145, 112, 112, 309, 308, 129, 129, - 129, 93, 333, 112, 112, 301, 145, 297, 145, 112, - 112, 287, 268, 129, 123, 123, 123, 123, 123, 123, - 123, 145, 334, 293, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 289, 123, 134, 288, - 135, 135, 135, 135, 135, 135, 135, 134, 285, 136, - 136, 136, 136, 136, 136, 136, 134, 252, 137, 137, - 137, 137, 137, 138, 135, 130, 150, 151, 150, 130, - 130, 130, 145, 145, 130, 150, 139, 140, 130, 141, - 141, 141, 141, 141, 141, 141, 145, 150, 145, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 145, 141, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 281, 333, 333, 139, 139, 139, - - 139, 139, 139, 139, 139, 139, 139, 139, 139, 280, - 139, 147, 147, 147, 144, 334, 334, 148, 148, 333, - 147, 145, 145, 333, 93, 274, 144, 273, 156, 156, - 267, 148, 147, 148, 266, 145, 260, 145, 259, 349, - 258, 257, 145, 334, 156, 251, 148, 150, 151, 150, - 145, 250, 246, 152, 152, 245, 150, 145, 159, 159, - 159, 159, 159, 159, 159, 216, 241, 152, 150, 152, - 160, 160, 160, 160, 160, 161, 350, 240, 383, 383, - 383, 206, 152, 145, 145, 236, 145, 145, 157, 235, - 158, 158, 158, 158, 158, 158, 158, 145, 234, 145, - - 145, 233, 145, 93, 199, 84, 229, 93, 93, 393, - 393, 393, 145, 144, 228, 145, 222, 144, 144, 144, - 145, 145, 144, 93, 162, 163, 144, 164, 164, 164, - 164, 164, 164, 164, 145, 221, 145, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 145, - 164, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 215, 214, 206, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 208, 162, 88, - 89, 88, 145, 145, 206, 88, 88, 207, 88, 167, - - 168, 169, 167, 167, 167, 167, 145, 206, 145, 88, - 88, 88, 94, 205, 95, 95, 95, 95, 95, 95, - 204, 145, 198, 197, 88, 94, 151, 95, 95, 95, - 95, 95, 95, 95, 94, 191, 95, 95, 95, 95, - 95, 95, 95, 84, 145, 145, 112, 84, 84, 84, - 112, 112, 84, 189, 188, 84, 84, 117, 145, 111, - 145, 117, 117, 134, 183, 112, 112, 93, 182, 130, - 112, 93, 93, 145, 112, 112, 112, 117, 111, 118, - 178, 179, 180, 178, 178, 178, 178, 93, 111, 112, - 112, 111, 113, 177, 112, 111, 111, 111, 112, 112, - - 111, 176, 175, 111, 111, 184, 185, 186, 184, 184, - 184, 184, 174, 112, 112, 134, 173, 135, 135, 135, - 135, 135, 135, 135, 134, 172, 135, 135, 135, 135, - 135, 135, 135, 134, 171, 135, 135, 135, 135, 135, - 135, 130, 94, 89, 86, 130, 130, 130, 85, 166, - 130, 165, 143, 130, 130, 147, 147, 147, 190, 142, - 127, 148, 148, 126, 147, 147, 147, 147, 192, 113, - 110, 93, 109, 145, 147, 148, 147, 148, 365, 108, - 393, 393, 393, 93, 107, 144, 147, 156, 156, 145, - 148, 150, 151, 150, 145, 145, 106, 152, 152, 157, - - 150, 145, 103, 156, 145, 102, 86, 85, 145, 475, - 145, 152, 150, 152, 475, 199, 145, 200, 200, 200, - 200, 200, 200, 145, 475, 475, 152, 145, 145, 475, - 475, 475, 475, 475, 193, 194, 195, 193, 193, 193, - 193, 145, 84, 145, 475, 475, 84, 84, 84, 475, - 475, 84, 475, 475, 100, 84, 145, 157, 475, 158, - 158, 158, 158, 158, 158, 158, 157, 475, 158, 158, - 158, 158, 158, 158, 158, 157, 475, 158, 158, 158, - 158, 158, 158, 144, 144, 145, 145, 475, 144, 144, - 144, 145, 145, 144, 475, 475, 163, 144, 475, 145, - - 475, 145, 475, 475, 130, 145, 475, 145, 130, 130, - 130, 475, 475, 130, 145, 475, 140, 130, 475, 475, - 145, 144, 475, 475, 475, 144, 144, 144, 145, 145, - 144, 475, 475, 144, 144, 230, 231, 232, 230, 230, - 230, 230, 145, 475, 145, 242, 243, 244, 242, 242, - 242, 242, 475, 475, 475, 475, 475, 145, 144, 475, - 475, 475, 144, 144, 144, 145, 145, 144, 475, 162, - 163, 144, 164, 164, 164, 164, 164, 164, 164, 145, - 475, 145, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 145, 164, 162, 162, 162, 162, - - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 199, 475, 200, 200, 200, 200, 200, 200, 200, 199, - 475, 201, 201, 201, 201, 201, 201, 201, 199, 475, - 202, 202, 202, 202, 202, 203, 200, 209, 475, 210, - 210, 210, 210, 210, 210, 210, 209, 475, 211, 211, - 211, 211, 211, 211, 211, 209, 475, 212, 212, 212, - 212, 212, 213, 210, 111, 475, 475, 112, 111, 111, - 111, 112, 112, 111, 475, 475, 124, 111, 216, 475, - 217, 217, 217, 217, 217, 217, 112, 112, 216, 475, - 217, 217, 217, 217, 217, 217, 217, 216, 475, 218, - - 218, 218, 218, 218, 218, 218, 216, 475, 219, 219, - 219, 219, 219, 220, 217, 223, 475, 224, 224, 224, - 224, 224, 224, 224, 223, 475, 225, 225, 225, 225, - 225, 225, 225, 223, 475, 226, 226, 226, 226, 226, - 227, 224, 144, 475, 145, 145, 144, 144, 144, 145, - 145, 144, 112, 475, 163, 144, 112, 112, 145, 475, - 145, 209, 475, 145, 475, 145, 475, 475, 475, 475, - 475, 112, 112, 145, 475, 475, 475, 475, 145, 199, - 475, 200, 200, 200, 200, 200, 200, 200, 199, 475, - 200, 200, 200, 200, 200, 200, 200, 111, 475, 237, - - 238, 239, 237, 237, 237, 237, 209, 475, 210, 210, - 210, 210, 210, 210, 210, 209, 475, 210, 210, 210, - 210, 210, 210, 210, 209, 475, 210, 210, 210, 210, - 210, 210, 111, 216, 475, 217, 217, 217, 217, 217, - 217, 217, 216, 475, 217, 217, 217, 217, 217, 217, - 217, 247, 248, 249, 247, 247, 247, 247, 145, 145, - 475, 475, 475, 223, 282, 283, 284, 282, 282, 282, - 282, 475, 145, 252, 145, 253, 253, 253, 253, 253, - 253, 463, 463, 463, 463, 463, 463, 145, 223, 475, - 224, 224, 224, 224, 224, 224, 224, 223, 475, 224, - - 224, 224, 224, 224, 224, 224, 223, 475, 224, 224, - 224, 224, 224, 224, 144, 252, 475, 253, 253, 253, - 253, 253, 253, 253, 252, 475, 254, 254, 254, 254, - 254, 254, 254, 252, 475, 255, 255, 255, 255, 255, - 256, 253, 261, 475, 262, 262, 262, 262, 262, 262, - 262, 261, 475, 263, 263, 263, 263, 263, 263, 263, - 261, 475, 264, 264, 264, 264, 264, 265, 262, 268, - 475, 269, 269, 269, 269, 269, 269, 269, 268, 475, - 270, 270, 270, 270, 270, 270, 270, 268, 475, 271, - 271, 271, 271, 271, 272, 269, 275, 475, 276, 276, - - 276, 276, 276, 276, 276, 275, 475, 277, 277, 277, - 277, 277, 277, 277, 275, 475, 278, 278, 278, 278, - 278, 279, 276, 252, 475, 253, 253, 253, 253, 253, - 253, 253, 252, 475, 253, 253, 253, 253, 253, 253, - 253, 111, 475, 290, 291, 292, 290, 290, 290, 290, - 112, 475, 475, 475, 112, 112, 475, 475, 475, 261, - 294, 295, 296, 294, 294, 294, 294, 475, 475, 112, - 112, 261, 475, 262, 262, 262, 262, 262, 262, 262, - 261, 475, 262, 262, 262, 262, 262, 262, 262, 261, - 475, 262, 262, 262, 262, 262, 262, 111, 268, 475, - - 269, 269, 269, 269, 269, 269, 269, 268, 475, 269, - 269, 269, 269, 269, 269, 269, 268, 475, 269, 269, - 269, 269, 269, 269, 298, 299, 300, 298, 298, 298, - 298, 145, 145, 475, 475, 475, 275, 329, 330, 331, - 332, 329, 329, 329, 475, 145, 475, 145, 303, 304, - 304, 304, 304, 304, 304, 475, 475, 475, 475, 475, - 145, 275, 475, 276, 276, 276, 276, 276, 276, 276, - 275, 475, 276, 276, 276, 276, 276, 276, 276, 275, - 475, 276, 276, 276, 276, 276, 276, 144, 303, 304, - 304, 304, 304, 304, 304, 304, 303, 305, 305, 305, - - 305, 305, 305, 305, 303, 306, 306, 306, 306, 306, - 307, 304, 111, 311, 312, 312, 312, 312, 312, 312, - 312, 111, 311, 313, 313, 313, 313, 313, 313, 313, - 111, 311, 314, 314, 314, 314, 314, 315, 312, 317, - 318, 318, 318, 318, 318, 318, 318, 317, 319, 319, - 319, 319, 319, 319, 319, 317, 320, 320, 320, 320, - 320, 321, 318, 323, 324, 324, 324, 324, 324, 324, - 324, 323, 325, 325, 325, 325, 325, 325, 325, 323, - 326, 326, 326, 326, 326, 327, 324, 303, 304, 304, - 304, 304, 304, 304, 304, 303, 304, 304, 304, 304, - - 304, 304, 304, 111, 475, 337, 338, 339, 340, 337, - 337, 337, 112, 475, 475, 475, 112, 112, 475, 475, - 475, 475, 311, 341, 342, 343, 344, 341, 341, 341, - 475, 112, 112, 111, 311, 312, 312, 312, 312, 312, - 312, 312, 111, 311, 312, 312, 312, 312, 312, 312, - 312, 111, 311, 312, 312, 312, 312, 312, 312, 111, - 317, 318, 318, 318, 318, 318, 318, 318, 317, 318, - 318, 318, 318, 318, 318, 318, 317, 318, 318, 318, - 318, 318, 318, 345, 346, 347, 348, 345, 345, 345, - 145, 145, 475, 475, 475, 475, 323, 379, 380, 381, - - 379, 379, 379, 379, 145, 475, 145, 389, 390, 391, - 389, 389, 389, 389, 475, 475, 475, 475, 475, 145, - 323, 324, 324, 324, 324, 324, 324, 324, 323, 324, - 324, 324, 324, 324, 324, 324, 323, 324, 324, 324, - 324, 324, 324, 144, 350, 475, 351, 351, 351, 351, - 351, 351, 351, 350, 475, 352, 352, 352, 352, 352, - 352, 352, 350, 475, 353, 353, 353, 353, 353, 354, - 355, 350, 475, 356, 356, 356, 351, 351, 351, 351, - 358, 475, 359, 359, 359, 359, 359, 359, 359, 358, - 475, 360, 360, 360, 360, 360, 360, 360, 358, 475, - - 361, 361, 361, 361, 361, 362, 363, 358, 475, 364, - 364, 364, 359, 359, 359, 359, 365, 475, 366, 366, - 366, 366, 366, 366, 366, 365, 475, 367, 367, 367, - 367, 367, 367, 367, 365, 475, 368, 368, 368, 368, - 368, 369, 370, 365, 475, 371, 371, 371, 366, 366, - 366, 366, 372, 475, 373, 373, 373, 373, 373, 373, - 373, 372, 475, 374, 374, 374, 374, 374, 374, 374, - 372, 475, 375, 375, 375, 375, 375, 376, 377, 372, - 475, 378, 378, 378, 373, 373, 373, 373, 350, 475, - 355, 355, 355, 355, 355, 355, 355, 350, 475, 355, - - 355, 355, 355, 355, 355, 355, 350, 475, 355, 355, - 355, 355, 355, 355, 382, 350, 475, 382, 382, 382, - 382, 382, 382, 382, 111, 475, 384, 385, 386, 384, - 384, 384, 384, 112, 475, 475, 475, 112, 112, 475, - 475, 475, 358, 394, 395, 396, 394, 394, 394, 394, - 475, 475, 112, 112, 358, 475, 363, 363, 363, 363, - 363, 363, 363, 358, 475, 363, 363, 363, 363, 363, - 363, 363, 358, 475, 363, 363, 363, 363, 363, 363, - 387, 358, 475, 387, 387, 387, 387, 387, 387, 387, - 358, 475, 388, 388, 388, 111, 111, 111, 111, 365, - - 475, 370, 370, 370, 370, 370, 370, 370, 365, 475, - 370, 370, 370, 370, 370, 370, 370, 365, 475, 370, - 370, 370, 370, 370, 370, 392, 365, 475, 392, 392, - 392, 392, 392, 392, 392, 145, 145, 475, 475, 475, - 372, 382, 382, 382, 382, 382, 382, 382, 475, 145, - 475, 145, 392, 392, 392, 392, 392, 392, 392, 475, - 475, 475, 475, 475, 145, 372, 475, 377, 377, 377, - 377, 377, 377, 377, 372, 475, 377, 377, 377, 377, - 377, 377, 377, 372, 475, 377, 377, 377, 377, 377, - 377, 397, 372, 475, 397, 397, 397, 397, 397, 397, - - 397, 372, 475, 398, 398, 398, 144, 144, 144, 144, - 399, 475, 400, 400, 400, 400, 400, 400, 400, 399, - 475, 401, 401, 401, 401, 401, 401, 401, 399, 475, - 402, 402, 402, 402, 402, 403, 400, 404, 475, 405, - 405, 405, 405, 405, 405, 405, 404, 475, 406, 406, - 406, 406, 406, 406, 406, 404, 475, 407, 407, 407, - 407, 407, 408, 405, 111, 475, 387, 387, 387, 387, - 387, 387, 387, 111, 475, 388, 388, 388, 111, 111, - 111, 111, 409, 475, 410, 410, 410, 410, 410, 410, - 410, 409, 475, 411, 411, 411, 411, 411, 411, 411, - - 409, 475, 412, 412, 412, 412, 412, 413, 410, 414, - 475, 415, 415, 415, 415, 415, 415, 415, 414, 475, - 416, 416, 416, 416, 416, 416, 416, 414, 475, 417, - 417, 417, 417, 417, 418, 415, 397, 397, 397, 397, - 397, 397, 397, 398, 398, 398, 144, 144, 144, 144, - 419, 420, 421, 419, 419, 419, 419, 399, 475, 400, - 400, 400, 400, 400, 400, 400, 399, 475, 400, 400, - 400, 400, 400, 400, 400, 399, 475, 400, 400, 400, - 400, 400, 400, 111, 475, 422, 423, 424, 422, 422, - 422, 422, 112, 475, 475, 475, 112, 112, 475, 475, - - 475, 404, 425, 426, 427, 425, 425, 425, 425, 475, - 475, 112, 112, 404, 475, 405, 405, 405, 405, 405, - 405, 405, 404, 475, 405, 405, 405, 405, 405, 405, - 405, 404, 475, 405, 405, 405, 405, 405, 405, 111, - 409, 475, 410, 410, 410, 410, 410, 410, 410, 409, - 475, 410, 410, 410, 410, 410, 410, 410, 409, 475, - 410, 410, 410, 410, 410, 410, 428, 429, 430, 428, - 428, 428, 428, 145, 145, 475, 475, 475, 414, 451, - 452, 453, 451, 451, 451, 451, 475, 145, 431, 145, - 432, 432, 432, 432, 432, 432, 469, 469, 469, 469, - - 469, 469, 145, 414, 475, 415, 415, 415, 415, 415, - 415, 415, 414, 475, 415, 415, 415, 415, 415, 415, - 415, 414, 475, 415, 415, 415, 415, 415, 415, 144, - 431, 475, 432, 432, 432, 432, 432, 432, 432, 431, - 475, 433, 433, 433, 433, 433, 433, 433, 431, 475, - 434, 434, 434, 434, 434, 435, 432, 436, 475, 437, - 437, 437, 437, 437, 437, 437, 436, 475, 438, 438, - 438, 438, 438, 438, 438, 436, 475, 439, 439, 439, - 439, 439, 440, 437, 441, 475, 442, 442, 442, 442, - 442, 442, 442, 441, 475, 443, 443, 443, 443, 443, - - 443, 443, 441, 475, 444, 444, 444, 444, 444, 445, - 442, 446, 475, 447, 447, 447, 447, 447, 447, 447, - 446, 475, 448, 448, 448, 448, 448, 448, 448, 446, - 475, 449, 449, 449, 449, 449, 450, 447, 431, 475, - 432, 432, 432, 432, 432, 432, 432, 431, 475, 432, - 432, 432, 432, 432, 432, 432, 111, 475, 454, 455, - 456, 454, 454, 454, 454, 112, 475, 475, 475, 112, - 112, 475, 475, 475, 436, 457, 458, 459, 457, 457, - 457, 457, 475, 475, 112, 112, 436, 475, 437, 437, - 437, 437, 437, 437, 437, 436, 475, 437, 437, 437, - - 437, 437, 437, 437, 436, 475, 437, 437, 437, 437, - 437, 437, 111, 441, 475, 442, 442, 442, 442, 442, - 442, 442, 441, 475, 442, 442, 442, 442, 442, 442, - 442, 441, 475, 442, 442, 442, 442, 442, 442, 460, - 461, 462, 460, 460, 460, 460, 145, 145, 475, 475, - 475, 446, 463, 463, 463, 463, 463, 463, 463, 475, - 145, 475, 145, 451, 451, 451, 451, 451, 451, 451, - 475, 475, 475, 475, 475, 145, 446, 475, 447, 447, - 447, 447, 447, 447, 447, 446, 475, 447, 447, 447, - 447, 447, 447, 447, 446, 475, 447, 447, 447, 447, - - 447, 447, 144, 464, 464, 464, 464, 464, 465, 463, - 111, 475, 466, 466, 466, 466, 466, 466, 466, 111, - 475, 454, 454, 454, 454, 454, 454, 454, 111, 475, - 467, 467, 467, 467, 467, 468, 466, 469, 469, 469, - 469, 469, 469, 469, 457, 457, 457, 457, 457, 457, - 457, 470, 470, 470, 470, 470, 471, 469, 472, 472, - 472, 472, 472, 472, 472, 460, 460, 460, 460, 460, - 460, 460, 473, 473, 473, 473, 473, 474, 472, 463, - 463, 463, 463, 463, 463, 463, 111, 475, 466, 466, - 466, 466, 466, 466, 466, 111, 475, 466, 466, 466, - - 466, 466, 466, 111, 469, 469, 469, 469, 469, 469, - 469, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 144, 84, 475, 475, 84, 87, - 87, 87, 87, 87, 87, 87, 90, 475, 475, 90, - 91, 475, 475, 91, 92, 475, 92, 92, 92, 111, - 475, 111, 111, 111, 475, 111, 112, 475, 112, 112, - 112, 475, 112, 114, 475, 114, 114, 114, 475, 114, - 115, 475, 115, 115, 115, 475, 115, 116, 475, 116, - 116, 116, 475, 116, 130, 475, 475, 130, 131, 475, - 475, 131, 132, 475, 475, 132, 133, 475, 133, 133, - - 133, 144, 475, 475, 144, 144, 144, 146, 146, 146, - 146, 146, 146, 146, 149, 149, 149, 149, 149, 149, - 149, 153, 475, 475, 153, 153, 153, 145, 475, 475, - 145, 145, 145, 154, 475, 475, 154, 154, 154, 155, - 475, 155, 155, 155, 155, 88, 88, 88, 88, 88, - 88, 88, 93, 475, 93, 475, 93, 170, 475, 475, - 170, 117, 475, 117, 117, 117, 475, 117, 181, 475, - 181, 181, 181, 475, 181, 187, 475, 475, 187, 147, - 147, 147, 147, 147, 147, 147, 148, 148, 148, 148, - 148, 148, 148, 149, 149, 149, 149, 149, 149, 149, - - 150, 150, 150, 150, 150, 150, 150, 152, 152, 152, - 152, 152, 152, 152, 153, 475, 475, 153, 153, 153, - 154, 475, 475, 154, 154, 154, 155, 475, 155, 155, - 155, 155, 156, 475, 156, 156, 156, 156, 162, 475, - 475, 162, 162, 162, 196, 475, 475, 196, 196, 196, - 9, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - - 475, 475, 475 + 63, 63, 64, 63, 65, 63, 63, 63, 63, 66, + 54, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 68, 11, 69, 13, 70, + 71, 72, 17, 17, 73, 19, 68, 68, 74, 75, + 76, 77, 75, 75, 75, 75, 24, 25, 17, 78, + 78, 78, 78, 78, 79, 78, 80, 78, 78, 78, + + 78, 81, 68, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 88, 89, 88, + 97, 182, 108, 88, 88, 96, 88, 83, 201, 96, + 96, 100, 100, 100, 100, 100, 101, 88, 88, 88, + 115, 152, 134, 84, 84, 96, 124, 124, 124, 124, + 124, 125, 90, 235, 201, 368, 84, 115, 84, 97, + 202, 98, 98, 98, 98, 98, 98, 98, 99, 99, + 99, 99, 99, 99, 99, 123, 123, 123, 123, 123, + 123, 123, 151, 84, 83, 202, 202, 299, 83, 83, + 83, 133, 347, 83, 83, 102, 103, 83, 104, 104, + + 104, 104, 104, 104, 104, 182, 108, 300, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 84, 104, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 107, 108, 83, 340, + 84, 334, 83, 83, 328, 83, 299, 322, 115, 321, + 320, 314, 115, 115, 310, 306, 83, 83, 83, 102, + 102, 102, 102, 102, 102, 102, 300, 115, 115, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 84, 102, 115, 140, 115, 299, 115, 115, 115, + 115, 120, 299, 114, 115, 120, 120, 302, 115, 115, + + 301, 298, 115, 115, 115, 115, 300, 165, 134, 211, + 115, 120, 300, 115, 115, 96, 92, 133, 94, 96, + 96, 182, 108, 228, 84, 115, 299, 84, 294, 115, + 115, 152, 293, 84, 121, 96, 122, 122, 122, 122, + 122, 122, 122, 287, 115, 115, 300, 134, 134, 142, + 142, 142, 142, 142, 142, 142, 134, 315, 84, 114, + 286, 280, 115, 114, 114, 114, 115, 115, 114, 279, + 126, 127, 114, 128, 128, 128, 128, 128, 128, 128, + 84, 115, 115, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 84, 128, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 131, 108, 83, 345, 236, 273, 83, 83, 265, + 132, 143, 143, 143, 143, 143, 144, 272, 271, 270, + 281, 132, 132, 83, 346, 345, 96, 264, 151, 152, + 96, 96, 263, 84, 259, 258, 132, 126, 126, 126, + 126, 126, 126, 126, 134, 346, 96, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 152, + 126, 140, 254, 141, 141, 141, 141, 141, 141, 141, + 167, 167, 167, 167, 167, 167, 167, 168, 168, 168, + 168, 168, 169, 253, 218, 134, 133, 249, 248, 345, + + 133, 133, 133, 247, 246, 133, 242, 145, 146, 133, + 147, 147, 147, 147, 147, 147, 147, 182, 108, 346, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 134, 147, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 150, 108, + 133, 241, 152, 203, 133, 133, 329, 133, 345, 152, + 96, 234, 83, 233, 96, 96, 227, 226, 133, 133, + 133, 145, 145, 145, 145, 145, 145, 145, 346, 134, + 96, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 84, 145, 154, 154, 154, 151, 345, + + 288, 154, 154, 115, 154, 218, 115, 115, 115, 115, + 115, 115, 335, 115, 115, 154, 154, 154, 221, 346, + 361, 220, 115, 115, 152, 115, 115, 218, 115, 115, + 155, 157, 158, 157, 219, 152, 92, 157, 157, 94, + 157, 376, 84, 120, 84, 114, 218, 120, 120, 217, + 216, 157, 157, 157, 114, 114, 114, 114, 114, 114, + 114, 210, 115, 120, 383, 134, 159, 165, 209, 166, + 166, 166, 166, 166, 166, 166, 84, 394, 394, 394, + 96, 151, 133, 163, 96, 96, 161, 158, 152, 158, + 410, 152, 151, 404, 404, 404, 151, 151, 151, 84, + + 96, 151, 152, 170, 171, 151, 172, 172, 172, 172, + 172, 172, 172, 134, 84, 134, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 152, 172, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 175, 108, 151, 199, 198, 133, + 151, 151, 138, 151, 136, 134, 96, 84, 151, 193, + 96, 96, 192, 114, 151, 151, 151, 170, 170, 170, + 170, 170, 170, 170, 116, 187, 96, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 152, + 170, 83, 186, 83, 185, 184, 183, 83, 83, 115, + + 83, 181, 180, 115, 115, 83, 94, 420, 274, 425, + 92, 83, 83, 83, 88, 89, 88, 89, 115, 115, + 88, 88, 89, 88, 317, 317, 317, 317, 317, 317, + 317, 134, 84, 152, 88, 88, 88, 318, 318, 318, + 318, 318, 319, 332, 332, 332, 332, 332, 333, 90, + 91, 86, 91, 442, 452, 85, 91, 91, 84, 91, + 331, 331, 331, 331, 331, 331, 331, 457, 174, 173, + 91, 91, 91, 93, 163, 93, 161, 84, 134, 93, + 93, 152, 93, 337, 337, 337, 337, 337, 337, 337, + 149, 152, 148, 93, 93, 93, 176, 177, 178, 176, + + 176, 176, 176, 338, 338, 338, 338, 338, 339, 361, + 115, 394, 394, 394, 115, 115, 138, 115, 84, 83, + 323, 115, 115, 83, 83, 83, 369, 136, 83, 115, + 115, 83, 83, 84, 115, 134, 115, 115, 115, 115, + 134, 130, 376, 84, 404, 404, 404, 129, 116, 113, + 84, 112, 111, 115, 115, 84, 114, 110, 188, 189, + 190, 188, 188, 188, 188, 114, 134, 84, 115, 114, + 114, 114, 115, 115, 114, 109, 106, 114, 114, 383, + 105, 409, 409, 409, 409, 409, 409, 115, 115, 94, + 474, 474, 474, 474, 474, 474, 92, 86, 85, 84, + + 486, 84, 133, 152, 133, 486, 152, 486, 133, 133, + 115, 133, 84, 486, 115, 115, 486, 486, 486, 415, + 486, 486, 133, 133, 133, 135, 486, 135, 486, 115, + 115, 135, 135, 115, 135, 486, 486, 115, 115, 486, + 486, 486, 447, 84, 486, 135, 135, 135, 137, 486, + 137, 486, 115, 115, 137, 137, 486, 137, 480, 480, + 480, 480, 480, 480, 486, 486, 84, 486, 137, 137, + 137, 194, 195, 196, 194, 194, 194, 194, 486, 486, + 134, 486, 483, 483, 483, 483, 483, 483, 486, 486, + 486, 486, 486, 134, 133, 486, 486, 486, 133, 133, + + 133, 486, 486, 133, 152, 486, 133, 133, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 134, 151, 486, 151, 486, 486, 486, 151, 151, 486, + 151, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 151, 151, 151, 154, 154, 154, 200, 486, 486, + 154, 154, 486, 154, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 154, 154, 154, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 155, + 153, 486, 153, 203, 486, 486, 153, 153, 486, 153, + + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 153, 153, 153, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 204, 157, 158, 157, 486, + 486, 486, 157, 157, 486, 157, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 157, 157, 157, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 159, 160, 486, 160, 486, 486, 486, 160, 160, + 486, 160, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 160, 160, 160, 162, 486, 162, 486, 486, + 486, 162, 162, 486, 162, 486, 486, 486, 486, 486, + + 486, 486, 486, 486, 486, 162, 162, 162, 205, 206, + 207, 205, 205, 205, 205, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 152, 165, 486, 166, 166, 166, 166, 166, 166, 166, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 152, 151, 486, 486, 486, + 151, 151, 151, 486, 486, 151, 486, 486, 171, 151, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 152, 151, 486, 486, 486, 151, 151, 151, + + 486, 486, 151, 486, 486, 151, 151, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 152, + 151, 486, 486, 486, 151, 151, 151, 486, 486, 151, + 486, 170, 171, 151, 172, 172, 172, 172, 172, 172, + 172, 486, 486, 486, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 152, 172, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 211, 486, 212, 212, 212, 212, 212, 212, + 212, 211, 486, 213, 213, 213, 213, 213, 213, 213, + + 211, 486, 214, 214, 214, 214, 214, 215, 212, 83, + 486, 486, 486, 83, 83, 83, 486, 486, 83, 486, + 486, 103, 83, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 84, 221, 486, 222, 222, + 222, 222, 222, 222, 222, 221, 486, 223, 223, 223, + 223, 223, 223, 223, 221, 486, 224, 224, 224, 224, + 224, 225, 222, 114, 486, 486, 115, 114, 114, 114, + 115, 115, 114, 486, 486, 127, 114, 486, 486, 486, + 486, 486, 486, 486, 486, 115, 115, 486, 486, 486, + + 486, 486, 486, 486, 486, 486, 486, 486, 486, 84, + 228, 486, 229, 229, 229, 229, 229, 229, 229, 228, + 486, 230, 230, 230, 230, 230, 230, 230, 228, 486, + 231, 231, 231, 231, 231, 232, 229, 133, 486, 486, + 486, 133, 133, 133, 486, 486, 133, 486, 486, 146, + 133, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 134, 236, 486, 237, 237, 237, 237, + 237, 237, 237, 236, 486, 238, 238, 238, 238, 238, + 238, 238, 236, 486, 239, 239, 239, 239, 239, 240, + + 237, 151, 486, 486, 486, 151, 151, 151, 486, 486, + 151, 486, 486, 171, 151, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 152, 83, 486, + 243, 244, 245, 243, 243, 243, 243, 211, 486, 212, + 212, 212, 212, 212, 212, 212, 211, 486, 212, 212, + 212, 212, 212, 212, 212, 211, 486, 212, 212, 212, + 212, 212, 212, 83, 114, 486, 250, 251, 252, 250, + 250, 250, 250, 221, 486, 222, 222, 222, 222, 222, + 222, 222, 221, 486, 222, 222, 222, 222, 222, 222, + + 222, 221, 486, 222, 222, 222, 222, 222, 222, 114, + 133, 486, 255, 256, 257, 255, 255, 255, 255, 228, + 486, 229, 229, 229, 229, 229, 229, 229, 228, 486, + 229, 229, 229, 229, 229, 229, 229, 228, 486, 229, + 229, 229, 229, 229, 229, 133, 151, 486, 260, 261, + 262, 260, 260, 260, 260, 236, 486, 237, 237, 237, + 237, 237, 237, 237, 236, 486, 237, 237, 237, 237, + 237, 237, 237, 236, 486, 237, 237, 237, 237, 237, + 237, 151, 265, 486, 266, 266, 266, 266, 266, 266, + 266, 265, 486, 267, 267, 267, 267, 267, 267, 267, + + 265, 486, 268, 268, 268, 268, 268, 269, 266, 274, + 486, 275, 275, 275, 275, 275, 275, 275, 274, 486, + 276, 276, 276, 276, 276, 276, 276, 274, 486, 277, + 277, 277, 277, 277, 278, 275, 281, 486, 282, 282, + 282, 282, 282, 282, 282, 281, 486, 283, 283, 283, + 283, 283, 283, 283, 281, 486, 284, 284, 284, 284, + 284, 285, 282, 288, 486, 289, 289, 289, 289, 289, + 289, 289, 288, 486, 290, 290, 290, 290, 290, 290, + 290, 288, 486, 291, 291, 291, 291, 291, 292, 289, + 83, 486, 295, 296, 297, 295, 295, 295, 295, 265, + + 486, 266, 266, 266, 266, 266, 266, 266, 265, 486, + 266, 266, 266, 266, 266, 266, 266, 265, 486, 266, + 266, 266, 266, 266, 266, 83, 114, 486, 303, 304, + 305, 303, 303, 303, 303, 274, 486, 275, 275, 275, + 275, 275, 275, 275, 274, 486, 275, 275, 275, 275, + 275, 275, 275, 274, 486, 275, 275, 275, 275, 275, + 275, 114, 133, 486, 307, 308, 309, 307, 307, 307, + 307, 281, 486, 282, 282, 282, 282, 282, 282, 282, + 281, 486, 282, 282, 282, 282, 282, 282, 282, 281, + 486, 282, 282, 282, 282, 282, 282, 133, 151, 486, + + 311, 312, 313, 311, 311, 311, 311, 288, 486, 289, + 289, 289, 289, 289, 289, 289, 288, 486, 289, 289, + 289, 289, 289, 289, 289, 288, 486, 289, 289, 289, + 289, 289, 289, 151, 83, 315, 316, 316, 316, 316, + 316, 316, 316, 114, 323, 324, 324, 324, 324, 324, + 324, 324, 114, 323, 325, 325, 325, 325, 325, 325, + 325, 114, 323, 326, 326, 326, 326, 326, 327, 324, + 133, 329, 330, 330, 330, 330, 330, 330, 330, 151, + 335, 336, 336, 336, 336, 336, 336, 336, 83, 341, + 342, 343, 344, 341, 341, 341, 114, 486, 349, 350, + + 351, 352, 349, 349, 349, 114, 323, 324, 324, 324, + 324, 324, 324, 324, 114, 323, 324, 324, 324, 324, + 324, 324, 324, 114, 323, 324, 324, 324, 324, 324, + 324, 114, 133, 353, 354, 355, 356, 353, 353, 353, + 151, 357, 358, 359, 360, 357, 357, 357, 361, 486, + 362, 362, 362, 362, 362, 362, 362, 361, 486, 363, + 363, 363, 363, 363, 363, 363, 361, 486, 364, 364, + 364, 364, 364, 365, 366, 361, 486, 367, 367, 367, + 362, 362, 362, 362, 369, 486, 370, 370, 370, 370, + 370, 370, 370, 369, 486, 371, 371, 371, 371, 371, + + 371, 371, 369, 486, 372, 372, 372, 372, 372, 373, + 374, 369, 486, 375, 375, 375, 370, 370, 370, 370, + 376, 486, 377, 377, 377, 377, 377, 377, 377, 376, + 486, 378, 378, 378, 378, 378, 378, 378, 376, 486, + 379, 379, 379, 379, 379, 380, 381, 376, 486, 382, + 382, 382, 377, 377, 377, 377, 383, 486, 384, 384, + 384, 384, 384, 384, 384, 383, 486, 385, 385, 385, + 385, 385, 385, 385, 383, 486, 386, 386, 386, 386, + 386, 387, 388, 383, 486, 389, 389, 389, 384, 384, + 384, 384, 83, 486, 390, 391, 392, 390, 390, 390, + + 390, 361, 486, 366, 366, 366, 366, 366, 366, 366, + 361, 486, 366, 366, 366, 366, 366, 366, 366, 361, + 486, 366, 366, 366, 366, 366, 366, 393, 361, 486, + 393, 393, 393, 393, 393, 393, 393, 114, 486, 395, + 396, 397, 395, 395, 395, 395, 369, 486, 374, 374, + 374, 374, 374, 374, 374, 369, 486, 374, 374, 374, + 374, 374, 374, 374, 369, 486, 374, 374, 374, 374, + 374, 374, 398, 369, 486, 398, 398, 398, 398, 398, + 398, 398, 369, 486, 399, 399, 399, 114, 114, 114, + 114, 133, 486, 400, 401, 402, 400, 400, 400, 400, + + 376, 486, 381, 381, 381, 381, 381, 381, 381, 376, + 486, 381, 381, 381, 381, 381, 381, 381, 376, 486, + 381, 381, 381, 381, 381, 381, 403, 376, 486, 403, + 403, 403, 403, 403, 403, 403, 151, 486, 405, 406, + 407, 405, 405, 405, 405, 383, 486, 388, 388, 388, + 388, 388, 388, 388, 383, 486, 388, 388, 388, 388, + 388, 388, 388, 383, 486, 388, 388, 388, 388, 388, + 388, 408, 383, 486, 408, 408, 408, 408, 408, 408, + 408, 410, 486, 411, 411, 411, 411, 411, 411, 411, + 410, 486, 412, 412, 412, 412, 412, 412, 412, 410, + + 486, 413, 413, 413, 413, 413, 414, 411, 83, 486, + 393, 393, 393, 393, 393, 393, 393, 415, 486, 416, + 416, 416, 416, 416, 416, 416, 415, 486, 417, 417, + 417, 417, 417, 417, 417, 415, 486, 418, 418, 418, + 418, 418, 419, 416, 114, 486, 398, 398, 398, 398, + 398, 398, 398, 114, 486, 399, 399, 399, 114, 114, + 114, 114, 420, 486, 421, 421, 421, 421, 421, 421, + 421, 420, 486, 422, 422, 422, 422, 422, 422, 422, + 420, 486, 423, 423, 423, 423, 423, 424, 421, 133, + 486, 403, 403, 403, 403, 403, 403, 403, 425, 486, + + 426, 426, 426, 426, 426, 426, 426, 425, 486, 427, + 427, 427, 427, 427, 427, 427, 425, 486, 428, 428, + 428, 428, 428, 429, 426, 151, 486, 408, 408, 408, + 408, 408, 408, 408, 430, 431, 432, 430, 430, 430, + 430, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 84, 410, 486, 411, + 411, 411, 411, 411, 411, 411, 410, 486, 411, 411, + 411, 411, 411, 411, 411, 410, 486, 411, 411, 411, + 411, 411, 411, 83, 114, 486, 433, 434, 435, 433, + 433, 433, 433, 415, 486, 416, 416, 416, 416, 416, + + 416, 416, 415, 486, 416, 416, 416, 416, 416, 416, + 416, 415, 486, 416, 416, 416, 416, 416, 416, 114, + 436, 437, 438, 436, 436, 436, 436, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 134, 420, 486, 421, 421, 421, 421, 421, + 421, 421, 420, 486, 421, 421, 421, 421, 421, 421, + 421, 420, 486, 421, 421, 421, 421, 421, 421, 133, + 439, 440, 441, 439, 439, 439, 439, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 152, 425, 486, 426, 426, 426, 426, 426, + + 426, 426, 425, 486, 426, 426, 426, 426, 426, 426, + 426, 425, 486, 426, 426, 426, 426, 426, 426, 151, + 442, 486, 443, 443, 443, 443, 443, 443, 443, 442, + 486, 444, 444, 444, 444, 444, 444, 444, 442, 486, + 445, 445, 445, 445, 445, 446, 443, 447, 486, 448, + 448, 448, 448, 448, 448, 448, 447, 486, 449, 449, + 449, 449, 449, 449, 449, 447, 486, 450, 450, 450, + 450, 450, 451, 448, 452, 486, 453, 453, 453, 453, + 453, 453, 453, 452, 486, 454, 454, 454, 454, 454, + 454, 454, 452, 486, 455, 455, 455, 455, 455, 456, + + 453, 457, 486, 458, 458, 458, 458, 458, 458, 458, + 457, 486, 459, 459, 459, 459, 459, 459, 459, 457, + 486, 460, 460, 460, 460, 460, 461, 458, 83, 486, + 462, 463, 464, 462, 462, 462, 462, 442, 486, 443, + 443, 443, 443, 443, 443, 443, 442, 486, 443, 443, + 443, 443, 443, 443, 443, 442, 486, 443, 443, 443, + 443, 443, 443, 83, 114, 486, 465, 466, 467, 465, + 465, 465, 465, 447, 486, 448, 448, 448, 448, 448, + 448, 448, 447, 486, 448, 448, 448, 448, 448, 448, + 448, 447, 486, 448, 448, 448, 448, 448, 448, 114, + + 133, 486, 468, 469, 470, 468, 468, 468, 468, 452, + 486, 453, 453, 453, 453, 453, 453, 453, 452, 486, + 453, 453, 453, 453, 453, 453, 453, 452, 486, 453, + 453, 453, 453, 453, 453, 133, 151, 486, 471, 472, + 473, 471, 471, 471, 471, 457, 486, 458, 458, 458, + 458, 458, 458, 458, 457, 486, 458, 458, 458, 458, + 458, 458, 458, 457, 486, 458, 458, 458, 458, 458, + 458, 151, 83, 486, 474, 474, 474, 474, 474, 474, + 474, 83, 486, 462, 462, 462, 462, 462, 462, 462, + 83, 486, 475, 475, 475, 475, 475, 476, 474, 114, + + 486, 477, 477, 477, 477, 477, 477, 477, 114, 486, + 465, 465, 465, 465, 465, 465, 465, 114, 486, 478, + 478, 478, 478, 478, 479, 477, 133, 486, 480, 480, + 480, 480, 480, 480, 480, 133, 486, 468, 468, 468, + 468, 468, 468, 468, 133, 486, 481, 481, 481, 481, + 481, 482, 480, 151, 486, 483, 483, 483, 483, 483, + 483, 483, 151, 486, 471, 471, 471, 471, 471, 471, + 471, 151, 486, 484, 484, 484, 484, 484, 485, 483, + 474, 474, 474, 474, 474, 474, 474, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + + 486, 486, 84, 114, 486, 477, 477, 477, 477, 477, + 477, 477, 114, 486, 477, 477, 477, 477, 477, 477, + 114, 480, 480, 480, 480, 480, 480, 480, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 134, 483, 483, 483, 483, 483, 483, + 483, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 152, 83, 486, 486, + 83, 486, 83, 87, 87, 87, 87, 87, 87, 91, + 486, 486, 91, 486, 91, 93, 486, 486, 93, 486, + 93, 95, 486, 95, 95, 486, 95, 114, 486, 114, + + 114, 114, 114, 115, 486, 115, 115, 115, 117, 486, + 117, 117, 117, 117, 118, 486, 118, 118, 118, 118, + 119, 486, 119, 119, 119, 119, 133, 486, 486, 133, + 486, 133, 135, 486, 486, 135, 486, 135, 137, 486, + 486, 137, 486, 137, 139, 486, 139, 139, 486, 139, + 151, 486, 486, 151, 486, 151, 153, 153, 153, 153, + 153, 153, 156, 156, 156, 156, 156, 156, 160, 486, + 486, 160, 486, 160, 162, 486, 486, 162, 486, 162, + 164, 486, 164, 164, 486, 164, 88, 88, 88, 88, + 88, 88, 96, 486, 96, 179, 486, 486, 179, 486, + + 179, 120, 486, 120, 120, 120, 191, 486, 191, 191, + 191, 191, 197, 486, 486, 197, 486, 197, 154, 154, + 154, 154, 154, 154, 156, 156, 156, 156, 156, 156, + 157, 157, 157, 157, 157, 157, 160, 486, 486, 160, + 486, 160, 162, 486, 486, 162, 486, 162, 164, 486, + 164, 164, 486, 164, 170, 486, 486, 170, 486, 170, + 208, 486, 486, 208, 486, 208, 9, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486 } ; -static yyconst short int yy_chk[3404] = +static yyconst short int yy_chk[3720] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 29, 29, 310, 2, 310, + 1, 1, 2, 2, 2, 182, 182, 322, 2, 322, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -911,357 +946,391 @@ static yyconst short int yy_chk[3404] = 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, - 82, 82, 442, 14, 14, 20, 14, 20, 36, 20, - 20, 39, 36, 36, 258, 39, 39, 14, 14, 14, - 104, 104, 128, 128, 432, 20, 117, 36, 36, 410, - 39, 39, 14, 21, 258, 21, 21, 21, 21, 21, - 21, 21, 22, 117, 22, 22, 22, 22, 22, 22, - 22, 23, 400, 23, 23, 23, 23, 23, 23, 23, - 26, 267, 366, 41, 26, 26, 26, 41, 41, 26, - 351, 26, 26, 26, 26, 26, 26, 26, 26, 26, - - 26, 267, 41, 41, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 335, 26, 26, 26, + 98, 107, 107, 14, 14, 20, 14, 20, 154, 20, + 20, 23, 23, 23, 23, 23, 23, 14, 14, 14, + 120, 483, 480, 474, 98, 20, 46, 46, 46, 46, + 46, 46, 14, 202, 235, 347, 107, 120, 20, 21, + 154, 21, 21, 21, 21, 21, 21, 21, 22, 22, + 22, 22, 22, 22, 22, 45, 45, 45, 45, 45, + 45, 45, 339, 21, 26, 202, 235, 271, 26, 26, + 26, 333, 321, 26, 319, 26, 26, 26, 26, 26, + + 26, 26, 26, 26, 26, 131, 131, 271, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 30, 30, 30, 30, 30, 30, 30, 383, - 383, 383, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 43, 30, 43, 274, 43, 43, - 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, - 46, 46, 46, 43, 43, 44, 318, 274, 111, 44, - 44, 309, 111, 111, 44, 304, 44, 44, 44, 44, - 44, 44, 44, 301, 44, 44, 49, 111, 111, 49, - - 49, 49, 49, 49, 49, 49, 297, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 293, 49, 49, + 26, 26, 26, 26, 26, 26, 29, 29, 29, 314, + 131, 310, 29, 29, 306, 29, 280, 302, 36, 301, + 298, 293, 36, 36, 286, 279, 29, 29, 29, 30, + 30, 30, 30, 30, 30, 30, 280, 36, 36, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 36, 30, 39, 141, 41, 287, 39, 39, 41, + 41, 43, 294, 43, 114, 43, 43, 273, 114, 114, + + 272, 270, 39, 39, 41, 41, 287, 166, 141, 212, + 43, 43, 294, 114, 114, 59, 39, 59, 41, 59, + 59, 150, 150, 229, 43, 44, 299, 114, 264, 44, + 44, 166, 263, 212, 44, 59, 44, 44, 44, 44, + 44, 44, 44, 259, 44, 44, 299, 229, 59, 61, + 61, 61, 61, 61, 61, 61, 150, 316, 44, 49, + 258, 254, 49, 49, 49, 49, 49, 49, 49, 253, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 316, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 281, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, - 289, 59, 281, 59, 114, 59, 59, 52, 114, 114, - 115, 286, 67, 67, 115, 115, 288, 285, 52, 52, - 52, 59, 308, 114, 114, 280, 67, 273, 67, 115, - 115, 286, 269, 52, 53, 53, 53, 53, 53, 53, - 53, 67, 308, 266, 53, 53, 53, 53, 53, 53, - - 53, 53, 53, 53, 53, 53, 260, 53, 60, 259, - 60, 60, 60, 60, 60, 60, 60, 61, 257, 61, - 61, 61, 61, 61, 61, 61, 62, 253, 62, 62, - 62, 62, 62, 62, 62, 63, 152, 152, 152, 63, - 63, 63, 71, 71, 63, 152, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 71, 152, 71, 63, + 49, 52, 52, 52, 320, 237, 249, 52, 52, 266, + 52, 62, 62, 62, 62, 62, 62, 248, 247, 246, + 282, 52, 52, 52, 320, 328, 74, 242, 74, 237, + 74, 74, 241, 266, 234, 233, 52, 53, 53, 53, + 53, 53, 53, 53, 282, 328, 74, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 74, + 53, 60, 227, 60, 60, 60, 60, 60, 60, 60, + 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, + 77, 77, 77, 226, 220, 60, 63, 219, 218, 334, + + 63, 63, 63, 217, 216, 63, 210, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 175, 175, 334, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 71, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 66, 66, 66, - 66, 66, 66, 66, 251, 316, 322, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 250, - 66, 69, 69, 69, 69, 316, 322, 69, 69, 328, - 69, 73, 73, 333, 74, 246, 74, 245, 74, 74, - 241, 69, 69, 69, 240, 73, 236, 73, 235, 328, - 234, 233, 74, 333, 74, 229, 69, 70, 70, 70, - 73, 228, 222, 70, 70, 221, 70, 74, 76, 76, - 76, 76, 76, 76, 76, 217, 215, 70, 70, 70, - 77, 77, 77, 77, 77, 77, 356, 214, 356, 356, - 356, 208, 70, 75, 75, 207, 144, 144, 75, 206, - 75, 75, 75, 75, 75, 75, 75, 75, 205, 75, - - 144, 204, 144, 92, 200, 92, 198, 92, 92, 393, - 393, 393, 75, 79, 197, 144, 189, 79, 79, 79, - 79, 79, 79, 92, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 188, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 83, 83, 83, 83, 83, - 83, 83, 183, 182, 177, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 176, 83, 87, - 87, 87, 153, 153, 175, 87, 87, 174, 87, 94, - - 94, 94, 94, 94, 94, 94, 153, 173, 153, 87, - 87, 87, 98, 172, 98, 98, 98, 98, 98, 98, - 171, 153, 166, 165, 87, 96, 150, 96, 96, 96, - 96, 96, 96, 96, 97, 147, 97, 97, 97, 97, - 97, 97, 97, 100, 154, 154, 466, 100, 100, 100, - 466, 466, 100, 143, 142, 100, 100, 116, 154, 116, - 154, 116, 116, 135, 127, 466, 466, 133, 126, 133, - 119, 133, 133, 154, 119, 119, 116, 116, 118, 119, - 118, 118, 118, 118, 118, 118, 118, 133, 122, 119, - 119, 124, 113, 110, 124, 124, 124, 124, 124, 124, - - 124, 109, 108, 124, 124, 134, 134, 134, 134, 134, - 134, 134, 107, 124, 124, 136, 106, 136, 136, 136, - 136, 136, 136, 136, 137, 103, 137, 137, 137, 137, - 137, 137, 137, 138, 102, 138, 138, 138, 138, 138, - 138, 140, 95, 88, 86, 140, 140, 140, 85, 81, - 140, 80, 65, 140, 140, 146, 146, 146, 146, 64, - 51, 146, 146, 50, 146, 148, 148, 148, 148, 38, - 35, 156, 34, 156, 148, 146, 146, 146, 371, 33, - 371, 371, 371, 155, 32, 155, 148, 155, 155, 156, - 146, 149, 149, 149, 158, 158, 31, 149, 149, 158, - - 149, 155, 28, 155, 156, 27, 13, 11, 158, 9, - 158, 149, 149, 149, 0, 203, 155, 203, 203, 203, - 203, 203, 203, 158, 0, 0, 149, 157, 157, 0, - 0, 0, 0, 0, 157, 157, 157, 157, 157, 157, - 157, 157, 170, 157, 0, 0, 170, 170, 170, 0, - 0, 170, 0, 0, 170, 170, 157, 159, 0, 159, - 159, 159, 159, 159, 159, 159, 160, 0, 160, 160, - 160, 160, 160, 160, 160, 161, 0, 161, 161, 161, - 161, 161, 161, 161, 162, 190, 190, 0, 162, 162, - 162, 162, 162, 162, 0, 0, 162, 162, 0, 190, - - 0, 190, 0, 0, 187, 162, 0, 162, 187, 187, - 187, 0, 0, 187, 190, 0, 187, 187, 0, 0, - 162, 163, 0, 0, 0, 163, 163, 163, 163, 163, - 163, 0, 0, 163, 163, 199, 199, 199, 199, 199, - 199, 199, 163, 0, 163, 216, 216, 216, 216, 216, - 216, 216, 0, 0, 0, 0, 0, 163, 164, 0, - 0, 0, 164, 164, 164, 164, 164, 164, 0, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 0, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 167, 0, 167, 167, 167, 167, 167, 167, 167, 168, - 0, 168, 168, 168, 168, 168, 168, 168, 169, 0, - 169, 169, 169, 169, 169, 169, 169, 178, 0, 178, - 178, 178, 178, 178, 178, 178, 179, 0, 179, 179, - 179, 179, 179, 179, 179, 180, 0, 180, 180, 180, - 180, 180, 180, 180, 181, 0, 0, 181, 181, 181, - 181, 181, 181, 181, 0, 0, 181, 181, 220, 0, - 220, 220, 220, 220, 220, 220, 181, 181, 184, 0, - 184, 184, 184, 184, 184, 184, 184, 185, 0, 185, - - 185, 185, 185, 185, 185, 185, 186, 0, 186, 186, - 186, 186, 186, 186, 186, 193, 0, 193, 193, 193, - 193, 193, 193, 193, 194, 0, 194, 194, 194, 194, - 194, 194, 194, 195, 0, 195, 195, 195, 195, 195, - 195, 195, 196, 0, 472, 472, 196, 196, 196, 196, - 196, 196, 210, 0, 196, 196, 210, 210, 472, 0, - 472, 210, 0, 196, 0, 196, 0, 0, 0, 0, - 0, 210, 210, 472, 0, 0, 0, 0, 196, 201, - 0, 201, 201, 201, 201, 201, 201, 201, 202, 0, - 202, 202, 202, 202, 202, 202, 202, 209, 0, 209, - - 209, 209, 209, 209, 209, 209, 211, 0, 211, 211, - 211, 211, 211, 211, 211, 212, 0, 212, 212, 212, - 212, 212, 212, 212, 213, 0, 213, 213, 213, 213, - 213, 213, 213, 218, 0, 218, 218, 218, 218, 218, - 218, 218, 219, 0, 219, 219, 219, 219, 219, 219, - 219, 223, 223, 223, 223, 223, 223, 223, 224, 224, - 0, 0, 0, 224, 252, 252, 252, 252, 252, 252, - 252, 0, 224, 256, 224, 256, 256, 256, 256, 256, - 256, 465, 465, 465, 465, 465, 465, 224, 225, 0, - 225, 225, 225, 225, 225, 225, 225, 226, 0, 226, - - 226, 226, 226, 226, 226, 226, 227, 0, 227, 227, - 227, 227, 227, 227, 227, 230, 0, 230, 230, 230, - 230, 230, 230, 230, 231, 0, 231, 231, 231, 231, - 231, 231, 231, 232, 0, 232, 232, 232, 232, 232, - 232, 232, 237, 0, 237, 237, 237, 237, 237, 237, - 237, 238, 0, 238, 238, 238, 238, 238, 238, 238, - 239, 0, 239, 239, 239, 239, 239, 239, 239, 242, - 0, 242, 242, 242, 242, 242, 242, 242, 243, 0, - 243, 243, 243, 243, 243, 243, 243, 244, 0, 244, - 244, 244, 244, 244, 244, 244, 247, 0, 247, 247, - - 247, 247, 247, 247, 247, 248, 0, 248, 248, 248, - 248, 248, 248, 248, 249, 0, 249, 249, 249, 249, - 249, 249, 249, 254, 0, 254, 254, 254, 254, 254, - 254, 254, 255, 0, 255, 255, 255, 255, 255, 255, - 255, 261, 0, 261, 261, 261, 261, 261, 261, 261, - 262, 0, 0, 0, 262, 262, 0, 0, 0, 262, - 268, 268, 268, 268, 268, 268, 268, 0, 0, 262, - 262, 263, 0, 263, 263, 263, 263, 263, 263, 263, - 264, 0, 264, 264, 264, 264, 264, 264, 264, 265, - 0, 265, 265, 265, 265, 265, 265, 265, 270, 0, - - 270, 270, 270, 270, 270, 270, 270, 271, 0, 271, - 271, 271, 271, 271, 271, 271, 272, 0, 272, 272, - 272, 272, 272, 272, 275, 275, 275, 275, 275, 275, - 275, 276, 276, 0, 0, 0, 276, 303, 303, 303, - 303, 303, 303, 303, 0, 276, 0, 276, 307, 307, - 307, 307, 307, 307, 307, 0, 0, 0, 0, 0, - 276, 277, 0, 277, 277, 277, 277, 277, 277, 277, - 278, 0, 278, 278, 278, 278, 278, 278, 278, 279, - 0, 279, 279, 279, 279, 279, 279, 279, 282, 282, - 282, 282, 282, 282, 282, 282, 283, 283, 283, 283, - - 283, 283, 283, 283, 284, 284, 284, 284, 284, 284, - 284, 284, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 294, - 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, - 295, 295, 295, 295, 295, 296, 296, 296, 296, 296, - 296, 296, 296, 298, 298, 298, 298, 298, 298, 298, - 298, 299, 299, 299, 299, 299, 299, 299, 299, 300, - 300, 300, 300, 300, 300, 300, 300, 305, 305, 305, - 305, 305, 305, 305, 305, 306, 306, 306, 306, 306, - - 306, 306, 306, 311, 0, 311, 311, 311, 311, 311, - 311, 311, 312, 0, 0, 0, 312, 312, 0, 0, - 0, 0, 312, 317, 317, 317, 317, 317, 317, 317, - 0, 312, 312, 313, 313, 313, 313, 313, 313, 313, - 313, 313, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 315, 315, 315, 315, 315, 315, 315, 315, 315, - 319, 319, 319, 319, 319, 319, 319, 319, 320, 320, - 320, 320, 320, 320, 320, 320, 321, 321, 321, 321, - 321, 321, 321, 323, 323, 323, 323, 323, 323, 323, - 324, 324, 0, 0, 0, 0, 324, 350, 350, 350, - - 350, 350, 350, 350, 324, 0, 324, 365, 365, 365, - 365, 365, 365, 365, 0, 0, 0, 0, 0, 324, - 325, 325, 325, 325, 325, 325, 325, 325, 326, 326, - 326, 326, 326, 326, 326, 326, 327, 327, 327, 327, - 327, 327, 327, 327, 329, 0, 329, 329, 329, 329, - 329, 329, 329, 330, 0, 330, 330, 330, 330, 330, - 330, 330, 331, 0, 331, 331, 331, 331, 331, 331, - 331, 332, 0, 332, 332, 332, 332, 332, 332, 332, - 337, 0, 337, 337, 337, 337, 337, 337, 337, 338, - 0, 338, 338, 338, 338, 338, 338, 338, 339, 0, - - 339, 339, 339, 339, 339, 339, 339, 340, 0, 340, - 340, 340, 340, 340, 340, 340, 341, 0, 341, 341, - 341, 341, 341, 341, 341, 342, 0, 342, 342, 342, - 342, 342, 342, 342, 343, 0, 343, 343, 343, 343, - 343, 343, 343, 344, 0, 344, 344, 344, 344, 344, - 344, 344, 345, 0, 345, 345, 345, 345, 345, 345, - 345, 346, 0, 346, 346, 346, 346, 346, 346, 346, - 347, 0, 347, 347, 347, 347, 347, 347, 347, 348, - 0, 348, 348, 348, 348, 348, 348, 348, 352, 0, - 352, 352, 352, 352, 352, 352, 352, 353, 0, 353, - - 353, 353, 353, 353, 353, 353, 354, 0, 354, 354, - 354, 354, 354, 354, 354, 355, 0, 355, 355, 355, - 355, 355, 355, 355, 358, 0, 358, 358, 358, 358, - 358, 358, 358, 359, 0, 0, 0, 359, 359, 0, - 0, 0, 359, 372, 372, 372, 372, 372, 372, 372, - 0, 0, 359, 359, 360, 0, 360, 360, 360, 360, - 360, 360, 360, 361, 0, 361, 361, 361, 361, 361, - 361, 361, 362, 0, 362, 362, 362, 362, 362, 362, - 362, 363, 0, 363, 363, 363, 363, 363, 363, 363, - 364, 0, 364, 364, 364, 364, 364, 364, 364, 367, - - 0, 367, 367, 367, 367, 367, 367, 367, 368, 0, - 368, 368, 368, 368, 368, 368, 368, 369, 0, 369, - 369, 369, 369, 369, 369, 369, 370, 0, 370, 370, - 370, 370, 370, 370, 370, 373, 373, 0, 0, 0, - 373, 382, 382, 382, 382, 382, 382, 382, 0, 373, - 0, 373, 392, 392, 392, 392, 392, 392, 392, 0, - 0, 0, 0, 0, 373, 374, 0, 374, 374, 374, - 374, 374, 374, 374, 375, 0, 375, 375, 375, 375, - 375, 375, 375, 376, 0, 376, 376, 376, 376, 376, - 376, 376, 377, 0, 377, 377, 377, 377, 377, 377, - - 377, 378, 0, 378, 378, 378, 378, 378, 378, 378, - 379, 0, 379, 379, 379, 379, 379, 379, 379, 380, - 0, 380, 380, 380, 380, 380, 380, 380, 381, 0, - 381, 381, 381, 381, 381, 381, 381, 384, 0, 384, - 384, 384, 384, 384, 384, 384, 385, 0, 385, 385, - 385, 385, 385, 385, 385, 386, 0, 386, 386, 386, - 386, 386, 386, 386, 387, 0, 387, 387, 387, 387, - 387, 387, 387, 388, 0, 388, 388, 388, 388, 388, - 388, 388, 389, 0, 389, 389, 389, 389, 389, 389, - 389, 390, 0, 390, 390, 390, 390, 390, 390, 390, - - 391, 0, 391, 391, 391, 391, 391, 391, 391, 394, - 0, 394, 394, 394, 394, 394, 394, 394, 395, 0, - 395, 395, 395, 395, 395, 395, 395, 396, 0, 396, - 396, 396, 396, 396, 396, 396, 397, 397, 397, 397, - 397, 397, 397, 398, 398, 398, 398, 398, 398, 398, - 399, 399, 399, 399, 399, 399, 399, 401, 0, 401, - 401, 401, 401, 401, 401, 401, 402, 0, 402, 402, - 402, 402, 402, 402, 402, 403, 0, 403, 403, 403, - 403, 403, 403, 404, 0, 404, 404, 404, 404, 404, - 404, 404, 405, 0, 0, 0, 405, 405, 0, 0, - - 0, 405, 409, 409, 409, 409, 409, 409, 409, 0, - 0, 405, 405, 406, 0, 406, 406, 406, 406, 406, - 406, 406, 407, 0, 407, 407, 407, 407, 407, 407, - 407, 408, 0, 408, 408, 408, 408, 408, 408, 408, - 411, 0, 411, 411, 411, 411, 411, 411, 411, 412, - 0, 412, 412, 412, 412, 412, 412, 412, 413, 0, - 413, 413, 413, 413, 413, 413, 414, 414, 414, 414, - 414, 414, 414, 415, 415, 0, 0, 0, 415, 431, - 431, 431, 431, 431, 431, 431, 0, 415, 435, 415, - 435, 435, 435, 435, 435, 435, 471, 471, 471, 471, - - 471, 471, 415, 416, 0, 416, 416, 416, 416, 416, - 416, 416, 417, 0, 417, 417, 417, 417, 417, 417, - 417, 418, 0, 418, 418, 418, 418, 418, 418, 418, - 419, 0, 419, 419, 419, 419, 419, 419, 419, 420, - 0, 420, 420, 420, 420, 420, 420, 420, 421, 0, - 421, 421, 421, 421, 421, 421, 421, 422, 0, 422, - 422, 422, 422, 422, 422, 422, 423, 0, 423, 423, - 423, 423, 423, 423, 423, 424, 0, 424, 424, 424, - 424, 424, 424, 424, 425, 0, 425, 425, 425, 425, - 425, 425, 425, 426, 0, 426, 426, 426, 426, 426, - - 426, 426, 427, 0, 427, 427, 427, 427, 427, 427, - 427, 428, 0, 428, 428, 428, 428, 428, 428, 428, - 429, 0, 429, 429, 429, 429, 429, 429, 429, 430, - 0, 430, 430, 430, 430, 430, 430, 430, 433, 0, - 433, 433, 433, 433, 433, 433, 433, 434, 0, 434, - 434, 434, 434, 434, 434, 434, 436, 0, 436, 436, - 436, 436, 436, 436, 436, 437, 0, 0, 0, 437, - 437, 0, 0, 0, 437, 441, 441, 441, 441, 441, - 441, 441, 0, 0, 437, 437, 438, 0, 438, 438, - 438, 438, 438, 438, 438, 439, 0, 439, 439, 439, - - 439, 439, 439, 439, 440, 0, 440, 440, 440, 440, - 440, 440, 440, 443, 0, 443, 443, 443, 443, 443, - 443, 443, 444, 0, 444, 444, 444, 444, 444, 444, - 444, 445, 0, 445, 445, 445, 445, 445, 445, 446, - 446, 446, 446, 446, 446, 446, 447, 447, 0, 0, - 0, 447, 451, 451, 451, 451, 451, 451, 451, 0, - 447, 0, 447, 452, 452, 452, 452, 452, 452, 452, - 0, 0, 0, 0, 0, 447, 448, 0, 448, 448, - 448, 448, 448, 448, 448, 449, 0, 449, 449, 449, - 449, 449, 449, 449, 450, 0, 450, 450, 450, 450, - - 450, 450, 450, 453, 453, 453, 453, 453, 453, 453, - 454, 0, 454, 454, 454, 454, 454, 454, 454, 455, - 0, 455, 455, 455, 455, 455, 455, 455, 456, 0, - 456, 456, 456, 456, 456, 456, 456, 457, 457, 457, - 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, - 458, 459, 459, 459, 459, 459, 459, 459, 460, 460, - 460, 460, 460, 460, 460, 461, 461, 461, 461, 461, - 461, 461, 462, 462, 462, 462, 462, 462, 462, 464, - 464, 464, 464, 464, 464, 464, 467, 0, 467, 467, - 467, 467, 467, 467, 467, 468, 0, 468, 468, 468, - - 468, 468, 468, 468, 470, 470, 470, 470, 470, 470, - 470, 473, 473, 473, 473, 473, 473, 473, 474, 474, - 474, 474, 474, 474, 474, 476, 0, 0, 476, 477, - 477, 477, 477, 477, 477, 477, 478, 0, 0, 478, - 479, 0, 0, 479, 480, 0, 480, 480, 480, 481, - 0, 481, 481, 481, 0, 481, 482, 0, 482, 482, - 482, 0, 482, 483, 0, 483, 483, 483, 0, 483, - 484, 0, 484, 484, 484, 0, 484, 485, 0, 485, - 485, 485, 0, 485, 486, 0, 0, 486, 487, 0, - 0, 487, 488, 0, 0, 488, 489, 0, 489, 489, - - 489, 490, 0, 0, 490, 490, 490, 491, 491, 491, - 491, 491, 491, 491, 492, 492, 492, 492, 492, 492, - 492, 493, 0, 0, 493, 493, 493, 494, 0, 0, - 494, 494, 494, 495, 0, 0, 495, 495, 495, 496, - 0, 496, 496, 496, 496, 497, 497, 497, 497, 497, - 497, 497, 498, 0, 498, 0, 498, 499, 0, 0, - 499, 500, 0, 500, 500, 500, 0, 500, 501, 0, - 501, 501, 501, 0, 501, 502, 0, 0, 502, 503, - 503, 503, 503, 503, 503, 503, 504, 504, 504, 504, - 504, 504, 504, 505, 505, 505, 505, 505, 505, 505, - - 506, 506, 506, 506, 506, 506, 506, 507, 507, 507, - 507, 507, 507, 507, 508, 0, 0, 508, 508, 508, - 509, 0, 0, 509, 509, 509, 510, 0, 510, 510, - 510, 510, 511, 0, 511, 511, 511, 511, 512, 0, - 0, 512, 512, 512, 513, 0, 0, 513, 513, 513, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - - 475, 475, 475 + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 66, 66, + 66, 209, 175, 204, 66, 66, 330, 66, 340, 200, + 95, 199, 95, 198, 95, 95, 193, 192, 66, 66, + 66, 67, 67, 67, 67, 67, 67, 67, 340, 330, + 95, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 95, 67, 70, 70, 70, 70, 345, + + 289, 70, 70, 117, 70, 187, 118, 117, 117, 222, + 118, 118, 336, 222, 222, 70, 70, 70, 222, 345, + 362, 186, 117, 117, 289, 118, 118, 185, 222, 222, + 70, 71, 71, 71, 184, 336, 117, 71, 71, 118, + 71, 377, 222, 119, 362, 119, 183, 119, 119, 181, + 180, 71, 71, 71, 122, 122, 122, 122, 122, 122, + 122, 174, 119, 119, 384, 377, 71, 75, 173, 75, + 75, 75, 75, 75, 75, 75, 119, 394, 394, 394, + 139, 169, 139, 162, 139, 139, 160, 159, 384, 157, + 411, 75, 78, 404, 404, 404, 78, 78, 78, 394, + + 139, 78, 151, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 139, 411, 404, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 81, 81, 81, 149, 148, 144, + 81, 81, 137, 81, 135, 133, 164, 132, 164, 130, + 164, 164, 129, 125, 81, 81, 81, 82, 82, 82, + 82, 82, 82, 82, 116, 113, 164, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 164, + 82, 84, 112, 84, 111, 110, 109, 84, 84, 275, + + 84, 106, 105, 275, 275, 101, 93, 421, 275, 426, + 91, 84, 84, 84, 87, 87, 87, 90, 275, 275, + 87, 87, 88, 87, 296, 296, 296, 296, 296, 296, + 296, 421, 275, 426, 87, 87, 87, 297, 297, 297, + 297, 297, 297, 309, 309, 309, 309, 309, 309, 87, + 92, 86, 92, 443, 453, 85, 92, 92, 83, 92, + 308, 308, 308, 308, 308, 308, 308, 458, 80, 79, + 92, 92, 92, 94, 73, 94, 72, 443, 453, 94, + 94, 68, 94, 312, 312, 312, 312, 312, 312, 312, + 65, 458, 64, 94, 94, 94, 97, 97, 97, 97, + + 97, 97, 97, 313, 313, 313, 313, 313, 313, 367, + 324, 367, 367, 367, 324, 324, 58, 370, 97, 103, + 324, 370, 370, 103, 103, 103, 370, 56, 103, 324, + 324, 103, 103, 367, 477, 55, 370, 370, 477, 477, + 54, 51, 382, 324, 382, 382, 382, 50, 38, 35, + 370, 34, 33, 477, 477, 103, 121, 32, 121, 121, + 121, 121, 121, 121, 121, 127, 382, 477, 127, 127, + 127, 127, 127, 127, 127, 31, 28, 127, 127, 389, + 27, 389, 389, 389, 409, 409, 409, 127, 127, 18, + 476, 476, 476, 476, 476, 476, 15, 13, 11, 10, + + 9, 127, 134, 389, 134, 0, 409, 0, 134, 134, + 416, 134, 476, 0, 416, 416, 0, 0, 0, 416, + 0, 0, 134, 134, 134, 136, 0, 136, 0, 416, + 416, 136, 136, 448, 136, 0, 0, 448, 448, 0, + 0, 0, 448, 416, 0, 136, 136, 136, 138, 0, + 138, 0, 448, 448, 138, 138, 0, 138, 482, 482, + 482, 482, 482, 482, 0, 0, 448, 0, 138, 138, + 138, 140, 140, 140, 140, 140, 140, 140, 0, 0, + 482, 0, 485, 485, 485, 485, 485, 485, 0, 0, + 0, 0, 0, 140, 146, 0, 0, 0, 146, 146, + + 146, 0, 0, 146, 485, 0, 146, 146, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 152, 0, 152, 0, 0, 0, 152, 152, 0, + 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 152, 152, 153, 153, 153, 153, 0, 0, + 153, 153, 0, 153, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 153, 153, 153, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, + 155, 0, 155, 155, 0, 0, 155, 155, 0, 155, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 155, 155, 155, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 155, 156, 156, 156, 0, + 0, 0, 156, 156, 0, 156, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 156, 156, 156, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 156, 161, 0, 161, 0, 0, 0, 161, 161, + 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 161, 161, 161, 163, 0, 163, 0, 0, + 0, 163, 163, 0, 163, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 163, 163, 163, 165, 165, + 165, 165, 165, 165, 165, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 165, 167, 0, 167, 167, 167, 167, 167, 167, 167, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 167, 170, 0, 0, 0, + 170, 170, 170, 0, 0, 170, 0, 0, 170, 170, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 170, 171, 0, 0, 0, 171, 171, 171, + + 0, 0, 171, 0, 0, 171, 171, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, + 172, 0, 0, 0, 172, 172, 172, 0, 0, 172, + 0, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 0, 0, 0, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 176, 0, 176, 176, 176, 176, 176, 176, + 176, 177, 0, 177, 177, 177, 177, 177, 177, 177, + + 178, 0, 178, 178, 178, 178, 178, 178, 178, 179, + 0, 0, 0, 179, 179, 179, 0, 0, 179, 0, + 0, 179, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 179, 188, 0, 188, 188, + 188, 188, 188, 188, 188, 189, 0, 189, 189, 189, + 189, 189, 189, 189, 190, 0, 190, 190, 190, 190, + 190, 190, 190, 191, 0, 0, 191, 191, 191, 191, + 191, 191, 191, 0, 0, 191, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 191, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 194, 0, 194, 194, 194, 194, 194, 194, 194, 195, + 0, 195, 195, 195, 195, 195, 195, 195, 196, 0, + 196, 196, 196, 196, 196, 196, 196, 197, 0, 0, + 0, 197, 197, 197, 0, 0, 197, 0, 0, 197, + 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 197, 205, 0, 205, 205, 205, 205, + 205, 205, 205, 206, 0, 206, 206, 206, 206, 206, + 206, 206, 207, 0, 207, 207, 207, 207, 207, 207, + + 207, 208, 0, 0, 0, 208, 208, 208, 0, 0, + 208, 0, 0, 208, 208, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 208, 211, 0, + 211, 211, 211, 211, 211, 211, 211, 213, 0, 213, + 213, 213, 213, 213, 213, 213, 214, 0, 214, 214, + 214, 214, 214, 214, 214, 215, 0, 215, 215, 215, + 215, 215, 215, 215, 221, 0, 221, 221, 221, 221, + 221, 221, 221, 223, 0, 223, 223, 223, 223, 223, + 223, 223, 224, 0, 224, 224, 224, 224, 224, 224, + + 224, 225, 0, 225, 225, 225, 225, 225, 225, 225, + 228, 0, 228, 228, 228, 228, 228, 228, 228, 230, + 0, 230, 230, 230, 230, 230, 230, 230, 231, 0, + 231, 231, 231, 231, 231, 231, 231, 232, 0, 232, + 232, 232, 232, 232, 232, 232, 236, 0, 236, 236, + 236, 236, 236, 236, 236, 238, 0, 238, 238, 238, + 238, 238, 238, 238, 239, 0, 239, 239, 239, 239, + 239, 239, 239, 240, 0, 240, 240, 240, 240, 240, + 240, 240, 243, 0, 243, 243, 243, 243, 243, 243, + 243, 244, 0, 244, 244, 244, 244, 244, 244, 244, + + 245, 0, 245, 245, 245, 245, 245, 245, 245, 250, + 0, 250, 250, 250, 250, 250, 250, 250, 251, 0, + 251, 251, 251, 251, 251, 251, 251, 252, 0, 252, + 252, 252, 252, 252, 252, 252, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 256, 0, 256, 256, 256, + 256, 256, 256, 256, 257, 0, 257, 257, 257, 257, + 257, 257, 257, 260, 0, 260, 260, 260, 260, 260, + 260, 260, 261, 0, 261, 261, 261, 261, 261, 261, + 261, 262, 0, 262, 262, 262, 262, 262, 262, 262, + 265, 0, 265, 265, 265, 265, 265, 265, 265, 267, + + 0, 267, 267, 267, 267, 267, 267, 267, 268, 0, + 268, 268, 268, 268, 268, 268, 268, 269, 0, 269, + 269, 269, 269, 269, 269, 269, 274, 0, 274, 274, + 274, 274, 274, 274, 274, 276, 0, 276, 276, 276, + 276, 276, 276, 276, 277, 0, 277, 277, 277, 277, + 277, 277, 277, 278, 0, 278, 278, 278, 278, 278, + 278, 278, 281, 0, 281, 281, 281, 281, 281, 281, + 281, 283, 0, 283, 283, 283, 283, 283, 283, 283, + 284, 0, 284, 284, 284, 284, 284, 284, 284, 285, + 0, 285, 285, 285, 285, 285, 285, 285, 288, 0, + + 288, 288, 288, 288, 288, 288, 288, 290, 0, 290, + 290, 290, 290, 290, 290, 290, 291, 0, 291, 291, + 291, 291, 291, 291, 291, 292, 0, 292, 292, 292, + 292, 292, 292, 292, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 303, 303, 303, 303, 303, 303, 303, + 303, 303, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 315, 315, + 315, 315, 315, 315, 315, 315, 323, 0, 323, 323, + + 323, 323, 323, 323, 323, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 329, 329, 329, 329, 329, 329, 329, 329, + 335, 335, 335, 335, 335, 335, 335, 335, 341, 0, + 341, 341, 341, 341, 341, 341, 341, 342, 0, 342, + 342, 342, 342, 342, 342, 342, 343, 0, 343, 343, + 343, 343, 343, 343, 343, 344, 0, 344, 344, 344, + 344, 344, 344, 344, 349, 0, 349, 349, 349, 349, + 349, 349, 349, 350, 0, 350, 350, 350, 350, 350, + + 350, 350, 351, 0, 351, 351, 351, 351, 351, 351, + 351, 352, 0, 352, 352, 352, 352, 352, 352, 352, + 353, 0, 353, 353, 353, 353, 353, 353, 353, 354, + 0, 354, 354, 354, 354, 354, 354, 354, 355, 0, + 355, 355, 355, 355, 355, 355, 355, 356, 0, 356, + 356, 356, 356, 356, 356, 356, 357, 0, 357, 357, + 357, 357, 357, 357, 357, 358, 0, 358, 358, 358, + 358, 358, 358, 358, 359, 0, 359, 359, 359, 359, + 359, 359, 359, 360, 0, 360, 360, 360, 360, 360, + 360, 360, 361, 0, 361, 361, 361, 361, 361, 361, + + 361, 363, 0, 363, 363, 363, 363, 363, 363, 363, + 364, 0, 364, 364, 364, 364, 364, 364, 364, 365, + 0, 365, 365, 365, 365, 365, 365, 365, 366, 0, + 366, 366, 366, 366, 366, 366, 366, 369, 0, 369, + 369, 369, 369, 369, 369, 369, 371, 0, 371, 371, + 371, 371, 371, 371, 371, 372, 0, 372, 372, 372, + 372, 372, 372, 372, 373, 0, 373, 373, 373, 373, + 373, 373, 373, 374, 0, 374, 374, 374, 374, 374, + 374, 374, 375, 0, 375, 375, 375, 375, 375, 375, + 375, 376, 0, 376, 376, 376, 376, 376, 376, 376, + + 378, 0, 378, 378, 378, 378, 378, 378, 378, 379, + 0, 379, 379, 379, 379, 379, 379, 379, 380, 0, + 380, 380, 380, 380, 380, 380, 380, 381, 0, 381, + 381, 381, 381, 381, 381, 381, 383, 0, 383, 383, + 383, 383, 383, 383, 383, 385, 0, 385, 385, 385, + 385, 385, 385, 385, 386, 0, 386, 386, 386, 386, + 386, 386, 386, 387, 0, 387, 387, 387, 387, 387, + 387, 387, 388, 0, 388, 388, 388, 388, 388, 388, + 388, 390, 0, 390, 390, 390, 390, 390, 390, 390, + 391, 0, 391, 391, 391, 391, 391, 391, 391, 392, + + 0, 392, 392, 392, 392, 392, 392, 392, 393, 0, + 393, 393, 393, 393, 393, 393, 393, 395, 0, 395, + 395, 395, 395, 395, 395, 395, 396, 0, 396, 396, + 396, 396, 396, 396, 396, 397, 0, 397, 397, 397, + 397, 397, 397, 397, 398, 0, 398, 398, 398, 398, + 398, 398, 398, 399, 0, 399, 399, 399, 399, 399, + 399, 399, 400, 0, 400, 400, 400, 400, 400, 400, + 400, 401, 0, 401, 401, 401, 401, 401, 401, 401, + 402, 0, 402, 402, 402, 402, 402, 402, 402, 403, + 0, 403, 403, 403, 403, 403, 403, 403, 405, 0, + + 405, 405, 405, 405, 405, 405, 405, 406, 0, 406, + 406, 406, 406, 406, 406, 406, 407, 0, 407, 407, + 407, 407, 407, 407, 407, 408, 0, 408, 408, 408, + 408, 408, 408, 408, 410, 410, 410, 410, 410, 410, + 410, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 410, 412, 0, 412, + 412, 412, 412, 412, 412, 412, 413, 0, 413, 413, + 413, 413, 413, 413, 413, 414, 0, 414, 414, 414, + 414, 414, 414, 414, 415, 0, 415, 415, 415, 415, + 415, 415, 415, 417, 0, 417, 417, 417, 417, 417, + + 417, 417, 418, 0, 418, 418, 418, 418, 418, 418, + 418, 419, 0, 419, 419, 419, 419, 419, 419, 419, + 420, 420, 420, 420, 420, 420, 420, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 420, 422, 0, 422, 422, 422, 422, 422, + 422, 422, 423, 0, 423, 423, 423, 423, 423, 423, + 423, 424, 0, 424, 424, 424, 424, 424, 424, 424, + 425, 425, 425, 425, 425, 425, 425, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 425, 427, 0, 427, 427, 427, 427, 427, + + 427, 427, 428, 0, 428, 428, 428, 428, 428, 428, + 428, 429, 0, 429, 429, 429, 429, 429, 429, 429, + 430, 0, 430, 430, 430, 430, 430, 430, 430, 431, + 0, 431, 431, 431, 431, 431, 431, 431, 432, 0, + 432, 432, 432, 432, 432, 432, 432, 433, 0, 433, + 433, 433, 433, 433, 433, 433, 434, 0, 434, 434, + 434, 434, 434, 434, 434, 435, 0, 435, 435, 435, + 435, 435, 435, 435, 436, 0, 436, 436, 436, 436, + 436, 436, 436, 437, 0, 437, 437, 437, 437, 437, + 437, 437, 438, 0, 438, 438, 438, 438, 438, 438, + + 438, 439, 0, 439, 439, 439, 439, 439, 439, 439, + 440, 0, 440, 440, 440, 440, 440, 440, 440, 441, + 0, 441, 441, 441, 441, 441, 441, 441, 442, 0, + 442, 442, 442, 442, 442, 442, 442, 444, 0, 444, + 444, 444, 444, 444, 444, 444, 445, 0, 445, 445, + 445, 445, 445, 445, 445, 446, 0, 446, 446, 446, + 446, 446, 446, 446, 447, 0, 447, 447, 447, 447, + 447, 447, 447, 449, 0, 449, 449, 449, 449, 449, + 449, 449, 450, 0, 450, 450, 450, 450, 450, 450, + 450, 451, 0, 451, 451, 451, 451, 451, 451, 451, + + 452, 0, 452, 452, 452, 452, 452, 452, 452, 454, + 0, 454, 454, 454, 454, 454, 454, 454, 455, 0, + 455, 455, 455, 455, 455, 455, 455, 456, 0, 456, + 456, 456, 456, 456, 456, 456, 457, 0, 457, 457, + 457, 457, 457, 457, 457, 459, 0, 459, 459, 459, + 459, 459, 459, 459, 460, 0, 460, 460, 460, 460, + 460, 460, 460, 461, 0, 461, 461, 461, 461, 461, + 461, 461, 462, 0, 462, 462, 462, 462, 462, 462, + 462, 463, 0, 463, 463, 463, 463, 463, 463, 463, + 464, 0, 464, 464, 464, 464, 464, 464, 464, 465, + + 0, 465, 465, 465, 465, 465, 465, 465, 466, 0, + 466, 466, 466, 466, 466, 466, 466, 467, 0, 467, + 467, 467, 467, 467, 467, 467, 468, 0, 468, 468, + 468, 468, 468, 468, 468, 469, 0, 469, 469, 469, + 469, 469, 469, 469, 470, 0, 470, 470, 470, 470, + 470, 470, 470, 471, 0, 471, 471, 471, 471, 471, + 471, 471, 472, 0, 472, 472, 472, 472, 472, 472, + 472, 473, 0, 473, 473, 473, 473, 473, 473, 473, + 475, 475, 475, 475, 475, 475, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 475, 478, 0, 478, 478, 478, 478, 478, + 478, 478, 479, 0, 479, 479, 479, 479, 479, 479, + 479, 481, 481, 481, 481, 481, 481, 481, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 481, 484, 484, 484, 484, 484, 484, + 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 484, 487, 0, 0, + 487, 0, 487, 488, 488, 488, 488, 488, 488, 489, + 0, 0, 489, 0, 489, 490, 0, 0, 490, 0, + 490, 491, 0, 491, 491, 0, 491, 492, 0, 492, + + 492, 492, 492, 493, 0, 493, 493, 493, 494, 0, + 494, 494, 494, 494, 495, 0, 495, 495, 495, 495, + 496, 0, 496, 496, 496, 496, 497, 0, 0, 497, + 0, 497, 498, 0, 0, 498, 0, 498, 499, 0, + 0, 499, 0, 499, 500, 0, 500, 500, 0, 500, + 501, 0, 0, 501, 0, 501, 502, 502, 502, 502, + 502, 502, 503, 503, 503, 503, 503, 503, 504, 0, + 0, 504, 0, 504, 505, 0, 0, 505, 0, 505, + 506, 0, 506, 506, 0, 506, 507, 507, 507, 507, + 507, 507, 508, 0, 508, 509, 0, 0, 509, 0, + + 509, 510, 0, 510, 510, 510, 511, 0, 511, 511, + 511, 511, 512, 0, 0, 512, 0, 512, 513, 513, + 513, 513, 513, 513, 514, 514, 514, 514, 514, 514, + 515, 515, 515, 515, 515, 515, 516, 0, 0, 516, + 0, 516, 517, 0, 0, 517, 0, 517, 518, 0, + 518, 518, 0, 518, 519, 0, 0, 519, 0, 519, + 520, 0, 0, 520, 0, 520, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486 } ; static yy_state_type yy_last_accepting_state; @@ -1275,9 +1344,9 @@ static char *yy_last_accepting_cpos; #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "./parse.lex" +#line 1 "parse.lex" #define INITIAL 0 -#line 2 "./parse.lex" +#line 2 "parse.lex" /* * Copyright (c) 1996, 1998, 1999 Todd C. Miller * All rights reserved. @@ -1373,7 +1442,7 @@ extern void yyerror __P((char *)); #define GOTDEFS 3 -#line 1377 "lex.yy.c" +#line 1446 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1527,9 +1596,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 106 "./parse.lex" +#line 106 "parse.lex" -#line 1533 "lex.yy.c" +#line 1602 "lex.yy.c" if ( yy_init ) { @@ -1581,13 +1650,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 >= 476 ) + if ( yy_current_state >= 487 ) 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] != 3351 ); + while ( yy_base[yy_current_state] != 3667 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1615,14 +1684,14 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 107 "./parse.lex" +#line 107 "parse.lex" { /* throw away space/tabs */ sawspace = TRUE; /* but remember for fill_args */ } YY_BREAK case 2: YY_RULE_SETUP -#line 111 "./parse.lex" +#line 111 "parse.lex" { sawspace = TRUE; /* remember for fill_args */ ++sudolineno; @@ -1631,7 +1700,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 117 "./parse.lex" +#line 117 "parse.lex" { LEXTRACE("QUOTEDCHAR "); fill_args(yytext + 1, 1, sawspace); @@ -1640,9 +1709,8 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 123 "./parse.lex" +#line 123 "parse.lex" { - /* XXX - should allow " to be quoted */ LEXTRACE("WORD(1) "); fill(yytext + 1, yyleng - 2); return(WORD); @@ -1650,7 +1718,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 130 "./parse.lex" +#line 129 "parse.lex" { BEGIN INITIAL; ++sudolineno; @@ -1660,7 +1728,7 @@ YY_RULE_SETUP YY_BREAK case 6: YY_RULE_SETUP -#line 137 "./parse.lex" +#line 136 "parse.lex" { BEGIN INITIAL; unput(*yytext); @@ -1669,7 +1737,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 143 "./parse.lex" +#line 142 "parse.lex" { ++sudolineno; LEXTRACE("\n"); @@ -1678,7 +1746,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 149 "./parse.lex" +#line 148 "parse.lex" { ++sudolineno; LEXTRACE("\n"); @@ -1687,7 +1755,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 155 "./parse.lex" +#line 154 "parse.lex" { LEXTRACE("ARG "); fill_args(yytext, yyleng, sawspace); @@ -1696,7 +1764,7 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 161 "./parse.lex" +#line 160 "parse.lex" { LEXTRACE(", "); return(','); @@ -1704,7 +1772,7 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 166 "./parse.lex" +#line 165 "parse.lex" { if (yyleng % 2 == 1) return('!'); /* return '!' */ @@ -1712,7 +1780,7 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 171 "./parse.lex" +#line 170 "parse.lex" { LEXTRACE("= "); return('='); @@ -1720,7 +1788,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 176 "./parse.lex" +#line 175 "parse.lex" { LEXTRACE(": "); return(':'); @@ -1728,7 +1796,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 181 "./parse.lex" +#line 180 "parse.lex" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); @@ -1737,7 +1805,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 187 "./parse.lex" +#line 186 "parse.lex" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); @@ -1746,7 +1814,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 193 "./parse.lex" +#line 192 "parse.lex" { /* netgroup */ fill(yytext, yyleng); @@ -1756,7 +1824,7 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 200 "./parse.lex" +#line 199 "parse.lex" { /* UN*X group */ fill(yytext, yyleng); @@ -1766,7 +1834,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 207 "./parse.lex" +#line 206 "parse.lex" { fill(yytext, yyleng); LEXTRACE("NTWKADDR "); @@ -1775,7 +1843,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 213 "./parse.lex" +#line 212 "parse.lex" { fill(yytext, yyleng); LEXTRACE("NTWKADDR "); @@ -1784,7 +1852,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 219 "./parse.lex" +#line 218 "parse.lex" { fill(yytext, yyleng); LEXTRACE("FQHOST "); @@ -1793,7 +1861,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 225 "./parse.lex" +#line 224 "parse.lex" { BEGIN GOTRUNAS; LEXTRACE("RUNAS "); @@ -1802,7 +1870,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 231 "./parse.lex" +#line 230 "parse.lex" { /* Runas_Alias user can run command as or ALL */ if (strcmp(yytext, "ALL") == 0) { @@ -1817,7 +1885,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 243 "./parse.lex" +#line 242 "parse.lex" { /* username/uid that user can run command as */ fill(yytext, yyleng); @@ -1827,14 +1895,14 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 250 "./parse.lex" +#line 249 "parse.lex" { BEGIN INITIAL; } YY_BREAK case 25: YY_RULE_SETUP -#line 254 "./parse.lex" +#line 253 "parse.lex" { if (strcmp(yytext, "ALL") == 0) { LEXTRACE("ALL "); @@ -1848,9 +1916,8 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 265 "./parse.lex" +#line 264 "parse.lex" { - /* XXX - should allow [!=,] to be quoted */ LEXTRACE("WORD(3) "); fill(yytext, yyleng); return(WORD); @@ -1858,7 +1925,7 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 272 "./parse.lex" +#line 270 "parse.lex" { BEGIN GOTDEFS; if (yyleng == 9) { @@ -1878,7 +1945,7 @@ YY_RULE_SETUP YY_BREAK case 28: YY_RULE_SETUP -#line 289 "./parse.lex" +#line 287 "parse.lex" { fill(yytext, yyleng); if (*yytext == 'H') { @@ -1901,7 +1968,7 @@ YY_RULE_SETUP YY_BREAK case 29: YY_RULE_SETUP -#line 309 "./parse.lex" +#line 307 "parse.lex" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { @@ -1917,7 +1984,7 @@ YY_RULE_SETUP YY_BREAK case 30: YY_RULE_SETUP -#line 322 "./parse.lex" +#line 320 "parse.lex" { /* a word */ fill(yytext, yyleng); @@ -1927,7 +1994,7 @@ YY_RULE_SETUP YY_BREAK case 31: YY_RULE_SETUP -#line 329 "./parse.lex" +#line 327 "parse.lex" { LEXTRACE("ERROR "); return(ERROR); @@ -1935,10 +2002,10 @@ YY_RULE_SETUP YY_BREAK case 32: YY_RULE_SETUP -#line 334 "./parse.lex" +#line 332 "parse.lex" ECHO; YY_BREAK -#line 1942 "lex.yy.c" +#line 2009 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(GOTRUNAS): @@ -2234,7 +2301,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 >= 476 ) + if ( yy_current_state >= 487 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2269,11 +2336,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 >= 476 ) + if ( yy_current_state >= 487 ) 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 == 475); + yy_is_jam = (yy_current_state == 486); return yy_is_jam ? 0 : yy_current_state; } @@ -2829,20 +2896,27 @@ int main() return 0; } #endif -#line 334 "./parse.lex" +#line 332 "parse.lex" static void fill(s, len) char *s; int len; { + int i, j; + yylval.string = (char *) malloc(len + 1); if (yylval.string == NULL) yyerror("unable to allocate memory"); - /* copy the string and NULL-terminate it */ - (void) strncpy(yylval.string, s, len); - yylval.string[len] = '\0'; + /* Copy the string and collapse any escaped characters. */ + for (i = 0, j = 0; i < len; i++, j++) { + if (s[i] == '\\' && i != len - 1) + yylval.string[j] = s[++i]; + else + yylval.string[j] = s[i]; + } + yylval.string[j] = '\0'; } static void diff --git a/parse.lex b/parse.lex index 4b8917df0..cd5fdedf4 100644 --- a/parse.lex +++ b/parse.lex @@ -93,7 +93,7 @@ extern void yyerror __P((char *)); OCTET (1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]) DOTTEDQUAD {OCTET}(\.{OCTET}){3} HOSTNAME [[:alnum:]_-]+ -WORD [^@!=:,\(\) \t\n\\]+ +WORD ([^@!=:,\(\) \t\n\\]|\\[^\n])+ %e 4000 %p 6000 @@ -114,14 +114,13 @@ WORD [^@!=:,\(\) \t\n\\]+ LEXTRACE("\n\t"); } /* throw away EOL after \ */ -\\[@:\,=\\ \t] { +\\[:\,=\\ \t] { LEXTRACE("QUOTEDCHAR "); fill_args(yytext + 1, 1, sawspace); sawspace = FALSE; } -\"[^\"]+\" { - /* XXX - should allow " to be quoted */ +\"([^\"]|\\\")+\" { LEXTRACE("WORD(1) "); fill(yytext + 1, yyleng - 2); return(WORD); @@ -262,8 +261,7 @@ PASSWD[[:blank:]]*: { } } -[^ \t\n,=!]+ { - /* XXX - should allow [!=,] to be quoted */ +{WORD} { LEXTRACE("WORD(3) "); fill(yytext, yyleng); return(WORD); @@ -337,13 +335,20 @@ fill(s, len) char *s; int len; { + int i, j; + yylval.string = (char *) malloc(len + 1); if (yylval.string == NULL) yyerror("unable to allocate memory"); - /* copy the string and NULL-terminate it */ - (void) strncpy(yylval.string, s, len); - yylval.string[len] = '\0'; + /* Copy the string and collapse any escaped characters. */ + for (i = 0, j = 0; i < len; i++, j++) { + if (s[i] == '\\' && i != len - 1) + yylval.string[j] = s[++i]; + else + yylval.string[j] = s[i]; + } + yylval.string[j] = '\0'; } static void