From: Todd C. Miller Date: Wed, 12 Dec 2001 20:11:47 +0000 (+0000) Subject: regen parser X-Git-Tag: SUDO_1_6_4~124 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d684d37a95ad994f9bf2452134396d2a5e232d38;p=sudo regen parser --- diff --git a/lex.yy.c b/lex.yy.c index 50e3e535a..5e76f59d6 100644 --- a/lex.yy.c +++ b/lex.yy.c @@ -1,4 +1,4 @@ -/* $OpenBSD: flex.skl,v 1.5 1997/07/25 21:05:28 mickey Exp $ */ +/* $OpenBSD: flex.skl,v 1.6 2001/01/05 18:26:23 millert Exp $ */ /* A lexical scanner generated by flex */ @@ -285,62 +285,43 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 31 -#define YY_END_OF_BUFFER 32 -static yyconst short int yy_accept[476] = +#define YY_NUM_RULES 34 +#define YY_END_OF_BUFFER 35 +static yyconst short int yy_accept[293] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 29, - 1, 7, 11, 29, 29, 20, 30, 29, 10, 29, - 29, 29, 29, 13, 12, 24, 24, 24, 30, 24, - 24, 24, 24, 24, 9, 6, 9, 9, 9, 6, - 9, 9, 9, 9, 6, 6, 9, 9, 9, 30, - 22, 22, 22, 23, 22, 22, 22, 22, 22, 21, - 21, 21, 30, 25, 5, 25, 25, 25, 25, 25, - 25, 25, 25, 24, 24, 24, 30, 29, 0, 1, - 11, 29, 0, 8, 0, 17, 0, 16, 0, 28, - 28, 0, 29, 29, 29, 29, 29, 24, 24, 24, - - 29, 2, 29, 29, 29, 29, 29, 9, 9, 9, - 0, 9, 0, 9, 0, 9, 9, 9, 9, 9, - 9, 9, 9, 3, 3, 22, 0, 17, 0, 16, - 0, 22, 0, 22, 22, 22, 22, 22, 21, 21, - 21, 22, 25, 0, 25, 0, 0, 25, 0, 5, - 0, 17, 0, 16, 0, 25, 0, 25, 25, 25, - 25, 25, 24, 24, 24, 25, 29, 29, 29, 24, - 24, 0, 29, 29, 29, 29, 29, 17, 16, 9, - 9, 9, 9, 9, 22, 22, 22, 21, 21, 4, - 4, 0, 4, 25, 25, 25, 25, 24, 24, 29, - - 29, 29, 29, 29, 24, 24, 29, 29, 29, 9, - 9, 9, 9, 9, 9, 9, 22, 22, 22, 22, - 22, 21, 21, 4, 25, 25, 25, 25, 25, 24, - 24, 29, 29, 29, 24, 24, 29, 29, 9, 9, - 9, 9, 9, 22, 22, 22, 21, 21, 25, 25, - 25, 24, 24, 29, 29, 29, 29, 29, 24, 24, - 29, 29, 9, 9, 9, 9, 9, 9, 9, 22, - 22, 22, 22, 22, 21, 21, 25, 25, 25, 25, - 25, 24, 24, 18, 18, 18, 24, 0, 15, 29, - 29, 9, 9, 9, 9, 18, 18, 18, 21, 18, - - 18, 18, 24, 29, 18, 18, 18, 18, 24, 29, - 26, 9, 9, 9, 9, 9, 9, 22, 18, 18, - 18, 18, 21, 25, 18, 18, 18, 18, 24, 29, - 19, 19, 19, 0, 14, 29, 26, 9, 9, 9, - 9, 22, 19, 19, 19, 25, 19, 19, 19, 29, - 29, 19, 19, 19, 19, 19, 27, 9, 9, 9, - 9, 9, 9, 9, 22, 22, 19, 19, 19, 19, - 19, 25, 25, 19, 19, 19, 19, 19, 29, 29, - 29, 19, 19, 9, 9, 9, 9, 9, 22, 22, - 22, 19, 19, 25, 25, 25, 19, 19, 29, 29, - - 29, 29, 29, 9, 9, 9, 9, 9, 22, 22, - 22, 22, 22, 25, 25, 25, 25, 25, 29, 29, - 29, 9, 9, 9, 22, 22, 22, 25, 25, 25, - 29, 29, 29, 29, 29, 9, 9, 9, 9, 9, - 22, 22, 22, 22, 22, 25, 25, 25, 25, 25, - 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 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 24, 30, 29, 28, 33, 24, 19, + 33, 24, 25, 24, 24, 24, 24, 27, 26, 20, + 20, 20, 33, 20, 20, 20, 20, 20, 21, 33, + 21, 22, 21, 21, 21, 21, 21, 20, 20, 20, + 33, 1, 10, 9, 10, 9, 9, 33, 33, 2, + 24, 24, 3, 24, 4, 24, 0, 30, 28, 0, + 32, 16, 0, 15, 0, 23, 23, 0, 24, 24, + 24, 24, 24, 20, 20, 20, 24, 31, 24, 24, + 24, 24, 24, 21, 0, 21, 16, 0, 15, 0, + + 21, 0, 21, 21, 21, 21, 21, 20, 20, 20, + 21, 1, 10, 10, 8, 8, 0, 2, 24, 0, + 0, 5, 6, 0, 24, 24, 24, 20, 20, 24, + 24, 24, 24, 24, 21, 21, 21, 20, 20, 7, + 7, 0, 7, 24, 24, 24, 24, 24, 24, 20, + 20, 24, 24, 24, 21, 21, 21, 21, 21, 20, + 20, 7, 24, 24, 24, 20, 20, 24, 24, 21, + 21, 21, 20, 20, 24, 24, 24, 24, 24, 20, + 20, 24, 24, 21, 21, 21, 21, 21, 20, 20, + 17, 17, 17, 20, 0, 14, 24, 24, 17, 17, + + 17, 20, 24, 17, 17, 17, 17, 20, 24, 11, + 21, 17, 17, 17, 17, 20, 24, 18, 18, 18, + 0, 13, 24, 11, 21, 18, 18, 18, 24, 24, + 18, 18, 18, 18, 18, 12, 21, 21, 18, 18, + 18, 18, 18, 24, 24, 24, 18, 18, 21, 21, + 21, 18, 18, 24, 24, 24, 24, 24, 21, 21, + 21, 21, 21, 24, 24, 24, 21, 21, 21, 24, + 24, 24, 24, 24, 21, 21, 21, 21, 21, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 0 + } ; static yyconst int yy_ec[256] = @@ -349,16 +330,16 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 1, 1, 8, - 9, 1, 10, 11, 1, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 20, 20, 20, 21, 1, 1, - 22, 1, 1, 23, 24, 25, 26, 27, 25, 25, - 25, 28, 25, 25, 25, 25, 25, 29, 30, 31, - 25, 32, 33, 25, 34, 25, 35, 25, 25, 25, - 1, 36, 1, 1, 37, 1, 38, 1, 1, 39, - - 40, 41, 1, 1, 42, 1, 1, 43, 44, 45, - 46, 1, 1, 47, 48, 49, 50, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 9, 1, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 21, 21, 21, 22, 1, 1, + 23, 1, 1, 24, 25, 26, 27, 28, 26, 26, + 26, 29, 26, 26, 26, 26, 26, 30, 31, 32, + 26, 33, 34, 26, 35, 26, 36, 26, 26, 26, + 1, 37, 1, 1, 38, 1, 39, 40, 40, 41, + + 42, 43, 40, 40, 44, 40, 40, 45, 46, 47, + 48, 40, 40, 49, 50, 51, 52, 40, 40, 40, + 40, 40, 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, @@ -375,823 +356,516 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[51] = +static yyconst int yy_meta[53] = { 0, - 1, 2, 3, 4, 1, 5, 1, 4, 4, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 6, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + 1, 2, 2, 3, 1, 4, 1, 3, 3, 1, + 2, 5, 1, 1, 5, 5, 5, 5, 5, 5, + 5, 2, 4, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 6, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7 } ; -static yyconst short int yy_base[501] = +static yyconst short int yy_base[311] = { 0, - 0, 25, 59, 0, 109, 0, 159, 0, 1174, 1113, - 1146, 3053, 1135, 208, 1100, 3053, 3053, 1098, 3053, 214, - 239, 246, 224, 3053, 3053, 275, 1102, 1103, 324, 1082, - 1077, 1068, 1063, 1064, 0, 3053, 1106, 330, 332, 3053, - 261, 357, 366, 375, 3053, 0, 382, 1075, 1080, 418, - 1067, 1056, 1055, 3053, 1054, 419, 444, 254, 342, 480, - 1058, 1061, 529, 1048, 3053, 551, 586, 1047, 1046, 429, - 611, 429, 452, 647, 1051, 1046, 696, 1033, 718, 1066, - 1053, 740, 1053, 3053, 1052, 1014, 775, 1012, 797, 535, - 1011, 819, 829, 209, 0, 0, 1026, 0, 1003, 1000, - - 211, 3053, 179, 191, 198, 190, 18, 0, 1028, 557, - 0, 560, 0, 343, 599, 458, 1019, 854, 863, 599, - 0, 998, 995, 53, 3053, 985, 882, 977, 904, 976, - 926, 632, 948, 958, 213, 0, 0, 983, 0, 969, - 966, 327, 960, 993, 1015, 243, 400, 1050, 990, 3053, - 965, 931, 1085, 922, 1107, 702, 1129, 1139, 216, 0, - 0, 935, 0, 920, 912, 448, 1164, 1173, 1182, 912, - 896, 275, 197, 248, 295, 260, 301, 1201, 1236, 1261, - 1270, 1279, 900, 890, 1288, 1297, 1306, 890, 878, 874, - 3053, 417, 0, 902, 1315, 1324, 1333, 878, 868, 1340, - - 331, 1365, 1374, 1383, 859, 841, 314, 368, 443, 716, - 855, 1392, 1401, 738, 831, 803, 1410, 352, 1419, 1428, - 1437, 804, 794, 421, 1446, 534, 1455, 1464, 1473, 793, - 787, 1482, 1491, 1500, 783, 780, 465, 398, 1509, 1518, - 1527, 761, 745, 1536, 1545, 1554, 713, 718, 1563, 1572, - 1581, 691, 688, 1588, 545, 1613, 1622, 1631, 679, 481, - 499, 498, 750, 700, 1640, 1649, 773, 635, 546, 1658, - 563, 1667, 1676, 1685, 615, 582, 1694, 564, 1703, 1712, - 1721, 614, 583, 1729, 795, 817, 617, 622, 3053, 446, - 550, 1753, 1761, 1769, 607, 1778, 836, 843, 579, 1787, - - 880, 902, 565, 1794, 599, 0, 0, 571, 630, 394, - 680, 924, 564, 1818, 1826, 947, 635, 1834, 606, 0, - 0, 543, 637, 1842, 633, 0, 0, 529, 700, 1851, - 1860, 1869, 1878, 707, 3053, 597, 3053, 1887, 1896, 1905, - 1914, 1923, 1932, 1941, 1950, 1959, 1968, 1977, 1986, 1993, - 566, 2018, 2027, 2036, 2045, 759, 509, 965, 524, 2054, - 2063, 2072, 2081, 766, 2090, 701, 2099, 2108, 2117, 2126, - 788, 2135, 711, 2144, 2153, 2162, 2171, 873, 2180, 2189, - 2198, 2207, 917, 2216, 2225, 2234, 972, 744, 2243, 2252, - 2261, 2270, 991, 2279, 2288, 2297, 2306, 994, 2313, 781, - - 2338, 2347, 2356, 1025, 491, 2365, 2374, 1048, 2381, 827, - 2406, 2415, 2424, 2431, 910, 2456, 2465, 2474, 2483, 2492, - 2501, 2510, 2519, 2528, 2537, 2546, 2555, 2564, 2573, 2582, - 2591, 986, 2600, 2609, 2618, 1060, 419, 2627, 2636, 1083, - 2645, 999, 2654, 2663, 2672, 2681, 1013, 2690, 2699, 2708, - 2717, 2726, 2735, 1105, 1127, 1146, 2744, 2753, 2762, 2771, - 2780, 2789, 334, 2796, 1199, 0, 1153, 1211, 326, 2819, - 1234, 306, 2842, 1247, 3053, 2878, 2885, 2892, 2899, 2906, - 2913, 2919, 2926, 2933, 2940, 2947, 2954, 2961, 2968, 2975, - 2982, 2989, 2996, 3003, 3010, 3017, 3024, 3031, 3038, 3045 - + 0, 26, 61, 0, 112, 113, 120, 156, 192, 243, + 294, 330, 599, 557, 591, 1848, 588, 580, 543, 1848, + 1848, 541, 1848, 124, 355, 119, 134, 1848, 1848, 380, + 545, 546, 417, 524, 527, 514, 508, 507, 518, 0, + 516, 1848, 512, 160, 429, 155, 170, 454, 516, 521, + 491, 542, 0, 1848, 539, 0, 1848, 380, 54, 0, + 514, 93, 1848, 104, 1848, 505, 550, 539, 536, 536, + 1848, 498, 573, 497, 596, 306, 494, 619, 629, 143, + 0, 0, 505, 0, 472, 467, 144, 1848, 108, 140, + 154, 145, 163, 459, 665, 0, 454, 688, 431, 711, + + 320, 734, 744, 186, 0, 0, 444, 0, 432, 429, + 211, 460, 0, 457, 163, 1848, 199, 0, 780, 213, + 214, 1848, 1848, 204, 805, 814, 823, 434, 409, 88, + 21, 170, 172, 171, 832, 841, 850, 399, 388, 351, + 1848, 217, 0, 382, 857, 215, 882, 891, 900, 350, + 341, 187, 216, 166, 909, 242, 918, 927, 936, 292, + 289, 264, 945, 954, 963, 289, 292, 233, 219, 972, + 981, 990, 285, 284, 997, 300, 1022, 1031, 1040, 275, + 255, 222, 223, 1049, 308, 1058, 1067, 1076, 272, 305, + 1084, 343, 331, 250, 363, 1848, 228, 225, 1109, 414, + + 436, 248, 1116, 341, 0, 0, 252, 367, 224, 357, + 1140, 390, 0, 0, 250, 435, 1149, 1158, 1167, 1176, + 436, 1848, 272, 1848, 1185, 1194, 1203, 1212, 1219, 343, + 1244, 1253, 1262, 1271, 490, 229, 1280, 353, 1289, 1298, + 1307, 1316, 495, 1325, 1334, 1343, 1352, 461, 1361, 1370, + 1379, 1388, 513, 1395, 423, 1420, 1429, 1438, 1445, 496, + 1470, 1479, 1488, 1497, 1506, 1515, 1524, 1533, 1542, 1551, + 508, 1560, 1569, 1578, 1587, 511, 1596, 1605, 1614, 1623, + 1632, 1641, 1650, 1659, 1668, 175, 1675, 548, 126, 1698, + 571, 1848, 1735, 1742, 1749, 1756, 1763, 1770, 1777, 1784, + + 1791, 139, 1798, 1805, 1812, 1819, 110, 1826, 1833, 1840 } ; -static yyconst short int yy_def[501] = +static yyconst short int yy_def[311] = { 0, - 475, 1, 475, 3, 475, 5, 475, 7, 475, 476, - 475, 475, 475, 477, 478, 475, 475, 479, 475, 480, - 476, 21, 21, 475, 475, 475, 26, 26, 476, 26, - 26, 26, 26, 26, 481, 475, 481, 482, 483, 475, - 484, 481, 481, 481, 475, 481, 481, 47, 47, 475, - 485, 485, 486, 475, 487, 488, 485, 57, 57, 475, - 60, 60, 485, 489, 475, 490, 491, 492, 493, 494, - 489, 71, 71, 475, 74, 74, 489, 476, 476, 475, - 475, 477, 495, 475, 477, 478, 478, 479, 479, 480, - 496, 476, 476, 476, 21, 21, 21, 26, 26, 26, - - 476, 475, 476, 476, 476, 476, 476, 481, 481, 482, - 497, 483, 498, 484, 475, 481, 481, 481, 481, 481, - 47, 47, 47, 475, 475, 485, 485, 486, 486, 487, - 487, 488, 485, 485, 485, 57, 57, 57, 60, 60, - 60, 485, 489, 489, 490, 499, 490, 491, 500, 475, - 491, 492, 492, 493, 493, 494, 489, 489, 489, 71, - 71, 71, 74, 74, 74, 489, 21, 21, 21, 26, - 26, 475, 476, 476, 476, 476, 476, 497, 498, 481, - 481, 481, 47, 47, 57, 57, 57, 60, 60, 489, - 475, 499, 145, 145, 71, 71, 71, 74, 74, 476, - - 476, 21, 21, 21, 26, 26, 476, 476, 476, 481, - 481, 481, 481, 481, 47, 47, 57, 485, 57, 57, - 57, 60, 60, 499, 71, 489, 71, 71, 71, 74, - 74, 21, 21, 21, 26, 26, 476, 476, 481, 481, - 481, 47, 47, 57, 57, 57, 60, 60, 71, 71, - 71, 74, 74, 476, 476, 21, 21, 21, 26, 26, - 476, 476, 481, 481, 481, 481, 481, 47, 47, 57, - 485, 57, 57, 57, 60, 60, 71, 489, 71, 71, - 71, 74, 74, 476, 284, 284, 26, 475, 475, 476, - 476, 481, 481, 481, 47, 57, 296, 296, 60, 71, - - 300, 300, 74, 476, 476, 284, 284, 284, 26, 476, - 476, 481, 481, 481, 481, 481, 47, 296, 485, 296, - 296, 296, 60, 300, 489, 300, 300, 300, 74, 21, - 21, 21, 21, 475, 475, 476, 475, 481, 481, 481, - 481, 57, 57, 57, 57, 71, 71, 71, 71, 476, - 476, 21, 21, 21, 21, 476, 476, 481, 481, 481, - 481, 481, 481, 481, 57, 485, 57, 57, 57, 57, - 485, 71, 489, 71, 71, 71, 71, 489, 21, 21, - 21, 21, 476, 481, 481, 481, 481, 481, 57, 57, - 57, 57, 485, 71, 71, 71, 71, 489, 476, 476, - - 21, 21, 21, 481, 481, 481, 481, 481, 485, 485, - 57, 57, 57, 489, 489, 71, 71, 71, 21, 21, - 21, 481, 481, 481, 57, 57, 57, 71, 71, 71, - 21, 476, 21, 21, 21, 481, 481, 481, 481, 481, - 57, 485, 57, 57, 57, 71, 489, 71, 71, 71, - 21, 21, 21, 481, 481, 481, 57, 57, 57, 71, - 71, 71, 476, 476, 476, 481, 481, 481, 485, 485, - 485, 489, 489, 489, 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 - + 292, 1, 292, 3, 1, 1, 293, 293, 294, 294, + 295, 295, 292, 296, 292, 292, 292, 297, 298, 292, + 292, 299, 292, 300, 296, 25, 25, 292, 292, 25, + 30, 30, 296, 30, 30, 30, 30, 30, 301, 302, + 303, 292, 304, 305, 301, 45, 45, 45, 48, 48, + 301, 292, 306, 292, 306, 306, 292, 292, 292, 307, + 308, 296, 292, 296, 292, 296, 296, 292, 292, 297, + 292, 298, 298, 299, 299, 300, 309, 296, 296, 296, + 25, 25, 25, 30, 30, 30, 296, 292, 296, 296, + 296, 296, 296, 301, 301, 302, 303, 303, 304, 304, + + 305, 301, 301, 301, 45, 45, 45, 48, 48, 48, + 301, 292, 306, 306, 292, 292, 292, 307, 308, 310, + 308, 292, 292, 292, 25, 25, 25, 30, 30, 296, + 296, 296, 296, 296, 45, 45, 45, 48, 48, 296, + 292, 310, 119, 119, 296, 296, 25, 25, 25, 30, + 30, 296, 296, 296, 45, 301, 45, 45, 45, 48, + 48, 310, 25, 25, 25, 30, 30, 296, 296, 45, + 45, 45, 48, 48, 296, 296, 25, 25, 25, 30, + 30, 296, 296, 45, 301, 45, 45, 45, 48, 48, + 296, 191, 191, 30, 292, 292, 296, 296, 45, 199, + + 199, 48, 296, 296, 191, 191, 191, 30, 296, 296, + 199, 301, 199, 199, 199, 48, 25, 25, 25, 25, + 292, 292, 296, 292, 45, 45, 45, 45, 296, 296, + 25, 25, 25, 25, 296, 296, 45, 301, 45, 45, + 45, 45, 301, 25, 25, 25, 25, 296, 45, 45, + 45, 45, 301, 296, 296, 25, 25, 25, 301, 301, + 45, 45, 45, 25, 25, 25, 45, 45, 45, 25, + 296, 25, 25, 25, 45, 301, 45, 45, 45, 25, + 25, 25, 45, 45, 45, 296, 296, 296, 301, 301, + 301, 0, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292 } ; -static yyconst short int yy_nxt[3104] = +static yyconst short int yy_nxt[1901] = { 0, - 10, 11, 12, 13, 10, 14, 15, 16, 17, 18, - 19, 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, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 30, 31, 32, 79, 172, 102, 33, 177, 34, 35, - 11, 36, 37, 35, 35, 38, 35, 35, 39, 40, - 35, 41, 42, 43, 44, 42, 42, 42, 42, 45, - 46, 35, 47, 47, 47, 47, 47, 48, 47, 49, - 47, 47, 47, 47, 50, 35, 35, 35, 35, 35, - - 35, 35, 35, 35, 35, 35, 35, 35, 35, 51, - 11, 12, 13, 51, 52, 53, 17, 54, 55, 19, - 51, 56, 57, 58, 59, 57, 57, 57, 57, 24, - 25, 17, 60, 60, 60, 60, 60, 61, 60, 62, - 60, 60, 60, 60, 63, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 64, - 11, 65, 13, 66, 67, 68, 17, 17, 69, 19, - 64, 70, 71, 72, 73, 71, 71, 71, 71, 24, - 25, 17, 74, 74, 74, 74, 74, 75, 74, 76, - 74, 74, 74, 74, 77, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 83, - 84, 83, 172, 102, 79, 83, 83, 91, 83, 78, - 93, 91, 91, 173, 134, 79, 79, 158, 83, 83, - 83, 174, 79, 79, 176, 207, 91, 96, 96, 96, - 96, 96, 97, 85, 79, 175, 79, 191, 127, 92, - 93, 144, 94, 94, 94, 94, 94, 94, 94, 95, - 95, 95, 95, 95, 95, 95, 108, 136, 136, 136, - 136, 136, 136, 136, 79, 78, 172, 102, 192, 78, - 78, 78, 108, 79, 78, 208, 78, 78, 98, 98, - 98, 98, 98, 98, 98, 79, 115, 209, 98, 98, - - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 79, 98, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 101, 102, 78, 172, 102, - 79, 78, 78, 108, 78, 108, 79, 108, 108, 108, - 108, 144, 200, 207, 78, 78, 78, 207, 108, 79, - 237, 108, 108, 108, 108, 137, 137, 137, 137, 137, - 138, 127, 127, 217, 108, 111, 79, 113, 116, 79, - 117, 117, 117, 117, 117, 117, 117, 116, 115, 118, - 118, 118, 118, 118, 118, 118, 116, 127, 119, 119, - 119, 119, 119, 120, 117, 121, 121, 121, 121, 121, - - 121, 121, 146, 79, 193, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 238, 121, 124, - 102, 224, 91, 125, 126, 191, 91, 91, 125, 79, - 436, 336, 91, 79, 143, 194, 91, 91, 125, 125, - 262, 91, 160, 160, 160, 160, 160, 160, 160, 172, - 102, 91, 192, 125, 133, 134, 192, 135, 135, 135, - 135, 135, 135, 135, 157, 161, 161, 161, 161, 161, - 162, 180, 181, 182, 180, 180, 180, 180, 79, 127, - 126, 79, 288, 144, 126, 126, 126, 310, 261, 126, - 207, 126, 126, 139, 139, 139, 139, 139, 139, 139, - - 79, 289, 404, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 127, 139, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 142, 102, 126, 79, 79, 358, 126, 126, 91, 126, - 78, 290, 91, 91, 79, 225, 291, 288, 143, 126, - 126, 126, 146, 146, 146, 143, 254, 91, 146, 146, - 108, 146, 126, 108, 108, 108, 289, 108, 108, 144, - 92, 146, 146, 146, 270, 277, 312, 350, 108, 108, - 79, 108, 108, 288, 288, 79, 147, 149, 150, 149, - 78, 329, 111, 149, 149, 113, 149, 311, 127, 144, - - 91, 79, 289, 289, 91, 323, 149, 149, 149, 91, - 116, 304, 117, 117, 117, 117, 117, 117, 318, 91, - 91, 151, 158, 288, 159, 159, 159, 159, 159, 159, - 159, 334, 79, 317, 79, 91, 334, 126, 334, 91, - 91, 127, 289, 309, 357, 324, 144, 143, 303, 299, - 335, 143, 143, 143, 91, 335, 143, 335, 143, 143, - 163, 163, 163, 163, 163, 163, 163, 133, 144, 295, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 144, 163, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 166, 102, 143, - - 337, 334, 337, 143, 143, 91, 143, 143, 334, 91, - 91, 263, 365, 287, 283, 79, 143, 143, 143, 78, - 335, 78, 372, 282, 91, 78, 78, 335, 78, 239, - 240, 241, 239, 239, 239, 239, 127, 157, 78, 78, - 78, 83, 84, 83, 276, 275, 144, 83, 83, 210, - 83, 211, 211, 211, 211, 211, 211, 388, 388, 388, - 83, 83, 83, 292, 293, 294, 292, 292, 292, 292, - 350, 269, 383, 383, 383, 85, 86, 358, 86, 388, - 388, 388, 86, 86, 263, 86, 264, 264, 264, 264, - 264, 264, 399, 268, 79, 86, 86, 86, 88, 365, - - 88, 393, 393, 393, 88, 88, 260, 88, 306, 306, - 306, 306, 306, 306, 306, 259, 79, 88, 88, 88, - 90, 253, 78, 127, 90, 252, 78, 78, 248, 90, - 307, 307, 307, 307, 307, 308, 247, 243, 409, 90, - 90, 78, 167, 168, 169, 167, 167, 167, 167, 320, - 320, 320, 320, 320, 320, 320, 321, 321, 321, 321, - 321, 322, 127, 242, 79, 116, 210, 117, 117, 117, - 117, 117, 117, 117, 116, 236, 117, 117, 117, 117, - 117, 117, 117, 126, 372, 126, 398, 398, 398, 126, - 126, 235, 126, 326, 326, 326, 326, 326, 326, 326, - - 231, 230, 126, 126, 126, 128, 193, 128, 144, 144, - 223, 128, 128, 222, 128, 327, 327, 327, 327, 327, - 328, 414, 216, 215, 128, 128, 128, 130, 206, 130, - 383, 383, 383, 130, 130, 205, 130, 338, 339, 340, - 341, 338, 338, 338, 199, 144, 130, 130, 130, 132, - 198, 126, 79, 132, 143, 126, 126, 155, 132, 312, - 313, 313, 313, 313, 313, 313, 153, 150, 132, 132, - 126, 185, 186, 187, 185, 185, 185, 185, 384, 385, - 386, 384, 384, 384, 384, 387, 387, 387, 387, 387, - 387, 387, 150, 127, 143, 144, 143, 431, 189, 188, - - 143, 143, 126, 143, 393, 393, 393, 398, 398, 398, - 441, 131, 129, 143, 143, 143, 146, 146, 146, 190, - 127, 79, 146, 146, 446, 146, 127, 184, 183, 144, - 116, 109, 171, 170, 127, 146, 146, 146, 422, 423, - 424, 422, 422, 422, 422, 78, 115, 89, 144, 87, - 147, 149, 150, 149, 84, 84, 81, 149, 149, 404, - 149, 405, 405, 405, 405, 405, 405, 80, 79, 165, - 149, 149, 149, 454, 455, 456, 454, 454, 454, 454, - 164, 155, 153, 144, 141, 151, 152, 140, 152, 131, - 129, 127, 152, 152, 436, 152, 437, 437, 437, 437, - - 437, 437, 127, 123, 122, 152, 152, 152, 154, 109, - 154, 107, 106, 105, 154, 154, 104, 154, 466, 466, - 466, 466, 466, 466, 466, 103, 100, 154, 154, 154, - 156, 99, 143, 89, 156, 87, 143, 143, 81, 156, - 454, 454, 454, 454, 454, 454, 454, 80, 79, 156, - 156, 143, 195, 196, 197, 195, 195, 195, 195, 467, - 467, 467, 467, 467, 468, 466, 466, 466, 466, 466, - 466, 466, 466, 475, 144, 200, 475, 201, 201, 201, - 201, 201, 201, 201, 200, 475, 202, 202, 202, 202, - 202, 202, 202, 200, 475, 203, 203, 203, 203, 203, - - 204, 201, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 463, 463, 463, 463, 463, 463, 475, 475, - 475, 475, 475, 475, 466, 466, 466, 466, 466, 466, - 475, 475, 475, 475, 79, 475, 111, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 469, 469, 469, - 469, 469, 469, 475, 475, 475, 475, 475, 475, 475, - 472, 472, 472, 472, 472, 472, 475, 475, 475, 127, - 475, 113, 210, 475, 211, 211, 211, 211, 211, 211, - 211, 210, 144, 212, 212, 212, 212, 212, 212, 212, - 210, 475, 213, 213, 213, 213, 213, 214, 211, 217, - - 475, 218, 218, 218, 218, 218, 218, 218, 217, 475, - 219, 219, 219, 219, 219, 219, 219, 217, 475, 220, - 220, 220, 220, 220, 221, 218, 225, 475, 226, 226, - 226, 226, 226, 226, 226, 225, 475, 227, 227, 227, - 227, 227, 227, 227, 225, 475, 228, 228, 228, 228, - 228, 229, 226, 232, 233, 234, 232, 232, 232, 232, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 79, 200, 475, 201, 201, - 201, 201, 201, 201, 201, 200, 475, 201, 201, 201, - 201, 201, 201, 201, 200, 475, 201, 201, 201, 201, - - 201, 201, 78, 210, 475, 211, 211, 211, 211, 211, - 211, 211, 210, 475, 211, 211, 211, 211, 211, 211, - 211, 126, 475, 244, 245, 246, 244, 244, 244, 244, - 217, 475, 218, 218, 218, 218, 218, 218, 218, 217, - 475, 218, 218, 218, 218, 218, 218, 218, 217, 475, - 218, 218, 218, 218, 218, 218, 126, 143, 475, 249, - 250, 251, 249, 249, 249, 249, 225, 475, 226, 226, - 226, 226, 226, 226, 226, 225, 475, 226, 226, 226, - 226, 226, 226, 226, 225, 475, 226, 226, 226, 226, - 226, 226, 143, 254, 475, 255, 255, 255, 255, 255, - - 255, 255, 254, 475, 256, 256, 256, 256, 256, 256, - 256, 254, 475, 257, 257, 257, 257, 257, 258, 255, - 263, 475, 264, 264, 264, 264, 264, 264, 264, 263, - 475, 265, 265, 265, 265, 265, 265, 265, 263, 475, - 266, 266, 266, 266, 266, 267, 264, 270, 475, 271, - 271, 271, 271, 271, 271, 271, 270, 475, 272, 272, - 272, 272, 272, 272, 272, 270, 475, 273, 273, 273, - 273, 273, 274, 271, 277, 475, 278, 278, 278, 278, - 278, 278, 278, 277, 475, 279, 279, 279, 279, 279, - 279, 279, 277, 475, 280, 280, 280, 280, 280, 281, - - 278, 284, 285, 286, 284, 284, 284, 284, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 79, 254, 475, 255, 255, 255, 255, - 255, 255, 255, 254, 475, 255, 255, 255, 255, 255, - 255, 255, 254, 475, 255, 255, 255, 255, 255, 255, - 78, 263, 475, 264, 264, 264, 264, 264, 264, 264, - 263, 475, 264, 264, 264, 264, 264, 264, 264, 126, - 475, 296, 297, 298, 296, 296, 296, 296, 270, 475, - 271, 271, 271, 271, 271, 271, 271, 270, 475, 271, - 271, 271, 271, 271, 271, 271, 270, 475, 271, 271, - - 271, 271, 271, 271, 126, 143, 475, 300, 301, 302, - 300, 300, 300, 300, 277, 475, 278, 278, 278, 278, - 278, 278, 278, 277, 475, 278, 278, 278, 278, 278, - 278, 278, 277, 475, 278, 278, 278, 278, 278, 278, - 143, 304, 305, 305, 305, 305, 305, 305, 305, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 79, 312, 313, 313, 313, 313, - 313, 313, 313, 312, 314, 314, 314, 314, 314, 314, - 314, 312, 315, 315, 315, 315, 315, 316, 313, 126, - 318, 319, 319, 319, 319, 319, 319, 319, 143, 324, - - 325, 325, 325, 325, 325, 325, 325, 330, 331, 332, - 333, 330, 330, 330, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 79, - 312, 313, 313, 313, 313, 313, 313, 313, 312, 313, - 313, 313, 313, 313, 313, 313, 126, 342, 343, 344, - 345, 342, 342, 342, 143, 346, 347, 348, 349, 346, - 346, 346, 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, 379, 380, 381, 379, - 379, 379, 379, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 79, 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, 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, 126, 475, 389, 390, 391, 389, 389, 389, 389, - 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, 143, 475, 394, 395, - 396, 394, 394, 394, 394, 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, 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, 78, 475, - 382, 382, 382, 382, 382, 382, 382, 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, 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, 126, 475, 392, 392, 392, 392, 392, 392, 392, - 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, 143, 475, 397, - 397, 397, 397, 397, 397, 397, 419, 420, 421, 419, - 419, 419, 419, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 79, 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, 78, 404, 475, 405, 405, - 405, 405, 405, 405, 405, 404, 475, 405, 405, 405, - 405, 405, 405, 405, 425, 426, 427, 425, 425, 425, - - 425, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 127, 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, 126, 428, 429, 430, 428, 428, 428, - 428, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 144, 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, 143, 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, 78, 475, 451, 452, 453, 451, 451, 451, - 451, 431, 475, 432, 432, 432, 432, 432, 432, 432, - 431, 475, 432, 432, 432, 432, 432, 432, 432, 431, - 475, 432, 432, 432, 432, 432, 432, 78, 436, 475, - 437, 437, 437, 437, 437, 437, 437, 436, 475, 437, - 437, 437, 437, 437, 437, 437, 126, 475, 457, 458, - 459, 457, 457, 457, 457, 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, 126, 143, 475, 460, 461, 462, 460, 460, 460, - - 460, 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, 143, 78, 475, - 463, 463, 463, 463, 463, 463, 463, 78, 475, 451, - 451, 451, 451, 451, 451, 451, 78, 475, 464, 464, - 464, 464, 464, 465, 463, 126, 475, 469, 469, 469, - 469, 469, 469, 469, 126, 475, 457, 457, 457, 457, - 457, 457, 457, 126, 475, 470, 470, 470, 470, 470, - 471, 469, 143, 475, 472, 472, 472, 472, 472, 472, - 472, 143, 475, 460, 460, 460, 460, 460, 460, 460, - - 143, 475, 473, 473, 473, 473, 473, 474, 472, 463, - 463, 463, 463, 463, 463, 463, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 79, 469, 469, 469, 469, 469, 469, 469, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 127, 472, 472, 472, 472, 472, - 472, 472, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 144, 78, 475, - 475, 475, 78, 475, 78, 82, 82, 82, 82, 82, - 82, 82, 86, 475, 475, 475, 86, 475, 86, 88, - - 475, 475, 475, 88, 475, 88, 90, 475, 475, 90, - 90, 475, 90, 108, 475, 475, 108, 108, 108, 110, - 475, 475, 110, 110, 110, 110, 112, 475, 475, 112, - 112, 112, 112, 114, 475, 475, 114, 114, 114, 114, - 126, 475, 475, 475, 126, 475, 126, 128, 475, 475, - 475, 128, 475, 128, 130, 475, 475, 475, 130, 475, - 130, 132, 475, 475, 132, 132, 475, 132, 143, 475, - 475, 475, 143, 475, 143, 145, 145, 145, 145, 145, - 145, 145, 148, 148, 148, 148, 148, 148, 148, 152, - 475, 475, 475, 152, 475, 152, 154, 475, 475, 475, - - 154, 475, 154, 156, 475, 475, 156, 156, 475, 156, - 83, 83, 83, 83, 83, 83, 83, 91, 475, 475, - 91, 475, 475, 91, 178, 178, 475, 178, 178, 178, - 178, 179, 179, 475, 179, 179, 179, 179, 146, 146, - 146, 146, 146, 146, 146, 149, 149, 149, 149, 149, - 149, 149, 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 + 14, 15, 16, 17, 14, 18, 19, 20, 21, 22, + 23, 14, 14, 24, 25, 26, 27, 25, 25, 25, + 25, 28, 29, 21, 30, 30, 30, 30, 30, 31, + 30, 32, 30, 30, 30, 30, 33, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 34, 35, 36, 117, 88, 67, 37, 153, + 38, 39, 15, 16, 17, 39, 40, 41, 21, 42, + 43, 23, 39, 39, 44, 45, 46, 47, 45, 45, + 45, 45, 28, 29, 21, 48, 48, 48, 48, 48, + 49, 48, 50, 48, 48, 48, 48, 51, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 52, 52, 122, 118, 21, 21, 21, + 21, 15, 54, 55, 67, 56, 123, 77, 152, 67, + 57, 77, 77, 81, 81, 81, 81, 81, 81, 81, + 67, 57, 56, 96, 67, 117, 88, 77, 82, 82, + 82, 82, 82, 83, 130, 79, 58, 15, 54, 55, + 78, 56, 95, 77, 117, 88, 57, 77, 77, 105, + 105, 105, 105, 105, 105, 105, 67, 57, 56, 67, + 67, 67, 131, 77, 106, 106, 106, 106, 106, 107, + 67, 133, 58, 15, 16, 17, 102, 18, 103, 67, + + 117, 88, 67, 132, 134, 77, 67, 67, 67, 77, + 154, 67, 117, 88, 77, 152, 120, 141, 143, 152, + 152, 162, 95, 67, 168, 77, 77, 145, 59, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 15, 16, 17, 95, 18, 142, + 144, 67, 67, 142, 155, 67, 195, 182, 67, 67, + 67, 67, 223, 183, 67, 67, 197, 169, 141, 67, + 94, 209, 66, 198, 210, 216, 196, 208, 95, 59, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 15, 16, 17, 61, 18, + + 142, 21, 21, 62, 63, 64, 195, 202, 67, 77, + 194, 190, 175, 77, 77, 21, 65, 21, 189, 181, + 184, 236, 180, 77, 174, 173, 196, 77, 77, 77, + 33, 15, 16, 17, 61, 18, 67, 21, 21, 62, + 63, 64, 78, 77, 95, 206, 206, 206, 206, 206, + 207, 21, 65, 21, 203, 229, 102, 205, 205, 205, + 205, 205, 205, 205, 195, 237, 33, 79, 221, 80, + 80, 80, 80, 80, 80, 80, 167, 67, 224, 67, + 224, 115, 88, 166, 196, 116, 143, 67, 222, 95, + 116, 67, 66, 67, 84, 84, 84, 84, 84, 84, + + 84, 116, 116, 211, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 116, 84, 87, 88, + 66, 161, 66, 160, 66, 66, 95, 66, 213, 213, + 213, 213, 213, 213, 213, 254, 221, 221, 66, 66, + 66, 103, 151, 104, 104, 104, 104, 104, 104, 104, + 214, 214, 214, 214, 214, 215, 222, 222, 150, 67, + 114, 112, 139, 138, 94, 95, 94, 100, 108, 108, + 108, 108, 108, 108, 108, 248, 248, 248, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, + 98, 108, 111, 88, 94, 95, 94, 67, 94, 94, + + 129, 94, 229, 128, 248, 248, 248, 237, 259, 253, + 253, 253, 94, 94, 94, 120, 120, 120, 66, 120, + 270, 120, 120, 275, 120, 66, 67, 253, 253, 253, + 124, 95, 95, 75, 73, 120, 120, 120, 71, 69, + 68, 67, 114, 112, 67, 110, 109, 95, 100, 95, + 121, 66, 98, 66, 95, 66, 93, 66, 66, 92, + 66, 91, 286, 286, 286, 286, 286, 286, 90, 89, + 86, 66, 66, 66, 72, 85, 72, 75, 72, 73, + 72, 72, 71, 72, 67, 289, 289, 289, 289, 289, + 289, 69, 68, 67, 72, 72, 72, 74, 292, 74, + + 292, 74, 292, 74, 74, 292, 74, 95, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 74, 74, 74, + 76, 292, 66, 292, 76, 292, 66, 66, 292, 76, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 76, 76, 66, 125, 126, 127, 125, 125, 125, 125, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 67, 94, 292, 94, 292, + 94, 292, 94, 94, 292, 94, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 94, 94, 94, 97, + 292, 97, 292, 97, 292, 97, 97, 292, 97, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 97, + 97, 97, 99, 292, 99, 292, 99, 292, 99, 99, + 292, 99, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 99, 99, 99, 101, 292, 94, 292, 101, + 292, 94, 94, 292, 101, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 101, 101, 94, 135, 136, + 137, 135, 135, 135, 135, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 95, 120, 120, 120, 140, 120, 292, 120, 120, 292, + 120, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 120, 120, 120, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 121, 145, 292, 146, + 146, 146, 146, 146, 146, 146, 145, 292, 147, 147, + 147, 147, 147, 147, 147, 145, 292, 148, 148, 148, + 148, 148, 149, 146, 155, 292, 156, 156, 156, 156, + 156, 156, 156, 155, 292, 157, 157, 157, 157, 157, + 157, 157, 155, 292, 158, 158, 158, 158, 158, 159, + 156, 163, 164, 165, 163, 163, 163, 163, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 67, 145, 292, 146, 146, 146, 146, + + 146, 146, 146, 145, 292, 146, 146, 146, 146, 146, + 146, 146, 145, 292, 146, 146, 146, 146, 146, 146, + 66, 94, 292, 170, 171, 172, 170, 170, 170, 170, + 155, 292, 156, 156, 156, 156, 156, 156, 156, 155, + 292, 156, 156, 156, 156, 156, 156, 156, 155, 292, + 156, 156, 156, 156, 156, 156, 94, 175, 292, 176, + 176, 176, 176, 176, 176, 176, 175, 292, 177, 177, + 177, 177, 177, 177, 177, 175, 292, 178, 178, 178, + 178, 178, 179, 176, 184, 292, 185, 185, 185, 185, + 185, 185, 185, 184, 292, 186, 186, 186, 186, 186, + + 186, 186, 184, 292, 187, 187, 187, 187, 187, 188, + 185, 191, 192, 193, 191, 191, 191, 191, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 67, 175, 292, 176, 176, 176, 176, + 176, 176, 176, 175, 292, 176, 176, 176, 176, 176, + 176, 176, 175, 292, 176, 176, 176, 176, 176, 176, + 66, 94, 292, 199, 200, 201, 199, 199, 199, 199, + 184, 292, 185, 185, 185, 185, 185, 185, 185, 184, + 292, 185, 185, 185, 185, 185, 185, 185, 184, 292, + 185, 185, 185, 185, 185, 185, 94, 203, 204, 204, + + 204, 204, 204, 204, 204, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 67, 94, 211, 212, 212, 212, 212, 212, 212, 212, + 217, 218, 219, 220, 217, 217, 217, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 67, 94, 225, 226, 227, 228, 225, 225, + 225, 229, 292, 230, 230, 230, 230, 230, 230, 230, + 229, 292, 231, 231, 231, 231, 231, 231, 231, 229, + 292, 232, 232, 232, 232, 232, 233, 234, 229, 292, + 235, 235, 235, 230, 230, 230, 230, 237, 292, 238, + + 238, 238, 238, 238, 238, 238, 237, 292, 239, 239, + 239, 239, 239, 239, 239, 237, 292, 240, 240, 240, + 240, 240, 241, 242, 237, 292, 243, 243, 243, 238, + 238, 238, 238, 244, 245, 246, 244, 244, 244, 244, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 67, 229, 292, 234, 234, + 234, 234, 234, 234, 234, 229, 292, 234, 234, 234, + 234, 234, 234, 234, 229, 292, 234, 234, 234, 234, + 234, 234, 247, 229, 292, 247, 247, 247, 247, 247, + 247, 247, 94, 292, 249, 250, 251, 249, 249, 249, + + 249, 237, 292, 242, 242, 242, 242, 242, 242, 242, + 237, 292, 242, 242, 242, 242, 242, 242, 242, 237, + 292, 242, 242, 242, 242, 242, 242, 252, 237, 292, + 252, 252, 252, 252, 252, 252, 252, 254, 292, 255, + 255, 255, 255, 255, 255, 255, 254, 292, 256, 256, + 256, 256, 256, 256, 256, 254, 292, 257, 257, 257, + 257, 257, 258, 255, 66, 292, 247, 247, 247, 247, + 247, 247, 247, 259, 292, 260, 260, 260, 260, 260, + 260, 260, 259, 292, 261, 261, 261, 261, 261, 261, + 261, 259, 292, 262, 262, 262, 262, 262, 263, 260, + + 94, 292, 252, 252, 252, 252, 252, 252, 252, 264, + 265, 266, 264, 264, 264, 264, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 67, 254, 292, 255, 255, 255, 255, 255, 255, + 255, 254, 292, 255, 255, 255, 255, 255, 255, 255, + 254, 292, 255, 255, 255, 255, 255, 255, 66, 267, + 268, 269, 267, 267, 267, 267, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 95, 259, 292, 260, 260, 260, 260, 260, 260, + 260, 259, 292, 260, 260, 260, 260, 260, 260, 260, + + 259, 292, 260, 260, 260, 260, 260, 260, 94, 270, + 292, 271, 271, 271, 271, 271, 271, 271, 270, 292, + 272, 272, 272, 272, 272, 272, 272, 270, 292, 273, + 273, 273, 273, 273, 274, 271, 275, 292, 276, 276, + 276, 276, 276, 276, 276, 275, 292, 277, 277, 277, + 277, 277, 277, 277, 275, 292, 278, 278, 278, 278, + 278, 279, 276, 66, 292, 280, 281, 282, 280, 280, + 280, 280, 270, 292, 271, 271, 271, 271, 271, 271, + 271, 270, 292, 271, 271, 271, 271, 271, 271, 271, + 270, 292, 271, 271, 271, 271, 271, 271, 66, 94, + + 292, 283, 284, 285, 283, 283, 283, 283, 275, 292, + 276, 276, 276, 276, 276, 276, 276, 275, 292, 276, + 276, 276, 276, 276, 276, 276, 275, 292, 276, 276, + 276, 276, 276, 276, 94, 66, 292, 286, 286, 286, + 286, 286, 286, 286, 66, 292, 280, 280, 280, 280, + 280, 280, 280, 66, 292, 287, 287, 287, 287, 287, + 288, 286, 94, 292, 289, 289, 289, 289, 289, 289, + 289, 94, 292, 283, 283, 283, 283, 283, 283, 283, + 94, 292, 290, 290, 290, 290, 290, 291, 289, 286, + 286, 286, 286, 286, 286, 286, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 67, 289, 289, 289, 289, 289, 289, 289, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 95, 53, 53, 53, 53, 53, + 53, 53, 21, 21, 21, 21, 21, 21, 21, 14, + 14, 14, 14, 14, 14, 14, 66, 292, 292, 292, + 66, 66, 66, 70, 70, 70, 70, 70, 70, 70, + 72, 292, 292, 292, 72, 72, 72, 74, 292, 292, + 292, 74, 74, 74, 76, 292, 76, 292, 76, 76, + 76, 94, 292, 292, 292, 94, 94, 94, 97, 292, + + 292, 292, 97, 97, 97, 99, 292, 292, 292, 99, + 99, 99, 101, 292, 101, 292, 101, 101, 101, 113, + 292, 113, 113, 113, 292, 113, 119, 119, 119, 119, + 119, 119, 119, 77, 292, 77, 292, 77, 77, 77, + 120, 120, 120, 120, 120, 120, 120, 13, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292 + } ; -static yyconst short int yy_chk[3104] = +static yyconst short int yy_chk[1901] = { 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, - 2, 2, 2, 107, 124, 124, 2, 107, 2, 3, + 1, 1, 2, 2, 2, 59, 59, 131, 2, 131, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - - 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, - 14, 14, 101, 101, 103, 14, 14, 20, 14, 20, - 94, 20, 20, 103, 135, 106, 104, 159, 14, 14, - 14, 104, 173, 105, 106, 173, 20, 23, 23, 23, - 23, 23, 23, 14, 94, 105, 101, 146, 135, 20, - 21, 159, 21, 21, 21, 21, 21, 21, 21, 22, - 22, 22, 22, 22, 22, 22, 41, 58, 58, 58, - 58, 58, 58, 58, 21, 26, 172, 172, 146, 26, - 26, 26, 41, 174, 26, 174, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 176, 41, 176, 26, 26, - - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 29, 29, 29, 142, 142, - 175, 29, 29, 38, 29, 39, 177, 38, 38, 39, - 39, 472, 201, 175, 29, 29, 29, 177, 114, 207, - 207, 38, 38, 39, 39, 59, 59, 59, 59, 59, - 59, 469, 142, 218, 114, 38, 201, 39, 42, 463, - 42, 42, 42, 42, 42, 42, 42, 43, 114, 43, - 43, 43, 43, 43, 43, 43, 44, 218, 44, 44, - 44, 44, 44, 44, 44, 47, 47, 47, 47, 47, - - 47, 47, 147, 208, 147, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 208, 47, 50, - 50, 192, 56, 50, 56, 224, 56, 56, 50, 310, - 437, 310, 70, 238, 70, 147, 70, 70, 50, 50, - 238, 56, 72, 72, 72, 72, 72, 72, 72, 166, - 166, 70, 192, 50, 56, 57, 224, 57, 57, 57, - 57, 57, 57, 57, 70, 73, 73, 73, 73, 73, - 73, 116, 116, 116, 116, 116, 116, 116, 209, 57, - 60, 290, 260, 166, 60, 60, 60, 290, 237, 60, - 209, 60, 60, 60, 60, 60, 60, 60, 60, 60, - - 237, 260, 405, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 63, 63, 63, 262, 261, 359, 63, 63, 90, 63, - 90, 261, 90, 90, 357, 226, 262, 269, 328, 63, - 63, 63, 66, 66, 66, 66, 255, 90, 66, 66, - 110, 66, 322, 112, 110, 110, 269, 112, 112, 226, - 90, 66, 66, 66, 271, 278, 313, 351, 110, 110, - 255, 112, 112, 276, 283, 291, 66, 67, 67, 67, - 308, 303, 110, 67, 67, 112, 67, 291, 271, 278, - - 115, 351, 276, 283, 115, 299, 67, 67, 67, 115, - 120, 305, 120, 120, 120, 120, 120, 120, 319, 115, - 115, 67, 71, 288, 71, 71, 71, 71, 71, 71, - 71, 309, 336, 295, 305, 132, 317, 132, 323, 132, - 132, 319, 288, 287, 336, 325, 71, 74, 282, 275, - 309, 74, 74, 74, 132, 317, 74, 323, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 132, 325, 268, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 77, 77, 77, - - 311, 329, 311, 77, 77, 156, 77, 156, 334, 156, - 156, 264, 366, 259, 253, 311, 77, 77, 77, 79, - 329, 79, 373, 252, 156, 79, 79, 334, 79, 210, - 210, 210, 210, 210, 210, 210, 366, 156, 79, 79, - 79, 82, 82, 82, 248, 247, 373, 82, 82, 214, - 82, 214, 214, 214, 214, 214, 214, 388, 388, 388, - 82, 82, 82, 263, 263, 263, 263, 263, 263, 263, - 356, 243, 356, 356, 356, 82, 87, 364, 87, 364, - 364, 364, 87, 87, 267, 87, 267, 267, 267, 267, - 267, 267, 400, 242, 356, 87, 87, 87, 89, 371, - - 89, 371, 371, 371, 89, 89, 236, 89, 285, 285, - 285, 285, 285, 285, 285, 235, 400, 89, 89, 89, - 92, 231, 92, 371, 92, 230, 92, 92, 223, 92, - 286, 286, 286, 286, 286, 286, 222, 216, 410, 92, - 92, 92, 93, 93, 93, 93, 93, 93, 93, 297, - 297, 297, 297, 297, 297, 297, 298, 298, 298, 298, - 298, 298, 410, 215, 93, 118, 211, 118, 118, 118, - 118, 118, 118, 118, 119, 206, 119, 119, 119, 119, - 119, 119, 119, 127, 378, 127, 378, 378, 378, 127, - 127, 205, 127, 301, 301, 301, 301, 301, 301, 301, - - 199, 198, 127, 127, 127, 129, 194, 129, 378, 190, - 189, 129, 129, 188, 129, 302, 302, 302, 302, 302, - 302, 415, 184, 183, 129, 129, 129, 131, 171, 131, - 383, 383, 383, 131, 131, 170, 131, 312, 312, 312, - 312, 312, 312, 312, 165, 415, 131, 131, 131, 133, - 164, 133, 383, 133, 162, 133, 133, 154, 133, 316, - 316, 316, 316, 316, 316, 316, 152, 151, 133, 133, - 133, 134, 134, 134, 134, 134, 134, 134, 358, 358, - 358, 358, 358, 358, 358, 387, 387, 387, 387, 387, - 387, 387, 149, 134, 144, 143, 144, 432, 141, 140, - - 144, 144, 138, 144, 393, 393, 393, 398, 398, 398, - 442, 130, 128, 144, 144, 144, 145, 145, 145, 145, - 126, 432, 145, 145, 447, 145, 393, 123, 122, 398, - 117, 109, 100, 99, 442, 145, 145, 145, 404, 404, - 404, 404, 404, 404, 404, 97, 91, 88, 447, 86, - 145, 148, 148, 148, 85, 83, 81, 148, 148, 408, - 148, 408, 408, 408, 408, 408, 408, 80, 78, 76, - 148, 148, 148, 436, 436, 436, 436, 436, 436, 436, - 75, 69, 68, 64, 62, 148, 153, 61, 153, 55, - 53, 52, 153, 153, 440, 153, 440, 440, 440, 440, - - 440, 440, 51, 49, 48, 153, 153, 153, 155, 37, - 155, 34, 33, 32, 155, 155, 31, 155, 454, 454, - 454, 454, 454, 454, 454, 30, 28, 155, 155, 155, - 157, 27, 157, 18, 157, 15, 157, 157, 13, 157, - 455, 455, 455, 455, 455, 455, 455, 11, 10, 157, - 157, 157, 158, 158, 158, 158, 158, 158, 158, 456, - 456, 456, 456, 456, 456, 456, 467, 467, 467, 467, - 467, 467, 467, 9, 158, 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, 0, 0, 0, 178, 178, - 0, 178, 465, 465, 465, 465, 465, 465, 0, 0, - 0, 178, 178, 178, 468, 468, 468, 468, 468, 468, - 0, 0, 0, 0, 465, 0, 178, 179, 0, 179, - 0, 0, 0, 179, 179, 0, 179, 471, 471, 471, - 471, 471, 471, 0, 0, 0, 179, 179, 179, 0, - 474, 474, 474, 474, 474, 474, 0, 0, 0, 471, - 0, 179, 180, 0, 180, 180, 180, 180, 180, 180, - 180, 181, 474, 181, 181, 181, 181, 181, 181, 181, - 182, 0, 182, 182, 182, 182, 182, 182, 182, 185, - - 0, 185, 185, 185, 185, 185, 185, 185, 186, 0, - 186, 186, 186, 186, 186, 186, 186, 187, 0, 187, - 187, 187, 187, 187, 187, 187, 195, 0, 195, 195, - 195, 195, 195, 195, 195, 196, 0, 196, 196, 196, - 196, 196, 196, 196, 197, 0, 197, 197, 197, 197, - 197, 197, 197, 200, 200, 200, 200, 200, 200, 200, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 5, 6, 62, 307, 5, 6, 5, + 6, 7, 7, 7, 130, 7, 64, 24, 130, 62, + 7, 24, 24, 26, 26, 26, 26, 26, 26, 26, + 64, 7, 7, 302, 89, 87, 87, 24, 27, 27, + 27, 27, 27, 27, 89, 80, 7, 8, 8, 8, + 24, 8, 289, 44, 115, 115, 8, 44, 44, 46, + 46, 46, 46, 46, 46, 46, 90, 8, 8, 80, + 87, 92, 90, 44, 47, 47, 47, 47, 47, 47, + 91, 92, 8, 9, 9, 9, 44, 9, 104, 93, + + 117, 117, 154, 91, 93, 124, 132, 134, 133, 124, + 133, 286, 111, 111, 124, 154, 121, 120, 121, 134, + 132, 142, 104, 152, 152, 124, 124, 146, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 10, 10, 10, 111, 10, 120, + 121, 146, 153, 142, 156, 169, 181, 168, 182, 183, + 209, 198, 209, 169, 197, 236, 182, 153, 162, 168, + 215, 197, 207, 183, 198, 202, 181, 194, 156, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, + + 162, 11, 11, 11, 11, 11, 190, 189, 223, 76, + 180, 174, 176, 76, 76, 11, 11, 11, 173, 167, + 185, 223, 166, 101, 161, 160, 190, 101, 101, 76, + 11, 12, 12, 12, 12, 12, 176, 12, 12, 12, + 12, 12, 76, 101, 185, 193, 193, 193, 193, 193, + 193, 12, 12, 12, 204, 230, 101, 192, 192, 192, + 192, 192, 192, 192, 195, 238, 12, 25, 208, 25, + 25, 25, 25, 25, 25, 25, 151, 204, 210, 230, + 210, 58, 58, 150, 195, 58, 144, 140, 208, 238, + 58, 25, 30, 210, 30, 30, 30, 30, 30, 30, + + 30, 58, 58, 212, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 58, 30, 33, 33, + 33, 139, 33, 138, 33, 33, 212, 33, 200, 200, + 200, 200, 200, 200, 200, 255, 216, 221, 33, 33, + 33, 45, 129, 45, 45, 45, 45, 45, 45, 45, + 201, 201, 201, 201, 201, 201, 216, 221, 128, 255, + 114, 112, 110, 109, 107, 45, 48, 99, 48, 48, + 48, 48, 48, 48, 48, 248, 248, 248, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 97, 48, 51, 51, 51, 94, 51, 248, 51, 51, + + 86, 51, 235, 85, 235, 235, 235, 243, 260, 243, + 243, 243, 51, 51, 51, 61, 61, 61, 61, 61, + 271, 61, 61, 276, 61, 83, 235, 253, 253, 253, + 77, 243, 260, 74, 72, 61, 61, 61, 70, 69, + 68, 66, 55, 52, 271, 50, 49, 276, 43, 253, + 61, 67, 41, 67, 39, 67, 38, 67, 67, 37, + 67, 36, 288, 288, 288, 288, 288, 288, 35, 34, + 32, 67, 67, 67, 73, 31, 73, 22, 73, 19, + 73, 73, 18, 73, 288, 291, 291, 291, 291, 291, + 291, 17, 15, 14, 73, 73, 73, 75, 13, 75, + + 0, 75, 0, 75, 75, 0, 75, 291, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, + 78, 0, 78, 0, 78, 0, 78, 78, 0, 78, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 79, 95, 0, 95, 0, + 95, 0, 95, 95, 0, 95, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 95, 95, 95, 98, + 0, 98, 0, 98, 0, 98, 98, 0, 98, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, + 98, 98, 100, 0, 100, 0, 100, 0, 100, 100, + 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 100, 100, 100, 102, 0, 102, 0, 102, + 0, 102, 102, 0, 102, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 102, 102, 102, 103, 103, + 103, 103, 103, 103, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 119, 119, 119, 119, 119, 0, 119, 119, 0, + 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 119, 119, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 125, 0, 125, + 125, 125, 125, 125, 125, 125, 126, 0, 126, 126, + 126, 126, 126, 126, 126, 127, 0, 127, 127, 127, + 127, 127, 127, 127, 135, 0, 135, 135, 135, 135, + 135, 135, 135, 136, 0, 136, 136, 136, 136, 136, + 136, 136, 137, 0, 137, 137, 137, 137, 137, 137, + 137, 145, 145, 145, 145, 145, 145, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 200, 202, 0, 202, 202, - 202, 202, 202, 202, 202, 203, 0, 203, 203, 203, - 203, 203, 203, 203, 204, 0, 204, 204, 204, 204, - - 204, 204, 204, 212, 0, 212, 212, 212, 212, 212, - 212, 212, 213, 0, 213, 213, 213, 213, 213, 213, - 213, 217, 0, 217, 217, 217, 217, 217, 217, 217, - 219, 0, 219, 219, 219, 219, 219, 219, 219, 220, - 0, 220, 220, 220, 220, 220, 220, 220, 221, 0, - 221, 221, 221, 221, 221, 221, 221, 225, 0, 225, - 225, 225, 225, 225, 225, 225, 227, 0, 227, 227, - 227, 227, 227, 227, 227, 228, 0, 228, 228, 228, - 228, 228, 228, 228, 229, 0, 229, 229, 229, 229, - 229, 229, 229, 232, 0, 232, 232, 232, 232, 232, - - 232, 232, 233, 0, 233, 233, 233, 233, 233, 233, - 233, 234, 0, 234, 234, 234, 234, 234, 234, 234, - 239, 0, 239, 239, 239, 239, 239, 239, 239, 240, - 0, 240, 240, 240, 240, 240, 240, 240, 241, 0, - 241, 241, 241, 241, 241, 241, 241, 244, 0, 244, + 0, 0, 0, 145, 147, 0, 147, 147, 147, 147, + + 147, 147, 147, 148, 0, 148, 148, 148, 148, 148, + 148, 148, 149, 0, 149, 149, 149, 149, 149, 149, + 149, 155, 0, 155, 155, 155, 155, 155, 155, 155, + 157, 0, 157, 157, 157, 157, 157, 157, 157, 158, + 0, 158, 158, 158, 158, 158, 158, 158, 159, 0, + 159, 159, 159, 159, 159, 159, 159, 163, 0, 163, + 163, 163, 163, 163, 163, 163, 164, 0, 164, 164, + 164, 164, 164, 164, 164, 165, 0, 165, 165, 165, + 165, 165, 165, 165, 170, 0, 170, 170, 170, 170, + 170, 170, 170, 171, 0, 171, 171, 171, 171, 171, + + 171, 171, 172, 0, 172, 172, 172, 172, 172, 172, + 172, 175, 175, 175, 175, 175, 175, 175, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 175, 177, 0, 177, 177, 177, 177, + 177, 177, 177, 178, 0, 178, 178, 178, 178, 178, + 178, 178, 179, 0, 179, 179, 179, 179, 179, 179, + 179, 184, 0, 184, 184, 184, 184, 184, 184, 184, + 186, 0, 186, 186, 186, 186, 186, 186, 186, 187, + 0, 187, 187, 187, 187, 187, 187, 187, 188, 0, + 188, 188, 188, 188, 188, 188, 188, 191, 191, 191, + + 191, 191, 191, 191, 191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 191, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 203, 203, 203, 203, 203, 203, 203, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 203, 211, 211, 211, 211, 211, 211, 211, + 211, 217, 0, 217, 217, 217, 217, 217, 217, 217, + 218, 0, 218, 218, 218, 218, 218, 218, 218, 219, + 0, 219, 219, 219, 219, 219, 219, 219, 220, 0, + 220, 220, 220, 220, 220, 220, 220, 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, 228, 0, 228, 228, 228, 228, + 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 231, 0, 231, 231, + 231, 231, 231, 231, 231, 232, 0, 232, 232, 232, + 232, 232, 232, 232, 233, 0, 233, 233, 233, 233, + 233, 233, 233, 234, 0, 234, 234, 234, 234, 234, + 234, 234, 237, 0, 237, 237, 237, 237, 237, 237, + + 237, 239, 0, 239, 239, 239, 239, 239, 239, 239, + 240, 0, 240, 240, 240, 240, 240, 240, 240, 241, + 0, 241, 241, 241, 241, 241, 241, 241, 242, 0, + 242, 242, 242, 242, 242, 242, 242, 244, 0, 244, 244, 244, 244, 244, 244, 244, 245, 0, 245, 245, 245, 245, 245, 245, 245, 246, 0, 246, 246, 246, - 246, 246, 246, 246, 249, 0, 249, 249, 249, 249, - 249, 249, 249, 250, 0, 250, 250, 250, 250, 250, - 250, 250, 251, 0, 251, 251, 251, 251, 251, 251, + 246, 246, 246, 246, 247, 0, 247, 247, 247, 247, + 247, 247, 247, 249, 0, 249, 249, 249, 249, 249, + 249, 249, 250, 0, 250, 250, 250, 250, 250, 250, + 250, 251, 0, 251, 251, 251, 251, 251, 251, 251, - 251, 254, 254, 254, 254, 254, 254, 254, 0, 0, + 252, 0, 252, 252, 252, 252, 252, 252, 252, 254, + 254, 254, 254, 254, 254, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 254, 256, 0, 256, 256, 256, 256, - 256, 256, 256, 257, 0, 257, 257, 257, 257, 257, - 257, 257, 258, 0, 258, 258, 258, 258, 258, 258, - 258, 265, 0, 265, 265, 265, 265, 265, 265, 265, - 266, 0, 266, 266, 266, 266, 266, 266, 266, 270, - 0, 270, 270, 270, 270, 270, 270, 270, 272, 0, - 272, 272, 272, 272, 272, 272, 272, 273, 0, 273, - 273, 273, 273, 273, 273, 273, 274, 0, 274, 274, - - 274, 274, 274, 274, 274, 277, 0, 277, 277, 277, - 277, 277, 277, 277, 279, 0, 279, 279, 279, 279, - 279, 279, 279, 280, 0, 280, 280, 280, 280, 280, - 280, 280, 281, 0, 281, 281, 281, 281, 281, 281, - 281, 284, 284, 284, 284, 284, 284, 284, 284, 0, + 0, 254, 256, 0, 256, 256, 256, 256, 256, 256, + 256, 257, 0, 257, 257, 257, 257, 257, 257, 257, + 258, 0, 258, 258, 258, 258, 258, 258, 258, 259, + 259, 259, 259, 259, 259, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 292, 292, 292, 292, 292, - 292, 292, 292, 293, 293, 293, 293, 293, 293, 293, - 293, 294, 294, 294, 294, 294, 294, 294, 294, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 304, 304, 304, - 304, 304, 304, 304, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 314, 314, 314, 314, 314, 314, 314, 314, 315, 315, - 315, 315, 315, 315, 315, 315, 318, 318, 318, 318, - 318, 318, 318, 318, 324, 324, 324, 324, 324, 324, - 324, 324, 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, 333, - 0, 333, 333, 333, 333, 333, 333, 333, 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, 349, 0, 349, - - 349, 349, 349, 349, 349, 349, 350, 350, 350, 350, - 350, 350, 350, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 350, 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, 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, 365, 0, 365, 365, 365, 365, 365, 365, 365, - 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, 372, 0, 372, 372, - 372, 372, 372, 372, 372, 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, 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, 382, 0, - 382, 382, 382, 382, 382, 382, 382, 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, 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, 392, 0, 392, 392, 392, 392, 392, 392, 392, - 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, 0, 397, - 397, 397, 397, 397, 397, 397, 399, 399, 399, 399, - 399, 399, 399, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 403, 406, 0, 406, 406, - 406, 406, 406, 406, 406, 407, 0, 407, 407, 407, - 407, 407, 407, 407, 409, 409, 409, 409, 409, 409, - - 409, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 409, 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, 413, 414, 414, 414, 414, 414, 414, - 414, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 414, 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, 431, 0, 431, 431, 431, 431, 431, 431, - 431, 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, 438, 0, - 438, 438, 438, 438, 438, 438, 438, 439, 0, 439, - 439, 439, 439, 439, 439, 439, 441, 0, 441, 441, - 441, 441, 441, 441, 441, 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, 445, 446, 0, 446, 446, 446, 446, 446, 446, - - 446, 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, 451, 0, - 451, 451, 451, 451, 451, 451, 451, 452, 0, 452, - 452, 452, 452, 452, 452, 452, 453, 0, 453, 453, - 453, 453, 453, 453, 453, 457, 0, 457, 457, 457, - 457, 457, 457, 457, 458, 0, 458, 458, 458, 458, - 458, 458, 458, 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, 464, - 464, 464, 464, 464, 464, 464, 0, 0, 0, 0, + 0, 259, 261, 0, 261, 261, 261, 261, 261, 261, + 261, 262, 0, 262, 262, 262, 262, 262, 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, 266, 0, 266, + 266, 266, 266, 266, 266, 266, 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, 270, 0, 270, 270, 270, 270, 270, + 270, 270, 272, 0, 272, 272, 272, 272, 272, 272, + 272, 273, 0, 273, 273, 273, 273, 273, 273, 273, + 274, 0, 274, 274, 274, 274, 274, 274, 274, 275, + + 0, 275, 275, 275, 275, 275, 275, 275, 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, 280, 0, 280, 280, 280, + 280, 280, 280, 280, 281, 0, 281, 281, 281, 281, + 281, 281, 281, 282, 0, 282, 282, 282, 282, 282, + 282, 282, 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, 287, + 287, 287, 287, 287, 287, 287, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 464, 470, 470, 470, 470, 470, 470, 470, 0, + 0, 287, 290, 290, 290, 290, 290, 290, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 470, 473, 473, 473, 473, 473, - 473, 473, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 473, 476, 0, - 0, 0, 476, 0, 476, 477, 477, 477, 477, 477, - 477, 477, 478, 0, 0, 0, 478, 0, 478, 479, - - 0, 0, 0, 479, 0, 479, 480, 0, 0, 480, - 480, 0, 480, 481, 0, 0, 481, 481, 481, 482, - 0, 0, 482, 482, 482, 482, 483, 0, 0, 483, - 483, 483, 483, 484, 0, 0, 484, 484, 484, 484, - 485, 0, 0, 0, 485, 0, 485, 486, 0, 0, - 0, 486, 0, 486, 487, 0, 0, 0, 487, 0, - 487, 488, 0, 0, 488, 488, 0, 488, 489, 0, - 0, 0, 489, 0, 489, 490, 490, 490, 490, 490, - 490, 490, 491, 491, 491, 491, 491, 491, 491, 492, - 0, 0, 0, 492, 0, 492, 493, 0, 0, 0, - - 493, 0, 493, 494, 0, 0, 494, 494, 0, 494, - 495, 495, 495, 495, 495, 495, 495, 496, 0, 0, - 496, 0, 0, 496, 497, 497, 0, 497, 497, 497, - 497, 498, 498, 0, 498, 498, 498, 498, 499, 499, - 499, 499, 499, 499, 499, 500, 500, 500, 500, 500, - 500, 500, 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 + 0, 0, 0, 0, 290, 293, 293, 293, 293, 293, + 293, 293, 294, 294, 294, 294, 294, 294, 294, 295, + 295, 295, 295, 295, 295, 295, 296, 0, 0, 0, + 296, 296, 296, 297, 297, 297, 297, 297, 297, 297, + 298, 0, 0, 0, 298, 298, 298, 299, 0, 0, + 0, 299, 299, 299, 300, 0, 300, 0, 300, 300, + 300, 301, 0, 0, 0, 301, 301, 301, 303, 0, + + 0, 0, 303, 303, 303, 304, 0, 0, 0, 304, + 304, 304, 305, 0, 305, 0, 305, 305, 305, 306, + 0, 306, 306, 306, 0, 306, 308, 308, 308, 308, + 308, 308, 308, 309, 0, 309, 0, 309, 309, 309, + 310, 310, 310, 310, 310, 310, 310, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292 + } ; static yy_state_type yy_last_accepting_state; @@ -1209,7 +883,7 @@ char *yytext; #define INITIAL 0 #line 2 "parse.lex" /* - * Copyright (c) 1996, 1998, 1999 Todd C. Miller + * Copyright (c) 1996, 1998-2001 Todd C. Miller * All rights reserved. * * This code is derived from software contributed by Chris Jepeway @@ -1268,7 +942,7 @@ char *yytext; #include #include "sudo.h" #include "parse.h" -#include "sudo.tab.h" +#include #ifndef lint static const char rcsid[] = "$Sudo$"; @@ -1297,13 +971,18 @@ extern void yyerror __P((char *)); #else #define LEXTRACE(msg) #endif -#define GOTCMND 1 +/* XXX - convert GOTRUNAS to exclusive state (GOTDEFS cannot be) */ +#define GOTRUNAS 1 + +#define GOTDEFS 2 -#define GOTRUNAS 2 +#define GOTCMND 3 -#define GOTDEFS 3 +#define STARTDEFS 4 -#line 1307 "lex.yy.c" +#define INDEFS 5 + +#line 986 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1457,9 +1136,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 102 "parse.lex" +#line 106 "parse.lex" -#line 1463 "lex.yy.c" +#line 1142 "lex.yy.c" if ( yy_init ) { @@ -1511,13 +1190,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 >= 293 ) 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] != 3053 ); + while ( yy_base[yy_current_state] != 1848 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1545,138 +1224,153 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 103 "parse.lex" -{ /* throw away space/tabs */ - sawspace = TRUE; /* but remember for fill_args */ - } +#line 107 "parse.lex" +BEGIN STARTDEFS; YY_BREAK case 2: YY_RULE_SETUP -#line 107 "parse.lex" +#line 109 "parse.lex" { - sawspace = TRUE; /* remember for fill_args */ - ++sudolineno; - LEXTRACE("\n\t"); - } /* throw away EOL after \ */ + BEGIN INDEFS; + LEXTRACE("DEFVAR "); + fill(yytext, yyleng); + return(DEFVAR); + } YY_BREAK + case 3: YY_RULE_SETUP -#line 113 "parse.lex" +#line 117 "parse.lex" { - LEXTRACE("QUOTEDCHAR "); - fill_args(yytext + 1, 1, sawspace); - sawspace = FALSE; - } + BEGIN STARTDEFS; + LEXTRACE(", "); + return(','); + } /* return ',' */ YY_BREAK case 4: YY_RULE_SETUP -#line 119 "parse.lex" +#line 123 "parse.lex" { - LEXTRACE("WORD(1) "); - fill(yytext + 1, yyleng - 2); - return(WORD); - } + LEXTRACE("= "); + return('='); + } /* return '=' */ YY_BREAK case 5: YY_RULE_SETUP -#line 125 "parse.lex" +#line 128 "parse.lex" { - BEGIN INITIAL; - ++sudolineno; - LEXTRACE("\n"); - return(COMMENT); - } + LEXTRACE("+= "); + return('+'); + } /* return '+' */ YY_BREAK case 6: YY_RULE_SETUP -#line 132 "parse.lex" +#line 133 "parse.lex" { - BEGIN INITIAL; - unput(*yytext); - return(COMMAND); - } /* end of command line args */ + LEXTRACE("-= "); + return('-'); + } /* return '-' */ YY_BREAK case 7: YY_RULE_SETUP #line 138 "parse.lex" { - ++sudolineno; - LEXTRACE("\n"); - BEGIN INITIAL; - return(COMMENT); - } /* return newline */ + LEXTRACE("WORD(1) "); + fill(yytext + 1, yyleng - 2); + return(WORD); + } YY_BREAK + + case 8: YY_RULE_SETUP -#line 145 "parse.lex" +#line 146 "parse.lex" { - ++sudolineno; - LEXTRACE("\n"); - return(COMMENT); - } /* return comments */ + LEXTRACE("QUOTEDCHAR "); + fill_args(yytext + 1, 1, sawspace); + sawspace = FALSE; + } YY_BREAK case 9: YY_RULE_SETUP -#line 151 "parse.lex" +#line 152 "parse.lex" { - LEXTRACE("ARG "); - fill_args(yytext, yyleng, sawspace); - sawspace = FALSE; - } /* a command line arg */ + BEGIN INITIAL; + unput(*yytext); + return(COMMAND); + } /* end of command line args */ YY_BREAK case 10: YY_RULE_SETUP -#line 157 "parse.lex" +#line 158 "parse.lex" { - LEXTRACE(", "); - return(','); - } /* return ',' */ + LEXTRACE("ARG "); + fill_args(yytext, yyleng, sawspace); + sawspace = FALSE; + } /* a command line arg */ YY_BREAK + case 11: YY_RULE_SETUP -#line 162 "parse.lex" +#line 165 "parse.lex" { - if (yyleng % 2 == 1) - return('!'); /* return '!' */ + BEGIN GOTDEFS; + switch (yytext[8]) { + case ':': + LEXTRACE("DEFAULTS_USER "); + return(DEFAULTS_USER); + case '@': + LEXTRACE("DEFAULTS_HOST "); + return(DEFAULTS_HOST); + default: + LEXTRACE("DEFAULTS "); + return(DEFAULTS); + } } YY_BREAK case 12: YY_RULE_SETUP -#line 167 "parse.lex" +#line 180 "parse.lex" { - LEXTRACE("= "); - return('='); - } /* return '=' */ + fill(yytext, yyleng); + switch (*yytext) { + case 'H': + LEXTRACE("HOSTALIAS "); + return(HOSTALIAS); + case 'C': + LEXTRACE("CMNDALIAS "); + return(CMNDALIAS); + case 'U': + LEXTRACE("USERALIAS "); + return(USERALIAS); + case 'R': + LEXTRACE("RUNASALIAS "); + BEGIN GOTRUNAS; + return(RUNASALIAS); + } + } YY_BREAK case 13: YY_RULE_SETUP -#line 172 "parse.lex" -{ - LEXTRACE(": "); - return(':'); - } /* return ':' */ - YY_BREAK -case 14: -YY_RULE_SETUP -#line 177 "parse.lex" +#line 199 "parse.lex" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); return(NOPASSWD); } YY_BREAK -case 15: +case 14: YY_RULE_SETUP -#line 183 "parse.lex" +#line 205 "parse.lex" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); return(PASSWD); } YY_BREAK -case 16: +case 15: YY_RULE_SETUP -#line 189 "parse.lex" +#line 211 "parse.lex" { /* netgroup */ fill(yytext, yyleng); @@ -1684,9 +1378,9 @@ YY_RULE_SETUP return(NETGROUP); } YY_BREAK -case 17: +case 16: YY_RULE_SETUP -#line 196 "parse.lex" +#line 218 "parse.lex" { /* UN*X group */ fill(yytext, yyleng); @@ -1694,38 +1388,37 @@ YY_RULE_SETUP return(USERGROUP); } YY_BREAK -case 18: +case 17: YY_RULE_SETUP -#line 203 "parse.lex" +#line 225 "parse.lex" { fill(yytext, yyleng); LEXTRACE("NTWKADDR "); return(NTWKADDR); } YY_BREAK -case 19: +case 18: YY_RULE_SETUP -#line 209 "parse.lex" +#line 231 "parse.lex" { fill(yytext, yyleng); LEXTRACE("NTWKADDR "); return(NTWKADDR); } YY_BREAK -case 20: +case 19: YY_RULE_SETUP -#line 215 "parse.lex" +#line 237 "parse.lex" { BEGIN GOTRUNAS; LEXTRACE("RUNAS "); return (RUNAS); } YY_BREAK -case 21: +case 20: YY_RULE_SETUP -#line 221 "parse.lex" +#line 243 "parse.lex" { - /* Runas_Alias user can run command as or ALL */ if (strcmp(yytext, "ALL") == 0) { LEXTRACE("ALL "); return(ALL); @@ -1736,9 +1429,9 @@ YY_RULE_SETUP } } YY_BREAK -case 22: +case 21: YY_RULE_SETUP -#line 233 "parse.lex" +#line 254 "parse.lex" { /* username/uid that user can run command as */ fill(yytext, yyleng); @@ -1746,124 +1439,127 @@ YY_RULE_SETUP return(WORD); } YY_BREAK -case 23: +case 22: YY_RULE_SETUP -#line 240 "parse.lex" +#line 261 "parse.lex" { BEGIN INITIAL; } YY_BREAK -case 24: +case 23: YY_RULE_SETUP -#line 244 "parse.lex" +#line 265 "parse.lex" { - if (strcmp(yytext, "ALL") == 0) { - LEXTRACE("ALL "); - return(ALL); + /* directories can't have args... */ + if (yytext[yyleng - 1] == '/') { + LEXTRACE("COMMAND "); + fill_cmnd(yytext, yyleng); + return(COMMAND); } else { - fill(yytext, yyleng); - LEXTRACE("ALIAS "); - return(ALIAS); + BEGIN GOTCMND; + LEXTRACE("COMMAND "); + fill_cmnd(yytext, yyleng); } - } + } /* a pathname */ YY_BREAK -case 25: +case 24: YY_RULE_SETUP -#line 255 "parse.lex" +#line 278 "parse.lex" { - LEXTRACE("WORD(3) "); + /* a word */ fill(yytext, yyleng); + LEXTRACE("WORD(3) "); return(WORD); } YY_BREAK +case 25: +YY_RULE_SETUP +#line 285 "parse.lex" +{ + LEXTRACE(", "); + return(','); + } /* return ',' */ + YY_BREAK case 26: YY_RULE_SETUP -#line 261 "parse.lex" +#line 290 "parse.lex" { - BEGIN GOTDEFS; - if (yyleng == 9) { - switch (yytext[8]) { - case ':' : - LEXTRACE("DEFAULTS_USER "); - return(DEFAULTS_USER); - case '@' : - LEXTRACE("DEFAULTS_HOST "); - return(DEFAULTS_HOST); - } - } else { - LEXTRACE("DEFAULTS "); - return(DEFAULTS); - } - } + LEXTRACE("= "); + return('='); + } /* return '=' */ YY_BREAK case 27: YY_RULE_SETUP -#line 278 "parse.lex" +#line 295 "parse.lex" { - fill(yytext, yyleng); - if (*yytext == 'H') { - LEXTRACE("HOSTALIAS "); - return(HOSTALIAS); - } - if (*yytext == 'C') { - LEXTRACE("CMNDALIAS "); - return(CMNDALIAS); - } - if (*yytext == 'U') { - LEXTRACE("USERALIAS "); - return(USERALIAS); - } - if (*yytext == 'R') { - LEXTRACE("RUNASALIAS "); - BEGIN GOTRUNAS; - return(RUNASALIAS); - } - } + LEXTRACE(": "); + return(':'); + } /* return ':' */ YY_BREAK case 28: YY_RULE_SETUP -#line 299 "parse.lex" +#line 300 "parse.lex" { - /* directories can't have args... */ - if (yytext[yyleng - 1] == '/') { - LEXTRACE("COMMAND "); - fill_cmnd(yytext, yyleng); - return(COMMAND); - } else { - BEGIN GOTCMND; - LEXTRACE("COMMAND "); - fill_cmnd(yytext, yyleng); - } - } /* a pathname */ + if (yyleng % 2 == 1) + return('!'); /* return '!' */ + } YY_BREAK case 29: YY_RULE_SETUP -#line 312 "parse.lex" +#line 305 "parse.lex" { - /* a word */ - fill(yytext, yyleng); - LEXTRACE("WORD(4) "); - return(WORD); - } + BEGIN INITIAL; + ++sudolineno; + LEXTRACE("\n"); + return(COMMENT); + } /* return newline */ YY_BREAK case 30: YY_RULE_SETUP -#line 319 "parse.lex" +#line 312 "parse.lex" +{ /* throw away space/tabs */ + sawspace = TRUE; /* but remember for fill_args */ + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 316 "parse.lex" +{ + sawspace = TRUE; /* remember for fill_args */ + ++sudolineno; + LEXTRACE("\n\t"); + } /* throw away EOL after \ */ + YY_BREAK +case 32: +YY_RULE_SETUP +#line 322 "parse.lex" +{ + BEGIN INITIAL; + ++sudolineno; + LEXTRACE("\n"); + return(COMMENT); + } /* return comments */ + YY_BREAK +case 33: +YY_RULE_SETUP +#line 329 "parse.lex" { LEXTRACE("ERROR "); return(ERROR); } /* parse error */ YY_BREAK -case 31: +case 34: YY_RULE_SETUP -#line 324 "parse.lex" +#line 334 "parse.lex" ECHO; YY_BREAK -#line 1863 "lex.yy.c" +#line 1557 "lex.yy.c" case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(GOTRUNAS): case YY_STATE_EOF(GOTDEFS): +case YY_STATE_EOF(GOTCMND): +case YY_STATE_EOF(STARTDEFS): +case YY_STATE_EOF(INDEFS): yyterminate(); case YY_END_OF_BUFFER: @@ -2155,7 +1851,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 >= 293 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2190,11 +1886,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 >= 293 ) 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 == 292); return yy_is_jam ? 0 : yy_current_state; } @@ -2753,7 +2449,7 @@ int main() return 0; } #endif -#line 324 "parse.lex" +#line 334 "parse.lex" static void fill(s, len) diff --git a/sudo.tab.c b/sudo.tab.c index 7e92bfd67..c57976f39 100644 --- a/sudo.tab.c +++ b/sudo.tab.c @@ -4,7 +4,7 @@ static char yyrcsid[] #if __GNUC__ == 2 __attribute__ ((unused)) #endif /* __GNUC__ == 2 */ - = "$OpenBSD: skeleton.c,v 1.15 2000/01/27 21:34:23 deraadt Exp $"; + = "$OpenBSD: skeleton.c,v 1.18 2001/11/19 19:02:18 mpech Exp $"; #endif #include #define YYBYACC 1 @@ -18,7 +18,7 @@ static char yyrcsid[] #define YYPREFIX "yy" #line 2 "parse.yacc" /* - * Copyright (c) 1996, 1998-2000 Todd C. Miller + * Copyright (c) 1996, 1998-2001 Todd C. Miller * All rights reserved. * * This code is derived from software contributed by Chris Jepeway @@ -109,6 +109,7 @@ int clearaliases = TRUE; int printmatches = FALSE; int pedantic = FALSE; int keepall = FALSE; +int quiet = FALSE; /* * Alias types @@ -210,7 +211,7 @@ yyerror(s) /* Save the line the first error occured on. */ if (errorlineno == -1) errorlineno = sudolineno ? sudolineno - 1 : 0; - if (s) { + if (s && !quiet) { #ifndef TRACELEXER (void) fprintf(stderr, ">>> sudoers file: %s, line %d <<<\n", s, sudolineno ? sudolineno - 1 : 0); @@ -220,244 +221,260 @@ yyerror(s) } parse_error = TRUE; } -#line 207 "parse.yacc" +#line 208 "parse.yacc" typedef union { char *string; int BOOLEAN; struct sudo_command command; int tok; } YYSTYPE; -#line 231 "sudo.tab.c" +#line 232 "sudo.tab.c" #define COMMAND 257 #define ALIAS 258 -#define NTWKADDR 259 -#define NETGROUP 260 -#define USERGROUP 261 -#define WORD 262 -#define DEFAULTS 263 -#define DEFAULTS_HOST 264 -#define DEFAULTS_USER 265 -#define RUNAS 266 -#define NOPASSWD 267 -#define PASSWD 268 -#define ALL 269 -#define COMMENT 270 -#define HOSTALIAS 271 -#define CMNDALIAS 272 -#define USERALIAS 273 -#define RUNASALIAS 274 -#define ERROR 275 +#define DEFVAR 259 +#define NTWKADDR 260 +#define NETGROUP 261 +#define USERGROUP 262 +#define WORD 263 +#define DEFAULTS 264 +#define DEFAULTS_HOST 265 +#define DEFAULTS_USER 266 +#define RUNAS 267 +#define NOPASSWD 268 +#define PASSWD 269 +#define ALL 270 +#define COMMENT 271 +#define HOSTALIAS 272 +#define CMNDALIAS 273 +#define USERALIAS 274 +#define RUNASALIAS 275 +#define ERROR 276 #define YYERRCODE 256 short yylhs[] = { -1, 0, 0, 7, 7, 9, 7, 7, 7, 7, 7, 7, 15, 16, 18, 16, 20, 16, 17, 17, 21, - 21, 21, 10, 10, 22, 24, 24, 2, 2, 2, - 2, 2, 23, 23, 25, 28, 29, 28, 26, 26, - 5, 5, 4, 30, 4, 3, 3, 3, 3, 3, - 27, 27, 27, 1, 1, 1, 12, 12, 32, 31, - 19, 19, 13, 13, 34, 33, 35, 35, 14, 14, - 37, 36, 11, 11, 39, 38, 8, 8, 40, 40, - 6, 6, 6, 6, 6, + 21, 21, 21, 21, 10, 10, 22, 24, 24, 2, + 2, 2, 2, 2, 23, 23, 25, 28, 29, 28, + 26, 26, 5, 5, 4, 30, 4, 3, 3, 3, + 3, 3, 27, 27, 27, 1, 1, 1, 12, 12, + 32, 31, 19, 19, 13, 13, 34, 33, 35, 35, + 14, 14, 37, 36, 11, 11, 39, 38, 8, 8, + 40, 40, 6, 6, 6, 6, 6, }; short yylen[] = { 2, 1, 2, 1, 2, 0, 3, 2, 2, 2, 2, 1, 2, 1, 0, 3, 0, 3, 1, 3, 1, - 2, 3, 1, 3, 3, 1, 2, 1, 1, 1, - 1, 1, 1, 3, 3, 1, 0, 3, 0, 2, - 1, 3, 1, 0, 3, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, 1, 3, 0, 4, - 1, 3, 1, 3, 0, 4, 1, 3, 1, 3, - 0, 4, 1, 3, 0, 4, 1, 3, 1, 2, - 1, 1, 1, 1, 1, + 2, 3, 3, 3, 1, 3, 3, 1, 2, 1, + 1, 1, 1, 1, 1, 3, 3, 1, 0, 3, + 0, 2, 1, 3, 1, 0, 3, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 1, 1, 3, + 0, 4, 1, 3, 1, 3, 0, 4, 1, 3, + 1, 3, 0, 4, 1, 3, 0, 4, 1, 3, + 1, 2, 1, 1, 1, 1, 1, }; short yydefred[] = { 0, 0, 13, 16, 14, 3, 0, 0, 0, 0, 0, - 1, 0, 11, 0, 4, 0, 0, 59, 0, 57, - 65, 0, 63, 75, 0, 73, 71, 0, 69, 2, - 84, 83, 82, 81, 85, 0, 79, 0, 77, 0, - 0, 12, 0, 32, 29, 30, 31, 28, 0, 26, - 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 0, 0, 0, 23, 0, 21, 0, 27, - 0, 0, 58, 0, 64, 0, 74, 0, 70, 78, - 0, 0, 22, 19, 62, 0, 56, 55, 54, 37, - 36, 67, 0, 0, 49, 48, 47, 46, 50, 44, - 43, 41, 0, 24, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 52, 53, 0, 38, 68, 45, - 42, 34, 35, + 1, 0, 11, 0, 4, 0, 0, 61, 0, 59, + 67, 0, 65, 77, 0, 75, 73, 0, 71, 2, + 86, 85, 84, 83, 87, 0, 81, 0, 79, 0, + 0, 12, 0, 34, 31, 32, 33, 30, 0, 28, + 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 82, 0, 0, 0, 25, 0, 0, 0, 21, + 0, 29, 0, 0, 60, 0, 66, 0, 76, 0, + 72, 80, 0, 0, 22, 23, 24, 19, 64, 0, + 58, 57, 56, 39, 38, 69, 0, 0, 51, 50, + 49, 48, 52, 46, 45, 43, 0, 26, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 54, 55, + 0, 40, 70, 47, 44, 36, 37, }; short yydgoto[] = { 10, - 91, 50, 101, 102, 103, 37, 11, 38, 12, 64, + 95, 50, 105, 106, 107, 37, 11, 38, 12, 64, 25, 19, 22, 28, 13, 14, 42, 17, 65, 16, - 43, 66, 106, 52, 107, 108, 117, 92, 109, 111, - 20, 54, 23, 56, 93, 29, 60, 26, 58, 39, + 43, 66, 110, 52, 111, 112, 121, 96, 113, 115, + 20, 54, 23, 56, 97, 29, 60, 26, 58, 39, }; -short yysindex[] = { -223, - -266, 0, 0, 0, 0, -241, -240, -235, -228, -223, - 0, -30, 0, -17, 0, -25, -30, 0, -27, 0, - 0, -26, 0, 0, -23, 0, 0, -21, 0, 0, - 0, 0, 0, 0, 0, -233, 0, -33, 0, -18, - -224, 0, 2, 0, 0, 0, 0, 0, -203, 0, - 8, 0, 10, -1, -241, 3, -240, 9, -235, 12, - -228, 0, -30, 5, -37, 0, -218, 0, -17, 0, - -25, -25, 0, -11, 0, -30, 0, -20, 0, 0, - -25, -195, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 0, 30, 10, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 0, -20, 35, 0, -258, -243, -11, - -193, -20, 31, -195, 0, 0, -11, 0, 0, 0, - 0, 0, 0, +short yysindex[] = { -236, + -264, 0, 0, 0, 0, -249, -243, -231, -227, -236, + 0, -23, 0, -30, 0, -17, -23, 0, -36, 0, + 0, -26, 0, 0, -14, 0, 0, -7, 0, 0, + 0, 0, 0, 0, 0, -215, 0, -33, 0, -3, + -226, 0, 5, 0, 0, 0, 0, 0, -194, 0, + 6, 0, 8, -5, -249, -4, -243, -2, -231, -1, + -227, 0, -23, 7, -38, 0, -210, -193, -188, 0, + -30, 0, -17, -17, 0, -25, 0, -23, 0, 245, + 0, 0, -17, -189, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 33, 8, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 245, 39, + 0, -251, -244, -25, -190, 245, 38, -189, 0, 0, + -25, 0, 0, 0, 0, 0, 0, }; -short yyrindex[] = { 227, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, - 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, - 0, 134, 0, 0, 153, 0, 0, 172, 0, 0, +short yyrindex[] = { 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, + 0, 141, 0, 0, 161, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, - -14, 0, -12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, + -28, 0, -8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 234, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 39, 58, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 0, 0, 96, 0, 48, 0, 0, - 0, 0, 253, 234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, + 0, 0, 0, 265, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 0, 0, 0, 41, 61, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 101, + 0, -9, 0, 0, 0, 0, 285, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, - -29, 33, -28, -24, -19, 49, 74, -15, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, -10, 0, - 0, 11, 0, 19, -16, 0, 0, -105, 0, 0, - 34, 0, 36, 0, 0, 38, 0, 41, 0, 32, + -29, 36, -27, -24, -22, 50, 79, -15, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 0, -12, 0, + 0, 10, 0, 18, -21, 0, 0, -102, 0, 0, + 40, 0, 43, 0, 0, 35, 0, 44, 0, 42, }; -#define YYTABLESIZE 522 +#define YYTABLESIZE 555 short yytable[] = { 49, - 20, 53, 36, 15, 119, 51, 71, 49, 115, 116, - 63, 123, 100, 87, 88, 41, 18, 21, 17, 60, - 15, 90, 24, 82, 31, 89, 32, 33, 34, 27, - 55, 57, 1, 20, 59, 35, 61, 68, 66, 2, - 3, 4, 67, 83, 20, 69, 5, 6, 7, 8, - 9, 71, 60, 63, 44, 45, 46, 76, 47, 72, - 94, 86, 81, 74, 95, 48, 96, 97, 98, 76, - 105, 66, 78, 110, 112, 99, 72, 60, 114, 118, - 51, 70, 120, 30, 62, 113, 84, 121, 73, 85, - 76, 104, 75, 0, 80, 25, 66, 122, 79, 77, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, - 0, 0, 0, 0, 8, 76, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 0, 9, 72, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, - 0, 0, 7, 25, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, + 20, 53, 41, 51, 17, 73, 15, 94, 18, 36, + 63, 123, 91, 92, 21, 49, 119, 120, 127, 1, + 62, 55, 84, 53, 15, 93, 24, 2, 3, 4, + 27, 57, 70, 20, 5, 6, 7, 8, 9, 68, + 68, 69, 31, 59, 20, 32, 33, 34, 71, 73, + 61, 63, 85, 62, 35, 74, 76, 67, 78, 80, + 78, 90, 98, 44, 83, 45, 46, 99, 47, 86, + 100, 101, 102, 68, 87, 48, 114, 109, 62, 103, + 74, 116, 118, 122, 72, 62, 117, 124, 30, 88, + 89, 125, 108, 78, 75, 81, 126, 0, 68, 77, + 27, 0, 79, 0, 82, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 0, 0, 0, 0, 78, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 74, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 27, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 44, 45, 46, 31, 47, 32, - 33, 34, 44, 45, 46, 48, 47, 95, 35, 96, - 97, 98, 6, 48, 40, 87, 88, 17, 99, 15, - 0, 0, 0, 0, 0, 0, 20, 89, 20, 5, - 20, 20, 20, 20, 20, 20, 39, 0, 0, 20, - 20, 20, 20, 20, 20, 60, 0, 60, 0, 60, - 60, 60, 60, 60, 60, 40, 0, 0, 60, 60, - 60, 60, 60, 60, 66, 0, 66, 0, 66, 66, - 66, 66, 66, 66, 51, 51, 0, 66, 66, 66, - 66, 66, 66, 76, 0, 76, 51, 76, 76, 76, - 76, 76, 76, 0, 0, 0, 76, 76, 76, 76, - 76, 76, 72, 0, 72, 0, 72, 72, 72, 72, - 72, 72, 0, 0, 0, 72, 72, 72, 72, 72, - 72, 25, 0, 25, 0, 25, 25, 25, 25, 25, - 25, 0, 0, 0, 25, 25, 25, 25, 25, 25, - 8, 0, 8, 0, 8, 8, 8, 8, 8, 8, - 0, 0, 0, 8, 8, 8, 8, 8, 8, 9, - 0, 9, 0, 9, 9, 9, 9, 9, 9, 0, - 0, 0, 9, 9, 9, 9, 9, 9, 7, 0, - 7, 0, 7, 7, 7, 7, 7, 7, 0, 0, - 0, 7, 7, 7, 7, 7, 7, 10, 0, 10, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 44, 0, 45, 46, 40, 47, + 17, 91, 92, 18, 31, 0, 48, 32, 33, 34, + 44, 0, 45, 46, 93, 47, 35, 53, 53, 0, + 15, 0, 48, 6, 0, 0, 20, 0, 20, 0, + 53, 20, 20, 20, 20, 20, 20, 0, 0, 0, + 20, 20, 20, 20, 20, 20, 62, 104, 62, 0, + 0, 62, 62, 62, 62, 62, 62, 5, 0, 0, + 62, 62, 62, 62, 62, 62, 68, 41, 68, 0, + 0, 68, 68, 68, 68, 68, 68, 0, 0, 0, + 68, 68, 68, 68, 68, 68, 78, 42, 78, 0, + 0, 78, 78, 78, 78, 78, 78, 0, 0, 0, + 78, 78, 78, 78, 78, 78, 74, 0, 74, 0, + 0, 74, 74, 74, 74, 74, 74, 0, 0, 0, + 74, 74, 74, 74, 74, 74, 27, 0, 27, 0, + 0, 27, 27, 27, 27, 27, 27, 0, 0, 0, + 27, 27, 27, 27, 27, 27, 8, 0, 8, 0, + 0, 8, 8, 8, 8, 8, 8, 0, 0, 0, + 8, 8, 8, 8, 8, 8, 9, 0, 9, 0, + 0, 9, 9, 9, 9, 9, 9, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 7, 0, 7, 0, + 0, 7, 7, 7, 7, 7, 7, 0, 0, 0, + 7, 7, 7, 7, 7, 7, 10, 0, 10, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 18, 0, 18, 0, - 18, 18, 18, 18, 18, 18, 0, 0, 0, 18, - 18, 18, 18, 18, 18, 6, 0, 6, 0, 6, - 6, 6, 6, 6, 6, 0, 0, 0, 6, 6, - 6, 6, 6, 6, 5, 0, 5, 5, 5, 0, - 39, 39, 0, 0, 0, 5, 0, 0, 0, 0, - 39, 39, 39, 0, 0, 0, 0, 0, 0, 40, - 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 40, 40, + 0, 18, 18, 18, 18, 18, 18, 0, 0, 0, + 18, 18, 18, 18, 18, 18, 6, 0, 6, 0, + 0, 6, 6, 6, 6, 6, 6, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, + 0, 0, 99, 0, 0, 100, 101, 102, 0, 0, + 0, 0, 5, 0, 103, 5, 5, 5, 0, 0, + 0, 41, 41, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 41, 41, 41, 0, 0, 0, 0, 0, + 0, 42, 42, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 42, 42, }; short yycheck[] = { 33, - 0, 17, 33, 270, 110, 16, 44, 33, 267, 268, - 44, 117, 33, 257, 258, 33, 258, 258, 33, 0, - 33, 33, 258, 61, 258, 269, 260, 261, 262, 258, - 58, 58, 256, 33, 58, 269, 58, 262, 0, 263, - 264, 265, 61, 262, 44, 44, 270, 271, 272, 273, - 274, 44, 33, 44, 258, 259, 260, 0, 262, 61, - 76, 72, 58, 61, 258, 269, 260, 261, 262, 61, - 266, 33, 61, 44, 44, 269, 0, 58, 44, 109, - 33, 49, 111, 10, 36, 105, 69, 112, 55, 71, - 33, 81, 57, -1, 63, 0, 58, 114, 61, 59, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, - -1, -1, -1, -1, 0, 58, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, - -1, -1, -1, 0, 58, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, - -1, -1, 0, 58, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, - -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, + 0, 17, 33, 16, 33, 44, 271, 33, 258, 33, + 44, 114, 257, 258, 258, 33, 268, 269, 121, 256, + 0, 58, 61, 33, 33, 270, 258, 264, 265, 266, + 258, 58, 259, 33, 271, 272, 273, 274, 275, 43, + 0, 45, 258, 58, 44, 261, 262, 263, 44, 44, + 58, 44, 263, 33, 270, 61, 61, 61, 61, 61, + 0, 74, 78, 258, 58, 260, 261, 258, 263, 263, + 261, 262, 263, 33, 263, 270, 44, 267, 58, 270, + 0, 44, 44, 113, 49, 36, 109, 115, 10, 71, + 73, 116, 83, 33, 55, 61, 118, -1, 58, 57, + 0, -1, 59, -1, 63, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, 58, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, 58, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, 58, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, -1, -1, -1, -1, 0, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, 258, 259, 260, 258, 262, 260, - 261, 262, 258, 259, 260, 269, 262, 258, 269, 260, - 261, 262, 33, 269, 262, 257, 258, 262, 269, 262, - -1, -1, -1, -1, -1, -1, 256, 269, 258, 33, - 260, 261, 262, 263, 264, 265, 33, -1, -1, 269, - 270, 271, 272, 273, 274, 256, -1, 258, -1, 260, - 261, 262, 263, 264, 265, 33, -1, -1, 269, 270, - 271, 272, 273, 274, 256, -1, 258, -1, 260, 261, - 262, 263, 264, 265, 257, 258, -1, 269, 270, 271, - 272, 273, 274, 256, -1, 258, 269, 260, 261, 262, - 263, 264, 265, -1, -1, -1, 269, 270, 271, 272, - 273, 274, 256, -1, 258, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, 269, 270, 271, 272, 273, - 274, 256, -1, 258, -1, 260, 261, 262, 263, 264, - 265, -1, -1, -1, 269, 270, 271, 272, 273, 274, - 256, -1, 258, -1, 260, 261, 262, 263, 264, 265, - -1, -1, -1, 269, 270, 271, 272, 273, 274, 256, - -1, 258, -1, 260, 261, 262, 263, 264, 265, -1, - -1, -1, 269, 270, 271, 272, 273, 274, 256, -1, - 258, -1, 260, 261, 262, 263, 264, 265, -1, -1, - -1, 269, 270, 271, 272, 273, 274, 256, -1, 258, - -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, - 269, 270, 271, 272, 273, 274, 256, -1, 258, -1, - 260, 261, 262, 263, 264, 265, -1, -1, -1, 269, - 270, 271, 272, 273, 274, 256, -1, 258, -1, 260, - 261, 262, 263, 264, 265, -1, -1, -1, 269, 270, - 271, 272, 273, 274, 258, -1, 260, 261, 262, -1, - 257, 258, -1, -1, -1, 269, -1, -1, -1, -1, - 267, 268, 269, -1, -1, -1, -1, -1, -1, 257, - 258, -1, -1, -1, -1, -1, -1, -1, -1, 267, - 268, 269, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, 258, -1, 260, 261, 259, 263, + 259, 257, 258, 33, 258, -1, 270, 261, 262, 263, + 258, -1, 260, 261, 270, 263, 270, 257, 258, -1, + 259, -1, 270, 33, -1, -1, 256, -1, 258, -1, + 270, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, 33, 258, -1, + -1, 261, 262, 263, 264, 265, 266, 33, -1, -1, + 270, 271, 272, 273, 274, 275, 256, 33, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, 33, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, 256, -1, 258, -1, + -1, 261, 262, 263, 264, 265, 266, -1, -1, -1, + 270, 271, 272, 273, 274, 275, -1, -1, -1, -1, + -1, -1, 258, -1, -1, 261, 262, 263, -1, -1, + -1, -1, 258, -1, 270, 261, 262, 263, -1, -1, + -1, 257, 258, -1, 270, -1, -1, -1, -1, -1, + -1, -1, 268, 269, 270, -1, -1, -1, -1, -1, + -1, 257, 258, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 268, 269, 270, }; #define YYFINAL 10 #ifndef YYDEBUG #define YYDEBUG 0 #endif -#define YYMAXTOKEN 275 +#define YYMAXTOKEN 276 #if YYDEBUG -char *yyname[] = { +#if defined(__cplusplus) || __STDC__ +const char * const yyname[] = +#else +char *yyname[] = +#endif + { "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"'!'",0,0,0,0,0,0,0,0,0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,"':'",0,0,"'='",0,0,0, +"'!'",0,0,0,0,0,0,0,0,0,"'+'","','","'-'",0,0,0,0,0,0,0,0,0,0,0,0,"':'",0,0, +"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"COMMAND", -"ALIAS","NTWKADDR","NETGROUP","USERGROUP","WORD","DEFAULTS","DEFAULTS_HOST", -"DEFAULTS_USER","RUNAS","NOPASSWD","PASSWD","ALL","COMMENT","HOSTALIAS", -"CMNDALIAS","USERALIAS","RUNASALIAS","ERROR", +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +"COMMAND","ALIAS","DEFVAR","NTWKADDR","NETGROUP","USERGROUP","WORD","DEFAULTS", +"DEFAULTS_HOST","DEFAULTS_USER","RUNAS","NOPASSWD","PASSWD","ALL","COMMENT", +"HOSTALIAS","CMNDALIAS","USERALIAS","RUNASALIAS","ERROR", }; -char *yyrule[] = { -"$accept : file", +#if defined(__cplusplus) || __STDC__ +const char * const yyrule[] = +#else +char *yyrule[] = +#endif + {"$accept : file", "file : entry", "file : file entry", "entry : COMMENT", @@ -477,9 +494,11 @@ char *yyrule[] = { "defaults_type : DEFAULTS_HOST $$3 hostlist", "defaults_list : defaults_entry", "defaults_list : defaults_entry ',' defaults_list", -"defaults_entry : WORD", -"defaults_entry : '!' WORD", -"defaults_entry : WORD '=' WORD", +"defaults_entry : DEFVAR", +"defaults_entry : '!' DEFVAR", +"defaults_entry : DEFVAR '=' WORD", +"defaults_entry : DEFVAR '+' WORD", +"defaults_entry : DEFVAR '-' WORD", "privileges : privilege", "privileges : privileges ':' privilege", "privilege : hostlist '=' cmndspeclist", @@ -569,7 +588,7 @@ short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; -#line 819 "parse.yacc" +#line 841 "parse.yacc" #define MOREALIASES (32) aliasinfo *aliases = NULL; @@ -920,7 +939,7 @@ init_parser() if (printmatches == TRUE) expand_match_list(); } -#line 924 "sudo.tab.c" +#line 934 "sudo.tab.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ #if defined(__cplusplus) || __STDC__ static int yygrowstack(void) @@ -976,9 +995,13 @@ yyparse(void) yyparse() #endif { - register int yym, yyn, yystate; + int yym, yyn, yystate; #if YYDEBUG - register char *yys; +#if defined(__cplusplus) || __STDC__ + const char *yys; +#else /* !(defined(__cplusplus) || __STDC__) */ + char *yys; +#endif /* !(defined(__cplusplus) || __STDC__) */ if ((yys = getenv("YYDEBUG"))) { @@ -986,7 +1009,7 @@ yyparse() if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } -#endif +#endif /* YYDEBUG */ yynerrs = 0; yyerrflag = 0; @@ -1110,77 +1133,77 @@ yyreduce: switch (yyn) { case 3: -#line 256 "parse.yacc" +#line 258 "parse.yacc" { ; } break; case 4: -#line 258 "parse.yacc" +#line 260 "parse.yacc" { yyerrok; } break; case 5: -#line 259 "parse.yacc" +#line 261 "parse.yacc" { push; } break; case 6: -#line 259 "parse.yacc" +#line 261 "parse.yacc" { while (top && user_matches != TRUE) pop; } break; case 7: -#line 264 "parse.yacc" +#line 266 "parse.yacc" { ; } break; case 8: -#line 266 "parse.yacc" +#line 268 "parse.yacc" { ; } break; case 9: -#line 268 "parse.yacc" +#line 270 "parse.yacc" { ; } break; case 10: -#line 270 "parse.yacc" +#line 272 "parse.yacc" { ; } break; case 11: -#line 272 "parse.yacc" +#line 274 "parse.yacc" { ; } break; case 13: -#line 277 "parse.yacc" +#line 279 "parse.yacc" { defaults_matches = TRUE; } break; case 14: -#line 280 "parse.yacc" +#line 282 "parse.yacc" { push; } break; case 15: -#line 280 "parse.yacc" +#line 282 "parse.yacc" { defaults_matches = user_matches; pop; } break; case 16: -#line 284 "parse.yacc" +#line 286 "parse.yacc" { push; } break; case 17: -#line 284 "parse.yacc" +#line 286 "parse.yacc" { defaults_matches = host_matches; pop; } break; case 20: -#line 293 "parse.yacc" +#line 295 "parse.yacc" { if (defaults_matches == TRUE && - !set_default(yyvsp[0].string, NULL, 1)) { + !set_default(yyvsp[0].string, NULL, TRUE)) { yyerror(NULL); YYERROR; } @@ -1188,10 +1211,10 @@ case 20: } break; case 21: -#line 301 "parse.yacc" +#line 303 "parse.yacc" { if (defaults_matches == TRUE && - !set_default(yyvsp[0].string, NULL, 0)) { + !set_default(yyvsp[0].string, NULL, FALSE)) { yyerror(NULL); YYERROR; } @@ -1199,11 +1222,24 @@ case 21: } break; case 22: -#line 309 "parse.yacc" +#line 311 "parse.yacc" +{ + /* XXX - need to support quoted values */ + if (defaults_matches == TRUE && + !set_default(yyvsp[-2].string, yyvsp[0].string, TRUE)) { + yyerror(NULL); + YYERROR; + } + free(yyvsp[-2].string); + free(yyvsp[0].string); + } +break; +case 23: +#line 321 "parse.yacc" { /* XXX - need to support quoted values */ if (defaults_matches == TRUE && - !set_default(yyvsp[-2].string, yyvsp[0].string, 1)) { + !set_default(yyvsp[-2].string, yyvsp[0].string, '+')) { yyerror(NULL); YYERROR; } @@ -1211,8 +1247,21 @@ case 22: free(yyvsp[0].string); } break; -case 25: -#line 324 "parse.yacc" +case 24: +#line 331 "parse.yacc" +{ + /* XXX - need to support quoted values */ + if (defaults_matches == TRUE && + !set_default(yyvsp[-2].string, yyvsp[0].string, '-')) { + yyerror(NULL); + YYERROR; + } + free(yyvsp[-2].string); + free(yyvsp[0].string); + } +break; +case 27: +#line 346 "parse.yacc" { /* * We already did a push if necessary in @@ -1227,28 +1276,28 @@ case 25: no_passwd = TRUE; } break; -case 26: -#line 339 "parse.yacc" +case 28: +#line 361 "parse.yacc" { if (yyvsp[0].BOOLEAN != -1) host_matches = yyvsp[0].BOOLEAN; } break; -case 27: -#line 343 "parse.yacc" +case 29: +#line 365 "parse.yacc" { if (yyvsp[0].BOOLEAN != -1) host_matches = ! yyvsp[0].BOOLEAN; } break; -case 28: -#line 348 "parse.yacc" +case 30: +#line 370 "parse.yacc" { yyval.BOOLEAN = TRUE; } break; -case 29: -#line 351 "parse.yacc" +case 31: +#line 373 "parse.yacc" { if (addr_matches(yyvsp[0].string)) yyval.BOOLEAN = TRUE; @@ -1257,8 +1306,8 @@ case 29: free(yyvsp[0].string); } break; -case 30: -#line 358 "parse.yacc" +case 32: +#line 380 "parse.yacc" { if (netgr_matches(yyvsp[0].string, user_host, user_shost, NULL)) yyval.BOOLEAN = TRUE; @@ -1267,8 +1316,8 @@ case 30: free(yyvsp[0].string); } break; -case 31: -#line 365 "parse.yacc" +case 33: +#line 387 "parse.yacc" { if (hostname_matches(user_shost, user_host, yyvsp[0].string) == 0) yyval.BOOLEAN = TRUE; @@ -1277,8 +1326,8 @@ case 31: free(yyvsp[0].string); } break; -case 32: -#line 372 "parse.yacc" +case 34: +#line 394 "parse.yacc" { aliasinfo *aip = find_alias(yyvsp[0].string, HOST_ALIAS); @@ -1302,8 +1351,8 @@ case 32: free(yyvsp[0].string); } break; -case 35: -#line 400 "parse.yacc" +case 37: +#line 422 "parse.yacc" { /* * Push the entry onto the stack if it is worth @@ -1330,15 +1379,15 @@ case 35: cmnd_matches = -1; } break; -case 36: -#line 427 "parse.yacc" +case 38: +#line 449 "parse.yacc" { if (yyvsp[0].BOOLEAN != -1) cmnd_matches = yyvsp[0].BOOLEAN; } break; -case 37: -#line 431 "parse.yacc" +case 39: +#line 453 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) @@ -1349,15 +1398,15 @@ case 37: } } break; -case 38: -#line 439 "parse.yacc" +case 40: +#line 461 "parse.yacc" { if (yyvsp[0].BOOLEAN != -1) cmnd_matches = ! yyvsp[0].BOOLEAN; } break; -case 39: -#line 445 "parse.yacc" +case 41: +#line 467 "parse.yacc" { if (printmatches == TRUE && host_matches == TRUE && user_matches == TRUE) { @@ -1382,18 +1431,18 @@ case 39: def_str(I_RUNAS_DEFAULT)) == 0); } break; -case 40: -#line 468 "parse.yacc" +case 42: +#line 490 "parse.yacc" { runas_matches = (yyvsp[0].BOOLEAN == TRUE ? TRUE : FALSE); } break; -case 41: -#line 473 "parse.yacc" +case 43: +#line 495 "parse.yacc" { ; } break; -case 42: -#line 474 "parse.yacc" +case 44: +#line 496 "parse.yacc" { /* Later entries override earlier ones. */ if (yyvsp[0].BOOLEAN != -1) @@ -1402,12 +1451,12 @@ case 42: yyval.BOOLEAN = yyvsp[-2].BOOLEAN; } break; -case 43: -#line 483 "parse.yacc" +case 45: +#line 505 "parse.yacc" { ; } break; -case 44: -#line 484 "parse.yacc" +case 46: +#line 506 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) @@ -1418,15 +1467,15 @@ case 44: } } break; -case 45: -#line 492 "parse.yacc" +case 47: +#line 514 "parse.yacc" { /* Set $$ to the negation of runasuser */ yyval.BOOLEAN = (yyvsp[0].BOOLEAN == -1 ? -1 : ! yyvsp[0].BOOLEAN); } break; -case 46: -#line 497 "parse.yacc" +case 48: +#line 519 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) @@ -1442,8 +1491,8 @@ case 46: free(yyvsp[0].string); } break; -case 47: -#line 511 "parse.yacc" +case 49: +#line 533 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) @@ -1459,8 +1508,8 @@ case 47: free(yyvsp[0].string); } break; -case 48: -#line 525 "parse.yacc" +case 50: +#line 547 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) @@ -1476,8 +1525,8 @@ case 48: free(yyvsp[0].string); } break; -case 49: -#line 539 "parse.yacc" +case 51: +#line 561 "parse.yacc" { aliasinfo *aip = find_alias(yyvsp[0].string, RUNAS_ALIAS); @@ -1508,8 +1557,8 @@ case 49: free(yyvsp[0].string); } break; -case 50: -#line 568 "parse.yacc" +case 52: +#line 590 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) @@ -1521,8 +1570,8 @@ case 50: yyval.BOOLEAN = TRUE; } break; -case 51: -#line 580 "parse.yacc" +case 53: +#line 602 "parse.yacc" { /* Inherit NOPASSWD/PASSWD status. */ if (printmatches == TRUE && host_matches == TRUE && @@ -1534,8 +1583,8 @@ case 51: } } break; -case 52: -#line 590 "parse.yacc" +case 54: +#line 612 "parse.yacc" { no_passwd = TRUE; if (printmatches == TRUE && host_matches == TRUE && @@ -1543,8 +1592,8 @@ case 52: cm_list[cm_list_len].nopasswd = TRUE; } break; -case 53: -#line 596 "parse.yacc" +case 55: +#line 618 "parse.yacc" { no_passwd = FALSE; if (printmatches == TRUE && host_matches == TRUE && @@ -1552,8 +1601,8 @@ case 53: cm_list[cm_list_len].nopasswd = FALSE; } break; -case 54: -#line 604 "parse.yacc" +case 56: +#line 626 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) @@ -1572,8 +1621,8 @@ case 54: safe_cmnd = estrdup(user_cmnd); } break; -case 55: -#line 621 "parse.yacc" +case 57: +#line 643 "parse.yacc" { aliasinfo *aip; @@ -1604,8 +1653,8 @@ case 55: free(yyvsp[0].string); } break; -case 56: -#line 650 "parse.yacc" +case 58: +#line 672 "parse.yacc" { if (printmatches == TRUE) { if (in_alias == TRUE) { @@ -1633,12 +1682,12 @@ case 56: free(yyvsp[0].command.args); } break; -case 59: -#line 682 "parse.yacc" +case 61: +#line 704 "parse.yacc" { push; } break; -case 60: -#line 682 "parse.yacc" +case 62: +#line 704 "parse.yacc" { if ((host_matches != -1 || pedantic) && !add_alias(yyvsp[-3].string, HOST_ALIAS, host_matches)) @@ -1646,8 +1695,8 @@ case 60: pop; } break; -case 65: -#line 698 "parse.yacc" +case 67: +#line 720 "parse.yacc" { push; if (printmatches == TRUE) { @@ -1659,8 +1708,8 @@ case 65: } } break; -case 66: -#line 707 "parse.yacc" +case 68: +#line 729 "parse.yacc" { if ((cmnd_matches != -1 || pedantic) && !add_alias(yyvsp[-3].string, CMND_ALIAS, cmnd_matches)) @@ -1672,12 +1721,12 @@ case 66: in_alias = FALSE; } break; -case 67: -#line 719 "parse.yacc" +case 69: +#line 741 "parse.yacc" { ; } break; -case 71: -#line 727 "parse.yacc" +case 73: +#line 749 "parse.yacc" { if (printmatches == TRUE) { in_alias = TRUE; @@ -1688,8 +1737,8 @@ case 71: } } break; -case 72: -#line 735 "parse.yacc" +case 74: +#line 757 "parse.yacc" { if ((yyvsp[0].BOOLEAN != -1 || pedantic) && !add_alias(yyvsp[-3].string, RUNAS_ALIAS, yyvsp[0].BOOLEAN)) @@ -1700,12 +1749,12 @@ case 72: in_alias = FALSE; } break; -case 75: -#line 750 "parse.yacc" +case 77: +#line 772 "parse.yacc" { push; } break; -case 76: -#line 750 "parse.yacc" +case 78: +#line 772 "parse.yacc" { if ((user_matches != -1 || pedantic) && !add_alias(yyvsp[-3].string, USER_ALIAS, user_matches)) @@ -1714,22 +1763,22 @@ case 76: free(yyvsp[-3].string); } break; -case 79: -#line 763 "parse.yacc" +case 81: +#line 785 "parse.yacc" { if (yyvsp[0].BOOLEAN != -1) user_matches = yyvsp[0].BOOLEAN; } break; -case 80: -#line 767 "parse.yacc" +case 82: +#line 789 "parse.yacc" { if (yyvsp[0].BOOLEAN != -1) user_matches = ! yyvsp[0].BOOLEAN; } break; -case 81: -#line 772 "parse.yacc" +case 83: +#line 794 "parse.yacc" { if (strcmp(yyvsp[0].string, user_name) == 0) yyval.BOOLEAN = TRUE; @@ -1738,8 +1787,8 @@ case 81: free(yyvsp[0].string); } break; -case 82: -#line 779 "parse.yacc" +case 84: +#line 801 "parse.yacc" { if (usergr_matches(yyvsp[0].string, user_name)) yyval.BOOLEAN = TRUE; @@ -1748,8 +1797,8 @@ case 82: free(yyvsp[0].string); } break; -case 83: -#line 786 "parse.yacc" +case 85: +#line 808 "parse.yacc" { if (netgr_matches(yyvsp[0].string, NULL, NULL, user_name)) yyval.BOOLEAN = TRUE; @@ -1758,8 +1807,8 @@ case 83: free(yyvsp[0].string); } break; -case 84: -#line 793 "parse.yacc" +case 86: +#line 815 "parse.yacc" { aliasinfo *aip = find_alias(yyvsp[0].string, USER_ALIAS); @@ -1781,13 +1830,13 @@ case 84: free(yyvsp[0].string); } break; -case 85: -#line 813 "parse.yacc" +case 87: +#line 835 "parse.yacc" { yyval.BOOLEAN = TRUE; } break; -#line 1791 "sudo.tab.c" +#line 1831 "sudo.tab.c" } yyssp -= yym; yystate = *yyssp; diff --git a/sudo.tab.h b/sudo.tab.h index c07b2d084..71b1255f6 100644 --- a/sudo.tab.h +++ b/sudo.tab.h @@ -1,22 +1,23 @@ #define COMMAND 257 #define ALIAS 258 -#define NTWKADDR 259 -#define NETGROUP 260 -#define USERGROUP 261 -#define WORD 262 -#define DEFAULTS 263 -#define DEFAULTS_HOST 264 -#define DEFAULTS_USER 265 -#define RUNAS 266 -#define NOPASSWD 267 -#define PASSWD 268 -#define ALL 269 -#define COMMENT 270 -#define HOSTALIAS 271 -#define CMNDALIAS 272 -#define USERALIAS 273 -#define RUNASALIAS 274 -#define ERROR 275 +#define DEFVAR 259 +#define NTWKADDR 260 +#define NETGROUP 261 +#define USERGROUP 262 +#define WORD 263 +#define DEFAULTS 264 +#define DEFAULTS_HOST 265 +#define DEFAULTS_USER 266 +#define RUNAS 267 +#define NOPASSWD 268 +#define PASSWD 269 +#define ALL 270 +#define COMMENT 271 +#define HOSTALIAS 272 +#define CMNDALIAS 273 +#define USERALIAS 274 +#define RUNASALIAS 275 +#define ERROR 276 typedef union { char *string; int BOOLEAN;