Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill deprecated cruft and unused variables
[simgrid.git] / src / surf / simgrid_dtd.c
1
2 #line 3 "surf/simgrid_dtd.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define yy_create_buffer surf_parse__create_buffer
9 #define yy_delete_buffer surf_parse__delete_buffer
10 #define yy_flex_debug surf_parse__flex_debug
11 #define yy_init_buffer surf_parse__init_buffer
12 #define yy_flush_buffer surf_parse__flush_buffer
13 #define yy_load_buffer_state surf_parse__load_buffer_state
14 #define yy_switch_to_buffer surf_parse__switch_to_buffer
15 #define yyin surf_parse_in
16 #define yyleng surf_parse_leng
17 #define yylex surf_parse_lex
18 #define yylineno surf_parse_lineno
19 #define yyout surf_parse_out
20 #define yyrestart surf_parse_restart
21 #define yytext surf_parse_text
22 #define yywrap surf_parse_wrap
23 #define yyalloc surf_parse_alloc
24 #define yyrealloc surf_parse_realloc
25 #define yyfree surf_parse_free
26
27 #define FLEX_SCANNER
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
30 #define YY_FLEX_SUBMINOR_VERSION 35
31 #if YY_FLEX_SUBMINOR_VERSION > 0
32 #define FLEX_BETA
33 #endif
34
35 /* First, we deal with  platform-specific or compiler-specific issues. */
36
37 /* begin standard C headers. */
38 #include <stdio.h>
39 #include <string.h>
40 #include <errno.h>
41 #include <stdlib.h>
42
43 /* end standard C headers. */
44
45 /* flex integer type definitions */
46
47 #ifndef FLEXINT_H
48 #define FLEXINT_H
49
50 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55  * if you want the limit (max/min) macros for int types. 
56  */
57 #ifndef __STDC_LIMIT_MACROS
58 #define __STDC_LIMIT_MACROS 1
59 #endif
60
61 #include <inttypes.h>
62 typedef int8_t flex_int8_t;
63 typedef uint8_t flex_uint8_t;
64 typedef int16_t flex_int16_t;
65 typedef uint16_t flex_uint16_t;
66 typedef int32_t flex_int32_t;
67 typedef uint32_t flex_uint32_t;
68 #else
69 typedef signed char flex_int8_t;
70 typedef short int flex_int16_t;
71 typedef int flex_int32_t;
72 typedef unsigned char flex_uint8_t;
73 typedef unsigned short int flex_uint16_t;
74 typedef unsigned int flex_uint32_t;
75
76 /* Limits of integral types. */
77 #ifndef INT8_MIN
78 #define INT8_MIN               (-128)
79 #endif
80 #ifndef INT16_MIN
81 #define INT16_MIN              (-32767-1)
82 #endif
83 #ifndef INT32_MIN
84 #define INT32_MIN              (-2147483647-1)
85 #endif
86 #ifndef INT8_MAX
87 #define INT8_MAX               (127)
88 #endif
89 #ifndef INT16_MAX
90 #define INT16_MAX              (32767)
91 #endif
92 #ifndef INT32_MAX
93 #define INT32_MAX              (2147483647)
94 #endif
95 #ifndef UINT8_MAX
96 #define UINT8_MAX              (255U)
97 #endif
98 #ifndef UINT16_MAX
99 #define UINT16_MAX             (65535U)
100 #endif
101 #ifndef UINT32_MAX
102 #define UINT32_MAX             (4294967295U)
103 #endif
104
105 #endif /* ! C99 */
106
107 #endif /* ! FLEXINT_H */
108
109 #ifdef __cplusplus
110
111 /* The "const" storage-class-modifier is valid. */
112 #define YY_USE_CONST
113
114 #else /* ! __cplusplus */
115
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
118
119 #define YY_USE_CONST
120
121 #endif /* defined (__STDC__) */
122 #endif /* ! __cplusplus */
123
124 #ifdef YY_USE_CONST
125 #define yyconst const
126 #else
127 #define yyconst
128 #endif
129
130 /* Returned upon end-of-file. */
131 #define YY_NULL 0
132
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134  * integer for use as an array index.  If the signed char is negative,
135  * we want to instead treat it as an 8-bit unsigned char, hence the
136  * double cast.
137  */
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
139
140 /* Enter a start condition.  This macro really ought to take a parameter,
141  * but we do it the disgusting crufty way forced on us by the ()-less
142  * definition of BEGIN.
143  */
144 #define BEGIN (yy_start) = 1 + 2 *
145
146 /* Translate the current start state into a value that can be later handed
147  * to BEGIN to return to the state.  The YYSTATE alias is for lex
148  * compatibility.
149  */
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
152
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
155
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
158
159 #define YY_END_OF_BUFFER_CHAR 0
160
161 /* Size of default input buffer. */
162 #ifndef YY_BUF_SIZE
163 #ifdef __ia64__
164 /* On IA-64, the buffer size is 16k, not 8k.
165  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
166  * Ditto for the __ia64__ case accordingly.
167  */
168 #define YY_BUF_SIZE 32768
169 #else
170 #define YY_BUF_SIZE 16384
171 #endif /* __ia64__ */
172 #endif
173
174 /* The state buf must be large enough to hold one state per character in the main buffer.
175  */
176 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
177
178 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
179 #define YY_TYPEDEF_YY_BUFFER_STATE
180 typedef struct yy_buffer_state *YY_BUFFER_STATE;
181 #endif
182
183 extern int surf_parse_leng;
184
185 extern FILE *surf_parse_in, *surf_parse_out;
186
187 #define EOB_ACT_CONTINUE_SCAN 0
188 #define EOB_ACT_END_OF_FILE 1
189 #define EOB_ACT_LAST_MATCH 2
190
191     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
192      *       access to the local variable yy_act. Since yyless() is a macro, it would break
193      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
194      *       One obvious solution it to make yy_act a global. I tried that, and saw
195      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
196      *       normally declared as a register variable-- so it is not worth it.
197      */
198 #define  YY_LESS_LINENO(n) \
199             do { \
200                 int yyl;\
201                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
202                     if ( surf_parse_text[yyl] == '\n' )\
203                         --surf_parse_lineno;\
204             }while(0)
205
206 /* Return all but the first "n" matched characters back to the input stream. */
207 #define yyless(n) \
208         do \
209                 { \
210                 /* Undo effects of setting up surf_parse_text. */ \
211         int yyless_macro_arg = (n); \
212         YY_LESS_LINENO(yyless_macro_arg);\
213                 *yy_cp = (yy_hold_char); \
214                 YY_RESTORE_YY_MORE_OFFSET \
215                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
216                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
217                 } \
218         while ( 0 )
219
220 #define unput(c) yyunput( c, (yytext_ptr)  )
221
222 #ifndef YY_TYPEDEF_YY_SIZE_T
223 #define YY_TYPEDEF_YY_SIZE_T
224 typedef size_t yy_size_t;
225 #endif
226
227 #ifndef YY_STRUCT_YY_BUFFER_STATE
228 #define YY_STRUCT_YY_BUFFER_STATE
229 struct yy_buffer_state {
230   FILE *yy_input_file;
231
232   char *yy_ch_buf;              /* input buffer */
233   char *yy_buf_pos;             /* current position in input buffer */
234
235   /* Size of input buffer in bytes, not including room for EOB
236    * characters.
237    */
238   yy_size_t yy_buf_size;
239
240   /* Number of characters read into yy_ch_buf, not including EOB
241    * characters.
242    */
243   int yy_n_chars;
244
245   /* Whether we "own" the buffer - i.e., we know we created it,
246    * and can realloc() it to grow it, and should free() it to
247    * delete it.
248    */
249   int yy_is_our_buffer;
250
251   /* Whether this is an "interactive" input source; if so, and
252    * if we're using stdio for input, then we want to use getc()
253    * instead of fread(), to make sure we stop fetching input after
254    * each newline.
255    */
256   int yy_is_interactive;
257
258   /* Whether we're considered to be at the beginning of a line.
259    * If so, '^' rules will be active on the next match, otherwise
260    * not.
261    */
262   int yy_at_bol;
263
264   int yy_bs_lineno;   /**< The line count. */
265   int yy_bs_column;   /**< The column count. */
266
267   /* Whether to try to fill the input buffer when we reach the
268    * end of it.
269    */
270   int yy_fill_buffer;
271
272   int yy_buffer_status;
273
274 #define YY_BUFFER_NEW 0
275 #define YY_BUFFER_NORMAL 1
276   /* When an EOF's been seen but there's still some text to process
277    * then we mark the buffer as YY_EOF_PENDING, to indicate that we
278    * shouldn't try reading from the input source any more.  We might
279    * still have a bunch of tokens to match, though, because of
280    * possible backing-up.
281    *
282    * When we actually see the EOF, we change the status to "new"
283    * (via surf_parse_restart()), so that the user can continue scanning by
284    * just pointing surf_parse_in at a new input file.
285    */
286 #define YY_BUFFER_EOF_PENDING 2
287
288 };
289 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
290
291 /* Stack of input buffers. */
292 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
293 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
294 static YY_BUFFER_STATE *yy_buffer_stack = 0;  /**< Stack as an array. */
295
296 /* We provide macros for accessing buffer states in case in the
297  * future we want to put the buffer states in a more general
298  * "scanner state".
299  *
300  * Returns the top of the stack, or NULL.
301  */
302 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
303                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
304                           : NULL)
305
306 /* Same as previous macro, but useful when we know that the buffer stack is not
307  * NULL or when we need an lvalue. For internal use only.
308  */
309 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
310
311 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
312 static char yy_hold_char;
313 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
314 int surf_parse_leng;
315
316 /* Points to current character in buffer. */
317 static char *yy_c_buf_p = (char *) 0;
318 static int yy_init = 0;         /* whether we need to initialize */
319 static int yy_start = 0;        /* start state number */
320
321 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
322  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
323  */
324 static int yy_did_buffer_switch_on_eof;
325
326 void surf_parse_restart(FILE * input_file);
327 void surf_parse__switch_to_buffer(YY_BUFFER_STATE new_buffer);
328 YY_BUFFER_STATE surf_parse__create_buffer(FILE * file, int size);
329 void surf_parse__delete_buffer(YY_BUFFER_STATE b);
330 void surf_parse__flush_buffer(YY_BUFFER_STATE b);
331 void surf_parse_push_buffer_state(YY_BUFFER_STATE new_buffer);
332 void surf_parse_pop_buffer_state(void);
333
334 static void surf_parse_ensure_buffer_stack(void);
335 static void surf_parse__load_buffer_state(void);
336 static void surf_parse__init_buffer(YY_BUFFER_STATE b, FILE * file);
337
338 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
339
340 YY_BUFFER_STATE surf_parse__scan_buffer(char *base, yy_size_t size);
341 YY_BUFFER_STATE surf_parse__scan_string(yyconst char *yy_str);
342 YY_BUFFER_STATE surf_parse__scan_bytes(yyconst char *bytes, int len);
343
344 void *surf_parse_alloc(yy_size_t);
345 void *surf_parse_realloc(void *, yy_size_t);
346 void surf_parse_free(void *);
347
348 #define yy_new_buffer surf_parse__create_buffer
349
350 #define yy_set_interactive(is_interactive) \
351         { \
352         if ( ! YY_CURRENT_BUFFER ){ \
353         surf_parse_ensure_buffer_stack (); \
354                 YY_CURRENT_BUFFER_LVALUE =    \
355             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
356         } \
357         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
358         }
359
360 #define yy_set_bol(at_bol) \
361         { \
362         if ( ! YY_CURRENT_BUFFER ){\
363         surf_parse_ensure_buffer_stack (); \
364                 YY_CURRENT_BUFFER_LVALUE =    \
365             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
366         } \
367         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
368         }
369
370 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
371
372 /* Begin user sect3 */
373
374 #define surf_parse_wrap(n) 1
375 #define YY_SKIP_YYWRAP
376
377 typedef unsigned char YY_CHAR;
378
379 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
380
381 typedef int yy_state_type;
382
383 extern int surf_parse_lineno;
384
385 int surf_parse_lineno = 1;
386
387 extern char *surf_parse_text;
388 #define yytext_ptr surf_parse_text
389
390 static yy_state_type yy_get_previous_state(void);
391 static yy_state_type yy_try_NUL_trans(yy_state_type current_state);
392 static int yy_get_next_buffer(void);
393 static void yy_fatal_error(yyconst char msg[]);
394
395 /* Done after the current pattern has been matched and before the
396  * corresponding action - sets up surf_parse_text.
397  */
398 #define YY_DO_BEFORE_ACTION \
399         (yytext_ptr) = yy_bp; \
400         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
401         (yy_hold_char) = *yy_cp; \
402         *yy_cp = '\0'; \
403         (yy_c_buf_p) = yy_cp;
404
405 #define YY_NUM_RULES 351
406 #define YY_END_OF_BUFFER 352
407 /* This struct is not used in this scanner,
408    but its presence is necessary. */
409 struct yy_trans_info {
410   flex_int32_t yy_verify;
411   flex_int32_t yy_nxt;
412 };
413 static yyconst flex_int16_t yy_accept[2023] = { 0,
414   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
415   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
416   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
417   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
418   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
419   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
420   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
421   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
422   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
423   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
424
425   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
426   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
427   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429   0, 0, 352, 350, 15, 10, 10, 15, 15, 330,
430   10, 330, 5, 6, 5, 8, 9, 8, 346, 338,
431   339, 347, 344, 347, 345, 349, 338, 339, 349, 350,
432   26, 10, 26, 26, 26, 24, 26, 26, 30, 10,
433   30, 30, 350, 350, 30, 37, 10, 37, 37, 37,
434   35, 37, 41, 10, 41, 52, 10, 52, 52, 52,
435
436   50, 52, 52, 52, 347, 346, 74, 10, 74, 74,
437   74, 72, 74, 74, 74, 74, 78, 10, 78, 350,
438   78, 97, 10, 97, 97, 97, 95, 97, 97, 97,
439   101, 10, 101, 114, 10, 114, 114, 114, 112, 114,
440   114, 114, 114, 118, 10, 118, 125, 10, 125, 125,
441   125, 123, 125, 350, 350, 129, 10, 129, 156, 10,
442   156, 156, 156, 154, 156, 156, 156, 156, 156, 160,
443   10, 160, 160, 169, 10, 169, 169, 169, 167, 169,
444   169, 173, 10, 173, 196, 10, 196, 196, 196, 194,
445   196, 196, 196, 196, 196, 196, 200, 10, 200, 207,
446
447   10, 207, 207, 207, 205, 207, 211, 10, 211, 236,
448   10, 236, 236, 236, 234, 236, 236, 236, 236, 240,
449   10, 240, 240, 259, 10, 259, 259, 259, 257, 259,
450   259, 259, 350, 263, 10, 263, 263, 286, 10, 286,
451   286, 286, 284, 286, 286, 286, 286, 290, 10, 290,
452   290, 297, 10, 297, 297, 297, 295, 297, 301, 10,
453   301, 314, 10, 314, 314, 314, 312, 314, 314, 314,
454   314, 318, 10, 318, 350, 318, 325, 10, 325, 325,
455   325, 323, 325, 329, 10, 329, 10, 0, 2, 2,
456   0, 4, 7, 341, 340, 0, 0, 0, 0, 0,
457
458   0, 0, 25, 27, 27, 27, 0, 0, 0, 0,
459   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
460   0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
461   38, 38, 0, 51, 53, 53, 53, 53, 0, 0,
462   0, 73, 75, 75, 75, 75, 75, 75, 75, 0,
463   0, 96, 98, 98, 98, 98, 0, 113, 115, 115,
464   115, 115, 115, 0, 124, 126, 126, 0, 155, 157,
465   157, 157, 157, 157, 157, 157, 0, 168, 170, 170,
466   170, 0, 195, 197, 197, 197, 197, 197, 197, 197,
467   197, 197, 0, 206, 208, 208, 0, 235, 237, 237,
468
469   237, 237, 237, 237, 0, 258, 260, 260, 260, 260,
470   260, 0, 0, 285, 287, 287, 287, 287, 287, 0,
471   296, 298, 298, 0, 313, 315, 315, 315, 315, 315,
472   0, 0, 324, 326, 326, 0, 0, 0, 0, 0,
473   3, 0, 0, 0, 0, 0, 0, 0, 348, 0,
474   27, 27, 0, 0, 0, 0, 0, 0, 0, 0,
475   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
476   0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
477   0, 0, 53, 0, 0, 53, 0, 0, 0, 343,
478   75, 0, 0, 75, 75, 75, 75, 0, 0, 0,
479
480   98, 98, 98, 0, 0, 0, 0, 115, 115, 115,
481   0, 0, 126, 0, 0, 157, 0, 0, 157, 157,
482   157, 157, 0, 0, 0, 0, 170, 0, 0, 197,
483   0, 0, 0, 0, 197, 197, 197, 197, 197, 0,
484   0, 0, 0, 0, 0, 237, 0, 0, 237, 237,
485   237, 0, 0, 260, 260, 260, 260, 0, 0, 0,
486   287, 287, 287, 287, 0, 0, 0, 0, 0, 0,
487   315, 315, 315, 315, 0, 0, 0, 326, 0, 0,
488   0, 14, 1, 0, 0, 336, 0, 0, 0, 333,
489   332, 0, 0, 27, 27, 0, 0, 29, 0, 0,
490
491   0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
492   0, 0, 0, 0, 0, 0, 0, 102, 0, 0,
493   0, 0, 0, 0, 38, 0, 0, 40, 0, 53,
494   0, 45, 44, 53, 0, 0, 0, 55, 0, 75,
495   0, 59, 58, 0, 0, 75, 0, 0, 75, 0,
496   0, 77, 0, 0, 98, 98, 98, 0, 0, 100,
497   0, 0, 105, 104, 115, 115, 115, 0, 0, 117,
498   0, 126, 0, 0, 128, 0, 157, 0, 133, 132,
499   157, 157, 157, 157, 0, 0, 159, 0, 0, 164,
500   163, 170, 0, 0, 172, 0, 197, 197, 0, 187,
501
502   186, 0, 177, 176, 0, 0, 197, 197, 197, 197,
503   0, 0, 199, 0, 0, 204, 203, 0, 0, 210,
504   0, 237, 0, 215, 214, 237, 237, 237, 0, 0,
505   239, 0, 260, 0, 0, 0, 0, 260, 0, 0,
506   0, 262, 0, 287, 0, 0, 287, 0, 0, 0,
507   0, 289, 0, 0, 294, 293, 0, 0, 300, 0,
508   315, 315, 315, 315, 0, 0, 317, 0, 0, 326,
509   0, 0, 328, 0, 0, 0, 337, 331, 0, 0,
510   0, 27, 27, 0, 0, 0, 0, 131, 0, 213,
511   0, 0, 161, 0, 0, 103, 0, 0, 0, 130,
512
513   212, 0, 0, 102, 0, 0, 0, 0, 0, 0,
514   0, 0, 0, 0, 0, 53, 0, 0, 75, 0,
515   63, 62, 0, 0, 0, 61, 60, 75, 0, 162,
516   98, 0, 0, 98, 0, 115, 115, 115, 0, 126,
517   0, 157, 157, 157, 157, 157, 0, 170, 0, 197,
518   197, 0, 189, 188, 197, 197, 197, 197, 0, 0,
519   237, 237, 237, 237, 0, 260, 0, 246, 245, 0,
520   244, 243, 260, 212, 0, 287, 0, 269, 268, 287,
521   0, 267, 266, 0, 0, 315, 0, 0, 315, 315,
522   0, 0, 326, 0, 0, 0, 0, 12, 0, 334,
523
524   335, 0, 27, 27, 0, 0, 0, 0, 131, 0,
525   213, 0, 0, 0, 161, 0, 265, 43, 0, 0,
526   130, 212, 0, 265, 42, 0, 264, 0, 264, 42,
527   0, 34, 33, 0, 0, 47, 46, 53, 0, 0,
528   75, 0, 65, 64, 75, 0, 162, 98, 0, 0,
529   0, 0, 0, 0, 115, 115, 115, 0, 116, 126,
530   0, 157, 157, 157, 0, 0, 0, 0, 157, 0,
531   0, 0, 0, 0, 0, 197, 0, 0, 197, 197,
532   197, 0, 0, 237, 237, 237, 0, 0, 237, 0,
533   260, 260, 0, 0, 287, 287, 0, 0, 315, 0,
534
535   305, 304, 315, 315, 0, 0, 0, 0, 0, 0,
536   0, 0, 11, 0, 27, 27, 27, 0, 0, 0,
537   0, 0, 0, 0, 0, 57, 265, 0, 202, 43,
538   0, 0, 0, 56, 201, 42, 0, 264, 0, 0,
539   0, 0, 53, 0, 0, 75, 75, 0, 98, 0,
540   0, 0, 0, 0, 0, 0, 0, 0, 92, 91,
541   0, 0, 0, 115, 0, 0, 0, 0, 0, 157,
542   157, 157, 0, 135, 134, 0, 0, 0, 157, 0,
543   158, 0, 166, 165, 0, 171, 0, 191, 190, 0,
544   0, 0, 185, 184, 0, 0, 197, 0, 0, 0,
545
546   0, 237, 237, 237, 0, 0, 0, 237, 0, 238,
547   0, 0, 260, 0, 0, 0, 0, 287, 0, 0,
548   315, 315, 315, 0, 0, 0, 322, 321, 0, 0,
549   0, 0, 0, 0, 0, 27, 27, 0, 0, 175,
550   120, 32, 0, 0, 303, 57, 0, 202, 0, 174,
551   119, 56, 201, 302, 0, 31, 0, 0, 53, 0,
552   0, 54, 75, 75, 0, 0, 0, 0, 0, 0,
553   0, 0, 0, 0, 0, 0, 0, 0, 0, 107,
554   106, 0, 0, 0, 109, 108, 0, 122, 121, 0,
555   157, 157, 157, 0, 0, 157, 0, 193, 192, 0,
556
557   179, 178, 0, 0, 0, 181, 180, 0, 0, 237,
558   0, 0, 237, 237, 0, 0, 237, 0, 0, 0,
559   260, 0, 0, 0, 0, 0, 287, 0, 288, 0,
560   315, 315, 315, 0, 0, 0, 0, 0, 0, 17,
561   0, 19, 18, 27, 27, 0, 319, 175, 120, 32,
562   291, 16, 303, 0, 0, 174, 119, 302, 0, 31,
563   0, 0, 53, 342, 75, 75, 0, 76, 0, 94,
564   93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565   0, 0, 0, 111, 110, 0, 157, 157, 157, 0,
566   0, 0, 0, 157, 0, 183, 182, 0, 0, 209,
567
568   237, 0, 221, 220, 237, 237, 0, 0, 0, 0,
569   237, 0, 0, 0, 0, 260, 292, 0, 0, 0,
570   0, 0, 287, 0, 0, 0, 315, 315, 0, 320,
571   0, 0, 0, 0, 17, 27, 27, 0, 319, 291,
572   16, 0, 0, 0, 0, 0, 39, 53, 0, 0,
573   75, 0, 0, 0, 0, 0, 0, 0, 0, 0,
574   0, 0, 0, 127, 157, 157, 157, 0, 141, 0,
575   140, 157, 0, 198, 0, 0, 237, 237, 237, 0,
576   225, 0, 224, 237, 0, 0, 0, 0, 0, 0,
577   0, 0, 292, 0, 0, 0, 0, 0, 0, 0,
578
579   287, 0, 0, 307, 306, 0, 0, 315, 0, 316,
580   320, 0, 0, 0, 0, 0, 0, 27, 0, 28,
581   0, 0, 0, 0, 53, 0, 0, 0, 75, 0,
582   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
583   157, 157, 157, 143, 142, 0, 0, 0, 217, 216,
584   237, 237, 237, 227, 226, 0, 0, 0, 0, 0,
585   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
586   0, 0, 0, 287, 287, 0, 299, 0, 311, 310,
587   0, 0, 0, 327, 0, 0, 0, 0, 21, 20,
588   0, 0, 242, 0, 241, 0, 0, 0, 0, 0,
589
590   0, 0, 75, 0, 0, 0, 0, 84, 0, 0,
591   0, 0, 83, 0, 157, 157, 157, 0, 145, 144,
592   237, 237, 237, 0, 229, 228, 0, 0, 0, 0,
593   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
594   0, 0, 0, 287, 287, 0, 309, 308, 0, 0,
595   0, 0, 23, 22, 242, 0, 241, 0, 0, 49,
596   48, 0, 0, 0, 0, 75, 0, 0, 0, 0,
597   0, 0, 0, 0, 0, 0, 0, 157, 157, 157,
598   237, 0, 0, 237, 0, 0, 0, 0, 0, 0,
599   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600
601   0, 287, 287, 0, 0, 0, 0, 80, 79, 0,
602   0, 0, 0, 0, 0, 0, 0, 90, 0, 0,
603   0, 89, 0, 0, 0, 137, 136, 157, 157, 157,
604   157, 237, 0, 223, 222, 237, 0, 0, 0, 0,
605   0, 0, 256, 0, 255, 0, 0, 261, 0, 0,
606   0, 0, 0, 0, 0, 0, 287, 0, 0, 287,
607   0, 0, 0, 0, 0, 0, 80, 79, 0, 0,
608   0, 0, 0, 67, 66, 0, 0, 0, 0, 0,
609   0, 0, 157, 157, 157, 157, 0, 0, 0, 0,
610   0, 0, 0, 0, 0, 0, 254, 253, 0, 0,
611
612   0, 0, 0, 0, 0, 273, 272, 287, 0, 271,
613   270, 287, 0, 0, 0, 0, 0, 0, 0, 71,
614   0, 70, 88, 0, 0, 87, 0, 0, 0, 99,
615   157, 157, 157, 157, 0, 219, 218, 0, 0, 0,
616   0, 0, 250, 0, 0, 249, 0, 0, 281, 0,
617   0, 280, 287, 287, 0, 0, 0, 12, 0, 12,
618   0, 0, 0, 82, 86, 81, 85, 157, 157, 157,
619   157, 0, 0, 0, 0, 252, 248, 251, 247, 283,
620   279, 282, 278, 287, 287, 0, 0, 0, 0, 0,
621   0, 0, 0, 0, 0, 0, 0, 0, 157, 0,
622
623   0, 0, 0, 0, 0, 287, 287, 0, 0, 69,
624   68, 0, 139, 138, 0, 149, 148, 0, 147, 146,
625   157, 0, 153, 152, 0, 0, 0, 0, 287, 287,
626   0, 11, 157, 0, 0, 0, 0, 287, 287, 0,
627   157, 0, 0, 0, 0, 287, 287, 0, 157, 0,
628   0, 0, 0, 287, 287, 0, 0, 0, 0, 231,
629   0, 230, 287, 287, 0, 0, 151, 150, 233, 232,
630   287, 287, 0, 287, 287, 0, 287, 287, 0, 0,
631   287, 287, 0, 0, 287, 287, 0, 0, 287, 287,
632   0, 0, 0, 0, 0, 0, 0, 0, 0, 277,
633
634   276, 0, 275, 274, 0, 0, 0, 0, 0, 0,
635   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
636   13, 0
637 };
638
639 static yyconst flex_int32_t yy_ec[256] = { 0,
640   1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
641   1, 2, 4, 1, 1, 1, 1, 1, 1, 1,
642   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
643   1, 2, 5, 6, 7, 1, 1, 8, 9, 1,
644   1, 1, 1, 1, 10, 11, 12, 13, 13, 13,
645   13, 14, 13, 13, 13, 15, 13, 16, 17, 18,
646   19, 20, 21, 1, 22, 23, 24, 25, 26, 27,
647   28, 29, 30, 28, 31, 32, 33, 34, 35, 36,
648   28, 37, 38, 39, 28, 40, 41, 28, 42, 28,
649   43, 1, 44, 1, 45, 1, 46, 47, 48, 49,
650
651   50, 51, 52, 53, 54, 28, 55, 56, 57, 58,
652   59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
653   69, 28, 1, 1, 1, 1, 1, 1, 1, 1,
654   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
655   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
656   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
657   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
658   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
659   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
660   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
661
662   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
663   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
664   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
665   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
666   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
667   1, 1, 1, 1, 1
668 };
669
670 static yyconst flex_int32_t yy_meta[70] = { 0,
671   1, 2, 2, 2, 1, 1, 1, 1, 1, 3,
672   3, 1, 4, 4, 4, 5, 6, 1, 7, 8,
673   1, 9, 9, 9, 9, 9, 9, 5, 5, 5,
674   5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
675   5, 5, 1, 1, 5, 9, 9, 9, 9, 9,
676   9, 5, 5, 5, 5, 5, 5, 5, 5, 5,
677   5, 5, 5, 5, 5, 5, 5, 5, 5
678 };
679
680 static yyconst flex_int16_t yy_base[2256] = { 0,
681   0, 0, 0, 3, 6, 9, 12, 29, 16, 19,
682   14, 17, 33, 36, 49, 55, 45, 61, 66, 72,
683   105, 173, 75, 78, 83, 125, 128, 132, 135, 138,
684   193, 196, 200, 203, 206, 224, 242, 293, 262, 265,
685   344, 404, 271, 273, 464, 527, 269, 316, 320, 323,
686   364, 367, 371, 374, 590, 654, 424, 427, 718, 781,
687   431, 434, 844, 907, 484, 487, 491, 494, 497, 547,
688   970, 1033, 550, 554, 557, 560, 610, 613, 617, 620,
689   1096, 1162, 623, 674, 1228, 0, 677, 681, 1297, 1351,
690   684, 687, 1405, 1468, 738, 741, 745, 748, 751, 801,
691
692   804, 808, 1531, 1594, 811, 814, 864, 867, 871, 874,
693   877, 927, 1657, 1720, 930, 934, 937, 940, 990, 993,
694   997, 1000, 1783, 1837, 1003, 1053, 1891, 1954, 1056, 1060,
695   1063, 1066, 1116, 1119, 1123, 1126, 2017, 2083, 1129, 1182,
696   0, 0, 5066, 7094, 7094, 95, 100, 29, 41, 7094,
697   155, 51, 7094, 7094, 5055, 7094, 7094, 5043, 7094, 5058,
698   5042, 1141, 7094, 7094, 7094, 7094, 5036, 5032, 4990, 210,
699   7094, 158, 5012, 0, 142, 7094, 4977, 4969, 7094, 162,
700   2145, 2205, 160, 5007, 176, 7094, 165, 4998, 0, 149,
701   7094, 4961, 7094, 230, 378, 7094, 326, 4994, 0, 208,
702
703   7094, 4958, 4949, 4947, 379, 4950, 7094, 329, 4972, 0,
704   214, 7094, 4938, 4937, 238, 4915, 7094, 377, 11, 31,
705   4965, 7094, 399, 4948, 0, 435, 7094, 4907, 4905, 4888,
706   7094, 457, 441, 7094, 520, 4922, 0, 436, 7094, 4892,
707   4870, 4871, 4851, 7094, 583, 498, 7094, 640, 4894, 0,
708   499, 7094, 4862, 513, 4840, 7094, 644, 4879, 7094, 647,
709   4870, 0, 562, 7094, 4802, 34, 4821, 4797, 4788, 7094,
710   704, 177, 4838, 7094, 708, 4827, 0, 568, 7094, 4793,
711   4783, 7094, 711, 752, 7094, 772, 4808, 0, 631, 7094,
712   211, 4777, 4775, 93, 4773, 4753, 7094, 834, 818, 7094,
713
714   894, 4796, 0, 632, 7094, 4753, 7094, 897, 881, 7094,
715   901, 4781, 0, 695, 7094, 4739, 4735, 4736, 80, 7094,
716   957, 360, 4765, 7094, 960, 4755, 0, 696, 7094, 4726,
717   4709, 26, 304, 7094, 963, 330, 4746, 7094, 1149, 4726,
718   0, 885, 7094, 4694, 4675, 4679, 4673, 7094, 1152, 499,
719   4721, 7094, 1155, 4705, 0, 948, 7094, 4672, 7094, 1186,
720   1005, 7094, 1192, 4696, 0, 1004, 7094, 4650, 4654, 4655,
721   4643, 7094, 1205, 1100, 4694, 4691, 7094, 1208, 4678, 0,
722   1007, 7094, 4650, 7094, 1211, 1068, 1215, 429, 4627, 7094,
723   4683, 4665, 7094, 7094, 7094, 1306, 283, 4614, 4612, 4607,
724
725   4647, 4609, 7094, 0, 4598, 4601, 4586, 4583, 4584, 4580,
726   4574, 4570, 4573, 4, 166, 4567, 4554, 4558, 4546, 4545,
727   4541, 404, 4544, 4530, 38, 467, 4530, 712, 4523, 7094,
728   0, 4526, 4527, 7094, 0, 4523, 1320, 4516, 533, 4512,
729   4555, 7094, 0, 4514, 1323, 4486, 4507, 4493, 4497, 4477,
730   89, 7094, 0, 4488, 4462, 4473, 4453, 7094, 0, 1326,
731   4459, 4459, 4455, 4435, 7094, 0, 4429, 4441, 7094, 0,
732   4444, 1329, 4422, 4400, 4400, 4419, 4407, 7094, 0, 1373,
733   4398, 4393, 7094, 0, 4406, 1377, 1380, 4375, 4371, 4386,
734   4372, 4366, 4367, 7094, 0, 1383, 4348, 7094, 0, 4351,
735
736   1425, 4340, 4357, 4355, 4340, 7094, 0, 4327, 4326, 4340,
737   4326, 4323, 4308, 7094, 0, 4305, 4289, 4291, 4298, 4283,
738   7094, 0, 1428, 4287, 7094, 0, 4277, 4271, 4272, 4280,
739   4264, 4261, 7094, 0, 4265, 4267, 4286, 4295, 807, 4246,
740   7094, 1207, 0, 4229, 4229, 4269, 4268, 4224, 7094, 4231,
741   4213, 4213, 1431, 1434, 4218, 4203, 4205, 4201, 4215, 4194,
742   4202, 4187, 4187, 4178, 4170, 4186, 4165, 4167, 4164, 4155,
743   4154, 4145, 4145, 4157, 4143, 4135, 4141, 4122, 4139, 4128,
744   1437, 1489, 4127, 1494, 1497, 4108, 4137, 1551, 1556, 7094,
745   4106, 1559, 1514, 1562, 4097, 1565, 4108, 1619, 1627, 4090,
746
747   4091, 4097, 4083, 1622, 1630, 1677, 1583, 4079, 4065, 4067,
748   1682, 1695, 4068, 1685, 1740, 4058, 1691, 1642, 4059, 4062,
749   4056, 4037, 1745, 1748, 1751, 1710, 4035, 1755, 1808, 583,
750   1811, 1814, 1857, 1860, 1869, 4032, 4030, 4025, 4021, 1911,
751   1920, 1914, 1880, 1917, 1923, 4022, 1926, 1975, 4014, 3994,
752   3987, 1983, 1986, 3996, 1989, 1992, 3981, 3977, 2039, 2046,
753   3979, 1997, 3983, 2043, 2049, 2052, 2061, 2072, 2104, 2110,
754   3976, 3952, 3959, 3943, 2113, 2116, 3952, 3927, 2119, 2138,
755   3970, 7094, 7094, 315, 3922, 7094, 3934, 3933, 3878, 7094,
756   7094, 3872, 3870, 3879, 3868, 2141, 2149, 7094, 2168, 3865,
757
758   3859, 3871, 3849, 3854, 3849, 3830, 261, 3839, 3819, 1223,
759   3834, 3802, 3814, 3798, 3796, 3801, 3784, 1332, 3795, 384,
760   3777, 3784, 3774, 3788, 2144, 2172, 2177, 7094, 2182, 2209,
761   2216, 7094, 7094, 2229, 3810, 2232, 2235, 7094, 2240, 3756,
762   2268, 7094, 7094, 2243, 2276, 2287, 2290, 2293, 3767, 2301,
763   2308, 7094, 2311, 432, 3761, 2314, 3760, 2320, 2323, 7094,
764   2332, 2335, 7094, 7094, 3754, 3751, 3743, 2343, 2346, 7094,
765   2351, 3739, 2354, 2357, 7094, 2377, 3735, 2380, 7094, 7094,
766   3728, 3721, 3717, 3727, 2388, 2391, 7094, 2396, 2400, 7094,
767   7094, 3722, 2410, 2415, 7094, 2418, 3702, 3717, 2422, 7094,
768
769   7094, 2438, 7094, 7094, 2430, 2448, 3700, 3698, 3703, 3695,
770   2458, 2461, 7094, 2464, 2467, 7094, 7094, 2483, 2486, 7094,
771   2489, 3673, 2492, 7094, 7094, 3679, 3672, 3662, 2508, 2511,
772   7094, 2514, 3611, 2517, 2521, 2536, 2539, 3618, 3612, 2547,
773   2554, 7094, 2557, 3602, 2560, 2567, 3607, 2578, 2581, 2589,
774   2592, 7094, 2596, 2599, 7094, 7094, 2611, 2615, 7094, 2621,
775   3590, 2624, 3607, 3576, 2630, 2634, 7094, 2642, 3573, 3586,
776   2645, 2649, 7094, 2653, 726, 2656, 7094, 7094, 3618, 3616,
777   3569, 3560, 3587, 2664, 3545, 3528, 3544, 1386, 3520, 2152,
778   3533, 3532, 1460, 3512, 3519, 1463, 3518, 3502, 3518, 1523,
779
780   2678, 3504, 3511, 1526, 3497, 3496, 3494, 3478, 3491, 3490,
781   2668, 2686, 2694, 2700, 2704, 3489, 3504, 2713, 3479, 2718,
782   7094, 7094, 2727, 2732, 2745, 7094, 7094, 3473, 2740, 1650,
783   3457, 2753, 2760, 2771, 2774, 3446, 3466, 3439, 2777, 3457,
784   2780, 3458, 3452, 3436, 2783, 2789, 2801, 2807, 2811, 2814,
785   2821, 2833, 7094, 7094, 2825, 2843, 2847, 2850, 2853, 2856,
786   3442, 3447, 3431, 2876, 2879, 3430, 2885, 7094, 7094, 2894,
787   7094, 7094, 3418, 2903, 2906, 3419, 2921, 7094, 7094, 3412,
788   2929, 7094, 7094, 2937, 2940, 3420, 2910, 2943, 3401, 3418,
789   2951, 3402, 2959, 2962, 181, 3437, 2965, 7094, 3436, 7094,
790
791   7094, 3395, 3388, 518, 2970, 3395, 3393, 3394, 1705, 3391,
792   1769, 3387, 3375, 3365, 1774, 3370, 2973, 2977, 3375, 3365,
793   1777, 1829, 3354, 2984, 2994, 3347, 3000, 3358, 3003, 3009,
794   3020, 7094, 7094, 3030, 3034, 7094, 7094, 3351, 3362, 3049,
795   3328, 3052, 7094, 7094, 3325, 3064, 1832, 3325, 3068, 1059,
796   1113, 3045, 3076, 3084, 3087, 3090, 3094, 3098, 7094, 3108,
797   3112, 3337, 3333, 3317, 3117, 3122, 3135, 3138, 3328, 3146,
798   3149, 3153, 3161, 3167, 3170, 3180, 3185, 3188, 3198, 3203,
799   3206, 3209, 3212, 3328, 3307, 3321, 3216, 3224, 3321, 3234,
800   3237, 3241, 3322, 3244, 3247, 3265, 3268, 3273, 3310, 3276,
801
802   7094, 7094, 3313, 3302, 3288, 3306, 3293, 3296, 3311, 1422,
803   612, 568, 7094, 3279, 3317, 3320, 3323, 3326, 3282, 3275,
804   3282, 3267, 3252, 3249, 3246, 1875, 1945, 3250, 1948, 2010,
805   3258, 3242, 3248, 3330, 3341, 3345, 3224, 3348, 3229, 3233,
806   3233, 3351, 3226, 3243, 3355, 3204, 3207, 3358, 3361, 3236,
807   3222, 260, 3220, 3231, 3217, 421, 3207, 3384, 7094, 7094,
808   3392, 3395, 3400, 3414, 3417, 3420, 3428, 3435, 3446, 3180,
809   3169, 3172, 3449, 7094, 7094, 3458, 3188, 3186, 3149, 3466,
810   7094, 3469, 7094, 7094, 3477, 7094, 3481, 7094, 7094, 3489,
811   3496, 3507, 7094, 7094, 3515, 3518, 3526, 3529, 3533, 3547,
812
813   3550, 3134, 3553, 3151, 3556, 3160, 3158, 3131, 3571, 7094,
814   3574, 3577, 3585, 3116, 3597, 3592, 3612, 3603, 3606, 3621,
815   3120, 3120, 3121, 3625, 3109, 3628, 7094, 7094, 3640, 808,
816   1330, 747, 3104, 3644, 3647, 3655, 3662, 3669, 3096, 3673,
817   3676, 3680, 3087, 3086, 3683, 3689, 3070, 3692, 3074, 3695,
818   3698, 3701, 3704, 3707, 3065, 3712, 3070, 3715, 3068, 3074,
819   3718, 7094, 3046, 3061, 3721, 3726, 3730, 3071, 3065, 3044,
820   3047, 3035, 3041, 3035, 3024, 3026, 3018, 3740, 3744, 7094,
821   7094, 3752, 3755, 3764, 7094, 7094, 3772, 7094, 7094, 3780,
822   3001, 2995, 2985, 669, 743, 2986, 3783, 7094, 7094, 3792,
823
824   7094, 7094, 3800, 3803, 3811, 7094, 7094, 3819, 3822, 2988,
825   3825, 3828, 2988, 2970, 806, 857, 2972, 3843, 358, 361,
826   3851, 2962, 3854, 3857, 658, 785, 3865, 3869, 7094, 3873,
827   3876, 2968, 2960, 3883, 2950, 3894, 3888, 927, 1009, 3898,
828   3903, 7094, 7094, 3913, 3916, 3922, 3925, 3936, 3941, 3945,
829   3951, 3954, 3957, 2953, 2950, 3960, 3963, 3967, 2938, 3970,
830   2934, 3973, 2927, 7094, 3979, 2920, 3982, 7094, 3985, 7094,
831   7094, 2958, 2920, 2932, 2925, 2925, 2925, 2909, 2911, 2905,
832   2902, 3993, 3997, 7094, 7094, 4005, 2868, 2859, 2848, 2865,
833   2878, 2850, 2865, 2818, 4008, 7094, 7094, 4016, 4019, 7094,
834
835   4024, 4028, 7094, 7094, 2810, 2784, 2761, 2746, 2713, 2723,
836   2624, 81, 919, 466, 985, 4038, 4042, 4045, 474, 1048,
837   477, 1057, 4051, 4056, 4059, 4071, 4064, 527, 4082, 4085,
838   4088, 4091, 748, 840, 4095, 4101, 4113, 4119, 4122, 4125,
839   4131, 518, 548, 565, 624, 4134, 7094, 665, 4138, 4141,
840   706, 738, 786, 838, 838, 886, 894, 901, 915, 912,
841   931, 4156, 4162, 7094, 934, 971, 965, 1025, 7094, 1023,
842   7094, 4165, 4168, 7094, 4171, 4177, 998, 1005, 1019, 1080,
843   7094, 1115, 7094, 4189, 1109, 1100, 1117, 1135, 1140, 1165,
844   4192, 4195, 4203, 4213, 1166, 1160, 1173, 1175, 1165, 1178,
845
846   4216, 4219, 4222, 7094, 7094, 4234, 4238, 4247, 4252, 7094,
847   4255, 4258, 1293, 1347, 1384, 4271, 4278, 4289, 4292, 7094,
848   1169, 1287, 1284, 1293, 4295, 4298, 1366, 1470, 1285, 1316,
849   1325, 1349, 1371, 1391, 1368, 1378, 1397, 1423, 1437, 4307,
850   1381, 1403, 1403, 7094, 7094, 4313, 4316, 4327, 7094, 7094,
851   1402, 1410, 1430, 7094, 7094, 4335, 4338, 1457, 1463, 1468,
852   1468, 1469, 1474, 4346, 1548, 1549, 4354, 1477, 1480, 1485,
853   1519, 1518, 1534, 4357, 4360, 4364, 7094, 4369, 7094, 7094,
854   4378, 4383, 4391, 7094, 1573, 1552, 1559, 4396, 7094, 7094,
855   4404, 4410, 4422, 1525, 4425, 1540, 4428, 4431, 1579, 1598,
856
857   1590, 1606, 1577, 1611, 1601, 1607, 1615, 7094, 1631, 1642,
858   1641, 1650, 7094, 4439, 4442, 1646, 1659, 4446, 7094, 7094,
859   1661, 4454, 1670, 4460, 7094, 7094, 1699, 1710, 1730, 1724,
860   1726, 1741, 1747, 1779, 1771, 1782, 4468, 1772, 1783, 1795,
861   1785, 1788, 1799, 4472, 4475, 4493, 7094, 7094, 1916, 1833,
862   4481, 4501, 7094, 7094, 4478, 1765, 4509, 1801, 4512, 7094,
863   7094, 1845, 1834, 1852, 1841, 4522, 1848, 1868, 1901, 1910,
864   1899, 1917, 1932, 1931, 4525, 4528, 4531, 1919, 1995, 1921,
865   1952, 4540, 4546, 1935, 1980, 1989, 1999, 2009, 2018, 2033,
866   2062, 2032, 2062, 2035, 4554, 2047, 2053, 2048, 2069, 2083,
867
868   2076, 4558, 4561, 2108, 4564, 4567, 4587, 4595, 4598, 2091,
869   2104, 2097, 2107, 4606, 4609, 2105, 2105, 7094, 2107, 2109,
870   2130, 7094, 2132, 4617, 4620, 7094, 7094, 2111, 2117, 2123,
871   2131, 4628, 4632, 7094, 7094, 4640, 2157, 2149, 2162, 2164,
872   2156, 2169, 7094, 2189, 7094, 2194, 4646, 7094, 2179, 2172,
873   2190, 2191, 2187, 2198, 4649, 4652, 4660, 4667, 4671, 4680,
874   2204, 4685, 4688, 4708, 4747, 4791, 4698, 4716, 2202, 2223,
875   2215, 2232, 4720, 7094, 7094, 2243, 2218, 2222, 2248, 2232,
876   2234, 4737, 2217, 2227, 2218, 2217, 4741, 4728, 4759, 4767,
877   2257, 2259, 2281, 2272, 2275, 2292, 7094, 7094, 2281, 2283,
878
879   2313, 2294, 2304, 2321, 4777, 7094, 7094, 4785, 4811, 7094,
880   7094, 4803, 2345, 4821, 2356, 2355, 4857, 4901, 2318, 7094,
881   2328, 7094, 7094, 2345, 2361, 7094, 2359, 2361, 4829, 7094,
882   2322, 2307, 2336, 2337, 4834, 7094, 7094, 4842, 2410, 2418,
883   2382, 2390, 7094, 2392, 2396, 7094, 2404, 2417, 7094, 2418,
884   2420, 7094, 4851, 4869, 2423, 2452, 2454, 2430, 2488, 2437,
885   4877, 2438, 2440, 7094, 7094, 7094, 7094, 4880, 4892, 4921,
886   4924, 2457, 2453, 2461, 2470, 7094, 7094, 7094, 7094, 7094,
887   7094, 7094, 7094, 4927, 4932, 4935, 2494, 2481, 2495, 4945,
888   2499, 2498, 4950, 4883, 4954, 4958, 4968, 4972, 2460, 4980,
889
890   4987, 2487, 2510, 2494, 2513, 4998, 5001, 5004, 2517, 7094,
891   7094, 5007, 7094, 7094, 5019, 7094, 7094, 5027, 7094, 7094,
892   2494, 5035, 7094, 7094, 2510, 2510, 2516, 2516, 5045, 5048,
893   2546, 7094, 2517, 2538, 2549, 2548, 2560, 5051, 5054, 2569,
894   2538, 2570, 2585, 2575, 2595, 5057, 5075, 2601, 5078, 2603,
895   2624, 2613, 2633, 5081, 5084, 2665, 5087, 5110, 2657, 7094,
896   2655, 7094, 5118, 5121, 2666, 5139, 7094, 7094, 7094, 7094,
897   5147, 5150, 5153, 5156, 5159, 5168, 5182, 5187, 2655, 2663,
898   5194, 5201, 2658, 2691, 5205, 5208, 2680, 2738, 5212, 5226,
899   2673, 2719, 5231, 5237, 5253, 5256, 2703, 2739, 5264, 7094,
900
901   7094, 5273, 7094, 7094, 2778, 2787, 2747, 2750, 2850, 2852,
902   2799, 2818, 2689, 2748, 2855, 2866, 2800, 2881, 5281, 5284,
903   7094, 7094, 5304, 5313, 5322, 5331, 5340, 5349, 5358, 5367,
904   5376, 5385, 5394, 5403, 5412, 5421, 5430, 5439, 5448, 5457,
905   5466, 5475, 5484, 5493, 5502, 5511, 5520, 5529, 5538, 5547,
906   5556, 5565, 5574, 5583, 5592, 5601, 5610, 5619, 5628, 5637,
907   5646, 5653, 5660, 5667, 5674, 5681, 5688, 5695, 5702, 5709,
908   5716, 5723, 5730, 5737, 5744, 5751, 5758, 5765, 5774, 5779,
909   5784, 5789, 5794, 5799, 5804, 5809, 5814, 5819, 5826, 5831,
910   5838, 5843, 5850, 5855, 5862, 5867, 5874, 5879, 5886, 5891,
911
912   5898, 5903, 5910, 5915, 5924, 5930, 5937, 5945, 5952, 5960,
913   5967, 5975, 5982, 5990, 5997, 6005, 6012, 6020, 6027, 6035,
914   6042, 6050, 6057, 6065, 6072, 6080, 6088, 6095, 6103, 6110,
915   6118, 6125, 6133, 6141, 6148, 6156, 6163, 6171, 6180, 6186,
916   6193, 6201, 6209, 6217, 6225, 6233, 6240, 6248, 6255, 6263,
917   6270, 6278, 6285, 6293, 6300, 6308, 6315, 6323, 6330, 6338,
918   6346, 6353, 6361, 6368, 6376, 6383, 6391, 6399, 6406, 6414,
919   6421, 6429, 6438, 6447, 6454, 6462, 6470, 6477, 6485, 6492,
920   6500, 6507, 6515, 6522, 6530, 6537, 6545, 6552, 6560, 6568,
921   6576, 6584, 6592, 6600, 6607, 6615, 6622, 6630, 6637, 6645,
922
923   6653, 6660, 6668, 6676, 6684, 6693, 6702, 6709, 6717, 6725,
924   6732, 6740, 6747, 6755, 6762, 6770, 6778, 6786, 6794, 6801,
925   6809, 6817, 6825, 6833, 6841, 6848, 6856, 6864, 6872, 6880,
926   6888, 6896, 6903, 6911, 6919, 6928, 6937, 6945, 6953, 6961,
927   6968, 6976, 6983, 6991, 6999, 7007, 7015, 7023, 7030, 7039,
928   7048, 7057, 7066, 7075, 7084
929 };
930
931 static yyconst flex_int16_t yy_def[2256] = { 0,
932   2023, 2023, 2024, 2024, 2024, 2024, 2025, 2025, 2026, 2026,
933   2027, 2027, 2028, 2028, 2028, 2028, 2029, 2029, 2023, 2023,
934   2030, 2030, 2031, 2031, 2031, 2031, 2023, 2023, 2031, 2031,
935   2023, 2023, 2031, 2031, 2031, 2031, 2032, 2032, 2033, 2033,
936   2034, 2034, 2028, 2028, 2035, 2035, 2036, 2036, 2023, 2023,
937   2036, 2036, 2036, 2036, 2037, 2037, 2038, 2038, 2039, 2039,
938   2040, 2040, 2041, 2041, 2023, 2023, 2023, 2023, 2042, 2042,
939   2043, 2043, 2044, 2044, 2023, 2023, 2044, 2044, 2044, 2044,
940   2045, 2045, 2046, 2046, 2022, 85, 2047, 2047, 2048, 2048,
941   2049, 2049, 2050, 2050, 2051, 2051, 2023, 2023, 2051, 2051,
942
943   2051, 2051, 2052, 2052, 2023, 2023, 2023, 2023, 2053, 2053,
944   2053, 2053, 2054, 2054, 2055, 2055, 2023, 2023, 2055, 2055,
945   2055, 2055, 2056, 2056, 2057, 2057, 2058, 2058, 2059, 2059,
946   2023, 2023, 2059, 2059, 2059, 2059, 2060, 2060, 2061, 2061,
947   2023, 2023, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
948   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
949   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
950   2022, 2022, 2022, 2062, 2022, 2022, 2062, 2062, 2022, 2022,
951   2022, 2022, 181, 182, 182, 2022, 2022, 2022, 2063, 2022,
952   2022, 2063, 2022, 2022, 2022, 2022, 2022, 2022, 2064, 2022,
953
954   2022, 2064, 2064, 2064, 2022, 2022, 2022, 2022, 2022, 2065,
955   2022, 2022, 2065, 2065, 2065, 2065, 2022, 2022, 185, 185,
956   185, 2022, 2022, 2022, 2066, 2022, 2022, 2066, 2066, 2066,
957   2022, 2022, 2022, 2022, 2022, 2022, 2067, 2022, 2022, 2067,
958   2067, 2067, 2067, 2022, 2022, 2022, 2022, 2022, 2022, 2068,
959   2022, 2022, 2068, 185, 254, 2022, 2022, 185, 2022, 2022,
960   2022, 2069, 2022, 2022, 2069, 2069, 2069, 2069, 2069, 2022,
961   2022, 185, 185, 2022, 2022, 2022, 2070, 2022, 2022, 2070,
962   2070, 2022, 2022, 2022, 2022, 2022, 2022, 2071, 2022, 2022,
963   2071, 2071, 2071, 2071, 2071, 2071, 2022, 2022, 2022, 2022,
964
965   2022, 2022, 2072, 2022, 2022, 2072, 2022, 2022, 2022, 2022,
966   2022, 2022, 2073, 2022, 2022, 2073, 2073, 2073, 2073, 2022,
967   2022, 185, 185, 2022, 2022, 2022, 2074, 2022, 2022, 2074,
968   2074, 2074, 185, 2022, 2022, 185, 185, 2022, 2022, 2022,
969   2075, 2022, 2022, 2075, 2075, 2075, 2075, 2022, 2022, 185,
970   185, 2022, 2022, 2022, 2076, 2022, 2022, 2076, 2022, 2022,
971   2022, 2022, 2022, 2022, 2077, 2022, 2022, 2077, 2077, 2077,
972   2077, 2022, 2022, 185, 374, 185, 2022, 2022, 2022, 2078,
973   2022, 2022, 2078, 2022, 2022, 2022, 2022, 2079, 2022, 2022,
974   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
975
976   2022, 2022, 2022, 2062, 2062, 2062, 2080, 2022, 2022, 2022,
977   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
978   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
979   2063, 2063, 2081, 2022, 2064, 2064, 2064, 2064, 2022, 2082,
980   2022, 2022, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2083,
981   2022, 2022, 2066, 2066, 2066, 2066, 2084, 2022, 2067, 2067,
982   2067, 2067, 2067, 2085, 2022, 2068, 2068, 2086, 2022, 2069,
983   2069, 2069, 2069, 2069, 2069, 2069, 2087, 2022, 2070, 2070,
984   2070, 2088, 2022, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
985   2089, 2089, 2090, 2022, 2091, 2091, 2092, 2022, 2093, 2093,
986
987   2093, 2093, 2093, 2093, 2094, 2022, 2095, 2095, 2095, 2095,
988   2095, 2022, 2096, 2022, 2097, 2097, 2097, 2097, 2097, 2098,
989   2022, 2099, 2099, 2100, 2022, 2101, 2101, 2101, 2101, 2101,
990   2102, 2022, 2022, 2103, 2103, 2104, 2105, 2022, 2105, 2022,
991   2022, 2022, 2106, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
992   2107, 2107, 2108, 2108, 2022, 2022, 2022, 2022, 2022, 2022,
993   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
994   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2109,
995   2110, 2110, 2111, 2022, 2022, 2111, 2022, 2112, 2112, 2022,
996   2113, 2022, 2022, 2113, 2113, 2113, 2113, 2114, 2114, 2022,
997
998   2115, 2115, 2115, 2116, 2116, 2022, 2022, 2117, 2117, 2117,
999   2118, 2118, 2119, 2120, 2120, 2121, 2022, 2022, 2121, 2121,
1000   2121, 2121, 2122, 2122, 2022, 2022, 2123, 2124, 2124, 2125,
1001   2022, 2022, 2022, 2022, 2125, 2125, 2125, 2125, 2125, 2126,
1002   2126, 2022, 2022, 2127, 2127, 2128, 2022, 2022, 2128, 2128,
1003   2128, 2129, 2129, 2130, 2130, 2130, 2130, 2022, 2131, 2131,
1004   2132, 2132, 2132, 2132, 2133, 2133, 2022, 2022, 2134, 2134,
1005   2135, 2135, 2135, 2135, 2136, 2136, 2022, 2137, 2138, 2138,
1006   2139, 2022, 2022, 2139, 2022, 2022, 2140, 2022, 2022, 2022,
1007   2022, 2022, 2022, 2141, 2141, 2022, 2142, 2022, 2142, 2022,
1008
1009   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1010   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1011   2022, 2022, 2022, 2022, 2143, 2022, 2144, 2022, 2144, 2145,
1012   2022, 2022, 2022, 2145, 2022, 2022, 2146, 2022, 2146, 2147,
1013   2022, 2022, 2022, 2022, 2022, 2147, 2022, 2022, 2147, 2022,
1014   2148, 2022, 2148, 2022, 2149, 2149, 2149, 2022, 2150, 2022,
1015   2150, 2022, 2022, 2022, 2151, 2151, 2151, 2022, 2152, 2022,
1016   2152, 2153, 2022, 2154, 2022, 2154, 2155, 2022, 2022, 2022,
1017   2155, 2155, 2155, 2155, 2022, 2156, 2022, 2156, 2022, 2022,
1018   2022, 2157, 2022, 2158, 2022, 2158, 2159, 2159, 2022, 2022,
1019
1020   2022, 2022, 2022, 2022, 2022, 2022, 2159, 2159, 2159, 2159,
1021   2022, 2160, 2022, 2160, 2022, 2022, 2022, 2022, 2161, 2022,
1022   2161, 2162, 2022, 2022, 2022, 2162, 2162, 2162, 2022, 2163,
1023   2022, 2163, 2164, 2022, 2022, 2022, 2022, 2164, 2022, 2022,
1024   2165, 2022, 2165, 2166, 2022, 2022, 2166, 2022, 2022, 2022,
1025   2167, 2022, 2167, 2022, 2022, 2022, 2022, 2168, 2022, 2168,
1026   2169, 2169, 2169, 2169, 2022, 2170, 2022, 2170, 2022, 2171,
1027   2022, 2172, 2022, 2172, 2173, 2174, 2022, 2022, 2022, 2022,
1028   2022, 2175, 2175, 2176, 2022, 2022, 2022, 2022, 2022, 2022,
1029   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1030
1031   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1032   2022, 2022, 2177, 2022, 2022, 2178, 2022, 2179, 2180, 2022,
1033   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2180, 2181, 2022,
1034   2182, 2022, 2022, 2182, 2183, 2184, 2184, 2184, 2185, 2186,
1035   2187, 2188, 2188, 2188, 2188, 2188, 2189, 2190, 2191, 2192,
1036   2192, 2022, 2022, 2022, 2192, 2192, 2192, 2192, 2193, 2194,
1037   2195, 2195, 2195, 2195, 2196, 2197, 2022, 2022, 2022, 2022,
1038   2022, 2022, 2197, 2022, 2198, 2199, 2022, 2022, 2022, 2199,
1039   2022, 2022, 2022, 2200, 2201, 2202, 2022, 2022, 2202, 2202,
1040   2203, 2022, 2204, 2205, 2206, 2207, 2207, 2022, 2207, 2022,
1041
1042   2022, 2022, 2208, 2208, 2209, 2022, 2022, 2022, 2022, 2022,
1043   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1044   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1045   2022, 2022, 2022, 2210, 2022, 2022, 2022, 2211, 2022, 2212,
1046   2213, 2022, 2022, 2022, 2213, 2214, 2022, 2215, 2022, 2022,
1047   2022, 2022, 2022, 2216, 2217, 2217, 2217, 2022, 2022, 2218,
1048   2219, 2220, 2220, 2220, 2022, 2022, 2022, 2022, 2220, 2221,
1049   2022, 2022, 2222, 2022, 2022, 2223, 2022, 2022, 2223, 2223,
1050   2223, 2224, 2225, 2226, 2226, 2226, 2022, 2022, 2226, 2227,
1051   2228, 2228, 2022, 2229, 2230, 2230, 2231, 2232, 2233, 2022,
1052
1053   2022, 2022, 2233, 2233, 2234, 2022, 2022, 2022, 2235, 2236,
1054   2237, 2237, 2022, 2022, 2238, 2238, 2238, 2239, 2022, 2022,
1055   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1056   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1057   2022, 2240, 2241, 2022, 2242, 2243, 2243, 2244, 2245, 2022,
1058   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1059   2246, 2022, 2022, 2247, 2022, 2022, 2022, 2022, 2248, 2249,
1060   2249, 2249, 2022, 2022, 2022, 2022, 2022, 2022, 2249, 2022,
1061   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1062   2022, 2022, 2022, 2022, 2022, 2022, 2223, 2022, 2022, 2224,
1063
1064   2225, 2226, 2226, 2226, 2022, 2022, 2022, 2226, 2022, 2022,
1065   2022, 2022, 2228, 2022, 2229, 2022, 2022, 2230, 2231, 2232,
1066   2233, 2233, 2233, 2234, 2022, 2022, 2022, 2022, 2235, 2236,
1067   2237, 2237, 2022, 2022, 2022, 2238, 2238, 2239, 2022, 2022,
1068   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1069   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2240, 2241, 2022,
1070   2022, 2022, 2243, 2243, 2244, 2022, 2022, 2022, 2022, 2022,
1071   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2246, 2022, 2022,
1072   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2248,
1073   2249, 2249, 2249, 2022, 2022, 2249, 2022, 2022, 2022, 2022,
1074
1075   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2224, 2225, 2226,
1076   2022, 2022, 2226, 2226, 2022, 2022, 2226, 2022, 2022, 2022,
1077   2228, 2022, 2229, 2022, 2022, 2022, 2230, 2022, 2022, 2232,
1078   2233, 2233, 2233, 2234, 2022, 2235, 2236, 2237, 2237, 2022,
1079   2022, 2022, 2022, 2238, 2238, 2239, 2022, 2022, 2022, 2022,
1080   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1081   2022, 2240, 2241, 2022, 2243, 2243, 2022, 2022, 2022, 2022,
1082   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1083   2022, 2246, 2022, 2022, 2022, 2248, 2249, 2249, 2249, 2022,
1084   2022, 2022, 2022, 2249, 2022, 2022, 2022, 2224, 2022, 2022,
1085
1086   2226, 2022, 2022, 2022, 2226, 2226, 2022, 2022, 2022, 2022,
1087   2226, 2022, 2022, 2022, 2022, 2228, 2022, 2229, 2022, 2022,
1088   2022, 2022, 2230, 2232, 2022, 2022, 2233, 2233, 2234, 2022,
1089   2235, 2236, 2237, 2237, 2022, 2238, 2238, 2239, 2022, 2022,
1090   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2241, 2022, 2022,
1091   2243, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1092   2022, 2246, 2022, 2022, 2249, 2249, 2249, 2022, 2022, 2022,
1093   2022, 2249, 2022, 2022, 2022, 2022, 2226, 2226, 2226, 2022,
1094   2022, 2022, 2022, 2226, 2022, 2022, 2022, 2022, 2022, 2022,
1095   2022, 2022, 2022, 2229, 2022, 2022, 2022, 2022, 2022, 2022,
1096
1097   2230, 2232, 2022, 2022, 2022, 2022, 2022, 2233, 2022, 2022,
1098   2022, 2235, 2236, 2237, 2237, 2022, 2022, 2238, 2022, 2022,
1099   2022, 2022, 2022, 2022, 2241, 2022, 2022, 2022, 2243, 2022,
1100   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2246,
1101   2249, 2249, 2249, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1102   2226, 2226, 2226, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1103   2022, 2022, 2022, 2022, 2022, 2022, 2229, 2022, 2022, 2022,
1104   2022, 2022, 2022, 2230, 2230, 2022, 2022, 2022, 2022, 2022,
1105   2022, 2022, 2022, 2022, 2236, 2237, 2237, 2022, 2022, 2022,
1106   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1107
1108   2022, 2022, 2243, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1109   2022, 2022, 2022, 2246, 2249, 2249, 2249, 2022, 2022, 2022,
1110   2226, 2226, 2226, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1111   2022, 2022, 2022, 2022, 2022, 2022, 2229, 2022, 2022, 2022,
1112   2022, 2022, 2022, 2230, 2230, 2022, 2022, 2022, 2236, 2237,
1113   2237, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1114   2022, 2022, 2022, 2022, 2022, 2243, 2022, 2022, 2022, 2022,
1115   2022, 2022, 2022, 2022, 2246, 2022, 2022, 2249, 2249, 2249,
1116   2226, 2022, 2022, 2226, 2022, 2022, 2022, 2022, 2022, 2022,
1117   2022, 2022, 2022, 2022, 2229, 2022, 2022, 2022, 2022, 2022,
1118
1119   2022, 2230, 2230, 2236, 2237, 2237, 2237, 2022, 2022, 2022,
1120   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1121   2022, 2022, 2022, 2246, 2022, 2022, 2022, 2249, 2249, 2249,
1122   2249, 2226, 2022, 2022, 2022, 2226, 2022, 2022, 2022, 2022,
1123   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1124   2022, 2022, 2022, 2022, 2022, 2022, 2230, 2022, 2022, 2230,
1125   2236, 2237, 2237, 2237, 2250, 2251, 2022, 2022, 2022, 2022,
1126   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1127   2022, 2246, 2249, 2249, 2249, 2249, 2022, 2022, 2022, 2022,
1128   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1129
1130   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2230, 2022, 2022,
1131   2022, 2230, 2236, 2237, 2252, 2253, 2250, 2251, 2022, 2022,
1132   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1133   2249, 2249, 2249, 2249, 2022, 2022, 2022, 2022, 2022, 2022,
1134   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1135   2022, 2022, 2230, 2230, 2236, 2252, 2237, 2254, 2253, 2255,
1136   2237, 2022, 2022, 2022, 2022, 2022, 2022, 2249, 2249, 2249,
1137   2249, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1138   2022, 2022, 2022, 2230, 2230, 2236, 2254, 2022, 2255, 2237,
1139   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2249, 2022,
1140
1141   2022, 2022, 2022, 2022, 2022, 2230, 2230, 2236, 2022, 2022,
1142   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1143   2249, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2230, 2230,
1144   2236, 2022, 2249, 2022, 2022, 2022, 2022, 2230, 2230, 2236,
1145   2249, 2022, 2022, 2022, 2022, 2230, 2230, 2236, 2249, 2022,
1146   2022, 2022, 2022, 2230, 2230, 2236, 2022, 2022, 2022, 2022,
1147   2022, 2022, 2230, 2230, 2236, 2022, 2022, 2022, 2022, 2022,
1148   2230, 2230, 2236, 2230, 2230, 2236, 2230, 2230, 2236, 2236,
1149   2230, 2230, 2236, 2236, 2230, 2230, 2236, 2236, 2230, 2230,
1150   2236, 2236, 2022, 2022, 2022, 2022, 2236, 2236, 2022, 2022,
1151
1152   2022, 2022, 2022, 2022, 2236, 2236, 2236, 2236, 2236, 2236,
1153   2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
1154   2022, 0, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1155   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1156   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1157   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1158   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1159   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1160   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1161   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1162
1163   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1164   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1165   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1166   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1167   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1168   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1169   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1170   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1171   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1172   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1173
1174   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1175   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1176   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1177   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1178   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1179   2022, 2022, 2022, 2022, 2022
1180 };
1181
1182 static yyconst flex_int16_t yy_nxt[7164] = { 0,
1183   2022, 146, 147, 146, 146, 147, 146, 146, 147, 146,
1184   146, 147, 146, 151, 147, 151, 157, 148, 154, 157,
1185   148, 154, 450, 149, 2022, 155, 149, 2022, 155, 152,
1186   151, 147, 151, 388, 158, 160, 161, 158, 160, 161,
1187   162, 163, 2022, 162, 163, 388, 152, 167, 168, 389,
1188   164, 160, 161, 164, 165, 391, 162, 160, 161, 561,
1189   165, 390, 162, 167, 168, 562, 164, 147, 147, 147,
1190   451, 390, 164, 147, 147, 147, 180, 147, 180, 180,
1191   147, 180, 472, 170, 180, 147, 180, 510, 169, 170,
1192   451, 473, 181, 561, 511, 181, 387, 387, 387, 575,
1193
1194   182, 387, 387, 387, 169, 171, 172, 147, 172, 171,
1195   171, 171, 171, 171, 171, 171, 173, 171, 171, 171,
1196   1485, 171, 175, 171, 176, 171, 180, 147, 180, 147,
1197   147, 147, 503, 147, 147, 147, 180, 147, 180, 180,
1198   147, 180, 182, 504, 561, 183, 391, 171, 171, 183,
1199   600, 489, 181, 391, 490, 181, 387, 387, 387, 387,
1200   387, 387, 390, 387, 387, 387, 387, 387, 387, 390,
1201   177, 2022, 178, 171, 172, 147, 172, 171, 171, 171,
1202   171, 171, 171, 171, 173, 171, 171, 171, 477, 171,
1203   175, 171, 176, 171, 147, 147, 147, 147, 147, 147,
1204
1205   682, 180, 147, 180, 180, 147, 180, 180, 147, 180,
1206   184, 563, 391, 184, 391, 171, 171, 182, 391, 425,
1207   182, 426, 1110, 185, 564, 180, 147, 180, 390, 427,
1208   390, 387, 387, 387, 390, 425, 451, 428, 177, 429,
1209   178, 185, 186, 187, 147, 187, 186, 186, 186, 186,
1210   186, 186, 186, 188, 186, 186, 186, 485, 186, 190,
1211   186, 191, 186, 194, 147, 194, 194, 147, 194, 402,
1212   218, 147, 218, 160, 161, 160, 161, 486, 162, 195,
1213   162, 1270, 195, 446, 186, 186, 219, 447, 205, 1271,
1214   205, 448, 192, 186, 187, 147, 187, 186, 186, 186,
1215
1216   186, 186, 186, 186, 188, 186, 186, 186, 892, 186,
1217   190, 186, 191, 186, 206, 2022, 206, 218, 147, 218,
1218   893, 147, 147, 147, 147, 147, 147, 387, 387, 387,
1219   387, 387, 387, 219, 682, 186, 186, 220, 875, 544,
1220   220, 513, 545, 192, 196, 197, 147, 197, 196, 196,
1221   196, 196, 196, 196, 196, 198, 196, 196, 196, 512,
1222   196, 200, 196, 201, 196, 218, 147, 218, 218, 147,
1223   218, 505, 218, 147, 218, 218, 147, 218, 387, 387,
1224   387, 219, 391, 439, 219, 512, 196, 196, 221, 433,
1225   440, 221, 1412, 1413, 202, 1414, 1415, 203, 390, 390,
1226
1227   387, 387, 387, 204, 196, 197, 147, 197, 196, 196,
1228   196, 196, 196, 196, 196, 198, 196, 196, 196, 451,
1229   196, 200, 196, 201, 196, 232, 147, 232, 232, 147,
1230   232, 906, 245, 147, 245, 245, 147, 245, 538, 391,
1231   391, 233, 1275, 893, 233, 391, 196, 196, 246, 571,
1232   1276, 246, 457, 539, 202, 390, 390, 203, 387, 387,
1233   387, 390, 572, 204, 207, 208, 147, 208, 207, 207,
1234   207, 207, 207, 207, 207, 209, 207, 207, 207, 906,
1235   207, 211, 207, 212, 207, 147, 147, 147, 147, 147,
1236   147, 930, 147, 147, 147, 147, 147, 147, 257, 147,
1237
1238   257, 254, 391, 391, 254, 1488, 207, 207, 255, 464,
1239   520, 255, 563, 1495, 258, 213, 1498, 214, 390, 390,
1240   215, 387, 387, 387, 2022, 576, 216, 207, 208, 147,
1241   208, 207, 207, 207, 207, 207, 207, 207, 209, 207,
1242   207, 207, 538, 207, 211, 207, 212, 207, 257, 147,
1243   257, 271, 147, 271, 512, 271, 147, 271, 147, 147,
1244   147, 147, 147, 147, 258, 411, 391, 272, 413, 207,
1245   207, 272, 391, 1116, 220, 587, 1508, 220, 213, 1117,
1246   214, 1521, 390, 215, 387, 387, 387, 998, 390, 216,
1247   222, 223, 147, 223, 222, 222, 222, 222, 222, 222,
1248
1249   222, 224, 222, 222, 222, 1522, 222, 226, 222, 227,
1250   222, 271, 147, 271, 271, 147, 271, 1232, 271, 147,
1251   271, 271, 147, 271, 283, 147, 283, 272, 1523, 797,
1252   272, 998, 222, 222, 273, 391, 391, 273, 798, 228,
1253   284, 387, 387, 387, 229, 387, 387, 387, 387, 387,
1254   387, 390, 390, 230, 222, 223, 147, 223, 222, 222,
1255   222, 222, 222, 222, 222, 224, 222, 222, 222, 1231,
1256   222, 226, 222, 227, 222, 283, 147, 283, 298, 147,
1257   298, 1524, 298, 147, 298, 308, 147, 308, 308, 147,
1258   308, 284, 1419, 1420, 299, 1390, 222, 222, 299, 391,
1259
1260   391, 309, 1391, 228, 309, 387, 387, 387, 229, 387,
1261   387, 387, 387, 387, 387, 390, 390, 230, 234, 235,
1262   147, 235, 234, 234, 234, 234, 234, 234, 234, 236,
1263   234, 234, 234, 1525, 234, 238, 234, 239, 234, 321,
1264   147, 321, 321, 147, 321, 682, 147, 147, 147, 147,
1265   147, 147, 321, 147, 321, 322, 391, 571, 322, 1529,
1266   234, 234, 220, 482, 995, 220, 998, 998, 322, 1392,
1267   578, 240, 390, 387, 387, 387, 1393, 241, 1530, 242,
1268   243, 234, 235, 147, 235, 234, 234, 234, 234, 234,
1269   234, 234, 236, 234, 234, 234, 1514, 234, 238, 234,
1270
1271   239, 234, 321, 147, 321, 321, 147, 321, 1339, 321,
1272   147, 321, 147, 147, 147, 147, 147, 147, 322, 1421,
1273   1422, 323, 391, 234, 234, 323, 682, 682, 333, 493,
1274   1531, 333, 1407, 1337, 240, 387, 387, 387, 390, 1408,
1275   241, 684, 242, 243, 247, 248, 147, 248, 247, 247,
1276   247, 247, 247, 247, 247, 249, 247, 247, 247, 998,
1277   247, 251, 247, 252, 247, 147, 147, 147, 147, 147,
1278   147, 1532, 335, 147, 335, 335, 147, 335, 335, 147,
1279   335, 333, 1533, 1409, 333, 391, 247, 247, 336, 391,
1280   1410, 336, 497, 1515, 337, 387, 387, 387, 387, 387,
1281
1282   387, 390, 387, 387, 387, 390, 253, 247, 248, 147,
1283   248, 247, 247, 247, 247, 247, 247, 247, 249, 247,
1284   247, 247, 1534, 247, 251, 247, 252, 247, 335, 147,
1285   335, 349, 147, 349, 1535, 349, 147, 349, 147, 147,
1286   147, 147, 147, 147, 337, 1536, 998, 350, 1537, 247,
1287   247, 350, 391, 1486, 333, 1487, 1538, 333, 387, 387,
1288   387, 387, 387, 387, 387, 387, 387, 1539, 390, 253,
1289   259, 260, 147, 260, 259, 259, 259, 259, 259, 259,
1290   259, 261, 259, 259, 259, 1433, 259, 263, 259, 264,
1291   259, 349, 147, 349, 349, 147, 349, 1541, 349, 147,
1292
1293   349, 349, 147, 349, 360, 147, 360, 350, 391, 391,
1294   350, 391, 259, 259, 351, 265, 524, 351, 1542, 1489,
1295   361, 1490, 1543, 266, 390, 390, 267, 390, 998, 268,
1296   1544, 1545, 269, 259, 260, 147, 260, 259, 259, 259,
1297   259, 259, 259, 259, 261, 259, 259, 259, 1551, 259,
1298   263, 259, 264, 259, 360, 147, 360, 373, 147, 373,
1299   1552, 373, 147, 373, 147, 147, 147, 147, 147, 147,
1300   361, 1434, 391, 374, 1553, 259, 259, 374, 265, 536,
1301   375, 1150, 1496, 375, 1497, 1554, 266, 1151, 390, 267,
1302   1152, 1499, 268, 1500, 1153, 269, 274, 275, 147, 275,
1303
1304   274, 274, 274, 274, 274, 274, 274, 276, 274, 274,
1305   274, 531, 274, 278, 274, 279, 274, 373, 147, 373,
1306   373, 147, 373, 1555, 373, 147, 373, 373, 147, 373,
1307   385, 147, 385, 374, 1558, 1154, 374, 1559, 274, 274,
1308   376, 1155, 1560, 376, 1156, 532, 386, 396, 1157, 280,
1309   387, 387, 387, 387, 387, 387, 387, 387, 387, 451,
1310   1561, 281, 274, 275, 147, 275, 274, 274, 274, 274,
1311   274, 274, 274, 276, 274, 274, 274, 1562, 274, 278,
1312   274, 279, 274, 385, 147, 385, 397, 387, 387, 387,
1313   1563, 1568, 398, 387, 387, 387, 399, 1569, 1570, 386,
1314
1315   1571, 400, 1572, 1573, 274, 274, 387, 387, 387, 387,
1316   387, 387, 387, 387, 387, 280, 387, 387, 387, 542,
1317   542, 542, 1593, 686, 896, 896, 896, 281, 285, 286,
1318   147, 286, 285, 285, 285, 285, 285, 285, 285, 287,
1319   285, 285, 285, 288, 285, 289, 285, 290, 285, 288,
1320   288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
1321   288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
1322   285, 285, 288, 288, 291, 288, 288, 288, 288, 288,
1323   288, 292, 288, 293, 288, 288, 288, 294, 288, 295,
1324   296, 288, 288, 288, 288, 288, 288, 300, 301, 147,
1325
1326   301, 300, 300, 300, 300, 300, 300, 300, 302, 300,
1327   300, 300, 682, 300, 304, 300, 305, 300, 542, 542,
1328   542, 584, 584, 584, 592, 592, 592, 606, 606, 606,
1329   617, 617, 617, 904, 904, 904, 1594, 1595, 585, 300,
1330   300, 593, 1596, 1603, 607, 1604, 1605, 618, 1585, 998,
1331   306, 300, 301, 147, 301, 300, 300, 300, 300, 300,
1332   300, 300, 302, 300, 300, 300, 998, 300, 304, 300,
1333   305, 300, 1606, 543, 625, 625, 625, 1338, 631, 631,
1334   631, 633, 633, 633, 642, 642, 642, 1009, 1009, 1009,
1335   1599, 626, 1607, 300, 300, 632, 1608, 1609, 634, 1610,
1336
1337   1586, 643, 1600, 998, 306, 310, 311, 147, 311, 310,
1338   310, 310, 310, 310, 310, 310, 312, 310, 310, 310,
1339   1611, 310, 314, 310, 315, 310, 647, 647, 647, 667,
1340   667, 667, 696, 696, 696, 696, 696, 696, 726, 726,
1341   726, 682, 1587, 648, 1612, 1613, 668, 310, 310, 1615,
1342   698, 316, 1616, 698, 1617, 1621, 728, 1230, 317, 1622,
1343   318, 1015, 1015, 1015, 896, 896, 896, 319, 310, 311,
1344   147, 311, 310, 310, 310, 310, 310, 310, 310, 312,
1345   310, 310, 310, 1623, 310, 314, 310, 315, 310, 699,
1346   726, 726, 726, 1627, 1601, 584, 584, 584, 731, 731,
1347
1348   731, 1628, 732, 1629, 1630, 733, 1602, 1631, 728, 1632,
1349   310, 310, 585, 1638, 316, 741, 741, 741, 1639, 742,
1350   1640, 317, 743, 318, 1021, 1021, 1021, 904, 904, 904,
1351   319, 324, 325, 147, 325, 324, 324, 324, 324, 324,
1352   324, 324, 326, 324, 324, 324, 729, 324, 328, 324,
1353   329, 324, 736, 736, 736, 1641, 1642, 736, 736, 736,
1354   592, 592, 592, 744, 744, 744, 747, 747, 747, 1643,
1355   738, 998, 1656, 324, 324, 738, 330, 593, 998, 331,
1356   745, 1633, 1635, 748, 762, 762, 762, 1658, 763, 1634,
1357   1636, 764, 682, 332, 324, 325, 147, 325, 324, 324,
1358
1359   324, 324, 324, 324, 324, 326, 324, 324, 324, 1650,
1360   324, 328, 324, 329, 324, 1662, 1651, 739, 1649, 1663,
1361   750, 750, 750, 758, 758, 758, 1664, 1665, 750, 750,
1362   750, 758, 758, 758, 1666, 1667, 324, 324, 752, 330,
1363   1668, 760, 331, 778, 778, 778, 752, 779, 1669, 760,
1364   780, 1047, 1047, 1047, 1670, 1671, 332, 338, 339, 147,
1365   339, 338, 338, 338, 338, 338, 338, 338, 340, 338,
1366   338, 338, 753, 338, 342, 338, 343, 338, 606, 606,
1367   606, 1672, 1673, 768, 768, 768, 773, 773, 773, 1674,
1368   1679, 761, 617, 617, 617, 607, 768, 768, 768, 338,
1369
1370   338, 770, 344, 1680, 775, 345, 1009, 1009, 1009, 618,
1371   346, 789, 789, 789, 770, 790, 1681, 1684, 791, 347,
1372   338, 339, 147, 339, 338, 338, 338, 338, 338, 338,
1373   338, 340, 338, 338, 338, 1685, 338, 342, 338, 343,
1374   338, 773, 773, 773, 771, 1686, 785, 785, 785, 785,
1375   785, 785, 625, 625, 625, 1687, 793, 793, 793, 775,
1376   1688, 1689, 338, 338, 787, 344, 1690, 787, 345, 626,
1377   1011, 1011, 1011, 346, 795, 1015, 1015, 1015, 1021, 1021,
1378   1021, 1691, 347, 352, 353, 147, 353, 352, 352, 352,
1379   352, 352, 352, 352, 354, 352, 352, 352, 776, 352,
1380
1381   356, 352, 357, 352, 1692, 1693, 788, 1694, 1696, 793,
1382   793, 793, 631, 631, 631, 799, 799, 799, 1697, 800,
1383   1698, 1699, 801, 1700, 1701, 352, 352, 795, 1708, 632,
1384   1022, 1022, 1022, 1047, 1047, 1047, 358, 352, 353, 147,
1385   353, 352, 352, 352, 352, 352, 352, 352, 354, 352,
1386   352, 352, 998, 352, 356, 352, 357, 352, 633, 633,
1387   633, 802, 802, 802, 1709, 803, 1710, 1711, 804, 796,
1388   805, 805, 805, 1712, 1713, 634, 1246, 1246, 1246, 352,
1389   352, 815, 815, 815, 1705, 816, 1716, 806, 817, 1717,
1390   358, 362, 363, 147, 363, 362, 362, 362, 362, 362,
1391
1392   362, 362, 364, 362, 362, 362, 1718, 362, 366, 362,
1393   367, 362, 811, 811, 811, 642, 642, 642, 818, 818,
1394   818, 811, 811, 811, 818, 818, 818, 647, 647, 647,
1395   813, 1719, 643, 362, 362, 682, 820, 1720, 1721, 813,
1396   1722, 368, 820, 369, 648, 370, 1127, 1127, 1127, 1248,
1397   1248, 1248, 1723, 371, 362, 363, 147, 363, 362, 362,
1398   362, 362, 362, 362, 362, 364, 362, 362, 362, 1728,
1399   362, 366, 362, 367, 362, 814, 823, 823, 823, 1704,
1400   824, 821, 1731, 825, 829, 829, 829, 829, 829, 829,
1401   834, 834, 834, 836, 836, 836, 362, 362, 845, 845,
1402
1403   845, 1732, 831, 1736, 368, 831, 369, 835, 370, 1737,
1404   837, 1130, 1130, 1130, 1738, 846, 371, 377, 378, 147,
1405   378, 377, 377, 377, 377, 377, 377, 377, 379, 377,
1406   377, 377, 1739, 377, 381, 377, 382, 377, 1740, 832,
1407   840, 840, 840, 1741, 848, 848, 848, 840, 840, 840,
1408   850, 850, 850, 850, 850, 850, 1729, 1730, 842, 377,
1409   377, 849, 667, 667, 667, 842, 1742, 1743, 852, 1744,
1410   1745, 852, 1746, 854, 854, 854, 1749, 855, 1750, 668,
1411   856, 1751, 383, 377, 378, 147, 378, 377, 377, 377,
1412   377, 377, 377, 377, 379, 377, 377, 377, 1752, 377,
1413
1414   381, 377, 382, 377, 843, 857, 857, 857, 1753, 1754,
1415   853, 857, 857, 857, 865, 865, 865, 865, 865, 865,
1416   871, 871, 871, 859, 1769, 377, 377, 682, 1770, 859,
1417   1771, 1772, 867, 1776, 1777, 867, 1778, 1779, 873, 871,
1418   871, 871, 696, 696, 696, 911, 911, 911, 383, 391,
1419   696, 696, 696, 1011, 1011, 1011, 407, 873, 1761, 1780,
1420   698, 1781, 912, 860, 1783, 390, 1784, 1012, 698, 696,
1421   696, 696, 1785, 726, 726, 726, 1786, 868, 726, 726,
1422   726, 1791, 1792, 726, 726, 726, 1793, 698, 1794, 1795,
1423   408, 728, 409, 1796, 1797, 410, 728, 411, 412, 874,
1424
1425   413, 728, 1798, 1799, 414, 1800, 415, 416, 417, 391,
1426   914, 914, 914, 884, 1801, 1802, 407, 731, 731, 731,
1427   1803, 732, 1804, 682, 733, 390, 1819, 915, 1820, 913,
1428   2022, 2022, 2022, 736, 736, 736, 736, 736, 736, 1821,
1429   1822, 736, 736, 736, 744, 744, 744, 2022, 1823, 1824,
1430   408, 738, 418, 1825, 738, 419, 1826, 420, 412, 738,
1431   421, 745, 1813, 1827, 414, 1828, 422, 423, 424, 741,
1432   741, 741, 1831, 742, 1832, 1833, 743, 920, 920, 920,
1433   1834, 921, 1841, 1842, 922, 918, 1843, 916, 923, 923,
1434   923, 747, 747, 747, 925, 925, 925, 1844, 926, 1845,
1435
1436   1846, 927, 750, 750, 750, 924, 1847, 1848, 748, 750,
1437   750, 750, 750, 750, 750, 932, 932, 932, 1849, 1850,
1438   752, 758, 758, 758, 758, 758, 758, 752, 1851, 1852,
1439   752, 1862, 933, 758, 758, 758, 762, 762, 762, 760,
1440   763, 1863, 760, 764, 768, 768, 768, 768, 768, 768,
1441   1864, 760, 768, 768, 768, 773, 773, 773, 773, 773,
1442   773, 1857, 770, 1857, 682, 770, 1865, 1866, 929, 1867,
1443   770, 1868, 1869, 775, 1860, 1858, 775, 935, 773, 773,
1444   773, 778, 778, 778, 1870, 779, 1871, 1876, 780, 785,
1445   785, 785, 785, 785, 785, 1877, 775, 785, 785, 785,
1446
1447   1878, 789, 789, 789, 1879, 790, 1855, 787, 791, 1880,
1448   787, 793, 793, 793, 939, 787, 793, 793, 793, 793,
1449   793, 793, 1881, 799, 799, 799, 1882, 800, 1883, 795,
1450   801, 805, 805, 805, 795, 1888, 1872, 795, 941, 802,
1451   802, 802, 682, 803, 1874, 1888, 804, 1873, 806, 952,
1452   952, 952, 1891, 953, 1892, 1875, 954, 1857, 947, 811,
1453   811, 811, 811, 811, 811, 811, 811, 811, 815, 815,
1454   815, 1858, 816, 998, 999, 817, 949, 813, 1902, 1886,
1455   813, 1903, 1904, 813, 818, 818, 818, 818, 818, 818,
1456   818, 818, 818, 823, 823, 823, 1857, 824, 1905, 1888,
1457
1458   825, 1909, 820, 1888, 1910, 820, 1911, 1860, 820, 829,
1459   829, 829, 829, 829, 829, 829, 829, 829, 834, 834,
1460   834, 1921, 967, 967, 967, 1925, 968, 831, 959, 969,
1461   831, 1926, 1927, 831, 1928, 835, 1932, 836, 836, 836,
1462   970, 970, 970, 1933, 971, 1934, 1935, 972, 840, 840,
1463   840, 1936, 1937, 960, 837, 840, 840, 840, 840, 840,
1464   840, 845, 845, 845, 1941, 682, 842, 1942, 977, 977,
1465   977, 965, 978, 842, 1943, 979, 842, 1944, 846, 848,
1466   848, 848, 981, 981, 981, 1945, 982, 1940, 682, 983,
1467   850, 850, 850, 850, 850, 850, 849, 850, 850, 850,
1468
1469   854, 854, 854, 1949, 855, 1950, 1948, 856, 852, 1951,
1470   1952, 852, 857, 857, 857, 852, 857, 857, 857, 1953,
1471   682, 975, 857, 857, 857, 987, 987, 987, 1959, 1960,
1472   859, 865, 865, 865, 859, 865, 865, 865, 1961, 1956,
1473   859, 1962, 988, 865, 865, 865, 871, 871, 871, 867,
1474   871, 871, 871, 867, 871, 871, 871, 997, 997, 997,
1475   984, 867, 1969, 1970, 873, 696, 696, 696, 873, 911,
1476   911, 911, 873, 1484, 682, 998, 999, 682, 985, 1022,
1477   1022, 1022, 682, 698, 682, 682, 912, 1031, 1031, 1031,
1478   1965, 1032, 682, 1012, 1033, 726, 726, 726, 1973, 682,
1479
1480   991, 914, 914, 914, 994, 1035, 1035, 1035, 682, 1036,
1481   682, 1987, 1037, 728, 736, 736, 736, 1983, 915, 920,
1482   920, 920, 682, 921, 1997, 1984, 922, 1005, 923, 923,
1483   923, 1483, 738, 1042, 1042, 1042, 1991, 1043, 682, 1482,
1484   1044, 750, 750, 750, 1988, 924, 925, 925, 925, 1034,
1485   926, 1481, 2015, 927, 932, 932, 932, 682, 682, 752,
1486   1040, 1049, 1049, 1049, 2005, 1050, 682, 682, 1051, 682,
1487   1998, 933, 1052, 1052, 1052, 758, 758, 758, 1058, 1058,
1488   1058, 773, 773, 773, 1065, 1065, 1065, 1480, 1046, 1053,
1489   1067, 1067, 1067, 760, 1992, 2009, 1059, 682, 2010, 775,
1490
1491   2006, 1066, 785, 785, 785, 2019, 682, 1068, 1071, 1071,
1492   1071, 2016, 793, 793, 793, 1074, 1074, 1074, 682, 682,
1493   787, 1054, 2022, 2022, 2022, 1072, 1077, 1077, 1077, 1061,
1494   795, 2007, 1075, 1069, 952, 952, 952, 682, 953, 2022,
1495   2008, 954, 1479, 1078, 2022, 2022, 2022, 2013, 2022, 2022,
1496   2022, 2022, 2022, 2022, 811, 811, 811, 818, 818, 818,
1497   2011, 2022, 2012, 1478, 1070, 2022, 2014, 1472, 2022, 682,
1498   1073, 682, 813, 1471, 682, 820, 1470, 1087, 1087, 1087,
1499   829, 829, 829, 1469, 1076, 682, 967, 967, 967, 2019,
1500   968, 1468, 1080, 969, 1088, 970, 970, 970, 831, 971,
1501
1502   682, 1467, 972, 2017, 1022, 1022, 1022, 840, 840, 840,
1503   1079, 987, 987, 987, 2018, 1082, 1466, 1081, 1093, 1083,
1504   1089, 1465, 977, 977, 977, 842, 978, 1461, 988, 979,
1505   981, 981, 981, 1090, 982, 1460, 1459, 983, 850, 850,
1506   850, 857, 857, 857, 1100, 1100, 1100, 1458, 1101, 1457,
1507   1456, 1102, 865, 865, 865, 1455, 852, 1454, 1453, 859,
1508   1107, 1107, 1107, 871, 871, 871, 997, 997, 997, 1094,
1509   867, 696, 696, 696, 1127, 1127, 1127, 1108, 1130, 1130,
1510   1130, 873, 1452, 1451, 998, 1127, 1127, 1127, 1128, 698,
1511   1448, 1445, 1131, 1444, 1098, 1136, 1136, 1136, 1105, 1128,
1512
1513   1097, 1138, 1138, 1138, 1138, 1138, 1138, 1443, 1442, 1131,
1514   1136, 1136, 1136, 1430, 1111, 1139, 1428, 1427, 1139, 1417,
1515   1118, 1031, 1031, 1031, 1141, 1032, 1109, 1411, 1033, 1406,
1516   1112, 726, 726, 726, 1129, 1035, 1035, 1035, 1405, 1036,
1517   1401, 1394, 1037, 1389, 1388, 1135, 1052, 1052, 1052, 728,
1518   736, 736, 736, 1042, 1042, 1042, 1387, 1043, 1381, 1380,
1519   1044, 1129, 1379, 1053, 1135, 750, 750, 750, 738, 1049,
1520   1049, 1049, 1378, 1050, 1377, 1376, 1051, 1158, 1158, 1158,
1521   1375, 1159, 1374, 752, 1160, 758, 758, 758, 1162, 1162,
1522   1162, 2022, 2022, 2022, 1142, 1165, 1165, 1165, 1145, 1058,
1523
1524   1058, 1058, 1373, 760, 1372, 1163, 1366, 1365, 2022, 1167,
1525   1167, 1167, 1166, 773, 773, 773, 1364, 1059, 1065, 1065,
1526   1065, 1363, 1148, 1173, 1173, 1173, 1168, 1174, 1361, 1359,
1527   1175, 775, 1355, 1161, 1354, 1066, 1067, 1067, 1067, 1176,
1528   1176, 1176, 1352, 1177, 1351, 1164, 1178, 1180, 1180, 1180,
1529   1071, 1071, 1071, 1068, 1182, 1182, 1182, 1169, 1183, 1347,
1530   1340, 1184, 1185, 1185, 1185, 1181, 1335, 1072, 1074, 1074,
1531   1074, 1187, 1187, 1187, 1333, 1188, 1332, 1331, 1189, 1322,
1532   1186, 1190, 1190, 1190, 1317, 1075, 1077, 1077, 1077, 1192,
1533   1192, 1192, 1316, 1193, 1315, 1314, 1194, 1310, 1191, 1195,
1534
1535   1195, 1195, 1296, 1078, 2022, 2022, 2022, 1198, 1198, 1198,
1536   811, 811, 811, 818, 818, 818, 1196, 1087, 1087, 1087,
1537   1295, 2022, 1294, 1293, 1199, 1205, 1205, 1205, 813, 1206,
1538   1292, 820, 1207, 1291, 1088, 1209, 1209, 1209, 1211, 1211,
1539   1211, 1277, 2022, 2022, 2022, 840, 840, 840, 1216, 1216,
1540   1216, 1274, 1273, 1210, 1272, 1212, 1269, 1268, 1197, 2022,
1541   1264, 1201, 1263, 842, 1260, 1217, 2022, 2022, 2022, 850,
1542   850, 850, 1200, 1259, 857, 857, 857, 1100, 1100, 1100,
1543   1257, 1101, 1256, 2022, 1102, 1255, 1254, 852, 1220, 865,
1544   865, 865, 859, 1215, 1107, 1107, 1107, 1226, 1226, 1226,
1545
1546   1251, 1227, 1213, 1250, 1228, 1249, 1247, 867, 1245, 1218,
1547   1244, 1108, 871, 871, 871, 1243, 1242, 1219, 1234, 1234,
1548   1234, 2022, 2022, 2022, 2022, 2022, 2022, 696, 696, 696,
1549   873, 1252, 1252, 1252, 1241, 1235, 1240, 1224, 2022, 1239,
1550   1233, 2022, 1253, 1253, 1253, 698, 1136, 1136, 1136, 1138,
1551   1138, 1138, 726, 726, 726, 1225, 1261, 1261, 1261, 750,
1552   750, 750, 1266, 1266, 1266, 1223, 1222, 1229, 1221, 1214,
1553   728, 1208, 1204, 1236, 1262, 1203, 1202, 752, 1179, 1267,
1554   1172, 1237, 1171, 1170, 1238, 1158, 1158, 1158, 1149, 1159,
1555   1147, 1146, 1160, 758, 758, 758, 1162, 1162, 1162, 1258,
1556
1557   1144, 1279, 1279, 1279, 1143, 1280, 1140, 1278, 1281, 1137,
1558   1134, 760, 1133, 1163, 1265, 1282, 1282, 1282, 1165, 1165,
1559   1165, 1284, 1284, 1284, 1132, 1285, 1126, 1125, 1286, 1167,
1560   1167, 1167, 1283, 1124, 1123, 1166, 1287, 1287, 1287, 1122,
1561   1288, 1121, 1120, 1289, 1119, 1115, 1168, 773, 773, 773,
1562   1173, 1173, 1173, 1114, 1174, 1113, 998, 1175, 1106, 1176,
1563   1176, 1176, 1104, 1177, 1103, 775, 1178, 1180, 1180, 1180,
1564   1182, 1182, 1182, 1099, 1183, 1096, 1095, 1184, 1185, 1185,
1565   1185, 1092, 1187, 1187, 1187, 1181, 1188, 1091, 1086, 1189,
1566   1190, 1190, 1190, 1290, 1085, 1084, 1186, 1297, 1297, 1297,
1567
1568   1064, 1298, 1063, 1062, 1299, 1060, 1057, 1191, 1192, 1192,
1569   1192, 1056, 1193, 1055, 1048, 1194, 1195, 1195, 1195, 1300,
1570   1300, 1300, 1045, 1301, 1041, 1039, 1302, 1303, 1303, 1303,
1571   1198, 1198, 1198, 1196, 1305, 1305, 1305, 1038, 1306, 1030,
1572   1029, 1307, 1028, 1027, 1304, 1026, 1025, 1199, 811, 811,
1573   811, 818, 818, 818, 1311, 1311, 1311, 1205, 1205, 1205,
1574   1024, 1206, 1023, 1020, 1207, 1019, 813, 1018, 1017, 820,
1575   1016, 1312, 1209, 1209, 1209, 1211, 1211, 1211, 1318, 1318,
1576   1318, 1014, 1319, 1013, 1010, 1320, 2022, 2022, 2022, 1008,
1577   1210, 1007, 1212, 1216, 1216, 1216, 1308, 1313, 840, 840,
1578
1579   840, 1006, 1004, 2022, 2022, 2022, 2022, 1328, 1328, 1328,
1580   1217, 1309, 1323, 1324, 1324, 1324, 842, 1325, 1003, 1002,
1581   1326, 2022, 857, 857, 857, 1329, 865, 865, 865, 1226,
1582   1226, 1226, 1001, 1227, 1000, 993, 1228, 992, 1321, 990,
1583   859, 871, 871, 871, 867, 1234, 1234, 1234, 1341, 1341,
1584   1341, 989, 1342, 986, 980, 1343, 2022, 2022, 2022, 873,
1585   976, 1327, 1235, 2022, 2022, 2022, 974, 973, 1330, 966,
1586   696, 696, 696, 2022, 1348, 1348, 1348, 1349, 1349, 1349,
1587   2022, 1350, 1350, 1350, 1353, 1353, 1353, 1334, 698, 1336,
1588   1246, 1246, 1246, 1248, 1248, 1248, 1356, 1356, 1356, 1357,
1589
1590   1357, 1357, 1252, 1252, 1252, 1253, 1253, 1253, 1358, 1358,
1591   1358, 964, 1344, 1360, 1360, 1360, 726, 726, 726, 1261,
1592   1261, 1261, 1367, 1367, 1367, 963, 1345, 1266, 1266, 1266,
1593   1346, 1369, 1369, 1369, 728, 1370, 962, 1262, 1371, 961,
1594   1368, 758, 758, 758, 1267, 1279, 1279, 1279, 958, 1280,
1595   957, 956, 1281, 1282, 1282, 1282, 1383, 1383, 1383, 760,
1596   1384, 955, 951, 1385, 1362, 1284, 1284, 1284, 950, 1285,
1597   1283, 948, 1286, 1287, 1287, 1287, 946, 1288, 945, 944,
1598   1289, 773, 773, 773, 1297, 1297, 1297, 1382, 1298, 943,
1599   942, 1299, 940, 1300, 1300, 1300, 938, 1301, 937, 775,
1600
1601   1302, 1303, 1303, 1303, 1395, 1395, 1395, 936, 1396, 934,
1602   931, 1397, 1305, 1305, 1305, 928, 1306, 919, 1304, 1307,
1603   811, 811, 811, 1399, 1399, 1399, 1311, 1311, 1311, 1402,
1604   1402, 1402, 1386, 1403, 917, 910, 1404, 909, 813, 908,
1605   907, 1400, 905, 1312, 1318, 1318, 1318, 903, 1319, 902,
1606   901, 1320, 2022, 2022, 2022, 840, 840, 840, 1324, 1324,
1607   1324, 900, 1325, 899, 898, 1326, 2022, 2022, 2022, 2022,
1608   1328, 1328, 1328, 842, 857, 857, 857, 1425, 1425, 1425,
1609   1398, 897, 895, 2022, 865, 865, 865, 894, 1329, 1432,
1610   1432, 1432, 859, 891, 1426, 871, 871, 871, 1416, 1435,
1611
1612   1435, 1435, 867, 890, 1341, 1341, 1341, 682, 1342, 889,
1613   1418, 1343, 888, 873, 2022, 2022, 2022, 2022, 2022, 2022,
1614   887, 886, 1423, 696, 696, 696, 1439, 1439, 1439, 885,
1615   883, 2022, 882, 881, 2022, 880, 1424, 1348, 1348, 1348,
1616   879, 698, 1349, 1349, 1349, 1429, 1350, 1350, 1350, 878,
1617   877, 1431, 1440, 1440, 1440, 1441, 1441, 1441, 1353, 1353,
1618   1353, 1356, 1356, 1356, 1357, 1357, 1357, 1436, 1358, 1358,
1619   1358, 1360, 1360, 1360, 1446, 1446, 1446, 876, 1438, 1437,
1620   1449, 1449, 1449, 1367, 1367, 1367, 1369, 1369, 1369, 682,
1621   1370, 870, 1447, 1371, 758, 758, 758, 1450, 1383, 1383,
1622
1623   1383, 1368, 1384, 869, 864, 1385, 1463, 1463, 1463, 1395,
1624   1395, 1395, 760, 1396, 863, 862, 1397, 1473, 1473, 1473,
1625   1399, 1399, 1399, 861, 1464, 1475, 1475, 1475, 847, 1402,
1626   1402, 1402, 844, 1403, 839, 1474, 1404, 838, 1400, 1491,
1627   1491, 1491, 1476, 1493, 1493, 1493, 840, 840, 840, 833,
1628   828, 1462, 2022, 2022, 2022, 827, 1492, 857, 857, 857,
1629   1425, 1425, 1425, 826, 842, 1506, 1506, 1506, 1477, 2022,
1630   822, 810, 1503, 1503, 1503, 859, 1504, 1426, 809, 1505,
1631   808, 807, 1507, 1509, 1509, 1509, 1511, 1511, 1511, 871,
1632   871, 871, 1432, 1432, 1432, 1501, 1435, 1435, 1435, 792,
1633
1634   784, 1510, 1516, 1516, 1516, 783, 782, 873, 781, 1494,
1635   682, 777, 772, 1502, 2022, 2022, 2022, 767, 766, 1517,
1636   1519, 1519, 1519, 1439, 1439, 1439, 1440, 1440, 1440, 765,
1637   757, 2022, 1441, 1441, 1441, 1446, 1446, 1446, 1520, 1449,
1638   1449, 1449, 1526, 1526, 1526, 756, 1527, 755, 754, 1528,
1639   1513, 1512, 749, 1447, 746, 740, 1450, 758, 758, 758,
1640   735, 734, 1518, 1463, 1463, 1463, 1546, 1546, 1546, 1473,
1641   1473, 1473, 1475, 1475, 1475, 760, 730, 725, 1548, 1548,
1642   1548, 1464, 1549, 1547, 724, 1550, 723, 1474, 722, 1476,
1643   1556, 1556, 1556, 1491, 1491, 1491, 1564, 1564, 1564, 721,
1644
1645   1565, 720, 719, 1566, 1493, 1493, 1493, 1557, 718, 717,
1646   1492, 716, 715, 1540, 840, 840, 840, 2022, 2022, 2022,
1647   1576, 1576, 1576, 1503, 1503, 1503, 714, 1504, 713, 712,
1648   1505, 711, 842, 710, 2022, 1506, 1506, 1506, 1577, 1578,
1649   1578, 1578, 709, 1579, 708, 707, 1580, 706, 1581, 1581,
1650   1581, 705, 1507, 1509, 1509, 1509, 1511, 1511, 1511, 1583,
1651   1583, 1583, 704, 703, 1574, 1582, 702, 701, 1567, 700,
1652   695, 1510, 1516, 1516, 1516, 694, 693, 1584, 1575, 1588,
1653   1588, 1588, 692, 1589, 691, 690, 1590, 689, 688, 1517,
1654   1591, 1591, 1591, 1519, 1519, 1519, 1597, 1597, 1597, 1526,
1655
1656   1526, 1526, 685, 1527, 683, 682, 1528, 1592, 758, 758,
1657   758, 1520, 680, 1598, 1546, 1546, 1546, 1618, 1618, 1618,
1658   678, 1619, 677, 676, 1620, 674, 760, 673, 1548, 1548,
1659   1548, 1547, 1549, 672, 671, 1550, 1556, 1556, 1556, 1624,
1660   1624, 1624, 670, 1625, 666, 664, 1626, 1564, 1564, 1564,
1661   663, 1565, 662, 1557, 1566, 840, 840, 840, 2022, 2022,
1662   2022, 2022, 2022, 2022, 1614, 1576, 1576, 1576, 661, 660,
1663   1578, 1578, 1578, 842, 1579, 2022, 658, 1580, 2022, 1581,
1664   1581, 1581, 657, 1577, 1646, 1646, 1646, 656, 1647, 655,
1665   654, 1648, 1583, 1583, 1583, 653, 1582, 1588, 1588, 1588,
1666
1667   651, 1589, 650, 649, 1590, 1591, 1591, 1591, 646, 645,
1668   1584, 1652, 1652, 1652, 641, 1653, 639, 1637, 1654, 1644,
1669   638, 1645, 1592, 1655, 1655, 1655, 1657, 1657, 1657, 1597,
1670   1597, 1597, 1659, 1659, 1659, 637, 1660, 636, 635, 1661,
1671   758, 758, 758, 1676, 1676, 1676, 1598, 1618, 1618, 1618,
1672   630, 1619, 629, 627, 1620, 1682, 1682, 1682, 760, 624,
1673   1677, 1624, 1624, 1624, 622, 1625, 621, 620, 1626, 840,
1674   840, 840, 1683, 2022, 2022, 2022, 2022, 2022, 2022, 1655,
1675   1655, 1655, 1706, 1706, 1706, 619, 1678, 842, 1675, 616,
1676   2022, 615, 613, 2022, 1646, 1646, 1646, 612, 1647, 1707,
1677
1678   998, 1648, 1652, 1652, 1652, 610, 1653, 609, 608, 1654,
1679   1657, 1657, 1657, 1659, 1659, 1659, 605, 1660, 603, 602,
1680   1661, 1695, 1703, 1714, 1714, 1714, 758, 758, 758, 1676,
1681   1676, 1676, 1725, 1725, 1725, 1702, 1726, 601, 599, 1727,
1682   1715, 1682, 1682, 1682, 760, 597, 1677, 1733, 1733, 1733,
1683   596, 1734, 595, 594, 1735, 1747, 1747, 1747, 1683, 1755,
1684   1755, 1755, 1758, 1758, 1758, 1762, 1762, 1762, 1706, 1706,
1685   1706, 591, 1724, 1748, 590, 589, 1756, 586, 583, 1759,
1686   582, 580, 1763, 998, 579, 1707, 998, 577, 1764, 1764,
1687   1764, 574, 1765, 573, 570, 1766, 1767, 1767, 1767, 1768,
1688
1689   1768, 1768, 1757, 569, 568, 1760, 998, 1714, 1714, 1714,
1690   1773, 1773, 1773, 567, 1774, 566, 565, 1775, 758, 758,
1691   758, 1725, 1725, 1725, 1715, 1726, 560, 559, 1727, 1787,
1692   1787, 1787, 558, 1733, 1733, 1733, 760, 1734, 557, 556,
1693   1735, 1789, 1789, 1789, 555, 554, 1788, 1747, 1747, 1747,
1694   1755, 1755, 1755, 1805, 1805, 1805, 552, 1806, 1790, 551,
1695   1807, 2022, 2022, 2022, 550, 1748, 549, 1756, 1758, 1758,
1696   1758, 548, 1809, 1809, 1809, 547, 1810, 546, 2022, 1811,
1697   1782, 2022, 2022, 2022, 541, 1759, 1762, 1762, 1762, 1814,
1698   1814, 1814, 538, 1815, 540, 535, 1816, 533, 2022, 1767,
1699
1700   1767, 1767, 531, 1763, 998, 2022, 530, 998, 529, 1764,
1701   1764, 1764, 528, 1765, 527, 525, 1766, 1768, 1768, 1768,
1702   523, 1773, 1773, 1773, 521, 1774, 1808, 998, 1775, 1835,
1703   1835, 1835, 520, 1836, 519, 518, 1837, 517, 1829, 1829,
1704   1829, 516, 1787, 1787, 1787, 514, 1812, 996, 996, 996,
1705   996, 996, 996, 996, 996, 996, 1830, 513, 996, 1788,
1706   1789, 1789, 1789, 996, 996, 996, 998, 996, 1838, 1838,
1707   1838, 509, 1839, 508, 506, 1840, 505, 1790, 1805, 1805,
1708   1805, 502, 1806, 501, 500, 1807, 2022, 2022, 2022, 996,
1709   996, 996, 996, 996, 996, 996, 996, 996, 996, 996,
1710
1711   498, 496, 996, 2022, 2022, 2022, 2022, 996, 996, 996,
1712   998, 996, 1809, 1809, 1809, 494, 1810, 492, 491, 1811,
1713   488, 2022, 1814, 1814, 1814, 487, 1815, 483, 481, 1816,
1714   1829, 1829, 1829, 996, 996, 1835, 1835, 1835, 1853, 1836,
1715   998, 480, 1837, 1838, 1838, 1838, 478, 1839, 1830, 477,
1716   1840, 476, 2022, 2022, 2022, 475, 1854, 996, 996, 996,
1717   996, 996, 1861, 996, 996, 996, 474, 471, 996, 2022,
1718   2022, 2022, 2022, 996, 996, 996, 998, 996, 1890, 1890,
1719   1890, 1893, 1893, 1893, 1912, 1912, 1912, 2022, 1913, 469,
1720   468, 1914, 420, 1895, 1895, 1895, 998, 999, 1894, 996,
1721
1722   996, 996, 996, 996, 996, 996, 996, 996, 996, 1861,
1723   1896, 467, 996, 465, 1884, 463, 462, 996, 996, 996,
1724   998, 996, 1897, 1897, 1897, 1900, 1900, 1900, 2022, 2022,
1725   2022, 461, 1885, 2022, 2022, 2022, 1908, 1908, 1908, 1898,
1726   460, 458, 1901, 996, 996, 2022, 1890, 1890, 1890, 456,
1727   2022, 1893, 1893, 1893, 682, 1895, 1895, 1895, 455, 1915,
1728   1915, 1915, 454, 1916, 998, 1899, 1917, 452, 1894, 1897,
1729   1897, 1897, 1896, 1918, 1918, 1918, 450, 1919, 449, 1906,
1730   1920, 1900, 1900, 1900, 1907, 445, 1898, 444, 1922, 1922,
1731   1922, 442, 1923, 441, 1111, 1924, 438, 437, 1901, 2022,
1732
1733   2022, 2022, 2022, 2022, 2022, 1908, 1908, 1908, 1912, 1912,
1734   1912, 436, 1913, 434, 432, 1914, 2022, 430, 2022, 2022,
1735   1915, 1915, 1915, 682, 1916, 406, 405, 1917, 1918, 1918,
1736   1918, 403, 1919, 401, 395, 1920, 1922, 1922, 1922, 394,
1737   1923, 1931, 1929, 1924, 395, 1930, 2022, 2022, 2022, 2022,
1738   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1739   2022, 394, 393, 2022, 392, 2022, 2022, 2022, 2022, 2022,
1740   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 1957,
1741   1957, 1957, 2022, 2022, 2022, 2022, 2022, 2022, 1957, 1957,
1742   1957, 2022, 2022, 2022, 2022, 2022, 1958, 2022, 2022, 2022,
1743
1744   2022, 2022, 2022, 1938, 2022, 1958, 1939, 2022, 2022, 1954,
1745   2022, 1966, 1966, 1966, 1946, 1967, 2022, 1947, 1968, 2022,
1746   2022, 2022, 2022, 2022, 2022, 2022, 2022, 1955, 2022, 2022,
1747   1963, 2022, 2022, 1964, 2022, 2022, 2022, 2022, 2022, 2022,
1748   1966, 1966, 1966, 2022, 1967, 2022, 2022, 1968, 2022, 2022,
1749   2022, 2022, 2022, 2022, 1976, 1976, 1976, 2022, 2022, 2022,
1750   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 1976,
1751   1976, 1976, 682, 1979, 2022, 2022, 1980, 2022, 2022, 1971,
1752   2022, 2022, 1972, 2022, 2022, 2022, 2022, 682, 2022, 2022,
1753   2022, 1974, 2022, 2022, 1975, 2022, 2022, 2022, 2022, 2022,
1754
1755   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1756   2022, 2022, 2022, 1993, 1993, 1993, 2022, 2022, 1977, 2022,
1757   1978, 2022, 2022, 2022, 2022, 2022, 2022, 1995, 1995, 1995,
1758   1994, 1981, 1993, 1993, 1993, 2022, 1982, 2022, 1999, 1999,
1759   1999, 2022, 2000, 2022, 1996, 2001, 2022, 2022, 1986, 1994,
1760   2022, 1985, 2022, 1989, 1995, 1995, 1995, 2002, 2002, 2002,
1761   2022, 2003, 2022, 2022, 2004, 1999, 1999, 1999, 2022, 2000,
1762   2022, 1996, 2001, 1990, 2002, 2002, 2002, 2022, 2003, 2022,
1763   2022, 2004, 2020, 2020, 2020, 2020, 2020, 2020, 2022, 2022,
1764   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1765
1766   2021, 2022, 2022, 2021, 144, 144, 144, 144, 144, 144,
1767   144, 144, 144, 145, 145, 145, 145, 145, 145, 145,
1768   145, 145, 150, 150, 150, 150, 150, 150, 150, 150,
1769   150, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1770   156, 156, 156, 156, 156, 156, 156, 156, 156, 159,
1771   159, 159, 159, 159, 159, 159, 159, 159, 166, 166,
1772   166, 166, 166, 166, 166, 166, 166, 174, 174, 174,
1773   174, 174, 174, 174, 174, 174, 179, 179, 179, 179,
1774   179, 179, 179, 179, 179, 189, 189, 189, 189, 189,
1775   189, 189, 189, 189, 193, 193, 193, 193, 193, 193,
1776
1777   193, 193, 193, 199, 199, 199, 199, 199, 199, 199,
1778   199, 199, 210, 210, 210, 210, 210, 210, 210, 210,
1779   210, 217, 217, 217, 217, 217, 217, 217, 217, 217,
1780   225, 225, 225, 225, 225, 225, 225, 225, 225, 231,
1781   231, 231, 231, 231, 231, 231, 231, 231, 237, 237,
1782   237, 237, 237, 237, 237, 237, 237, 244, 244, 244,
1783   244, 244, 244, 244, 244, 244, 250, 250, 250, 250,
1784   250, 250, 250, 250, 250, 256, 256, 256, 256, 256,
1785   256, 256, 256, 256, 262, 262, 262, 262, 262, 262,
1786   262, 262, 262, 270, 270, 270, 270, 270, 270, 270,
1787
1788   270, 270, 277, 277, 277, 277, 277, 277, 277, 277,
1789   277, 282, 282, 282, 282, 282, 282, 282, 282, 282,
1790   297, 297, 297, 297, 297, 297, 297, 297, 297, 303,
1791   303, 303, 303, 303, 303, 303, 303, 303, 307, 307,
1792   307, 307, 307, 307, 307, 307, 307, 313, 313, 313,
1793   313, 313, 313, 313, 313, 313, 320, 320, 320, 320,
1794   320, 320, 320, 320, 320, 327, 327, 327, 327, 327,
1795   327, 327, 327, 327, 334, 334, 334, 334, 334, 334,
1796   334, 334, 334, 341, 341, 341, 341, 341, 341, 341,
1797   341, 341, 348, 348, 348, 348, 348, 348, 348, 348,
1798
1799   348, 355, 355, 355, 355, 355, 355, 355, 355, 355,
1800   359, 359, 359, 359, 359, 359, 359, 359, 359, 365,
1801   365, 365, 365, 365, 365, 365, 365, 365, 372, 372,
1802   372, 372, 372, 372, 372, 372, 372, 380, 380, 380,
1803   380, 380, 380, 380, 380, 380, 384, 384, 384, 384,
1804   384, 384, 384, 384, 384, 404, 404, 404, 2022, 2022,
1805   2022, 404, 431, 431, 431, 2022, 2022, 2022, 431, 435,
1806   435, 435, 2022, 2022, 2022, 435, 443, 443, 443, 2022,
1807   2022, 2022, 443, 453, 453, 453, 2022, 2022, 2022, 453,
1808   459, 459, 459, 2022, 2022, 2022, 459, 466, 466, 466,
1809
1810   2022, 2022, 2022, 466, 470, 470, 470, 2022, 2022, 2022,
1811   470, 479, 479, 479, 2022, 2022, 2022, 479, 484, 484,
1812   484, 2022, 2022, 2022, 484, 495, 495, 495, 2022, 2022,
1813   2022, 495, 499, 499, 499, 2022, 2022, 2022, 499, 507,
1814   507, 507, 2022, 2022, 2022, 507, 515, 515, 515, 2022,
1815   2022, 2022, 515, 522, 522, 522, 2022, 2022, 2022, 522,
1816   526, 526, 526, 2022, 2022, 2022, 526, 534, 534, 534,
1817   2022, 2022, 2022, 534, 537, 537, 537, 537, 537, 537,
1818   537, 2022, 537, 553, 2022, 2022, 2022, 553, 581, 2022,
1819   2022, 2022, 581, 588, 2022, 2022, 2022, 588, 598, 2022,
1820
1821   2022, 2022, 598, 604, 2022, 2022, 2022, 604, 611, 2022,
1822   2022, 2022, 611, 614, 2022, 2022, 2022, 614, 623, 2022,
1823   2022, 2022, 623, 628, 2022, 2022, 2022, 628, 484, 484,
1824   484, 2022, 2022, 2022, 484, 640, 2022, 2022, 2022, 640,
1825   495, 495, 495, 2022, 2022, 2022, 495, 644, 2022, 2022,
1826   2022, 644, 499, 499, 499, 2022, 2022, 2022, 499, 652,
1827   2022, 2022, 2022, 652, 507, 507, 507, 2022, 2022, 2022,
1828   507, 659, 2022, 2022, 2022, 659, 515, 515, 515, 2022,
1829   2022, 2022, 515, 665, 2022, 2022, 2022, 665, 522, 522,
1830   522, 2022, 2022, 2022, 522, 669, 2022, 2022, 2022, 669,
1831
1832   526, 526, 526, 2022, 2022, 2022, 526, 675, 2022, 2022,
1833   2022, 675, 534, 534, 534, 2022, 2022, 2022, 534, 679,
1834   2022, 2022, 2022, 679, 681, 681, 681, 681, 681, 681,
1835   681, 681, 681, 687, 2022, 2022, 2022, 2022, 687, 404,
1836   404, 404, 2022, 2022, 2022, 404, 697, 697, 697, 697,
1837   2022, 2022, 697, 697, 431, 431, 431, 2022, 2022, 2022,
1838   431, 727, 727, 727, 727, 2022, 2022, 727, 727, 435,
1839   435, 435, 2022, 2022, 2022, 435, 737, 737, 737, 737,
1840   2022, 2022, 737, 737, 443, 443, 443, 2022, 2022, 2022,
1841   443, 751, 751, 751, 751, 2022, 2022, 751, 751, 453,
1842
1843   453, 453, 2022, 2022, 2022, 453, 759, 759, 759, 759,
1844   2022, 2022, 759, 759, 459, 459, 459, 2022, 2022, 2022,
1845   459, 769, 769, 769, 769, 2022, 2022, 769, 769, 466,
1846   466, 466, 2022, 2022, 2022, 466, 774, 774, 774, 774,
1847   2022, 2022, 774, 774, 470, 470, 470, 2022, 2022, 2022,
1848   470, 786, 786, 786, 786, 2022, 2022, 786, 786, 479,
1849   479, 479, 2022, 2022, 2022, 479, 794, 794, 794, 794,
1850   2022, 2022, 794, 794, 484, 484, 484, 2022, 2022, 2022,
1851   484, 812, 812, 812, 812, 2022, 2022, 812, 812, 819,
1852   819, 819, 819, 2022, 2022, 819, 819, 499, 499, 499,
1853
1854   2022, 2022, 2022, 499, 830, 830, 830, 830, 2022, 2022,
1855   830, 830, 507, 507, 507, 2022, 2022, 2022, 507, 841,
1856   841, 841, 841, 2022, 2022, 841, 841, 515, 515, 515,
1857   2022, 2022, 2022, 515, 851, 851, 851, 851, 2022, 2022,
1858   851, 851, 858, 858, 858, 858, 2022, 2022, 858, 858,
1859   526, 526, 526, 2022, 2022, 2022, 526, 866, 866, 866,
1860   866, 2022, 2022, 866, 866, 534, 534, 534, 2022, 2022,
1861   2022, 534, 872, 872, 872, 872, 2022, 2022, 872, 872,
1862   681, 681, 681, 681, 681, 681, 681, 681, 681, 687,
1863   2022, 687, 2022, 2022, 687, 404, 404, 404, 2022, 2022,
1864
1865   2022, 404, 697, 697, 697, 697, 2022, 2022, 697, 697,
1866   431, 431, 431, 431, 2022, 431, 2022, 431, 727, 727,
1867   727, 727, 2022, 2022, 727, 727, 435, 435, 435, 435,
1868   2022, 435, 2022, 435, 737, 737, 737, 737, 2022, 2022,
1869   737, 737, 443, 443, 443, 2022, 2022, 2022, 443, 751,
1870   751, 751, 751, 2022, 2022, 751, 751, 453, 453, 453,
1871   2022, 2022, 2022, 453, 759, 759, 759, 759, 2022, 2022,
1872   759, 759, 459, 459, 459, 2022, 2022, 2022, 459, 769,
1873   769, 769, 769, 2022, 2022, 769, 769, 466, 466, 466,
1874   2022, 2022, 2022, 466, 774, 774, 774, 774, 2022, 2022,
1875
1876   774, 774, 470, 470, 470, 2022, 2022, 2022, 470, 786,
1877   786, 786, 786, 2022, 2022, 786, 786, 479, 479, 479,
1878   2022, 2022, 2022, 479, 794, 794, 794, 794, 2022, 2022,
1879   794, 794, 484, 484, 484, 2022, 2022, 2022, 484, 812,
1880   812, 812, 812, 2022, 2022, 812, 812, 819, 819, 819,
1881   819, 2022, 2022, 819, 819, 499, 499, 499, 2022, 2022,
1882   2022, 499, 830, 830, 830, 830, 2022, 2022, 830, 830,
1883   507, 507, 507, 2022, 2022, 2022, 507, 841, 841, 841,
1884   841, 2022, 2022, 841, 841, 515, 515, 515, 2022, 2022,
1885   2022, 515, 851, 851, 851, 851, 2022, 2022, 851, 851,
1886
1887   858, 858, 858, 858, 2022, 2022, 858, 858, 526, 526,
1888   526, 2022, 2022, 2022, 526, 866, 866, 866, 866, 2022,
1889   2022, 866, 866, 534, 534, 534, 2022, 2022, 2022, 534,
1890   872, 872, 872, 872, 2022, 2022, 872, 872, 681, 681,
1891   681, 681, 681, 681, 681, 681, 681, 996, 996, 996,
1892   996, 996, 996, 996, 996, 996, 404, 404, 404, 2022,
1893   2022, 2022, 404, 697, 697, 697, 697, 2022, 2022, 697,
1894   697, 727, 727, 727, 727, 2022, 2022, 727, 727, 435,
1895   435, 435, 2022, 2022, 2022, 435, 737, 737, 737, 737,
1896   2022, 2022, 737, 737, 443, 443, 443, 2022, 2022, 2022,
1897
1898   443, 751, 751, 751, 751, 2022, 2022, 751, 751, 453,
1899   453, 453, 2022, 2022, 2022, 453, 759, 759, 759, 759,
1900   2022, 2022, 759, 759, 459, 459, 459, 2022, 2022, 2022,
1901   459, 769, 769, 769, 769, 2022, 2022, 769, 769, 466,
1902   466, 466, 2022, 2022, 2022, 466, 774, 774, 774, 774,
1903   2022, 2022, 774, 774, 470, 470, 470, 2022, 2022, 2022,
1904   470, 786, 786, 786, 786, 2022, 2022, 786, 786, 479,
1905   479, 479, 479, 2022, 479, 2022, 479, 794, 794, 794,
1906   794, 2022, 2022, 794, 794, 484, 484, 484, 484, 2022,
1907   484, 2022, 484, 812, 812, 812, 812, 2022, 2022, 812,
1908
1909   812, 819, 819, 819, 819, 2022, 2022, 819, 819, 499,
1910   499, 499, 2022, 2022, 2022, 499, 830, 830, 830, 830,
1911   2022, 2022, 830, 830, 507, 507, 507, 2022, 2022, 2022,
1912   507, 841, 841, 841, 841, 2022, 2022, 841, 841, 515,
1913   515, 515, 2022, 2022, 2022, 515, 851, 851, 851, 851,
1914   2022, 2022, 851, 851, 858, 858, 858, 858, 2022, 2022,
1915   858, 858, 526, 526, 526, 2022, 2022, 2022, 526, 866,
1916   866, 866, 866, 2022, 2022, 866, 866, 534, 534, 534,
1917   534, 2022, 534, 2022, 534, 872, 872, 872, 872, 2022,
1918   2022, 872, 872, 681, 681, 681, 681, 681, 681, 681,
1919
1920   681, 681, 996, 996, 996, 996, 996, 996, 996, 996,
1921   996, 404, 404, 404, 2022, 2022, 2022, 404, 697, 697,
1922   697, 697, 2022, 2022, 697, 697, 727, 727, 727, 727,
1923   2022, 2022, 727, 727, 435, 435, 435, 2022, 2022, 2022,
1924   435, 737, 737, 737, 737, 2022, 2022, 737, 737, 443,
1925   443, 443, 2022, 2022, 2022, 443, 751, 751, 751, 751,
1926   2022, 2022, 751, 751, 453, 453, 453, 2022, 2022, 2022,
1927   453, 759, 759, 759, 759, 2022, 2022, 759, 759, 459,
1928   459, 459, 459, 2022, 459, 2022, 459, 466, 466, 466,
1929   466, 2022, 466, 2022, 466, 774, 774, 774, 774, 2022,
1930
1931   2022, 774, 774, 470, 470, 470, 2022, 2022, 2022, 470,
1932   786, 786, 786, 786, 2022, 2022, 786, 786, 794, 794,
1933   794, 794, 2022, 2022, 794, 794, 484, 484, 484, 484,
1934   2022, 484, 2022, 484, 812, 812, 812, 812, 2022, 2022,
1935   812, 812, 819, 819, 819, 819, 2022, 2022, 819, 819,
1936   499, 499, 499, 2022, 2022, 2022, 499, 830, 830, 830,
1937   830, 2022, 2022, 830, 830, 507, 507, 507, 507, 2022,
1938   507, 2022, 507, 841, 841, 841, 841, 2022, 2022, 841,
1939   841, 515, 515, 515, 515, 2022, 515, 2022, 515, 851,
1940   851, 851, 851, 2022, 2022, 851, 851, 858, 858, 858,
1941
1942   858, 2022, 2022, 858, 858, 526, 526, 526, 2022, 2022,
1943   2022, 526, 866, 866, 866, 866, 2022, 2022, 866, 866,
1944   872, 872, 872, 872, 2022, 2022, 872, 872, 681, 681,
1945   681, 681, 681, 681, 681, 681, 681, 996, 996, 996,
1946   996, 996, 996, 996, 996, 996, 404, 404, 404, 404,
1947   2022, 404, 2022, 404, 697, 697, 697, 697, 2022, 2022,
1948   697, 697, 727, 727, 727, 727, 2022, 2022, 727, 727,
1949   435, 435, 435, 2022, 2022, 2022, 435, 737, 737, 737,
1950   737, 2022, 2022, 737, 737, 443, 443, 443, 2022, 2022,
1951   2022, 443, 751, 751, 751, 751, 2022, 2022, 751, 751,
1952
1953   453, 453, 453, 453, 2022, 453, 2022, 453, 759, 759,
1954   759, 759, 2022, 2022, 759, 759, 459, 459, 459, 459,
1955   2022, 459, 2022, 459, 774, 774, 774, 774, 2022, 2022,
1956   774, 774, 470, 470, 470, 2022, 2022, 2022, 470, 1817,
1957   1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1818, 1818,
1958   1818, 1818, 1818, 1818, 1818, 1818, 1818, 1856, 1856, 1856,
1959   1856, 1856, 1856, 1856, 1856, 1856, 1859, 1859, 1859, 1859,
1960   1859, 1859, 1859, 1859, 1859, 1887, 1887, 1887, 1887, 1887,
1961   1887, 1887, 1887, 1887, 1889, 1889, 1889, 1889, 1889, 1889,
1962   1889, 1889, 1889, 143, 2022, 2022, 2022, 2022, 2022, 2022,
1963
1964   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1965   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1966   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1967   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1968   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1969   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1970   2022, 2022, 2022
1971 };
1972
1973 static yyconst flex_int16_t yy_chk[7164] = { 0,
1974   0, 3, 3, 3, 4, 4, 4, 5, 5, 5,
1975   6, 6, 6, 7, 7, 7, 11, 3, 9, 12,
1976   4, 10, 219, 5, 0, 9, 6, 0, 10, 7,
1977   8, 8, 8, 148, 11, 13, 13, 12, 14, 14,
1978   13, 13, 220, 14, 14, 149, 8, 17, 17, 148,
1979   13, 15, 15, 14, 15, 152, 15, 16, 16, 414,
1980   16, 149, 16, 18, 18, 414, 15, 19, 19, 19,
1981   219, 152, 16, 20, 20, 20, 23, 23, 23, 24,
1982   24, 24, 266, 19, 25, 25, 25, 332, 17, 20,
1983   220, 266, 23, 425, 332, 24, 146, 146, 146, 425,
1984
1985   25, 147, 147, 147, 18, 21, 21, 21, 21, 21,
1986   21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1987   1412, 21, 21, 21, 21, 21, 26, 26, 26, 27,
1988   27, 27, 319, 28, 28, 28, 29, 29, 29, 30,
1989   30, 30, 26, 319, 451, 27, 175, 21, 21, 28,
1990   451, 294, 29, 190, 294, 30, 151, 151, 151, 172,
1991   172, 172, 175, 180, 180, 180, 187, 187, 187, 190,
1992   21, 183, 21, 22, 22, 22, 22, 22, 22, 22,
1993   22, 22, 22, 22, 22, 22, 22, 22, 272, 22,
1994   22, 22, 22, 22, 31, 31, 31, 32, 32, 32,
1995
1996   995, 33, 33, 33, 34, 34, 34, 35, 35, 35,
1997   31, 415, 200, 32, 170, 22, 22, 33, 211, 183,
1998   34, 183, 995, 35, 415, 36, 36, 36, 200, 185,
1999   170, 194, 194, 194, 211, 185, 272, 185, 22, 185,
2000   22, 36, 37, 37, 37, 37, 37, 37, 37, 37,
2001   37, 37, 37, 37, 37, 37, 37, 291, 37, 37,
2002   37, 37, 37, 39, 39, 39, 40, 40, 40, 170,
2003   47, 47, 47, 43, 43, 44, 44, 291, 43, 39,
2004   44, 1152, 40, 215, 37, 37, 47, 215, 43, 1152,
2005   44, 215, 37, 38, 38, 38, 38, 38, 38, 38,
2006
2007   38, 38, 38, 38, 38, 38, 38, 38, 707, 38,
2008   38, 38, 38, 38, 43, 333, 44, 48, 48, 48,
2009   707, 49, 49, 49, 50, 50, 50, 197, 197, 197,
2010   208, 208, 208, 48, 684, 38, 38, 49, 684, 397,
2011   50, 336, 397, 38, 41, 41, 41, 41, 41, 41,
2012   41, 41, 41, 41, 41, 41, 41, 41, 41, 333,
2013   41, 41, 41, 41, 41, 51, 51, 51, 52, 52,
2014   52, 322, 53, 53, 53, 54, 54, 54, 218, 218,
2015   218, 51, 195, 205, 52, 336, 41, 41, 53, 195,
2016   205, 54, 1319, 1319, 41, 1320, 1320, 41, 195, 205,
2017
2018   223, 223, 223, 41, 42, 42, 42, 42, 42, 42,
2019   42, 42, 42, 42, 42, 42, 42, 42, 42, 322,
2020   42, 42, 42, 42, 42, 57, 57, 57, 58, 58,
2021   58, 720, 61, 61, 61, 62, 62, 62, 388, 226,
2022   238, 57, 1156, 720, 58, 233, 42, 42, 61, 422,
2023   1156, 62, 233, 388, 42, 226, 238, 42, 232, 232,
2024   232, 233, 422, 42, 45, 45, 45, 45, 45, 45,
2025   45, 45, 45, 45, 45, 45, 45, 45, 45, 754,
2026   45, 45, 45, 45, 45, 65, 65, 65, 66, 66,
2027   66, 754, 67, 67, 67, 68, 68, 68, 69, 69,
2028
2029   69, 65, 246, 251, 66, 1414, 45, 45, 67, 246,
2030   350, 68, 426, 1419, 69, 45, 1421, 45, 246, 251,
2031   45, 235, 235, 235, 254, 426, 45, 46, 46, 46,
2032   46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
2033   46, 46, 439, 46, 46, 46, 46, 46, 70, 70,
2034   70, 73, 73, 73, 350, 74, 74, 74, 75, 75,
2035   75, 76, 76, 76, 70, 254, 263, 73, 254, 46,
2036   46, 74, 278, 1004, 75, 439, 1428, 76, 46, 1004,
2037   46, 1442, 263, 46, 245, 245, 245, 1112, 278, 46,
2038   55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
2039
2040   55, 55, 55, 55, 55, 1443, 55, 55, 55, 55,
2041   55, 77, 77, 77, 78, 78, 78, 1112, 79, 79,
2042   79, 80, 80, 80, 83, 83, 83, 77, 1444, 630,
2043   78, 1111, 55, 55, 79, 289, 304, 80, 630, 55,
2044   83, 248, 248, 248, 55, 257, 257, 257, 260, 260,
2045   260, 289, 304, 55, 56, 56, 56, 56, 56, 56,
2046   56, 56, 56, 56, 56, 56, 56, 56, 56, 1111,
2047   56, 56, 56, 56, 56, 84, 84, 84, 87, 87,
2048   87, 1445, 88, 88, 88, 91, 91, 91, 92, 92,
2049   92, 84, 1325, 1325, 87, 1294, 56, 56, 88, 314,
2050
2051   328, 91, 1294, 56, 92, 271, 271, 271, 56, 275,
2052   275, 275, 283, 283, 283, 314, 328, 56, 59, 59,
2053   59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2054   59, 59, 59, 1448, 59, 59, 59, 59, 59, 95,
2055   95, 95, 96, 96, 96, 875, 97, 97, 97, 98,
2056   98, 98, 99, 99, 99, 95, 284, 428, 96, 1451,
2057   59, 59, 97, 284, 875, 98, 1232, 1433, 99, 1295,
2058   428, 59, 284, 286, 286, 286, 1295, 59, 1452, 59,
2059   59, 60, 60, 60, 60, 60, 60, 60, 60, 60,
2060   60, 60, 60, 60, 60, 60, 1433, 60, 60, 60,
2061
2062   60, 60, 100, 100, 100, 101, 101, 101, 1232, 102,
2063   102, 102, 105, 105, 105, 106, 106, 106, 100, 1326,
2064   1326, 101, 299, 60, 60, 102, 539, 1230, 105, 299,
2065   1453, 106, 1315, 1230, 60, 298, 298, 298, 299, 1315,
2066   60, 539, 60, 60, 63, 63, 63, 63, 63, 63,
2067   63, 63, 63, 63, 63, 63, 63, 63, 63, 1434,
2068   63, 63, 63, 63, 63, 107, 107, 107, 108, 108,
2069   108, 1454, 109, 109, 109, 110, 110, 110, 111, 111,
2070   111, 107, 1455, 1316, 108, 309, 63, 63, 109, 342,
2071   1316, 110, 309, 1434, 111, 301, 301, 301, 308, 308,
2072
2073   308, 309, 311, 311, 311, 342, 63, 64, 64, 64,
2074   64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
2075   64, 64, 1456, 64, 64, 64, 64, 64, 112, 112,
2076   112, 115, 115, 115, 1457, 116, 116, 116, 117, 117,
2077   117, 118, 118, 118, 112, 1458, 1338, 115, 1459, 64,
2078   64, 116, 356, 1413, 117, 1413, 1460, 118, 321, 321,
2079   321, 325, 325, 325, 335, 335, 335, 1461, 356, 64,
2080   71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
2081   71, 71, 71, 71, 71, 1338, 71, 71, 71, 71,
2082   71, 119, 119, 119, 120, 120, 120, 1465, 121, 121,
2083
2084   121, 122, 122, 122, 125, 125, 125, 119, 366, 361,
2085   120, 381, 71, 71, 121, 71, 361, 122, 1466, 1415,
2086   125, 1415, 1467, 71, 366, 361, 71, 381, 1339, 71,
2087   1468, 1470, 71, 72, 72, 72, 72, 72, 72, 72,
2088   72, 72, 72, 72, 72, 72, 72, 72, 1477, 72,
2089   72, 72, 72, 72, 126, 126, 126, 129, 129, 129,
2090   1478, 130, 130, 130, 131, 131, 131, 132, 132, 132,
2091   126, 1339, 386, 129, 1479, 72, 72, 130, 72, 386,
2092   131, 1050, 1420, 132, 1420, 1480, 72, 1050, 386, 72,
2093   1050, 1422, 72, 1422, 1050, 72, 81, 81, 81, 81,
2094
2095   81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
2096   81, 374, 81, 81, 81, 81, 81, 133, 133, 133,
2097   134, 134, 134, 1482, 135, 135, 135, 136, 136, 136,
2098   139, 139, 139, 133, 1485, 1051, 134, 1486, 81, 81,
2099   135, 1051, 1487, 136, 1051, 374, 139, 162, 1051, 81,
2100   339, 339, 339, 349, 349, 349, 353, 353, 353, 374,
2101   1488, 81, 82, 82, 82, 82, 82, 82, 82, 82,
2102   82, 82, 82, 82, 82, 82, 82, 1489, 82, 82,
2103   82, 82, 82, 140, 140, 140, 162, 360, 360, 360,
2104   1490, 1495, 162, 363, 363, 363, 162, 1496, 1497, 140,
2105
2106   1498, 162, 1499, 1500, 82, 82, 373, 373, 373, 378,
2107   378, 378, 385, 385, 385, 82, 387, 387, 387, 542,
2108   542, 542, 1521, 542, 710, 710, 710, 82, 85, 85,
2109   85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
2110   85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
2111   85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
2112   85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
2113   85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
2114   85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
2115   85, 85, 85, 85, 85, 85, 85, 89, 89, 89,
2116
2117   89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
2118   89, 89, 1513, 89, 89, 89, 89, 89, 396, 396,
2119   396, 437, 437, 437, 445, 445, 445, 460, 460, 460,
2120   472, 472, 472, 718, 718, 718, 1522, 1523, 437, 89,
2121   89, 445, 1524, 1529, 460, 1530, 1531, 472, 1513, 1231,
2122   89, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2123   90, 90, 90, 90, 90, 90, 1514, 90, 90, 90,
2124   90, 90, 1532, 396, 480, 480, 480, 1231, 486, 486,
2125   486, 487, 487, 487, 496, 496, 496, 888, 888, 888,
2126   1527, 480, 1533, 90, 90, 486, 1534, 1535, 487, 1536,
2127
2128   1514, 496, 1527, 1515, 90, 93, 93, 93, 93, 93,
2129   93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
2130   1537, 93, 93, 93, 93, 93, 501, 501, 501, 523,
2131   523, 523, 553, 553, 553, 554, 554, 554, 581, 581,
2132   581, 1110, 1515, 501, 1538, 1539, 523, 93, 93, 1541,
2133   553, 93, 1542, 554, 1543, 1551, 581, 1110, 93, 1552,
2134   93, 893, 893, 893, 896, 896, 896, 93, 94, 94,
2135   94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
2136   94, 94, 94, 1553, 94, 94, 94, 94, 94, 554,
2137   582, 582, 582, 1558, 1528, 584, 584, 584, 585, 585,
2138
2139   585, 1559, 585, 1560, 1561, 585, 1528, 1562, 582, 1563,
2140   94, 94, 584, 1568, 94, 593, 593, 593, 1569, 593,
2141   1570, 94, 593, 94, 900, 900, 900, 904, 904, 904,
2142   94, 103, 103, 103, 103, 103, 103, 103, 103, 103,
2143   103, 103, 103, 103, 103, 103, 582, 103, 103, 103,
2144   103, 103, 588, 588, 588, 1571, 1572, 589, 589, 589,
2145   592, 592, 592, 594, 594, 594, 596, 596, 596, 1573,
2146   588, 1586, 1594, 103, 103, 589, 103, 592, 1587, 103,
2147   594, 1565, 1566, 596, 607, 607, 607, 1596, 607, 1565,
2148   1566, 607, 1585, 103, 104, 104, 104, 104, 104, 104,
2149
2150   104, 104, 104, 104, 104, 104, 104, 104, 104, 1586,
2151   104, 104, 104, 104, 104, 1599, 1587, 589, 1585, 1600,
2152   598, 598, 598, 604, 604, 604, 1601, 1602, 599, 599,
2153   599, 605, 605, 605, 1603, 1604, 104, 104, 598, 104,
2154   1605, 604, 104, 618, 618, 618, 599, 618, 1606, 605,
2155   618, 930, 930, 930, 1607, 1609, 104, 113, 113, 113,
2156   113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
2157   113, 113, 599, 113, 113, 113, 113, 113, 606, 606,
2158   606, 1610, 1611, 611, 611, 611, 614, 614, 614, 1612,
2159   1616, 605, 617, 617, 617, 606, 612, 612, 612, 113,
2160
2161   113, 611, 113, 1617, 614, 113, 1009, 1009, 1009, 617,
2162   113, 626, 626, 626, 612, 626, 1621, 1623, 626, 113,
2163   114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
2164   114, 114, 114, 114, 114, 1627, 114, 114, 114, 114,
2165   114, 615, 615, 615, 612, 1628, 623, 623, 623, 624,
2166   624, 624, 625, 625, 625, 1629, 628, 628, 628, 615,
2167   1630, 1631, 114, 114, 623, 114, 1632, 624, 114, 625,
2168   1011, 1011, 1011, 114, 628, 1015, 1015, 1015, 1021, 1021,
2169   1021, 1633, 114, 123, 123, 123, 123, 123, 123, 123,
2170   123, 123, 123, 123, 123, 123, 123, 123, 615, 123,
2171
2172   123, 123, 123, 123, 1634, 1635, 624, 1636, 1638, 629,
2173   629, 629, 631, 631, 631, 632, 632, 632, 1639, 632,
2174   1640, 1641, 632, 1642, 1643, 123, 123, 629, 1656, 631,
2175   1022, 1022, 1022, 1047, 1047, 1047, 123, 124, 124, 124,
2176   124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
2177   124, 124, 1650, 124, 124, 124, 124, 124, 633, 633,
2178   633, 634, 634, 634, 1658, 634, 1662, 1663, 634, 629,
2179   635, 635, 635, 1664, 1665, 633, 1126, 1126, 1126, 124,
2180   124, 643, 643, 643, 1650, 643, 1667, 635, 643, 1668,
2181   124, 127, 127, 127, 127, 127, 127, 127, 127, 127,
2182
2183   127, 127, 127, 127, 127, 127, 1669, 127, 127, 127,
2184   127, 127, 640, 640, 640, 642, 642, 642, 644, 644,
2185   644, 641, 641, 641, 645, 645, 645, 647, 647, 647,
2186   640, 1670, 642, 127, 127, 1649, 644, 1671, 1672, 641,
2187   1673, 127, 645, 127, 647, 127, 1127, 1127, 1127, 1129,
2188   1129, 1129, 1674, 127, 128, 128, 128, 128, 128, 128,
2189   128, 128, 128, 128, 128, 128, 128, 128, 128, 1678,
2190   128, 128, 128, 128, 128, 641, 648, 648, 648, 1649,
2191   648, 645, 1680, 648, 652, 652, 652, 653, 653, 653,
2192   655, 655, 655, 656, 656, 656, 128, 128, 662, 662,
2193
2194   662, 1681, 652, 1684, 128, 653, 128, 655, 128, 1685,
2195   656, 1130, 1130, 1130, 1686, 662, 128, 137, 137, 137,
2196   137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
2197   137, 137, 1687, 137, 137, 137, 137, 137, 1688, 653,
2198   659, 659, 659, 1689, 664, 664, 664, 660, 660, 660,
2199   665, 665, 665, 666, 666, 666, 1679, 1679, 659, 137,
2200   137, 664, 667, 667, 667, 660, 1690, 1691, 665, 1692,
2201   1693, 666, 1694, 668, 668, 668, 1696, 668, 1697, 667,
2202   668, 1698, 137, 138, 138, 138, 138, 138, 138, 138,
2203   138, 138, 138, 138, 138, 138, 138, 138, 1699, 138,
2204
2205   138, 138, 138, 138, 660, 669, 669, 669, 1700, 1701,
2206   666, 670, 670, 670, 675, 675, 675, 676, 676, 676,
2207   679, 679, 679, 669, 1710, 138, 138, 1704, 1711, 670,
2208   1712, 1713, 675, 1716, 1717, 676, 1719, 1720, 679, 680,
2209   680, 680, 696, 696, 696, 725, 725, 725, 138, 181,
2210   697, 697, 697, 890, 890, 890, 181, 680, 1704, 1721,
2211   696, 1723, 725, 670, 1728, 181, 1729, 890, 697, 699,
2212   699, 699, 1730, 726, 726, 726, 1731, 676, 727, 727,
2213   727, 1737, 1738, 729, 729, 729, 1739, 699, 1740, 1741,
2214   181, 726, 181, 1742, 1744, 181, 727, 181, 181, 680,
2215
2216   181, 729, 1746, 1749, 181, 1750, 181, 181, 181, 182,
2217   730, 730, 730, 699, 1751, 1752, 182, 731, 731, 731,
2218   1753, 731, 1754, 1761, 731, 182, 1769, 730, 1770, 729,
2219   734, 734, 734, 736, 736, 736, 737, 737, 737, 1771,
2220   1772, 739, 739, 739, 744, 744, 744, 734, 1776, 1777,
2221   182, 736, 182, 1778, 737, 182, 1779, 182, 182, 739,
2222   182, 744, 1761, 1780, 182, 1781, 182, 182, 182, 741,
2223   741, 741, 1783, 741, 1784, 1785, 741, 745, 745, 745,
2224   1786, 745, 1791, 1792, 745, 739, 1793, 734, 746, 746,
2225   746, 747, 747, 747, 748, 748, 748, 1794, 748, 1795,
2226
2227   1796, 748, 750, 750, 750, 746, 1799, 1800, 747, 751,
2228   751, 751, 753, 753, 753, 756, 756, 756, 1801, 1802,
2229   750, 758, 758, 758, 759, 759, 759, 751, 1803, 1804,
2230   753, 1819, 756, 761, 761, 761, 762, 762, 762, 758,
2231   762, 1821, 759, 762, 768, 768, 768, 769, 769, 769,
2232   1824, 761, 771, 771, 771, 773, 773, 773, 774, 774,
2233   774, 1815, 768, 1816, 1813, 769, 1825, 1827, 753, 1828,
2234   771, 1831, 1832, 773, 1816, 1815, 774, 761, 776, 776,
2235   776, 778, 778, 778, 1833, 778, 1834, 1841, 778, 785,
2236   785, 785, 786, 786, 786, 1842, 776, 788, 788, 788,
2237
2238   1844, 789, 789, 789, 1845, 789, 1813, 785, 789, 1847,
2239   786, 793, 793, 793, 771, 788, 794, 794, 794, 796,
2240   796, 796, 1848, 799, 799, 799, 1850, 799, 1851, 793,
2241   799, 805, 805, 805, 794, 1858, 1839, 796, 776, 802,
2242   802, 802, 1855, 802, 1840, 1860, 802, 1839, 805, 806,
2243   806, 806, 1862, 806, 1863, 1840, 806, 1856, 788, 811,
2244   811, 811, 812, 812, 812, 814, 814, 814, 815, 815,
2245   815, 1856, 815, 1857, 1857, 815, 796, 811, 1872, 1855,
2246   812, 1873, 1874, 814, 818, 818, 818, 819, 819, 819,
2247   821, 821, 821, 823, 823, 823, 1859, 823, 1875, 1887,
2248
2249   823, 1888, 818, 1889, 1891, 819, 1892, 1859, 821, 829,
2250   829, 829, 830, 830, 830, 832, 832, 832, 834, 834,
2251   834, 1899, 835, 835, 835, 1902, 835, 829, 814, 835,
2252   830, 1903, 1904, 832, 1905, 834, 1909, 836, 836, 836,
2253   837, 837, 837, 1921, 837, 1925, 1926, 837, 840, 840,
2254   840, 1927, 1928, 821, 836, 841, 841, 841, 843, 843,
2255   843, 845, 845, 845, 1933, 1931, 840, 1934, 846, 846,
2256   846, 832, 846, 841, 1935, 846, 843, 1936, 845, 848,
2257   848, 848, 849, 849, 849, 1937, 849, 1931, 1940, 849,
2258   850, 850, 850, 851, 851, 851, 848, 853, 853, 853,
2259
2260   854, 854, 854, 1941, 854, 1942, 1940, 854, 850, 1943,
2261   1944, 851, 857, 857, 857, 853, 858, 858, 858, 1945,
2262   1948, 843, 860, 860, 860, 862, 862, 862, 1950, 1951,
2263   857, 865, 865, 865, 858, 866, 866, 866, 1952, 1948,
2264   860, 1953, 862, 868, 868, 868, 871, 871, 871, 865,
2265   872, 872, 872, 866, 874, 874, 874, 876, 876, 876,
2266   853, 868, 1959, 1961, 871, 884, 884, 884, 872, 911,
2267   911, 911, 874, 1411, 1979, 876, 876, 1983, 860, 901,
2268   901, 901, 1980, 884, 1956, 1965, 911, 912, 912, 912,
2269   1956, 912, 1991, 901, 912, 913, 913, 913, 1965, 1987,
2270
2271   868, 914, 914, 914, 874, 915, 915, 915, 2013, 915,
2272   1984, 1983, 915, 913, 918, 918, 918, 1979, 914, 920,
2273   920, 920, 1997, 920, 1991, 1980, 920, 884, 923, 923,
2274   923, 1410, 918, 924, 924, 924, 1987, 924, 1992, 1409,
2275   924, 929, 929, 929, 1984, 923, 925, 925, 925, 913,
2276   925, 1408, 2013, 925, 932, 932, 932, 1988, 1998, 929,
2277   918, 933, 933, 933, 1997, 933, 2007, 2014, 933, 2008,
2278   1992, 932, 934, 934, 934, 935, 935, 935, 939, 939,
2279   939, 941, 941, 941, 945, 945, 945, 1407, 929, 934,
2280   946, 946, 946, 935, 1988, 2007, 939, 2005, 2008, 941,
2281
2282   1998, 945, 947, 947, 947, 2017, 2006, 946, 948, 948,
2283   948, 2014, 949, 949, 949, 950, 950, 950, 2011, 2017,
2284   947, 935, 951, 951, 951, 948, 955, 955, 955, 941,
2285   949, 2005, 950, 946, 952, 952, 952, 2012, 952, 951,
2286   2006, 952, 1406, 955, 956, 956, 956, 2011, 957, 957,
2287   957, 958, 958, 958, 959, 959, 959, 960, 960, 960,
2288   2009, 956, 2010, 1405, 947, 957, 2012, 1394, 958, 2009,
2289   949, 2010, 959, 1393, 2015, 960, 1392, 964, 964, 964,
2290   965, 965, 965, 1391, 951, 2016, 967, 967, 967, 2018,
2291   967, 1390, 957, 967, 964, 970, 970, 970, 965, 970,
2292
2293   2018, 1389, 970, 2015, 974, 974, 974, 975, 975, 975,
2294   956, 987, 987, 987, 2016, 959, 1388, 958, 974, 960,
2295   964, 1387, 977, 977, 977, 975, 977, 1381, 987, 977,
2296   981, 981, 981, 965, 981, 1380, 1379, 981, 984, 984,
2297   984, 985, 985, 985, 988, 988, 988, 1378, 988, 1377,
2298   1376, 988, 991, 991, 991, 1375, 984, 1374, 1373, 985,
2299   993, 993, 993, 994, 994, 994, 997, 997, 997, 975,
2300   991, 1005, 1005, 1005, 1017, 1017, 1017, 993, 1018, 1018,
2301   1018, 994, 1372, 1366, 997, 1024, 1024, 1024, 1017, 1005,
2302   1363, 1361, 1018, 1359, 985, 1025, 1025, 1025, 991, 1024,
2303
2304   984, 1027, 1027, 1027, 1029, 1029, 1029, 1355, 1354, 1025,
2305   1030, 1030, 1030, 1335, 997, 1027, 1333, 1332, 1029, 1322,
2306   1005, 1031, 1031, 1031, 1030, 1031, 994, 1317, 1031, 1314,
2307   997, 1034, 1034, 1034, 1017, 1035, 1035, 1035, 1313, 1035,
2308   1310, 1296, 1035, 1293, 1292, 1024, 1052, 1052, 1052, 1034,
2309   1040, 1040, 1040, 1042, 1042, 1042, 1291, 1042, 1277, 1276,
2310   1042, 1027, 1275, 1052, 1029, 1046, 1046, 1046, 1040, 1049,
2311   1049, 1049, 1274, 1049, 1273, 1272, 1049, 1053, 1053, 1053,
2312   1271, 1053, 1270, 1046, 1053, 1054, 1054, 1054, 1055, 1055,
2313   1055, 1056, 1056, 1056, 1034, 1057, 1057, 1057, 1040, 1058,
2314
2315   1058, 1058, 1269, 1054, 1268, 1055, 1264, 1263, 1056, 1060,
2316   1060, 1060, 1057, 1061, 1061, 1061, 1260, 1058, 1065, 1065,
2317   1065, 1259, 1046, 1066, 1066, 1066, 1060, 1066, 1257, 1255,
2318   1066, 1061, 1249, 1054, 1247, 1065, 1067, 1067, 1067, 1068,
2319   1068, 1068, 1244, 1068, 1243, 1056, 1068, 1070, 1070, 1070,
2320   1071, 1071, 1071, 1067, 1072, 1072, 1072, 1061, 1072, 1239,
2321   1233, 1072, 1073, 1073, 1073, 1070, 1225, 1071, 1074, 1074,
2322   1074, 1075, 1075, 1075, 1223, 1075, 1222, 1221, 1075, 1214,
2323   1073, 1076, 1076, 1076, 1208, 1074, 1077, 1077, 1077, 1078,
2324   1078, 1078, 1207, 1078, 1206, 1204, 1078, 1202, 1076, 1079,
2325
2326   1079, 1079, 1179, 1077, 1080, 1080, 1080, 1081, 1081, 1081,
2327   1082, 1082, 1082, 1083, 1083, 1083, 1079, 1087, 1087, 1087,
2328   1178, 1080, 1177, 1172, 1081, 1088, 1088, 1088, 1082, 1088,
2329   1171, 1083, 1088, 1170, 1087, 1090, 1090, 1090, 1091, 1091,
2330   1091, 1157, 1092, 1092, 1092, 1094, 1094, 1094, 1095, 1095,
2331   1095, 1155, 1154, 1090, 1153, 1091, 1151, 1150, 1080, 1092,
2332   1147, 1083, 1146, 1094, 1144, 1095, 1096, 1096, 1096, 1097,
2333   1097, 1097, 1082, 1143, 1098, 1098, 1098, 1100, 1100, 1100,
2334   1141, 1100, 1140, 1096, 1100, 1139, 1137, 1097, 1098, 1105,
2335   1105, 1105, 1098, 1094, 1107, 1107, 1107, 1108, 1108, 1108,
2336
2337   1133, 1108, 1092, 1132, 1108, 1131, 1128, 1105, 1125, 1096,
2338   1124, 1107, 1109, 1109, 1109, 1123, 1122, 1097, 1115, 1115,
2339   1115, 1116, 1116, 1116, 1117, 1117, 1117, 1118, 1118, 1118,
2340   1109, 1134, 1134, 1134, 1121, 1115, 1120, 1105, 1116, 1119,
2341   1114, 1117, 1135, 1135, 1135, 1118, 1136, 1136, 1136, 1138,
2342   1138, 1138, 1142, 1142, 1142, 1106, 1145, 1145, 1145, 1148,
2343   1148, 1148, 1149, 1149, 1149, 1104, 1103, 1109, 1099, 1093,
2344   1142, 1089, 1086, 1116, 1145, 1085, 1084, 1148, 1069, 1149,
2345   1064, 1117, 1063, 1062, 1118, 1158, 1158, 1158, 1048, 1158,
2346   1045, 1041, 1158, 1161, 1161, 1161, 1162, 1162, 1162, 1142,
2347
2348   1039, 1163, 1163, 1163, 1038, 1163, 1028, 1161, 1163, 1026,
2349   1023, 1161, 1020, 1162, 1148, 1164, 1164, 1164, 1165, 1165,
2350   1165, 1166, 1166, 1166, 1019, 1166, 1016, 1014, 1166, 1167,
2351   1167, 1167, 1164, 1013, 1012, 1165, 1168, 1168, 1168, 1010,
2352   1168, 1008, 1007, 1168, 1006, 1003, 1167, 1169, 1169, 1169,
2353   1173, 1173, 1173, 1002, 1173, 999, 996, 1173, 992, 1176,
2354   1176, 1176, 990, 1176, 989, 1169, 1176, 1180, 1180, 1180,
2355   1182, 1182, 1182, 986, 1182, 980, 976, 1182, 1185, 1185,
2356   1185, 973, 1187, 1187, 1187, 1180, 1187, 966, 963, 1187,
2357   1190, 1190, 1190, 1169, 962, 961, 1185, 1191, 1191, 1191,
2358
2359   944, 1191, 943, 942, 1191, 940, 938, 1190, 1192, 1192,
2360   1192, 937, 1192, 936, 931, 1192, 1195, 1195, 1195, 1196,
2361   1196, 1196, 928, 1196, 919, 917, 1196, 1197, 1197, 1197,
2362   1198, 1198, 1198, 1195, 1199, 1199, 1199, 916, 1199, 910,
2363   909, 1199, 908, 907, 1197, 906, 905, 1198, 1200, 1200,
2364   1200, 1201, 1201, 1201, 1203, 1203, 1203, 1205, 1205, 1205,
2365   903, 1205, 902, 899, 1205, 898, 1200, 897, 895, 1201,
2366   894, 1203, 1209, 1209, 1209, 1211, 1211, 1211, 1212, 1212,
2367   1212, 892, 1212, 891, 889, 1212, 1213, 1213, 1213, 887,
2368   1209, 886, 1211, 1216, 1216, 1216, 1200, 1203, 1215, 1215,
2369
2370   1215, 885, 883, 1213, 1218, 1218, 1218, 1219, 1219, 1219,
2371   1216, 1201, 1215, 1217, 1217, 1217, 1215, 1217, 882, 881,
2372   1217, 1218, 1220, 1220, 1220, 1219, 1224, 1224, 1224, 1226,
2373   1226, 1226, 880, 1226, 879, 870, 1226, 869, 1213, 864,
2374   1220, 1229, 1229, 1229, 1224, 1234, 1234, 1234, 1235, 1235,
2375   1235, 863, 1235, 861, 847, 1235, 1236, 1236, 1236, 1229,
2376   844, 1218, 1234, 1237, 1237, 1237, 839, 838, 1220, 833,
2377   1238, 1238, 1238, 1236, 1240, 1240, 1240, 1241, 1241, 1241,
2378   1237, 1242, 1242, 1242, 1245, 1245, 1245, 1224, 1238, 1229,
2379   1246, 1246, 1246, 1248, 1248, 1248, 1250, 1250, 1250, 1251,
2380
2381   1251, 1251, 1252, 1252, 1252, 1253, 1253, 1253, 1254, 1254,
2382   1254, 828, 1236, 1256, 1256, 1256, 1258, 1258, 1258, 1261,
2383   1261, 1261, 1265, 1265, 1265, 827, 1237, 1266, 1266, 1266,
2384   1238, 1267, 1267, 1267, 1258, 1267, 826, 1261, 1267, 822,
2385   1265, 1278, 1278, 1278, 1266, 1279, 1279, 1279, 810, 1279,
2386   809, 808, 1279, 1282, 1282, 1282, 1283, 1283, 1283, 1278,
2387   1283, 807, 798, 1283, 1258, 1284, 1284, 1284, 797, 1284,
2388   1282, 792, 1284, 1287, 1287, 1287, 784, 1287, 783, 782,
2389   1287, 1290, 1290, 1290, 1297, 1297, 1297, 1278, 1297, 781,
2390   777, 1297, 772, 1300, 1300, 1300, 767, 1300, 766, 1290,
2391
2392   1300, 1303, 1303, 1303, 1304, 1304, 1304, 765, 1304, 757,
2393   755, 1304, 1305, 1305, 1305, 749, 1305, 740, 1303, 1305,
2394   1308, 1308, 1308, 1309, 1309, 1309, 1311, 1311, 1311, 1312,
2395   1312, 1312, 1290, 1312, 735, 724, 1312, 723, 1308, 722,
2396   721, 1309, 719, 1311, 1318, 1318, 1318, 717, 1318, 716,
2397   715, 1318, 1321, 1321, 1321, 1323, 1323, 1323, 1324, 1324,
2398   1324, 714, 1324, 713, 712, 1324, 1327, 1327, 1327, 1321,
2399   1328, 1328, 1328, 1323, 1330, 1330, 1330, 1331, 1331, 1331,
2400   1308, 711, 709, 1327, 1334, 1334, 1334, 708, 1328, 1337,
2401   1337, 1337, 1330, 706, 1331, 1336, 1336, 1336, 1321, 1340,
2402
2403   1340, 1340, 1334, 705, 1341, 1341, 1341, 1337, 1341, 704,
2404   1323, 1341, 703, 1336, 1344, 1344, 1344, 1345, 1345, 1345,
2405   702, 701, 1327, 1346, 1346, 1346, 1347, 1347, 1347, 700,
2406   695, 1344, 694, 693, 1345, 692, 1330, 1348, 1348, 1348,
2407   689, 1346, 1349, 1349, 1349, 1334, 1350, 1350, 1350, 688,
2408   687, 1336, 1351, 1351, 1351, 1352, 1352, 1352, 1353, 1353,
2409   1353, 1356, 1356, 1356, 1357, 1357, 1357, 1344, 1358, 1358,
2410   1358, 1360, 1360, 1360, 1362, 1362, 1362, 685, 1346, 1345,
2411   1365, 1365, 1365, 1367, 1367, 1367, 1369, 1369, 1369, 681,
2412   1369, 678, 1362, 1369, 1382, 1382, 1382, 1365, 1383, 1383,
2413
2414   1383, 1367, 1383, 677, 674, 1383, 1386, 1386, 1386, 1395,
2415   1395, 1395, 1382, 1395, 673, 672, 1395, 1398, 1398, 1398,
2416   1399, 1399, 1399, 671, 1386, 1401, 1401, 1401, 663, 1402,
2417   1402, 1402, 661, 1402, 658, 1398, 1402, 657, 1399, 1416,
2418   1416, 1416, 1401, 1417, 1417, 1417, 1418, 1418, 1418, 654,
2419   651, 1382, 1423, 1423, 1423, 650, 1416, 1424, 1424, 1424,
2420   1425, 1425, 1425, 649, 1418, 1427, 1427, 1427, 1401, 1423,
2421   646, 639, 1426, 1426, 1426, 1424, 1426, 1425, 638, 1426,
2422   637, 636, 1427, 1429, 1429, 1429, 1430, 1430, 1430, 1431,
2423   1431, 1431, 1432, 1432, 1432, 1423, 1435, 1435, 1435, 627,
2424
2425   622, 1429, 1436, 1436, 1436, 621, 620, 1431, 619, 1418,
2426   1432, 616, 613, 1424, 1437, 1437, 1437, 610, 609, 1436,
2427   1438, 1438, 1438, 1439, 1439, 1439, 1440, 1440, 1440, 608,
2428   603, 1437, 1441, 1441, 1441, 1446, 1446, 1446, 1438, 1449,
2429   1449, 1449, 1450, 1450, 1450, 602, 1450, 601, 600, 1450,
2430   1432, 1431, 597, 1446, 595, 591, 1449, 1462, 1462, 1462,
2431   587, 586, 1437, 1463, 1463, 1463, 1472, 1472, 1472, 1473,
2432   1473, 1473, 1475, 1475, 1475, 1462, 583, 580, 1476, 1476,
2433   1476, 1463, 1476, 1472, 579, 1476, 578, 1473, 577, 1475,
2434   1484, 1484, 1484, 1491, 1491, 1491, 1492, 1492, 1492, 576,
2435
2436   1492, 575, 574, 1492, 1493, 1493, 1493, 1484, 573, 572,
2437   1491, 571, 570, 1462, 1494, 1494, 1494, 1501, 1501, 1501,
2438   1502, 1502, 1502, 1503, 1503, 1503, 569, 1503, 568, 567,
2439   1503, 566, 1494, 565, 1501, 1506, 1506, 1506, 1502, 1507,
2440   1507, 1507, 564, 1507, 563, 562, 1507, 561, 1508, 1508,
2441   1508, 560, 1506, 1509, 1509, 1509, 1511, 1511, 1511, 1512,
2442   1512, 1512, 559, 558, 1501, 1508, 557, 556, 1494, 555,
2443   552, 1509, 1516, 1516, 1516, 551, 550, 1512, 1501, 1517,
2444   1517, 1517, 548, 1517, 547, 546, 1517, 545, 544, 1516,
2445   1518, 1518, 1518, 1519, 1519, 1519, 1525, 1525, 1525, 1526,
2446
2447   1526, 1526, 540, 1526, 538, 537, 1526, 1518, 1540, 1540,
2448   1540, 1519, 536, 1525, 1546, 1546, 1546, 1547, 1547, 1547,
2449   535, 1547, 532, 531, 1547, 530, 1540, 529, 1548, 1548,
2450   1548, 1546, 1548, 528, 527, 1548, 1556, 1556, 1556, 1557,
2451   1557, 1557, 524, 1557, 520, 519, 1557, 1564, 1564, 1564,
2452   518, 1564, 517, 1556, 1564, 1567, 1567, 1567, 1574, 1574,
2453   1574, 1575, 1575, 1575, 1540, 1576, 1576, 1576, 516, 513,
2454   1578, 1578, 1578, 1567, 1578, 1574, 512, 1578, 1575, 1581,
2455   1581, 1581, 511, 1576, 1582, 1582, 1582, 510, 1582, 509,
2456   508, 1582, 1583, 1583, 1583, 505, 1581, 1588, 1588, 1588,
2457
2458   504, 1588, 503, 502, 1588, 1591, 1591, 1591, 500, 497,
2459   1583, 1592, 1592, 1592, 493, 1592, 492, 1567, 1592, 1574,
2460   491, 1575, 1591, 1593, 1593, 1593, 1595, 1595, 1595, 1597,
2461   1597, 1597, 1598, 1598, 1598, 490, 1598, 489, 488, 1598,
2462   1614, 1614, 1614, 1615, 1615, 1615, 1597, 1618, 1618, 1618,
2463   485, 1618, 482, 481, 1618, 1622, 1622, 1622, 1614, 477,
2464   1615, 1624, 1624, 1624, 476, 1624, 475, 474, 1624, 1637,
2465   1637, 1637, 1622, 1644, 1644, 1644, 1645, 1645, 1645, 1655,
2466   1655, 1655, 1651, 1651, 1651, 473, 1615, 1637, 1614, 471,
2467   1644, 468, 467, 1645, 1646, 1646, 1646, 464, 1646, 1651,
2468
2469   1651, 1646, 1652, 1652, 1652, 463, 1652, 462, 461, 1652,
2470   1657, 1657, 1657, 1659, 1659, 1659, 457, 1659, 456, 455,
2471   1659, 1637, 1645, 1666, 1666, 1666, 1675, 1675, 1675, 1676,
2472   1676, 1676, 1677, 1677, 1677, 1644, 1677, 454, 450, 1677,
2473   1666, 1682, 1682, 1682, 1675, 449, 1676, 1683, 1683, 1683,
2474   448, 1683, 447, 446, 1683, 1695, 1695, 1695, 1682, 1702,
2475   1702, 1702, 1703, 1703, 1703, 1705, 1705, 1705, 1706, 1706,
2476   1706, 444, 1675, 1695, 441, 440, 1702, 438, 436, 1703,
2477   433, 432, 1705, 1705, 429, 1706, 1706, 427, 1707, 1707,
2478   1707, 424, 1707, 423, 421, 1707, 1708, 1708, 1708, 1709,
2479
2480   1709, 1709, 1702, 420, 419, 1703, 1707, 1714, 1714, 1714,
2481   1715, 1715, 1715, 418, 1715, 417, 416, 1715, 1724, 1724,
2482   1724, 1725, 1725, 1725, 1714, 1725, 413, 412, 1725, 1732,
2483   1732, 1732, 411, 1733, 1733, 1733, 1724, 1733, 410, 409,
2484   1733, 1736, 1736, 1736, 408, 407, 1732, 1747, 1747, 1747,
2485   1755, 1755, 1755, 1756, 1756, 1756, 406, 1756, 1736, 405,
2486   1756, 1757, 1757, 1757, 402, 1747, 401, 1755, 1758, 1758,
2487   1758, 400, 1759, 1759, 1759, 399, 1759, 398, 1757, 1759,
2488   1724, 1760, 1760, 1760, 392, 1758, 1762, 1762, 1762, 1763,
2489   1763, 1763, 391, 1763, 389, 383, 1763, 379, 1760, 1767,
2490
2491   1767, 1767, 376, 1762, 1762, 375, 371, 1763, 370, 1764,
2492   1764, 1764, 369, 1764, 368, 364, 1764, 1768, 1768, 1768,
2493   358, 1773, 1773, 1773, 354, 1773, 1757, 1764, 1773, 1788,
2494   1788, 1788, 351, 1788, 347, 346, 1788, 345, 1782, 1782,
2495   1782, 344, 1787, 1787, 1787, 340, 1760, 1765, 1765, 1765,
2496   1765, 1765, 1765, 1765, 1765, 1765, 1782, 337, 1765, 1787,
2497   1789, 1789, 1789, 1765, 1765, 1765, 1765, 1765, 1790, 1790,
2498   1790, 331, 1790, 330, 326, 1790, 323, 1789, 1805, 1805,
2499   1805, 318, 1805, 317, 316, 1805, 1808, 1808, 1808, 1765,
2500   1765, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766,
2501
2502   312, 306, 1766, 1808, 1812, 1812, 1812, 1766, 1766, 1766,
2503   1766, 1766, 1809, 1809, 1809, 302, 1809, 296, 295, 1809,
2504   293, 1812, 1814, 1814, 1814, 292, 1814, 287, 281, 1814,
2505   1829, 1829, 1829, 1766, 1766, 1835, 1835, 1835, 1808, 1835,
2506   1814, 280, 1835, 1838, 1838, 1838, 276, 1838, 1829, 273,
2507   1838, 269, 1853, 1853, 1853, 268, 1812, 1817, 1817, 1817,
2508   1817, 1817, 1817, 1817, 1817, 1817, 267, 265, 1817, 1853,
2509   1854, 1854, 1854, 1817, 1817, 1817, 1817, 1817, 1861, 1861,
2510   1861, 1868, 1868, 1868, 1894, 1894, 1894, 1854, 1894, 261,
2511   258, 1894, 255, 1869, 1869, 1869, 1861, 1861, 1868, 1817,
2512
2513   1817, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818,
2514   1869, 253, 1818, 249, 1853, 243, 242, 1818, 1818, 1818,
2515   1818, 1818, 1870, 1870, 1870, 1871, 1871, 1871, 1884, 1884,
2516   1884, 241, 1854, 1885, 1885, 1885, 1886, 1886, 1886, 1870,
2517   240, 236, 1871, 1818, 1818, 1884, 1890, 1890, 1890, 230,
2518   1885, 1893, 1893, 1893, 1886, 1895, 1895, 1895, 229, 1896,
2519   1896, 1896, 228, 1896, 1890, 1870, 1896, 224, 1893, 1897,
2520   1897, 1897, 1895, 1898, 1898, 1898, 221, 1898, 216, 1884,
2521   1898, 1900, 1900, 1900, 1885, 214, 1897, 213, 1901, 1901,
2522   1901, 209, 1901, 206, 1890, 1901, 204, 203, 1900, 1906,
2523
2524   1906, 1906, 1907, 1907, 1907, 1908, 1908, 1908, 1912, 1912,
2525   1912, 202, 1912, 198, 192, 1912, 1906, 188, 184, 1907,
2526   1915, 1915, 1915, 1908, 1915, 178, 177, 1915, 1918, 1918,
2527   1918, 173, 1918, 169, 168, 1918, 1922, 1922, 1922, 167,
2528   1922, 1908, 1906, 1922, 161, 1907, 1929, 1929, 1929, 1930,
2529   1930, 1930, 1938, 1938, 1938, 1939, 1939, 1939, 1946, 1946,
2530   1946, 160, 158, 1929, 155, 143, 1930, 0, 0, 1938,
2531   0, 0, 1939, 0, 0, 1946, 1947, 1947, 1947, 1949,
2532   1949, 1949, 1954, 1954, 1954, 1955, 1955, 1955, 1957, 1957,
2533   1957, 0, 0, 1947, 0, 0, 1949, 0, 0, 1954,
2534
2535   0, 0, 1955, 1929, 0, 1957, 1930, 0, 0, 1946,
2536   0, 1958, 1958, 1958, 1938, 1958, 0, 1939, 1958, 1963,
2537   1963, 1963, 1964, 1964, 1964, 0, 0, 1947, 0, 0,
2538   1954, 0, 0, 1955, 0, 0, 1963, 0, 0, 1964,
2539   1966, 1966, 1966, 0, 1966, 0, 0, 1966, 1971, 1971,
2540   1971, 1972, 1972, 1972, 1973, 1973, 1973, 1974, 1974, 1974,
2541   1975, 1975, 1975, 0, 0, 1971, 0, 0, 1972, 1976,
2542   1976, 1976, 1973, 1976, 1974, 0, 1976, 1975, 0, 1963,
2543   0, 0, 1964, 1977, 1977, 1977, 0, 1976, 1978, 1978,
2544   1978, 1971, 0, 0, 1972, 1981, 1981, 1981, 0, 0,
2545
2546   1977, 0, 1982, 1982, 1982, 1978, 1985, 1985, 1985, 1986,
2547   1986, 1986, 1981, 1989, 1989, 1989, 0, 0, 1974, 1982,
2548   1975, 0, 0, 1985, 0, 0, 1986, 1990, 1990, 1990,
2549   1989, 1977, 1993, 1993, 1993, 0, 1978, 0, 1994, 1994,
2550   1994, 0, 1994, 0, 1990, 1994, 0, 0, 1982, 1993,
2551   0, 1981, 0, 1985, 1995, 1995, 1995, 1996, 1996, 1996,
2552   0, 1996, 0, 0, 1996, 1999, 1999, 1999, 0, 1999,
2553   0, 1995, 1999, 1986, 2002, 2002, 2002, 0, 2002, 0,
2554   0, 2002, 2019, 2019, 2019, 2020, 2020, 2020, 0, 0,
2555   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2556
2557   2019, 0, 0, 2020, 2023, 2023, 2023, 2023, 2023, 2023,
2558   2023, 2023, 2023, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
2559   2024, 2024, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025,
2560   2025, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026,
2561   2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2028,
2562   2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2029, 2029,
2563   2029, 2029, 2029, 2029, 2029, 2029, 2029, 2030, 2030, 2030,
2564   2030, 2030, 2030, 2030, 2030, 2030, 2031, 2031, 2031, 2031,
2565   2031, 2031, 2031, 2031, 2031, 2032, 2032, 2032, 2032, 2032,
2566   2032, 2032, 2032, 2032, 2033, 2033, 2033, 2033, 2033, 2033,
2567
2568   2033, 2033, 2033, 2034, 2034, 2034, 2034, 2034, 2034, 2034,
2569   2034, 2034, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035,
2570   2035, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036,
2571   2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2038,
2572   2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2039, 2039,
2573   2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2040, 2040,
2574   2040, 2040, 2040, 2040, 2040, 2040, 2041, 2041, 2041, 2041,
2575   2041, 2041, 2041, 2041, 2041, 2042, 2042, 2042, 2042, 2042,
2576   2042, 2042, 2042, 2042, 2043, 2043, 2043, 2043, 2043, 2043,
2577   2043, 2043, 2043, 2044, 2044, 2044, 2044, 2044, 2044, 2044,
2578
2579   2044, 2044, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045,
2580   2045, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
2581   2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2048,
2582   2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2049, 2049,
2583   2049, 2049, 2049, 2049, 2049, 2049, 2049, 2050, 2050, 2050,
2584   2050, 2050, 2050, 2050, 2050, 2050, 2051, 2051, 2051, 2051,
2585   2051, 2051, 2051, 2051, 2051, 2052, 2052, 2052, 2052, 2052,
2586   2052, 2052, 2052, 2052, 2053, 2053, 2053, 2053, 2053, 2053,
2587   2053, 2053, 2053, 2054, 2054, 2054, 2054, 2054, 2054, 2054,
2588   2054, 2054, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055,
2589
2590   2055, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056,
2591   2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2058,
2592   2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2059, 2059,
2593   2059, 2059, 2059, 2059, 2059, 2059, 2059, 2060, 2060, 2060,
2594   2060, 2060, 2060, 2060, 2060, 2060, 2061, 2061, 2061, 2061,
2595   2061, 2061, 2061, 2061, 2061, 2062, 2062, 2062, 0, 0,
2596   0, 2062, 2063, 2063, 2063, 0, 0, 0, 2063, 2064,
2597   2064, 2064, 0, 0, 0, 2064, 2065, 2065, 2065, 0,
2598   0, 0, 2065, 2066, 2066, 2066, 0, 0, 0, 2066,
2599   2067, 2067, 2067, 0, 0, 0, 2067, 2068, 2068, 2068,
2600
2601   0, 0, 0, 2068, 2069, 2069, 2069, 0, 0, 0,
2602   2069, 2070, 2070, 2070, 0, 0, 0, 2070, 2071, 2071,
2603   2071, 0, 0, 0, 2071, 2072, 2072, 2072, 0, 0,
2604   0, 2072, 2073, 2073, 2073, 0, 0, 0, 2073, 2074,
2605   2074, 2074, 0, 0, 0, 2074, 2075, 2075, 2075, 0,
2606   0, 0, 2075, 2076, 2076, 2076, 0, 0, 0, 2076,
2607   2077, 2077, 2077, 0, 0, 0, 2077, 2078, 2078, 2078,
2608   0, 0, 0, 2078, 2079, 2079, 2079, 2079, 2079, 2079,
2609   2079, 0, 2079, 2080, 0, 0, 0, 2080, 2081, 0,
2610   0, 0, 2081, 2082, 0, 0, 0, 2082, 2083, 0,
2611
2612   0, 0, 2083, 2084, 0, 0, 0, 2084, 2085, 0,
2613   0, 0, 2085, 2086, 0, 0, 0, 2086, 2087, 0,
2614   0, 0, 2087, 2088, 0, 0, 0, 2088, 2089, 2089,
2615   2089, 0, 0, 0, 2089, 2090, 0, 0, 0, 2090,
2616   2091, 2091, 2091, 0, 0, 0, 2091, 2092, 0, 0,
2617   0, 2092, 2093, 2093, 2093, 0, 0, 0, 2093, 2094,
2618   0, 0, 0, 2094, 2095, 2095, 2095, 0, 0, 0,
2619   2095, 2096, 0, 0, 0, 2096, 2097, 2097, 2097, 0,
2620   0, 0, 2097, 2098, 0, 0, 0, 2098, 2099, 2099,
2621   2099, 0, 0, 0, 2099, 2100, 0, 0, 0, 2100,
2622
2623   2101, 2101, 2101, 0, 0, 0, 2101, 2102, 0, 0,
2624   0, 2102, 2103, 2103, 2103, 0, 0, 0, 2103, 2104,
2625   0, 0, 0, 2104, 2105, 2105, 2105, 2105, 2105, 2105,
2626   2105, 2105, 2105, 2106, 0, 0, 0, 0, 2106, 2107,
2627   2107, 2107, 0, 0, 0, 2107, 2108, 2108, 2108, 2108,
2628   0, 0, 2108, 2108, 2109, 2109, 2109, 0, 0, 0,
2629   2109, 2110, 2110, 2110, 2110, 0, 0, 2110, 2110, 2111,
2630   2111, 2111, 0, 0, 0, 2111, 2112, 2112, 2112, 2112,
2631   0, 0, 2112, 2112, 2113, 2113, 2113, 0, 0, 0,
2632   2113, 2114, 2114, 2114, 2114, 0, 0, 2114, 2114, 2115,
2633
2634   2115, 2115, 0, 0, 0, 2115, 2116, 2116, 2116, 2116,
2635   0, 0, 2116, 2116, 2117, 2117, 2117, 0, 0, 0,
2636   2117, 2118, 2118, 2118, 2118, 0, 0, 2118, 2118, 2119,
2637   2119, 2119, 0, 0, 0, 2119, 2120, 2120, 2120, 2120,
2638   0, 0, 2120, 2120, 2121, 2121, 2121, 0, 0, 0,
2639   2121, 2122, 2122, 2122, 2122, 0, 0, 2122, 2122, 2123,
2640   2123, 2123, 0, 0, 0, 2123, 2124, 2124, 2124, 2124,
2641   0, 0, 2124, 2124, 2125, 2125, 2125, 0, 0, 0,
2642   2125, 2126, 2126, 2126, 2126, 0, 0, 2126, 2126, 2127,
2643   2127, 2127, 2127, 0, 0, 2127, 2127, 2128, 2128, 2128,
2644
2645   0, 0, 0, 2128, 2129, 2129, 2129, 2129, 0, 0,
2646   2129, 2129, 2130, 2130, 2130, 0, 0, 0, 2130, 2131,
2647   2131, 2131, 2131, 0, 0, 2131, 2131, 2132, 2132, 2132,
2648   0, 0, 0, 2132, 2133, 2133, 2133, 2133, 0, 0,
2649   2133, 2133, 2134, 2134, 2134, 2134, 0, 0, 2134, 2134,
2650   2135, 2135, 2135, 0, 0, 0, 2135, 2136, 2136, 2136,
2651   2136, 0, 0, 2136, 2136, 2137, 2137, 2137, 0, 0,
2652   0, 2137, 2138, 2138, 2138, 2138, 0, 0, 2138, 2138,
2653   2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2140,
2654   0, 2140, 0, 0, 2140, 2141, 2141, 2141, 0, 0,
2655
2656   0, 2141, 2142, 2142, 2142, 2142, 0, 0, 2142, 2142,
2657   2143, 2143, 2143, 2143, 0, 2143, 0, 2143, 2144, 2144,
2658   2144, 2144, 0, 0, 2144, 2144, 2145, 2145, 2145, 2145,
2659   0, 2145, 0, 2145, 2146, 2146, 2146, 2146, 0, 0,
2660   2146, 2146, 2147, 2147, 2147, 0, 0, 0, 2147, 2148,
2661   2148, 2148, 2148, 0, 0, 2148, 2148, 2149, 2149, 2149,
2662   0, 0, 0, 2149, 2150, 2150, 2150, 2150, 0, 0,
2663   2150, 2150, 2151, 2151, 2151, 0, 0, 0, 2151, 2152,
2664   2152, 2152, 2152, 0, 0, 2152, 2152, 2153, 2153, 2153,
2665   0, 0, 0, 2153, 2154, 2154, 2154, 2154, 0, 0,
2666
2667   2154, 2154, 2155, 2155, 2155, 0, 0, 0, 2155, 2156,
2668   2156, 2156, 2156, 0, 0, 2156, 2156, 2157, 2157, 2157,
2669   0, 0, 0, 2157, 2158, 2158, 2158, 2158, 0, 0,
2670   2158, 2158, 2159, 2159, 2159, 0, 0, 0, 2159, 2160,
2671   2160, 2160, 2160, 0, 0, 2160, 2160, 2161, 2161, 2161,
2672   2161, 0, 0, 2161, 2161, 2162, 2162, 2162, 0, 0,
2673   0, 2162, 2163, 2163, 2163, 2163, 0, 0, 2163, 2163,
2674   2164, 2164, 2164, 0, 0, 0, 2164, 2165, 2165, 2165,
2675   2165, 0, 0, 2165, 2165, 2166, 2166, 2166, 0, 0,
2676   0, 2166, 2167, 2167, 2167, 2167, 0, 0, 2167, 2167,
2677
2678   2168, 2168, 2168, 2168, 0, 0, 2168, 2168, 2169, 2169,
2679   2169, 0, 0, 0, 2169, 2170, 2170, 2170, 2170, 0,
2680   0, 2170, 2170, 2171, 2171, 2171, 0, 0, 0, 2171,
2681   2172, 2172, 2172, 2172, 0, 0, 2172, 2172, 2173, 2173,
2682   2173, 2173, 2173, 2173, 2173, 2173, 2173, 2174, 2174, 2174,
2683   2174, 2174, 2174, 2174, 2174, 2174, 2175, 2175, 2175, 0,
2684   0, 0, 2175, 2176, 2176, 2176, 2176, 0, 0, 2176,
2685   2176, 2177, 2177, 2177, 2177, 0, 0, 2177, 2177, 2178,
2686   2178, 2178, 0, 0, 0, 2178, 2179, 2179, 2179, 2179,
2687   0, 0, 2179, 2179, 2180, 2180, 2180, 0, 0, 0,
2688
2689   2180, 2181, 2181, 2181, 2181, 0, 0, 2181, 2181, 2182,
2690   2182, 2182, 0, 0, 0, 2182, 2183, 2183, 2183, 2183,
2691   0, 0, 2183, 2183, 2184, 2184, 2184, 0, 0, 0,
2692   2184, 2185, 2185, 2185, 2185, 0, 0, 2185, 2185, 2186,
2693   2186, 2186, 0, 0, 0, 2186, 2187, 2187, 2187, 2187,
2694   0, 0, 2187, 2187, 2188, 2188, 2188, 0, 0, 0,
2695   2188, 2189, 2189, 2189, 2189, 0, 0, 2189, 2189, 2190,
2696   2190, 2190, 2190, 0, 2190, 0, 2190, 2191, 2191, 2191,
2697   2191, 0, 0, 2191, 2191, 2192, 2192, 2192, 2192, 0,
2698   2192, 0, 2192, 2193, 2193, 2193, 2193, 0, 0, 2193,
2699
2700   2193, 2194, 2194, 2194, 2194, 0, 0, 2194, 2194, 2195,
2701   2195, 2195, 0, 0, 0, 2195, 2196, 2196, 2196, 2196,
2702   0, 0, 2196, 2196, 2197, 2197, 2197, 0, 0, 0,
2703   2197, 2198, 2198, 2198, 2198, 0, 0, 2198, 2198, 2199,
2704   2199, 2199, 0, 0, 0, 2199, 2200, 2200, 2200, 2200,
2705   0, 0, 2200, 2200, 2201, 2201, 2201, 2201, 0, 0,
2706   2201, 2201, 2202, 2202, 2202, 0, 0, 0, 2202, 2203,
2707   2203, 2203, 2203, 0, 0, 2203, 2203, 2204, 2204, 2204,
2708   2204, 0, 2204, 0, 2204, 2205, 2205, 2205, 2205, 0,
2709   0, 2205, 2205, 2206, 2206, 2206, 2206, 2206, 2206, 2206,
2710
2711   2206, 2206, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207,
2712   2207, 2208, 2208, 2208, 0, 0, 0, 2208, 2209, 2209,
2713   2209, 2209, 0, 0, 2209, 2209, 2210, 2210, 2210, 2210,
2714   0, 0, 2210, 2210, 2211, 2211, 2211, 0, 0, 0,
2715   2211, 2212, 2212, 2212, 2212, 0, 0, 2212, 2212, 2213,
2716   2213, 2213, 0, 0, 0, 2213, 2214, 2214, 2214, 2214,
2717   0, 0, 2214, 2214, 2215, 2215, 2215, 0, 0, 0,
2718   2215, 2216, 2216, 2216, 2216, 0, 0, 2216, 2216, 2217,
2719   2217, 2217, 2217, 0, 2217, 0, 2217, 2218, 2218, 2218,
2720   2218, 0, 2218, 0, 2218, 2219, 2219, 2219, 2219, 0,
2721
2722   0, 2219, 2219, 2220, 2220, 2220, 0, 0, 0, 2220,
2723   2221, 2221, 2221, 2221, 0, 0, 2221, 2221, 2222, 2222,
2724   2222, 2222, 0, 0, 2222, 2222, 2223, 2223, 2223, 2223,
2725   0, 2223, 0, 2223, 2224, 2224, 2224, 2224, 0, 0,
2726   2224, 2224, 2225, 2225, 2225, 2225, 0, 0, 2225, 2225,
2727   2226, 2226, 2226, 0, 0, 0, 2226, 2227, 2227, 2227,
2728   2227, 0, 0, 2227, 2227, 2228, 2228, 2228, 2228, 0,
2729   2228, 0, 2228, 2229, 2229, 2229, 2229, 0, 0, 2229,
2730   2229, 2230, 2230, 2230, 2230, 0, 2230, 0, 2230, 2231,
2731   2231, 2231, 2231, 0, 0, 2231, 2231, 2232, 2232, 2232,
2732
2733   2232, 0, 0, 2232, 2232, 2233, 2233, 2233, 0, 0,
2734   0, 2233, 2234, 2234, 2234, 2234, 0, 0, 2234, 2234,
2735   2235, 2235, 2235, 2235, 0, 0, 2235, 2235, 2236, 2236,
2736   2236, 2236, 2236, 2236, 2236, 2236, 2236, 2237, 2237, 2237,
2737   2237, 2237, 2237, 2237, 2237, 2237, 2238, 2238, 2238, 2238,
2738   0, 2238, 0, 2238, 2239, 2239, 2239, 2239, 0, 0,
2739   2239, 2239, 2240, 2240, 2240, 2240, 0, 0, 2240, 2240,
2740   2241, 2241, 2241, 0, 0, 0, 2241, 2242, 2242, 2242,
2741   2242, 0, 0, 2242, 2242, 2243, 2243, 2243, 0, 0,
2742   0, 2243, 2244, 2244, 2244, 2244, 0, 0, 2244, 2244,
2743
2744   2245, 2245, 2245, 2245, 0, 2245, 0, 2245, 2246, 2246,
2745   2246, 2246, 0, 0, 2246, 2246, 2247, 2247, 2247, 2247,
2746   0, 2247, 0, 2247, 2248, 2248, 2248, 2248, 0, 0,
2747   2248, 2248, 2249, 2249, 2249, 0, 0, 0, 2249, 2250,
2748   2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2251, 2251,
2749   2251, 2251, 2251, 2251, 2251, 2251, 2251, 2252, 2252, 2252,
2750   2252, 2252, 2252, 2252, 2252, 2252, 2253, 2253, 2253, 2253,
2751   2253, 2253, 2253, 2253, 2253, 2254, 2254, 2254, 2254, 2254,
2752   2254, 2254, 2254, 2254, 2255, 2255, 2255, 2255, 2255, 2255,
2753   2255, 2255, 2255, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2754
2755   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2756   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2757   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2758   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2759   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2760   2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2761   2022, 2022, 2022
2762 };
2763
2764 /* Table of booleans, true if rule could match eol. */
2765 static yyconst flex_int32_t yy_rule_can_match_eol[352] = { 0,
2766   0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
2767   1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1,
2768   1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
2769   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1,
2770   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
2771   1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1,
2772   1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2773   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1,
2774   0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,
2775   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1,
2776   0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2777   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1,
2778   0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
2779   0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2780   1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1,
2781   1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1,
2782   1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
2783   1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
2784 };
2785
2786 static yy_state_type yy_last_accepting_state;
2787 static char *yy_last_accepting_cpos;
2788
2789 extern int surf_parse__flex_debug;
2790 int surf_parse__flex_debug = 0;
2791
2792 /* The intent behind this definition is that it'll catch
2793  * any uses of REJECT which flex missed.
2794  */
2795 #define REJECT reject_used_but_not_detected
2796 #define yymore() yymore_used_but_not_detected
2797 #define YY_MORE_ADJ 0
2798 #define YY_RESTORE_YY_MORE_OFFSET
2799 char *surf_parse_text;
2800 /* Validating XML processor for surf/simgrid.dtd.
2801  * Generated 2008/02/03 11:50:45.
2802  *
2803  * This program was generated with the FleXML XML processor generator.
2804  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
2805  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
2806  * (Id: flexml.pl,v 1.63 2007/10/11 14:46:08 mquinson Exp).
2807  * 
2808  * There are two, intertwined parts to this program, part A and part B.
2809  *
2810  * Part A
2811  * ------
2812  * 
2813  * Some parts, here collectively called "Part A", are found in the 
2814  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
2815  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
2816  *
2817  * You can redistribute, use, perform, display and/or modify "Part A"
2818  * provided the following two conditions hold:
2819  *
2820  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
2821  *    FleXML; without even the implied warranty of MERCHANTABILITY or
2822  *    FITNESS FOR A PARTICULAR PURPOSE.
2823  *
2824  * 2. The program distribution conditions do not in any way affect the
2825  *    distribution conditions of the FleXML system used to generate this
2826  *    file or any version of FleXML derived from that system.
2827  *
2828  * Notice that these are explicit rights granted to you for files
2829  * generated by the FleXML system.  For your rights in connection with
2830  * the FleXML system itself please consult the GNU General Public License.
2831  * 
2832  * Part B
2833  * ------
2834  * 
2835  * The other parts, here collectively called "Part B", and which came 
2836  * from the DTD used by FleXML to generate this program, can be 
2837  * distributed (or not, as the case may be) under the terms of whoever
2838  * wrote them, provided these terms respect and obey the two conditions 
2839  * above under the heading "Part A".
2840  *
2841  * The author of and contributors to FleXML specifically disclaim
2842  * any copyright interest in "Part B", unless "Part B" was written 
2843  * by the author of or contributors to FleXML.
2844  * 
2845  */
2846
2847 /* Version strings. */
2848 const char rcs_surfxml_flexml_skeleton[] =
2849   "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
2850 const char rcs_surfxml_flexml[] =
2851   "$" "Id: flexml.pl,v 1.63 2007/10/11 14:46:08 mquinson Exp $";
2852
2853 /* ANSI headers. */
2854 #include <stdlib.h>             /* for realloc() -- needed here when using flex 2.5.4 */
2855 #include <stdio.h>
2856 #include <string.h>
2857 #include <assert.h>
2858 #include <stdarg.h>
2859 #include <ctype.h>
2860
2861 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
2862 # ifndef __STRICT_ANSI__
2863 #  include <io.h>
2864 #  include <process.h>
2865 # endif
2866 #else
2867 # include <unistd.h>
2868 #endif
2869
2870 #ifndef FLEXML_INDEXSTACKSIZE
2871 #define FLEXML_INDEXSTACKSIZE 1000
2872 #endif
2873
2874 /* Generated definitions. */
2875 #define FLEXML_yylineno
2876 #ifndef FLEXML_BUFFERSTACKSIZE
2877 #define FLEXML_BUFFERSTACKSIZE 1000000
2878 #endif
2879 #define FLEXML_NEED_BUFFERLIT
2880
2881 /* XML processor api. */
2882 /* FleXML-provided data. */
2883 int surfxml_pcdata_ix;
2884 extern char *surfxml_bufferstack;
2885 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
2886 AT_surfxml_random_generator AX_surfxml_random_generator;
2887 #define A_surfxml_random_generator AX_surfxml_random_generator
2888 AT_surfxml_prop_id AX_surfxml_prop_id;
2889 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
2890 AT_surfxml_host_interference_recv AX_surfxml_host_interference_recv;
2891 #define A_surfxml_host_interference_recv (surfxml_bufferstack + AX_surfxml_host_interference_recv)
2892 AT_surfxml_host_id AX_surfxml_host_id;
2893 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
2894 AT_surfxml_set_id AX_surfxml_set_id;
2895 #define A_surfxml_set_id (surfxml_bufferstack + AX_surfxml_set_id)
2896 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
2897 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
2898 AT_surfxml_host_state AX_surfxml_host_state;
2899 #define A_surfxml_host_state AX_surfxml_host_state
2900 AT_surfxml_host_interference_send_recv AX_surfxml_host_interference_send_recv;
2901 #define A_surfxml_host_interference_send_recv (surfxml_bufferstack + AX_surfxml_host_interference_send_recv)
2902 AT_surfxml_host_interference_send AX_surfxml_host_interference_send;
2903 #define A_surfxml_host_interference_send (surfxml_bufferstack + AX_surfxml_host_interference_send)
2904 AT_surfxml_set_suffix AX_surfxml_set_suffix;
2905 #define A_surfxml_set_suffix (surfxml_bufferstack + AX_surfxml_set_suffix)
2906 AT_surfxml_route_impact_on_dst AX_surfxml_route_impact_on_dst;
2907 #define A_surfxml_route_impact_on_dst (surfxml_bufferstack + AX_surfxml_route_impact_on_dst)
2908 AT_surfxml_host_power AX_surfxml_host_power;
2909 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
2910 AT_surfxml_router_id AX_surfxml_router_id;
2911 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
2912 AT_surfxml_process_start_time AX_surfxml_process_start_time;
2913 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
2914 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
2915 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
2916 AT_surfxml_platform_xmlns_c_route AX_surfxml_platform_xmlns_c_route;
2917 #define A_surfxml_platform_xmlns_c_route (surfxml_bufferstack + AX_surfxml_platform_xmlns_c_route)
2918 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
2919 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
2920 AT_surfxml_trace_file AX_surfxml_trace_file;
2921 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
2922 AT_surfxml_route_action AX_surfxml_route_action;
2923 #define A_surfxml_route_action AX_surfxml_route_action
2924 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
2925 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
2926 AT_surfxml_random_min AX_surfxml_random_min;
2927 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
2928 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
2929 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
2930 AT_surfxml_cluster_bb_bw AX_surfxml_cluster_bb_bw;
2931 #define A_surfxml_cluster_bb_bw (surfxml_bufferstack + AX_surfxml_cluster_bb_bw)
2932 AT_surfxml_trace_c_connect_element AX_surfxml_trace_c_connect_element;
2933 #define A_surfxml_trace_c_connect_element (surfxml_bufferstack + AX_surfxml_trace_c_connect_element)
2934 AT_surfxml_argument_value AX_surfxml_argument_value;
2935 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
2936 AT_surfxml_link_state AX_surfxml_link_state;
2937 #define A_surfxml_link_state AX_surfxml_link_state
2938 AT_surfxml_route_impact_on_src AX_surfxml_route_impact_on_src;
2939 #define A_surfxml_route_impact_on_src (surfxml_bufferstack + AX_surfxml_route_impact_on_src)
2940 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
2941 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
2942 AT_surfxml_cluster_id AX_surfxml_cluster_id;
2943 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
2944 AT_surfxml_random_mean AX_surfxml_random_mean;
2945 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
2946 AT_surfxml_cluster_bb_lat AX_surfxml_cluster_bb_lat;
2947 #define A_surfxml_cluster_bb_lat (surfxml_bufferstack + AX_surfxml_cluster_bb_lat)
2948 AT_surfxml_link_latency AX_surfxml_link_latency;
2949 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
2950 AT_surfxml_platform_xmlns_c_link AX_surfxml_platform_xmlns_c_link;
2951 #define A_surfxml_platform_xmlns_c_link (surfxml_bufferstack + AX_surfxml_platform_xmlns_c_link)
2952 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
2953 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
2954 AT_surfxml_random_id AX_surfxml_random_id;
2955 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
2956 AT_surfxml_set_radical AX_surfxml_set_radical;
2957 #define A_surfxml_set_radical (surfxml_bufferstack + AX_surfxml_set_radical)
2958 AT_surfxml_random_max AX_surfxml_random_max;
2959 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
2960 AT_surfxml_link_id AX_surfxml_link_id;
2961 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
2962 AT_surfxml_process_host AX_surfxml_process_host;
2963 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
2964 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
2965 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
2966 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
2967 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
2968 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
2969 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
2970 AT_surfxml_foreach_set_id AX_surfxml_foreach_set_id;
2971 #define A_surfxml_foreach_set_id (surfxml_bufferstack + AX_surfxml_foreach_set_id)
2972 AT_surfxml_route_impact_on_dst_with_other_send
2973   AX_surfxml_route_impact_on_dst_with_other_send;
2974 #define A_surfxml_route_impact_on_dst_with_other_send (surfxml_bufferstack + AX_surfxml_route_impact_on_dst_with_other_send)
2975 AT_surfxml_prop_value AX_surfxml_prop_value;
2976 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
2977 AT_surfxml_route_impact_on_src_with_other_recv
2978   AX_surfxml_route_impact_on_src_with_other_recv;
2979 #define A_surfxml_route_impact_on_src_with_other_recv (surfxml_bufferstack + AX_surfxml_route_impact_on_src_with_other_recv)
2980 AT_surfxml_link_state_file AX_surfxml_link_state_file;
2981 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
2982 AT_surfxml_set_prefix AX_surfxml_set_prefix;
2983 #define A_surfxml_set_prefix (surfxml_bufferstack + AX_surfxml_set_prefix)
2984 AT_surfxml_cluster_power AX_surfxml_cluster_power;
2985 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
2986 AT_surfxml_process_function AX_surfxml_process_function;
2987 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
2988 AT_surfxml_host_max_outgoing_rate AX_surfxml_host_max_outgoing_rate;
2989 #define A_surfxml_host_max_outgoing_rate (surfxml_bufferstack + AX_surfxml_host_max_outgoing_rate)
2990 AT_surfxml_link_c_ctn_id AX_surfxml_link_c_ctn_id;
2991 #define A_surfxml_link_c_ctn_id (surfxml_bufferstack + AX_surfxml_link_c_ctn_id)
2992 AT_surfxml_host_availability AX_surfxml_host_availability;
2993 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
2994 AT_surfxml_route_src AX_surfxml_route_src;
2995 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
2996 AT_surfxml_route_c_multi_src AX_surfxml_route_c_multi_src;
2997 #define A_surfxml_route_c_multi_src (surfxml_bufferstack + AX_surfxml_route_c_multi_src)
2998 AT_surfxml_route_c_multi_action AX_surfxml_route_c_multi_action;
2999 #define A_surfxml_route_c_multi_action AX_surfxml_route_c_multi_action
3000 AT_surfxml_trace_c_connect_trace AX_surfxml_trace_c_connect_trace;
3001 #define A_surfxml_trace_c_connect_trace (surfxml_bufferstack + AX_surfxml_trace_c_connect_trace)
3002 AT_surfxml_trace_id AX_surfxml_trace_id;
3003 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
3004 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
3005 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
3006 AT_surfxml_include_file AX_surfxml_include_file;
3007 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
3008 AT_surfxml_random_std_deviation AX_surfxml_random_std_deviation;
3009 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
3010 AT_surfxml_trace_c_connect_kind AX_surfxml_trace_c_connect_kind;
3011 #define A_surfxml_trace_c_connect_kind AX_surfxml_trace_c_connect_kind
3012 AT_surfxml_route_c_multi_dst AX_surfxml_route_c_multi_dst;
3013 #define A_surfxml_route_c_multi_dst (surfxml_bufferstack + AX_surfxml_route_c_multi_dst)
3014 AT_surfxml_host_state_file AX_surfxml_host_state_file;
3015 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
3016 AT_surfxml_route_c_multi_symmetric AX_surfxml_route_c_multi_symmetric;
3017 #define A_surfxml_route_c_multi_symmetric AX_surfxml_route_c_multi_symmetric
3018 AT_surfxml_route_dst AX_surfxml_route_dst;
3019 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
3020 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
3021 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
3022 AT_surfxml_platform_version AX_surfxml_platform_version;
3023 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
3024
3025 /* XML state. */
3026 #ifdef FLEX_DEBUG
3027 # define ENTER(state)   debug_enter(state,#state)
3028 # define LEAVE          debug_leave()
3029 # define SET(state)     debug_set(state,#state)
3030 static void debug_enter(int, const char *);
3031 static void debug_leave(void);
3032 static void debug_set(int, const char *);
3033 #else
3034 # define ENTER(state)   (yy_push_state(state))
3035 # define LEAVE          (yy_pop_state())
3036 # define SET(state)     BEGIN(state)
3037 #endif
3038
3039 /* Generic actions. */
3040 #define SKIP                    /*skip */
3041 #define SUCCEED        CLEANUP; return 0
3042
3043 #define FAIL    return fail
3044 static int fail(const char *, ...);
3045
3046 enum { flexml_max_err_msg_size = 512 };
3047 static char flexml_err_msg[flexml_max_err_msg_size];
3048 const char *surfxml_parse_err_msg()
3049 {
3050   return flexml_err_msg;
3051 }
3052
3053 static void reset_surfxml_parse_err_msg()
3054 {
3055   flexml_err_msg[0] = '\0';
3056 }
3057
3058 /* Cleanup */
3059 static void cleanup(void);
3060 #define CLEANUP  cleanup()
3061
3062 /* Text buffer stack handling. */
3063 char *surfxml_bufferstack = NULL;
3064 static int blimit = FLEXML_BUFFERSTACKSIZE;
3065 static int bnext = 1;
3066
3067 static int *indexstack = NULL;
3068 static int ilimit = FLEXML_INDEXSTACKSIZE;
3069 static int inext = 1;
3070
3071 #define BUFFERSET(P)  (P = bnext)
3072 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
3073 #define BUFFERDONE    (BUFFERPUTC('\0'))
3074
3075 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
3076
3077 /* after this is called, there are at least 2 slots left in the stack */
3078 static int ck_blimit()
3079 {
3080   if (bnext >= blimit) {
3081     blimit += FLEXML_BUFFERSTACKSIZE + 2;
3082     {
3083       char *temp = (char *) realloc(surfxml_bufferstack, blimit);
3084       assert(temp);
3085       surfxml_bufferstack = temp;
3086     }
3087   }
3088   return 0;
3089 }
3090
3091 /* after this is called, there are at least 2 slots left in the stack */
3092 static int ck_ilimit()
3093 {
3094   if (inext >= ilimit) {
3095     ilimit += FLEXML_INDEXSTACKSIZE + 2;
3096     {
3097       int *temp = (int *) realloc(indexstack, ilimit);
3098       assert(temp);
3099       indexstack = temp;
3100     }
3101   }
3102   return 0;
3103 }
3104
3105 #ifdef FLEXML_NEED_BUFFERLIT
3106 static void surfxml_bufferliteral(char c, int *pp, const char *text)
3107 {
3108   const char *s = (c ? strchr(text, c) : text - 1), *e = strrchr(text, c);
3109   assert(s <= e);
3110   BUFFERSET(*pp);
3111   while (++s < e) {
3112     if (isspace(*s) && c) {
3113       BUFFERPUTC(' ');
3114       while (isspace(*s))
3115         ++s;
3116     } else
3117       BUFFERPUTC(*s);
3118   }
3119   BUFFERDONE;
3120 }
3121 #endif
3122
3123 static void pushbuffer(int p)
3124 {
3125   ck_ilimit();
3126   indexstack[inext++] = p;
3127   indexstack[inext++] = bnext;
3128 }
3129
3130 static int popbuffer(void)
3131 {
3132   assert(inext >= 2);
3133   bnext = indexstack[--inext];
3134   return indexstack[--inext];
3135 }
3136
3137 /* General internal entities are `unput' back onto the input stream... */
3138 #define ENTITYTEXT(T) \
3139   { char *s = (T), *e = s+strlen(s);\
3140     while (--e >= s) { unput(*e); }}
3141
3142 /* Flex standard options. */
3143 #define YY_NO_INPUT 1
3144 /* Flex user-requested options. */
3145 /* XML character classes (currently restricted to ASCII). */
3146 /* "Common syntactic structures." */
3147 /* "Names and Tokens." */
3148 /* Miscellaneous. */
3149 /* Parser states (flex `exclusive start conditions'):
3150  *
3151  * PROLOG       the XML prolog of the document before <?xml...>
3152  * DOCTYPE      the XML prolog of the document after <?xml...>
3153  * EPILOG       after the root element
3154  * INCOMMENT    inside an XML comment <!--....-->
3155  * INPI         inside an XML PI <?...?>
3156  * VALUE1       inside a '...'-delimited literal
3157  * VALUE2       inside a "..."-delimited literal
3158  * CDATA        inside a <![CDATA[...] ]> section.
3159  * ROOT_<tag>   expect root element <tag>
3160  * AL_<tag>     inside the attribute list for <tag>
3161  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
3162  * IMPOSSIBLE   dummy to permit disabling rules; must be last
3163  */
3164
3165 /* State names. */
3166 const char **surfxml_statenames = NULL;
3167
3168 #define INITIAL 0
3169 #define PROLOG 1
3170 #define DOCTYPE 2
3171 #define EPILOG 3
3172 #define INCOMMENT 4
3173 #define INPI 5
3174 #define VALUE1 6
3175 #define VALUE2 7
3176 #define CDATA 8
3177 #define ROOT_surfxml_platform 9
3178 #define AL_surfxml_platform 10
3179 #define S_surfxml_platform 11
3180 #define S_surfxml_platform_1 12
3181 #define S_surfxml_platform_2 13
3182 #define S_surfxml_platform_3 14
3183 #define S_surfxml_platform_4 15
3184 #define S_surfxml_platform_5 16
3185 #define E_surfxml_platform 17
3186 #define AL_surfxml_include 18
3187 #define E_surfxml_include 19
3188 #define AL_surfxml_trace 20
3189 #define IN_trace 21
3190 #define AL_surfxml_random 22
3191 #define S_surfxml_random 23
3192 #define S_surfxml_random_1 24
3193 #define S_surfxml_random_2 25
3194 #define E_surfxml_random 26
3195 #define AL_surfxml_trace_c_connect 27
3196 #define E_surfxml_trace_c_connect 28
3197 #define AL_surfxml_set 29
3198 #define E_surfxml_set 30
3199 #define AL_surfxml_foreach 31
3200 #define S_surfxml_foreach 32
3201 #define S_surfxml_foreach_1 33
3202 #define E_surfxml_foreach 34
3203 #define AL_surfxml_host 35
3204 #define S_surfxml_host 36
3205 #define S_surfxml_host_1 37
3206 #define S_surfxml_host_2 38
3207 #define E_surfxml_host 39
3208 #define AL_surfxml_prop 40
3209 #define E_surfxml_prop 41
3210 #define AL_surfxml_cluster 42
3211 #define E_surfxml_cluster 43
3212 #define AL_surfxml_router 44
3213 #define E_surfxml_router 45
3214 #define AL_surfxml_link 46
3215 #define S_surfxml_link 47
3216 #define S_surfxml_link_1 48
3217 #define S_surfxml_link_2 49
3218 #define E_surfxml_link 50
3219 #define AL_surfxml_route_c_multi 51
3220 #define S_surfxml_route_c_multi 52
3221 #define S_surfxml_route_c_multi_1 53
3222 #define S_surfxml_route_c_multi_2 54
3223 #define E_surfxml_route_c_multi 55
3224 #define AL_surfxml_route 56
3225 #define S_surfxml_route 57
3226 #define S_surfxml_route_1 58
3227 #define S_surfxml_route_2 59
3228 #define E_surfxml_route 60
3229 #define AL_surfxml_link_c_ctn 61
3230 #define E_surfxml_link_c_ctn 62
3231 #define AL_surfxml_process 63
3232 #define S_surfxml_process 64
3233 #define S_surfxml_process_1 65
3234 #define S_surfxml_process_2 66
3235 #define E_surfxml_process 67
3236 #define AL_surfxml_argument 68
3237 #define E_surfxml_argument 69
3238 #define IMPOSSIBLE 70
3239
3240 #ifndef YY_NO_UNISTD_H
3241 /* Special case for "unistd.h", since it is non-ANSI. We include it way
3242  * down here because we want the user's section 1 to have been scanned first.
3243  * The user has a chance to override it with an option.
3244  */
3245 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
3246 #  ifndef __STRICT_ANSI__
3247 #    include <io.h>
3248 #    include <process.h>
3249 #  endif
3250 #else
3251 #  include <unistd.h>
3252 #endif
3253 #endif
3254
3255 #ifndef YY_EXTRA_TYPE
3256 #define YY_EXTRA_TYPE void *
3257 #endif
3258
3259 static int yy_init_globals(void);
3260
3261 /* Accessor methods to globals.
3262    These are made visible to non-reentrant scanners for convenience. */
3263
3264 int surf_parse_lex_destroy(void);
3265
3266 int surf_parse_get_debug(void);
3267
3268 void surf_parse_set_debug(int debug_flag);
3269
3270 YY_EXTRA_TYPE surf_parse_get_extra(void);
3271
3272 void surf_parse_set_extra(YY_EXTRA_TYPE user_defined);
3273
3274 FILE *surf_parse_get_in(void);
3275
3276 void surf_parse_set_in(FILE * in_str);
3277
3278 FILE *surf_parse_get_out(void);
3279
3280 void surf_parse_set_out(FILE * out_str);
3281
3282 int surf_parse_get_leng(void);
3283
3284 char *surf_parse_get_text(void);
3285
3286 int surf_parse_get_lineno(void);
3287
3288 void surf_parse_set_lineno(int line_number);
3289
3290 /* Macros after this point can all be overridden by user definitions in
3291  * section 1.
3292  */
3293
3294 #ifndef YY_SKIP_YYWRAP
3295 #ifdef __cplusplus
3296 extern "C" int surf_parse_wrap(void);
3297 #else
3298 extern int surf_parse_wrap(void);
3299 #endif
3300 #endif
3301
3302 #ifndef yytext_ptr
3303 static void yy_flex_strncpy(char *, yyconst char *, int);
3304 #endif
3305
3306 #ifdef YY_NEED_STRLEN
3307 static int yy_flex_strlen(yyconst char *);
3308 #endif
3309
3310 #ifndef YY_NO_INPUT
3311
3312 #ifdef __cplusplus
3313 static int yyinput(void);
3314 #else
3315 static int input(void);
3316 #endif
3317
3318 #endif
3319
3320 static int yy_start_stack_ptr = 0;
3321 static int yy_start_stack_depth = 0;
3322 static int *yy_start_stack = NULL;
3323
3324 static void yy_push_state(int new_state);
3325
3326 static void yy_pop_state(void);
3327
3328 /* Amount of stuff to slurp up with each read. */
3329 #ifndef YY_READ_BUF_SIZE
3330 #ifdef __ia64__
3331 /* On IA-64, the buffer size is 16k, not 8k */
3332 #define YY_READ_BUF_SIZE 16384
3333 #else
3334 #define YY_READ_BUF_SIZE 8192
3335 #endif /* __ia64__ */
3336 #endif
3337
3338 /* Copy whatever the last rule matched to the standard output. */
3339 #ifndef ECHO
3340 /* This used to be an fputs(), but since the string might contain NUL's,
3341  * we now use fwrite().
3342  */
3343 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
3344 #endif
3345
3346 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3347  * is returned in "result".
3348  */
3349 #ifndef YY_INPUT
3350 #define YY_INPUT(buf,result,max_size) \
3351         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3352                 { \
3353                 int c = '*'; \
3354                 size_t n; \
3355                 for ( n = 0; n < max_size && \
3356                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
3357                         buf[n] = (char) c; \
3358                 if ( c == '\n' ) \
3359                         buf[n++] = (char) c; \
3360                 if ( c == EOF && ferror( surf_parse_in ) ) \
3361                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
3362                 result = n; \
3363                 } \
3364         else \
3365                 { \
3366                 errno=0; \
3367                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
3368                         { \
3369                         if( errno != EINTR) \
3370                                 { \
3371                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3372                                 break; \
3373                                 } \
3374                         errno=0; \
3375                         clearerr(surf_parse_in); \
3376                         } \
3377                 }\
3378 \
3379
3380 #endif
3381
3382 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3383  * we don't want an extra ';' after the "return" because that will cause
3384  * some compilers to complain about unreachable statements.
3385  */
3386 #ifndef yyterminate
3387 #define yyterminate() return YY_NULL
3388 #endif
3389
3390 /* Number of entries by which start-condition stack grows. */
3391 #ifndef YY_START_STACK_INCR
3392 #define YY_START_STACK_INCR 25
3393 #endif
3394
3395 /* Report a fatal error. */
3396 #ifndef YY_FATAL_ERROR
3397 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3398 #endif
3399
3400 /* end tables serialization structures and prototypes */
3401
3402 /* Default declaration of generated scanner - a define so the user can
3403  * easily add parameters.
3404  */
3405 #ifndef YY_DECL
3406 #define YY_DECL_IS_OURS 1
3407
3408 extern int surf_parse_lex(void);
3409
3410 #define YY_DECL int surf_parse_lex (void)
3411 #endif /* !YY_DECL */
3412
3413 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
3414  * have been set up.
3415  */
3416 #ifndef YY_USER_ACTION
3417 #define YY_USER_ACTION
3418 #endif
3419
3420 /* Code executed at the end of each rule. */
3421 #ifndef YY_BREAK
3422 #define YY_BREAK break;
3423 #endif
3424
3425 #define YY_RULE_SETUP \
3426         YY_USER_ACTION
3427
3428 /** The main scanner function which does all the work.
3429  */
3430 YY_DECL {
3431   register yy_state_type yy_current_state;
3432   register char *yy_cp, *yy_bp;
3433   register int yy_act;
3434
3435   /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
3436   SET(PROLOG);
3437   reset_surfxml_parse_err_msg();
3438   surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
3439   assert(surfxml_bufferstack);
3440 #ifdef FLEX_DEBUG
3441   {
3442     int i;
3443     for (i = 0; i < blimit; i++) {
3444       surfxml_bufferstack[i] = '\377';
3445     }
3446   }
3447 #endif
3448   surfxml_bufferstack[0] = '\0';
3449   indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
3450   assert(indexstack);
3451   indexstack[0] = 0;
3452
3453   /* FleXML_init */
3454   bnext = inext = 1;
3455   surfxml_bufferliteral('\0', &bnext, "0.0");
3456   surfxml_bufferliteral('\0', &bnext, "http://simgrid.gforge.inria.fr/");
3457   surfxml_bufferliteral('\0', &bnext, "http://simgrid.gforge.inria.fr/");
3458   surfxml_bufferliteral('\0', &bnext, "1.0");
3459   surfxml_bufferliteral('\0', &bnext, "1.0");
3460   surfxml_bufferliteral('\0', &bnext, "1.0");
3461   surfxml_bufferliteral('\0', &bnext, "1.0");
3462   surfxml_bufferliteral('\0', &bnext, "-1.0");
3463   surfxml_bufferliteral('\0', &bnext, "0.0");
3464   surfxml_bufferliteral('\0', &bnext, "0.0");
3465   surfxml_bufferliteral('\0', &bnext, "0.0");
3466   surfxml_bufferliteral('\0', &bnext, "0.0");
3467   surfxml_bufferliteral('\0', &bnext, "0.0");
3468   surfxml_bufferliteral('\0', &bnext, "-1.0");
3469   surfxml_bufferliteral('\0', &bnext, "-1.0");
3470   if (!surfxml_statenames) {
3471     surfxml_statenames = (const char **) calloc(IMPOSSIBLE, sizeof(char *));
3472     surfxml_statenames[PROLOG] = NULL;
3473     surfxml_statenames[DOCTYPE] = NULL;
3474     surfxml_statenames[EPILOG] = NULL;
3475     surfxml_statenames[INCOMMENT] = NULL;
3476     surfxml_statenames[INPI] = NULL;
3477     surfxml_statenames[VALUE1] = NULL;
3478     surfxml_statenames[VALUE2] = NULL;
3479     surfxml_statenames[CDATA] = NULL;
3480     surfxml_statenames[ROOT_surfxml_platform] = NULL;
3481     surfxml_statenames[AL_surfxml_platform] = NULL;
3482     surfxml_statenames[S_surfxml_platform] = "platform";
3483     surfxml_statenames[S_surfxml_platform_1] = "platform";
3484     surfxml_statenames[S_surfxml_platform_2] = "platform";
3485     surfxml_statenames[S_surfxml_platform_3] = "platform";
3486     surfxml_statenames[S_surfxml_platform_4] = "platform";
3487     surfxml_statenames[S_surfxml_platform_5] = "platform";
3488     surfxml_statenames[E_surfxml_platform] = "platform";
3489     surfxml_statenames[AL_surfxml_include] = NULL;
3490     surfxml_statenames[E_surfxml_include] = "include";
3491     surfxml_statenames[AL_surfxml_trace] = NULL;
3492     surfxml_statenames[IN_trace] = "trace";
3493     surfxml_statenames[AL_surfxml_random] = NULL;
3494     surfxml_statenames[S_surfxml_random] = "random";
3495     surfxml_statenames[S_surfxml_random_1] = "random";
3496     surfxml_statenames[S_surfxml_random_2] = "random";
3497     surfxml_statenames[E_surfxml_random] = "random";
3498     surfxml_statenames[AL_surfxml_trace_c_connect] = NULL;
3499     surfxml_statenames[E_surfxml_trace_c_connect] = "trace:connect";
3500     surfxml_statenames[AL_surfxml_set] = NULL;
3501     surfxml_statenames[E_surfxml_set] = "set";
3502     surfxml_statenames[AL_surfxml_foreach] = NULL;
3503     surfxml_statenames[S_surfxml_foreach] = "foreach";
3504     surfxml_statenames[S_surfxml_foreach_1] = "foreach";
3505     surfxml_statenames[E_surfxml_foreach] = "foreach";
3506     surfxml_statenames[AL_surfxml_host] = NULL;
3507     surfxml_statenames[S_surfxml_host] = "host";
3508     surfxml_statenames[S_surfxml_host_1] = "host";
3509     surfxml_statenames[S_surfxml_host_2] = "host";
3510     surfxml_statenames[E_surfxml_host] = "host";
3511     surfxml_statenames[AL_surfxml_prop] = NULL;
3512     surfxml_statenames[E_surfxml_prop] = "prop";
3513     surfxml_statenames[AL_surfxml_cluster] = NULL;
3514     surfxml_statenames[E_surfxml_cluster] = "cluster";
3515     surfxml_statenames[AL_surfxml_router] = NULL;
3516     surfxml_statenames[E_surfxml_router] = "router";
3517     surfxml_statenames[AL_surfxml_link] = NULL;
3518     surfxml_statenames[S_surfxml_link] = "link";
3519     surfxml_statenames[S_surfxml_link_1] = "link";
3520     surfxml_statenames[S_surfxml_link_2] = "link";
3521     surfxml_statenames[E_surfxml_link] = "link";
3522     surfxml_statenames[AL_surfxml_route_c_multi] = NULL;
3523     surfxml_statenames[S_surfxml_route_c_multi] = "route:multi";
3524     surfxml_statenames[S_surfxml_route_c_multi_1] = "route:multi";
3525     surfxml_statenames[S_surfxml_route_c_multi_2] = "route:multi";
3526     surfxml_statenames[E_surfxml_route_c_multi] = "route:multi";
3527     surfxml_statenames[AL_surfxml_route] = NULL;
3528     surfxml_statenames[S_surfxml_route] = "route";
3529     surfxml_statenames[S_surfxml_route_1] = "route";
3530     surfxml_statenames[S_surfxml_route_2] = "route";
3531     surfxml_statenames[E_surfxml_route] = "route";
3532     surfxml_statenames[AL_surfxml_link_c_ctn] = NULL;
3533     surfxml_statenames[E_surfxml_link_c_ctn] = "link:ctn";
3534     surfxml_statenames[AL_surfxml_process] = NULL;
3535     surfxml_statenames[S_surfxml_process] = "process";
3536     surfxml_statenames[S_surfxml_process_1] = "process";
3537     surfxml_statenames[S_surfxml_process_2] = "process";
3538     surfxml_statenames[E_surfxml_process] = "process";
3539     surfxml_statenames[AL_surfxml_argument] = NULL;
3540     surfxml_statenames[E_surfxml_argument] = "argument";
3541   }
3542
3543   /* COMMENTS and PIs: handled uniformly for efficiency. */
3544
3545   if (!(yy_init)) {
3546     (yy_init) = 1;
3547
3548 #ifdef YY_USER_INIT
3549     YY_USER_INIT;
3550 #endif
3551
3552     if (!(yy_start))
3553       (yy_start) = 1;           /* first start state */
3554
3555     if (!surf_parse_in)
3556       surf_parse_in = stdin;
3557
3558     if (!surf_parse_out)
3559       surf_parse_out = stdout;
3560
3561     if (!YY_CURRENT_BUFFER) {
3562       surf_parse_ensure_buffer_stack();
3563       YY_CURRENT_BUFFER_LVALUE =
3564         surf_parse__create_buffer(surf_parse_in, YY_BUF_SIZE);
3565     }
3566
3567     surf_parse__load_buffer_state();
3568   }
3569
3570   while (1) {                   /* loops until end-of-file is reached */
3571     yy_cp = (yy_c_buf_p);
3572
3573     /* Support of surf_parse_text. */
3574     *yy_cp = (yy_hold_char);
3575
3576     /* yy_bp points to the position in yy_ch_buf of the start of
3577      * the current run.
3578      */
3579     yy_bp = yy_cp;
3580
3581     yy_current_state = (yy_start);
3582   yy_match:
3583     do {
3584       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3585       if (yy_accept[yy_current_state]) {
3586         (yy_last_accepting_state) = yy_current_state;
3587         (yy_last_accepting_cpos) = yy_cp;
3588       }
3589       while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {
3590         yy_current_state = (int) yy_def[yy_current_state];
3591         if (yy_current_state >= 2023)
3592           yy_c = yy_meta[(unsigned int) yy_c];
3593       }
3594       yy_current_state =
3595         yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3596       ++yy_cp;
3597     }
3598     while (yy_base[yy_current_state] != 7094);
3599
3600   yy_find_action:
3601     yy_act = yy_accept[yy_current_state];
3602     if (yy_act == 0) {          /* have to back up */
3603       yy_cp = (yy_last_accepting_cpos);
3604       yy_current_state = (yy_last_accepting_state);
3605       yy_act = yy_accept[yy_current_state];
3606     }
3607
3608     YY_DO_BEFORE_ACTION;
3609
3610     if (yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act]) {
3611       int yyl;
3612       for (yyl = 0; yyl < surf_parse_leng; ++yyl)
3613         if (surf_parse_text[yyl] == '\n')
3614
3615           surf_parse_lineno++;
3616       ;
3617     }
3618
3619   do_action:                   /* This label is used only to access EOF actions. */
3620
3621     switch (yy_act) {           /* beginning of action switch */
3622     case 0:                    /* must back up */
3623       /* undo the effects of YY_DO_BEFORE_ACTION */
3624       *yy_cp = (yy_hold_char);
3625       yy_cp = (yy_last_accepting_cpos);
3626       yy_current_state = (yy_last_accepting_state);
3627       goto yy_find_action;
3628
3629     case 1:
3630       YY_RULE_SETUP ENTER(INCOMMENT);
3631       YY_BREAK case 2:YY_RULE_SETUP ENTER(INPI);
3632       YY_BREAK case 3:YY_RULE_SETUP LEAVE;
3633       YY_BREAK case 4:case 5:case 6:
3634 /* rule 6 can match eol */
3635         YY_RULE_SETUP SKIP;
3636       YY_BREAK case YY_STATE_EOF(INCOMMENT):FAIL("EOF in comment.");
3637       YY_BREAK case 7:YY_RULE_SETUP LEAVE;
3638       YY_BREAK case 8:case 9:
3639 /* rule 9 can match eol */
3640         YY_RULE_SETUP SKIP;
3641       YY_BREAK case
3642         YY_STATE_EOF(INPI):FAIL("EOF in PI (processing instruction).");
3643       YY_BREAK
3644 /* SPACES: skipped uniformly */
3645     case 10:
3646 /* rule 10 can match eol */
3647       YY_RULE_SETUP SKIP;
3648       YY_BREAK
3649 /* PROLOG: determine root element and process it. */
3650     case 11:
3651 /* rule 11 can match eol */
3652       YY_RULE_SETUP SET(DOCTYPE);
3653       YY_BREAK case 12:
3654 /* rule 12 can match eol */
3655         YY_RULE_SETUP FAIL("Bad declaration %s.", surf_parse_text);
3656       YY_BREAK case 13:
3657 /* rule 13 can match eol */
3658         YY_RULE_SETUP SET(ROOT_surfxml_platform);
3659       YY_BREAK case 14:
3660 /* rule 14 can match eol */
3661         YY_RULE_SETUP FAIL("Bad declaration %s.", surf_parse_text);
3662       YY_BREAK case 15:YY_RULE_SETUP
3663         FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
3664       YY_BREAK case YY_STATE_EOF(PROLOG):case
3665         YY_STATE_EOF(DOCTYPE):FAIL("EOF in prolog.");
3666       YY_BREAK
3667 /* RULES DERIVED FROM DTD. */
3668 /* <!-- Small DTD for SURF based tools. -->  */
3669     case 16:
3670 /* rule 16 can match eol */
3671       YY_RULE_SETUP FAIL("Starting tag <platform> is not allowed here.");
3672       YY_BREAK case 17:
3673 /* rule 17 can match eol */
3674         YY_RULE_SETUP {
3675         AX_surfxml_platform_version = 1;
3676         AX_surfxml_platform_xmlns_c_link = 5;
3677         AX_surfxml_platform_xmlns_c_route = 37;
3678         ENTER(AL_surfxml_platform);
3679         pushbuffer(0);
3680       } YY_BREAK case 18:
3681 /* rule 18 can match eol */
3682         YY_RULE_SETUP ENTER(VALUE1);
3683       BUFFERSET(AX_surfxml_platform_version);
3684       YY_BREAK case 19:
3685 /* rule 19 can match eol */
3686         YY_RULE_SETUP ENTER(VALUE2);
3687       BUFFERSET(AX_surfxml_platform_version);
3688       YY_BREAK case 20:
3689 /* rule 20 can match eol */
3690         YY_RULE_SETUP ENTER(VALUE1);
3691       BUFFERSET(AX_surfxml_platform_xmlns_c_link);
3692       YY_BREAK case 21:
3693 /* rule 21 can match eol */
3694         YY_RULE_SETUP ENTER(VALUE2);
3695       BUFFERSET(AX_surfxml_platform_xmlns_c_link);
3696       YY_BREAK case 22:
3697 /* rule 22 can match eol */
3698         YY_RULE_SETUP ENTER(VALUE1);
3699       BUFFERSET(AX_surfxml_platform_xmlns_c_route);
3700       YY_BREAK case 23:
3701 /* rule 23 can match eol */
3702         YY_RULE_SETUP ENTER(VALUE2);
3703       BUFFERSET(AX_surfxml_platform_xmlns_c_route);
3704       YY_BREAK case 24:YY_RULE_SETUP {
3705         LEAVE;
3706         STag_surfxml_platform();
3707         surfxml_pcdata_ix = 0;
3708         ENTER(S_surfxml_platform);
3709       } YY_BREAK case 25:YY_RULE_SETUP {
3710         LEAVE;
3711         STag_surfxml_platform();
3712         surfxml_pcdata_ix = 0;
3713         ETag_surfxml_platform();
3714         popbuffer();            /* attribute */
3715         switch (YY_START) {
3716         case ROOT_surfxml_platform:
3717           SET(EPILOG);
3718           break;
3719       }} YY_BREAK case 26:YY_RULE_SETUP
3720         FAIL
3721         ("Unexpected character `%c' in attribute list of platform element.",
3722          surf_parse_text[0]);
3723       YY_BREAK case 27:YY_RULE_SETUP
3724         FAIL("Bad attribute `%s' in `platform' element start tag.",
3725              surf_parse_text);
3726       YY_BREAK case
3727         YY_STATE_EOF(AL_surfxml_platform):FAIL
3728         ("EOF in attribute list of `platform' element.");
3729       YY_BREAK case 28:
3730 /* rule 28 can match eol */
3731         YY_RULE_SETUP {
3732         LEAVE;
3733         ETag_surfxml_platform();
3734         popbuffer();            /* attribute */
3735         switch (YY_START) {
3736         case ROOT_surfxml_platform:
3737           SET(EPILOG);
3738           break;
3739       }} YY_BREAK case 29:
3740 /* rule 29 can match eol */
3741        
3742         YY_RULE_SETUP
3743         FAIL("Unexpected end-tag `%s': `</platform>' expected.",
3744              surf_parse_text);
3745       YY_BREAK case 30:YY_RULE_SETUP
3746         FAIL("Unexpected character `%c': `</platform>' expected.",
3747              surf_parse_text[0]);
3748       YY_BREAK case YY_STATE_EOF(S_surfxml_platform_5):case
3749         YY_STATE_EOF(S_surfxml_platform_1):case
3750         YY_STATE_EOF(S_surfxml_platform_3):case
3751         YY_STATE_EOF(S_surfxml_platform):case
3752         YY_STATE_EOF(E_surfxml_platform):FAIL
3753         ("Premature EOF: `</platform>' expected.");
3754       YY_BREAK case 31:
3755 /* rule 31 can match eol */
3756         YY_RULE_SETUP FAIL("Starting tag <include> is not allowed here.");
3757       YY_BREAK case 32:
3758 /* rule 32 can match eol */
3759         YY_RULE_SETUP {
3760         AX_surfxml_include_file = 0;
3761         ENTER(AL_surfxml_include);
3762         pushbuffer(0);
3763       } YY_BREAK case 33:
3764 /* rule 33 can match eol */
3765         YY_RULE_SETUP ENTER(VALUE1);
3766       BUFFERSET(AX_surfxml_include_file);
3767       YY_BREAK case 34:
3768 /* rule 34 can match eol */
3769         YY_RULE_SETUP ENTER(VALUE2);
3770       BUFFERSET(AX_surfxml_include_file);
3771       YY_BREAK case 35:YY_RULE_SETUP {
3772         if (!AX_surfxml_include_file)
3773           FAIL("Required attribute `file' not set for `include' element.");
3774         LEAVE;
3775         STag_surfxml_include();
3776         surfxml_pcdata_ix = 0;
3777         ENTER(E_surfxml_include);
3778       } YY_BREAK case 36:YY_RULE_SETUP {
3779         if (!AX_surfxml_include_file)
3780           FAIL("Required attribute `file' not set for `include' element.");
3781         LEAVE;
3782         STag_surfxml_include();
3783         surfxml_pcdata_ix = 0;
3784         ETag_surfxml_include();
3785         popbuffer();            /* attribute */
3786         switch (YY_START) {
3787         case S_surfxml_platform_5:
3788         case S_surfxml_platform_1:
3789         case S_surfxml_platform_3:
3790         case S_surfxml_platform:
3791         case S_surfxml_platform_4:
3792           SET(S_surfxml_platform_5);
3793           break;
3794           case S_surfxml_platform_2:SET(S_surfxml_platform_3);
3795           break;
3796       }} YY_BREAK case 37:YY_RULE_SETUP
3797         FAIL
3798         ("Unexpected character `%c' in attribute list of include element.",
3799          surf_parse_text[0]);
3800       YY_BREAK case 38:YY_RULE_SETUP
3801         FAIL("Bad attribute `%s' in `include' element start tag.",
3802              surf_parse_text);
3803       YY_BREAK case
3804         YY_STATE_EOF(AL_surfxml_include):FAIL
3805         ("EOF in attribute list of `include' element.");
3806       YY_BREAK case 39:
3807 /* rule 39 can match eol */
3808         YY_RULE_SETUP {
3809         LEAVE;
3810         ETag_surfxml_include();
3811         popbuffer();            /* attribute */
3812         switch (YY_START) {
3813         case S_surfxml_platform_5:
3814         case S_surfxml_platform_1:
3815         case S_surfxml_platform_3:
3816         case S_surfxml_platform:
3817         case S_surfxml_platform_4:
3818           SET(S_surfxml_platform_5);
3819           break;
3820           case S_surfxml_platform_2:SET(S_surfxml_platform_3);
3821           break;
3822       }} YY_BREAK case 40:
3823 /* rule 40 can match eol */
3824        
3825         YY_RULE_SETUP
3826         FAIL("Unexpected end-tag `%s': `</include>' expected.",
3827              surf_parse_text);
3828       YY_BREAK case 41:YY_RULE_SETUP
3829         FAIL("Unexpected character `%c': `</include>' expected.",
3830              surf_parse_text[0]);
3831       YY_BREAK case
3832         YY_STATE_EOF(E_surfxml_include):FAIL
3833         ("Premature EOF: `</include>' expected.");
3834       YY_BREAK case 42:
3835 /* rule 42 can match eol */
3836         YY_RULE_SETUP FAIL("Starting tag <trace> is not allowed here.");
3837       YY_BREAK case 43:
3838 /* rule 43 can match eol */
3839         YY_RULE_SETUP {
3840         AX_surfxml_trace_id = 0;
3841         AX_surfxml_trace_file = 0;
3842         AX_surfxml_trace_periodicity = 0;
3843         ENTER(AL_surfxml_trace);
3844         pushbuffer(0);
3845       } YY_BREAK case 44:
3846 /* rule 44 can match eol */
3847         YY_RULE_SETUP ENTER(VALUE1);
3848       BUFFERSET(AX_surfxml_trace_id);
3849       YY_BREAK case 45:
3850 /* rule 45 can match eol */
3851         YY_RULE_SETUP ENTER(VALUE2);
3852       BUFFERSET(AX_surfxml_trace_id);
3853       YY_BREAK case 46:
3854 /* rule 46 can match eol */
3855         YY_RULE_SETUP ENTER(VALUE1);
3856       BUFFERSET(AX_surfxml_trace_file);
3857       YY_BREAK case 47:
3858 /* rule 47 can match eol */
3859         YY_RULE_SETUP ENTER(VALUE2);
3860       BUFFERSET(AX_surfxml_trace_file);
3861       YY_BREAK case 48:
3862 /* rule 48 can match eol */
3863         YY_RULE_SETUP ENTER(VALUE1);
3864       BUFFERSET(AX_surfxml_trace_periodicity);
3865       YY_BREAK case 49:
3866 /* rule 49 can match eol */
3867         YY_RULE_SETUP ENTER(VALUE2);
3868       BUFFERSET(AX_surfxml_trace_periodicity);
3869       YY_BREAK case 50:YY_RULE_SETUP {
3870         if (!AX_surfxml_trace_id)
3871           FAIL("Required attribute `id' not set for `trace' element.");
3872         if (!AX_surfxml_trace_periodicity)
3873           FAIL
3874             ("Required attribute `periodicity' not set for `trace' element.");
3875         LEAVE;
3876         STag_surfxml_trace();
3877         pushbuffer(surfxml_pcdata_ix);
3878         BUFFERSET(surfxml_pcdata_ix);;
3879         ENTER(IN_trace);
3880       } YY_BREAK case 51:YY_RULE_SETUP {
3881         if (!AX_surfxml_trace_id)
3882           FAIL("Required attribute `id' not set for `trace' element.");
3883         if (!AX_surfxml_trace_periodicity)
3884           FAIL
3885             ("Required attribute `periodicity' not set for `trace' element.");
3886         LEAVE;
3887         STag_surfxml_trace();
3888         surfxml_pcdata_ix = 0;
3889         ETag_surfxml_trace();
3890         popbuffer();            /* attribute */
3891         switch (YY_START) {
3892         case S_surfxml_platform_2:
3893         case S_surfxml_platform_3:
3894         case S_surfxml_platform:
3895           SET(S_surfxml_platform_3);
3896           break;
3897       }} YY_BREAK case 52:YY_RULE_SETUP
3898         FAIL("Unexpected character `%c' in attribute list of trace element.",
3899              surf_parse_text[0]);
3900       YY_BREAK case 53:YY_RULE_SETUP
3901         FAIL("Bad attribute `%s' in `trace' element start tag.",
3902              surf_parse_text);
3903       YY_BREAK case
3904         YY_STATE_EOF(AL_surfxml_trace):FAIL
3905         ("EOF in attribute list of `trace' element.");
3906       YY_BREAK case 54:
3907 /* rule 54 can match eol */
3908         YY_RULE_SETUP {
3909         LEAVE;
3910         BUFFERDONE;
3911         ETag_surfxml_trace();
3912         surfxml_pcdata_ix = popbuffer();
3913         popbuffer();            /* attribute */
3914         switch (YY_START) {
3915         case S_surfxml_platform_2:
3916         case S_surfxml_platform_3:
3917         case S_surfxml_platform:
3918           SET(S_surfxml_platform_3);
3919           break;
3920       }} YY_BREAK case 55:
3921 /* rule 55 can match eol */
3922        
3923         YY_RULE_SETUP
3924         FAIL("Unexpected end-tag `%s': `</trace>' expected.",
3925              surf_parse_text);
3926       YY_BREAK case
3927         YY_STATE_EOF(IN_trace):FAIL("Premature EOF: `</trace>' expected.");
3928       YY_BREAK case 56:
3929 /* rule 56 can match eol */
3930         YY_RULE_SETUP FAIL("Starting tag <random> is not allowed here.");
3931       YY_BREAK case 57:
3932 /* rule 57 can match eol */
3933         YY_RULE_SETUP {
3934         AX_surfxml_random_id = 0;
3935         AX_surfxml_random_min = 0;
3936         AX_surfxml_random_max = 0;
3937         AX_surfxml_random_mean = 0;
3938         AX_surfxml_random_std_deviation = 0;
3939         AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
3940         ENTER(AL_surfxml_random);
3941         pushbuffer(0);
3942       } YY_BREAK case 58:
3943 /* rule 58 can match eol */
3944         YY_RULE_SETUP ENTER(VALUE1);
3945       BUFFERSET(AX_surfxml_random_id);
3946       YY_BREAK case 59:
3947 /* rule 59 can match eol */
3948         YY_RULE_SETUP ENTER(VALUE2);
3949       BUFFERSET(AX_surfxml_random_id);
3950       YY_BREAK case 60:
3951 /* rule 60 can match eol */
3952         YY_RULE_SETUP ENTER(VALUE1);
3953       BUFFERSET(AX_surfxml_random_min);
3954       YY_BREAK case 61:
3955 /* rule 61 can match eol */
3956         YY_RULE_SETUP ENTER(VALUE2);
3957       BUFFERSET(AX_surfxml_random_min);
3958       YY_BREAK case 62:
3959 /* rule 62 can match eol */
3960         YY_RULE_SETUP ENTER(VALUE1);
3961       BUFFERSET(AX_surfxml_random_max);
3962       YY_BREAK case 63:
3963 /* rule 63 can match eol */
3964         YY_RULE_SETUP ENTER(VALUE2);
3965       BUFFERSET(AX_surfxml_random_max);
3966       YY_BREAK case 64:
3967 /* rule 64 can match eol */
3968         YY_RULE_SETUP ENTER(VALUE1);
3969       BUFFERSET(AX_surfxml_random_mean);
3970       YY_BREAK case 65:
3971 /* rule 65 can match eol */
3972         YY_RULE_SETUP ENTER(VALUE2);
3973       BUFFERSET(AX_surfxml_random_mean);
3974       YY_BREAK case 66:
3975 /* rule 66 can match eol */
3976         YY_RULE_SETUP ENTER(VALUE1);
3977       BUFFERSET(AX_surfxml_random_std_deviation);
3978       YY_BREAK case 67:
3979 /* rule 67 can match eol */
3980         YY_RULE_SETUP ENTER(VALUE2);
3981       BUFFERSET(AX_surfxml_random_std_deviation);
3982       YY_BREAK case 68:
3983 /* rule 68 can match eol */
3984       case 69:
3985 /* rule 69 can match eol */
3986        
3987         YY_RULE_SETUP
3988         A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
3989       YY_BREAK case 70:
3990 /* rule 70 can match eol */
3991       case 71:
3992 /* rule 71 can match eol */
3993        
3994         YY_RULE_SETUP
3995         A_surfxml_random_generator = A_surfxml_random_generator_RAND;
3996       YY_BREAK case 72:YY_RULE_SETUP {
3997         if (!AX_surfxml_random_id)
3998           FAIL("Required attribute `id' not set for `random' element.");
3999         if (!AX_surfxml_random_min)
4000           FAIL("Required attribute `min' not set for `random' element.");
4001         if (!AX_surfxml_random_max)
4002           FAIL("Required attribute `max' not set for `random' element.");
4003         if (!AX_surfxml_random_mean)
4004           FAIL("Required attribute `mean' not set for `random' element.");
4005         if (!AX_surfxml_random_std_deviation)
4006           FAIL
4007             ("Required attribute `std_deviation' not set for `random' element.");
4008         LEAVE;
4009         STag_surfxml_random();
4010         surfxml_pcdata_ix = 0;
4011         ENTER(S_surfxml_random);
4012       } YY_BREAK case 73:YY_RULE_SETUP {
4013         if (!AX_surfxml_random_id)
4014           FAIL("Required attribute `id' not set for `random' element.");
4015         if (!AX_surfxml_random_min)
4016           FAIL("Required attribute `min' not set for `random' element.");
4017         if (!AX_surfxml_random_max)
4018           FAIL("Required attribute `max' not set for `random' element.");
4019         if (!AX_surfxml_random_mean)
4020           FAIL("Required attribute `mean' not set for `random' element.");
4021         if (!AX_surfxml_random_std_deviation)
4022           FAIL
4023             ("Required attribute `std_deviation' not set for `random' element.");
4024         LEAVE;
4025         STag_surfxml_random();
4026         surfxml_pcdata_ix = 0;
4027         ETag_surfxml_random();
4028         popbuffer();            /* attribute */
4029         switch (YY_START) {
4030         case S_surfxml_platform_2:
4031         case S_surfxml_platform_3:
4032         case S_surfxml_platform:
4033           SET(S_surfxml_platform_3);
4034           break;
4035       }} YY_BREAK case 74:YY_RULE_SETUP
4036         FAIL("Unexpected character `%c' in attribute list of random element.",
4037              surf_parse_text[0]);
4038       YY_BREAK case 75:YY_RULE_SETUP
4039         FAIL("Bad attribute `%s' in `random' element start tag.",
4040              surf_parse_text);
4041       YY_BREAK case
4042         YY_STATE_EOF(AL_surfxml_random):FAIL
4043         ("EOF in attribute list of `random' element.");
4044       YY_BREAK case 76:
4045 /* rule 76 can match eol */
4046         YY_RULE_SETUP {
4047         LEAVE;
4048         ETag_surfxml_random();
4049         popbuffer();            /* attribute */
4050         switch (YY_START) {
4051         case S_surfxml_platform_2:
4052         case S_surfxml_platform_3:
4053         case S_surfxml_platform:
4054           SET(S_surfxml_platform_3);
4055           break;
4056       }} YY_BREAK case 77:
4057 /* rule 77 can match eol */
4058        
4059         YY_RULE_SETUP
4060         FAIL("Unexpected end-tag `%s': `</random>' expected.",
4061              surf_parse_text);
4062       YY_BREAK case 78:YY_RULE_SETUP
4063         FAIL("Unexpected character `%c': `</random>' expected.",
4064              surf_parse_text[0]);
4065       YY_BREAK case YY_STATE_EOF(S_surfxml_random_2):case
4066         YY_STATE_EOF(S_surfxml_random):case
4067         YY_STATE_EOF(E_surfxml_random):FAIL
4068         ("Premature EOF: `</random>' expected.");
4069       YY_BREAK case 79:
4070 /* rule 79 can match eol */
4071        
4072         YY_RULE_SETUP
4073         FAIL("Starting tag <trace:connect> is not allowed here.");
4074       YY_BREAK case 80:
4075 /* rule 80 can match eol */
4076         YY_RULE_SETUP {
4077         AX_surfxml_trace_c_connect_kind =
4078           A_surfxml_trace_c_connect_kind_HOST_AVAIL;
4079         AX_surfxml_trace_c_connect_trace = 0;
4080         AX_surfxml_trace_c_connect_element = 0;
4081         ENTER(AL_surfxml_trace_c_connect);
4082         pushbuffer(0);
4083       } YY_BREAK case 81:
4084 /* rule 81 can match eol */
4085       case 82:
4086 /* rule 82 can match eol */
4087        
4088         YY_RULE_SETUP
4089         A_surfxml_trace_c_connect_kind =
4090         A_surfxml_trace_c_connect_kind_HOST_AVAIL;
4091       YY_BREAK case 83:
4092 /* rule 83 can match eol */
4093       case 84:
4094 /* rule 84 can match eol */
4095        
4096         YY_RULE_SETUP
4097         A_surfxml_trace_c_connect_kind = A_surfxml_trace_c_connect_kind_POWER;
4098       YY_BREAK case 85:
4099 /* rule 85 can match eol */
4100       case 86:
4101 /* rule 86 can match eol */
4102        
4103         YY_RULE_SETUP
4104         A_surfxml_trace_c_connect_kind =
4105         A_surfxml_trace_c_connect_kind_LINK_AVAIL;
4106       YY_BREAK case 87:
4107 /* rule 87 can match eol */
4108       case 88:
4109 /* rule 88 can match eol */
4110        
4111         YY_RULE_SETUP
4112         A_surfxml_trace_c_connect_kind =
4113         A_surfxml_trace_c_connect_kind_BANDWIDTH;
4114       YY_BREAK case 89:
4115 /* rule 89 can match eol */
4116       case 90:
4117 /* rule 90 can match eol */
4118        
4119         YY_RULE_SETUP
4120         A_surfxml_trace_c_connect_kind =
4121         A_surfxml_trace_c_connect_kind_LATENCY;
4122       YY_BREAK case 91:
4123 /* rule 91 can match eol */
4124         YY_RULE_SETUP ENTER(VALUE1);
4125       BUFFERSET(AX_surfxml_trace_c_connect_trace);
4126       YY_BREAK case 92:
4127 /* rule 92 can match eol */
4128         YY_RULE_SETUP ENTER(VALUE2);
4129       BUFFERSET(AX_surfxml_trace_c_connect_trace);
4130       YY_BREAK case 93:
4131 /* rule 93 can match eol */
4132         YY_RULE_SETUP ENTER(VALUE1);
4133       BUFFERSET(AX_surfxml_trace_c_connect_element);
4134       YY_BREAK case 94:
4135 /* rule 94 can match eol */
4136         YY_RULE_SETUP ENTER(VALUE2);
4137       BUFFERSET(AX_surfxml_trace_c_connect_element);
4138       YY_BREAK case 95:YY_RULE_SETUP {
4139         if (!AX_surfxml_trace_c_connect_trace)
4140           FAIL
4141             ("Required attribute `trace' not set for `trace:connect' element.");
4142         if (!AX_surfxml_trace_c_connect_element)
4143           FAIL
4144             ("Required attribute `element' not set for `trace:connect' element.");
4145         LEAVE;
4146         STag_surfxml_trace_c_connect();
4147         surfxml_pcdata_ix = 0;
4148         ENTER(E_surfxml_trace_c_connect);
4149       } YY_BREAK case 96:YY_RULE_SETUP {
4150         if (!AX_surfxml_trace_c_connect_trace)
4151           FAIL
4152             ("Required attribute `trace' not set for `trace:connect' element.");
4153         if (!AX_surfxml_trace_c_connect_element)
4154           FAIL
4155             ("Required attribute `element' not set for `trace:connect' element.");
4156         LEAVE;
4157         STag_surfxml_trace_c_connect();
4158         surfxml_pcdata_ix = 0;
4159         ETag_surfxml_trace_c_connect();
4160         popbuffer();            /* attribute */
4161         switch (YY_START) {
4162         case S_surfxml_platform_5:
4163         case S_surfxml_platform_1:
4164         case S_surfxml_platform_3:
4165         case S_surfxml_platform:
4166         case S_surfxml_platform_4:
4167           SET(S_surfxml_platform_5);
4168           break;
4169           case S_surfxml_platform_2:SET(S_surfxml_platform_3);
4170           break;
4171       }} YY_BREAK case 97:YY_RULE_SETUP
4172         FAIL
4173         ("Unexpected character `%c' in attribute list of trace:connect element.",
4174          surf_parse_text[0]);
4175       YY_BREAK case 98:YY_RULE_SETUP
4176         FAIL("Bad attribute `%s' in `trace:connect' element start tag.",
4177              surf_parse_text);
4178       YY_BREAK case
4179         YY_STATE_EOF(AL_surfxml_trace_c_connect):FAIL
4180         ("EOF in attribute list of `trace:connect' element.");
4181       YY_BREAK case 99:
4182 /* rule 99 can match eol */
4183         YY_RULE_SETUP {
4184         LEAVE;
4185         ETag_surfxml_trace_c_connect();
4186         popbuffer();            /* attribute */
4187         switch (YY_START) {
4188         case S_surfxml_platform_5:
4189         case S_surfxml_platform_1:
4190         case S_surfxml_platform_3:
4191         case S_surfxml_platform:
4192         case S_surfxml_platform_4:
4193           SET(S_surfxml_platform_5);
4194           break;
4195           case S_surfxml_platform_2:SET(S_surfxml_platform_3);
4196           break;
4197       }} YY_BREAK case 100:
4198 /* rule 100 can match eol */
4199        
4200         YY_RULE_SETUP
4201         FAIL("Unexpected end-tag `%s': `</trace:connect>' expected.",
4202              surf_parse_text);
4203       YY_BREAK case 101:YY_RULE_SETUP
4204         FAIL("Unexpected character `%c': `</trace:connect>' expected.",
4205              surf_parse_text[0]);
4206       YY_BREAK case
4207         YY_STATE_EOF(E_surfxml_trace_c_connect):FAIL
4208         ("Premature EOF: `</trace:connect>' expected.");
4209       YY_BREAK case 102:
4210 /* rule 102 can match eol */
4211         YY_RULE_SETUP FAIL("Starting tag <set> is not allowed here.");
4212       YY_BREAK case 103:
4213 /* rule 103 can match eol */
4214         YY_RULE_SETUP {
4215         AX_surfxml_set_id = 0;
4216         AX_surfxml_set_prefix = 0;
4217         AX_surfxml_set_suffix = 0;
4218         AX_surfxml_set_radical = 0;
4219         ENTER(AL_surfxml_set);
4220         pushbuffer(0);
4221       } YY_BREAK case 104:
4222 /* rule 104 can match eol */
4223         YY_RULE_SETUP ENTER(VALUE1);
4224       BUFFERSET(AX_surfxml_set_id);
4225       YY_BREAK case 105:
4226 /* rule 105 can match eol */
4227         YY_RULE_SETUP ENTER(VALUE2);
4228       BUFFERSET(AX_surfxml_set_id);
4229       YY_BREAK case 106:
4230 /* rule 106 can match eol */
4231         YY_RULE_SETUP ENTER(VALUE1);
4232       BUFFERSET(AX_surfxml_set_prefix);
4233       YY_BREAK case 107:
4234 /* rule 107 can match eol */
4235         YY_RULE_SETUP ENTER(VALUE2);
4236       BUFFERSET(AX_surfxml_set_prefix);
4237       YY_BREAK case 108:
4238 /* rule 108 can match eol */
4239         YY_RULE_SETUP ENTER(VALUE1);
4240       BUFFERSET(AX_surfxml_set_suffix);
4241       YY_BREAK case 109:
4242 /* rule 109 can match eol */
4243         YY_RULE_SETUP ENTER(VALUE2);
4244       BUFFERSET(AX_surfxml_set_suffix);
4245       YY_BREAK case 110:
4246 /* rule 110 can match eol */
4247         YY_RULE_SETUP ENTER(VALUE1);
4248       BUFFERSET(AX_surfxml_set_radical);
4249       YY_BREAK case 111:
4250 /* rule 111 can match eol */
4251         YY_RULE_SETUP ENTER(VALUE2);
4252       BUFFERSET(AX_surfxml_set_radical);
4253       YY_BREAK case 112:YY_RULE_SETUP {
4254         if (!AX_surfxml_set_id)
4255           FAIL("Required attribute `id' not set for `set' element.");
4256         if (!AX_surfxml_set_prefix)
4257           FAIL("Required attribute `prefix' not set for `set' element.");
4258         if (!AX_surfxml_set_suffix)
4259           FAIL("Required attribute `suffix' not set for `set' element.");
4260         if (!AX_surfxml_set_radical)
4261           FAIL("Required attribute `radical' not set for `set' element.");
4262         LEAVE;
4263         STag_surfxml_set();
4264         surfxml_pcdata_ix = 0;
4265         ENTER(E_surfxml_set);
4266       } YY_BREAK case 113:YY_RULE_SETUP {
4267         if (!AX_surfxml_set_id)
4268           FAIL("Required attribute `id' not set for `set' element.");
4269         if (!AX_surfxml_set_prefix)
4270           FAIL("Required attribute `prefix' not set for `set' element.");
4271         if (!AX_surfxml_set_suffix)
4272           FAIL("Required attribute `suffix' not set for `set' element.");
4273         if (!AX_surfxml_set_radical)
4274           FAIL("Required attribute `radical' not set for `set' element.");
4275         LEAVE;
4276         STag_surfxml_set();
4277         surfxml_pcdata_ix = 0;
4278         ETag_surfxml_set();
4279         popbuffer();            /* attribute */
4280         switch (YY_START) {
4281         case S_surfxml_platform_2:
4282         case S_surfxml_platform_3:
4283         case S_surfxml_platform:
4284           SET(S_surfxml_platform_3);
4285           break;
4286       }} YY_BREAK case 114:YY_RULE_SETUP
4287         FAIL("Unexpected character `%c' in attribute list of set element.",
4288              surf_parse_text[0]);
4289       YY_BREAK case 115:YY_RULE_SETUP
4290         FAIL("Bad attribute `%s' in `set' element start tag.",
4291              surf_parse_text);
4292       YY_BREAK case
4293         YY_STATE_EOF(AL_surfxml_set):FAIL
4294         ("EOF in attribute list of `set' element.");
4295       YY_BREAK case 116:
4296 /* rule 116 can match eol */
4297         YY_RULE_SETUP {
4298         LEAVE;
4299         ETag_surfxml_set();
4300         popbuffer();            /* attribute */
4301         switch (YY_START) {
4302         case S_surfxml_platform_2:
4303         case S_surfxml_platform_3:
4304         case S_surfxml_platform:
4305           SET(S_surfxml_platform_3);
4306           break;
4307       }} YY_BREAK case 117:
4308 /* rule 117 can match eol */
4309        
4310         YY_RULE_SETUP
4311         FAIL("Unexpected end-tag `%s': `</set>' expected.", surf_parse_text);
4312       YY_BREAK case 118:YY_RULE_SETUP
4313         FAIL("Unexpected character `%c': `</set>' expected.",
4314              surf_parse_text[0]);
4315       YY_BREAK case
4316         YY_STATE_EOF(E_surfxml_set):FAIL("Premature EOF: `</set>' expected.");
4317       YY_BREAK case 119:
4318 /* rule 119 can match eol */
4319         YY_RULE_SETUP FAIL("Starting tag <foreach> is not allowed here.");
4320       YY_BREAK case 120:
4321 /* rule 120 can match eol */
4322         YY_RULE_SETUP {
4323         AX_surfxml_foreach_set_id = 0;
4324         ENTER(AL_surfxml_foreach);
4325         pushbuffer(0);
4326       } YY_BREAK case 121:
4327 /* rule 121 can match eol */
4328         YY_RULE_SETUP ENTER(VALUE1);
4329       BUFFERSET(AX_surfxml_foreach_set_id);
4330       YY_BREAK case 122:
4331 /* rule 122 can match eol */
4332         YY_RULE_SETUP ENTER(VALUE2);
4333       BUFFERSET(AX_surfxml_foreach_set_id);
4334       YY_BREAK case 123:YY_RULE_SETUP {
4335         if (!AX_surfxml_foreach_set_id)
4336           FAIL("Required attribute `set_id' not set for `foreach' element.");
4337         LEAVE;
4338         STag_surfxml_foreach();
4339         surfxml_pcdata_ix = 0;
4340         ENTER(S_surfxml_foreach);
4341       } YY_BREAK case 124:YY_RULE_SETUP
4342         FAIL("`foreach' element cannot be empty.");
4343       YY_BREAK case 125:YY_RULE_SETUP
4344         FAIL
4345         ("Unexpected character `%c' in attribute list of foreach element.",
4346          surf_parse_text[0]);
4347       YY_BREAK case 126:YY_RULE_SETUP
4348         FAIL("Bad attribute `%s' in `foreach' element start tag.",
4349              surf_parse_text);
4350       YY_BREAK case
4351         YY_STATE_EOF(AL_surfxml_foreach):FAIL
4352         ("EOF in attribute list of `foreach' element.");
4353       YY_BREAK case 127:
4354 /* rule 127 can match eol */
4355         YY_RULE_SETUP {
4356         LEAVE;
4357         ETag_surfxml_foreach();
4358         popbuffer();            /* attribute */
4359         switch (YY_START) {
4360         case S_surfxml_platform_2:
4361         case S_surfxml_platform_3:
4362         case S_surfxml_platform:
4363           SET(S_surfxml_platform_3);
4364           break;
4365       }} YY_BREAK case 128:
4366 /* rule 128 can match eol */
4367        
4368         YY_RULE_SETUP
4369         FAIL("Unexpected end-tag `%s': `</foreach>' expected.",
4370              surf_parse_text);
4371       YY_BREAK case 129:YY_RULE_SETUP
4372         FAIL("Unexpected character `%c': `</foreach>' expected.",
4373              surf_parse_text[0]);
4374       YY_BREAK case
4375         YY_STATE_EOF(E_surfxml_foreach):FAIL
4376         ("Premature EOF: `</foreach>' expected.");
4377       YY_BREAK case 130:
4378 /* rule 130 can match eol */
4379         YY_RULE_SETUP FAIL("Starting tag <host> is not allowed here.");
4380       YY_BREAK case 131:
4381 /* rule 131 can match eol */
4382         YY_RULE_SETUP {
4383         AX_surfxml_host_id = 0;
4384         AX_surfxml_host_power = 0;
4385         AX_surfxml_host_availability = 69;
4386         AX_surfxml_host_availability_file = 0;
4387         AX_surfxml_host_state = A_surfxml_host_state_ON;
4388         AX_surfxml_host_state_file = 0;
4389         AX_surfxml_host_interference_send = 73;
4390         AX_surfxml_host_interference_recv = 77;
4391         AX_surfxml_host_interference_send_recv = 81;
4392         AX_surfxml_host_max_outgoing_rate = 85;
4393         ENTER(AL_surfxml_host);
4394         pushbuffer(0);
4395       } YY_BREAK case 132:
4396 /* rule 132 can match eol */
4397         YY_RULE_SETUP ENTER(VALUE1);
4398       BUFFERSET(AX_surfxml_host_id);
4399       YY_BREAK case 133:
4400 /* rule 133 can match eol */
4401         YY_RULE_SETUP ENTER(VALUE2);
4402       BUFFERSET(AX_surfxml_host_id);
4403       YY_BREAK case 134:
4404 /* rule 134 can match eol */
4405         YY_RULE_SETUP ENTER(VALUE1);
4406       BUFFERSET(AX_surfxml_host_power);
4407       YY_BREAK case 135:
4408 /* rule 135 can match eol */
4409         YY_RULE_SETUP ENTER(VALUE2);
4410       BUFFERSET(AX_surfxml_host_power);
4411       YY_BREAK case 136:
4412 /* rule 136 can match eol */
4413         YY_RULE_SETUP ENTER(VALUE1);
4414       BUFFERSET(AX_surfxml_host_availability);
4415       YY_BREAK case 137:
4416 /* rule 137 can match eol */
4417         YY_RULE_SETUP ENTER(VALUE2);
4418       BUFFERSET(AX_surfxml_host_availability);
4419       YY_BREAK case 138:
4420 /* rule 138 can match eol */
4421         YY_RULE_SETUP ENTER(VALUE1);
4422       BUFFERSET(AX_surfxml_host_availability_file);
4423       YY_BREAK case 139:
4424 /* rule 139 can match eol */
4425         YY_RULE_SETUP ENTER(VALUE2);
4426       BUFFERSET(AX_surfxml_host_availability_file);
4427       YY_BREAK case 140:
4428 /* rule 140 can match eol */
4429       case 141:
4430 /* rule 141 can match eol */
4431         YY_RULE_SETUP A_surfxml_host_state = A_surfxml_host_state_ON;
4432       YY_BREAK case 142:
4433 /* rule 142 can match eol */
4434       case 143:
4435 /* rule 143 can match eol */
4436         YY_RULE_SETUP A_surfxml_host_state = A_surfxml_host_state_OFF;
4437       YY_BREAK case 144:
4438 /* rule 144 can match eol */
4439         YY_RULE_SETUP ENTER(VALUE1);
4440       BUFFERSET(AX_surfxml_host_state_file);
4441       YY_BREAK case 145:
4442 /* rule 145 can match eol */
4443         YY_RULE_SETUP ENTER(VALUE2);
4444       BUFFERSET(AX_surfxml_host_state_file);
4445       YY_BREAK case 146:
4446 /* rule 146 can match eol */
4447         YY_RULE_SETUP ENTER(VALUE1);
4448       BUFFERSET(AX_surfxml_host_interference_send);
4449       YY_BREAK case 147:
4450 /* rule 147 can match eol */
4451         YY_RULE_SETUP ENTER(VALUE2);
4452       BUFFERSET(AX_surfxml_host_interference_send);
4453       YY_BREAK case 148:
4454 /* rule 148 can match eol */
4455         YY_RULE_SETUP ENTER(VALUE1);
4456       BUFFERSET(AX_surfxml_host_interference_recv);
4457       YY_BREAK case 149:
4458 /* rule 149 can match eol */
4459         YY_RULE_SETUP ENTER(VALUE2);
4460       BUFFERSET(AX_surfxml_host_interference_recv);
4461       YY_BREAK case 150:
4462 /* rule 150 can match eol */
4463         YY_RULE_SETUP ENTER(VALUE1);
4464       BUFFERSET(AX_surfxml_host_interference_send_recv);
4465       YY_BREAK case 151:
4466 /* rule 151 can match eol */
4467         YY_RULE_SETUP ENTER(VALUE2);
4468       BUFFERSET(AX_surfxml_host_interference_send_recv);
4469       YY_BREAK case 152:
4470 /* rule 152 can match eol */
4471         YY_RULE_SETUP ENTER(VALUE1);
4472       BUFFERSET(AX_surfxml_host_max_outgoing_rate);
4473       YY_BREAK case 153:
4474 /* rule 153 can match eol */
4475         YY_RULE_SETUP ENTER(VALUE2);
4476       BUFFERSET(AX_surfxml_host_max_outgoing_rate);
4477       YY_BREAK case 154:YY_RULE_SETUP {
4478         if (!AX_surfxml_host_id)
4479           FAIL("Required attribute `id' not set for `host' element.");
4480         if (!AX_surfxml_host_power)
4481           FAIL("Required attribute `power' not set for `host' element.");
4482         LEAVE;
4483         STag_surfxml_host();
4484         surfxml_pcdata_ix = 0;
4485         ENTER(S_surfxml_host);
4486       } YY_BREAK case 155:YY_RULE_SETUP {
4487         if (!AX_surfxml_host_id)
4488           FAIL("Required attribute `id' not set for `host' element.");
4489         if (!AX_surfxml_host_power)
4490           FAIL("Required attribute `power' not set for `host' element.");
4491         LEAVE;
4492         STag_surfxml_host();
4493         surfxml_pcdata_ix = 0;
4494         ETag_surfxml_host();
4495         popbuffer();            /* attribute */
4496         switch (YY_START) {
4497         case S_surfxml_platform_2:
4498         case S_surfxml_platform_3:
4499         case S_surfxml_platform:
4500           SET(S_surfxml_platform_3);
4501           break;
4502           case S_surfxml_foreach:SET(S_surfxml_foreach_1);
4503           break;
4504       }} YY_BREAK case 156:YY_RULE_SETUP
4505         FAIL("Unexpected character `%c' in attribute list of host element.",
4506              surf_parse_text[0]);
4507       YY_BREAK case 157:YY_RULE_SETUP
4508         FAIL("Bad attribute `%s' in `host' element start tag.",
4509              surf_parse_text);
4510       YY_BREAK case
4511         YY_STATE_EOF(AL_surfxml_host):FAIL
4512         ("EOF in attribute list of `host' element.");
4513       YY_BREAK case 158:
4514 /* rule 158 can match eol */
4515         YY_RULE_SETUP {
4516         LEAVE;
4517         ETag_surfxml_host();
4518         popbuffer();            /* attribute */
4519         switch (YY_START) {
4520         case S_surfxml_platform_2:
4521         case S_surfxml_platform_3:
4522         case S_surfxml_platform:
4523           SET(S_surfxml_platform_3);
4524           break;
4525           case S_surfxml_foreach:SET(S_surfxml_foreach_1);
4526           break;
4527       }} YY_BREAK case 159:
4528 /* rule 159 can match eol */
4529        
4530         YY_RULE_SETUP
4531         FAIL("Unexpected end-tag `%s': `</host>' expected.", surf_parse_text);
4532       YY_BREAK case 160:YY_RULE_SETUP
4533         FAIL("Unexpected character `%c': `</host>' expected.",
4534              surf_parse_text[0]);
4535       YY_BREAK case YY_STATE_EOF(S_surfxml_host):case
4536         YY_STATE_EOF(E_surfxml_host):case
4537         YY_STATE_EOF(S_surfxml_host_2):FAIL
4538         ("Premature EOF: `</host>' expected.");
4539       YY_BREAK case 161:
4540 /* rule 161 can match eol */
4541         YY_RULE_SETUP FAIL("Starting tag <prop> is not allowed here.");
4542       YY_BREAK case 162:
4543 /* rule 162 can match eol */
4544         YY_RULE_SETUP {
4545         AX_surfxml_prop_id = 0;
4546         AX_surfxml_prop_value = 0;
4547         ENTER(AL_surfxml_prop);
4548         pushbuffer(0);
4549       } YY_BREAK case 163:
4550 /* rule 163 can match eol */
4551         YY_RULE_SETUP ENTER(VALUE1);
4552       BUFFERSET(AX_surfxml_prop_id);
4553       YY_BREAK case 164:
4554 /* rule 164 can match eol */
4555         YY_RULE_SETUP ENTER(VALUE2);
4556       BUFFERSET(AX_surfxml_prop_id);
4557       YY_BREAK case 165:
4558 /* rule 165 can match eol */
4559         YY_RULE_SETUP ENTER(VALUE1);
4560       BUFFERSET(AX_surfxml_prop_value);
4561       YY_BREAK case 166:
4562 /* rule 166 can match eol */
4563         YY_RULE_SETUP ENTER(VALUE2);
4564       BUFFERSET(AX_surfxml_prop_value);
4565       YY_BREAK case 167:YY_RULE_SETUP {
4566         if (!AX_surfxml_prop_id)
4567           FAIL("Required attribute `id' not set for `prop' element.");
4568         if (!AX_surfxml_prop_value)
4569           FAIL("Required attribute `value' not set for `prop' element.");
4570         LEAVE;
4571         STag_surfxml_prop();
4572         surfxml_pcdata_ix = 0;
4573         ENTER(E_surfxml_prop);
4574       } YY_BREAK case 168:YY_RULE_SETUP {
4575         if (!AX_surfxml_prop_id)
4576           FAIL("Required attribute `id' not set for `prop' element.");
4577         if (!AX_surfxml_prop_value)
4578           FAIL("Required attribute `value' not set for `prop' element.");
4579         LEAVE;
4580         STag_surfxml_prop();
4581         surfxml_pcdata_ix = 0;
4582         ETag_surfxml_prop();
4583         popbuffer();            /* attribute */
4584         switch (YY_START) {
4585         case S_surfxml_random:
4586         case S_surfxml_random_2:
4587         case S_surfxml_random_1:
4588           SET(S_surfxml_random_2);
4589           break;
4590           case S_surfxml_process_1:case S_surfxml_process:case
4591             S_surfxml_process_2:SET(S_surfxml_process_2);
4592           break;
4593           case S_surfxml_host:case S_surfxml_host_1:case
4594             S_surfxml_host_2:SET(S_surfxml_host_2);
4595           break;
4596           case S_surfxml_link_1:case S_surfxml_link_2:case
4597             S_surfxml_link:SET(S_surfxml_link_2);
4598           break;
4599       }} YY_BREAK case 169:YY_RULE_SETUP
4600         FAIL("Unexpected character `%c' in attribute list of prop element.",
4601              surf_parse_text[0]);
4602       YY_BREAK case 170:YY_RULE_SETUP
4603         FAIL("Bad attribute `%s' in `prop' element start tag.",
4604              surf_parse_text);
4605       YY_BREAK case
4606         YY_STATE_EOF(AL_surfxml_prop):FAIL
4607         ("EOF in attribute list of `prop' element.");
4608       YY_BREAK case 171:
4609 /* rule 171 can match eol */
4610         YY_RULE_SETUP {
4611         LEAVE;
4612         ETag_surfxml_prop();
4613         popbuffer();            /* attribute */
4614         switch (YY_START) {
4615         case S_surfxml_random:
4616         case S_surfxml_random_2:
4617         case S_surfxml_random_1:
4618           SET(S_surfxml_random_2);
4619           break;
4620           case S_surfxml_process_1:case S_surfxml_process:case
4621             S_surfxml_process_2:SET(S_surfxml_process_2);
4622           break;
4623           case S_surfxml_host:case S_surfxml_host_1:case
4624             S_surfxml_host_2:SET(S_surfxml_host_2);
4625           break;
4626           case S_surfxml_link_1:case S_surfxml_link_2:case
4627             S_surfxml_link:SET(S_surfxml_link_2);
4628           break;
4629       }} YY_BREAK case 172:
4630 /* rule 172 can match eol */
4631        
4632         YY_RULE_SETUP
4633         FAIL("Unexpected end-tag `%s': `</prop>' expected.", surf_parse_text);
4634       YY_BREAK case 173:YY_RULE_SETUP
4635         FAIL("Unexpected character `%c': `</prop>' expected.",
4636              surf_parse_text[0]);
4637       YY_BREAK case
4638         YY_STATE_EOF(E_surfxml_prop):FAIL
4639         ("Premature EOF: `</prop>' expected.");
4640       YY_BREAK case 174:
4641 /* rule 174 can match eol */
4642         YY_RULE_SETUP FAIL("Starting tag <cluster> is not allowed here.");
4643       YY_BREAK case 175:
4644 /* rule 175 can match eol */
4645         YY_RULE_SETUP {
4646         AX_surfxml_cluster_id = 0;
4647         AX_surfxml_cluster_prefix = 0;
4648         AX_surfxml_cluster_suffix = 0;
4649         AX_surfxml_cluster_radical = 0;
4650         AX_surfxml_cluster_power = 0;
4651         AX_surfxml_cluster_bw = 0;
4652         AX_surfxml_cluster_lat = 0;
4653         AX_surfxml_cluster_bb_bw = 0;
4654         AX_surfxml_cluster_bb_lat = 0;
4655         ENTER(AL_surfxml_cluster);
4656         pushbuffer(0);
4657       } YY_BREAK case 176:
4658 /* rule 176 can match eol */
4659         YY_RULE_SETUP ENTER(VALUE1);
4660       BUFFERSET(AX_surfxml_cluster_id);
4661       YY_BREAK case 177:
4662 /* rule 177 can match eol */
4663         YY_RULE_SETUP ENTER(VALUE2);
4664       BUFFERSET(AX_surfxml_cluster_id);
4665       YY_BREAK case 178:
4666 /* rule 178 can match eol */
4667         YY_RULE_SETUP ENTER(VALUE1);
4668       BUFFERSET(AX_surfxml_cluster_prefix);
4669       YY_BREAK case 179:
4670 /* rule 179 can match eol */
4671         YY_RULE_SETUP ENTER(VALUE2);
4672       BUFFERSET(AX_surfxml_cluster_prefix);
4673       YY_BREAK case 180:
4674 /* rule 180 can match eol */
4675         YY_RULE_SETUP ENTER(VALUE1);
4676       BUFFERSET(AX_surfxml_cluster_suffix);
4677       YY_BREAK case 181:
4678 /* rule 181 can match eol */
4679         YY_RULE_SETUP ENTER(VALUE2);
4680       BUFFERSET(AX_surfxml_cluster_suffix);
4681       YY_BREAK case 182:
4682 /* rule 182 can match eol */
4683         YY_RULE_SETUP ENTER(VALUE1);
4684       BUFFERSET(AX_surfxml_cluster_radical);
4685       YY_BREAK case 183:
4686 /* rule 183 can match eol */
4687         YY_RULE_SETUP ENTER(VALUE2);
4688       BUFFERSET(AX_surfxml_cluster_radical);
4689       YY_BREAK case 184:
4690 /* rule 184 can match eol */
4691         YY_RULE_SETUP ENTER(VALUE1);
4692       BUFFERSET(AX_surfxml_cluster_power);
4693       YY_BREAK case 185:
4694 /* rule 185 can match eol */
4695         YY_RULE_SETUP ENTER(VALUE2);
4696       BUFFERSET(AX_surfxml_cluster_power);
4697       YY_BREAK case 186:
4698 /* rule 186 can match eol */
4699         YY_RULE_SETUP ENTER(VALUE1);
4700       BUFFERSET(AX_surfxml_cluster_bw);
4701       YY_BREAK case 187:
4702 /* rule 187 can match eol */
4703         YY_RULE_SETUP ENTER(VALUE2);
4704       BUFFERSET(AX_surfxml_cluster_bw);
4705       YY_BREAK case 188:
4706 /* rule 188 can match eol */
4707         YY_RULE_SETUP ENTER(VALUE1);
4708       BUFFERSET(AX_surfxml_cluster_lat);
4709       YY_BREAK case 189:
4710 /* rule 189 can match eol */
4711         YY_RULE_SETUP ENTER(VALUE2);
4712       BUFFERSET(AX_surfxml_cluster_lat);
4713       YY_BREAK case 190:
4714 /* rule 190 can match eol */
4715         YY_RULE_SETUP ENTER(VALUE1);
4716       BUFFERSET(AX_surfxml_cluster_bb_bw);
4717       YY_BREAK case 191:
4718 /* rule 191 can match eol */
4719         YY_RULE_SETUP ENTER(VALUE2);
4720       BUFFERSET(AX_surfxml_cluster_bb_bw);
4721       YY_BREAK case 192:
4722 /* rule 192 can match eol */
4723         YY_RULE_SETUP ENTER(VALUE1);
4724       BUFFERSET(AX_surfxml_cluster_bb_lat);
4725       YY_BREAK case 193:
4726 /* rule 193 can match eol */
4727         YY_RULE_SETUP ENTER(VALUE2);
4728       BUFFERSET(AX_surfxml_cluster_bb_lat);
4729       YY_BREAK case 194:YY_RULE_SETUP {
4730         if (!AX_surfxml_cluster_id)
4731           FAIL("Required attribute `id' not set for `cluster' element.");
4732         if (!AX_surfxml_cluster_prefix)
4733           FAIL("Required attribute `prefix' not set for `cluster' element.");
4734         if (!AX_surfxml_cluster_suffix)
4735           FAIL("Required attribute `suffix' not set for `cluster' element.");
4736         if (!AX_surfxml_cluster_radical)
4737           FAIL("Required attribute `radical' not set for `cluster' element.");
4738         if (!AX_surfxml_cluster_power)
4739           FAIL("Required attribute `power' not set for `cluster' element.");
4740         if (!AX_surfxml_cluster_bw)
4741           FAIL("Required attribute `bw' not set for `cluster' element.");
4742         if (!AX_surfxml_cluster_lat)
4743           FAIL("Required attribute `lat' not set for `cluster' element.");
4744         if (!AX_surfxml_cluster_bb_bw)
4745           FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4746         if (!AX_surfxml_cluster_bb_lat)
4747           FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4748         LEAVE;
4749         STag_surfxml_cluster();
4750         surfxml_pcdata_ix = 0;
4751         ENTER(E_surfxml_cluster);
4752       } YY_BREAK case 195:YY_RULE_SETUP {
4753         if (!AX_surfxml_cluster_id)
4754           FAIL("Required attribute `id' not set for `cluster' element.");
4755         if (!AX_surfxml_cluster_prefix)
4756           FAIL("Required attribute `prefix' not set for `cluster' element.");
4757         if (!AX_surfxml_cluster_suffix)
4758           FAIL("Required attribute `suffix' not set for `cluster' element.");
4759         if (!AX_surfxml_cluster_radical)
4760           FAIL("Required attribute `radical' not set for `cluster' element.");
4761         if (!AX_surfxml_cluster_power)
4762           FAIL("Required attribute `power' not set for `cluster' element.");
4763         if (!AX_surfxml_cluster_bw)
4764           FAIL("Required attribute `bw' not set for `cluster' element.");
4765         if (!AX_surfxml_cluster_lat)
4766           FAIL("Required attribute `lat' not set for `cluster' element.");
4767         if (!AX_surfxml_cluster_bb_bw)
4768           FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4769         if (!AX_surfxml_cluster_bb_lat)
4770           FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4771         LEAVE;
4772         STag_surfxml_cluster();
4773         surfxml_pcdata_ix = 0;
4774         ETag_surfxml_cluster();
4775         popbuffer();            /* attribute */
4776         switch (YY_START) {
4777         case S_surfxml_platform_2:
4778         case S_surfxml_platform:
4779         case S_surfxml_platform_3:
4780           SET(S_surfxml_platform_3);
4781           break;
4782       }} YY_BREAK case 196:YY_RULE_SETUP
4783         FAIL
4784         ("Unexpected character `%c' in attribute list of cluster element.",
4785          surf_parse_text[0]);
4786       YY_BREAK case 197:YY_RULE_SETUP
4787         FAIL("Bad attribute `%s' in `cluster' element start tag.",
4788              surf_parse_text);
4789       YY_BREAK case
4790         YY_STATE_EOF(AL_surfxml_cluster):FAIL
4791         ("EOF in attribute list of `cluster' element.");
4792       YY_BREAK case 198:
4793 /* rule 198 can match eol */
4794         YY_RULE_SETUP {
4795         LEAVE;
4796         ETag_surfxml_cluster();
4797         popbuffer();            /* attribute */
4798         switch (YY_START) {
4799         case S_surfxml_platform_2:
4800         case S_surfxml_platform:
4801         case S_surfxml_platform_3:
4802           SET(S_surfxml_platform_3);
4803           break;
4804       }} YY_BREAK case 199:
4805 /* rule 199 can match eol */
4806        
4807         YY_RULE_SETUP
4808         FAIL("Unexpected end-tag `%s': `</cluster>' expected.",
4809              surf_parse_text);
4810       YY_BREAK case 200:YY_RULE_SETUP
4811         FAIL("Unexpected character `%c': `</cluster>' expected.",
4812              surf_parse_text[0]);
4813       YY_BREAK case
4814         YY_STATE_EOF(E_surfxml_cluster):FAIL
4815         ("Premature EOF: `</cluster>' expected.");
4816       YY_BREAK case 201:
4817 /* rule 201 can match eol */
4818         YY_RULE_SETUP FAIL("Starting tag <router> is not allowed here.");
4819       YY_BREAK case 202:
4820 /* rule 202 can match eol */
4821         YY_RULE_SETUP {
4822         AX_surfxml_router_id = 0;
4823         ENTER(AL_surfxml_router);
4824         pushbuffer(0);
4825       } YY_BREAK case 203:
4826 /* rule 203 can match eol */
4827         YY_RULE_SETUP ENTER(VALUE1);
4828       BUFFERSET(AX_surfxml_router_id);
4829       YY_BREAK case 204:
4830 /* rule 204 can match eol */
4831         YY_RULE_SETUP ENTER(VALUE2);
4832       BUFFERSET(AX_surfxml_router_id);
4833       YY_BREAK case 205:YY_RULE_SETUP {
4834         if (!AX_surfxml_router_id)
4835           FAIL("Required attribute `id' not set for `router' element.");
4836         LEAVE;
4837         STag_surfxml_router();
4838         surfxml_pcdata_ix = 0;
4839         ENTER(E_surfxml_router);
4840       } YY_BREAK case 206:YY_RULE_SETUP {
4841         if (!AX_surfxml_router_id)
4842           FAIL("Required attribute `id' not set for `router' element.");
4843         LEAVE;
4844         STag_surfxml_router();
4845         surfxml_pcdata_ix = 0;
4846         ETag_surfxml_router();
4847         popbuffer();            /* attribute */
4848         switch (YY_START) {
4849         case S_surfxml_platform_2:
4850         case S_surfxml_platform:
4851         case S_surfxml_platform_3:
4852           SET(S_surfxml_platform_3);
4853           break;
4854       }} YY_BREAK case 207:YY_RULE_SETUP
4855         FAIL("Unexpected character `%c' in attribute list of router element.",
4856              surf_parse_text[0]);
4857       YY_BREAK case 208:YY_RULE_SETUP
4858         FAIL("Bad attribute `%s' in `router' element start tag.",
4859              surf_parse_text);
4860       YY_BREAK case
4861         YY_STATE_EOF(AL_surfxml_router):FAIL
4862         ("EOF in attribute list of `router' element.");
4863       YY_BREAK case 209:
4864 /* rule 209 can match eol */
4865         YY_RULE_SETUP {
4866         LEAVE;
4867         ETag_surfxml_router();
4868         popbuffer();            /* attribute */
4869         switch (YY_START) {
4870         case S_surfxml_platform_2:
4871         case S_surfxml_platform:
4872         case S_surfxml_platform_3:
4873           SET(S_surfxml_platform_3);
4874           break;
4875       }} YY_BREAK case 210:
4876 /* rule 210 can match eol */
4877        
4878         YY_RULE_SETUP
4879         FAIL("Unexpected end-tag `%s': `</router>' expected.",
4880              surf_parse_text);
4881       YY_BREAK case 211:YY_RULE_SETUP
4882         FAIL("Unexpected character `%c': `</router>' expected.",
4883              surf_parse_text[0]);
4884       YY_BREAK case
4885         YY_STATE_EOF(E_surfxml_router):FAIL
4886         ("Premature EOF: `</router>' expected.");
4887       YY_BREAK case 212:
4888 /* rule 212 can match eol */
4889         YY_RULE_SETUP FAIL("Starting tag <link> is not allowed here.");
4890       YY_BREAK case 213:
4891 /* rule 213 can match eol */
4892         YY_RULE_SETUP {
4893         AX_surfxml_link_id = 0;
4894         AX_surfxml_link_bandwidth = 0;
4895         AX_surfxml_link_bandwidth_file = 0;
4896         AX_surfxml_link_latency = 90;
4897         AX_surfxml_link_latency_file = 0;
4898         AX_surfxml_link_state = A_surfxml_link_state_ON;
4899         AX_surfxml_link_state_file = 0;
4900         AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
4901         ENTER(AL_surfxml_link);
4902         pushbuffer(0);
4903       } YY_BREAK case 214:
4904 /* rule 214 can match eol */
4905         YY_RULE_SETUP ENTER(VALUE1);
4906       BUFFERSET(AX_surfxml_link_id);
4907       YY_BREAK case 215:
4908 /* rule 215 can match eol */
4909         YY_RULE_SETUP ENTER(VALUE2);
4910       BUFFERSET(AX_surfxml_link_id);
4911       YY_BREAK case 216:
4912 /* rule 216 can match eol */
4913         YY_RULE_SETUP ENTER(VALUE1);
4914       BUFFERSET(AX_surfxml_link_bandwidth);
4915       YY_BREAK case 217:
4916 /* rule 217 can match eol */
4917         YY_RULE_SETUP ENTER(VALUE2);
4918       BUFFERSET(AX_surfxml_link_bandwidth);
4919       YY_BREAK case 218:
4920 /* rule 218 can match eol */
4921         YY_RULE_SETUP ENTER(VALUE1);
4922       BUFFERSET(AX_surfxml_link_bandwidth_file);
4923       YY_BREAK case 219:
4924 /* rule 219 can match eol */
4925         YY_RULE_SETUP ENTER(VALUE2);
4926       BUFFERSET(AX_surfxml_link_bandwidth_file);
4927       YY_BREAK case 220:
4928 /* rule 220 can match eol */
4929         YY_RULE_SETUP ENTER(VALUE1);
4930       BUFFERSET(AX_surfxml_link_latency);
4931       YY_BREAK case 221:
4932 /* rule 221 can match eol */
4933         YY_RULE_SETUP ENTER(VALUE2);
4934       BUFFERSET(AX_surfxml_link_latency);
4935       YY_BREAK case 222:
4936 /* rule 222 can match eol */
4937         YY_RULE_SETUP ENTER(VALUE1);
4938       BUFFERSET(AX_surfxml_link_latency_file);
4939       YY_BREAK case 223:
4940 /* rule 223 can match eol */
4941         YY_RULE_SETUP ENTER(VALUE2);
4942       BUFFERSET(AX_surfxml_link_latency_file);
4943       YY_BREAK case 224:
4944 /* rule 224 can match eol */
4945       case 225:
4946 /* rule 225 can match eol */
4947         YY_RULE_SETUP A_surfxml_link_state = A_surfxml_link_state_ON;
4948       YY_BREAK case 226:
4949 /* rule 226 can match eol */
4950       case 227:
4951 /* rule 227 can match eol */
4952         YY_RULE_SETUP A_surfxml_link_state = A_surfxml_link_state_OFF;
4953       YY_BREAK case 228:
4954 /* rule 228 can match eol */
4955         YY_RULE_SETUP ENTER(VALUE1);
4956       BUFFERSET(AX_surfxml_link_state_file);
4957       YY_BREAK case 229:
4958 /* rule 229 can match eol */
4959         YY_RULE_SETUP ENTER(VALUE2);
4960       BUFFERSET(AX_surfxml_link_state_file);
4961       YY_BREAK case 230:
4962 /* rule 230 can match eol */
4963       case 231:
4964 /* rule 231 can match eol */
4965        
4966         YY_RULE_SETUP
4967         A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
4968       YY_BREAK case 232:
4969 /* rule 232 can match eol */
4970       case 233:
4971 /* rule 233 can match eol */
4972        
4973         YY_RULE_SETUP
4974         A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;
4975       YY_BREAK case 234:YY_RULE_SETUP {
4976         if (!AX_surfxml_link_id)
4977           FAIL("Required attribute `id' not set for `link' element.");
4978         if (!AX_surfxml_link_bandwidth)
4979           FAIL("Required attribute `bandwidth' not set for `link' element.");
4980         LEAVE;
4981         STag_surfxml_link();
4982         surfxml_pcdata_ix = 0;
4983         ENTER(S_surfxml_link);
4984       } YY_BREAK case 235:YY_RULE_SETUP {
4985         if (!AX_surfxml_link_id)
4986           FAIL("Required attribute `id' not set for `link' element.");
4987         if (!AX_surfxml_link_bandwidth)
4988           FAIL("Required attribute `bandwidth' not set for `link' element.");
4989         LEAVE;
4990         STag_surfxml_link();
4991         surfxml_pcdata_ix = 0;
4992         ETag_surfxml_link();
4993         popbuffer();            /* attribute */
4994         switch (YY_START) {
4995         case S_surfxml_foreach:
4996         case S_surfxml_foreach_1:
4997           SET(E_surfxml_foreach);
4998           break;
4999           case S_surfxml_platform_2:case S_surfxml_platform:case
5000             S_surfxml_platform_3:SET(S_surfxml_platform_3);
5001           break;
5002       }} YY_BREAK case 236:YY_RULE_SETUP
5003         FAIL("Unexpected character `%c' in attribute list of link element.",
5004              surf_parse_text[0]);
5005       YY_BREAK case 237:YY_RULE_SETUP
5006         FAIL("Bad attribute `%s' in `link' element start tag.",
5007              surf_parse_text);
5008       YY_BREAK case
5009         YY_STATE_EOF(AL_surfxml_link):FAIL
5010         ("EOF in attribute list of `link' element.");
5011       YY_BREAK case 238:
5012 /* rule 238 can match eol */
5013         YY_RULE_SETUP {
5014         LEAVE;
5015         ETag_surfxml_link();
5016         popbuffer();            /* attribute */
5017         switch (YY_START) {
5018         case S_surfxml_foreach:
5019         case S_surfxml_foreach_1:
5020           SET(E_surfxml_foreach);
5021           break;
5022           case S_surfxml_platform_2:case S_surfxml_platform:case
5023             S_surfxml_platform_3:SET(S_surfxml_platform_3);
5024           break;
5025       }} YY_BREAK case 239:
5026 /* rule 239 can match eol */
5027        
5028         YY_RULE_SETUP
5029         FAIL("Unexpected end-tag `%s': `</link>' expected.", surf_parse_text);
5030       YY_BREAK case 240:YY_RULE_SETUP
5031         FAIL("Unexpected character `%c': `</link>' expected.",
5032              surf_parse_text[0]);
5033       YY_BREAK case YY_STATE_EOF(S_surfxml_link_2):case
5034         YY_STATE_EOF(E_surfxml_link):case
5035         YY_STATE_EOF(S_surfxml_link):FAIL
5036         ("Premature EOF: `</link>' expected.");
5037       YY_BREAK case 241:
5038 /* rule 241 can match eol */
5039         YY_RULE_SETUP FAIL("Starting tag <route:multi> is not allowed here.");
5040       YY_BREAK case 242:
5041 /* rule 242 can match eol */
5042         YY_RULE_SETUP {
5043         AX_surfxml_route_c_multi_src = 0;
5044         AX_surfxml_route_c_multi_dst = 0;
5045         AX_surfxml_route_c_multi_action =
5046           A_surfxml_route_c_multi_action_POSTPEND;
5047         AX_surfxml_route_c_multi_symmetric =
5048           A_surfxml_route_c_multi_symmetric_YES;
5049         ENTER(AL_surfxml_route_c_multi);
5050         pushbuffer(0);
5051       } YY_BREAK case 243:
5052 /* rule 243 can match eol */
5053         YY_RULE_SETUP ENTER(VALUE1);
5054       BUFFERSET(AX_surfxml_route_c_multi_src);
5055       YY_BREAK case 244:
5056 /* rule 244 can match eol */
5057         YY_RULE_SETUP ENTER(VALUE2);
5058       BUFFERSET(AX_surfxml_route_c_multi_src);
5059       YY_BREAK case 245:
5060 /* rule 245 can match eol */
5061         YY_RULE_SETUP ENTER(VALUE1);
5062       BUFFERSET(AX_surfxml_route_c_multi_dst);
5063       YY_BREAK case 246:
5064 /* rule 246 can match eol */
5065         YY_RULE_SETUP ENTER(VALUE2);
5066       BUFFERSET(AX_surfxml_route_c_multi_dst);
5067       YY_BREAK case 247:
5068 /* rule 247 can match eol */
5069       case 248:
5070 /* rule 248 can match eol */
5071        
5072         YY_RULE_SETUP
5073         A_surfxml_route_c_multi_action =
5074         A_surfxml_route_c_multi_action_POSTPEND;
5075       YY_BREAK case 249:
5076 /* rule 249 can match eol */
5077       case 250:
5078 /* rule 250 can match eol */
5079        
5080         YY_RULE_SETUP
5081         A_surfxml_route_c_multi_action =
5082         A_surfxml_route_c_multi_action_PREPEND;
5083       YY_BREAK case 251:
5084 /* rule 251 can match eol */
5085       case 252:
5086 /* rule 252 can match eol */
5087        
5088         YY_RULE_SETUP
5089         A_surfxml_route_c_multi_action =
5090         A_surfxml_route_c_multi_action_OVERRIDE;
5091       YY_BREAK case 253:
5092 /* rule 253 can match eol */
5093       case 254:
5094 /* rule 254 can match eol */
5095        
5096         YY_RULE_SETUP
5097         A_surfxml_route_c_multi_symmetric =
5098         A_surfxml_route_c_multi_symmetric_YES;
5099       YY_BREAK case 255:
5100 /* rule 255 can match eol */
5101       case 256:
5102 /* rule 256 can match eol */
5103        
5104         YY_RULE_SETUP
5105         A_surfxml_route_c_multi_symmetric =
5106         A_surfxml_route_c_multi_symmetric_NO;
5107       YY_BREAK case 257:YY_RULE_SETUP {
5108         if (!AX_surfxml_route_c_multi_src)
5109           FAIL("Required attribute `src' not set for `route:multi' element.");
5110         if (!AX_surfxml_route_c_multi_dst)
5111           FAIL("Required attribute `dst' not set for `route:multi' element.");
5112         LEAVE;
5113         STag_surfxml_route_c_multi();
5114         surfxml_pcdata_ix = 0;
5115         ENTER(S_surfxml_route_c_multi);
5116       } YY_BREAK case 258:YY_RULE_SETUP
5117         FAIL("`route:multi' element cannot be empty.");
5118       YY_BREAK case 259:YY_RULE_SETUP
5119         FAIL
5120         ("Unexpected character `%c' in attribute list of route:multi element.",
5121          surf_parse_text[0]);
5122       YY_BREAK case 260:YY_RULE_SETUP
5123         FAIL("Bad attribute `%s' in `route:multi' element start tag.",
5124              surf_parse_text);
5125       YY_BREAK case
5126         YY_STATE_EOF(AL_surfxml_route_c_multi):FAIL
5127         ("EOF in attribute list of `route:multi' element.");
5128       YY_BREAK case 261:
5129 /* rule 261 can match eol */
5130         YY_RULE_SETUP {
5131         LEAVE;
5132         ETag_surfxml_route_c_multi();
5133         popbuffer();            /* attribute */
5134         switch (YY_START) {
5135         case S_surfxml_platform_5:
5136         case S_surfxml_platform_1:
5137         case S_surfxml_platform:
5138         case S_surfxml_platform_3:
5139         case S_surfxml_platform_4:
5140           SET(S_surfxml_platform_5);
5141           break;
5142       }} YY_BREAK case 262:
5143 /* rule 262 can match eol */
5144        
5145         YY_RULE_SETUP
5146         FAIL("Unexpected end-tag `%s': `</route:multi>' expected.",
5147              surf_parse_text);
5148       YY_BREAK case 263:YY_RULE_SETUP
5149         FAIL("Unexpected character `%c': `</route:multi>' expected.",
5150              surf_parse_text[0]);
5151       YY_BREAK case YY_STATE_EOF(S_surfxml_route_c_multi_2):case
5152         YY_STATE_EOF(E_surfxml_route_c_multi):FAIL
5153         ("Premature EOF: `</route:multi>' expected.");
5154       YY_BREAK case 264:
5155 /* rule 264 can match eol */
5156         YY_RULE_SETUP FAIL("Starting tag <route> is not allowed here.");
5157       YY_BREAK case 265:
5158 /* rule 265 can match eol */
5159         YY_RULE_SETUP {
5160         AX_surfxml_route_src = 0;
5161         AX_surfxml_route_dst = 0;
5162         AX_surfxml_route_impact_on_src = 94;
5163         AX_surfxml_route_impact_on_dst = 98;
5164         AX_surfxml_route_impact_on_src_with_other_recv = 102;
5165         AX_surfxml_route_impact_on_dst_with_other_send = 106;
5166         AX_surfxml_route_action = A_surfxml_route_action_POSTPEND;
5167         ENTER(AL_surfxml_route);
5168         pushbuffer(0);
5169       } YY_BREAK case 266:
5170 /* rule 266 can match eol */
5171         YY_RULE_SETUP ENTER(VALUE1);
5172       BUFFERSET(AX_surfxml_route_src);
5173       YY_BREAK case 267:
5174 /* rule 267 can match eol */
5175         YY_RULE_SETUP ENTER(VALUE2);
5176       BUFFERSET(AX_surfxml_route_src);
5177       YY_BREAK case 268:
5178 /* rule 268 can match eol */
5179         YY_RULE_SETUP ENTER(VALUE1);
5180       BUFFERSET(AX_surfxml_route_dst);
5181       YY_BREAK case 269:
5182 /* rule 269 can match eol */
5183         YY_RULE_SETUP ENTER(VALUE2);
5184       BUFFERSET(AX_surfxml_route_dst);
5185       YY_BREAK case 270:
5186 /* rule 270 can match eol */
5187         YY_RULE_SETUP ENTER(VALUE1);
5188       BUFFERSET(AX_surfxml_route_impact_on_src);
5189       YY_BREAK case 271:
5190 /* rule 271 can match eol */
5191         YY_RULE_SETUP ENTER(VALUE2);
5192       BUFFERSET(AX_surfxml_route_impact_on_src);
5193       YY_BREAK case 272:
5194 /* rule 272 can match eol */
5195         YY_RULE_SETUP ENTER(VALUE1);
5196       BUFFERSET(AX_surfxml_route_impact_on_dst);
5197       YY_BREAK case 273:
5198 /* rule 273 can match eol */
5199         YY_RULE_SETUP ENTER(VALUE2);
5200       BUFFERSET(AX_surfxml_route_impact_on_dst);
5201       YY_BREAK case 274:
5202 /* rule 274 can match eol */
5203         YY_RULE_SETUP ENTER(VALUE1);
5204       BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
5205       YY_BREAK case 275:
5206 /* rule 275 can match eol */
5207         YY_RULE_SETUP ENTER(VALUE2);
5208       BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
5209       YY_BREAK case 276:
5210 /* rule 276 can match eol */
5211         YY_RULE_SETUP ENTER(VALUE1);
5212       BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
5213       YY_BREAK case 277:
5214 /* rule 277 can match eol */
5215         YY_RULE_SETUP ENTER(VALUE2);
5216       BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
5217       YY_BREAK case 278:
5218 /* rule 278 can match eol */
5219       case 279:
5220 /* rule 279 can match eol */
5221        
5222         YY_RULE_SETUP A_surfxml_route_action =
5223         A_surfxml_route_action_POSTPEND;
5224       YY_BREAK case 280:
5225 /* rule 280 can match eol */
5226       case 281:
5227 /* rule 281 can match eol */
5228         YY_RULE_SETUP A_surfxml_route_action = A_surfxml_route_action_PREPEND;
5229       YY_BREAK case 282:
5230 /* rule 282 can match eol */
5231       case 283:
5232 /* rule 283 can match eol */
5233        
5234         YY_RULE_SETUP A_surfxml_route_action =
5235         A_surfxml_route_action_OVERRIDE;
5236       YY_BREAK case 284:YY_RULE_SETUP {
5237         if (!AX_surfxml_route_src)
5238           FAIL("Required attribute `src' not set for `route' element.");
5239         if (!AX_surfxml_route_dst)
5240           FAIL("Required attribute `dst' not set for `route' element.");
5241         LEAVE;
5242         STag_surfxml_route();
5243         surfxml_pcdata_ix = 0;
5244         ENTER(S_surfxml_route);
5245       } YY_BREAK case 285:YY_RULE_SETUP {
5246         if (!AX_surfxml_route_src)
5247           FAIL("Required attribute `src' not set for `route' element.");
5248         if (!AX_surfxml_route_dst)
5249           FAIL("Required attribute `dst' not set for `route' element.");
5250         LEAVE;
5251         STag_surfxml_route();
5252         surfxml_pcdata_ix = 0;
5253         ETag_surfxml_route();
5254         popbuffer();            /* attribute */
5255         switch (YY_START) {
5256         case S_surfxml_platform_5:
5257         case S_surfxml_platform_1:
5258         case S_surfxml_platform:
5259         case S_surfxml_platform_3:
5260         case S_surfxml_platform_4:
5261           SET(S_surfxml_platform_5);
5262           break;
5263       }} YY_BREAK case 286:YY_RULE_SETUP
5264         FAIL("Unexpected character `%c' in attribute list of route element.",
5265              surf_parse_text[0]);
5266       YY_BREAK case 287:YY_RULE_SETUP
5267         FAIL("Bad attribute `%s' in `route' element start tag.",
5268              surf_parse_text);
5269       YY_BREAK case
5270         YY_STATE_EOF(AL_surfxml_route):FAIL
5271         ("EOF in attribute list of `route' element.");
5272       YY_BREAK case 288:
5273 /* rule 288 can match eol */
5274         YY_RULE_SETUP {
5275         LEAVE;
5276         ETag_surfxml_route();
5277         popbuffer();            /* attribute */
5278         switch (YY_START) {
5279         case S_surfxml_platform_5:
5280         case S_surfxml_platform_1:
5281         case S_surfxml_platform:
5282         case S_surfxml_platform_3:
5283         case S_surfxml_platform_4:
5284           SET(S_surfxml_platform_5);
5285           break;
5286       }} YY_BREAK case 289:
5287 /* rule 289 can match eol */
5288        
5289         YY_RULE_SETUP
5290         FAIL("Unexpected end-tag `%s': `</route>' expected.",
5291              surf_parse_text);
5292       YY_BREAK case 290:YY_RULE_SETUP
5293         FAIL("Unexpected character `%c': `</route>' expected.",
5294              surf_parse_text[0]);
5295       YY_BREAK case YY_STATE_EOF(S_surfxml_route):case
5296         YY_STATE_EOF(S_surfxml_route_2):case
5297         YY_STATE_EOF(E_surfxml_route):FAIL
5298         ("Premature EOF: `</route>' expected.");
5299       YY_BREAK case 291:
5300 /* rule 291 can match eol */
5301         YY_RULE_SETUP FAIL("Starting tag <link:ctn> is not allowed here.");
5302       YY_BREAK case 292:
5303 /* rule 292 can match eol */
5304         YY_RULE_SETUP {
5305         AX_surfxml_link_c_ctn_id = 0;
5306         ENTER(AL_surfxml_link_c_ctn);
5307         pushbuffer(0);
5308       } YY_BREAK case 293:
5309 /* rule 293 can match eol */
5310         YY_RULE_SETUP ENTER(VALUE1);
5311       BUFFERSET(AX_surfxml_link_c_ctn_id);
5312       YY_BREAK case 294:
5313 /* rule 294 can match eol */
5314         YY_RULE_SETUP ENTER(VALUE2);
5315       BUFFERSET(AX_surfxml_link_c_ctn_id);
5316       YY_BREAK case 295:YY_RULE_SETUP {
5317         if (!AX_surfxml_link_c_ctn_id)
5318           FAIL("Required attribute `id' not set for `link:ctn' element.");
5319         LEAVE;
5320         STag_surfxml_link_c_ctn();
5321         surfxml_pcdata_ix = 0;
5322         ENTER(E_surfxml_link_c_ctn);
5323       } YY_BREAK case 296:YY_RULE_SETUP {
5324         if (!AX_surfxml_link_c_ctn_id)
5325           FAIL("Required attribute `id' not set for `link:ctn' element.");
5326         LEAVE;
5327         STag_surfxml_link_c_ctn();
5328         surfxml_pcdata_ix = 0;
5329         ETag_surfxml_link_c_ctn();
5330         popbuffer();            /* attribute */
5331         switch (YY_START) {
5332         case S_surfxml_route_1:
5333         case S_surfxml_route:
5334         case S_surfxml_route_2:
5335           SET(S_surfxml_route_2);
5336           break;
5337           case S_surfxml_route_c_multi_2:case S_surfxml_route_c_multi_1:case
5338             S_surfxml_route_c_multi:SET(S_surfxml_route_c_multi_2);
5339           break;
5340       }} YY_BREAK case 297:YY_RULE_SETUP
5341         FAIL
5342         ("Unexpected character `%c' in attribute list of link:ctn element.",
5343          surf_parse_text[0]);
5344       YY_BREAK case 298:YY_RULE_SETUP
5345         FAIL("Bad attribute `%s' in `link:ctn' element start tag.",
5346              surf_parse_text);
5347       YY_BREAK case
5348         YY_STATE_EOF(AL_surfxml_link_c_ctn):FAIL
5349         ("EOF in attribute list of `link:ctn' element.");
5350       YY_BREAK case 299:
5351 /* rule 299 can match eol */
5352         YY_RULE_SETUP {
5353         LEAVE;
5354         ETag_surfxml_link_c_ctn();
5355         popbuffer();            /* attribute */
5356         switch (YY_START) {
5357         case S_surfxml_route_1:
5358         case S_surfxml_route:
5359         case S_surfxml_route_2:
5360           SET(S_surfxml_route_2);
5361           break;
5362           case S_surfxml_route_c_multi_2:case S_surfxml_route_c_multi_1:case
5363             S_surfxml_route_c_multi:SET(S_surfxml_route_c_multi_2);
5364           break;
5365       }} YY_BREAK case 300:
5366 /* rule 300 can match eol */
5367        
5368         YY_RULE_SETUP
5369         FAIL("Unexpected end-tag `%s': `</link:ctn>' expected.",
5370              surf_parse_text);
5371       YY_BREAK case 301:YY_RULE_SETUP
5372         FAIL("Unexpected character `%c': `</link:ctn>' expected.",
5373              surf_parse_text[0]);
5374       YY_BREAK case
5375         YY_STATE_EOF(E_surfxml_link_c_ctn):FAIL
5376         ("Premature EOF: `</link:ctn>' expected.");
5377       YY_BREAK case 302:
5378 /* rule 302 can match eol */
5379         YY_RULE_SETUP FAIL("Starting tag <process> is not allowed here.");
5380       YY_BREAK case 303:
5381 /* rule 303 can match eol */
5382         YY_RULE_SETUP {
5383         AX_surfxml_process_host = 0;
5384         AX_surfxml_process_function = 0;
5385         AX_surfxml_process_start_time = 110;
5386         AX_surfxml_process_kill_time = 115;
5387         ENTER(AL_surfxml_process);
5388         pushbuffer(0);
5389       } YY_BREAK case 304:
5390 /* rule 304 can match eol */
5391         YY_RULE_SETUP ENTER(VALUE1);
5392       BUFFERSET(AX_surfxml_process_host);
5393       YY_BREAK case 305:
5394 /* rule 305 can match eol */
5395         YY_RULE_SETUP ENTER(VALUE2);
5396       BUFFERSET(AX_surfxml_process_host);
5397       YY_BREAK case 306:
5398 /* rule 306 can match eol */
5399         YY_RULE_SETUP ENTER(VALUE1);
5400       BUFFERSET(AX_surfxml_process_function);
5401       YY_BREAK case 307:
5402 /* rule 307 can match eol */
5403         YY_RULE_SETUP ENTER(VALUE2);
5404       BUFFERSET(AX_surfxml_process_function);
5405       YY_BREAK case 308:
5406 /* rule 308 can match eol */
5407         YY_RULE_SETUP ENTER(VALUE1);
5408       BUFFERSET(AX_surfxml_process_start_time);
5409       YY_BREAK case 309:
5410 /* rule 309 can match eol */
5411         YY_RULE_SETUP ENTER(VALUE2);
5412       BUFFERSET(AX_surfxml_process_start_time);
5413       YY_BREAK case 310:
5414 /* rule 310 can match eol */
5415         YY_RULE_SETUP ENTER(VALUE1);
5416       BUFFERSET(AX_surfxml_process_kill_time);
5417       YY_BREAK case 311:
5418 /* rule 311 can match eol */
5419         YY_RULE_SETUP ENTER(VALUE2);
5420       BUFFERSET(AX_surfxml_process_kill_time);
5421       YY_BREAK case 312:YY_RULE_SETUP {
5422         if (!AX_surfxml_process_host)
5423           FAIL("Required attribute `host' not set for `process' element.");
5424         if (!AX_surfxml_process_function)
5425           FAIL
5426             ("Required attribute `function' not set for `process' element.");
5427         LEAVE;
5428         STag_surfxml_process();
5429         surfxml_pcdata_ix = 0;
5430         ENTER(S_surfxml_process);
5431       } YY_BREAK case 313:YY_RULE_SETUP {
5432         if (!AX_surfxml_process_host)
5433           FAIL("Required attribute `host' not set for `process' element.");
5434         if (!AX_surfxml_process_function)
5435           FAIL
5436             ("Required attribute `function' not set for `process' element.");
5437         LEAVE;
5438         STag_surfxml_process();
5439         surfxml_pcdata_ix = 0;
5440         ETag_surfxml_process();
5441         popbuffer();            /* attribute */
5442         switch (YY_START) {
5443         case S_surfxml_platform_5:
5444         case S_surfxml_platform_1:
5445         case S_surfxml_platform:
5446         case S_surfxml_platform_3:
5447         case S_surfxml_platform_4:
5448           SET(S_surfxml_platform_5);
5449           break;
5450       }} YY_BREAK case 314:YY_RULE_SETUP
5451         FAIL
5452         ("Unexpected character `%c' in attribute list of process element.",
5453          surf_parse_text[0]);
5454       YY_BREAK case 315:YY_RULE_SETUP
5455         FAIL("Bad attribute `%s' in `process' element start tag.",
5456              surf_parse_text);
5457       YY_BREAK case
5458         YY_STATE_EOF(AL_surfxml_process):FAIL
5459         ("EOF in attribute list of `process' element.");
5460       YY_BREAK case 316:
5461 /* rule 316 can match eol */
5462         YY_RULE_SETUP {
5463         LEAVE;
5464         ETag_surfxml_process();
5465         popbuffer();            /* attribute */
5466         switch (YY_START) {
5467         case S_surfxml_platform_5:
5468         case S_surfxml_platform_1:
5469         case S_surfxml_platform:
5470         case S_surfxml_platform_3:
5471         case S_surfxml_platform_4:
5472           SET(S_surfxml_platform_5);
5473           break;
5474       }} YY_BREAK case 317:
5475 /* rule 317 can match eol */
5476        
5477         YY_RULE_SETUP
5478         FAIL("Unexpected end-tag `%s': `</process>' expected.",
5479              surf_parse_text);
5480       YY_BREAK case 318:YY_RULE_SETUP
5481         FAIL("Unexpected character `%c': `</process>' expected.",
5482              surf_parse_text[0]);
5483       YY_BREAK case YY_STATE_EOF(S_surfxml_process):case
5484         YY_STATE_EOF(E_surfxml_process):case
5485         YY_STATE_EOF(S_surfxml_process_2):FAIL
5486         ("Premature EOF: `</process>' expected.");
5487       YY_BREAK case 319:
5488 /* rule 319 can match eol */
5489         YY_RULE_SETUP FAIL("Starting tag <argument> is not allowed here.");
5490       YY_BREAK case 320:
5491 /* rule 320 can match eol */
5492         YY_RULE_SETUP {
5493         AX_surfxml_argument_value = 0;
5494         ENTER(AL_surfxml_argument);
5495         pushbuffer(0);
5496       } YY_BREAK case 321:
5497 /* rule 321 can match eol */
5498         YY_RULE_SETUP ENTER(VALUE1);
5499       BUFFERSET(AX_surfxml_argument_value);
5500       YY_BREAK case 322:
5501 /* rule 322 can match eol */
5502         YY_RULE_SETUP ENTER(VALUE2);
5503       BUFFERSET(AX_surfxml_argument_value);
5504       YY_BREAK case 323:YY_RULE_SETUP {
5505         if (!AX_surfxml_argument_value)
5506           FAIL("Required attribute `value' not set for `argument' element.");
5507         LEAVE;
5508         STag_surfxml_argument();
5509         surfxml_pcdata_ix = 0;
5510         ENTER(E_surfxml_argument);
5511       } YY_BREAK case 324:YY_RULE_SETUP {
5512         if (!AX_surfxml_argument_value)
5513           FAIL("Required attribute `value' not set for `argument' element.");
5514         LEAVE;
5515         STag_surfxml_argument();
5516         surfxml_pcdata_ix = 0;
5517         ETag_surfxml_argument();
5518         popbuffer();            /* attribute */
5519         switch (YY_START) {
5520         case S_surfxml_process_1:
5521         case S_surfxml_process:
5522         case S_surfxml_process_2:
5523           SET(S_surfxml_process_2);
5524           break;
5525       }} YY_BREAK case 325:YY_RULE_SETUP
5526         FAIL
5527         ("Unexpected character `%c' in attribute list of argument element.",
5528          surf_parse_text[0]);
5529       YY_BREAK case 326:YY_RULE_SETUP
5530         FAIL("Bad attribute `%s' in `argument' element start tag.",
5531              surf_parse_text);
5532       YY_BREAK case
5533         YY_STATE_EOF(AL_surfxml_argument):FAIL
5534         ("EOF in attribute list of `argument' element.");
5535       YY_BREAK case 327:
5536 /* rule 327 can match eol */
5537         YY_RULE_SETUP {
5538         LEAVE;
5539         ETag_surfxml_argument();
5540         popbuffer();            /* attribute */
5541         switch (YY_START) {
5542         case S_surfxml_process_1:
5543         case S_surfxml_process:
5544         case S_surfxml_process_2:
5545           SET(S_surfxml_process_2);
5546           break;
5547       }} YY_BREAK case 328:
5548 /* rule 328 can match eol */
5549        
5550         YY_RULE_SETUP
5551         FAIL("Unexpected end-tag `%s': `</argument>' expected.",
5552              surf_parse_text);
5553       YY_BREAK case 329:YY_RULE_SETUP
5554         FAIL("Unexpected character `%c': `</argument>' expected.",
5555              surf_parse_text[0]);
5556       YY_BREAK case
5557         YY_STATE_EOF(E_surfxml_argument):FAIL
5558         ("Premature EOF: `</argument>' expected.");
5559       YY_BREAK
5560 /* EPILOG: after the root element. */
5561     case 330:
5562       YY_RULE_SETUP {
5563         SET(PROLOG);
5564         yyless(0);
5565         CLEANUP;
5566         return -1;
5567       }
5568       YY_BREAK case YY_STATE_EOF(EPILOG):SUCCEED;
5569       YY_BREAK
5570 /* CHARACTER DATA. */
5571 /* Non-defined standard entities... */
5572     case 331:
5573       YY_RULE_SETUP BUFFERPUTC('&');
5574       YY_BREAK case 332:YY_RULE_SETUP BUFFERPUTC('<');
5575       YY_BREAK case 333:YY_RULE_SETUP BUFFERPUTC('>');
5576       YY_BREAK case 334:YY_RULE_SETUP BUFFERPUTC('\'');
5577       YY_BREAK case 335:YY_RULE_SETUP BUFFERPUTC('"');
5578       YY_BREAK
5579 /* Character entities. */
5580     case 336:
5581       YY_RULE_SETUP BUFFERPUTC((unsigned char) atoi(surf_parse_text + 2));
5582       YY_BREAK case 337:YY_RULE_SETUP
5583         BUFFERPUTC((unsigned char) strtol(surf_parse_text + 3, NULL, 16));
5584       YY_BREAK case 338:
5585 /* rule 338 can match eol */
5586       case 339:
5587 /* rule 339 can match eol */
5588       case 340:
5589 /* rule 340 can match eol */
5590       case 341:
5591 /* rule 341 can match eol */
5592         YY_RULE_SETUP BUFFERPUTC('\n');
5593       YY_BREAK case 342:YY_RULE_SETUP ENTER(CDATA);
5594       YY_BREAK case 343:YY_RULE_SETUP FAIL("Unexpected `]"
5595                                            "]>' in character data.");
5596       YY_BREAK case 344:YY_RULE_SETUP BUFFERDONE;
5597       LEAVE;
5598       YY_BREAK case
5599         YY_STATE_EOF(VALUE1):FAIL("EOF in literal (\"'\" expected).");
5600       YY_BREAK case 345:YY_RULE_SETUP BUFFERDONE;
5601       LEAVE;
5602       YY_BREAK case
5603         YY_STATE_EOF(VALUE2):FAIL("EOF in literal (`\"' expected).");
5604       YY_BREAK case 346:
5605 /* rule 346 can match eol */
5606         YY_RULE_SETUP BUFFERPUTC(surf_parse_text[0]);
5607       YY_BREAK case 347:YY_RULE_SETUP
5608         FAIL("Spurious `%c' in character data.", surf_parse_text[0]);
5609       YY_BREAK case 348:YY_RULE_SETUP LEAVE;
5610       YY_BREAK
5611 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
5612     case 349:
5613       YY_RULE_SETUP BUFFERPUTC(surf_parse_text[0]);
5614       YY_BREAK case YY_STATE_EOF(CDATA):FAIL("EOF in CDATA section.");
5615       YY_BREAK
5616 /* Impossible rules to avoid warnings from flex(1). */
5617 /* Ideally, this should be replaced by code in flexml.pl that
5618     generates just the states not covered by other rules. */
5619     case 350:
5620 /* rule 350 can match eol */
5621       YY_RULE_SETUP
5622         FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
5623       YY_BREAK case 351:YY_RULE_SETUP ECHO;
5624       YY_BREAK case YY_STATE_EOF(INITIAL):case
5625         YY_STATE_EOF(ROOT_surfxml_platform):case
5626         YY_STATE_EOF(S_surfxml_platform_2):case
5627         YY_STATE_EOF(S_surfxml_platform_4):case
5628         YY_STATE_EOF(S_surfxml_random_1):case
5629         YY_STATE_EOF(S_surfxml_foreach):case
5630         YY_STATE_EOF(S_surfxml_foreach_1):case
5631         YY_STATE_EOF(S_surfxml_host_1):case
5632         YY_STATE_EOF(S_surfxml_link_1):case
5633         YY_STATE_EOF(S_surfxml_route_c_multi):case
5634         YY_STATE_EOF(S_surfxml_route_c_multi_1):case
5635         YY_STATE_EOF(S_surfxml_route_1):case
5636         YY_STATE_EOF(S_surfxml_process_1):case
5637         YY_STATE_EOF(IMPOSSIBLE):yyterminate();
5638
5639     case YY_END_OF_BUFFER:
5640       {
5641         /* Amount of text matched not including the EOB char. */
5642         int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
5643
5644         /* Undo the effects of YY_DO_BEFORE_ACTION. */
5645         *yy_cp = (yy_hold_char);
5646         YY_RESTORE_YY_MORE_OFFSET
5647           if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW) {
5648           /* We're scanning a new file or input source.  It's
5649            * possible that this happened because the user
5650            * just pointed surf_parse_in at a new source and called
5651            * surf_parse_lex().  If so, then we have to assure
5652            * consistency between YY_CURRENT_BUFFER and our
5653            * globals.  Here is the right place to do so, because
5654            * this is the first action (other than possibly a
5655            * back-up) that will match for the new input source.
5656            */
5657           (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5658           YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
5659           YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
5660         }
5661
5662         /* Note that here we test for yy_c_buf_p "<=" to the position
5663          * of the first EOB in the buffer, since yy_c_buf_p will
5664          * already have been incremented past the NUL character
5665          * (since all states make transitions on EOB to the
5666          * end-of-buffer state).  Contrast this with the test
5667          * in input().
5668          */
5669         if ((yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]) {       /* This was really a NUL. */
5670           yy_state_type yy_next_state;
5671
5672           (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
5673
5674           yy_current_state = yy_get_previous_state();
5675
5676           /* Okay, we're now positioned to make the NUL
5677            * transition.  We couldn't have
5678            * yy_get_previous_state() go ahead and do it
5679            * for us because it doesn't know how to deal
5680            * with the possibility of jamming (and we don't
5681            * want to build jamming into it because then it
5682            * will run more slowly).
5683            */
5684
5685           yy_next_state = yy_try_NUL_trans(yy_current_state);
5686
5687           yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5688
5689           if (yy_next_state) {
5690             /* Consume the NUL. */
5691             yy_cp = ++(yy_c_buf_p);
5692             yy_current_state = yy_next_state;
5693             goto yy_match;
5694           }
5695
5696           else {
5697             yy_cp = (yy_c_buf_p);
5698             goto yy_find_action;
5699           }
5700         }
5701
5702         else
5703           switch (yy_get_next_buffer()) {
5704           case EOB_ACT_END_OF_FILE:
5705             {
5706               (yy_did_buffer_switch_on_eof) = 0;
5707
5708               if (surf_parse_wrap()) {
5709                 /* Note: because we've taken care in
5710                  * yy_get_next_buffer() to have set up
5711                  * surf_parse_text, we can now set up
5712                  * yy_c_buf_p so that if some total
5713                  * hoser (like flex itself) wants to
5714                  * call the scanner after we return the
5715                  * YY_NULL, it'll still work - another
5716                  * YY_NULL will get returned.
5717                  */
5718                 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
5719
5720                 yy_act = YY_STATE_EOF(YY_START);
5721                 goto do_action;
5722               }
5723
5724               else {
5725                 if (!(yy_did_buffer_switch_on_eof))
5726                   YY_NEW_FILE;
5727               }
5728               break;
5729             }
5730
5731           case EOB_ACT_CONTINUE_SCAN:
5732             (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
5733
5734             yy_current_state = yy_get_previous_state();
5735
5736             yy_cp = (yy_c_buf_p);
5737             yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5738             goto yy_match;
5739
5740           case EOB_ACT_LAST_MATCH:
5741             (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
5742
5743             yy_current_state = yy_get_previous_state();
5744
5745             yy_cp = (yy_c_buf_p);
5746             yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5747             goto yy_find_action;
5748           }
5749         break;
5750       }
5751
5752     default:
5753       YY_FATAL_ERROR("fatal flex scanner internal error--no action found");
5754     }                           /* end of action switch */
5755   }                             /* end of scanning one token */
5756 }                               /* end of surf_parse_lex */
5757
5758 /* yy_get_next_buffer - try to read in a new buffer
5759  *
5760  * Returns a code representing an action:
5761  *      EOB_ACT_LAST_MATCH -
5762  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
5763  *      EOB_ACT_END_OF_FILE - end of file
5764  */
5765 static int yy_get_next_buffer(void)
5766 {
5767   register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
5768   register char *source = (yytext_ptr);
5769   register int number_to_move, i;
5770   int ret_val;
5771
5772   if ((yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1])
5773     YY_FATAL_ERROR("fatal flex scanner internal error--end of buffer missed");
5774
5775   if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) {  /* Don't try to fill the buffer, so this is an EOF. */
5776     if ((yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1) {
5777       /* We matched a single character, the EOB, so
5778        * treat this as a final EOF.
5779        */
5780       return EOB_ACT_END_OF_FILE;
5781     }
5782
5783     else {
5784       /* We matched some text prior to the EOB, first
5785        * process it.
5786        */
5787       return EOB_ACT_LAST_MATCH;
5788     }
5789   }
5790
5791   /* Try to read more data. */
5792
5793   /* First move last chars to start of buffer. */
5794   number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
5795
5796   for (i = 0; i < number_to_move; ++i)
5797     *(dest++) = *(source++);
5798
5799   if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING)
5800     /* don't do the read, it's not guaranteed to return an EOF,
5801      * just force an EOF
5802      */
5803     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
5804
5805   else {
5806     int num_to_read =
5807       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
5808
5809     while (num_to_read <= 0) {  /* Not enough room in the buffer - grow it. */
5810
5811       /* just a shorter name for the current buffer */
5812       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
5813
5814       int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf);
5815
5816       if (b->yy_is_our_buffer) {
5817         int new_size = b->yy_buf_size * 2;
5818
5819         if (new_size <= 0)
5820           b->yy_buf_size += b->yy_buf_size / 8;
5821         else
5822           b->yy_buf_size *= 2;
5823
5824         b->yy_ch_buf = (char *)
5825           /* Include room in for 2 EOB chars. */
5826           surf_parse_realloc((void *) b->yy_ch_buf, b->yy_buf_size + 2);
5827       } else
5828         /* Can't grow it, we don't own it. */
5829         b->yy_ch_buf = 0;
5830
5831       if (!b->yy_ch_buf)
5832         YY_FATAL_ERROR("fatal error - scanner input buffer overflow");
5833
5834       (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
5835
5836       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
5837         number_to_move - 1;
5838
5839     }
5840
5841     if (num_to_read > YY_READ_BUF_SIZE)
5842       num_to_read = YY_READ_BUF_SIZE;
5843
5844     /* Read in more data. */
5845     YY_INPUT((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
5846              (yy_n_chars), (size_t) num_to_read);
5847
5848     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5849   }
5850
5851   if ((yy_n_chars) == 0) {
5852     if (number_to_move == YY_MORE_ADJ) {
5853       ret_val = EOB_ACT_END_OF_FILE;
5854       surf_parse_restart(surf_parse_in);
5855     }
5856
5857     else {
5858       ret_val = EOB_ACT_LAST_MATCH;
5859       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING;
5860     }
5861   }
5862
5863   else
5864     ret_val = EOB_ACT_CONTINUE_SCAN;
5865
5866   if ((yy_size_t) ((yy_n_chars) + number_to_move) >
5867       YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
5868     /* Extend the array by 50%, plus the number we really need. */
5869     yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
5870     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf =
5871       (char *) surf_parse_realloc((void *)
5872                                   YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,
5873                                   new_size);
5874     if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf)
5875       YY_FATAL_ERROR("out of dynamic memory in yy_get_next_buffer()");
5876   }
5877
5878   (yy_n_chars) += number_to_move;
5879   YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
5880   YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] =
5881     YY_END_OF_BUFFER_CHAR;
5882
5883   (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
5884
5885   return ret_val;
5886 }
5887
5888 /* yy_get_previous_state - get the state just before the EOB char was reached */
5889
5890 static yy_state_type yy_get_previous_state(void)
5891 {
5892   register yy_state_type yy_current_state;
5893   register char *yy_cp;
5894
5895   yy_current_state = (yy_start);
5896
5897   for (yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp) {
5898     register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
5899     if (yy_accept[yy_current_state]) {
5900       (yy_last_accepting_state) = yy_current_state;
5901       (yy_last_accepting_cpos) = yy_cp;
5902     }
5903     while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {
5904       yy_current_state = (int) yy_def[yy_current_state];
5905       if (yy_current_state >= 2023)
5906         yy_c = yy_meta[(unsigned int) yy_c];
5907     }
5908     yy_current_state =
5909       yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5910   }
5911
5912   return yy_current_state;
5913 }
5914
5915 /* yy_try_NUL_trans - try to make a transition on the NUL character
5916  *
5917  * synopsis
5918  *      next_state = yy_try_NUL_trans( current_state );
5919  */
5920 static yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state)
5921 {
5922   register int yy_is_jam;
5923   register char *yy_cp = (yy_c_buf_p);
5924
5925   register YY_CHAR yy_c = 1;
5926   if (yy_accept[yy_current_state]) {
5927     (yy_last_accepting_state) = yy_current_state;
5928     (yy_last_accepting_cpos) = yy_cp;
5929   }
5930   while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {
5931     yy_current_state = (int) yy_def[yy_current_state];
5932     if (yy_current_state >= 2023)
5933       yy_c = yy_meta[(unsigned int) yy_c];
5934   }
5935   yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5936   yy_is_jam = (yy_current_state == 2022);
5937
5938   return yy_is_jam ? 0 : yy_current_state;
5939 }
5940
5941 #ifndef YY_NO_INPUT
5942 #ifdef __cplusplus
5943 static int yyinput(void)
5944 #else
5945 static int input(void)
5946 #endif
5947 {
5948   int c;
5949
5950   *(yy_c_buf_p) = (yy_hold_char);
5951
5952   if (*(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR) {
5953     /* yy_c_buf_p now points to the character we want to return.
5954      * If this occurs *before* the EOB characters, then it's a
5955      * valid NUL; if not, then we've hit the end of the buffer.
5956      */
5957     if ((yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)])
5958       /* This was really a NUL. */
5959       *(yy_c_buf_p) = '\0';
5960
5961     else {                      /* need more input */
5962       int offset = (yy_c_buf_p) - (yytext_ptr);
5963       ++(yy_c_buf_p);
5964
5965       switch (yy_get_next_buffer()) {
5966       case EOB_ACT_LAST_MATCH:
5967         /* This happens because yy_g_n_b()
5968          * sees that we've accumulated a
5969          * token and flags that we need to
5970          * try matching the token before
5971          * proceeding.  But for input(),
5972          * there's no matching to consider.
5973          * So convert the EOB_ACT_LAST_MATCH
5974          * to EOB_ACT_END_OF_FILE.
5975          */
5976
5977         /* Reset buffer status. */
5978         surf_parse_restart(surf_parse_in);
5979
5980        /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE:
5981         {
5982           if (surf_parse_wrap())
5983             return EOF;
5984
5985           if (!(yy_did_buffer_switch_on_eof))
5986             YY_NEW_FILE;
5987 #ifdef __cplusplus
5988           return yyinput();
5989 #else
5990           return input();
5991 #endif
5992         }
5993
5994       case EOB_ACT_CONTINUE_SCAN:
5995         (yy_c_buf_p) = (yytext_ptr) + offset;
5996         break;
5997       }
5998     }
5999   }
6000
6001   c = *(unsigned char *) (yy_c_buf_p);  /* cast for 8-bit char's */
6002   *(yy_c_buf_p) = '\0';         /* preserve surf_parse_text */
6003   (yy_hold_char) = *++(yy_c_buf_p);
6004
6005   if (c == '\n')
6006
6007     surf_parse_lineno++;
6008   ;
6009
6010   return c;
6011 }
6012 #endif /* ifndef YY_NO_INPUT */
6013
6014 /** Immediately switch to a different input stream.
6015  * @param input_file A readable stream.
6016  * 
6017  * @note This function does not reset the start condition to @c INITIAL .
6018  */
6019 void surf_parse_restart(FILE * input_file)
6020 {
6021
6022   if (!YY_CURRENT_BUFFER) {
6023     surf_parse_ensure_buffer_stack();
6024     YY_CURRENT_BUFFER_LVALUE =
6025       surf_parse__create_buffer(surf_parse_in, YY_BUF_SIZE);
6026   }
6027
6028   surf_parse__init_buffer(YY_CURRENT_BUFFER, input_file);
6029   surf_parse__load_buffer_state();
6030 }
6031
6032 /** Switch to a different input buffer.
6033  * @param new_buffer The new input buffer.
6034  * 
6035  */
6036 void surf_parse__switch_to_buffer(YY_BUFFER_STATE new_buffer)
6037 {
6038
6039   /* TODO. We should be able to replace this entire function body
6040    * with
6041    *              surf_parse_pop_buffer_state();
6042    *              surf_parse_push_buffer_state(new_buffer);
6043    */
6044   surf_parse_ensure_buffer_stack();
6045   if (YY_CURRENT_BUFFER == new_buffer)
6046     return;
6047
6048   if (YY_CURRENT_BUFFER) {
6049     /* Flush out information for old buffer. */
6050     *(yy_c_buf_p) = (yy_hold_char);
6051     YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6052     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6053   }
6054
6055   YY_CURRENT_BUFFER_LVALUE = new_buffer;
6056   surf_parse__load_buffer_state();
6057
6058   /* We don't actually know whether we did this switch during
6059    * EOF (surf_parse_wrap()) processing, but the only time this flag
6060    * is looked at is after surf_parse_wrap() is called, so it's safe
6061    * to go ahead and always set it.
6062    */
6063   (yy_did_buffer_switch_on_eof) = 1;
6064 }
6065
6066 static void surf_parse__load_buffer_state(void)
6067 {
6068   (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6069   (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6070   surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6071   (yy_hold_char) = *(yy_c_buf_p);
6072 }
6073
6074 /** Allocate and initialize an input buffer state.
6075  * @param file A readable stream.
6076  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6077  * 
6078  * @return the allocated buffer state.
6079  */
6080 YY_BUFFER_STATE surf_parse__create_buffer(FILE * file, int size)
6081 {
6082   YY_BUFFER_STATE b;
6083
6084   b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof(struct yy_buffer_state));
6085   if (!b)
6086     YY_FATAL_ERROR("out of dynamic memory in surf_parse__create_buffer()");
6087
6088   b->yy_buf_size = size;
6089
6090   /* yy_ch_buf has to be 2 characters longer than the size given because
6091    * we need to put in 2 end-of-buffer characters.
6092    */
6093   b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2);
6094   if (!b->yy_ch_buf)
6095     YY_FATAL_ERROR("out of dynamic memory in surf_parse__create_buffer()");
6096
6097   b->yy_is_our_buffer = 1;
6098
6099   surf_parse__init_buffer(b, file);
6100
6101   return b;
6102 }
6103
6104 /** Destroy the buffer.
6105  * @param b a buffer created with surf_parse__create_buffer()
6106  * 
6107  */
6108 void surf_parse__delete_buffer(YY_BUFFER_STATE b)
6109 {
6110
6111   if (!b)
6112     return;
6113
6114   if (b == YY_CURRENT_BUFFER)   /* Not sure if we should pop here. */
6115     YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6116
6117   if (b->yy_is_our_buffer)
6118     surf_parse_free((void *) b->yy_ch_buf);
6119
6120   surf_parse_free((void *) b);
6121 }
6122
6123 #ifndef __cplusplus
6124 extern int isatty(int);
6125 #endif /* __cplusplus */
6126
6127 /* Initializes or reinitializes a buffer.
6128  * This function is sometimes called more than once on the same buffer,
6129  * such as during a surf_parse_restart() or at EOF.
6130  */
6131 static void surf_parse__init_buffer(YY_BUFFER_STATE b, FILE * file)
6132 {
6133   int oerrno = errno;
6134
6135   surf_parse__flush_buffer(b);
6136
6137   b->yy_input_file = file;
6138   b->yy_fill_buffer = 1;
6139
6140   /* If b is the current buffer, then surf_parse__init_buffer was _probably_
6141    * called from surf_parse_restart() or through yy_get_next_buffer.
6142    * In that case, we don't want to reset the lineno or column.
6143    */
6144   if (b != YY_CURRENT_BUFFER) {
6145     b->yy_bs_lineno = 1;
6146     b->yy_bs_column = 0;
6147   }
6148
6149   b->yy_is_interactive = file ? (isatty(fileno(file)) > 0) : 0;
6150
6151   errno = oerrno;
6152 }
6153
6154 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6155  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6156  * 
6157  */
6158 void surf_parse__flush_buffer(YY_BUFFER_STATE b)
6159 {
6160   if (!b)
6161     return;
6162
6163   b->yy_n_chars = 0;
6164
6165   /* We always need two end-of-buffer characters.  The first causes
6166    * a transition to the end-of-buffer state.  The second causes
6167    * a jam in that state.
6168    */
6169   b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6170   b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6171
6172   b->yy_buf_pos = &b->yy_ch_buf[0];
6173
6174   b->yy_at_bol = 1;
6175   b->yy_buffer_status = YY_BUFFER_NEW;
6176
6177   if (b == YY_CURRENT_BUFFER)
6178     surf_parse__load_buffer_state();
6179 }
6180
6181 /** Pushes the new state onto the stack. The new state becomes
6182  *  the current state. This function will allocate the stack
6183  *  if necessary.
6184  *  @param new_buffer The new state.
6185  *  
6186  */
6187 void surf_parse_push_buffer_state(YY_BUFFER_STATE new_buffer)
6188 {
6189   if (new_buffer == NULL)
6190     return;
6191
6192   surf_parse_ensure_buffer_stack();
6193
6194   /* This block is copied from surf_parse__switch_to_buffer. */
6195   if (YY_CURRENT_BUFFER) {
6196     /* Flush out information for old buffer. */
6197     *(yy_c_buf_p) = (yy_hold_char);
6198     YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6199     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6200   }
6201
6202   /* Only push if top exists. Otherwise, replace top. */
6203   if (YY_CURRENT_BUFFER)
6204     (yy_buffer_stack_top)++;
6205   YY_CURRENT_BUFFER_LVALUE = new_buffer;
6206
6207   /* copied from surf_parse__switch_to_buffer. */
6208   surf_parse__load_buffer_state();
6209   (yy_did_buffer_switch_on_eof) = 1;
6210 }
6211
6212 /** Removes and deletes the top of the stack, if present.
6213  *  The next element becomes the new top.
6214  *  
6215  */
6216 void surf_parse_pop_buffer_state(void)
6217 {
6218   if (!YY_CURRENT_BUFFER)
6219     return;
6220
6221   surf_parse__delete_buffer(YY_CURRENT_BUFFER);
6222   YY_CURRENT_BUFFER_LVALUE = NULL;
6223   if ((yy_buffer_stack_top) > 0)
6224     --(yy_buffer_stack_top);
6225
6226   if (YY_CURRENT_BUFFER) {
6227     surf_parse__load_buffer_state();
6228     (yy_did_buffer_switch_on_eof) = 1;
6229   }
6230 }
6231
6232 /* Allocates the stack if it does not exist.
6233  *  Guarantees space for at least one push.
6234  */
6235 static void surf_parse_ensure_buffer_stack(void)
6236 {
6237   int num_to_alloc;
6238
6239   if (!(yy_buffer_stack)) {
6240
6241     /* First allocation is just for 2 elements, since we don't know if this
6242      * scanner will even need a stack. We use 2 instead of 1 to avoid an
6243      * immediate realloc on the next call.
6244      */
6245     num_to_alloc = 1;
6246     (yy_buffer_stack) = (struct yy_buffer_state **) surf_parse_alloc
6247       (num_to_alloc * sizeof(struct yy_buffer_state *)
6248       );
6249     if (!(yy_buffer_stack))
6250       YY_FATAL_ERROR
6251         ("out of dynamic memory in surf_parse_ensure_buffer_stack()");
6252
6253     memset((yy_buffer_stack), 0,
6254            num_to_alloc * sizeof(struct yy_buffer_state *));
6255
6256     (yy_buffer_stack_max) = num_to_alloc;
6257     (yy_buffer_stack_top) = 0;
6258     return;
6259   }
6260
6261   if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1) {
6262
6263     /* Increase the buffer to prepare for a possible push. */
6264     int grow_size = 8 /* arbitrary grow size */ ;
6265
6266     num_to_alloc = (yy_buffer_stack_max) + grow_size;
6267     (yy_buffer_stack) = (struct yy_buffer_state **) surf_parse_realloc
6268       ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state *)
6269       );
6270     if (!(yy_buffer_stack))
6271       YY_FATAL_ERROR
6272         ("out of dynamic memory in surf_parse_ensure_buffer_stack()");
6273
6274     /* zero only the new slots. */
6275     memset((yy_buffer_stack) + (yy_buffer_stack_max), 0,
6276            grow_size * sizeof(struct yy_buffer_state *));
6277     (yy_buffer_stack_max) = num_to_alloc;
6278   }
6279 }
6280
6281 /** Setup the input buffer state to scan directly from a user-specified character buffer.
6282  * @param base the character buffer
6283  * @param size the size in bytes of the character buffer
6284  * 
6285  * @return the newly allocated buffer state object. 
6286  */
6287 YY_BUFFER_STATE surf_parse__scan_buffer(char *base, yy_size_t size)
6288 {
6289   YY_BUFFER_STATE b;
6290
6291   if (size < 2 ||
6292       base[size - 2] != YY_END_OF_BUFFER_CHAR ||
6293       base[size - 1] != YY_END_OF_BUFFER_CHAR)
6294     /* They forgot to leave room for the EOB's. */
6295     return 0;
6296
6297   b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof(struct yy_buffer_state));
6298   if (!b)
6299     YY_FATAL_ERROR("out of dynamic memory in surf_parse__scan_buffer()");
6300
6301   b->yy_buf_size = size - 2;    /* "- 2" to take care of EOB's */
6302   b->yy_buf_pos = b->yy_ch_buf = base;
6303   b->yy_is_our_buffer = 0;
6304   b->yy_input_file = 0;
6305   b->yy_n_chars = b->yy_buf_size;
6306   b->yy_is_interactive = 0;
6307   b->yy_at_bol = 1;
6308   b->yy_fill_buffer = 0;
6309   b->yy_buffer_status = YY_BUFFER_NEW;
6310
6311   surf_parse__switch_to_buffer(b);
6312
6313   return b;
6314 }
6315
6316 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
6317  * scan from a @e copy of @a str.
6318  * @param yystr a NUL-terminated string to scan
6319  * 
6320  * @return the newly allocated buffer state object.
6321  * @note If you want to scan bytes that may contain NUL values, then use
6322  *       surf_parse__scan_bytes() instead.
6323  */
6324 YY_BUFFER_STATE surf_parse__scan_string(yyconst char *yystr)
6325 {
6326
6327   return surf_parse__scan_bytes(yystr, strlen(yystr));
6328 }
6329
6330 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
6331  * scan from a @e copy of @a bytes.
6332  * @param yybytes the byte buffer to scan
6333  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
6334  * 
6335  * @return the newly allocated buffer state object.
6336  */
6337 YY_BUFFER_STATE surf_parse__scan_bytes(yyconst char *yybytes,
6338                                        int _yybytes_len)
6339 {
6340   YY_BUFFER_STATE b;
6341   char *buf;
6342   yy_size_t n;
6343   int i;
6344
6345   /* Get memory for full buffer, including space for trailing EOB's. */
6346   n = _yybytes_len + 2;
6347   buf = (char *) surf_parse_alloc(n);
6348   if (!buf)
6349     YY_FATAL_ERROR("out of dynamic memory in surf_parse__scan_bytes()");
6350
6351   for (i = 0; i < _yybytes_len; ++i)
6352     buf[i] = yybytes[i];
6353
6354   buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR;
6355
6356   b = surf_parse__scan_buffer(buf, n);
6357   if (!b)
6358     YY_FATAL_ERROR("bad buffer in surf_parse__scan_bytes()");
6359
6360   /* It's okay to grow etc. this buffer, and we should throw it
6361    * away when we're done.
6362    */
6363   b->yy_is_our_buffer = 1;
6364
6365   return b;
6366 }
6367
6368 static void yy_push_state(int new_state)
6369 {
6370   if ((yy_start_stack_ptr) >= (yy_start_stack_depth)) {
6371     yy_size_t new_size;
6372
6373     (yy_start_stack_depth) += YY_START_STACK_INCR;
6374     new_size = (yy_start_stack_depth) * sizeof(int);
6375
6376     if (!(yy_start_stack))
6377       (yy_start_stack) = (int *) surf_parse_alloc(new_size);
6378
6379     else
6380       (yy_start_stack) =
6381         (int *) surf_parse_realloc((void *) (yy_start_stack), new_size);
6382
6383     if (!(yy_start_stack))
6384       YY_FATAL_ERROR("out of memory expanding start-condition stack");
6385   }
6386
6387   (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
6388
6389   BEGIN(new_state);
6390 }
6391
6392 static void yy_pop_state(void)
6393 {
6394   if (--(yy_start_stack_ptr) < 0)
6395     YY_FATAL_ERROR("start-condition stack underflow");
6396
6397   BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
6398 }
6399
6400 #ifndef YY_EXIT_FAILURE
6401 #define YY_EXIT_FAILURE 2
6402 #endif
6403
6404 static void yy_fatal_error(yyconst char *msg)
6405 {
6406   (void) fprintf(stderr, "%s\n", msg);
6407   exit(YY_EXIT_FAILURE);
6408 }
6409
6410 /* Redefine yyless() so it works in section 3 code. */
6411
6412 #undef yyless
6413 #define yyless(n) \
6414         do \
6415                 { \
6416                 /* Undo effects of setting up surf_parse_text. */ \
6417         int yyless_macro_arg = (n); \
6418         YY_LESS_LINENO(yyless_macro_arg);\
6419                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
6420                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
6421                 (yy_hold_char) = *(yy_c_buf_p); \
6422                 *(yy_c_buf_p) = '\0'; \
6423                 surf_parse_leng = yyless_macro_arg; \
6424                 } \
6425         while ( 0 )
6426
6427 /* Accessor  methods (get/set functions) to struct members. */
6428
6429 /** Get the current line number.
6430  * 
6431  */
6432 int surf_parse_get_lineno(void)
6433 {
6434
6435   return surf_parse_lineno;
6436 }
6437
6438 /** Get the input stream.
6439  * 
6440  */
6441 FILE *surf_parse_get_in(void)
6442 {
6443   return surf_parse_in;
6444 }
6445
6446 /** Get the output stream.
6447  * 
6448  */
6449 FILE *surf_parse_get_out(void)
6450 {
6451   return surf_parse_out;
6452 }
6453
6454 /** Get the length of the current token.
6455  * 
6456  */
6457 int surf_parse_get_leng(void)
6458 {
6459   return surf_parse_leng;
6460 }
6461
6462 /** Get the current token.
6463  * 
6464  */
6465
6466 char *surf_parse_get_text(void)
6467 {
6468   return surf_parse_text;
6469 }
6470
6471 /** Set the current line number.
6472  * @param line_number
6473  * 
6474  */
6475 void surf_parse_set_lineno(int line_number)
6476 {
6477
6478   surf_parse_lineno = line_number;
6479 }
6480
6481 /** Set the input stream. This does not discard the current
6482  * input buffer.
6483  * @param in_str A readable stream.
6484  * 
6485  * @see surf_parse__switch_to_buffer
6486  */
6487 void surf_parse_set_in(FILE * in_str)
6488 {
6489   surf_parse_in = in_str;
6490 }
6491
6492 void surf_parse_set_out(FILE * out_str)
6493 {
6494   surf_parse_out = out_str;
6495 }
6496
6497 int surf_parse_get_debug(void)
6498 {
6499   return surf_parse__flex_debug;
6500 }
6501
6502 void surf_parse_set_debug(int bdebug)
6503 {
6504   surf_parse__flex_debug = bdebug;
6505 }
6506
6507 static int yy_init_globals(void)
6508 {
6509   /* Initialization is the same as for the non-reentrant scanner.
6510    * This function is called from surf_parse_lex_destroy(), so don't allocate here.
6511    */
6512
6513   /* We do not touch surf_parse_lineno unless the option is enabled. */
6514   surf_parse_lineno = 1;
6515
6516   (yy_buffer_stack) = 0;
6517   (yy_buffer_stack_top) = 0;
6518   (yy_buffer_stack_max) = 0;
6519   (yy_c_buf_p) = (char *) 0;
6520   (yy_init) = 0;
6521   (yy_start) = 0;
6522
6523   (yy_start_stack_ptr) = 0;
6524   (yy_start_stack_depth) = 0;
6525   (yy_start_stack) = NULL;
6526
6527 /* Defined in main.c */
6528 #ifdef YY_STDINIT
6529   surf_parse_in = stdin;
6530   surf_parse_out = stdout;
6531 #else
6532   surf_parse_in = (FILE *) 0;
6533   surf_parse_out = (FILE *) 0;
6534 #endif
6535
6536   /* For future reference: Set errno on error, since we are called by
6537    * surf_parse_lex_init()
6538    */
6539   return 0;
6540 }
6541
6542 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
6543 int surf_parse_lex_destroy(void)
6544 {
6545
6546   /* Pop the buffer stack, destroying each element. */
6547   while (YY_CURRENT_BUFFER) {
6548     surf_parse__delete_buffer(YY_CURRENT_BUFFER);
6549     YY_CURRENT_BUFFER_LVALUE = NULL;
6550     surf_parse_pop_buffer_state();
6551   }
6552
6553   /* Destroy the stack itself. */
6554   surf_parse_free((yy_buffer_stack));
6555   (yy_buffer_stack) = NULL;
6556
6557   /* Destroy the start condition stack. */
6558   surf_parse_free((yy_start_stack));
6559   (yy_start_stack) = NULL;
6560
6561   /* Reset the globals. This is important in a non-reentrant scanner so the next time
6562    * surf_parse_lex() is called, initialization will occur. */
6563   yy_init_globals();
6564
6565   return 0;
6566 }
6567
6568 /*
6569  * Internal utility routines.
6570  */
6571
6572 #ifndef yytext_ptr
6573 static void yy_flex_strncpy(char *s1, yyconst char *s2, int n)
6574 {
6575   register int i;
6576   for (i = 0; i < n; ++i)
6577     s1[i] = s2[i];
6578 }
6579 #endif
6580
6581 #ifdef YY_NEED_STRLEN
6582 static int yy_flex_strlen(yyconst char *s)
6583 {
6584   register int n;
6585   for (n = 0; s[n]; ++n);
6586
6587   return n;
6588 }
6589 #endif
6590
6591 void *surf_parse_alloc(yy_size_t size)
6592 {
6593   return (void *) malloc(size);
6594 }
6595
6596 void *surf_parse_realloc(void *ptr, yy_size_t size)
6597 {
6598   /* The cast to (char *) in the following accommodates both
6599    * implementations that use char* generic pointers, and those
6600    * that use void* generic pointers.  It works with the latter
6601    * because both ANSI C and C++ allow castless assignment from
6602    * any pointer type to void*, and deal with argument conversions
6603    * as though doing an assignment.
6604    */
6605   return (void *) realloc((char *) ptr, size);
6606 }
6607
6608 void surf_parse_free(void *ptr)
6609 {
6610   free((char *) ptr);           /* see surf_parse_realloc() for (char *) cast */
6611 }
6612
6613 #define YYTABLES_NAME "yytables"
6614
6615 /* Element context stack lookup. */
6616 int surfxml_element_context(int i)
6617 {
6618   return (0 < i && i < yy_start_stack_depth
6619           ? yy_start_stack[yy_start_stack_ptr - i]
6620           : 0);
6621 }
6622
6623 #ifdef FLEX_DEBUG
6624 void print_yy_stack(char *fmt, ...)
6625 {
6626   int i = 0;
6627   va_list ap;
6628   va_start(ap, fmt);
6629   vfprintf(stderr, fmt, ap);
6630   if (surfxml_statenames) {
6631     for (i = 1; i < yy_start_stack_ptr; i++) {
6632       fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i]]);
6633     }
6634     fprintf(stderr, "%s\n", surfxml_statenames[YY_START]);
6635   }
6636   va_end(ap);
6637 }
6638
6639 void print_surfxml_bufferstack()
6640 {
6641   int i;
6642   fputs("Buffer: ", stderr);
6643   for (i = 0; i < blimit; i++) {
6644     if (surfxml_bufferstack[i] == '\377')
6645       break;
6646     putc(surfxml_bufferstack[i], stderr);
6647   }
6648   putc('\n', stderr);
6649 }
6650
6651 static void debug_enter(int state, const char *statename)
6652 {
6653   yy_push_state(state);
6654   if (surf_parse__flex_debug) {
6655     print_yy_stack("--ENTER(%s) : ", statename);
6656     print_surfxml_bufferstack();
6657   }
6658 }
6659
6660 static void debug_leave(void)
6661 {
6662   if (surf_parse__flex_debug) {
6663     print_yy_stack("--LEAVE : ");
6664     print_surfxml_bufferstack();
6665   }
6666   yy_pop_state();
6667 }
6668
6669 static void debug_set(int state, const char *statename)
6670 {
6671   BEGIN(state);
6672   if (surf_parse__flex_debug)
6673     print_yy_stack("--SET(%s) : ", statename);
6674 }
6675 #endif
6676
6677 static void cleanup(void)
6678 {
6679   if (surfxml_statenames) {
6680     free(surfxml_statenames);
6681     surfxml_statenames = NULL;
6682   }
6683   free(surfxml_bufferstack);
6684   surfxml_bufferstack = NULL;
6685
6686   free(indexstack);
6687   indexstack = NULL;
6688 }
6689
6690 static int fail(const char *fmt, ...)
6691 {
6692   int chars_left, used;
6693   va_list ap;
6694   va_start(ap, fmt);
6695 #ifdef FLEXML_yylineno
6696   used = sprintf(flexml_err_msg,
6697                  "Invalid XML (XML input line %d, state %d): ",
6698                  surf_parse_lineno, YY_START);
6699 #else
6700   used = sprintf(flexml_err_msg, "Invalid XML (state %d): ", YY_START);
6701 #endif
6702   chars_left = flexml_max_err_msg_size - used - 1;
6703   vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
6704   va_end(ap);
6705
6706 #ifndef FLEXML_quiet_parser
6707   /* print directly to sdterr */
6708   fprintf(stderr, "%s\n", flexml_err_msg);
6709   flexml_err_msg[0] = '\0';
6710 #endif
6711
6712   cleanup();
6713
6714   return 1;
6715 }