2 /* $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $ */
4 /* A lexical scanner generated by flex */
6 /* Scanner skeleton version:
7 * $Header: /cvs/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
11 #define YY_FLEX_MAJOR_VERSION 2
12 #define YY_FLEX_MINOR_VERSION 5
18 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
31 /* Use prototypes in function declarations. */
34 /* The "const" storage-class-modifier is valid. */
37 #else /* ! __cplusplus */
45 #endif /* ! __cplusplus */
64 #define YY_PROTO(proto) proto
66 #define YY_PROTO(proto) ()
69 /* Returned upon end-of-file. */
72 /* Promotes a possibly negative, possibly signed char to an unsigned
73 * integer for use as an array index. If the signed char is negative,
74 * we want to instead treat it as an 8-bit unsigned char, hence the
77 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
79 /* Enter a start condition. This macro really ought to take a parameter,
80 * but we do it the disgusting crufty way forced on us by the ()-less
81 * definition of BEGIN.
83 #define BEGIN yy_start = 1 + 2 *
85 /* Translate the current start state into a value that can be later handed
86 * to BEGIN to return to the state. The YYSTATE alias is for lex
89 #define YY_START ((yy_start - 1) / 2)
90 #define YYSTATE YY_START
92 /* Action number for EOF rule of a given start state. */
93 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
95 /* Special action meaning "start processing a new file". */
96 #define YY_NEW_FILE yyrestart( yyin )
98 #define YY_END_OF_BUFFER_CHAR 0
100 /* Size of default input buffer. */
101 #define YY_BUF_SIZE 16384
103 typedef struct yy_buffer_state *YY_BUFFER_STATE;
106 extern FILE *yyin, *yyout;
108 #define EOB_ACT_CONTINUE_SCAN 0
109 #define EOB_ACT_END_OF_FILE 1
110 #define EOB_ACT_LAST_MATCH 2
112 /* The funky do-while in the following #define is used to turn the definition
113 * int a single C statement (which needs a semi-colon terminator). This
114 * avoids problems with code like:
116 * if ( condition_holds )
119 * do_something_else();
121 * Prior to using the do-while the compiler would get upset at the
122 * "else" because it interpreted the "if" statement as being all
123 * done when it reached the ';' after the yyless() call.
126 /* Return all but the first 'n' matched characters back to the input stream. */
131 /* Undo effects of setting up yytext. */ \
132 *yy_cp = yy_hold_char; \
133 YY_RESTORE_YY_MORE_OFFSET \
134 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
135 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
139 #define unput(c) yyunput( c, yytext_ptr )
141 /* The following is because we cannot portably get our hands on size_t
142 * (without autoconf's help, which isn't available because we want
143 * flex-generated scanners to compile on their own).
145 typedef unsigned int yy_size_t;
148 struct yy_buffer_state
152 char *yy_ch_buf; /* input buffer */
153 char *yy_buf_pos; /* current position in input buffer */
155 /* Size of input buffer in bytes, not including room for EOB
158 yy_size_t yy_buf_size;
160 /* Number of characters read into yy_ch_buf, not including EOB
165 /* Whether we "own" the buffer - i.e., we know we created it,
166 * and can realloc() it to grow it, and should free() it to
169 int yy_is_our_buffer;
171 /* Whether this is an "interactive" input source; if so, and
172 * if we're using stdio for input, then we want to use getc()
173 * instead of fread(), to make sure we stop fetching input after
176 int yy_is_interactive;
178 /* Whether we're considered to be at the beginning of a line.
179 * If so, '^' rules will be active on the next match, otherwise
184 /* Whether to try to fill the input buffer when we reach the
189 int yy_buffer_status;
190 #define YY_BUFFER_NEW 0
191 #define YY_BUFFER_NORMAL 1
192 /* When an EOF's been seen but there's still some text to process
193 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
194 * shouldn't try reading from the input source any more. We might
195 * still have a bunch of tokens to match, though, because of
196 * possible backing-up.
198 * When we actually see the EOF, we change the status to "new"
199 * (via yyrestart()), so that the user can continue scanning by
200 * just pointing yyin at a new input file.
202 #define YY_BUFFER_EOF_PENDING 2
205 static YY_BUFFER_STATE yy_current_buffer = 0;
207 /* We provide macros for accessing buffer states in case in the
208 * future we want to put the buffer states in a more general
211 #define YY_CURRENT_BUFFER yy_current_buffer
214 /* yy_hold_char holds the character lost when yytext is formed. */
215 static char yy_hold_char;
217 static int yy_n_chars; /* number of characters read into yy_ch_buf */
222 /* Points to current character in buffer. */
223 static char *yy_c_buf_p = (char *) 0;
224 static int yy_init = 1; /* whether we need to initialize */
225 static int yy_start = 0; /* start state number */
227 /* Flag which is used to allow yywrap()'s to do buffer switches
228 * instead of setting up a fresh yyin. A bit of a hack ...
230 static int yy_did_buffer_switch_on_eof;
232 void yyrestart YY_PROTO(( FILE *input_file ));
234 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
235 void yy_load_buffer_state YY_PROTO(( void ));
236 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
237 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
238 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
239 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
240 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
242 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
243 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
244 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
246 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
247 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
248 static void yy_flex_free YY_PROTO(( void * ));
250 #define yy_new_buffer yy_create_buffer
252 #define yy_set_interactive(is_interactive) \
254 if ( ! yy_current_buffer ) \
255 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
256 yy_current_buffer->yy_is_interactive = is_interactive; \
259 #define yy_set_bol(at_bol) \
261 if ( ! yy_current_buffer ) \
262 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
263 yy_current_buffer->yy_at_bol = at_bol; \
266 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
270 #define YY_SKIP_YYWRAP
271 typedef unsigned char YY_CHAR;
272 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
273 typedef int yy_state_type;
275 #define yytext_ptr yytext
277 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
278 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
279 static int yy_get_next_buffer YY_PROTO(( void ));
280 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
282 /* Done after the current pattern has been matched and before the
283 * corresponding action - sets up yytext.
285 #define YY_DO_BEFORE_ACTION \
286 yytext_ptr = yy_bp; \
287 yyleng = (int) (yy_cp - yy_bp); \
288 yy_hold_char = *yy_cp; \
292 #define YY_NUM_RULES 59
293 #define YY_END_OF_BUFFER 60
294 static yyconst short int yy_accept[607] =
296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
297 0, 0, 60, 47, 55, 54, 53, 46, 58, 32,
298 48, 49, 32, 50, 47, 47, 47, 47, 52, 51,
299 58, 42, 42, 42, 42, 42, 42, 42, 42, 42,
300 42, 58, 47, 47, 55, 58, 42, 42, 42, 42,
301 42, 2, 58, 1, 47, 47, 17, 16, 17, 16,
302 16, 58, 58, 58, 3, 9, 8, 9, 4, 9,
303 5, 58, 13, 13, 13, 11, 12, 47, 0, 55,
304 53, 0, 57, 0, 47, 34, 0, 32, 0, 33,
305 0, 45, 45, 0, 47, 47, 0, 47, 47, 47,
307 47, 0, 37, 42, 42, 42, 42, 42, 42, 42,
308 42, 42, 42, 47, 56, 47, 55, 0, 0, 0,
309 0, 0, 0, 47, 47, 47, 47, 47, 2, 1,
310 0, 1, 43, 43, 0, 47, 17, 17, 15, 14,
311 15, 0, 0, 3, 9, 0, 6, 7, 9, 9,
312 13, 0, 13, 13, 0, 10, 0, 0, 0, 34,
313 34, 0, 0, 47, 47, 47, 47, 47, 0, 0,
314 37, 37, 42, 39, 42, 42, 42, 42, 42, 42,
315 42, 42, 42, 42, 47, 0, 0, 0, 0, 0,
316 0, 47, 47, 47, 47, 47, 0, 47, 10, 0,
318 47, 47, 47, 47, 47, 47, 0, 38, 38, 38,
319 0, 0, 37, 37, 37, 37, 37, 37, 37, 42,
320 42, 42, 42, 42, 42, 42, 42, 40, 42, 41,
321 47, 0, 0, 0, 0, 0, 0, 47, 47, 47,
322 47, 47, 47, 47, 0, 0, 38, 38, 38, 0,
323 37, 37, 0, 37, 37, 37, 37, 37, 37, 37,
324 37, 37, 37, 37, 0, 25, 42, 42, 42, 42,
325 42, 42, 42, 42, 47, 0, 0, 0, 0, 47,
326 47, 47, 47, 47, 47, 47, 47, 0, 38, 0,
327 37, 37, 37, 0, 0, 0, 37, 37, 37, 37,
329 37, 37, 37, 37, 37, 37, 37, 37, 37, 42,
330 42, 42, 42, 42, 42, 42, 42, 47, 0, 0,
331 0, 47, 47, 47, 35, 35, 35, 0, 0, 37,
332 37, 37, 37, 37, 37, 37, 0, 0, 0, 0,
333 0, 37, 37, 37, 37, 37, 37, 37, 37, 37,
334 37, 37, 37, 37, 37, 42, 42, 0, 24, 42,
335 42, 42, 42, 0, 23, 0, 26, 47, 0, 0,
336 0, 47, 47, 47, 47, 35, 35, 35, 35, 0,
337 37, 0, 37, 37, 37, 37, 37, 37, 37, 37,
338 37, 37, 37, 0, 0, 0, 37, 37, 37, 37,
340 37, 37, 37, 37, 37, 37, 37, 37, 37, 42,
341 42, 42, 42, 42, 42, 44, 0, 0, 0, 47,
342 20, 43, 36, 36, 36, 36, 37, 0, 0, 0,
343 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
344 37, 37, 37, 0, 0, 0, 0, 0, 37, 37,
345 37, 37, 37, 37, 37, 37, 42, 42, 42, 42,
346 0, 22, 0, 27, 0, 20, 0, 0, 47, 0,
347 47, 47, 47, 36, 36, 36, 36, 0, 0, 0,
348 0, 0, 37, 37, 37, 37, 37, 37, 37, 37,
349 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
351 37, 37, 0, 30, 42, 42, 42, 0, 0, 0,
352 21, 20, 0, 0, 0, 0, 0, 20, 0, 47,
353 47, 47, 0, 0, 0, 37, 37, 37, 37, 37,
354 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
355 37, 37, 37, 0, 28, 42, 42, 21, 0, 18,
356 0, 0, 20, 47, 47, 47, 47, 47, 0, 0,
357 0, 0, 0, 37, 37, 37, 37, 37, 37, 37,
358 37, 0, 31, 42, 0, 47, 47, 47, 37, 37,
359 37, 37, 37, 37, 0, 29, 0, 47, 47, 47,
360 47, 47, 37, 37, 37, 37, 37, 0, 19, 35,
362 35, 35, 35, 35, 35, 0
365 static yyconst int yy_ec[256] =
367 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
368 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
369 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
370 1, 2, 4, 5, 6, 1, 7, 1, 1, 8,
371 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
372 19, 20, 21, 22, 22, 22, 23, 24, 1, 1,
373 25, 26, 10, 27, 28, 29, 30, 31, 32, 29,
374 33, 34, 35, 36, 36, 37, 36, 38, 39, 40,
375 36, 41, 42, 43, 44, 45, 46, 47, 48, 36,
376 10, 49, 10, 1, 50, 1, 51, 52, 53, 54,
378 55, 56, 57, 57, 58, 57, 57, 59, 60, 61,
379 62, 57, 57, 63, 64, 65, 66, 57, 57, 57,
380 57, 57, 1, 1, 1, 1, 1, 1, 1, 1,
381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
385 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
386 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
387 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
389 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
390 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
391 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
392 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
393 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
397 static yyconst int yy_meta[67] =
399 1, 2, 3, 4, 5, 6, 1, 7, 7, 1,
400 1, 8, 1, 9, 10, 11, 11, 11, 11, 11,
401 11, 11, 11, 12, 13, 7, 1, 11, 11, 11,
402 11, 11, 1, 1, 1, 1, 1, 1, 1, 1,
403 1, 1, 1, 1, 1, 1, 1, 1, 14, 15,
404 16, 16, 16, 16, 16, 16, 15, 15, 15, 15,
405 15, 15, 15, 15, 15, 15
408 static yyconst short int yy_base[671] =
410 0, 65, 67, 72, 99, 114, 162, 227, 292, 340,
411 86, 125, 2840, 2790, 2836, 3665, 2833, 3665, 387, 70,
412 3665, 3665, 2771, 3665, 136, 397, 133, 159, 2795, 3665,
413 3665, 453, 2781, 33, 504, 2770, 2767, 2777, 2765, 2771,
414 2754, 559, 170, 19, 165, 583, 38, 49, 2739, 68,
415 2727, 81, 219, 2771, 305, 48, 0, 3665, 2761, 3665,
416 0, 250, 639, 119, 0, 2709, 3665, 108, 3665, 112,
417 3665, 140, 2699, 98, 121, 3665, 195, 2693, 661, 2739,
418 2736, 2736, 3665, 227, 247, 300, 316, 152, 354, 2681,
419 686, 373, 2670, 711, 352, 722, 2692, 2669, 375, 414,
421 302, 2656, 57, 763, 0, 2628, 2625, 2614, 505, 2602,
422 2606, 2599, 2601, 202, 3665, 153, 546, 2572, 2565, 2549,
423 2537, 2524, 200, 110, 244, 28, 111, 252, 171, 2578,
424 422, 2577, 565, 2529, 818, 262, 0, 2573, 179, 3665,
425 3665, 599, 269, 0, 2513, 453, 3665, 3665, 2512, 548,
426 2490, 2533, 206, 253, 323, 2535, 2524, 2513, 607, 615,
427 306, 722, 586, 831, 867, 903, 939, 2499, 2456, 980,
428 333, 1022, 1063, 0, 2430, 2394, 2363, 2364, 2374, 2369,
429 2327, 2330, 2329, 2328, 266, 2289, 2283, 2272, 2274, 2279,
430 409, 334, 2279, 145, 335, 83, 672, 278, 2327, 2325,
432 627, 259, 1106, 1142, 741, 210, 2293, 2279, 683, 513,
433 2275, 2271, 352, 747, 1178, 780, 788, 1220, 815, 2270,
434 400, 325, 2261, 2258, 2248, 2246, 2242, 0, 2240, 0,
435 489, 2223, 2213, 2198, 2211, 2198, 420, 407, 529, 490,
436 491, 1263, 1299, 1335, 2235, 2234, 839, 2234, 2232, 2228,
437 2226, 528, 848, 657, 856, 665, 1371, 0, 877, 1382,
438 886, 894, 1424, 913, 570, 3665, 2208, 2197, 2198, 2177,
439 2184, 2193, 2190, 2169, 558, 2145, 2098, 2099, 648, 626,
440 530, 559, 923, 336, 1467, 1503, 964, 2138, 2137, 2108,
441 2086, 1537, 551, 1000, 1041, 1082, 653, 694, 797, 1049,
443 923, 1580, 0, 1116, 1591, 1090, 1008, 1633, 1125, 2069,
444 2065, 747, 686, 2046, 2005, 786, 926, 905, 2014, 1982,
445 679, 634, 544, 915, 1675, 1710, 1745, 2015, 1978, 1962,
446 1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273,
447 1207, 950, 951, 962, 991, 1247, 1073, 1865, 0, 1283,
448 1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924,
449 1898, 1893, 1873, 1286, 3665, 1336, 3665, 707, 1790, 1783,
450 786, 930, 764, 1298, 1358, 1041, 1960, 1995, 1400, 1823,
451 1799, 1348, 708, 1406, 1348, 2031, 0, 559, 2042, 1441,
452 1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548,
454 1557, 1602, 2126, 0, 1613, 2137, 1650, 1565, 1660, 1765,
455 1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577, 897, 938,
456 1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731,
457 1563, 1478, 1504, 1694, 1524, 2324, 0, 617, 2335, 1753,
458 1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358,
459 1887, 714, 825, 2419, 0, 926, 1407, 1508, 1506, 1471,
460 1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910,
461 1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005,
462 2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501, 0,
463 1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769,
465 1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118, 384,
466 1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596,
467 2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362,
468 2043, 2704, 0, 1224, 2715, 2403, 2437, 2445, 992, 2454,
469 2474, 2483, 903, 1921, 3665, 1941, 839, 3665, 843, 3665,
470 1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579, 811,
471 2607, 2617, 2642, 640, 629, 2109, 535, 447, 2650, 0,
472 1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684,
473 2692, 337, 0, 333, 2067, 3665, 327, 2733, 1912, 2938,
474 2974, 2743, 3665, 2767, 2777, 2658, 3665, 166, 3665, 2805,
476 2813, 2847, 63, 2855, 2881, 3665, 3023, 3039, 3055, 3071,
477 3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205,
478 3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346,
479 3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409,
480 3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477,
481 3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567,
482 3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648
485 static yyconst short int yy_def[671] =
487 606, 1, 1, 1, 607, 607, 608, 608, 609, 609,
488 610, 610, 606, 611, 606, 606, 606, 606, 612, 613,
489 606, 606, 614, 606, 615, 611, 26, 26, 616, 606,
490 606, 606, 32, 32, 32, 35, 35, 35, 35, 35,
491 35, 611, 26, 611, 606, 612, 32, 32, 35, 35,
492 35, 606, 606, 606, 617, 611, 618, 606, 618, 606,
493 618, 606, 612, 606, 619, 620, 606, 620, 606, 620,
494 606, 621, 622, 622, 622, 606, 606, 611, 611, 606,
495 606, 623, 606, 624, 606, 613, 606, 625, 613, 614,
496 614, 615, 626, 611, 611, 26, 616, 96, 96, 96,
498 96, 627, 628, 35, 35, 35, 35, 35, 35, 35,
499 35, 35, 35, 611, 606, 611, 606, 606, 606, 606,
500 606, 606, 623, 611, 96, 611, 611, 611, 606, 606,
501 606, 606, 617, 629, 611, 611, 618, 618, 606, 606,
502 606, 624, 606, 619, 620, 620, 606, 606, 620, 620,
503 622, 606, 622, 622, 606, 606, 623, 630, 606, 606,
504 625, 625, 606, 611, 611, 611, 96, 167, 631, 606,
505 632, 606, 104, 35, 35, 35, 35, 35, 35, 35,
506 35, 35, 35, 35, 611, 606, 606, 606, 606, 606,
507 623, 611, 167, 611, 611, 611, 606, 611, 606, 630,
509 611, 611, 611, 611, 611, 611, 633, 634, 634, 209,
510 635, 634, 636, 172, 606, 215, 215, 606, 215, 35,
511 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
512 611, 606, 606, 606, 606, 606, 623, 611, 611, 611,
513 611, 611, 611, 611, 606, 637, 637, 247, 637, 638,
514 639, 640, 606, 641, 218, 641, 641, 257, 641, 606,
515 260, 260, 606, 260, 606, 606, 35, 35, 35, 35,
516 35, 35, 35, 35, 611, 606, 606, 606, 623, 611,
517 611, 611, 611, 611, 611, 611, 611, 642, 642, 643,
518 644, 606, 606, 606, 606, 606, 645, 645, 646, 263,
520 646, 646, 302, 646, 606, 305, 305, 606, 305, 35,
521 35, 35, 35, 35, 35, 35, 35, 611, 606, 606,
522 623, 611, 611, 611, 611, 611, 611, 606, 647, 648,
523 292, 606, 332, 332, 606, 332, 606, 606, 606, 606,
524 606, 606, 649, 649, 650, 308, 650, 650, 348, 650,
525 606, 351, 351, 606, 351, 35, 35, 606, 606, 35,
526 35, 35, 35, 606, 606, 606, 606, 611, 606, 606,
527 623, 611, 611, 611, 611, 611, 611, 611, 611, 606,
528 651, 606, 652, 335, 652, 652, 386, 386, 606, 389,
529 389, 606, 389, 606, 606, 606, 606, 653, 653, 654,
531 354, 654, 654, 403, 654, 606, 406, 406, 406, 35,
532 35, 35, 35, 35, 35, 611, 606, 606, 623, 611,
533 611, 611, 611, 611, 611, 611, 606, 606, 606, 606,
534 655, 655, 656, 392, 656, 656, 436, 436, 606, 439,
535 439, 606, 439, 606, 606, 606, 606, 606, 606, 657,
536 657, 658, 658, 658, 454, 454, 35, 35, 35, 35,
537 606, 606, 606, 606, 606, 606, 623, 623, 611, 659,
538 660, 611, 611, 611, 611, 611, 611, 606, 606, 606,
539 606, 606, 606, 661, 661, 662, 442, 662, 662, 489,
540 489, 606, 492, 492, 606, 492, 606, 606, 606, 606,
542 663, 663, 606, 606, 35, 35, 35, 606, 664, 623,
543 611, 659, 659, 659, 659, 606, 659, 660, 660, 611,
544 611, 611, 606, 606, 606, 606, 665, 665, 666, 495,
545 666, 666, 532, 532, 606, 535, 535, 535, 606, 606,
546 606, 606, 606, 606, 606, 35, 35, 606, 664, 606,
547 623, 606, 606, 611, 611, 611, 611, 611, 606, 606,
548 606, 606, 606, 606, 667, 667, 668, 668, 668, 569,
549 569, 606, 606, 35, 623, 611, 611, 611, 606, 606,
550 606, 606, 669, 669, 606, 606, 670, 611, 611, 611,
551 611, 611, 606, 606, 606, 606, 606, 670, 606, 611,
553 611, 611, 611, 611, 611, 0, 606, 606, 606, 606,
554 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
555 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
556 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
557 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
558 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
559 606, 606, 606, 606, 606, 606, 606, 606, 606, 606
562 static yyconst short int yy_nxt[3732] =
564 14, 15, 16, 17, 18, 19, 20, 21, 22, 14,
565 23, 24, 14, 14, 25, 26, 27, 28, 26, 26,
566 26, 26, 26, 29, 30, 31, 14, 32, 33, 33,
567 33, 34, 35, 35, 35, 35, 36, 37, 35, 38,
568 39, 40, 41, 35, 35, 35, 35, 35, 42, 14,
569 43, 43, 43, 43, 43, 43, 14, 14, 14, 14,
570 14, 14, 14, 44, 14, 14, 45, 79, 52, 105,
571 46, 170, 53, 52, 105, 87, 79, 53, 54, 107,
572 172, 55, 129, 54, 116, 105, 55, 74, 16, 75,
573 76, 194, 130, 88, 47, 48, 79, 124, 49, 153,
575 15, 58, 59, 125, 60, 50, 111, 35, 51, 35,
576 60, 79, 35, 136, 35, 15, 58, 59, 89, 60,
577 143, 115, 60, 61, 154, 60, 74, 16, 75, 76,
578 56, 79, 147, 127, 77, 56, 148, 60, 61, 93,
579 93, 150, 115, 93, 93, 238, 152, 62, 99, 99,
580 99, 99, 99, 99, 99, 99, 146, 87, 79, 79,
581 146, 93, 62, 15, 16, 17, 117, 63, 599, 152,
582 192, 195, 129, 77, 100, 100, 100, 100, 100, 101,
583 143, 115, 130, 78, 94, 98, 98, 98, 98, 98,
584 98, 98, 98, 79, 118, 119, 155, 156, 120, 151,
586 162, 79, 83, 143, 115, 121, 185, 153, 122, 238,
587 64, 65, 65, 65, 65, 65, 65, 65, 65, 65,
588 65, 65, 65, 65, 65, 65, 65, 65, 15, 16,
589 17, 131, 63, 97, 85, 85, 85, 85, 85, 85,
590 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
591 79, 139, 115, 140, 152, 141, 154, 78, 79, 140,
592 191, 141, 85, 85, 85, 85, 85, 85, 85, 85,
593 143, 115, 201, 141, 141, 64, 65, 65, 65, 65,
594 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
595 65, 65, 65, 15, 16, 17, 67, 63, 141, 193,
597 79, 152, 68, 69, 70, 606, 196, 79, 134, 134,
598 79, 606, 134, 134, 79, 198, 71, 168, 168, 168,
599 168, 168, 168, 606, 155, 156, 79, 231, 159, 599,
600 134, 160, 160, 160, 160, 160, 160, 160, 160, 241,
601 72, 15, 16, 17, 67, 63, 382, 170, 89, 283,
602 68, 69, 70, 135, 162, 86, 214, 86, 86, 267,
603 530, 86, 86, 268, 71, 86, 170, 164, 165, 166,
604 164, 164, 164, 164, 164, 214, 93, 93, 86, 86,
605 93, 93, 79, 79, 79, 240, 83, 238, 72, 83,
606 168, 168, 168, 168, 168, 168, 168, 168, 93, 84,
608 79, 265, 85, 85, 85, 85, 85, 85, 85, 85,
609 95, 83, 96, 96, 96, 96, 96, 96, 96, 96,
610 97, 94, 83, 266, 98, 98, 98, 98, 98, 168,
611 168, 168, 168, 168, 168, 168, 168, 85, 85, 85,
612 85, 85, 85, 85, 85, 79, 551, 98, 98, 98,
613 98, 98, 98, 78, 145, 79, 280, 145, 145, 78,
614 606, 237, 78, 78, 145, 78, 78, 78, 104, 104,
615 104, 104, 104, 104, 104, 104, 97, 145, 279, 78,
616 104, 104, 104, 104, 104, 105, 105, 105, 105, 106,
617 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
619 105, 79, 105, 98, 98, 98, 98, 98, 98, 78,
620 78, 78, 78, 78, 78, 78, 78, 78, 78, 105,
621 105, 105, 105, 105, 105, 105, 105, 606, 249, 249,
622 249, 105, 105, 105, 105, 105, 177, 79, 79, 79,
623 105, 178, 170, 275, 179, 282, 180, 117, 382, 143,
624 115, 214, 97, 238, 78, 78, 78, 78, 78, 78,
625 114, 115, 78, 78, 78, 170, 78, 78, 134, 134,
626 78, 265, 134, 134, 214, 118, 119, 79, 79, 120,
627 431, 431, 78, 78, 78, 83, 121, 93, 323, 122,
628 134, 93, 79, 266, 281, 84, 146, 93, 85, 85,
630 85, 85, 85, 85, 85, 85, 79, 79, 373, 93,
631 93, 318, 324, 135, 606, 606, 606, 606, 606, 606,
632 606, 606, 160, 160, 160, 160, 160, 160, 160, 160,
633 160, 160, 160, 160, 160, 160, 160, 160, 484, 484,
634 123, 83, 242, 243, 244, 242, 242, 242, 242, 242,
635 83, 142, 530, 322, 606, 606, 606, 606, 606, 606,
636 606, 606, 78, 487, 78, 78, 78, 170, 78, 78,
637 253, 170, 78, 134, 79, 79, 255, 134, 606, 170,
638 255, 83, 79, 134, 78, 78, 78, 90, 255, 90,
639 90, 90, 372, 90, 90, 134, 134, 90, 247, 247,
641 248, 249, 249, 249, 249, 249, 211, 253, 170, 90,
642 90, 90, 92, 321, 78, 78, 92, 255, 78, 78,
643 360, 382, 92, 161, 361, 161, 161, 253, 170, 161,
644 161, 384, 371, 161, 92, 92, 78, 167, 167, 167,
645 167, 167, 167, 167, 167, 161, 161, 161, 358, 167,
646 167, 167, 167, 167, 201, 79, 202, 202, 202, 202,
647 202, 202, 219, 219, 219, 219, 219, 219, 219, 219,
648 359, 416, 167, 167, 167, 167, 167, 167, 173, 173,
649 173, 173, 173, 173, 173, 173, 97, 364, 83, 79,
650 173, 173, 173, 173, 173, 257, 257, 257, 257, 257,
652 257, 257, 257, 258, 258, 258, 258, 258, 259, 365,
653 253, 170, 79, 167, 167, 167, 167, 167, 167, 133,
654 300, 78, 78, 133, 559, 78, 78, 421, 606, 133,
655 256, 256, 256, 256, 256, 256, 256, 256, 606, 170,
656 419, 133, 133, 78, 201, 550, 202, 202, 202, 202,
657 202, 202, 202, 202, 289, 289, 289, 289, 289, 289,
658 289, 289, 211, 294, 295, 296, 294, 294, 294, 294,
659 294, 264, 264, 264, 264, 264, 264, 264, 264, 79,
660 201, 574, 203, 203, 203, 203, 203, 203, 203, 203,
661 253, 170, 298, 298, 298, 298, 298, 298, 467, 83,
663 255, 302, 302, 302, 302, 302, 302, 302, 302, 303,
664 303, 303, 303, 303, 304, 79, 201, 170, 204, 204,
665 204, 204, 204, 205, 202, 202, 606, 366, 301, 301,
666 301, 301, 301, 301, 301, 301, 606, 170, 325, 326,
667 327, 325, 325, 325, 325, 325, 300, 501, 501, 367,
668 468, 79, 78, 79, 206, 206, 206, 206, 206, 206,
669 206, 206, 368, 79, 170, 170, 206, 206, 206, 206,
670 206, 79, 374, 255, 300, 253, 170, 283, 79, 284,
671 284, 284, 284, 284, 284, 300, 79, 420, 469, 206,
672 206, 206, 206, 206, 206, 208, 209, 210, 210, 210,
674 210, 210, 210, 211, 253, 170, 170, 212, 212, 212,
675 212, 212, 79, 337, 346, 338, 338, 338, 338, 338,
676 338, 338, 338, 349, 349, 349, 349, 349, 350, 487,
677 212, 212, 212, 212, 212, 212, 170, 215, 216, 217,
678 215, 215, 215, 215, 215, 218, 527, 527, 434, 219,
679 219, 219, 219, 219, 337, 375, 339, 339, 339, 339,
680 339, 339, 339, 339, 309, 309, 309, 309, 309, 309,
681 309, 309, 219, 219, 219, 219, 219, 219, 220, 220,
682 220, 220, 220, 220, 220, 220, 606, 170, 79, 79,
683 220, 220, 220, 220, 220, 337, 346, 340, 340, 340,
685 340, 340, 341, 338, 338, 348, 348, 348, 348, 348,
686 348, 348, 348, 206, 206, 206, 206, 206, 206, 201,
687 550, 202, 202, 202, 202, 202, 202, 202, 202, 253,
688 170, 344, 344, 344, 344, 344, 344, 548, 606, 300,
689 347, 347, 347, 347, 347, 347, 347, 347, 387, 387,
690 387, 387, 387, 388, 79, 201, 547, 202, 202, 202,
691 202, 202, 202, 202, 202, 336, 336, 336, 336, 336,
692 336, 336, 336, 386, 386, 386, 386, 386, 386, 386,
693 386, 394, 395, 396, 394, 394, 394, 394, 394, 358,
694 79, 253, 170, 254, 254, 254, 254, 254, 254, 254,
696 254, 255, 253, 170, 546, 256, 256, 256, 256, 256,
697 606, 359, 385, 385, 385, 385, 385, 385, 385, 385,
698 337, 170, 338, 338, 338, 338, 338, 338, 256, 256,
699 256, 256, 256, 256, 170, 260, 261, 262, 260, 260,
700 260, 260, 260, 263, 170, 565, 565, 264, 264, 264,
701 264, 264, 337, 300, 338, 338, 338, 338, 338, 338,
702 338, 338, 355, 355, 355, 355, 355, 355, 355, 355,
703 264, 264, 264, 264, 264, 264, 283, 434, 284, 284,
704 284, 284, 284, 284, 284, 284, 337, 364, 338, 338,
705 338, 338, 338, 338, 338, 338, 253, 170, 399, 399,
707 399, 399, 399, 399, 170, 597, 346, 575, 83, 365,
708 597, 79, 283, 346, 285, 285, 285, 285, 285, 285,
709 285, 285, 403, 403, 403, 403, 403, 403, 403, 403,
710 404, 404, 404, 404, 404, 405, 606, 366, 402, 402,
711 402, 402, 402, 402, 402, 402, 79, 79, 283, 170,
712 286, 286, 286, 286, 286, 287, 284, 284, 346, 367,
713 461, 606, 422, 428, 429, 430, 428, 428, 428, 428,
714 428, 384, 170, 423, 424, 425, 426, 423, 423, 423,
715 423, 401, 462, 79, 253, 170, 298, 298, 298, 298,
716 298, 298, 298, 298, 255, 253, 170, 299, 299, 299,
718 299, 299, 299, 299, 299, 300, 79, 463, 503, 301,
719 301, 301, 301, 301, 375, 376, 376, 376, 376, 376,
720 376, 393, 393, 393, 393, 393, 393, 393, 393, 464,
721 504, 384, 301, 301, 301, 301, 301, 301, 170, 305,
722 306, 307, 305, 305, 305, 305, 305, 308, 79, 583,
723 583, 309, 309, 309, 309, 309, 436, 436, 436, 436,
724 436, 436, 436, 436, 437, 437, 437, 437, 437, 438,
725 478, 253, 170, 508, 309, 309, 309, 309, 309, 309,
726 283, 346, 284, 284, 284, 284, 284, 284, 284, 284,
727 606, 382, 435, 435, 435, 435, 435, 435, 435, 435,
729 444, 384, 445, 445, 445, 445, 445, 445, 445, 445,
730 507, 472, 144, 144, 83, 79, 283, 382, 284, 284,
731 284, 284, 284, 284, 284, 284, 444, 434, 446, 446,
732 446, 446, 446, 446, 446, 446, 444, 606, 447, 447,
733 447, 447, 447, 448, 445, 445, 79, 434, 461, 506,
734 505, 79, 332, 333, 334, 332, 332, 332, 332, 332,
735 335, 253, 170, 444, 336, 336, 336, 336, 336, 510,
736 462, 401, 409, 409, 409, 409, 409, 409, 409, 409,
737 455, 455, 455, 455, 455, 456, 384, 336, 336, 336,
738 336, 336, 336, 253, 170, 344, 344, 344, 344, 344,
740 344, 344, 344, 300, 253, 170, 345, 345, 345, 345,
741 345, 345, 345, 345, 346, 606, 170, 463, 347, 347,
742 347, 347, 347, 79, 472, 401, 253, 170, 451, 451,
743 451, 451, 451, 451, 331, 503, 401, 79, 511, 464,
744 466, 347, 347, 347, 347, 347, 347, 170, 351, 352,
745 353, 351, 351, 351, 351, 351, 354, 504, 465, 79,
746 355, 355, 355, 355, 355, 454, 454, 454, 454, 454,
747 454, 454, 454, 606, 79, 453, 453, 453, 453, 453,
748 453, 453, 453, 355, 355, 355, 355, 355, 355, 375,
749 376, 376, 376, 376, 376, 376, 376, 376, 470, 478,
751 544, 479, 479, 479, 479, 479, 479, 479, 479, 443,
752 443, 443, 443, 443, 443, 443, 443, 460, 470, 459,
753 470, 471, 545, 79, 375, 377, 377, 377, 377, 377,
754 377, 377, 377, 478, 470, 480, 480, 480, 480, 480,
755 480, 480, 480, 79, 478, 382, 481, 481, 481, 481,
756 481, 482, 479, 479, 470, 434, 470, 470, 79, 375,
757 378, 378, 378, 378, 378, 379, 376, 376, 489, 489,
758 489, 489, 489, 489, 489, 489, 490, 490, 490, 490,
759 490, 491, 606, 170, 488, 488, 488, 488, 488, 488,
760 488, 488, 401, 79, 382, 382, 383, 383, 383, 383,
762 383, 383, 383, 383, 384, 487, 458, 457, 385, 385,
763 385, 385, 385, 497, 498, 499, 497, 497, 497, 497,
764 497, 444, 331, 445, 445, 445, 445, 445, 445, 445,
765 445, 385, 385, 385, 385, 385, 385, 389, 390, 391,
766 389, 389, 389, 389, 389, 392, 251, 418, 417, 393,
767 393, 393, 393, 393, 444, 606, 445, 445, 445, 445,
768 445, 445, 445, 445, 444, 487, 445, 445, 445, 445,
769 445, 445, 393, 393, 393, 393, 393, 393, 253, 170,
770 399, 399, 399, 399, 399, 399, 399, 399, 346, 253,
771 170, 400, 400, 400, 400, 400, 400, 400, 400, 401,
773 253, 170, 382, 402, 402, 402, 402, 402, 467, 83,
774 401, 513, 487, 514, 515, 516, 513, 415, 514, 515,
775 516, 509, 544, 414, 554, 588, 402, 402, 402, 402,
776 402, 402, 170, 406, 407, 408, 406, 406, 406, 406,
777 406, 413, 572, 572, 545, 409, 409, 409, 409, 409,
778 520, 521, 522, 520, 520, 520, 520, 520, 517, 79,
779 79, 412, 411, 519, 573, 573, 410, 337, 409, 409,
780 409, 409, 409, 409, 375, 376, 376, 376, 376, 376,
781 376, 376, 376, 79, 472, 331, 473, 473, 473, 473,
782 473, 473, 523, 524, 525, 523, 523, 523, 523, 523,
784 478, 251, 479, 479, 479, 479, 479, 479, 79, 375,
785 376, 376, 376, 376, 376, 376, 376, 376, 478, 79,
786 479, 479, 479, 479, 479, 479, 479, 479, 478, 382,
787 479, 479, 479, 479, 479, 479, 479, 479, 211, 530,
788 370, 369, 363, 79, 382, 585, 432, 432, 432, 432,
789 432, 432, 432, 432, 384, 382, 606, 433, 433, 433,
790 433, 433, 433, 433, 433, 434, 530, 586, 585, 435,
791 435, 435, 435, 435, 496, 496, 496, 496, 496, 496,
792 496, 496, 532, 532, 532, 532, 532, 532, 532, 532,
793 586, 362, 435, 435, 435, 435, 435, 435, 439, 440,
795 441, 439, 439, 439, 439, 439, 442, 357, 356, 331,
796 443, 443, 443, 443, 443, 533, 533, 533, 533, 533,
797 534, 606, 382, 531, 531, 531, 531, 531, 531, 531,
798 531, 251, 530, 443, 443, 443, 443, 443, 443, 253,
799 170, 451, 451, 451, 451, 451, 451, 451, 451, 401,
800 253, 170, 452, 452, 452, 452, 452, 452, 452, 452,
801 211, 211, 276, 320, 453, 453, 453, 453, 453, 170,
802 539, 539, 539, 539, 539, 539, 539, 539, 170, 540,
803 540, 540, 540, 540, 540, 540, 540, 453, 453, 453,
804 453, 453, 453, 472, 319, 473, 473, 473, 473, 473,
806 473, 473, 473, 170, 541, 541, 541, 541, 541, 542,
807 539, 539, 606, 317, 606, 606, 606, 575, 83, 513,
808 316, 514, 515, 516, 315, 314, 313, 312, 79, 472,
809 587, 474, 474, 474, 474, 474, 474, 474, 474, 606,
810 311, 514, 515, 516, 606, 310, 606, 606, 516, 292,
811 606, 251, 606, 606, 606, 211, 288, 211, 103, 517,
812 276, 278, 276, 277, 79, 472, 517, 475, 475, 475,
813 475, 475, 476, 477, 477, 552, 276, 274, 553, 553,
814 553, 553, 553, 553, 553, 553, 517, 273, 272, 271,
815 270, 517, 269, 97, 211, 512, 512, 519, 251, 512,
817 79, 472, 211, 477, 477, 477, 473, 473, 473, 473,
818 473, 512, 512, 512, 518, 518, 103, 559, 518, 560,
819 560, 560, 560, 560, 560, 560, 560, 83, 199, 239,
820 518, 518, 518, 236, 235, 234, 79, 382, 233, 485,
821 485, 485, 485, 485, 485, 485, 485, 434, 382, 232,
822 486, 486, 486, 486, 486, 486, 486, 486, 487, 230,
823 229, 228, 488, 488, 488, 488, 488, 559, 227, 561,
824 561, 561, 561, 561, 561, 561, 561, 538, 538, 538,
825 538, 538, 538, 538, 538, 488, 488, 488, 488, 488,
826 488, 492, 493, 494, 492, 492, 492, 492, 492, 495,
828 226, 225, 224, 496, 496, 496, 496, 496, 559, 223,
829 562, 562, 562, 562, 562, 563, 560, 560, 569, 569,
830 569, 569, 569, 569, 569, 569, 496, 496, 496, 496,
831 496, 496, 253, 170, 502, 502, 502, 502, 502, 502,
832 502, 502, 472, 222, 473, 473, 473, 473, 473, 473,
833 473, 473, 570, 570, 570, 570, 570, 571, 606, 221,
834 568, 568, 568, 568, 568, 568, 568, 568, 170, 539,
835 539, 539, 539, 539, 539, 539, 539, 79, 472, 103,
836 473, 473, 473, 473, 473, 473, 473, 473, 170, 539,
837 539, 539, 539, 539, 539, 539, 539, 170, 539, 539,
839 539, 539, 539, 539, 553, 553, 553, 553, 553, 553,
840 553, 553, 95, 79, 382, 83, 528, 528, 528, 528,
841 528, 528, 528, 528, 487, 382, 83, 529, 529, 529,
842 529, 529, 529, 529, 529, 530, 199, 151, 152, 531,
843 531, 531, 531, 531, 553, 553, 553, 553, 553, 553,
844 553, 553, 576, 577, 578, 576, 576, 576, 576, 576,
845 146, 146, 531, 531, 531, 531, 531, 531, 535, 536,
846 537, 535, 535, 535, 535, 535, 138, 197, 132, 132,
847 538, 538, 538, 538, 538, 79, 554, 190, 555, 555,
848 555, 555, 555, 555, 579, 580, 581, 579, 579, 579,
850 579, 579, 189, 538, 538, 538, 538, 538, 538, 554,
851 188, 555, 555, 555, 555, 555, 555, 555, 555, 187,
852 559, 79, 560, 560, 560, 560, 560, 560, 560, 560,
853 559, 186, 560, 560, 560, 560, 560, 560, 560, 560,
854 184, 183, 182, 181, 79, 554, 176, 556, 556, 556,
855 556, 556, 556, 556, 556, 559, 175, 560, 560, 560,
856 560, 560, 560, 382, 174, 584, 584, 584, 584, 584,
857 584, 584, 584, 593, 593, 593, 593, 593, 593, 103,
858 79, 554, 78, 557, 557, 557, 557, 557, 558, 555,
859 555, 593, 593, 593, 593, 593, 593, 593, 593, 594,
861 594, 594, 594, 594, 594, 594, 594, 595, 595, 595,
862 595, 595, 596, 593, 593, 103, 79, 382, 163, 566,
863 566, 566, 566, 566, 566, 566, 566, 530, 382, 91,
864 567, 567, 567, 567, 567, 567, 567, 567, 83, 81,
865 80, 79, 568, 568, 568, 568, 568, 152, 600, 601,
866 602, 600, 600, 600, 600, 600, 588, 146, 589, 589,
867 589, 589, 589, 589, 138, 568, 568, 568, 568, 568,
868 568, 554, 132, 555, 555, 555, 555, 555, 555, 555,
869 555, 79, 593, 593, 593, 593, 593, 593, 593, 593,
870 128, 79, 593, 593, 593, 593, 593, 593, 593, 593,
872 126, 113, 112, 111, 110, 109, 79, 554, 108, 555,
873 555, 555, 555, 555, 555, 555, 555, 105, 103, 91,
874 603, 603, 603, 603, 603, 603, 603, 603, 600, 600,
875 600, 600, 600, 600, 600, 600, 81, 80, 79, 606,
876 606, 606, 79, 588, 606, 589, 589, 589, 589, 589,
877 589, 589, 589, 79, 606, 606, 606, 606, 606, 606,
878 606, 79, 604, 604, 604, 604, 604, 605, 603, 603,
879 603, 603, 603, 603, 603, 603, 603, 603, 79, 588,
880 606, 590, 590, 590, 590, 590, 590, 590, 590, 606,
881 606, 606, 606, 606, 606, 79, 603, 603, 603, 603,
883 603, 603, 606, 79, 606, 606, 606, 606, 606, 606,
884 606, 606, 606, 606, 79, 588, 606, 591, 591, 591,
885 591, 591, 592, 589, 589, 606, 606, 606, 606, 79,
886 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
887 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
888 79, 588, 606, 589, 589, 589, 589, 589, 589, 589,
889 589, 606, 606, 606, 606, 606, 606, 606, 606, 606,
890 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
891 606, 606, 606, 606, 606, 606, 79, 588, 606, 589,
892 589, 589, 589, 589, 589, 589, 589, 606, 606, 606,
894 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
895 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
896 606, 606, 79, 57, 57, 57, 57, 57, 57, 57,
897 57, 57, 57, 57, 57, 57, 57, 57, 57, 31,
898 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
899 31, 31, 31, 31, 31, 66, 66, 66, 66, 66,
900 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
901 66, 73, 73, 73, 73, 73, 73, 73, 73, 73,
902 73, 73, 73, 73, 73, 73, 73, 78, 606, 606,
903 606, 606, 606, 606, 606, 78, 78, 78, 606, 606,
905 78, 78, 78, 82, 82, 82, 82, 82, 82, 82,
906 82, 82, 82, 82, 82, 82, 82, 82, 82, 86,
907 606, 606, 606, 606, 86, 606, 606, 86, 86, 86,
908 86, 606, 86, 86, 86, 90, 606, 606, 606, 606,
909 606, 606, 606, 90, 90, 90, 606, 606, 90, 90,
910 90, 92, 606, 606, 92, 92, 606, 92, 606, 92,
911 92, 92, 606, 606, 92, 92, 92, 102, 102, 606,
912 606, 606, 102, 133, 606, 606, 133, 133, 606, 133,
913 606, 133, 133, 133, 606, 606, 133, 133, 133, 137,
914 606, 606, 137, 137, 606, 137, 606, 137, 137, 137,
916 606, 137, 606, 137, 137, 145, 606, 606, 145, 606,
917 606, 145, 606, 145, 145, 145, 145, 606, 145, 145,
918 145, 149, 149, 149, 149, 149, 149, 149, 149, 149,
919 149, 149, 149, 149, 149, 149, 149, 151, 151, 606,
920 151, 606, 151, 151, 151, 151, 151, 151, 151, 151,
921 151, 151, 151, 157, 157, 157, 157, 157, 157, 157,
922 157, 157, 157, 157, 157, 157, 157, 157, 157, 158,
923 158, 606, 158, 158, 158, 158, 158, 158, 158, 158,
924 158, 158, 158, 158, 158, 161, 606, 606, 606, 606,
925 161, 606, 606, 161, 161, 161, 606, 606, 161, 161,
927 161, 93, 606, 606, 93, 93, 606, 93, 606, 93,
928 93, 93, 606, 606, 93, 93, 93, 169, 169, 606,
929 606, 606, 169, 171, 171, 171, 606, 606, 606, 171,
930 134, 606, 606, 134, 134, 606, 134, 606, 134, 134,
931 134, 606, 606, 134, 134, 134, 200, 200, 200, 200,
932 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
933 200, 200, 207, 207, 606, 606, 606, 207, 213, 213,
934 213, 606, 606, 606, 213, 245, 245, 606, 606, 606,
935 245, 246, 246, 606, 606, 606, 246, 250, 250, 606,
936 606, 606, 250, 252, 252, 252, 606, 606, 606, 252,
938 288, 288, 606, 606, 606, 288, 290, 290, 606, 606,
939 606, 290, 291, 291, 606, 606, 606, 291, 293, 293,
940 293, 606, 606, 606, 293, 297, 297, 297, 297, 606,
941 606, 606, 297, 328, 328, 606, 606, 606, 328, 329,
942 329, 606, 606, 606, 329, 330, 330, 606, 606, 606,
943 330, 342, 342, 342, 606, 606, 606, 342, 343, 343,
944 343, 343, 606, 606, 606, 343, 380, 380, 606, 606,
945 606, 380, 381, 381, 606, 606, 606, 381, 397, 397,
946 397, 606, 606, 606, 397, 398, 398, 398, 398, 606,
947 606, 606, 398, 427, 427, 606, 606, 606, 427, 431,
949 606, 431, 431, 606, 606, 606, 431, 449, 449, 449,
950 606, 606, 606, 449, 450, 450, 450, 450, 606, 606,
951 606, 450, 483, 483, 606, 606, 606, 483, 484, 606,
952 484, 484, 606, 606, 606, 484, 500, 500, 500, 606,
953 606, 606, 500, 501, 501, 501, 606, 606, 606, 606,
954 501, 512, 512, 606, 512, 512, 512, 606, 606, 512,
955 512, 512, 606, 606, 512, 512, 512, 518, 518, 606,
956 518, 518, 518, 606, 606, 518, 518, 518, 606, 606,
957 518, 518, 518, 526, 526, 606, 606, 606, 526, 527,
958 606, 527, 527, 606, 606, 606, 527, 543, 543, 606,
960 606, 606, 606, 543, 549, 549, 549, 549, 549, 549,
961 549, 549, 549, 549, 549, 549, 549, 549, 549, 549,
962 564, 564, 606, 606, 606, 564, 565, 606, 565, 565,
963 606, 606, 606, 565, 582, 582, 606, 606, 606, 582,
964 583, 606, 583, 606, 606, 606, 606, 583, 598, 598,
965 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
966 598, 598, 598, 598, 13, 606, 606, 606, 606, 606,
967 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
968 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
969 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
971 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
972 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
973 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
977 static yyconst short int yy_chk[3732] =
979 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
980 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
981 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
982 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
983 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
984 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
985 1, 1, 1, 1, 1, 1, 2, 44, 3, 34,
986 2, 103, 3, 4, 47, 20, 126, 4, 3, 34,
987 103, 3, 52, 4, 44, 48, 4, 11, 11, 11,
988 11, 126, 52, 20, 2, 2, 56, 47, 2, 74,
990 5, 5, 5, 48, 5, 2, 50, 3, 2, 3,
991 5, 603, 4, 56, 4, 6, 6, 6, 20, 6,
992 64, 64, 5, 5, 75, 6, 12, 12, 12, 12,
993 3, 196, 68, 50, 11, 4, 70, 6, 6, 25,
994 25, 72, 72, 25, 25, 196, 74, 5, 27, 27,
995 27, 27, 27, 27, 27, 27, 68, 88, 124, 127,
996 70, 25, 6, 7, 7, 7, 45, 7, 598, 75,
997 124, 127, 129, 12, 28, 28, 28, 28, 28, 28,
998 139, 139, 129, 43, 25, 43, 43, 43, 43, 43,
999 43, 43, 43, 194, 45, 45, 77, 77, 45, 77,
1001 88, 116, 123, 114, 114, 45, 116, 153, 45, 194,
1002 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1003 7, 7, 7, 7, 7, 7, 7, 7, 8, 8,
1004 8, 53, 8, 206, 53, 53, 53, 53, 53, 53,
1005 53, 53, 84, 84, 84, 84, 84, 84, 84, 84,
1006 114, 62, 62, 62, 153, 62, 154, 125, 206, 62,
1007 123, 62, 85, 85, 85, 85, 85, 85, 85, 85,
1008 143, 143, 202, 62, 62, 8, 8, 8, 8, 8,
1009 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1010 8, 8, 8, 9, 9, 9, 9, 9, 62, 125,
1012 128, 154, 9, 9, 9, 86, 128, 202, 55, 55,
1013 136, 161, 55, 55, 185, 136, 9, 101, 101, 101,
1014 101, 101, 101, 86, 155, 155, 198, 185, 87, 587,
1015 55, 87, 87, 87, 87, 87, 87, 87, 87, 198,
1016 9, 10, 10, 10, 10, 10, 584, 171, 86, 284,
1017 10, 10, 10, 55, 161, 89, 171, 89, 89, 222,
1018 582, 89, 89, 222, 10, 89, 213, 95, 95, 95,
1019 95, 95, 95, 95, 95, 213, 92, 92, 89, 89,
1020 92, 92, 192, 195, 284, 195, 510, 192, 10, 19,
1021 99, 99, 99, 99, 99, 99, 99, 99, 92, 19,
1023 95, 221, 19, 19, 19, 19, 19, 19, 19, 19,
1024 26, 191, 26, 26, 26, 26, 26, 26, 26, 26,
1025 26, 92, 237, 221, 26, 26, 26, 26, 26, 100,
1026 100, 100, 100, 100, 100, 100, 100, 131, 131, 131,
1027 131, 131, 131, 131, 131, 26, 510, 26, 26, 26,
1028 26, 26, 26, 32, 146, 238, 238, 146, 146, 32,
1029 568, 191, 32, 32, 146, 32, 32, 32, 32, 32,
1030 32, 32, 32, 32, 32, 32, 32, 146, 237, 32,
1031 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
1032 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
1034 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
1035 32, 32, 32, 32, 32, 32, 32, 32, 32, 35,
1036 35, 35, 35, 35, 35, 35, 35, 35, 210, 210,
1037 210, 35, 35, 35, 35, 35, 109, 231, 240, 241,
1038 35, 109, 252, 231, 109, 241, 109, 117, 567, 150,
1039 150, 252, 239, 240, 35, 35, 35, 35, 35, 35,
1040 42, 42, 42, 42, 42, 293, 42, 42, 133, 133,
1041 42, 265, 133, 133, 293, 117, 117, 239, 281, 117,
1042 388, 388, 42, 42, 42, 46, 117, 163, 281, 117,
1043 133, 163, 323, 265, 239, 46, 150, 163, 46, 46,
1045 46, 46, 46, 46, 46, 46, 275, 282, 323, 163,
1046 163, 275, 282, 133, 142, 142, 142, 142, 142, 142,
1047 142, 142, 159, 159, 159, 159, 159, 159, 159, 159,
1048 160, 160, 160, 160, 160, 160, 160, 160, 438, 438,
1049 46, 63, 201, 201, 201, 201, 201, 201, 201, 201,
1050 279, 63, 565, 280, 63, 63, 63, 63, 63, 63,
1051 63, 63, 79, 564, 79, 79, 79, 297, 79, 79,
1052 254, 254, 79, 197, 280, 201, 297, 197, 256, 256,
1053 254, 321, 322, 197, 79, 79, 79, 91, 256, 91,
1054 91, 91, 322, 91, 91, 197, 197, 91, 209, 209,
1056 209, 209, 209, 209, 209, 209, 209, 298, 298, 91,
1057 91, 91, 94, 279, 94, 94, 94, 298, 94, 94,
1058 313, 383, 94, 162, 313, 162, 162, 452, 452, 162,
1059 162, 383, 321, 162, 94, 94, 94, 96, 96, 96,
1060 96, 96, 96, 96, 96, 162, 162, 162, 312, 96,
1061 96, 96, 96, 96, 205, 368, 205, 205, 205, 205,
1062 205, 205, 214, 214, 214, 214, 214, 214, 214, 214,
1063 312, 368, 96, 96, 96, 96, 96, 96, 104, 104,
1064 104, 104, 104, 104, 104, 104, 104, 316, 371, 205,
1065 104, 104, 104, 104, 104, 216, 216, 216, 216, 216,
1067 216, 216, 216, 217, 217, 217, 217, 217, 217, 316,
1068 299, 299, 373, 104, 104, 104, 104, 104, 104, 135,
1069 299, 135, 135, 135, 560, 135, 135, 373, 219, 135,
1070 219, 219, 219, 219, 219, 219, 219, 219, 453, 453,
1071 371, 135, 135, 135, 164, 549, 164, 164, 164, 164,
1072 164, 164, 164, 164, 247, 247, 247, 247, 247, 247,
1073 247, 247, 247, 253, 253, 253, 253, 253, 253, 253,
1074 253, 255, 255, 255, 255, 255, 255, 255, 255, 164,
1075 165, 547, 165, 165, 165, 165, 165, 165, 165, 165,
1076 259, 259, 259, 259, 259, 259, 259, 259, 419, 419,
1078 259, 261, 261, 261, 261, 261, 261, 261, 261, 262,
1079 262, 262, 262, 262, 262, 165, 166, 543, 166, 166,
1080 166, 166, 166, 166, 166, 166, 264, 317, 264, 264,
1081 264, 264, 264, 264, 264, 264, 301, 301, 283, 283,
1082 283, 283, 283, 283, 283, 283, 301, 456, 456, 317,
1083 419, 166, 167, 318, 167, 167, 167, 167, 167, 167,
1084 167, 167, 318, 324, 342, 343, 167, 167, 167, 167,
1085 167, 283, 324, 342, 343, 344, 344, 287, 372, 287,
1086 287, 287, 287, 287, 287, 344, 420, 372, 420, 167,
1087 167, 167, 167, 167, 167, 170, 170, 170, 170, 170,
1089 170, 170, 170, 170, 345, 345, 539, 170, 170, 170,
1090 170, 170, 287, 294, 345, 294, 294, 294, 294, 294,
1091 294, 294, 294, 307, 307, 307, 307, 307, 307, 527,
1092 170, 170, 170, 170, 170, 170, 172, 172, 172, 172,
1093 172, 172, 172, 172, 172, 172, 491, 491, 526, 172,
1094 172, 172, 172, 172, 295, 376, 295, 295, 295, 295,
1095 295, 295, 295, 295, 300, 300, 300, 300, 300, 300,
1096 300, 300, 172, 172, 172, 172, 172, 172, 173, 173,
1097 173, 173, 173, 173, 173, 173, 347, 347, 511, 376,
1098 173, 173, 173, 173, 173, 296, 347, 296, 296, 296,
1100 296, 296, 296, 296, 296, 306, 306, 306, 306, 306,
1101 306, 306, 306, 173, 173, 173, 173, 173, 173, 203,
1102 509, 203, 203, 203, 203, 203, 203, 203, 203, 304,
1103 304, 304, 304, 304, 304, 304, 304, 508, 309, 304,
1104 309, 309, 309, 309, 309, 309, 309, 309, 334, 334,
1105 334, 334, 334, 334, 203, 204, 507, 204, 204, 204,
1106 204, 204, 204, 204, 204, 331, 331, 331, 331, 331,
1107 331, 331, 331, 333, 333, 333, 333, 333, 333, 333,
1108 333, 337, 337, 337, 337, 337, 337, 337, 337, 358,
1109 204, 215, 215, 215, 215, 215, 215, 215, 215, 215,
1111 215, 215, 502, 502, 506, 215, 215, 215, 215, 215,
1112 336, 358, 336, 336, 336, 336, 336, 336, 336, 336,
1113 341, 501, 341, 341, 341, 341, 341, 341, 215, 215,
1114 215, 215, 215, 215, 218, 218, 218, 218, 218, 218,
1115 218, 218, 218, 218, 397, 534, 534, 218, 218, 218,
1116 218, 218, 339, 397, 339, 339, 339, 339, 339, 339,
1117 339, 339, 346, 346, 346, 346, 346, 346, 346, 346,
1118 218, 218, 218, 218, 218, 218, 242, 484, 242, 242,
1119 242, 242, 242, 242, 242, 242, 340, 364, 340, 340,
1120 340, 340, 340, 340, 340, 340, 350, 350, 350, 350,
1122 350, 350, 350, 350, 398, 669, 350, 551, 551, 364,
1123 669, 242, 243, 398, 243, 243, 243, 243, 243, 243,
1124 243, 243, 352, 352, 352, 352, 352, 352, 352, 352,
1125 353, 353, 353, 353, 353, 353, 355, 366, 355, 355,
1126 355, 355, 355, 355, 355, 355, 374, 243, 244, 449,
1127 244, 244, 244, 244, 244, 244, 244, 244, 449, 366,
1128 414, 385, 374, 382, 382, 382, 382, 382, 382, 382,
1129 382, 385, 450, 375, 375, 375, 375, 375, 375, 375,
1130 375, 450, 414, 244, 257, 257, 257, 257, 257, 257,
1131 257, 257, 257, 257, 257, 260, 260, 260, 260, 260,
1133 260, 260, 260, 260, 260, 260, 375, 415, 457, 260,
1134 260, 260, 260, 260, 379, 379, 379, 379, 379, 379,
1135 379, 384, 384, 384, 384, 384, 384, 384, 384, 415,
1136 457, 483, 260, 260, 260, 260, 260, 260, 263, 263,
1137 263, 263, 263, 263, 263, 263, 263, 263, 379, 571,
1138 571, 263, 263, 263, 263, 263, 390, 390, 390, 390,
1139 390, 390, 390, 390, 391, 391, 391, 391, 391, 391,
1140 479, 399, 399, 465, 263, 263, 263, 263, 263, 263,
1141 285, 399, 285, 285, 285, 285, 285, 285, 285, 285,
1142 393, 432, 393, 393, 393, 393, 393, 393, 393, 393,
1144 394, 432, 394, 394, 394, 394, 394, 394, 394, 394,
1145 460, 473, 619, 619, 468, 285, 286, 433, 286, 286,
1146 286, 286, 286, 286, 286, 286, 395, 433, 395, 395,
1147 395, 395, 395, 395, 395, 395, 396, 435, 396, 396,
1148 396, 396, 396, 396, 396, 396, 473, 435, 461, 459,
1149 458, 286, 292, 292, 292, 292, 292, 292, 292, 292,
1150 292, 400, 400, 445, 292, 292, 292, 292, 292, 468,
1151 461, 400, 401, 401, 401, 401, 401, 401, 401, 401,
1152 408, 408, 408, 408, 408, 408, 431, 292, 292, 292,
1153 292, 292, 292, 302, 302, 302, 302, 302, 302, 302,
1155 302, 302, 302, 302, 305, 305, 305, 305, 305, 305,
1156 305, 305, 305, 305, 305, 402, 402, 463, 305, 305,
1157 305, 305, 305, 469, 477, 402, 405, 405, 405, 405,
1158 405, 405, 405, 405, 427, 503, 405, 422, 469, 463,
1159 418, 305, 305, 305, 305, 305, 305, 308, 308, 308,
1160 308, 308, 308, 308, 308, 308, 308, 503, 417, 477,
1161 308, 308, 308, 308, 308, 407, 407, 407, 407, 407,
1162 407, 407, 407, 409, 416, 409, 409, 409, 409, 409,
1163 409, 409, 409, 308, 308, 308, 308, 308, 308, 325,
1164 325, 325, 325, 325, 325, 325, 325, 325, 421, 428,
1166 505, 428, 428, 428, 428, 428, 428, 428, 428, 434,
1167 434, 434, 434, 434, 434, 434, 434, 413, 421, 412,
1168 421, 421, 505, 325, 326, 326, 326, 326, 326, 326,
1169 326, 326, 326, 429, 466, 429, 429, 429, 429, 429,
1170 429, 429, 429, 421, 430, 485, 430, 430, 430, 430,
1171 430, 430, 430, 430, 466, 485, 466, 466, 326, 327,
1172 327, 327, 327, 327, 327, 327, 327, 327, 440, 440,
1173 440, 440, 440, 440, 440, 440, 441, 441, 441, 441,
1174 441, 441, 443, 500, 443, 443, 443, 443, 443, 443,
1175 443, 443, 500, 327, 332, 486, 332, 332, 332, 332,
1177 332, 332, 332, 332, 332, 486, 411, 410, 332, 332,
1178 332, 332, 332, 444, 444, 444, 444, 444, 444, 444,
1179 444, 446, 381, 446, 446, 446, 446, 446, 446, 446,
1180 446, 332, 332, 332, 332, 332, 332, 335, 335, 335,
1181 335, 335, 335, 335, 335, 335, 380, 370, 369, 335,
1182 335, 335, 335, 335, 447, 488, 447, 447, 447, 447,
1183 447, 447, 447, 447, 448, 488, 448, 448, 448, 448,
1184 448, 448, 335, 335, 335, 335, 335, 335, 348, 348,
1185 348, 348, 348, 348, 348, 348, 348, 348, 348, 351,
1186 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
1188 451, 451, 528, 351, 351, 351, 351, 351, 467, 467,
1189 451, 470, 528, 470, 470, 470, 471, 363, 471, 471,
1190 471, 467, 544, 362, 555, 589, 351, 351, 351, 351,
1191 351, 351, 354, 354, 354, 354, 354, 354, 354, 354,
1192 354, 361, 546, 572, 544, 354, 354, 354, 354, 354,
1193 472, 472, 472, 472, 472, 472, 472, 472, 470, 555,
1194 589, 360, 357, 471, 546, 572, 356, 338, 354, 354,
1195 354, 354, 354, 354, 377, 377, 377, 377, 377, 377,
1196 377, 377, 377, 472, 476, 330, 476, 476, 476, 476,
1197 476, 476, 478, 478, 478, 478, 478, 478, 478, 478,
1199 482, 329, 482, 482, 482, 482, 482, 482, 377, 378,
1200 378, 378, 378, 378, 378, 378, 378, 378, 480, 476,
1201 480, 480, 480, 480, 480, 480, 480, 480, 481, 529,
1202 481, 481, 481, 481, 481, 481, 481, 481, 328, 529,
1203 320, 319, 315, 378, 386, 574, 386, 386, 386, 386,
1204 386, 386, 386, 386, 386, 389, 531, 389, 389, 389,
1205 389, 389, 389, 389, 389, 389, 531, 574, 585, 389,
1206 389, 389, 389, 389, 487, 487, 487, 487, 487, 487,
1207 487, 487, 493, 493, 493, 493, 493, 493, 493, 493,
1208 585, 314, 389, 389, 389, 389, 389, 389, 392, 392,
1210 392, 392, 392, 392, 392, 392, 392, 311, 310, 291,
1211 392, 392, 392, 392, 392, 494, 494, 494, 494, 494,
1212 494, 496, 566, 496, 496, 496, 496, 496, 496, 496,
1213 496, 290, 566, 392, 392, 392, 392, 392, 392, 403,
1214 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
1215 406, 406, 406, 406, 406, 406, 406, 406, 406, 406,
1216 289, 288, 278, 277, 406, 406, 406, 406, 406, 497,
1217 497, 497, 497, 497, 497, 497, 497, 497, 498, 498,
1218 498, 498, 498, 498, 498, 498, 498, 406, 406, 406,
1219 406, 406, 406, 423, 276, 423, 423, 423, 423, 423,
1221 423, 423, 423, 499, 499, 499, 499, 499, 499, 499,
1222 499, 499, 512, 274, 512, 512, 512, 575, 575, 513,
1223 273, 513, 513, 513, 272, 271, 270, 269, 423, 424,
1224 575, 424, 424, 424, 424, 424, 424, 424, 424, 514,
1225 268, 514, 514, 514, 515, 267, 515, 515, 515, 251,
1226 518, 250, 518, 518, 518, 249, 248, 246, 245, 512,
1227 236, 235, 234, 233, 424, 425, 513, 425, 425, 425,
1228 425, 425, 425, 425, 425, 516, 232, 229, 516, 516,
1229 516, 516, 516, 516, 516, 516, 514, 227, 226, 225,
1230 224, 515, 223, 220, 212, 517, 517, 518, 211, 517,
1232 425, 426, 208, 426, 426, 426, 426, 426, 426, 426,
1233 426, 517, 517, 517, 519, 519, 207, 523, 519, 523,
1234 523, 523, 523, 523, 523, 523, 523, 200, 199, 193,
1235 519, 519, 519, 190, 189, 188, 426, 436, 187, 436,
1236 436, 436, 436, 436, 436, 436, 436, 436, 439, 186,
1237 439, 439, 439, 439, 439, 439, 439, 439, 439, 184,
1238 183, 182, 439, 439, 439, 439, 439, 524, 181, 524,
1239 524, 524, 524, 524, 524, 524, 524, 530, 530, 530,
1240 530, 530, 530, 530, 530, 439, 439, 439, 439, 439,
1241 439, 442, 442, 442, 442, 442, 442, 442, 442, 442,
1243 180, 179, 178, 442, 442, 442, 442, 442, 525, 177,
1244 525, 525, 525, 525, 525, 525, 525, 525, 536, 536,
1245 536, 536, 536, 536, 536, 536, 442, 442, 442, 442,
1246 442, 442, 454, 454, 454, 454, 454, 454, 454, 454,
1247 454, 454, 474, 176, 474, 474, 474, 474, 474, 474,
1248 474, 474, 537, 537, 537, 537, 537, 537, 538, 175,
1249 538, 538, 538, 538, 538, 538, 538, 538, 540, 540,
1250 540, 540, 540, 540, 540, 540, 540, 474, 475, 169,
1251 475, 475, 475, 475, 475, 475, 475, 475, 541, 541,
1252 541, 541, 541, 541, 541, 541, 541, 542, 542, 542,
1254 542, 542, 542, 542, 552, 552, 552, 552, 552, 552,
1255 552, 552, 168, 475, 489, 158, 489, 489, 489, 489,
1256 489, 489, 489, 489, 489, 492, 157, 492, 492, 492,
1257 492, 492, 492, 492, 492, 492, 156, 152, 151, 492,
1258 492, 492, 492, 492, 553, 553, 553, 553, 553, 553,
1259 553, 553, 554, 554, 554, 554, 554, 554, 554, 554,
1260 149, 145, 492, 492, 492, 492, 492, 492, 495, 495,
1261 495, 495, 495, 495, 495, 495, 138, 134, 132, 130,
1262 495, 495, 495, 495, 495, 554, 558, 122, 558, 558,
1263 558, 558, 558, 558, 559, 559, 559, 559, 559, 559,
1265 559, 559, 121, 495, 495, 495, 495, 495, 495, 520,
1266 120, 520, 520, 520, 520, 520, 520, 520, 520, 119,
1267 561, 558, 561, 561, 561, 561, 561, 561, 561, 561,
1268 562, 118, 562, 562, 562, 562, 562, 562, 562, 562,
1269 113, 112, 111, 110, 520, 521, 108, 521, 521, 521,
1270 521, 521, 521, 521, 521, 563, 107, 563, 563, 563,
1271 563, 563, 563, 569, 106, 569, 569, 569, 569, 569,
1272 569, 569, 569, 596, 596, 596, 596, 596, 596, 102,
1273 521, 522, 98, 522, 522, 522, 522, 522, 522, 522,
1274 522, 579, 579, 579, 579, 579, 579, 579, 579, 580,
1276 580, 580, 580, 580, 580, 580, 580, 581, 581, 581,
1277 581, 581, 581, 581, 581, 97, 522, 532, 93, 532,
1278 532, 532, 532, 532, 532, 532, 532, 532, 535, 90,
1279 535, 535, 535, 535, 535, 535, 535, 535, 82, 81,
1280 80, 78, 535, 535, 535, 535, 535, 73, 588, 588,
1281 588, 588, 588, 588, 588, 588, 592, 66, 592, 592,
1282 592, 592, 592, 592, 59, 535, 535, 535, 535, 535,
1283 535, 556, 54, 556, 556, 556, 556, 556, 556, 556,
1284 556, 588, 594, 594, 594, 594, 594, 594, 594, 594,
1285 51, 592, 595, 595, 595, 595, 595, 595, 595, 595,
1287 49, 41, 40, 39, 38, 37, 556, 557, 36, 557,
1288 557, 557, 557, 557, 557, 557, 557, 33, 29, 23,
1289 600, 600, 600, 600, 600, 600, 600, 600, 601, 601,
1290 601, 601, 601, 601, 601, 601, 17, 15, 14, 13,
1291 0, 0, 557, 576, 0, 576, 576, 576, 576, 576,
1292 576, 576, 576, 600, 0, 0, 0, 0, 0, 0,
1293 0, 601, 602, 602, 602, 602, 602, 602, 602, 602,
1294 604, 604, 604, 604, 604, 604, 604, 604, 576, 577,
1295 0, 577, 577, 577, 577, 577, 577, 577, 577, 0,
1296 0, 0, 0, 0, 0, 602, 605, 605, 605, 605,
1298 605, 605, 0, 604, 0, 0, 0, 0, 0, 0,
1299 0, 0, 0, 0, 577, 578, 0, 578, 578, 578,
1300 578, 578, 578, 578, 578, 0, 0, 0, 0, 605,
1301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1303 578, 590, 0, 590, 590, 590, 590, 590, 590, 590,
1304 590, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1306 0, 0, 0, 0, 0, 0, 590, 591, 0, 591,
1307 591, 591, 591, 591, 591, 591, 591, 0, 0, 0,
1309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1311 0, 0, 591, 607, 607, 607, 607, 607, 607, 607,
1312 607, 607, 607, 607, 607, 607, 607, 607, 607, 608,
1313 608, 608, 608, 608, 608, 608, 608, 608, 608, 608,
1314 608, 608, 608, 608, 608, 609, 609, 609, 609, 609,
1315 609, 609, 609, 609, 609, 609, 609, 609, 609, 609,
1316 609, 610, 610, 610, 610, 610, 610, 610, 610, 610,
1317 610, 610, 610, 610, 610, 610, 610, 611, 0, 0,
1318 0, 0, 0, 0, 0, 611, 611, 611, 0, 0,
1320 611, 611, 611, 612, 612, 612, 612, 612, 612, 612,
1321 612, 612, 612, 612, 612, 612, 612, 612, 612, 613,
1322 0, 0, 0, 0, 613, 0, 0, 613, 613, 613,
1323 613, 0, 613, 613, 613, 614, 0, 0, 0, 0,
1324 0, 0, 0, 614, 614, 614, 0, 0, 614, 614,
1325 614, 615, 0, 0, 615, 615, 0, 615, 0, 615,
1326 615, 615, 0, 0, 615, 615, 615, 616, 616, 0,
1327 0, 0, 616, 617, 0, 0, 617, 617, 0, 617,
1328 0, 617, 617, 617, 0, 0, 617, 617, 617, 618,
1329 0, 0, 618, 618, 0, 618, 0, 618, 618, 618,
1331 0, 618, 0, 618, 618, 620, 0, 0, 620, 0,
1332 0, 620, 0, 620, 620, 620, 620, 0, 620, 620,
1333 620, 621, 621, 621, 621, 621, 621, 621, 621, 621,
1334 621, 621, 621, 621, 621, 621, 621, 622, 622, 0,
1335 622, 0, 622, 622, 622, 622, 622, 622, 622, 622,
1336 622, 622, 622, 623, 623, 623, 623, 623, 623, 623,
1337 623, 623, 623, 623, 623, 623, 623, 623, 623, 624,
1338 624, 0, 624, 624, 624, 624, 624, 624, 624, 624,
1339 624, 624, 624, 624, 624, 625, 0, 0, 0, 0,
1340 625, 0, 0, 625, 625, 625, 0, 0, 625, 625,
1342 625, 626, 0, 0, 626, 626, 0, 626, 0, 626,
1343 626, 626, 0, 0, 626, 626, 626, 627, 627, 0,
1344 0, 0, 627, 628, 628, 628, 0, 0, 0, 628,
1345 629, 0, 0, 629, 629, 0, 629, 0, 629, 629,
1346 629, 0, 0, 629, 629, 629, 630, 630, 630, 630,
1347 630, 630, 630, 630, 630, 630, 630, 630, 630, 630,
1348 630, 630, 631, 631, 0, 0, 0, 631, 632, 632,
1349 632, 0, 0, 0, 632, 633, 633, 0, 0, 0,
1350 633, 634, 634, 0, 0, 0, 634, 635, 635, 0,
1351 0, 0, 635, 636, 636, 636, 0, 0, 0, 636,
1353 637, 637, 0, 0, 0, 637, 638, 638, 0, 0,
1354 0, 638, 639, 639, 0, 0, 0, 639, 640, 640,
1355 640, 0, 0, 0, 640, 641, 641, 641, 641, 0,
1356 0, 0, 641, 642, 642, 0, 0, 0, 642, 643,
1357 643, 0, 0, 0, 643, 644, 644, 0, 0, 0,
1358 644, 645, 645, 645, 0, 0, 0, 645, 646, 646,
1359 646, 646, 0, 0, 0, 646, 647, 647, 0, 0,
1360 0, 647, 648, 648, 0, 0, 0, 648, 649, 649,
1361 649, 0, 0, 0, 649, 650, 650, 650, 650, 0,
1362 0, 0, 650, 651, 651, 0, 0, 0, 651, 652,
1364 0, 652, 652, 0, 0, 0, 652, 653, 653, 653,
1365 0, 0, 0, 653, 654, 654, 654, 654, 0, 0,
1366 0, 654, 655, 655, 0, 0, 0, 655, 656, 0,
1367 656, 656, 0, 0, 0, 656, 657, 657, 657, 0,
1368 0, 0, 657, 658, 658, 658, 0, 0, 0, 0,
1369 658, 659, 659, 0, 659, 659, 659, 0, 0, 659,
1370 659, 659, 0, 0, 659, 659, 659, 660, 660, 0,
1371 660, 660, 660, 0, 0, 660, 660, 660, 0, 0,
1372 660, 660, 660, 661, 661, 0, 0, 0, 661, 662,
1373 0, 662, 662, 0, 0, 0, 662, 663, 663, 0,
1375 0, 0, 0, 663, 664, 664, 664, 664, 664, 664,
1376 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
1377 665, 665, 0, 0, 0, 665, 666, 0, 666, 666,
1378 0, 0, 0, 666, 667, 667, 0, 0, 0, 667,
1379 668, 0, 668, 0, 0, 0, 0, 668, 670, 670,
1380 670, 670, 670, 670, 670, 670, 670, 670, 670, 670,
1381 670, 670, 670, 670, 606, 606, 606, 606, 606, 606,
1382 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
1383 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
1384 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
1386 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
1387 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
1388 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
1392 static yy_state_type yy_last_accepting_state;
1393 static char *yy_last_accepting_cpos;
1395 /* The intent behind this definition is that it'll catch
1396 * any uses of REJECT which flex missed.
1398 #define REJECT reject_used_but_not_detected
1399 #define yymore() yymore_used_but_not_detected
1400 #define YY_MORE_ADJ 0
1401 #define YY_RESTORE_YY_MORE_OFFSET
1407 * Copyright (c) 1996, 1998-2005, 2007-2011
1408 * Todd C. Miller <Todd.Miller@courtesan.com>
1410 * Permission to use, copy, modify, and distribute this software for any
1411 * purpose with or without fee is hereby granted, provided that the above
1412 * copyright notice and this permission notice appear in all copies.
1414 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1415 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1416 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1417 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1418 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1419 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1420 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1421 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1422 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
1423 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1425 * Sponsored in part by the Defense Advanced Research Projects
1426 * Agency (DARPA) and Air Force Research Laboratory, Air Force
1427 * Materiel Command, USAF, under agreement number F39502-99-1-0512.
1432 #include <sys/types.h>
1433 #include <sys/param.h>
1434 #include <sys/stat.h>
1437 # include <stdlib.h>
1438 # include <stddef.h>
1440 # ifdef HAVE_STDLIB_H
1441 # include <stdlib.h>
1443 #endif /* STDC_HEADERS */
1444 #ifdef HAVE_STRING_H
1445 # include <string.h>
1446 #endif /* HAVE_STRING_H */
1447 #ifdef HAVE_STRINGS_H
1448 # include <strings.h>
1449 #endif /* HAVE_STRINGS_H */
1450 #ifdef HAVE_UNISTD_H
1451 # include <unistd.h>
1452 #endif /* HAVE_UNISTD_H */
1453 #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS)
1454 # include <malloc.h>
1455 #endif /* HAVE_MALLOC_H && !STDC_HEADERS */
1456 #ifdef HAVE_DIRENT_H
1457 # include <dirent.h>
1458 # define NAMLEN(dirent) strlen((dirent)->d_name)
1460 # define dirent direct
1461 # define NAMLEN(dirent) (dirent)->d_namlen
1462 # ifdef HAVE_SYS_NDIR_H
1463 # include <sys/ndir.h>
1465 # ifdef HAVE_SYS_DIR_H
1466 # include <sys/dir.h>
1474 #include "sudoers.h"
1479 extern YYSTYPE yylval;
1480 extern int parse_error;
1484 static int continued, prev_state, sawspace;
1486 static int _push_include(char *, int);
1487 static int pop_include(void);
1488 static char *parse_include(char *);
1491 static int sudoers_trace_print(const char *msg);
1493 # define sudoers_trace_print NULL
1495 int (*trace_print)(const char *msg) = sudoers_trace_print;
1497 #define push_include(_p) (_push_include((_p), FALSE))
1498 #define push_includedir(_p) (_push_include((_p), TRUE))
1499 #define YY_NO_INPUT 1
1500 #define YY_NO_UNPUT 1
1511 #line 1511 "lex.yy.c"
1513 /* Macros after this point can all be overridden by user definitions in
1517 #ifndef YY_SKIP_YYWRAP
1519 extern "C" int yywrap YY_PROTO(( void ));
1521 extern int yywrap YY_PROTO(( void ));
1526 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1530 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1533 #ifdef YY_NEED_STRLEN
1534 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1539 static int yyinput YY_PROTO(( void ));
1541 static int input YY_PROTO(( void ));
1545 #if defined(YY_STACK_USED) && YY_STACK_USED
1546 static int yy_start_stack_ptr = 0;
1547 static int yy_start_stack_depth = 0;
1548 static int *yy_start_stack = 0;
1549 #ifndef YY_NO_PUSH_STATE
1550 static void yy_push_state YY_PROTO(( int new_state ));
1552 #ifndef YY_NO_POP_STATE
1553 static void yy_pop_state YY_PROTO(( void ));
1555 #ifndef YY_NO_TOP_STATE
1556 static int yy_top_state YY_PROTO(( void ));
1560 #define YY_NO_PUSH_STATE 1
1561 #define YY_NO_POP_STATE 1
1562 #define YY_NO_TOP_STATE 1
1565 #ifdef YY_MALLOC_DECL
1573 /* Just try to get by without declaring the routines. This will fail
1574 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1575 * or sizeof(void*) != sizeof(int).
1580 /* Amount of stuff to slurp up with each read. */
1581 #ifndef YY_READ_BUF_SIZE
1582 #define YY_READ_BUF_SIZE 8192
1585 /* Copy whatever the last rule matched to the standard output. */
1588 /* This used to be an fputs(), but since the string might contain NUL's,
1589 * we now use fwrite().
1591 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1594 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1595 * is returned in "result".
1598 #define YY_INPUT(buf,result,max_size) \
1599 if ( yy_current_buffer->yy_is_interactive ) \
1602 for ( n = 0; n < max_size && \
1603 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1604 buf[n] = (char) c; \
1606 buf[n++] = (char) c; \
1607 if ( c == EOF && ferror( yyin ) ) \
1608 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1611 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1612 && ferror( yyin ) ) \
1613 YY_FATAL_ERROR( "input in flex scanner failed" );
1616 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1617 * we don't want an extra ';' after the "return" because that will cause
1618 * some compilers to complain about unreachable statements.
1621 #define yyterminate() return YY_NULL
1624 /* Number of entries by which start-condition stack grows. */
1625 #ifndef YY_START_STACK_INCR
1626 #define YY_START_STACK_INCR 25
1629 /* Report a fatal error. */
1630 #ifndef YY_FATAL_ERROR
1631 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1634 /* Default declaration of generated scanner - a define so the user can
1635 * easily add parameters.
1638 #define YY_DECL int yylex YY_PROTO(( void ))
1641 /* Code executed at the beginning of each rule, after yytext and yyleng
1644 #ifndef YY_USER_ACTION
1645 #define YY_USER_ACTION
1648 /* Code executed at the end of each rule. */
1650 #define YY_BREAK break;
1653 #define YY_RULE_SETUP \
1655 yy_current_buffer->yy_at_bol = \
1656 (yytext[yyleng - 1] == '\n'); \
1661 register yy_state_type yy_current_state;
1662 register char *yy_cp, *yy_bp;
1663 register int yy_act;
1667 #line 1667 "lex.yy.c"
1678 yy_start = 1; /* first start state */
1686 if ( ! yy_current_buffer )
1688 yy_create_buffer( yyin, YY_BUF_SIZE );
1690 yy_load_buffer_state();
1693 while ( 1 ) /* loops until end-of-file is reached */
1697 /* Support of yytext. */
1698 *yy_cp = yy_hold_char;
1700 /* yy_bp points to the position in yy_ch_buf of the start of
1705 yy_current_state = yy_start;
1706 yy_current_state += YY_AT_BOL();
1710 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1711 if ( yy_accept[yy_current_state] )
1713 yy_last_accepting_state = yy_current_state;
1714 yy_last_accepting_cpos = yy_cp;
1716 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1718 yy_current_state = (int) yy_def[yy_current_state];
1719 if ( yy_current_state >= 607 )
1720 yy_c = yy_meta[(unsigned int) yy_c];
1722 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1725 while ( yy_base[yy_current_state] != 3665 );
1728 yy_act = yy_accept[yy_current_state];
1730 { /* have to back up */
1731 yy_cp = yy_last_accepting_cpos;
1732 yy_current_state = yy_last_accepting_state;
1733 yy_act = yy_accept[yy_current_state];
1736 YY_DO_BEFORE_ACTION;
1739 do_action: /* This label is used only to access EOF actions. */
1743 { /* beginning of action switch */
1744 case 0: /* must back up */
1745 /* undo the effects of YY_DO_BEFORE_ACTION */
1746 *yy_cp = yy_hold_char;
1747 yy_cp = yy_last_accepting_cpos;
1748 yy_current_state = yy_last_accepting_state;
1749 goto yy_find_action;
1769 LEXTRACE("DEFVAR ");
1770 if (!fill(yytext, yyleng))
1813 LEXTRACE("BEGINSTR ");
1814 yylval.string = NULL;
1815 prev_state = YY_START;
1823 LEXTRACE("WORD(2) ");
1824 if (!fill(yytext, yyleng))
1835 /* Line continuation char followed by newline. */
1844 LEXTRACE("ENDSTR ");
1847 if (yylval.string == NULL) {
1848 LEXTRACE("ERROR "); /* empty string */
1851 if (prev_state == INITIAL) {
1852 switch (yylval.string[0]) {
1854 if (yylval.string[1] == '\0' ||
1855 (yylval.string[1] == ':' &&
1856 yylval.string[2] == '\0')) {
1857 LEXTRACE("ERROR "); /* empty group */
1860 LEXTRACE("USERGROUP ");
1863 if (yylval.string[1] == '\0') {
1864 LEXTRACE("ERROR "); /* empty netgroup */
1867 LEXTRACE("NETGROUP ");
1871 LEXTRACE("WORD(4) ");
1879 LEXTRACE("BACKSLASH ");
1880 if (!append(yytext, yyleng))
1888 LEXTRACE("STRBODY ");
1889 if (!append(yytext, yyleng))
1899 /* quoted fnmatch glob char, pass verbatim */
1900 LEXTRACE("QUOTEDCHAR ");
1901 if (!fill_args(yytext, 2, sawspace))
1910 /* quoted sudoers special char, strip backslash */
1911 LEXTRACE("QUOTEDCHAR ");
1912 if (!fill_args(yytext + 1, 1, sawspace))
1924 } /* end of command line args */
1931 if (!fill_args(yytext, yyleng, sawspace))
1934 } /* a command line arg */
1948 if ((path = parse_include(yytext)) == NULL)
1951 LEXTRACE("INCLUDE\n");
1953 /* Push current buffer and switch to include file */
1954 if (!push_include(path))
1969 if ((path = parse_include(yytext)) == NULL)
1972 LEXTRACE("INCLUDEDIR\n");
1975 * Push current buffer and switch to include file.
1976 * We simply ignore empty directories.
1978 if (!push_includedir(path) && parse_error)
1994 for (n = 0; isblank((unsigned char)yytext[n]); n++)
1996 n += sizeof("Defaults") - 1;
1997 if ((deftype = yytext[n++]) != '\0') {
1998 while (isblank((unsigned char)yytext[n]))
2005 LEXTRACE("DEFAULTS_USER ");
2006 return DEFAULTS_USER;
2009 LEXTRACE("DEFAULTS_RUNAS ");
2010 return DEFAULTS_RUNAS;
2013 LEXTRACE("DEFAULTS_HOST ");
2014 return DEFAULTS_HOST;
2017 LEXTRACE("DEFAULTS_CMND ");
2018 return DEFAULTS_CMND;
2020 LEXTRACE("DEFAULTS ");
2036 for (n = 0; isblank((unsigned char)yytext[n]); n++)
2038 switch (yytext[n]) {
2040 LEXTRACE("HOSTALIAS ");
2043 LEXTRACE("CMNDALIAS ");
2046 LEXTRACE("USERALIAS ");
2049 LEXTRACE("RUNASALIAS ");
2058 /* cmnd does not require passwd for this user */
2059 LEXTRACE("NOPASSWD ");
2067 /* cmnd requires passwd for this user */
2068 LEXTRACE("PASSWD ");
2076 LEXTRACE("NOEXEC ");
2092 LEXTRACE("SETENV ");
2100 LEXTRACE("NOSETENV ");
2108 LEXTRACE("LOG_OUTPUT ");
2116 LEXTRACE("NOLOG_OUTPUT ");
2117 return NOLOG_OUTPUT;
2124 LEXTRACE("LOG_INPUT ");
2132 LEXTRACE("NOLOG_INPUT ");
2140 /* empty group or netgroup */
2150 if (!fill(yytext, yyleng))
2152 LEXTRACE("NETGROUP ");
2161 if (!fill(yytext, yyleng))
2163 LEXTRACE("USERGROUP ");
2171 if (!fill(yytext, yyleng))
2173 LEXTRACE("NTWKADDR ");
2181 if (!fill(yytext, yyleng))
2183 LEXTRACE("NTWKADDR ");
2191 if (!ipv6_valid(yytext)) {
2195 if (!fill(yytext, yyleng))
2197 LEXTRACE("NTWKADDR ");
2205 if (!ipv6_valid(yytext)) {
2209 if (!fill(yytext, yyleng))
2211 LEXTRACE("NTWKADDR ");
2252 #ifndef HAVE_SELINUX
2255 if (!fill(yytext, yyleng))
2265 /* no command args allowed for Defaults!/path */
2266 if (!fill_cmnd(yytext, yyleng))
2268 LEXTRACE("COMMAND ");
2277 LEXTRACE("COMMAND ");
2278 if (!fill_cmnd(yytext, yyleng))
2286 /* directories can't have args... */
2287 if (yytext[yyleng - 1] == '/') {
2288 LEXTRACE("COMMAND ");
2289 if (!fill_cmnd(yytext, yyleng))
2294 LEXTRACE("COMMAND ");
2295 if (!fill_cmnd(yytext, yyleng))
2304 LEXTRACE("BEGINSTR ");
2305 yylval.string = NULL;
2306 prev_state = YY_START;
2315 if (!fill(yytext, yyleng))
2317 LEXTRACE("WORD(5) ");
2367 return '!'; /* return '!' */
2375 if (YY_START == INSTR) {
2377 return ERROR; /* line break in string */
2384 } /* return newline */
2389 { /* throw away space/tabs */
2390 sawspace = TRUE; /* but remember for fill_args */
2397 sawspace = TRUE; /* remember for fill_args */
2400 } /* throw away EOL after \ */
2411 } /* comment, not uid/gid */
2421 case YY_STATE_EOF(INITIAL):
2422 case YY_STATE_EOF(GOTDEFS):
2423 case YY_STATE_EOF(GOTCMND):
2424 case YY_STATE_EOF(STARTDEFS):
2425 case YY_STATE_EOF(INDEFS):
2426 case YY_STATE_EOF(INSTR):
2429 if (YY_START != INITIAL) {
2443 #line 2443 "lex.yy.c"
2445 case YY_END_OF_BUFFER:
2447 /* Amount of text matched not including the EOB char. */
2448 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2450 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2451 *yy_cp = yy_hold_char;
2452 YY_RESTORE_YY_MORE_OFFSET
2454 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2456 /* We're scanning a new file or input source. It's
2457 * possible that this happened because the user
2458 * just pointed yyin at a new source and called
2459 * yylex(). If so, then we have to assure
2460 * consistency between yy_current_buffer and our
2461 * globals. Here is the right place to do so, because
2462 * this is the first action (other than possibly a
2463 * back-up) that will match for the new input source.
2465 yy_n_chars = yy_current_buffer->yy_n_chars;
2466 yy_current_buffer->yy_input_file = yyin;
2467 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2470 /* Note that here we test for yy_c_buf_p "<=" to the position
2471 * of the first EOB in the buffer, since yy_c_buf_p will
2472 * already have been incremented past the NUL character
2473 * (since all states make transitions on EOB to the
2474 * end-of-buffer state). Contrast this with the test
2477 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2478 { /* This was really a NUL. */
2479 yy_state_type yy_next_state;
2481 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2483 yy_current_state = yy_get_previous_state();
2485 /* Okay, we're now positioned to make the NUL
2486 * transition. We couldn't have
2487 * yy_get_previous_state() go ahead and do it
2488 * for us because it doesn't know how to deal
2489 * with the possibility of jamming (and we don't
2490 * want to build jamming into it because then it
2491 * will run more slowly).
2494 yy_next_state = yy_try_NUL_trans( yy_current_state );
2496 yy_bp = yytext_ptr + YY_MORE_ADJ;
2498 if ( yy_next_state )
2500 /* Consume the NUL. */
2501 yy_cp = ++yy_c_buf_p;
2502 yy_current_state = yy_next_state;
2509 goto yy_find_action;
2513 else switch ( yy_get_next_buffer() )
2515 case EOB_ACT_END_OF_FILE:
2517 yy_did_buffer_switch_on_eof = 0;
2521 /* Note: because we've taken care in
2522 * yy_get_next_buffer() to have set up
2523 * yytext, we can now set up
2524 * yy_c_buf_p so that if some total
2525 * hoser (like flex itself) wants to
2526 * call the scanner after we return the
2527 * YY_NULL, it'll still work - another
2528 * YY_NULL will get returned.
2530 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2532 yy_act = YY_STATE_EOF(YY_START);
2538 if ( ! yy_did_buffer_switch_on_eof )
2544 case EOB_ACT_CONTINUE_SCAN:
2546 yytext_ptr + yy_amount_of_matched_text;
2548 yy_current_state = yy_get_previous_state();
2551 yy_bp = yytext_ptr + YY_MORE_ADJ;
2554 case EOB_ACT_LAST_MATCH:
2556 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2558 yy_current_state = yy_get_previous_state();
2561 yy_bp = yytext_ptr + YY_MORE_ADJ;
2562 goto yy_find_action;
2569 "fatal flex scanner internal error--no action found" );
2570 } /* end of action switch */
2571 } /* end of scanning one token */
2572 } /* end of yylex */
2575 /* yy_get_next_buffer - try to read in a new buffer
2577 * Returns a code representing an action:
2578 * EOB_ACT_LAST_MATCH -
2579 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2580 * EOB_ACT_END_OF_FILE - end of file
2583 static int yy_get_next_buffer()
2585 register char *dest = yy_current_buffer->yy_ch_buf;
2586 register char *source = yytext_ptr;
2587 register int number_to_move, i;
2590 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2592 "fatal flex scanner internal error--end of buffer missed" );
2594 if ( yy_current_buffer->yy_fill_buffer == 0 )
2595 { /* Don't try to fill the buffer, so this is an EOF. */
2596 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2598 /* We matched a single character, the EOB, so
2599 * treat this as a final EOF.
2601 return EOB_ACT_END_OF_FILE;
2606 /* We matched some text prior to the EOB, first
2609 return EOB_ACT_LAST_MATCH;
2613 /* Try to read more data. */
2615 /* First move last chars to start of buffer. */
2616 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2618 for ( i = 0; i < number_to_move; ++i )
2619 *(dest++) = *(source++);
2621 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2622 /* don't do the read, it's not guaranteed to return an EOF,
2625 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2630 yy_current_buffer->yy_buf_size - number_to_move - 1;
2632 while ( num_to_read <= 0 )
2633 { /* Not enough room in the buffer - grow it. */
2634 #ifdef YY_USES_REJECT
2636 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2639 /* just a shorter name for the current buffer */
2640 YY_BUFFER_STATE b = yy_current_buffer;
2642 int yy_c_buf_p_offset =
2643 (int) (yy_c_buf_p - b->yy_ch_buf);
2645 if ( b->yy_is_our_buffer )
2647 int new_size = b->yy_buf_size * 2;
2649 if ( new_size <= 0 )
2650 b->yy_buf_size += b->yy_buf_size / 8;
2652 b->yy_buf_size *= 2;
2654 b->yy_ch_buf = (char *)
2655 /* Include room in for 2 EOB chars. */
2656 yy_flex_realloc( (void *) b->yy_ch_buf,
2657 b->yy_buf_size + 2 );
2660 /* Can't grow it, we don't own it. */
2663 if ( ! b->yy_ch_buf )
2665 "fatal error - scanner input buffer overflow" );
2667 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2669 num_to_read = yy_current_buffer->yy_buf_size -
2674 if ( num_to_read > YY_READ_BUF_SIZE )
2675 num_to_read = YY_READ_BUF_SIZE;
2677 /* Read in more data. */
2678 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2679 yy_n_chars, num_to_read );
2681 yy_current_buffer->yy_n_chars = yy_n_chars;
2684 if ( yy_n_chars == 0 )
2686 if ( number_to_move == YY_MORE_ADJ )
2688 ret_val = EOB_ACT_END_OF_FILE;
2694 ret_val = EOB_ACT_LAST_MATCH;
2695 yy_current_buffer->yy_buffer_status =
2696 YY_BUFFER_EOF_PENDING;
2701 ret_val = EOB_ACT_CONTINUE_SCAN;
2703 yy_n_chars += number_to_move;
2704 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2705 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2707 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2713 /* yy_get_previous_state - get the state just before the EOB char was reached */
2715 static yy_state_type yy_get_previous_state()
2717 register yy_state_type yy_current_state;
2718 register char *yy_cp;
2720 yy_current_state = yy_start;
2721 yy_current_state += YY_AT_BOL();
2723 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2725 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2726 if ( yy_accept[yy_current_state] )
2728 yy_last_accepting_state = yy_current_state;
2729 yy_last_accepting_cpos = yy_cp;
2731 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2733 yy_current_state = (int) yy_def[yy_current_state];
2734 if ( yy_current_state >= 607 )
2735 yy_c = yy_meta[(unsigned int) yy_c];
2737 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2740 return yy_current_state;
2744 /* yy_try_NUL_trans - try to make a transition on the NUL character
2747 * next_state = yy_try_NUL_trans( current_state );
2750 #ifdef YY_USE_PROTOS
2751 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2753 static yy_state_type yy_try_NUL_trans( yy_current_state )
2754 yy_state_type yy_current_state;
2757 register int yy_is_jam;
2758 register char *yy_cp = yy_c_buf_p;
2760 register YY_CHAR yy_c = 1;
2761 if ( yy_accept[yy_current_state] )
2763 yy_last_accepting_state = yy_current_state;
2764 yy_last_accepting_cpos = yy_cp;
2766 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2768 yy_current_state = (int) yy_def[yy_current_state];
2769 if ( yy_current_state >= 607 )
2770 yy_c = yy_meta[(unsigned int) yy_c];
2772 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2773 yy_is_jam = (yy_current_state == 606);
2775 return yy_is_jam ? 0 : yy_current_state;
2780 #ifdef YY_USE_PROTOS
2781 static void yyunput( int c, register char *yy_bp )
2783 static void yyunput( c, yy_bp )
2785 register char *yy_bp;
2788 register char *yy_cp = yy_c_buf_p;
2790 /* undo effects of setting up yytext */
2791 *yy_cp = yy_hold_char;
2793 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2794 { /* need to shift things up to make room */
2795 /* +2 for EOB chars. */
2796 register int number_to_move = yy_n_chars + 2;
2797 register char *dest = &yy_current_buffer->yy_ch_buf[
2798 yy_current_buffer->yy_buf_size + 2];
2799 register char *source =
2800 &yy_current_buffer->yy_ch_buf[number_to_move];
2802 while ( source > yy_current_buffer->yy_ch_buf )
2803 *--dest = *--source;
2805 yy_cp += (int) (dest - source);
2806 yy_bp += (int) (dest - source);
2807 yy_current_buffer->yy_n_chars =
2808 yy_n_chars = yy_current_buffer->yy_buf_size;
2810 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2811 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2814 *--yy_cp = (char) c;
2818 yy_hold_char = *yy_cp;
2821 #endif /* ifndef YY_NO_UNPUT */
2826 static int yyinput()
2833 *yy_c_buf_p = yy_hold_char;
2835 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2837 /* yy_c_buf_p now points to the character we want to return.
2838 * If this occurs *before* the EOB characters, then it's a
2839 * valid NUL; if not, then we've hit the end of the buffer.
2841 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2842 /* This was really a NUL. */
2846 { /* need more input */
2847 int offset = yy_c_buf_p - yytext_ptr;
2850 switch ( yy_get_next_buffer() )
2852 case EOB_ACT_LAST_MATCH:
2853 /* This happens because yy_g_n_b()
2854 * sees that we've accumulated a
2855 * token and flags that we need to
2856 * try matching the token before
2857 * proceeding. But for input(),
2858 * there's no matching to consider.
2859 * So convert the EOB_ACT_LAST_MATCH
2860 * to EOB_ACT_END_OF_FILE.
2863 /* Reset buffer status. */
2868 case EOB_ACT_END_OF_FILE:
2873 if ( ! yy_did_buffer_switch_on_eof )
2882 case EOB_ACT_CONTINUE_SCAN:
2883 yy_c_buf_p = yytext_ptr + offset;
2889 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
2890 *yy_c_buf_p = '\0'; /* preserve yytext */
2891 yy_hold_char = *++yy_c_buf_p;
2893 yy_current_buffer->yy_at_bol = (c == '\n');
2897 #endif /* ifndef YY_NO_INPUT */
2900 #ifdef YY_USE_PROTOS
2901 void yyrestart( FILE *input_file )
2903 void yyrestart( input_file )
2907 if ( ! yy_current_buffer )
2908 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2910 yy_init_buffer( yy_current_buffer, input_file );
2911 yy_load_buffer_state();
2915 #ifdef YY_USE_PROTOS
2916 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2918 void yy_switch_to_buffer( new_buffer )
2919 YY_BUFFER_STATE new_buffer;
2922 if ( yy_current_buffer == new_buffer )
2925 if ( yy_current_buffer )
2927 /* Flush out information for old buffer. */
2928 *yy_c_buf_p = yy_hold_char;
2929 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2930 yy_current_buffer->yy_n_chars = yy_n_chars;
2933 yy_current_buffer = new_buffer;
2934 yy_load_buffer_state();
2936 /* We don't actually know whether we did this switch during
2937 * EOF (yywrap()) processing, but the only time this flag
2938 * is looked at is after yywrap() is called, so it's safe
2939 * to go ahead and always set it.
2941 yy_did_buffer_switch_on_eof = 1;
2945 #ifdef YY_USE_PROTOS
2946 void yy_load_buffer_state( void )
2948 void yy_load_buffer_state()
2951 yy_n_chars = yy_current_buffer->yy_n_chars;
2952 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2953 yyin = yy_current_buffer->yy_input_file;
2954 yy_hold_char = *yy_c_buf_p;
2958 #ifdef YY_USE_PROTOS
2959 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2961 YY_BUFFER_STATE yy_create_buffer( file, size )
2968 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2970 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2972 b->yy_buf_size = size;
2974 /* yy_ch_buf has to be 2 characters longer than the size given because
2975 * we need to put in 2 end-of-buffer characters.
2977 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2978 if ( ! b->yy_ch_buf )
2979 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2981 b->yy_is_our_buffer = 1;
2983 yy_init_buffer( b, file );
2989 #ifdef YY_USE_PROTOS
2990 void yy_delete_buffer( YY_BUFFER_STATE b )
2992 void yy_delete_buffer( b )
2999 if ( b == yy_current_buffer )
3000 yy_current_buffer = (YY_BUFFER_STATE) 0;
3002 if ( b->yy_is_our_buffer )
3003 yy_flex_free( (void *) b->yy_ch_buf );
3005 yy_flex_free( (void *) b );
3009 #ifndef YY_ALWAYS_INTERACTIVE
3010 #ifndef YY_NEVER_INTERACTIVE
3015 #ifdef YY_USE_PROTOS
3016 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3018 void yy_init_buffer( b, file )
3027 yy_flush_buffer( b );
3029 b->yy_input_file = file;
3030 b->yy_fill_buffer = 1;
3032 #if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
3033 b->yy_is_interactive = 1;
3035 #if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
3036 b->yy_is_interactive = 0;
3038 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3045 #ifdef YY_USE_PROTOS
3046 void yy_flush_buffer( YY_BUFFER_STATE b )
3048 void yy_flush_buffer( b )
3058 /* We always need two end-of-buffer characters. The first causes
3059 * a transition to the end-of-buffer state. The second causes
3060 * a jam in that state.
3062 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3063 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3065 b->yy_buf_pos = &b->yy_ch_buf[0];
3068 b->yy_buffer_status = YY_BUFFER_NEW;
3070 if ( b == yy_current_buffer )
3071 yy_load_buffer_state();
3075 #ifndef YY_NO_SCAN_BUFFER
3076 #ifdef YY_USE_PROTOS
3077 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3079 YY_BUFFER_STATE yy_scan_buffer( base, size )
3087 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3088 base[size-1] != YY_END_OF_BUFFER_CHAR )
3089 /* They forgot to leave room for the EOB's. */
3092 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3094 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3096 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3097 b->yy_buf_pos = b->yy_ch_buf = base;
3098 b->yy_is_our_buffer = 0;
3099 b->yy_input_file = 0;
3100 b->yy_n_chars = b->yy_buf_size;
3101 b->yy_is_interactive = 0;
3103 b->yy_fill_buffer = 0;
3104 b->yy_buffer_status = YY_BUFFER_NEW;
3106 yy_switch_to_buffer( b );
3113 #ifndef YY_NO_SCAN_STRING
3114 #ifdef YY_USE_PROTOS
3115 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3117 YY_BUFFER_STATE yy_scan_string( yy_str )
3118 yyconst char *yy_str;
3122 for ( len = 0; yy_str[len]; ++len )
3125 return yy_scan_bytes( yy_str, len );
3130 #ifndef YY_NO_SCAN_BYTES
3131 #ifdef YY_USE_PROTOS
3132 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3134 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3135 yyconst char *bytes;
3144 /* Get memory for full buffer, including space for trailing EOB's. */
3146 buf = (char *) yy_flex_alloc( n );
3148 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3150 for ( i = 0; i < len; ++i )
3153 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3155 b = yy_scan_buffer( buf, n );
3157 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3159 /* It's okay to grow etc. this buffer, and we should throw it
3160 * away when we're done.
3162 b->yy_is_our_buffer = 1;
3169 #ifndef YY_NO_PUSH_STATE
3170 #ifdef YY_USE_PROTOS
3171 static void yy_push_state( int new_state )
3173 static void yy_push_state( new_state )
3177 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3181 yy_start_stack_depth += YY_START_STACK_INCR;
3182 new_size = yy_start_stack_depth * sizeof( int );
3184 if ( ! yy_start_stack )
3185 yy_start_stack = (int *) yy_flex_alloc( new_size );
3188 yy_start_stack = (int *) yy_flex_realloc(
3189 (void *) yy_start_stack, new_size );
3191 if ( ! yy_start_stack )
3193 "out of memory expanding start-condition stack" );
3196 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3203 #ifndef YY_NO_POP_STATE
3204 static void yy_pop_state()
3206 if ( --yy_start_stack_ptr < 0 )
3207 YY_FATAL_ERROR( "start-condition stack underflow" );
3209 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3214 #ifndef YY_NO_TOP_STATE
3215 static int yy_top_state()
3217 return yy_start_stack[yy_start_stack_ptr - 1];
3221 #ifndef YY_EXIT_FAILURE
3222 #define YY_EXIT_FAILURE 2
3225 #ifdef YY_USE_PROTOS
3226 static void yy_fatal_error( yyconst char msg[] )
3228 static void yy_fatal_error( msg )
3232 (void) fprintf( stderr, "%s\n", msg );
3233 exit( YY_EXIT_FAILURE );
3238 /* Redefine yyless() so it works in section 3 code. */
3244 /* Undo effects of setting up yytext. */ \
3245 yytext[yyleng] = yy_hold_char; \
3246 yy_c_buf_p = yytext + n; \
3247 yy_hold_char = *yy_c_buf_p; \
3248 *yy_c_buf_p = '\0'; \
3254 /* Internal utility routines. */
3257 #ifdef YY_USE_PROTOS
3258 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3260 static void yy_flex_strncpy( s1, s2, n )
3267 for ( i = 0; i < n; ++i )
3272 #ifdef YY_NEED_STRLEN
3273 #ifdef YY_USE_PROTOS
3274 static int yy_flex_strlen( yyconst char *s )
3276 static int yy_flex_strlen( s )
3281 for ( n = 0; s[n]; ++n )
3289 #ifdef YY_USE_PROTOS
3290 static void *yy_flex_alloc( yy_size_t size )
3292 static void *yy_flex_alloc( size )
3296 return (void *) malloc( size );
3299 #ifdef YY_USE_PROTOS
3300 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3302 static void *yy_flex_realloc( ptr, size )
3307 /* The cast to (char *) in the following accommodates both
3308 * implementations that use char* generic pointers, and those
3309 * that use void* generic pointers. It works with the latter
3310 * because both ANSI C and C++ allow castless assignment from
3311 * any pointer type to void*, and deal with argument conversions
3312 * as though doing an assignment.
3314 return (void *) realloc( (char *) ptr, size );
3317 #ifdef YY_USE_PROTOS
3318 static void yy_flex_free( void *ptr )
3320 static void yy_flex_free( ptr )
3327 #if defined(YY_MAIN) && YY_MAIN
3338 struct path_list *next;
3341 struct include_stack {
3344 struct path_list *more; /* more files in case of includedir */
3350 pl_compare(const void *v1, const void *v2)
3352 const struct path_list * const *p1 = v1;
3353 const struct path_list * const *p2 = v2;
3355 return strcmp((*p1)->path, (*p2)->path);
3359 switch_dir(struct include_stack *stack, char *dirpath)
3364 struct dirent *dent;
3366 struct path_list *pl, *first = NULL;
3367 struct path_list **sorted = NULL;
3369 if (!(dir = opendir(dirpath))) {
3370 if (errno != ENOENT) {
3372 if (asprintf(&errbuf, _("%s: %s"), dirpath, strerror(errno)) != -1) {
3376 yyerror(_("unable to allocate memory"));
3381 while ((dent = readdir(dir))) {
3382 /* Ignore files that end in '~' or have a '.' in them. */
3383 if (dent->d_name[0] == '\0' || dent->d_name[NAMLEN(dent) - 1] == '~'
3384 || strchr(dent->d_name, '.') != NULL) {
3387 if (asprintf(&path, "%s/%s", dirpath, dent->d_name) == -1) {
3391 if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
3396 pl = malloc(sizeof(*pl));
3409 /* Sort the list as an array. */
3410 sorted = malloc(sizeof(*sorted) * count);
3414 for (i = 0; i < count; i++) {
3418 qsort(sorted, count, sizeof(*sorted), pl_compare);
3420 /* Apply sorting to the list. */
3422 sorted[count - 1]->next = NULL;
3423 for (i = 1; i < count; i++)
3424 sorted[i - 1]->next = sorted[i];
3427 /* Pull out the first element for parsing, leave the rest for later. */
3440 while (first != NULL) {
3452 #define MAX_SUDOERS_DEPTH 128
3453 #define SUDOERS_STACK_INCREMENT 16
3455 static size_t istacksize, idepth;
3456 static struct include_stack *istack;
3457 static int keepopen;
3462 struct path_list *pl;
3466 while ((pl = istack[idepth].more) != NULL) {
3467 istack[idepth].more = pl->next;
3471 efree(istack[idepth].path);
3472 if (idepth && !istack[idepth].keepopen)
3473 fclose(istack[idepth].bs->yy_input_file);
3474 yy_delete_buffer(istack[idepth].bs);
3478 istacksize = idepth = 0;
3483 prev_state = INITIAL;
3487 _push_include(char *path, int isdir)
3489 struct path_list *pl;
3492 /* push current state onto stack */
3493 if (idepth >= istacksize) {
3494 if (idepth > MAX_SUDOERS_DEPTH) {
3495 yyerror(_("too many levels of includes"));
3498 istacksize += SUDOERS_STACK_INCREMENT;
3499 istack = (struct include_stack *) realloc(istack,
3500 sizeof(*istack) * istacksize);
3501 if (istack == NULL) {
3502 yyerror(_("unable to allocate memory"));
3507 if (!(path = switch_dir(&istack[idepth], path))) {
3508 /* switch_dir() called yyerror() for us */
3511 while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) {
3512 /* Unable to open path in includedir, go to next one, if any. */
3514 if ((pl = istack[idepth].more) == NULL)
3517 istack[idepth].more = pl->next;
3521 if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {
3523 if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {
3527 yyerror(_("unable to allocate memory"));
3531 istack[idepth].more = NULL;
3533 /* Push the old (current) file and open the new one. */
3534 istack[idepth].path = sudoers; /* push old path */
3535 istack[idepth].bs = YY_CURRENT_BUFFER;
3536 istack[idepth].lineno = sudolineno;
3537 istack[idepth].keepopen = keepopen;
3541 yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
3549 struct path_list *pl;
3556 fclose(YY_CURRENT_BUFFER->yy_input_file);
3557 yy_delete_buffer(YY_CURRENT_BUFFER);
3558 /* If we are in an include dir, move to the next file. */
3559 while ((pl = istack[idepth - 1].more) != NULL) {
3560 fp = open_sudoers(pl->path, FALSE, &keepopen);
3562 istack[idepth - 1].more = pl->next;
3566 yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
3570 /* Unable to open path in include dir, go to next one. */
3571 istack[idepth - 1].more = pl->next;
3575 /* If no path list, just pop the last dir on the stack. */
3578 yy_switch_to_buffer(istack[idepth].bs);
3580 sudoers = istack[idepth].path;
3581 sudolineno = istack[idepth].lineno;
3582 keepopen = istack[idepth].keepopen;
3588 parse_include(char *base)
3590 char *cp, *ep, *path;
3591 int len = 0, subst = 0;
3592 size_t shost_len = 0;
3594 /* Pull out path from #include line. */
3595 cp = base + sizeof("#include");
3597 cp += 3; /* includedir */
3598 while (isblank((unsigned char) *cp))
3601 while (*ep != '\0' && !isspace((unsigned char) *ep)) {
3602 if (ep[0] == '%' && ep[1] == 'h') {
3603 shost_len = strlen(user_shost);
3604 len += shost_len - 2;
3610 /* Make a copy of path and return it. */
3611 len += (int)(ep - cp);
3612 if ((path = malloc(len + 1)) == NULL) {
3613 yyerror(_("unable to allocate memory"));
3617 /* substitute for %h */
3620 if (cp[0] == '%' && cp[1] == 'h') {
3621 memcpy(pp, user_shost, shost_len);
3630 memcpy(path, cp, len);
3634 /* Push any excess characters (e.g. comment, newline) back to the lexer */
3636 yyless((int)(ep - base));
3643 sudoers_trace_print(const char *msg)
3645 return fputs(msg, stderr);
3647 #endif /* TRACELEXER */