Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
2c25353a6500010cc159b15f37aa556565a9627f
[simgrid.git] / src / surf / simgrid_dtd.c
1
2 #line 3 "src/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         {
231         FILE *yy_input_file;
232
233         char *yy_ch_buf;                /* input buffer */
234         char *yy_buf_pos;               /* current position in input buffer */
235
236         /* Size of input buffer in bytes, not including room for EOB
237          * characters.
238          */
239         yy_size_t yy_buf_size;
240
241         /* Number of characters read into yy_ch_buf, not including EOB
242          * characters.
243          */
244         int yy_n_chars;
245
246         /* Whether we "own" the buffer - i.e., we know we created it,
247          * and can realloc() it to grow it, and should free() it to
248          * delete it.
249          */
250         int yy_is_our_buffer;
251
252         /* Whether this is an "interactive" input source; if so, and
253          * if we're using stdio for input, then we want to use getc()
254          * instead of fread(), to make sure we stop fetching input after
255          * each newline.
256          */
257         int yy_is_interactive;
258
259         /* Whether we're considered to be at the beginning of a line.
260          * If so, '^' rules will be active on the next match, otherwise
261          * not.
262          */
263         int yy_at_bol;
264
265     int yy_bs_lineno; /**< The line count. */
266     int yy_bs_column; /**< The column count. */
267     
268         /* Whether to try to fill the input buffer when we reach the
269          * end of it.
270          */
271         int yy_fill_buffer;
272
273         int yy_buffer_status;
274
275 #define YY_BUFFER_NEW 0
276 #define YY_BUFFER_NORMAL 1
277         /* When an EOF's been seen but there's still some text to process
278          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
279          * shouldn't try reading from the input source any more.  We might
280          * still have a bunch of tokens to match, though, because of
281          * possible backing-up.
282          *
283          * When we actually see the EOF, we change the status to "new"
284          * (via surf_parse_restart()), so that the user can continue scanning by
285          * just pointing surf_parse_in at a new input file.
286          */
287 #define YY_BUFFER_EOF_PENDING 2
288
289         };
290 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
291
292 /* Stack of input buffers. */
293 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
294 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
295 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
296
297 /* We provide macros for accessing buffer states in case in the
298  * future we want to put the buffer states in a more general
299  * "scanner state".
300  *
301  * Returns the top of the stack, or NULL.
302  */
303 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
304                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
305                           : NULL)
306
307 /* Same as previous macro, but useful when we know that the buffer stack is not
308  * NULL or when we need an lvalue. For internal use only.
309  */
310 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
311
312 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
313 static char yy_hold_char;
314 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
315 int surf_parse_leng;
316
317 /* Points to current character in buffer. */
318 static char *yy_c_buf_p = (char *) 0;
319 static int yy_init = 0;         /* whether we need to initialize */
320 static int yy_start = 0;        /* start state number */
321
322 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
323  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
324  */
325 static int yy_did_buffer_switch_on_eof;
326
327 void surf_parse_restart (FILE *input_file  );
328 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
329 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
330 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
331 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
332 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
333 void surf_parse_pop_buffer_state (void );
334
335 static void surf_parse_ensure_buffer_stack (void );
336 static void surf_parse__load_buffer_state (void );
337 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
338
339 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
340
341 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
342 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
343 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
344
345 void *surf_parse_alloc (yy_size_t  );
346 void *surf_parse_realloc (void *,yy_size_t  );
347 void surf_parse_free (void *  );
348
349 #define yy_new_buffer surf_parse__create_buffer
350
351 #define yy_set_interactive(is_interactive) \
352         { \
353         if ( ! YY_CURRENT_BUFFER ){ \
354         surf_parse_ensure_buffer_stack (); \
355                 YY_CURRENT_BUFFER_LVALUE =    \
356             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
357         } \
358         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
359         }
360
361 #define yy_set_bol(at_bol) \
362         { \
363         if ( ! YY_CURRENT_BUFFER ){\
364         surf_parse_ensure_buffer_stack (); \
365                 YY_CURRENT_BUFFER_LVALUE =    \
366             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
367         } \
368         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
369         }
370
371 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
372
373 /* Begin user sect3 */
374
375 #define surf_parse_wrap(n) 1
376 #define YY_SKIP_YYWRAP
377
378 typedef unsigned char YY_CHAR;
379
380 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
381
382 typedef int yy_state_type;
383
384 extern int surf_parse_lineno;
385
386 int surf_parse_lineno = 1;
387
388 extern char *surf_parse_text;
389 #define yytext_ptr surf_parse_text
390
391 static yy_state_type yy_get_previous_state (void );
392 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
393 static int yy_get_next_buffer (void );
394 static void yy_fatal_error (yyconst char msg[]  );
395
396 /* Done after the current pattern has been matched and before the
397  * corresponding action - sets up surf_parse_text.
398  */
399 #define YY_DO_BEFORE_ACTION \
400         (yytext_ptr) = yy_bp; \
401         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
402         (yy_hold_char) = *yy_cp; \
403         *yy_cp = '\0'; \
404         (yy_c_buf_p) = yy_cp;
405
406 #define YY_NUM_RULES 459
407 #define YY_END_OF_BUFFER 460
408 /* This struct is not used in this scanner,
409    but its presence is necessary. */
410 struct yy_trans_info
411         {
412         flex_int32_t yy_verify;
413         flex_int32_t yy_nxt;
414         };
415 static yyconst flex_int16_t yy_accept[2697] =
416     {   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         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
425         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
426         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
427
428         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
429         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
431         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
433         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
434         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
436         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
437         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
438
439         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
440         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
441       460,  458,   15,   10,   10,   15,   15,  438,   10,  438,
442         5,    6,    5,    8,    9,    8,  454,  446,  447,  455,
443       452,  455,  453,  457,  446,  447,  457,  458,   22,   10,
444        22,   22,   22,   20,   22,   26,   10,   26,   26,  458,
445        26,  458,  458,   26,   33,   10,   33,   33,   33,   31,
446        33,   37,   10,   37,   48,   10,   48,   48,   48,   46,
447        48,   48,   48,  455,  454,   78,   10,   78,   78,   78,
448        76,   78,   78,   78,   78,   78,   82,   10,   82,  458,
449
450        82,  101,   10,  101,  101,  101,   99,  101,  101,  101,
451       105,   10,  105,  114,   10,  114,  114,  114,  112,  114,
452       114,  118,   10,  118,  118,  458,  118,  118,  458,  458,
453       118,  458,  118,  458,  118,  129,   10,  129,  129,  129,
454       127,  129,  129,  129,  133,   10,  133,  133,  142,   10,
455       142,  142,  142,  140,  142,  142,  146,   10,  146,  146,
456       155,   10,  155,  155,  155,  153,  155,  155,  159,   10,
457       159,  168,   10,  168,  168,  168,  166,  168,  168,  172,
458        10,  172,  195,   10,  195,  195,  195,  193,  195,  195,
459       195,  195,  195,  199,   10,  199,  458,  199,  240,   10,
460
461       240,  240,  240,  238,  240,  240,  240,  240,  240,  240,
462       240,  240,  244,   10,  244,  265,   10,  265,  265,  265,
463       263,  265,  265,  265,  265,  265,  265,  265,  269,   10,
464       269,  278,   10,  278,  278,  278,  276,  278,  278,  282,
465        10,  282,  309,   10,  309,  309,  309,  307,  309,  309,
466       309,  309,  313,   10,  313,  313,  326,   10,  326,  326,
467       326,  324,  326,  326,  330,   10,  330,  458,  330,  347,
468        10,  347,  347,  347,  345,  347,  347,  347,  351,   10,
469       351,  351,  364,   10,  364,  364,  364,  362,  364,  364,
470       368,   10,  368,  381,   10,  381,  381,  381,  379,  381,
471
472       381,  381,  385,   10,  385,  385,  398,   10,  398,  398,
473       398,  396,  398,  398,  398,  398,  402,   10,  402,  458,
474       402,  409,   10,  409,  409,  409,  407,  409,  413,   10,
475       413,  420,   10,  420,  420,  420,  418,  420,  424,   10,
476       424,  424,  433,   10,  433,  433,  433,  431,  433,  433,
477       437,   10,  437,   10,    0,    2,    2,    0,    4,    7,
478       449,  448,    0,    0,    0,    0,    0,    0,    0,   21,
479        23,   23,    0,    0,    0,    0,    0,    0,    0,    0,
480         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
481         0,    0,    0,    0,    0,   32,   34,   34,    0,   47,
482
483        49,   49,   49,   49,    0,    0,    0,   77,   79,   79,
484        79,   79,   79,   79,   79,   79,   79,    0,    0,  100,
485       102,  102,  102,  102,    0,  113,  115,  115,  115,    0,
486         0,    0,    0,    0,    0,    0,    0,    0,    0,  128,
487       130,  130,  130,  130,    0,  141,  143,  143,  143,    0,
488       154,  156,  156,  156,    0,  167,  169,  169,  169,    0,
489       194,  196,  196,  196,  196,  196,  196,    0,    0,  239,
490       241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
491       241,  241,  241,  241,    0,  264,  266,  266,  266,  266,
492       266,  266,  266,  266,    0,  277,  279,  279,  279,    0,
493
494       308,  310,  310,  310,  310,  310,  310,    0,  325,  327,
495       327,  327,  327,    0,    0,  346,  348,  348,  348,  348,
496       348,    0,  363,  365,  365,  365,    0,  380,  382,  382,
497       382,  382,    0,  397,  399,  399,  399,  399,  399,    0,
498         0,  408,  410,  410,    0,  419,  421,  421,    0,  432,
499       434,  434,  434,    0,    0,    0,    0,    0,    3,    0,
500         0,    0,    0,    0,    0,    0,  456,    0,   23,    0,
501         0,  107,    0,    0,    0,    0,    0,    0,    0,    0,
502         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
503       106,    0,    0,    0,    0,    0,   34,    0,    0,   49,
504
505         0,    0,   49,    0,    0,    0,  451,   79,    0,    0,
506        79,   79,   79,   79,   79,   79,    0,    0,    0,  102,
507       102,  102,    0,    0,    0,    0,  115,    0,    0,  107,
508         0,    0,    0,    0,    0,  106,    0,    0,  130,    0,
509         0,  130,    0,    0,    0,    0,  143,    0,    0,    0,
510         0,  156,    0,    0,  169,  169,    0,    0,  196,  196,
511       196,    0,    0,  196,  196,    0,    0,    0,    0,  241,
512       241,    0,    0,  241,    0,    0,  241,  241,  241,  241,
513       241,  241,  241,  241,    0,    0,  266,  266,  266,    0,
514         0,  266,  266,  266,    0,    0,  279,    0,    0,    0,
515
516         0,  310,    0,    0,  310,  310,  310,    0,    0,  327,
517       327,  327,    0,    0,    0,  348,  348,  348,  348,    0,
518         0,  365,    0,    0,    0,    0,  382,  382,  382,    0,
519         0,  399,  399,  399,  399,    0,    0,    0,  410,    0,
520         0,    0,    0,    0,    0,    0,    0,  434,    0,    0,
521         0,   14,    1,    0,    0,  444,    0,    0,    0,  441,
522       440,    0,    0,   23,    0,    0,   25,    0,  107,    0,
523         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
524         0,    0,    0,    0,    0,    0,    0,    0,  106,    0,
525         0,    0,    0,    0,   34,    0,    0,   36,    0,   49,
526
527         0,   41,   40,   49,    0,    0,    0,   51,    0,   79,
528         0,   55,   54,    0,    0,   79,    0,    0,   79,   79,
529        79,    0,    0,   81,    0,    0,  102,  102,  102,    0,
530         0,  104,    0,    0,  109,  108,  115,    0,    0,  117,
531         0,    0,    0,    0,    0,    0,    0,    0,    0,  130,
532         0,  122,  121,  130,    0,    0,  132,    0,    0,  137,
533       136,  143,    0,    0,  145,    0,    0,  150,  149,  156,
534         0,    0,  158,    0,  169,  169,    0,    0,  171,    0,
535       196,  196,  196,    0,  176,  175,  196,  196,    0,    0,
536       198,    0,    0,    0,  241,  241,  241,  241,    0,  215,
537
538       214,  241,    0,  203,  202,    0,    0,  241,  241,  241,
539       241,  241,  241,  241,    0,    0,  243,    0,  266,  266,
540       266,  266,    0,  248,  247,    0,    0,  266,  266,    0,
541         0,  268,    0,  279,    0,  273,  272,    0,    0,  281,
542         0,  310,    0,  286,  285,  310,  310,  310,    0,    0,
543       312,    0,    0,    0,    0,    0,  327,    0,    0,  329,
544         0,    0,    0,    0,  348,  348,    0,    0,  348,    0,
545         0,  350,    0,  365,    0,  355,  354,    0,    0,  367,
546         0,    0,    0,  382,  382,    0,    0,    0,    0,  384,
547         0,  399,  399,  399,  399,    0,    0,  401,    0,    0,
548
549       410,    0,    0,  412,    0,    0,  417,  416,    0,    0,
550       423,    0,    0,  428,  427,  434,    0,    0,  436,    0,
551         0,    0,  445,  439,    0,    0,    0,   23,    0,    0,
552         0,    0,    0,    0,  173,    0,  283,    0,    0,  246,
553         0,    0,  425,    0,    0,    0,    0,    0,    0,    0,
554         0,  245,    0,    0,    0,    0,    0,    0,    0,   49,
555         0,    0,   79,    0,   59,   58,    0,    0,    0,   57,
556        56,   79,    0,    0,   79,    0,  426,  102,    0,    0,
557       102,    0,  115,    0,  116,    0,    0,  174,  284,    0,
558         0,    0,    0,  130,  130,    0,  143,    0,    0,    0,
559
560         0,    0,    0,  169,    0,  196,  196,    0,    0,  196,
561       196,    0,    0,    0,  241,  241,  241,  241,    0,    0,
562         0,  217,  216,  241,  241,  241,  241,  241,  241,  241,
563         0,  266,  266,  266,  266,    0,  256,  255,  266,  266,
564         0,  279,    0,  310,  310,  310,  310,    0,    0,  319,
565       318,    0,  317,  316,  327,    0,  283,    0,  336,  335,
566       348,  348,    0,  334,  333,  348,    0,  365,    0,    0,
567       374,  373,  382,  382,    0,  372,  371,    0,  399,    0,
568         0,  399,  399,    0,    0,  410,    0,    0,  434,    0,
569         0,    0,    0,   12,    0,  442,  443,    0,   23,    0,
570
571         0,    0,    0,    0,    0,  173,    0,  283,    0,  147,
572         0,  246,    0,    0,  425,    0,  314,    0,   39,    0,
573         0,    0,    0,  245,    0,   38,    0,   30,   29,    0,
574         0,   43,   42,   49,    0,    0,   79,    0,   61,   60,
575        79,    0,   65,   64,   79,    0,  426,  102,    0,    0,
576         0,    0,    0,    0,  115,    0,    0,  174,  284,  315,
577         0,  315,  314,  130,    0,    0,    0,  143,    0,    0,
578       152,  151,    0,    0,  165,  164,  169,    0,  196,  196,
579         0,  180,  179,    0,    0,    0,    0,  196,    0,  148,
580         0,  241,    0,    0,  241,  241,    0,  213,  212,    0,
581
582         0,  241,  241,  241,  241,  241,  241,    0,  266,    0,
583         0,  266,  266,    0,    0,  266,    0,  279,    0,  310,
584       310,  310,    0,    0,  310,    0,  327,    0,    0,  348,
585       348,  348,    0,  365,    0,  382,  382,    0,  399,    0,
586       389,  388,  399,  399,    0,    0,    0,    0,    0,    0,
587         0,    0,    0,    0,    0,    0,   11,    0,   23,    0,
588         0,    0,    0,    0,  415,    0,    0,  147,    0,    0,
589         0,   53,  314,  270,    0,   39,    0,  414,   52,    0,
590         0,    0,   38,    0,    0,   49,    0,    0,   79,   79,
591        79,    0,  102,    0,    0,    0,    0,    0,    0,    0,
592
593         0,    0,   96,   95,    0,  115,    0,    0,  315,  271,
594         0,  130,    0,  124,  123,    0,  143,    0,    0,  169,
595         0,  196,  196,    0,  178,  177,    0,    0,    0,  196,
596         0,  197,  148,    0,  241,    0,  225,  224,    0,    0,
597       241,    0,  211,  210,    0,    0,  241,  241,  241,  241,
598         0,    0,    0,  266,    0,  252,  251,    0,    0,  266,
599         0,  250,  249,  266,    0,  267,  279,    0,  310,  310,
600       310,    0,    0,    0,  310,    0,  311,  327,    0,    0,
601         0,    0,    0,    0,  348,    0,  365,    0,    0,    0,
602         0,    0,    0,  399,  399,  399,    0,    0,    0,  406,
603
604       405,    0,    0,    0,  430,  429,    0,  435,    0,    0,
605         0,    0,    0,    0,    0,  331,    0,    0,  201,  415,
606        28,    0,    0,    0,  387,   53,  270,  134,    0,  414,
607        52,  200,   27,  386,    0,    0,   49,    0,    0,   50,
608        79,    0,    0,   79,    0,    0,    0,    0,    0,    0,
609         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
610       332,    0,  271,  135,    0,    0,    0,    0,    0,    0,
611         0,  157,    0,    0,    0,  196,  196,    0,    0,  196,
612         0,  241,    0,  227,  226,  241,    0,  205,  204,    0,
613         0,  241,  241,  241,    0,  207,  206,    0,  266,    0,
614
615       254,  253,  266,  266,  279,    0,  310,    0,    0,  310,
616       310,    0,    0,  310,  327,    0,  328,    0,    0,  340,
617       339,    0,  338,  337,  348,    0,  365,    0,    0,  378,
618       377,    0,  376,  375,    0,  399,  399,  399,    0,    0,
619         0,    0,    0,    0,    0,   17,    0,   19,   18,    0,
620       331,  403,    0,  201,   28,  352,  160,   16,  387,  134,
621         0,    0,  200,   27,  386,    0,    0,   49,  450,   79,
622         0,   67,   66,   79,    0,   80,    0,   98,   97,    0,
623         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
624         0,  111,  110,  332,    0,  135,    0,    0,  126,  125,
625
626         0,    0,  139,  138,    0,    0,  163,  162,    0,  196,
627       196,    0,    0,    0,    0,  196,  161,  241,  241,    0,
628       209,  208,  241,  241,  241,    0,  266,  266,  266,  279,
629         0,  280,  310,    0,  292,  291,  310,  310,    0,    0,
630         0,    0,  310,  327,  353,  348,    0,  365,    0,    0,
631         0,    0,  399,  399,    0,  404,    0,    0,  422,    0,
632         0,    0,   17,    0,  403,    0,  352,  160,   16,    0,
633         0,    0,    0,   35,   49,    0,    0,   79,    0,    0,
634         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
635         0,    0,    0,  144,    0,  196,  196,    0,  186,    0,
636
637       185,  196,  161,  241,  241,    0,    0,  241,  241,    0,
638       242,  266,  266,  266,  279,    0,    0,  310,  310,  310,
639         0,  296,    0,  295,  310,  327,  353,  348,    0,  349,
640         0,    0,    0,    0,    0,  391,  390,    0,    0,  399,
641         0,  400,  404,    0,    0,    0,    0,    0,   24,    0,
642         0,    0,    0,   49,    0,    0,    0,   79,    0,    0,
643         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
644         0,    0,    0,  170,  196,  196,  188,  187,    0,    0,
645       241,  241,    0,  237,  236,  241,    0,    0,  266,  266,
646         0,    0,  279,    0,  288,  287,  310,  310,  310,  298,
647
648       297,    0,    0,  327,  348,    0,    0,    0,    0,  366,
649         0,    0,  395,  394,    0,    0,    0,  411,    0,    0,
650         0,  369,    0,    0,    0,    0,    0,    0,    0,    0,
651         0,    0,    0,   79,    0,    0,    0,    0,   88,    0,
652         0,    0,    0,   87,    0,  370,    0,    0,  196,    0,
653         0,    0,  190,  189,  241,  241,  241,    0,  235,  234,
654       266,    0,    0,    0,  262,  261,    0,    0,  310,  310,
655       310,    0,  300,  299,    0,    0,    0,    0,    0,    0,
656         0,    0,    0,    0,    0,    0,  393,  392,    0,    0,
657         0,  369,  119,    0,    0,    0,   45,   44,    0,    0,
658
659         0,    0,    0,    0,    0,    0,   79,    0,    0,    0,
660         0,    0,    0,    0,    0,    0,  370,  120,    0,    0,
661         0,  196,    0,  192,  191,  241,  241,  241,  266,    0,
662       258,  257,    0,  275,  274,  310,    0,    0,  310,    0,
663         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
664         0,    0,    0,    0,    0,    0,  119,   84,   83,    0,
665         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
666         0,   94,    0,    0,    0,   93,    0,    0,  120,    0,
667         0,  182,  181,  196,  241,  241,  241,  266,  310,    0,
668       294,  293,  310,    0,    0,    0,    0,    0,    0,    0,
669
670         0,    0,    0,  357,    0,    0,  356,    0,  383,    0,
671         0,    0,    0,    0,    0,   84,   83,    0,    0,    0,
672         0,    0,    0,    0,    0,    0,   63,   62,    0,    0,
673         0,    0,    0,    0,    0,    0,  131,  196,  241,  241,
674         0,    0,  266,    0,    0,    0,    0,    0,    0,    0,
675         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
676         0,    0,    0,    0,    0,    0,   75,   71,    0,    0,
677        74,   70,    0,   92,    0,    0,   91,    0,    0,    0,
678       103,  196,  241,  241,    0,    0,    0,  266,    0,  290,
679       289,    0,    0,    0,  323,    0,  322,    0,  344,    0,
680
681       343,    0,  359,  361,  358,  360,    0,    0,    0,   12,
682         0,   12,    0,    0,    0,    0,    0,   86,   90,   85,
683        89,  196,  241,  241,    0,    0,    0,    0,  266,    0,
684         0,    0,    0,  321,  320,  342,  341,    0,    0,    0,
685         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
686         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
687         0,    0,    0,    0,    0,    0,    0,    0,   69,    0,
688        68,    0,    0,  184,  183,    0,  233,  232,    0,    0,
689         0,    0,    0,    0,    0,    0,    0,    0,  260,  259,
690         0,    0,    0,    0,    0,    0,    0,   11,    0,    0,
691
692         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
693         0,    0,    0,    0,    0,    0,    0,   73,   72,    0,
694         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
695         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
696         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
697         0,    0,    0,    0,    0,    0,    0,    0,    0,  219,
698         0,    0,  218,    0,    0,  302,    0,    0,  301,    0,
699         0,    0,    0,    0,  223,    0,  222,    0,  304,    0,
700       303,    0,    0,    0,    0,    0,    0,    0,    0,    0,
701         0,    0,    0,  229,    0,  228,    0,    0,    0,    0,
702
703         0,    0,  231,  230,  221,  220,  306,  305,    0,    0,
704         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
705         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
706         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
707         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
708         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
709         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
710         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
711         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
712         0,    0,    0,    0,   13,    0
713
714     } ;
715
716 static yyconst flex_int32_t yy_ec[256] =
717     {   0,
718         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
719         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
720         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
721         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
722         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
723        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
724        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
725        28,   29,   30,   31,   32,   33,   34,   35,   36,   37,
726        31,   38,   39,   40,   41,   42,   43,   44,   45,   31,
727        46,    1,   47,    1,   48,    1,   49,   50,   51,   52,
728
729        53,   54,   55,   56,   57,   31,   58,   59,   60,   61,
730        62,   63,   64,   65,   66,   67,   68,   69,   70,   71,
731        72,   31,    1,    1,    1,    1,    1,    1,    1,    1,
732         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
733         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
734         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
735         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
736         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
737         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
738         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
739
740         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
741         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
742         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
743         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
744         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
745         1,    1,    1,    1,    1
746     } ;
747
748 static yyconst flex_int32_t yy_meta[73] =
749     {   0,
750         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
751         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
752         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
753         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
754         5,    5,    5,    5,    5,    1,    1,    5,    9,    9,
755         9,    9,    9,    9,    5,    5,    5,    5,    5,    5,
756         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
757         5,    5
758     } ;
759
760 static yyconst flex_int16_t yy_base[3074] =
761     {   0,
762         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
763        14,   17,   33,   36,   49,   55,   45,   61,   66,   72,
764       108,  177,   75,   78,   83,  128,  131,  134,  138,  141,
765       158,  197,  200,  203,  207,  210,  227,  230,  233,  236,
766       239,  256,  274,  328,  294,  297,  382,  445,  305,  351,
767       508,  574,  300,  354,  358,  361,  402,  405,  408,  412,
768       640,  707,  415,  465,  774,  839,  468,  471,  475,  478,
769       528,  531,  534,  538,  541,  594,  597,  600,  604,  607,
770       660,  663,  666,  670,  673,  727,  730,  733,  737,  740,
771       794,  797,  800,  804,  807,  859,  904,  964,  862,  865,
772
773       869,  872,  924,  927,  930,  934, 1024, 1091,  984,  987,
774       990,  994, 1044, 1047, 1050, 1054, 1158, 1219, 1057, 1111,
775      1280, 1347, 1114, 1117, 1414, 1480, 1121, 1124, 1178, 1181,
776      1184, 1188, 1191, 1239, 1546,    0, 1242, 1245, 1618,    0,
777      1249, 1252, 1690, 1747, 1300, 1303, 1804, 1870, 1306, 1310,
778      1313, 1367, 1370, 1373, 1377, 1380, 1936, 2002, 1434, 1437,
779      1440, 1444, 1500, 1503, 1506, 1510, 2068, 2134, 1710, 1713,
780      1716, 1720, 1767, 1770, 1773, 1777, 2200, 2257, 1824, 1827,
781      2314, 2380, 1830, 1834, 1837, 1890, 1893, 1896, 1900, 1903,
782      2446, 2512, 1956, 1959, 1962, 1966, 1969, 2022, 2025, 2028,
783
784      2578, 2647, 2032, 2035, 2716, 2773, 2088, 2091, 2094, 2098,
785      2101, 2154, 2157, 2160, 2830, 2899, 2164, 2167,    0,    0,
786      7480, 9610, 9610,   95,  100,   29,   41, 9610,  103,   51,
787      9610, 9610, 7465, 9610, 9610, 7454, 9610, 7469, 7467,  498,
788      9610, 9610, 9610, 9610, 7465, 7465, 7416,  145, 9610,  161,
789      7442,    0,  146, 9610, 7408, 9610,  166, 2964,   88,  204,
790       205,  254, 7446,    3, 9610,  169, 7437,    0,  153, 9610,
791      7399, 9610,  260,  419, 9610,  322, 7431,    0,  244, 9610,
792      7393, 7397, 7393,  420, 7398, 9610,  364, 7424,    0,  248,
793      9610, 7386, 7386,  257, 7388,  360, 9610,  440,   31, 7422,
794
795      7370, 9610,  567, 7412,    0,  306, 9610, 7368, 7369, 7360,
796      9610,  624,  482, 9610,  633, 7402,    0,  416, 9610, 7369,
797      7358, 9610,  692, 2172, 2176,  285,   35, 7393,  240,  135,
798       740, 2185,   59, 7402,  152, 9610,  697, 7393,    0,  417,
799      9610, 7348, 7357, 7346, 9610,  700, 7391,  181, 9610,  764,
800      7382,    0,  479, 9610, 7349, 7326, 9610,  767, 7385,  210,
801      9610,  824, 7376,    0,  480, 9610, 7339, 7341, 9610,  830,
802       483, 9610,  833, 7369,    0,  485, 9610, 7337, 7313, 9610,
803       889,  546, 9610,  895, 7364,    0,  543, 9610, 7310, 7316,
804      7325, 7312, 7306, 9610,  898,  310,  464,  527, 9610,  937,
805
806      7352,    0,  545, 9610, 7298,  303, 7304, 7313, 7313,  185,
807       568,  615, 9610,  954,  611, 9610,  997, 7341,    0,  684,
808      9610, 7291, 7285, 7284, 7293, 7295, 7277, 7271, 9610, 1014,
809       685, 9610, 1074, 7317,    0,  742, 9610, 7270, 7279, 9610,
810      1080,  752, 9610, 1083, 7310,    0,  751, 9610, 7276, 7272,
811      7274,  505, 9610, 1086, 7306,  593, 9610, 1141, 7297,    0,
812       808, 9610, 7250,  306, 9610, 1147,  950, 7299, 7251, 9610,
813      1150, 7289,    0,  809, 9610, 7238, 7233,  620, 9610, 1153,
814      7290,  621, 9610, 1208, 7277,    0,  873, 9610, 7239, 7243,
815      9610, 1214,  942, 9610, 1269, 7270,    0,  874, 9610, 7223,
816
817      7218, 7218, 9610, 1275, 7270,  811, 9610, 1330, 7261,    0,
818       938, 9610, 7208, 7213, 7217, 7202, 9610, 1333,  449,  991,
819       826, 9610, 1336, 7248,    0,  939, 9610, 7218, 9610, 1340,
820      1002, 9610, 1397, 7242,    0,  999, 9610, 7209, 9610, 1400,
821      7248,  872, 9610, 1403, 7235,    0, 1001, 9610, 7202, 7204,
822      9610, 1407, 1445, 1465,  713, 7177, 9610, 7237, 7226, 9610,
823      9610, 9610, 1459,  317, 7174, 7173, 7171, 7214, 7174, 9610,
824         0, 7167, 7164, 7187, 7160, 7148,  687, 7157, 7157, 7156,
825       887,   30, 1017, 7145, 7146,  757, 1018, 7167, 1071, 7144,
826      1081, 7139, 1138, 1148, 1209, 9610,    0, 7140, 7141, 9610,
827
828         0, 7138, 1513, 7127, 1009, 7124, 7170, 9610,    0, 6674,
829      1723, 6663, 6683, 6670, 6678, 6676, 6676, 6662, 1411, 9610,
830         0, 6673, 6663, 6674, 6654, 9610,    0, 1780, 6645, 6690,
831      6671, 6630, 6638, 6642, 1471, 6630, 6653, 1473, 1474, 9610,
832         0, 6630, 2221, 6637, 6617, 9610,    0, 2230, 6618, 6611,
833      9610,    0, 2277, 6615, 6614, 9610,    0, 6612, 6601, 6603,
834      9610,    0, 6612, 1196, 2280, 6590, 6609, 6597, 1007, 9610,
835         0, 6602, 6598, 2283, 6580, 2286, 6576, 6568, 6580, 6580,
836      6562, 6576, 6570, 6564, 6565, 9610,    0, 6552, 6552, 6536,
837      2289, 6530, 6519, 6539, 6513, 9610,    0, 6509, 2334, 6505,
838
839      9610,    0, 6496, 2337, 6489, 6505, 6500, 6489, 9610,    0,
840      6479, 6490, 6480, 6473, 6472, 9610,    0, 6461, 6476, 6461,
841      6451, 6482, 9610,    0, 6438, 2340, 6439, 9610,    0, 6427,
842      6444, 6440, 6439, 9610,    0, 6423, 6416, 6422, 6430, 6402,
843      6381, 9610,    0, 6386, 6394, 9610,    0, 2343, 6391, 9610,
844         0, 2346, 6381, 6372, 6414, 6422, 1111, 6363, 9610, 1525,
845         0, 6359, 6358, 6400, 6389, 6333, 9610, 6345, 6326, 2400,
846      2403, 1799, 6332, 6320, 6308, 6314, 6307, 6308, 6297, 6288,
847      6288, 6300, 6303, 6288, 6276, 6268, 6272, 6270, 6257, 6255,
848      1854, 6231, 6247, 6242, 6230, 6241, 6235, 2408, 2411, 6234,
849
850      2414, 1922, 6228, 6247, 2466, 2471, 9610, 6217, 2475, 1987,
851      2478, 6207, 2486, 6205, 6208, 6207, 2481, 2545, 6192, 6184,
852      6191, 6185, 2535, 2540, 2548, 2053, 6168, 2598, 2606, 1865,
853      6170, 6161, 6164, 6152, 6155, 1930, 6140, 6139, 6138, 2609,
854      2122, 6151, 2612, 2617, 2627, 2368, 6131, 2667, 2671, 2676,
855      2434, 6127, 2679, 2686, 6122, 6114, 2694, 2737, 6109, 6091,
856      6102, 2740, 2632, 6092, 6077, 2747, 2750, 6066, 6066, 6066,
857      1475, 2794, 2698, 6069, 2797, 2706, 2802, 6067, 6058, 6048,
858      6035, 6036, 6023, 6035, 2805, 2862, 6030,  557, 6017, 2850,
859      2762, 2853, 6028, 6012, 2858, 2871, 6009, 2877, 2820, 2923,
860
861      2927, 6021, 2930, 2886, 6018, 5999, 5996, 2933, 2937, 2948,
862      2956, 2959, 2962, 2970, 6000, 2977, 2989, 2997, 3003, 3008,
863      3031, 5986, 3034, 3040, 3054, 3057, 3062, 3065, 3069, 3076,
864      3083, 5986, 5968, 5975, 5967, 3087, 3091, 5963, 5948, 3095,
865      3098, 3102, 3120, 3130, 3133, 3106, 3136, 5947, 3144, 3155,
866      5993, 9610, 9610, 1299, 5949, 9610, 5990, 5988, 5934, 9610,
867      9610, 5932, 5930, 5929, 3158, 3163, 9610, 3166, 1741, 5923,
868      5915, 5933, 5914, 5925, 5910, 5906, 5906, 5901, 5892, 5888,
869      5884, 1327, 5898, 5881, 5878, 5891, 5882, 5881, 1995, 5856,
870      5861, 5854, 1670, 5866, 3169, 3177, 3187, 9610, 3190, 3197,
871
872      3200, 9610, 9610, 3209, 5890, 3215, 3219, 9610, 3223, 5849,
873      3227, 9610, 9610, 3242, 3245, 3254, 3260, 3272, 5861, 3263,
874      5852, 3266, 3281, 9610, 3285, 1727, 5850, 3288, 5843, 3291,
875      3294, 9610, 3300, 3306, 9610, 9610, 5838, 3314, 3319, 9610,
876      3322, 5827, 5838, 5815, 5823, 5812, 5809, 5806, 5801, 5803,
877      3326, 9610, 9610, 5794, 3334, 3341, 9610, 3348, 3353, 9610,
878      9610, 5803, 3361, 3367, 9610, 3370, 3373, 9610, 9610, 3381,
879      3389, 3392, 9610, 3395, 3399, 3402, 3420, 3423, 9610, 3426,
880      5783, 5772, 3432, 3435, 9610, 9610, 5758, 5759, 3445, 3450,
881      9610, 3453, 5750, 5747, 5742, 5729, 5745, 5737, 3458, 9610,
882
883      9610, 3472, 3475, 9610, 9610, 3483, 3486, 5726, 5720, 5723,
884      5719, 5711, 5713, 5699, 3494, 3497, 9610, 3501, 5695, 5692,
885      5677, 5691, 3504, 9610, 9610, 3520, 3523, 5673, 5684, 3531,
886      3534, 9610, 3538, 5683, 3541, 9610, 9610, 3553, 3557, 9610,
887      3560, 5657, 3572, 9610, 9610, 5664, 5667, 5666, 3563, 3568,
888      9610, 3582, 3590, 3594, 3602, 3608, 5665, 3616, 3620, 9610,
889      3627, 5658, 3623, 3635, 5649, 5640, 3630, 3648, 5641, 3656,
890      3659, 9610, 3662, 5636, 3665, 9610, 9610, 3681, 3684, 9610,
891      3687, 3690, 3694, 5620, 5619, 3709, 3712, 3720, 3727, 9610,
892      3730, 5607, 3733, 5620, 5596, 3739, 3742, 9610, 3751, 5594,
893
894      5596, 3754, 3761, 9610, 3764, 3773, 9610, 9610, 3783, 3786,
895      9610, 3792, 3795, 9610, 9610, 5591, 3805, 3812, 9610, 3818,
896      1305, 3824, 9610, 9610, 5626, 5617, 5579, 5569, 3827, 5562,
897      5553, 5545, 5541, 5549, 2061, 5512, 2188, 5511, 5512, 2251,
898      5521, 5517, 2308, 5491, 5498, 5501, 5495, 5482, 5476, 5469,
899      5466, 2504, 5480, 5478, 3831, 3837, 3852, 3855, 3858, 5473,
900      5495, 3866, 5467, 3873, 9610, 9610, 3881, 3886, 3895, 9610,
901      9610, 5465, 3903, 3906, 5453, 3916, 2507, 5444, 3921, 3924,
902      3935, 3939, 5442, 3942, 9610, 5430, 5424, 2559, 2569, 5436,
903      5429, 5423, 5419, 5406, 3945, 3949, 5408, 3953, 3963, 3968,
904
905      3976, 3981, 3985, 5402, 3995, 5408, 5361, 4000, 4003, 4019,
906      4022, 4025, 5342, 5343, 5348, 4028, 5328, 5338, 4031, 4040,
907      4049, 9610, 9610, 4057, 5315, 5329, 5312, 5314, 5326, 5301,
908      4060, 5321, 4063, 5301, 5310, 4069, 9610, 9610, 4081, 5292,
909      4084, 5260, 4087, 5250, 5247, 5236, 4091, 4094, 4099, 9610,
910      9610, 4109, 9610, 9610, 5225, 4117, 3000, 4121, 9610, 9610,
911      5212, 5225, 4129, 9610, 9610, 5175, 4138, 5169, 4141, 4144,
912      9610, 9610, 5151, 5145, 4153, 9610, 9610, 4161, 5136, 4164,
913      4167, 5071, 5089, 4175, 5075, 4183, 4186, 4189, 4194, 4201,
914       593, 5102, 4212, 9610, 5100, 9610, 9610, 5057, 5054, 4215,
915
916      4993, 5006, 4975, 4933, 4895, 2572, 4891, 2640, 4880, 2743,
917      4881, 2881, 4819, 4714, 4220, 4708, 4225, 4706, 4234, 4703,
918      4606, 4612, 4595, 4237, 4569, 4243, 4246, 9610, 9610, 4254,
919      4257, 9610, 9610, 4560, 4529, 4268, 4472, 4274, 9610, 9610,
920      4413, 4283, 9610, 9610,   79, 4291, 4294,  108, 4297, 1763,
921      2084, 4305, 4310, 4323,  165,  240,  250, 4326, 4329, 4332,
922       295, 4335, 4338,  314, 4342, 4345, 4353,  382, 4360, 4363,
923      9610, 9610, 4375, 4379, 9610, 9610,  383, 4387,  447,  446,
924      4390, 9610, 9610, 4356, 4402, 4410, 4413,  506, 4421, 4424,
925       575,  629, 4428, 4431, 4441,  685, 4447, 9610, 9610, 4455,
926
927      4459, 4467,  693,  711,  706,  763, 4473, 4476,  774, 4479,
928      4485, 4497,  794, 4500, 4503,  827, 4511,  821, 4518,  836,
929       831,  865, 4521, 4524,  892, 4532,  915, 4542,  944, 4545,
930      4551, 4554, 4557, 1006, 4563, 4572, 4577, 4582, 1002, 4595,
931      9610, 9610, 1017, 1040, 4585, 1069, 4590, 4604, 4612, 4619,
932      4624, 4627, 4638, 1309, 1302, 1121, 9610, 1071, 4642, 4647,
933      1136, 1137, 1165, 1143, 4650, 1161, 1168, 4653, 1195, 1194,
934      1198, 4660, 4666, 4671, 1216, 4675, 1224, 4678, 4681, 1231,
935      1258, 1254, 4684, 1279, 4687, 1335, 1365, 4690, 1327, 4693,
936      1335, 4696, 4699, 1374, 1361, 1423, 1376, 1391, 1394, 1429,
937
938      1413, 4702, 9610, 9610, 4711, 4717, 1401, 1418, 4720, 4723,
939      1422, 4726, 4731, 9610, 9610, 4740, 4744, 4747, 4750, 4762,
940      4769, 1421, 1430, 4773, 9610, 9610, 4781, 1460, 1475, 1462,
941      4789, 9610, 4794, 1489, 1488, 4797, 9610, 9610, 4808, 4811,
942      1649, 4819, 9610, 9610, 4827, 4830, 4838, 1672, 1682, 1675,
943      4841, 4845, 4859, 1678, 4862, 9610, 9610, 4870, 4874, 1690,
944      4882, 9610, 9610, 1683, 4890, 9610, 1697, 4893, 1696, 4896,
945      1739, 4899, 1753, 1761, 1763, 4914, 9610, 1778, 4917, 1776,
946      4920, 4923, 4938, 4943, 1787, 4951, 1784, 4957, 4960, 4963,
947      4971, 4978, 4989, 1786, 1789, 1796, 4992, 1798, 4995, 9610,
948
949      9610, 5003, 5011, 5018, 9610, 9610, 5026, 9610, 1840, 2079,
950      1845, 1802, 5030, 5033, 5041, 5048, 1819, 1839, 5060, 5065,
951      5068, 1848, 1859, 1853, 5071, 5074, 5077, 5080, 1853, 5083,
952      5086, 5089, 5092, 5095, 1860, 5098, 1866, 1889, 5101, 9610,
953      1887, 5105, 5108, 1918, 5123, 5127, 5130, 1940, 1937, 1938,
954      1944, 1938, 1950, 1947, 1952, 1959, 1957, 5138, 5145, 5150,
955      5158, 1939, 5163, 5166, 5169, 5172, 5180, 5183, 5188, 5201,
956      5204, 9610, 5207, 5213, 5225, 1959, 1966, 2017, 2031, 1982,
957      1989, 1986, 5228, 9610, 9610, 1986, 5237, 9610, 9610, 5245,
958      5249, 1999, 1997, 2002, 5257, 9610, 9610, 5265, 2008, 5268,
959
960      9610, 9610, 2017, 2049, 2043, 5279, 2055, 5284, 5287, 2064,
961      2059, 2138, 2152, 2068, 2078, 5298, 9610, 2071, 5302, 9610,
962      9610, 5310, 9610, 9610, 2082, 5318, 2089, 5321, 5325, 9610,
963      9610, 5333, 9610, 9610, 5341, 5344, 5347, 5350, 5353, 2107,
964      5356, 5378, 5381, 2173, 2163, 5387, 5390, 9610, 9610, 5400,
965      5403, 5409, 2108, 5412, 5419, 5422, 5425, 5428, 5431, 5434,
966      2110, 2134, 5437, 5440, 5443, 2135, 5446, 2132, 9610, 5449,
967      5452, 9610, 9610, 5460, 5467, 9610, 5471, 9610, 9610, 2191,
968      2187, 2204, 2213, 2222, 2231, 2233, 2268, 2263, 2271, 5479,
969      5482, 9610, 9610, 5490, 2230, 5493, 2233, 5498, 9610, 9610,
970
971      5506, 5509, 9610, 9610, 5517, 5526, 9610, 9610, 5520, 2244,
972      2253, 2280, 2307, 2303, 2342, 2299, 5540, 2297, 2300, 5543,
973      9610, 9610, 5553, 2295, 2305, 5556, 2306, 2311, 2314, 2315,
974      5559, 9610, 5562, 5565, 9610, 9610, 2316, 2313, 2349, 2372,
975      2352, 2387, 2355, 2360, 5580, 2370, 5583, 5586, 5589, 5592,
976      5595, 5598, 5613, 5616, 5619, 5622, 5625, 5638, 9610, 5644,
977      2419, 2478, 5634, 5653, 5649, 2354, 5657, 5663, 5668, 2350,
978      2363, 2364, 5673, 9610, 2357, 5676, 5679, 5687, 2387, 2386,
979      2406, 2394, 2406, 2402, 2428, 2452, 2447, 2458, 5694, 2432,
980      2431, 5697, 5700, 9610, 5706, 2461, 2468, 2534, 9610, 2532,
981
982      9610, 5709, 5719, 2478, 2498, 5727, 5730, 2494, 5738, 5745,
983      9610, 2487, 2490, 5748, 2491, 5756, 5767, 2510, 2510, 2518,
984      2597, 9610, 2595, 9610, 5759, 2547, 5777, 2548, 5780, 9610,
985      5783, 5786, 5794, 5801, 5804, 9610, 9610, 5813, 5816, 5824,
986      5827, 9610, 5831, 5834, 2613, 2619, 2643, 5837, 9610, 2569,
987      2560, 2574, 2587, 5842, 5846, 2833, 3116, 5856, 2647, 2663,
988      2662, 2670, 2697, 2681, 2691, 2708, 2733, 2747, 5860, 2705,
989      2697, 5863, 5868, 9610, 2689, 5874, 9610, 9610, 5882, 5888,
990      2697, 2709, 5896, 9610, 9610, 2732, 5904, 5907, 2723, 5922,
991      5925, 5928, 5936, 5943, 9610, 9610, 2745, 2757, 2754, 9610,
992
993      9610, 5954, 5957, 5965, 5968, 5972, 2903, 3173, 5986, 9610,
994      5989, 5992, 9610, 9610, 6000, 6008, 6018, 9610, 2797, 2798,
995      2922, 6021, 2761, 2764, 2776, 6024, 6027, 2790, 2827, 2949,
996      2829, 2834, 3004, 6038, 2861, 2851, 2849, 2855, 9610, 2873,
997      2873, 2877, 2881, 9610, 6042, 6045, 2895, 6048, 6056, 6051,
998      6063, 6074, 9610, 9610, 2906, 2893, 2919, 6082, 9610, 9610,
999      2929, 6090, 6094, 6104, 9610, 9610, 6112, 6115, 2928, 6123,
1000      2937, 6126, 9610, 9610, 6134, 6137, 6145, 6148, 2959, 2961,
1001      2961, 2973, 2981, 2981, 6156, 6159, 9610, 9610, 3025, 3020,
1002      6167, 6170, 6175, 2958, 2980, 6179, 9610, 9610, 3028, 3017,
1003
1004      3019, 3034, 3054, 3047, 3048, 3084, 6187, 3073, 3094, 3113,
1005      3098, 3087, 3106, 3121, 3121, 6190, 6193, 6196, 6199, 6209,
1006      6212, 3090, 6220, 9610, 9610, 3095, 3093, 3102, 3122, 6228,
1007      9610, 9610, 6236, 9610, 9610, 3124, 6244, 6247, 3110, 6255,
1008      3189, 3197, 6263, 3205, 3296, 3141, 3150, 3181, 3153, 3170,
1009      3228, 6271, 3279, 6274, 6277, 6280, 6299, 6302, 6305, 3203,
1010      3226, 3228, 3216, 3224, 3234, 3252, 3241, 6308, 6311, 3271,
1011      3276, 9610, 3283, 3290, 3297, 9610, 3310, 6319, 6322, 6326,
1012      6329, 9610, 9610, 3290, 3291, 3296, 6338, 3301, 6341, 6345,
1013      9610, 9610, 6359, 3324, 3340, 3331, 3352, 3344, 3360, 3352,
1014
1015      3363, 3372, 3382, 9610, 3376, 3387, 9610, 6362, 9610, 3396,
1016      6365, 6368, 6387, 6407, 6454, 6377, 6395, 3389, 3411, 3413,
1017      3380, 3406, 3424, 3433, 3405, 6427, 9610, 9610, 3453, 3433,
1018      3435, 3460, 3438, 3439, 6398, 6401, 9610, 3421, 3423, 3432,
1019      6445, 6435, 3435, 6448, 6474, 6466, 6484, 3503, 3472, 3503,
1020      3476, 3510, 3479, 3511, 3489, 3524, 3525, 3537, 3539, 3548,
1021      6493, 3581, 3570, 6513, 6560, 3535, 9610, 9610, 3514, 3539,
1022      9610, 9610, 3544, 9610, 3583, 3589, 9610, 3590, 3598, 6503,
1023      9610, 3555, 3562, 3544, 6533, 3678, 3681, 3582, 6541, 9610,
1024      9610, 6549, 3699, 3712, 9610, 3639, 9610, 3637, 9610, 3642,
1025
1026      9610, 3644, 9610, 9610, 9610, 9610, 3650, 3763, 3635, 3666,
1027      3740, 3664, 6506, 3660, 3651, 3663, 3654, 9610, 9610, 9610,
1028      9610, 6571, 6580, 6583, 3684, 3652, 3739, 3670, 6589, 3750,
1029      3673, 3751, 3690, 9610, 9610, 9610, 9610, 6592, 3764, 3757,
1030      3791, 6601, 3796, 3783, 3801, 3789, 6607, 6611, 6620, 6625,
1031      6633, 6638, 3777, 3785, 3801, 3784, 3803, 3815, 6646, 6653,
1032      3802, 3815, 3827, 3811, 3819, 3841, 6664, 3845, 9610, 3832,
1033      9610, 3837, 6667, 9610, 9610, 6676, 9610, 9610, 6684, 3854,
1034      3864, 3836, 3845, 3849, 3859, 3869, 3875, 6692, 9610, 9610,
1035      3877, 3883, 3883, 3892, 3898, 3894, 3915, 9610, 3928, 3941,
1036
1037      3936, 3932, 3941, 3946, 3946, 3956, 3960, 3962, 3968, 3969,
1038      3971, 3983, 3984, 3981, 3988, 3990, 3997, 9610, 9610, 3980,
1039      4017, 4000, 4026, 4017, 4015, 4043, 4032, 4033, 4052, 4042,
1040      4040, 4074, 4069, 4068, 4091, 4140, 4080, 4084, 4091, 4091,
1041      4108, 4099, 4145, 4146, 4137, 4166, 4156, 4157, 4195, 4181,
1042      4171, 4202, 4205, 4182, 4194, 4200, 4207, 4228, 4209, 9610,
1043      4235, 4218, 9610, 4247, 4229, 9610, 4258, 4235, 9610, 4284,
1044      4236, 4250, 4242, 4259, 9610, 4276, 9610, 4279, 9610, 4284,
1045      9610, 4289, 6702, 4291, 4314, 4297, 4341, 4308, 4324, 4326,
1046      4327, 6705, 4368, 9610, 4375, 9610, 4380, 4378, 4392, 4392,
1047
1048      4390, 4398, 9610, 9610, 9610, 9610, 9610, 9610, 4400, 4418,
1049      4428, 4444, 4488, 4509, 4477, 4521, 4498, 4530, 4570, 4600,
1050      4497, 4512, 4416, 4580, 4697, 4718, 4435, 4548, 4401, 4419,
1051      4614, 4712, 4742, 4785, 4796, 4815, 4604, 4804, 4754, 4784,
1052      4598, 4847, 4721, 4849, 4832, 4835, 4735, 4915, 4965, 4991,
1053      4799, 4850, 4928, 4958, 4886, 4891, 4913, 4968, 4833, 4855,
1054      5006, 5027, 5096, 5103, 4918, 4983, 4838, 4916, 5135, 5157,
1055      4996, 5178, 4980, 5160, 5124, 5218, 5179, 5192, 5193, 5205,
1056      5093, 5143, 5245, 5264, 5258, 5274, 4990, 5295, 5312, 5313,
1057      5289, 5045, 6713, 6716, 9610, 9610, 6736, 6745, 6754, 6763,
1058
1059      6772, 6781, 6790, 6799, 6808, 6817, 6826, 6835, 6844, 6853,
1060      6862, 6871, 6880, 6889, 6898, 6907, 6916, 6925, 6934, 6943,
1061      6952, 6961, 6970, 6979, 6988, 6997, 7006, 7015, 7024, 7033,
1062      7042, 7051, 7060, 7069, 7078, 7087, 7096, 7105, 7114, 7123,
1063      7132, 7141, 7150, 7159, 7168, 7177, 7184, 7191, 7198, 7205,
1064      7212, 7219, 7226, 7233, 7240, 7247, 7254, 7261, 7268, 7275,
1065      7282, 7289, 7296, 7303, 7310, 7317, 7324, 7331, 7338, 7347,
1066      7354, 7359, 7366, 7371, 7378, 7383, 7390, 7395, 7402, 7407,
1067      7414, 7419, 7426, 7431, 7438, 7443, 7450, 7455, 7462, 7467,
1068      7474, 7479, 7486, 7491, 7498, 7503, 7510, 7515, 7522, 7527,
1069
1070      7534, 7539, 7546, 7551, 7558, 7563, 7570, 7575, 7582, 7587,
1071      7594, 7599, 7606, 7611, 7618, 7623, 7632, 7638, 7645, 7653,
1072      7660, 7668, 7675, 7683, 7690, 7698, 7705, 7713, 7720, 7728,
1073      7735, 7743, 7750, 7758, 7765, 7773, 7780, 7788, 7795, 7803,
1074      7810, 7818, 7825, 7833, 7840, 7848, 7855, 7863, 7871, 7879,
1075      7887, 7895, 7902, 7910, 7918, 7926, 7933, 7941, 7948, 7956,
1076      7964, 7971, 7979, 7988, 7994, 8001, 8009, 8017, 8025, 8033,
1077      8041, 8048, 8056, 8063, 8071, 8078, 8086, 8093, 8101, 8108,
1078      8116, 8124, 8132, 8140, 8148, 8155, 8163, 8170, 8178, 8185,
1079      8193, 8200, 8208, 8215, 8223, 8230, 8238, 8245, 8253, 8260,
1080
1081      8268, 8275, 8283, 8290, 8298, 8305, 8313, 8321, 8328, 8336,
1082      8345, 8354, 8361, 8369, 8377, 8384, 8392, 8399, 8407, 8414,
1083      8422, 8429, 8436, 8444, 8451, 8459, 8467, 8474, 8482, 8489,
1084      8497, 8504, 8512, 8519, 8527, 8534, 8542, 8549, 8557, 8564,
1085      8572, 8579, 8587, 8594, 8602, 8609, 8617, 8624, 8632, 8640,
1086      8648, 8656, 8664, 8672, 8681, 8690, 8697, 8705, 8713, 8720,
1087      8728, 8735, 8743, 8750, 8758, 8765, 8772, 8780, 8787, 8795,
1088      8803, 8810, 8818, 8825, 8833, 8840, 8848, 8855, 8863, 8870,
1089      8878, 8885, 8893, 8900, 8908, 8916, 8924, 8931, 8939, 8947,
1090      8955, 8962, 8970, 8978, 8986, 8994, 9003, 9012, 9020, 9028,
1091
1092      9036, 9043, 9051, 9058, 9066, 9074, 9082, 9090, 9098, 9106,
1093      9114, 9122, 9130, 9138, 9146, 9153, 9160, 9168, 9175, 9182,
1094      9190, 9197, 9204, 9212, 9219, 9227, 9234, 9242, 9250, 9257,
1095      9265, 9273, 9281, 9290, 9299, 9307, 9315, 9322, 9329, 9337,
1096      9345, 9353, 9361, 9369, 9376, 9383, 9391, 9398, 9405, 9413,
1097      9420, 9427, 9434, 9442, 9449, 9457, 9465, 9473, 9481, 9489,
1098      9497, 9506, 9515, 9523, 9531, 9538, 9546, 9555, 9564, 9573,
1099      9582, 9591, 9600
1100     } ;
1101
1102 static yyconst flex_int16_t yy_def[3074] =
1103     {   0,
1104      2697, 2697, 2698, 2698, 2698, 2698, 2699, 2699, 2700, 2700,
1105      2701, 2701, 2702, 2702, 2702, 2702, 2703, 2703, 2697, 2697,
1106      2704, 2704, 2705, 2705, 2705, 2705, 2697, 2697, 2705, 2705,
1107      2705, 2705, 2697, 2697, 2705, 2705, 2697, 2697, 2705, 2705,
1108      2705, 2705, 2706, 2706, 2707, 2707, 2708, 2708, 2702, 2702,
1109      2709, 2709, 2710, 2710, 2697, 2697, 2710, 2710, 2710, 2710,
1110      2711, 2711, 2712, 2712, 2713, 2713, 2714, 2714, 2714, 2714,
1111      2697, 2697, 2714, 2714, 2714, 2714, 2697, 2697, 2714, 2714,
1112      2697, 2697, 2714, 2714, 2714, 2714, 2697, 2697, 2714, 2714,
1113      2697, 2697, 2714, 2714, 2714, 2714, 2715, 2715, 2716, 2716,
1114
1115      2697, 2697, 2716, 2716, 2716, 2716, 2717, 2717, 2718, 2718,
1116      2697, 2697, 2718, 2718, 2718, 2718, 2719, 2719, 2720, 2720,
1117      2721, 2721, 2722, 2722, 2723, 2723, 2724, 2724, 2697, 2697,
1118      2724, 2724, 2724, 2724, 2696,  135, 2725, 2725, 2696,  139,
1119      2726, 2726, 2727, 2727, 2728, 2728, 2729, 2729, 2730, 2730,
1120      2697, 2697, 2730, 2730, 2730, 2730, 2731, 2731, 2732, 2732,
1121      2697, 2697, 2732, 2732, 2732, 2732, 2733, 2733, 2734, 2734,
1122      2697, 2697, 2734, 2734, 2734, 2734, 2735, 2735, 2736, 2736,
1123      2737, 2737, 2738, 2738, 2697, 2697, 2738, 2738, 2738, 2738,
1124      2739, 2739, 2740, 2740, 2697, 2697, 2740, 2740, 2740, 2740,
1125
1126      2741, 2741, 2742, 2742, 2743, 2743, 2744, 2744, 2697, 2697,
1127      2744, 2744, 2744, 2744, 2745, 2745, 2746, 2746, 2697, 2697,
1128      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1129      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1130      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1131      2696, 2747, 2696, 2696, 2747, 2696, 2696, 2696,  258,  258,
1132       258,  258,  261,  261, 2696, 2696, 2696, 2748, 2696, 2696,
1133      2748, 2696, 2696, 2696, 2696, 2696, 2696, 2749, 2696, 2696,
1134      2749, 2749, 2749, 2696, 2696, 2696, 2696, 2696, 2750, 2696,
1135      2696, 2750, 2750, 2750, 2750, 2750, 2696, 2696,  261,  299,
1136
1137       299, 2696, 2696, 2696, 2751, 2696, 2696, 2751, 2751, 2751,
1138      2696, 2696, 2696, 2696, 2696, 2696, 2752, 2696, 2696, 2752,
1139      2752, 2696, 2696,  262,  299,  262,  324,  325,  325,  325,
1140       325,  331,  332,  331,  331, 2696, 2696, 2696, 2753, 2696,
1141      2696, 2753, 2753, 2753, 2696, 2696,  299,  299, 2696, 2696,
1142      2696, 2754, 2696, 2696, 2754, 2754, 2696, 2696,  299,  299,
1143      2696, 2696, 2696, 2755, 2696, 2696, 2755, 2755, 2696, 2696,
1144      2696, 2696, 2696, 2696, 2756, 2696, 2696, 2756, 2756, 2696,
1145      2696, 2696, 2696, 2696, 2696, 2757, 2696, 2696, 2757, 2757,
1146      2757, 2757, 2757, 2696, 2696,  299,  299,  299, 2696, 2696,
1147
1148      2696, 2758, 2696, 2696, 2758, 2758, 2758, 2758, 2758, 2758,
1149      2758, 2758, 2696, 2696, 2696, 2696, 2696, 2696, 2759, 2696,
1150      2696, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2696, 2696,
1151      2696, 2696, 2696, 2696, 2760, 2696, 2696, 2760, 2760, 2696,
1152      2696, 2696, 2696, 2696, 2696, 2761, 2696, 2696, 2761, 2761,
1153      2761, 2761, 2696, 2696,  299,  299, 2696, 2696, 2696, 2762,
1154      2696, 2696, 2762, 2762, 2696, 2696,  299,  467,  467, 2696,
1155      2696, 2696, 2763, 2696, 2696, 2763, 2763, 2763, 2696, 2696,
1156       467,  467, 2696, 2696, 2696, 2764, 2696, 2696, 2764, 2764,
1157      2696, 2696, 2696, 2696, 2696, 2696, 2765, 2696, 2696, 2765,
1158
1159      2765, 2765, 2696, 2696,  467,  467, 2696, 2696, 2696, 2766,
1160      2696, 2696, 2766, 2766, 2766, 2766, 2696, 2696,  299,  299,
1161       299, 2696, 2696, 2696, 2767, 2696, 2696, 2767, 2696, 2696,
1162      2696, 2696, 2696, 2696, 2768, 2696, 2696, 2768, 2696, 2696,
1163       299,  299, 2696, 2696, 2696, 2769, 2696, 2696, 2769, 2769,
1164      2696, 2696, 2696, 2696, 2770, 2696, 2696, 2696, 2696, 2696,
1165      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1166      2771, 2771, 2772, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1167      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1168      2696, 2696, 2696, 2696, 2696, 2696, 2773, 2773, 2774, 2696,
1169
1170      2775, 2775, 2775, 2775, 2696, 2776, 2696, 2696, 2777, 2777,
1171      2777, 2777, 2777, 2777, 2777, 2777, 2777, 2778, 2696, 2696,
1172      2779, 2779, 2779, 2779, 2780, 2696, 2781, 2781, 2781, 2782,
1173      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1174      2783, 2783, 2783, 2783, 2784, 2696, 2785, 2785, 2785, 2786,
1175      2696, 2787, 2787, 2787, 2788, 2696, 2789, 2789, 2789, 2790,
1176      2696, 2791, 2791, 2791, 2791, 2791, 2791, 2792, 2696, 2696,
1177      2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793,
1178      2793, 2793, 2793, 2793, 2794, 2696, 2795, 2795, 2795, 2795,
1179      2795, 2795, 2795, 2795, 2796, 2696, 2797, 2797, 2797, 2798,
1180
1181      2696, 2799, 2799, 2799, 2799, 2799, 2799, 2800, 2696, 2801,
1182      2801, 2801, 2801, 2802, 2696, 2696, 2803, 2803, 2803, 2803,
1183      2803, 2804, 2696, 2805, 2805, 2805, 2806, 2696, 2807, 2807,
1184      2807, 2807, 2808, 2696, 2809, 2809, 2809, 2809, 2809, 2810,
1185      2696, 2696, 2811, 2811, 2812, 2696, 2813, 2813, 2814, 2696,
1186      2815, 2815, 2815, 2816, 2817, 2696, 2817, 2696, 2696, 2696,
1187      2818, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2819, 2820,
1188      2820, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1189      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1190      2696, 2696, 2696, 2696, 2696, 2696, 2821, 2822, 2822, 2823,
1191
1192      2696, 2696, 2823, 2696, 2824, 2824, 2696, 2825, 2696, 2696,
1193      2825, 2825, 2825, 2825, 2825, 2825, 2826, 2826, 2696, 2827,
1194      2827, 2827, 2828, 2828, 2696, 2696, 2829, 2830, 2830, 2696,
1195      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2831, 2696,
1196      2696, 2831, 2832, 2832, 2696, 2696, 2833, 2834, 2834, 2696,
1197      2696, 2835, 2836, 2836, 2837, 2837, 2838, 2838, 2839, 2839,
1198      2839, 2696, 2696, 2839, 2839, 2840, 2840, 2696, 2696, 2841,
1199      2841, 2696, 2696, 2841, 2696, 2696, 2841, 2841, 2841, 2841,
1200      2841, 2841, 2841, 2841, 2842, 2842, 2843, 2843, 2843, 2696,
1201      2696, 2843, 2843, 2843, 2844, 2844, 2845, 2696, 2696, 2846,
1202
1203      2846, 2847, 2696, 2696, 2847, 2847, 2847, 2848, 2848, 2849,
1204      2849, 2849, 2850, 2850, 2696, 2851, 2851, 2851, 2851, 2852,
1205      2852, 2853, 2696, 2696, 2854, 2854, 2855, 2855, 2855, 2856,
1206      2856, 2857, 2857, 2857, 2857, 2858, 2858, 2696, 2859, 2860,
1207      2860, 2696, 2696, 2861, 2861, 2696, 2696, 2862, 2863, 2863,
1208      2864, 2696, 2696, 2864, 2696, 2696, 2865, 2696, 2696, 2696,
1209      2696, 2696, 2696, 2866, 2696, 2867, 2696, 2867, 2696, 2696,
1210      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1211      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1212      2696, 2696, 2696, 2696, 2868, 2696, 2869, 2696, 2869, 2870,
1213
1214      2696, 2696, 2696, 2870, 2696, 2696, 2871, 2696, 2871, 2872,
1215      2696, 2696, 2696, 2696, 2696, 2872, 2696, 2696, 2872, 2872,
1216      2872, 2696, 2873, 2696, 2873, 2696, 2874, 2874, 2874, 2696,
1217      2875, 2696, 2875, 2696, 2696, 2696, 2876, 2696, 2877, 2696,
1218      2877, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2878,
1219      2696, 2696, 2696, 2878, 2696, 2879, 2696, 2879, 2696, 2696,
1220      2696, 2880, 2696, 2881, 2696, 2881, 2696, 2696, 2696, 2882,
1221      2696, 2883, 2696, 2883, 2884, 2884, 2696, 2885, 2696, 2885,
1222      2886, 2886, 2886, 2696, 2696, 2696, 2886, 2886, 2696, 2887,
1223      2696, 2887, 2696, 2696, 2888, 2888, 2888, 2888, 2696, 2696,
1224
1225      2696, 2888, 2696, 2696, 2696, 2696, 2696, 2888, 2888, 2888,
1226      2888, 2888, 2888, 2888, 2696, 2889, 2696, 2889, 2890, 2890,
1227      2890, 2890, 2696, 2696, 2696, 2696, 2696, 2890, 2890, 2696,
1228      2891, 2696, 2891, 2892, 2696, 2696, 2696, 2696, 2893, 2696,
1229      2893, 2894, 2696, 2696, 2696, 2894, 2894, 2894, 2696, 2895,
1230      2696, 2895, 2696, 2696, 2696, 2696, 2896, 2696, 2897, 2696,
1231      2897, 2696, 2696, 2696, 2898, 2898, 2696, 2696, 2898, 2696,
1232      2899, 2696, 2899, 2900, 2696, 2696, 2696, 2696, 2901, 2696,
1233      2901, 2696, 2696, 2902, 2902, 2696, 2696, 2696, 2903, 2696,
1234      2903, 2904, 2904, 2904, 2904, 2696, 2905, 2696, 2905, 2696,
1235
1236      2906, 2696, 2907, 2696, 2907, 2696, 2696, 2696, 2696, 2908,
1237      2696, 2908, 2696, 2696, 2696, 2909, 2696, 2910, 2696, 2910,
1238      2911, 2912, 2696, 2696, 2696, 2696, 2696, 2913, 2914, 2696,
1239      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1240      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1241      2696, 2696, 2696, 2696, 2696, 2696, 2915, 2696, 2696, 2916,
1242      2696, 2917, 2918, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1243      2696, 2918, 2696, 2696, 2918, 2919, 2696, 2920, 2696, 2696,
1244      2920, 2921, 2922, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1245      2696, 2696, 2696, 2923, 2923, 2924, 2925, 2926, 2696, 2696,
1246
1247      2927, 2696, 2696, 2928, 2929, 2930, 2930, 2696, 2696, 2930,
1248      2930, 2931, 2696, 2696, 2932, 2932, 2932, 2932, 2696, 2696,
1249      2696, 2696, 2696, 2932, 2932, 2932, 2932, 2932, 2932, 2932,
1250      2933, 2934, 2934, 2934, 2934, 2696, 2696, 2696, 2934, 2934,
1251      2935, 2936, 2937, 2938, 2938, 2938, 2938, 2939, 2696, 2696,
1252      2696, 2696, 2696, 2696, 2940, 2941, 2696, 2696, 2696, 2696,
1253      2942, 2942, 2696, 2696, 2696, 2942, 2943, 2944, 2945, 2696,
1254      2696, 2696, 2946, 2946, 2696, 2696, 2696, 2947, 2948, 2696,
1255      2696, 2948, 2948, 2949, 2696, 2950, 2951, 2952, 2953, 2954,
1256      2955, 2956, 2956, 2696, 2956, 2696, 2696, 2696, 2957, 2958,
1257
1258      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1259      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1260      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2959,
1261      2696, 2696, 2696, 2960, 2696, 2961, 2962, 2696, 2696, 2696,
1262      2962, 2696, 2696, 2696, 2962, 2963, 2696, 2964, 2696, 2696,
1263      2696, 2696, 2696, 2965, 2966, 2696, 2696, 2696, 2696, 2696,
1264      2696, 2696, 2696, 2967, 2696, 2696, 2968, 2969, 2970, 2696,
1265      2696, 2696, 2971, 2696, 2696, 2696, 2972, 2973, 2974, 2974,
1266      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2974, 2975, 2696,
1267      2696, 2976, 2696, 2696, 2976, 2976, 2696, 2696, 2696, 2696,
1268
1269      2696, 2976, 2976, 2976, 2976, 2976, 2976, 2977, 2978, 2696,
1270      2696, 2978, 2978, 2696, 2696, 2978, 2979, 2980, 2981, 2982,
1271      2982, 2982, 2696, 2696, 2982, 2983, 2984, 2985, 2696, 2986,
1272      2986, 2986, 2987, 2988, 2989, 2990, 2990, 2991, 2992, 2696,
1273      2696, 2696, 2992, 2992, 2993, 2696, 2696, 2696, 2994, 2995,
1274      2696, 2696, 2996, 2997, 2998, 2998, 2696, 2696, 2999, 3000,
1275      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1276      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1277      2696, 2696, 2696, 2696, 3001, 3002, 2696, 3003, 3004, 3004,
1278      3004, 3005, 3006, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1279
1280      2696, 2696, 2696, 2696, 3007, 3008, 2696, 2696, 2696, 2696,
1281      2696, 3009, 2696, 2696, 2696, 3010, 3011, 3012, 3013, 3014,
1282      3015, 3016, 3016, 2696, 2696, 2696, 2696, 2696, 2696, 3016,
1283      2696, 2696, 2696, 2696, 3017, 2696, 2696, 2696, 2696, 2696,
1284      3017, 2696, 2696, 2696, 2696, 2696, 3017, 3017, 3017, 3017,
1285      2696, 2696, 3018, 3019, 2696, 2696, 2696, 2696, 2696, 3019,
1286      2696, 2696, 2696, 3019, 2696, 2696, 3020, 3021, 3022, 3022,
1287      3022, 2696, 2696, 2696, 3022, 2696, 2696, 3023, 3024, 2696,
1288      2696, 2696, 2696, 2696, 3025, 3026, 3027, 3028, 2696, 2696,
1289      2696, 2696, 3029, 3030, 3030, 3030, 3031, 2696, 2696, 2696,
1290
1291      2696, 3032, 3033, 2696, 2696, 2696, 2696, 2696, 3034, 3035,
1292      3035, 2696, 2696, 2696, 3036, 2696, 2696, 2696, 2696, 2696,
1293      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1294      2696, 2696, 2696, 2696, 2696, 3037, 3038, 2696, 2696, 2696,
1295      3039, 2696, 2696, 3039, 3040, 2696, 2696, 2696, 2696, 2696,
1296      2696, 2696, 2696, 2696, 2696, 2696, 2696, 3041, 2696, 2696,
1297      2696, 2696, 2696, 2696, 2696, 2696, 3042, 2696, 2696, 3043,
1298      2696, 2696, 2696, 2696, 3044, 3045, 3045, 2696, 2696, 3045,
1299      2696, 3046, 2696, 2696, 2696, 3046, 2696, 2696, 2696, 2696,
1300      2696, 3046, 3046, 3046, 2696, 2696, 2696, 3047, 3048, 2696,
1301
1302      2696, 2696, 3048, 3048, 3049, 3050, 3051, 2696, 2696, 3051,
1303      3051, 2696, 2696, 3051, 3052, 2696, 2696, 2696, 2696, 2696,
1304      2696, 2696, 2696, 2696, 3053, 3054, 3055, 3056, 2696, 2696,
1305      2696, 2696, 2696, 2696, 3057, 3058, 3058, 3058, 3059, 2696,
1306      3060, 3061, 3062, 3063, 3063, 2696, 2696, 2696, 2696, 3064,
1307      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1308      2696, 2696, 2696, 2696, 2696, 2696, 3065, 3066, 2696, 3067,
1309      2696, 2696, 2696, 3067, 2696, 2696, 2696, 2696, 2696, 2696,
1310      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3041,
1311      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1312
1313      3042, 2696, 2696, 2696, 3043, 2696, 2696, 2696, 3044, 3045,
1314      3045, 2696, 2696, 2696, 2696, 3045, 2696, 3046, 3046, 2696,
1315      2696, 2696, 3046, 3046, 3046, 3047, 3048, 3048, 3048, 3049,
1316      2696, 2696, 3051, 2696, 2696, 2696, 3051, 3051, 2696, 2696,
1317      2696, 2696, 3051, 3052, 2696, 3053, 3054, 3055, 3056, 3057,
1318      2696, 2696, 3058, 3058, 3059, 2696, 3060, 2696, 2696, 3062,
1319      3063, 3063, 2696, 3064, 2696, 2696, 2696, 2696, 2696, 2696,
1320      2696, 2696, 2696, 2696, 3066, 2696, 2696, 3067, 2696, 2696,
1321      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3041, 2696,
1322      2696, 3042, 2696, 2696, 3044, 3045, 3045, 2696, 2696, 2696,
1323
1324      2696, 3045, 2696, 3046, 3046, 2696, 2696, 3046, 3046, 2696,
1325      2696, 3048, 3048, 3048, 3049, 2696, 2696, 3051, 3051, 3051,
1326      2696, 2696, 2696, 2696, 3051, 3052, 2696, 3053, 2696, 2696,
1327      2696, 2696, 3056, 3057, 2696, 2696, 2696, 2696, 2696, 3058,
1328      2696, 2696, 2696, 3060, 3062, 3063, 3063, 2696, 2696, 2696,
1329      2696, 2696, 2696, 3066, 2696, 2696, 2696, 3067, 2696, 2696,
1330      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3041, 2696,
1331      2696, 3042, 2696, 2696, 3045, 3045, 2696, 2696, 2696, 2696,
1332      3046, 3046, 2696, 2696, 2696, 3046, 2696, 2696, 3048, 3048,
1333      2696, 2696, 3049, 2696, 2696, 2696, 3051, 3051, 3051, 2696,
1334
1335      2696, 2696, 2696, 3052, 3053, 2696, 2696, 2696, 2696, 2696,
1336      3057, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3062, 3063,
1337      3063, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1338      2696, 2696, 2696, 3067, 2696, 2696, 2696, 2696, 2696, 2696,
1339      2696, 2696, 2696, 2696, 3041, 2696, 2696, 3042, 3045, 2696,
1340      2696, 2696, 2696, 2696, 3046, 3046, 3046, 2696, 2696, 2696,
1341      3048, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3051, 3051,
1342      3051, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1343      2696, 2696, 2696, 2696, 3057, 2696, 2696, 2696, 3062, 3063,
1344      3063, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1345
1346      2696, 2696, 2696, 2696, 2696, 2696, 3067, 2696, 2696, 2696,
1347      2696, 2696, 2696, 2696, 2696, 3041, 2696, 2696, 3042, 2696,
1348      2696, 3045, 2696, 2696, 2696, 3046, 3046, 3046, 3048, 2696,
1349      2696, 2696, 2696, 2696, 2696, 3051, 2696, 2696, 3051, 2696,
1350      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1351      2696, 3057, 3062, 3063, 3063, 3063, 2696, 2696, 2696, 2696,
1352      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1353      2696, 2696, 2696, 2696, 2696, 2696, 2696, 3041, 2696, 3042,
1354      2696, 2696, 2696, 3045, 3046, 3046, 3046, 3048, 3051, 2696,
1355      2696, 2696, 3051, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1356
1357      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3062,
1358      3063, 3063, 3063, 3068, 3069, 2696, 2696, 2696, 2696, 2696,
1359      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1360      2696, 2696, 2696, 2696, 3041, 2696, 2696, 3045, 3046, 3046,
1361      2696, 2696, 3048, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1362      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3062,
1363      3063, 3070, 3071, 3068, 3069, 2696, 2696, 2696, 2696, 2696,
1364      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1365      2696, 3045, 3046, 3046, 2696, 2696, 2696, 3048, 2696, 2696,
1366      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1367
1368      2696, 2696, 2696, 2696, 2696, 2696, 3062, 3070, 3063, 3072,
1369      3071, 3073, 3063, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1370      2696, 3045, 3046, 3046, 2696, 2696, 2696, 2696, 3048, 2696,
1371      2696, 2696, 2696, 2696, 2696, 2696, 2696, 3062, 3072, 2696,
1372      3073, 3063, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1373      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1374      2696, 2696, 2696, 2696, 2696, 2696, 3062, 2696, 2696, 2696,
1375      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1376      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1377      2696, 2696, 2696, 2696, 2696, 2696, 3062, 2696, 2696, 2696,
1378
1379      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1380      2696, 2696, 2696, 2696, 2696, 2696, 3062, 2696, 2696, 2696,
1381      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1382      2696, 2696, 2696, 2696, 2696, 3062, 2696, 2696, 2696, 2696,
1383      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1384      2696, 2696, 3062, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1385      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 3062,
1386      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1387      2696, 2696, 3062, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1388      2696, 3062, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1389
1390      3062, 3062, 2696, 2696, 2696, 2696, 2696, 2696, 3062, 3062,
1391      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1392      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1393      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1394      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1395      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1396      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1397      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1398      3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062,
1399      3062, 3062, 3062, 3062, 2696,    0, 2696, 2696, 2696, 2696,
1400
1401      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1402      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1403      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1404      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1405      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1406      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1407      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1408      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1409      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1410      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1411
1412      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1413      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1414      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1415      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1416      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1417      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1418      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1419      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1420      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1421      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1422
1423      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1424      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1425      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1426      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1427      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1428      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1429      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1430      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1431      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1432      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1433
1434      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1435      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1436      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1437      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1438      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1439      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1440      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
1441      2696, 2696, 2696
1442     } ;
1443
1444 static yyconst flex_int16_t yy_nxt[9683] =
1445     {   0,
1446      2696,  224,  225,  224,  224,  225,  224,  224,  225,  224,
1447       224,  225,  224,  229,  225,  229,  235,  226,  232,  235,
1448       226,  232, 2696,  227, 2696,  233,  227, 2696,  233,  230,
1449       229,  225,  229,  555,  236,  238,  239,  236,  238,  239,
1450       240,  241,  618,  240,  241,  555,  230,  245,  246,  556,
1451       242,  238,  239,  242,  243,  558,  240,  238,  239,  590,
1452       243,  557,  240,  245,  246,  591,  242,  225,  225,  225,
1453       630,  557,  242,  225,  225,  225,  257,  225,  257,  257,
1454       225,  257,  782,  248,  257,  225,  257,  590,  783,  248,
1455       578,  247,  258,  619,  784,  258,  554,  554,  554,  587,
1456
1457       259,  554,  554,  554,  554,  554,  554,  247,  249,  250,
1458       225,  250,  249,  249,  249,  249,  249,  249,  249,  251,
1459       249,  249,  249,  635,  249,  253,  249,  254,  249,  257,
1460       225,  257,  225,  225,  225,  225,  225,  225,  586,  257,
1461       225,  257,  257,  225,  257,  259, 2696, 1591,  260,  558,
1462       558,  260,  587,  249,  249,  258,  588,  558,  258,  257,
1463       225,  257,  554,  554,  554,  557,  557,  554,  554,  554,
1464       554,  554,  554,  557, 1593,  261,  255,  249,  250,  225,
1465       250,  249,  249,  249,  249,  249,  249,  249,  251,  249,
1466       249,  249,  645,  249,  253,  249,  254,  249,  257,  225,
1467
1468       257,  225,  225,  225,  225,  225,  225,  569,  257,  225,
1469       257,  257,  225,  257,  261, 2696,  587,  262,  592, 1606,
1470       262,  650,  249,  249,  259,  588,  588,  259,  225,  225,
1471       225,  225,  225,  225,  257,  225,  257,  257,  225,  257,
1472       257,  225,  257,  591,  263,  255,  678,  263,  558,  679,
1473       261, 2696,  558,  261,  589,  593,  264,  257,  225,  257,
1474       590,  554,  554,  554,  557, 2696,  591,  594,  557,  587,
1475       592,  592,  591,  264,  265,  266,  225,  266,  265,  265,
1476       265,  265,  265,  265,  265,  267,  265,  265,  265,  576,
1477       265,  269,  265,  270,  265,  273,  225,  273,  273,  225,
1478
1479       273,  298,  225,  298,  586,  612, 1607,  238,  239,  613,
1480       558,  274,  240,  614,  274, 1608,  595,  299,  587,  265,
1481       265,  668,  284,  554,  554,  554,  557,  271,  265,  266,
1482       225,  266,  265,  265,  265,  265,  265,  265,  265,  267,
1483       265,  265,  265,  634,  265,  269,  265,  270,  265, 1611,
1484       636,  285,  673,  238,  239,  298,  225,  298,  240,  225,
1485       225,  225,  225,  225,  225,  554,  554,  554,  284,  669,
1486       712,  299,  674,  265,  265,  300,  762,  713,  300,  763,
1487      1612,  271,  275,  276,  225,  276,  275,  275,  275,  275,
1488       275,  275,  275,  277,  275,  275,  275,  285,  275,  279,
1489
1490       275,  280,  275,  298,  225,  298,  298,  225,  298,  298,
1491       225,  298,  616,  298,  225,  298,  312,  225,  312,  299,
1492       558,  558,  299,  558,  605,  301,  617,  275,  275,  301,
1493       599,  606,  313, 1617, 1620,  281,  557,  557,  282,  557,
1494       557,  554,  554,  554,  283,  275,  276,  225,  276,  275,
1495       275,  275,  275,  275,  275,  275,  277,  275,  275,  275,
1496       740,  275,  279,  275,  280,  275,  312,  225,  312,  323,
1497       225,  323,  323,  225,  323, 2696,  323,  225,  323,  323,
1498       225,  323,  313,  558,  558,  324,  558,  558,  324,  558,
1499       275,  275,  325,  625,  655,  325, 1622,  741,  281,  557,
1500
1501       557,  282,  557,  557,  563,  557, 1623,  283,  286,  287,
1502       225,  287,  286,  286,  286,  286,  286,  286,  286,  288,
1503       286,  286,  286,  669,  286,  290,  286,  291,  286,  225,
1504       225,  225,  225,  225,  225,  323,  225,  323,  668,  323,
1505       225,  323,  323,  225,  323,  326,  564,  558,  326,  558,
1506       558,  327,  565,  286,  286,  327,  566,  660,  328, 1630,
1507       706,  567,  292,  557,  293,  557,  557,  294,  554,  554,
1508       554,  707,  295,  296,  286,  287,  225,  287,  286,  286,
1509       286,  286,  286,  286,  286,  288,  286,  286,  286,  591,
1510       286,  290,  286,  291,  286,  323,  225,  323,  225,  225,
1511
1512       225,  225,  225,  225,  708,  323,  225,  323,  323,  225,
1513       323,  328,  952, 1120,  329,  558,  680,  329, 1121,  286,
1514       286,  325,  685, 1634,  325,  554,  554,  554,  292,  681,
1515       293,  557,  722,  294,  554,  554,  554, 1554,  295,  296,
1516       302,  303,  225,  303,  302,  302,  302,  302,  302,  302,
1517       302,  304,  302,  302,  302,  591,  302,  306,  302,  307,
1518       302,  225,  225,  225,  225,  225,  225,  323,  225,  323,
1519       682,  323,  225,  323,  323,  225,  323,  330, 1635,  580,
1520       330,  683,  684,  328,  720,  302,  302,  328,  558,  558,
1521       331,  721,  308,  554,  554,  554,  695,  309,  554,  554,
1522
1523       554,  554,  554,  554,  557,  557,  310,  302,  303,  225,
1524       303,  302,  302,  302,  302,  302,  302,  302,  304,  302,
1525       302,  302,  756,  302,  306,  302,  307,  302,  323,  225,
1526       323,  225,  225,  225,  225,  225,  225,  757,  323,  225,
1527       323,  323,  225,  323,  331,  775,  558,  332,  776, 1641,
1528       332, 1647,  302,  302,  333,  558,  558,  333, 1648,  308,
1529      1649,  588,  557,  700,  309,  554,  554,  554,  554,  554,
1530       554,  557,  557,  310,  314,  315,  225,  315,  314,  314,
1531       314,  314,  314,  314,  314,  316,  314,  314,  314,  576,
1532       314,  318,  314,  319,  314,  225,  225,  225,  225,  225,
1533
1534       225,  323,  225,  323,  638,  323,  225,  323,  323,  225,
1535       323,  334,  558,  558,  334,  775, 1650,  331,  789,  314,
1536       314,  331,  733, 1654,  335,  554,  554,  554,  557,  557,
1537       320,  554,  554,  554,  554,  554,  554,  740,  321,  314,
1538       315,  225,  315,  314,  314,  314,  314,  314,  314,  314,
1539       316,  314,  314,  314, 1660,  314,  318,  314,  319,  314,
1540       323,  225,  323,  346,  225,  346,  346,  225,  346,  580,
1541       225,  225,  225,  225,  225,  225,  335,  558,  558,  347,
1542      1664, 1667,  347,  749,  314,  314,  300, 1669,  591,  300,
1543       554,  554,  554,  557,  557,  320,  554,  554,  554,  554,
1544
1545       554,  554, 1670,  321,  336,  337,  225,  337,  336,  336,
1546       336,  336,  336,  336,  336,  338,  336,  336,  336, 1671,
1547       336,  340,  336,  341,  336,  346,  225,  346,  346,  225,
1548       346,  346,  225,  346,  591,  346,  225,  346,  554,  554,
1549       554,  347,  558,  558,  347, 1675,  558,  348,  780,  336,
1550       336,  348,  781,  727,  342,  554,  554,  554,  557,  557,
1551       343,  714,  557,  344,  336,  337,  225,  337,  336,  336,
1552       336,  336,  336,  336,  336,  338,  336,  336,  336, 1678,
1553       336,  340,  336,  341,  336,  358,  225,  358,  358,  225,
1554       358,  225,  225,  225, 1680,  225,  225,  225,  554,  554,
1555
1556       554,  359, 2696,  558,  359,  558,  558,  300,  715,  336,
1557       336,  300,  591,  745,  342,  554,  554,  554,  756,  557,
1558       343,  557,  557,  344,  349,  350,  225,  350,  349,  349,
1559       349,  349,  349,  349,  349,  351,  349,  349,  349,  741,
1560       349,  353,  349,  354,  349,  358,  225,  358,  358,  225,
1561       358,  358,  225,  358,  804,  358,  225,  358,  370,  225,
1562       370,  359, 1687, 1694,  359,  785,  790,  360,  868,  349,
1563       349,  360,  869, 1695,  371,  554,  554,  554,  786,  786,
1564       355,  554,  554,  554,  554,  554,  554,  554,  554,  554,
1565       356,  349,  350,  225,  350,  349,  349,  349,  349,  349,
1566
1567       349,  349,  351,  349,  349,  349, 1696,  349,  353,  349,
1568       354,  349,  370,  225,  370,  381,  225,  381,  381,  225,
1569       381, 1698,  395,  225,  395,  395,  225,  395,  371,  792,
1570       952,  382,  776,  794,  382, 1712,  349,  349,  396,  783,
1571      1394,  396,  554,  554,  554,  795,  954,  355,  554,  554,
1572       554,  554,  554,  554,  554,  554,  554,  356,  361,  362,
1573       225,  362,  361,  361,  361,  361,  361,  361,  361,  363,
1574       361,  361,  361, 1711,  361,  365,  361,  366,  361,  225,
1575       225,  225,  225,  225,  225,  395,  225,  395, 1716,  395,
1576       225,  395,  395,  225,  395,  397,  792, 1717,  397,  789,
1577
1578       794,  396, 1718,  361,  361,  396,  783, 1719,  398,  554,
1579       554,  554,  784, 1721,  367,  554,  554,  554,  368,  361,
1580       362,  225,  362,  361,  361,  361,  361,  361,  361,  361,
1581       363,  361,  361,  361, 1722,  361,  365,  361,  366,  361,
1582       395,  225,  395,  414,  225,  414,  414,  225,  414, 1723,
1583       430,  225,  430,  430,  225,  430,  398,  860, 1724,  415,
1584       861,  782,  415, 1725,  361,  361,  431,  783, 1728,  431,
1585       554,  554,  554,  795, 1729,  367,  554,  554,  554,  368,
1586       372,  373,  225,  373,  372,  372,  372,  372,  372,  372,
1587       372,  374,  372,  372,  372, 1732,  372,  376,  372,  377,
1588
1589       372,  441,  225,  441,  441,  225,  441,  454,  225,  454,
1590      1733,  454,  225,  454,  225,  225,  225,  442,  952, 1734,
1591       442, 1394, 1221,  455,  952,  372,  372,  455,  952, 1735,
1592       300,  554,  554,  554,  554,  554,  554,  554,  554,  554,
1593       378,  554,  554,  554, 1391, 1709,  379,  372,  373,  225,
1594       373,  372,  372,  372,  372,  372,  372,  372,  374,  372,
1595       372,  372, 1710,  372,  376,  372,  377,  372,  225,  225,
1596       225,  454,  225,  454,  454,  225,  454, 1242,  454,  225,
1597       454,  454,  225,  454,  300, 1737, 1738,  455, 1741, 1243,
1598       455, 1744,  372,  372,  456, 1748, 1749,  456,  554,  554,
1599
1600       554,  554,  554,  554,  554,  554,  554,  378,  554,  554,
1601       554, 1752, 1753,  379,  383,  384,  225,  384,  383,  383,
1602       383,  383,  383,  383,  383,  385,  383,  383,  383, 1754,
1603       383,  387,  383,  388,  383,  466,  225,  466,  466,  225,
1604       466,  225,  225,  225, 1750,  225,  225,  225, 1757,  558,
1605      1755,  467, 1751, 1761,  467, 1762,  754,  468, 1756,  383,
1606       383,  468,  389,  794,  390,  557,  554,  554,  554,  783,
1607       391,  760,  760,  760, 1764,  819,  392, 1776, 1777,  393,
1608       383,  384,  225,  384,  383,  383,  383,  383,  383,  383,
1609       383,  385,  383,  383,  383, 1778,  383,  387,  383,  388,
1610
1611       383,  466,  225,  466,  466,  225,  466,  466,  225,  466,
1612      1779,  466,  225,  466,  801,  801,  801,  467, 1780,  790,
1613       467,  790,  790,  469, 1096,  383,  383,  469,  389,  761,
1614       390,  802,  834, 1097,  837,  838,  391,  760,  760,  760,
1615      1098,  956,  392, 1781, 1782,  393,  399,  400,  225,  400,
1616       399,  399,  399,  399,  399,  399,  399,  401,  399,  399,
1617       399,  402,  399,  403,  399,  404,  399,  402,  402,  402,
1618       402,  402,  402,  402,  402,  402,  402,  402,  402,  402,
1619       402,  402,  402,  402,  402,  402,  402,  402,  402,  402,
1620       402,  399,  399,  402,  405,  406,  407,  402,  402,  402,
1621
1622       402,  402,  408,  402,  409,  402,  402,  402,  410,  402,
1623       411,  412,  402,  402,  402,  402,  402,  402,  416,  417,
1624       225,  417,  416,  416,  416,  416,  416,  416,  416,  418,
1625       416,  416,  416,  419,  416,  420,  416,  421,  416,  419,
1626       419,  419,  419,  419,  419,  419,  419,  419,  419,  419,
1627       419,  419,  419,  419,  419,  419,  419,  419,  419,  419,
1628       419,  419,  419,  416,  416,  419,  422,  423,  424,  419,
1629       419,  419,  419,  419,  425,  419,  426,  419,  419,  419,
1630       427,  419,  419,  428,  419,  419,  419,  419,  419,  419,
1631       432,  433,  225,  433,  432,  432,  432,  432,  432,  432,
1632
1633       432,  434,  432,  432,  432, 1786,  432,  436,  432,  437,
1634       432,  480,  225,  480,  480,  225,  480,  225,  225,  225,
1635      1253,  225,  225,  225,  809,  809,  809,  481, 1792, 1793,
1636       481, 1794, 1243,  468, 1799,  432,  432,  468, 1803, 1804,
1637       438,  810,  969,  969,  969, 1805,  439,  432,  433,  225,
1638       433,  432,  432,  432,  432,  432,  432,  432,  434,  432,
1639       432,  432, 1807,  432,  436,  432,  437,  432,  480,  225,
1640       480,  480,  225,  480,  480,  225,  480, 1253,  480,  225,
1641       480,  825,  825,  825,  481, 1594, 1811,  481, 1812, 1277,
1642       482, 1595,  432,  432,  482, 1596, 1813,  438,  826, 1597,
1643
1644       969,  969,  969,  439,  443,  444,  225,  444,  443,  443,
1645       443,  443,  443,  443,  443,  445,  443,  443,  443, 1814,
1646       443,  447,  443,  448,  443,  492,  225,  492,  492,  225,
1647       492,  504,  225,  504, 1815,  504,  225,  504,  225,  225,
1648       225,  493, 1818, 1825,  493, 1827, 1836,  505, 1837,  443,
1649       443,  505, 1838,  449,  468,  989,  989,  989, 1840,  952,
1650       450, 1846,  451,  970, 1394, 1843,  969,  969,  969,  452,
1651       443,  444,  225,  444,  443,  443,  443,  443,  443,  443,
1652       443,  445,  443,  443,  443, 1852,  443,  447,  443,  448,
1653       443,  225,  225,  225,  504,  225,  504,  504,  225,  504,
1654
1655      1853,  504,  225,  504,  504,  225,  504,  468, 1856, 1845,
1656       505, 1857, 1858,  505, 1862,  443,  443,  506,  970,  449,
1657       506, 1866, 1868, 1001, 1001, 1001,  450, 1002,  451, 1042,
1658      1003,  989,  989,  989, 1869,  452,  457,  458,  225,  458,
1659       457,  457,  457,  457,  457,  457,  457,  459,  457,  457,
1660       457, 1870,  457,  461,  457,  462,  457,  518,  225,  518,
1661       518,  225,  518,  225,  225,  225, 1874,  225,  225,  225,
1662       518,  225,  518,  519, 1880, 1881,  519, 1882, 1883,  520,
1663      1884,  457,  457,  520, 1885, 1886,  519,  463, 1011, 1011,
1664      1011, 1887, 1012, 1888, 1042, 1013,  989,  989,  989, 1889,
1665
1666      1895,  464,  457,  458,  225,  458,  457,  457,  457,  457,
1667       457,  457,  457,  459,  457,  457,  457, 1910,  457,  461,
1668       457,  462,  457,  518,  225,  518,  518,  225,  518,  518,
1669       225,  518, 1911,  530,  225,  530,  530,  225,  530,  519,
1670      1916, 1917,  521, 1912, 1918,  521, 1919,  457,  457,  531,
1671      1923, 1913,  531,  463, 1034, 1034, 1034, 1914, 1035, 1924,
1672      1925, 1036, 1406, 1406, 1406, 1915, 1927,  464,  470,  471,
1673       225,  471,  470,  470,  470,  470,  470,  470,  470,  472,
1674       470,  470,  470, 1928,  470,  474,  470,  475,  470,  540,
1675       225,  540,  540,  225,  540,  225,  225,  225, 1394,  225,
1676
1677       225,  225,  540,  225,  540,  541, 1598, 1929,  541, 1930,
1678      1933,  300, 1599,  470,  470,  300, 1600, 1937,  541,  476,
1679      1601, 1938,  477, 1051, 1051, 1051, 1943, 1052, 1944, 1844,
1680      1053, 1945, 1946,  478,  470,  471,  225,  471,  470,  470,
1681       470,  470,  470,  470,  470,  472,  470,  470,  470, 1948,
1682       470,  474,  470,  475,  470,  540,  225,  540,  540,  225,
1683       540,  540,  225,  540, 1939,  552,  225,  552,  552,  225,
1684       552,  541, 1940, 1956,  542, 1966, 1970,  542, 1941,  470,
1685       470,  553, 1394,  630,  553,  476, 1942,  630,  477, 1408,
1686      1408, 1408, 1394,  631, 1971, 1972, 2696,  637, 1975,  478,
1687
1688       483,  484,  225,  484,  483,  483,  483,  483,  483,  483,
1689       483,  485,  483,  483,  483, 1979,  483,  487,  483,  488,
1690       483,  632,  840,  840,  840,  632, 1980,  633, 1962, 1981,
1691       634,  845,  845,  845, 1961, 1409,  635,  636,  591,  841,
1692       633,  579,  585,  634, 1982,  483,  483, 1983,  846,  639,
1693       636,  489, 1412, 1412, 1412, 1984,  490,  483,  484,  225,
1694       484,  483,  483,  483,  483,  483,  483,  483,  485,  483,
1695       483,  483, 1985,  483,  487,  483,  488,  483,  850,  850,
1696       850,  862,  862,  862,  872,  872,  872,  875,  875,  875,
1697       890,  890,  890, 1986, 1987,  851, 1988, 1990,  863, 1991,
1698
1699      1996,  873,  483,  483,  876, 1997, 1998,  891,  489, 1415,
1700      1415, 1415, 1999,  490,  494,  495,  225,  495,  494,  494,
1701       494,  494,  494,  494,  494,  496,  494,  494,  494, 2000,
1702       494,  498,  494,  499,  494,  898,  898,  898,  903,  903,
1703       903,  923,  923,  923,  942,  942,  942,  946,  946,  946,
1704      2001, 2002,  899, 2004, 2005,  904, 2008, 2009,  924,  494,
1705       494,  943, 2012, 2013,  947,  500, 2014, 2015,  501, 1059,
1706      1059, 1059, 2019, 1060, 2020, 2021, 1061, 2022, 2023,  502,
1707       494,  495,  225,  495,  494,  494,  494,  494,  494,  494,
1708       494,  496,  494,  494,  494, 2024,  494,  498,  494,  499,
1709
1710       494,  965,  965,  965,  965,  965,  965, 2025, 2026,  996,
1711       996,  996,  996,  996,  996,  801,  801,  801, 2028,  967,
1712      2050, 2051,  967, 2052, 2053,  494,  494,  998, 2054, 2059,
1713       998,  500,  802, 2060,  501, 1067, 1067, 1067, 1394, 1068,
1714      2061, 2062, 1069, 2063, 2064,  502,  507,  508,  225,  508,
1715       507,  507,  507,  507,  507,  507,  507,  509,  507,  507,
1716       507,  968,  507,  511,  507,  512,  507, 1006, 1006, 1006,
1717      2046,  999, 1006, 1006, 1006, 2065,  809,  809,  809, 1014,
1718      1014, 1014, 1022, 1022, 1022, 1008, 2066, 1017, 1017, 1017,
1719      1008,  507,  507,  810, 2067, 2068, 1015, 1394, 2070,  513,
1720
1721      1024,  514, 2071,  515, 1018, 1424, 1424, 1424, 1447, 1447,
1722      1447,  516,  507,  508,  225,  508,  507,  507,  507,  507,
1723       507,  507,  507,  509,  507,  507,  507, 2075,  507,  511,
1724       507,  512,  507, 2076, 2047, 1009, 1030, 1030, 1030, 2077,
1725      2078, 1030, 1030, 1030, 2081, 2082, 1022, 1022, 1022,  825,
1726       825,  825, 2086, 2089, 1032, 2090, 2093,  507,  507, 1032,
1727      1458, 1458, 1458, 2097, 1024,  513,  826,  514, 2098,  515,
1728      1459, 1459, 1459, 1406, 1406, 1406, 2099,  516,  522,  523,
1729       225,  523,  522,  522,  522,  522,  522,  522,  522,  524,
1730       522,  522,  522, 1025,  522,  526,  522,  527,  522, 1038,
1731
1732      1038, 1038, 2100, 2101, 1033, 2104, 2105, 1038, 1038, 1038,
1733       840,  840,  840, 1055, 1055, 1055, 1409, 1040, 1055, 1055,
1734      1055, 2122, 2123,  522,  522, 1040, 2124,  841,  845,  845,
1735       845, 1057,  952, 1084, 1084, 1084, 1057, 1085, 1394, 2125,
1736      1086, 1408, 1408, 1408, 1041,  846,  528,  522,  523,  225,
1737       523,  522,  522,  522,  522,  522,  522,  522,  524,  522,
1738       522,  522, 1394,  522,  526,  522,  527,  522, 1063, 1063,
1739      1063, 2119, 1063, 1063, 1063, 2120, 2135,  850,  850,  850,
1740      1071, 1071, 1071, 1058, 2136, 2137, 1065, 1071, 1071, 1071,
1741      1065, 2138,  522,  522,  851, 1077, 1077, 1077, 1073, 1099,
1742
1743      1099, 1099, 2139, 1100, 2121, 1073, 1101, 1103, 1103, 1103,
1744      2140, 1104, 2141, 1079, 1105,  528,  532,  533,  225,  533,
1745       532,  532,  532,  532,  532,  532,  532,  534,  532,  532,
1746       532, 2142,  532,  536,  532,  537,  532, 1066, 1077, 1077,
1747      1077,  862,  862,  862, 1568, 1568, 1568, 1074, 1089, 1089,
1748      1089, 1089, 1089, 1089, 2143, 2144, 1079, 2146,  863, 2147,
1749      2149,  532,  532, 1123, 1123, 1123, 1091, 1124, 2155, 1091,
1750      1125, 2156,  538,  532,  533,  225,  533,  532,  532,  532,
1751       532,  532,  532,  532,  534,  532,  532,  532, 2157,  532,
1752       536,  532,  537,  532, 2161,  872,  872,  872,  875,  875,
1753
1754       875, 2169, 1080, 1106, 1106, 1106, 1115, 1115, 1115, 2170,
1755      2171, 1092,  873, 2193, 2194,  876,  952, 1394,  532,  532,
1756      1107, 1135, 1135, 1135, 1117, 1136, 2195, 2199, 1137,  538,
1757       543,  544,  225,  544,  543,  543,  543,  543,  543,  543,
1758       543,  545,  543,  543,  543, 2189,  543,  547,  543,  548,
1759       543,  890,  890,  890, 1126, 1126, 1126, 2128, 2190, 1130,
1760      1130, 1130, 2200, 1115, 1115, 1115, 2203, 2129,  891, 2204,
1761      2130, 1127, 1130, 1130, 1130,  543,  543, 1132,  898,  898,
1762       898, 1117, 1412, 1412, 1412, 2208,  549, 1143, 1143, 1143,
1763      1132, 1144, 2209, 2210, 1145,  899, 2211, 2212,  550,  543,
1764
1765       544,  225,  544,  543,  543,  543,  543,  543,  543,  543,
1766       545,  543,  543,  543, 2213,  543,  547,  543,  548,  543,
1767      1118, 2214, 2215, 1133, 1138, 1138, 1138, 2179, 1138, 1138,
1768      1138,  903,  903,  903, 1149, 1149, 1149, 2180, 1149, 1149,
1769      1149, 1394, 1140, 2181,  543,  543, 1140, 2218,  904, 1153,
1770      1153, 1153, 1151, 2226, 2227,  549, 1151, 1155, 1155, 1155,
1771      2696, 2696, 2696, 1158, 1158, 1158, 1154,  550,  558, 2228,
1772      2201, 1158, 1158, 1158, 1156,  573, 2229, 2696, 1163, 1163,
1773      1163, 1160, 2191, 2202,  557,  574, 2236, 2239, 1141, 1160,
1774      2696, 2696, 2696, 1152, 2246, 1164, 2247, 2248, 1167, 1167,
1775
1776      1167, 1408, 1408, 1408, 2696, 2696, 2696, 2696, 2249, 1170,
1777      1170, 1170,  575,  576,  577, 1168, 2250, 2251, 1157,  578,
1778       579, 2696,  580,  581, 2258, 2205,  582, 1172,  583,  584,
1779       585, 1161, 1170, 1170, 1170,  923,  923,  923, 2206, 1394,
1780      1165, 1175, 1175, 1175,  952, 1176, 2259, 1529, 1177, 2260,
1781      1172, 2261,  924, 2262, 1166, 1178, 1178, 1178, 1178, 1178,
1782      1178, 2263, 1169, 1182, 1182, 1182, 2696, 2696, 2696, 1173,
1783      1186, 1186, 1186, 1180, 2254, 2264, 1180, 1188, 1188, 1188,
1784      1183, 2265, 2266, 2696, 1188, 1188, 1188, 1187, 1196, 1196,
1785      1196, 2253, 1196, 1196, 1196, 1190, 1202, 1202, 1202, 1202,
1786
1787      1202, 1202, 1190,  942,  942,  942, 1198,  946,  946,  946,
1788      1198, 2267, 2270, 1181, 1204, 2271, 1184, 1204, 2272, 2273,
1789       943, 1206, 1206, 1206,  947, 1207, 2274, 2275, 1208, 2276,
1790      1185, 1209, 1209, 1209, 1209, 1209, 1209, 1213, 1213, 1213,
1791      2131, 1214, 2277, 2284, 1215, 1217, 1217, 1217, 2285, 1211,
1792      2132, 2286, 1211, 2133, 1191, 1199, 1217, 1217, 1217,  965,
1793       965,  965, 1205, 1219,  965,  965,  965,  965,  965,  965,
1794      1255, 1255, 1255, 2287, 1219, 2288, 2289,  967,  996,  996,
1795       996, 2293,  967, 2302, 2303,  967, 2304, 1256,  996,  996,
1796       996,  996,  996,  996, 1212, 2305,  998, 2182, 1258, 1258,
1797
1798      1258, 1001, 1001, 1001, 2306, 1002,  998, 2183, 1003,  998,
1799      2696, 2696, 2696, 2184, 1229, 1259, 1006, 1006, 1006, 1220,
1800      1006, 1006, 1006, 2294, 1006, 1006, 1006, 2696, 1011, 1011,
1801      1011, 2296, 1012, 2295, 1008, 1013, 2307, 2318, 1008, 2298,
1802      1257, 2297, 1008, 1014, 1014, 1014, 1264, 1264, 1264, 2299,
1803      1265, 2319, 2320, 1266, 2321, 1267, 1267, 1267, 2322, 2323,
1804      1015, 1017, 1017, 1017, 1273, 1273, 1273, 1022, 1022, 1022,
1805      1260, 1262, 1268, 1269, 1269, 1269, 2324, 1270, 1018, 2325,
1806      1271, 1274, 1022, 1022, 1022, 1024, 1022, 1022, 1022, 1279,
1807      1279, 1279, 1030, 1030, 1030, 1030, 1030, 1030,  952, 2329,
1808
1809      1024, 1030, 1030, 1030, 1024, 2330, 1280, 1034, 1034, 1034,
1810      1032, 1035, 2331, 1032, 1036, 1038, 1038, 1038, 2332, 1032,
1811      1038, 1038, 1038, 1284, 1284, 1284, 2333, 1051, 1051, 1051,
1812      2300, 1052, 2310, 1040, 1053, 1055, 1055, 1055, 1040, 2334,
1813      2301, 1285, 1055, 1055, 1055, 1276, 2338, 2339, 1282, 1055,
1814      1055, 1055, 2340, 1057, 1059, 1059, 1059, 2343, 1060, 2348,
1815      1057, 1061, 1063, 1063, 1063, 2349, 2350, 1057, 1063, 1063,
1816      1063, 1063, 1063, 1063, 1067, 1067, 1067, 2351, 1068, 2352,
1817      1065, 1069, 1299, 1299, 1299, 2353, 1065, 2354, 2355, 1065,
1818      1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1300,
1819
1820      1302, 1302, 1302, 2696, 2696, 2696, 2356, 2357, 1073, 1296,
1821      2358, 1073, 2359, 2366, 1073,  952, 2367, 1303, 2368, 2369,
1822      2696, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
1823      2370, 1298, 2371, 1308, 1308, 1308, 1084, 1084, 1084, 1079,
1824      1085, 2372, 1079, 1086, 2373, 1079, 1089, 1089, 1089, 1304,
1825      1309, 1089, 1089, 1089, 1089, 1089, 1089, 2360, 2374, 1099,
1826      1099, 1099, 1301, 1100, 1091, 2375, 1101, 2376, 2377, 1091,
1827      2378, 2379, 1091, 1319, 1319, 1319, 1103, 1103, 1103, 2382,
1828      1104, 2383, 2384, 1105, 1106, 1106, 1106, 1321, 1321, 1321,
1829      1320, 1322, 1305, 2388, 1323, 1115, 1115, 1115, 1115, 1115,
1830
1831      1115, 1107, 1115, 1115, 1115, 1123, 1123, 1123, 2395, 1124,
1832      2396, 2397, 1125, 1117, 2398, 2399, 1117, 2400, 1312, 2401,
1833      1117, 1126, 1126, 1126, 1336, 1336, 1336, 2402, 1337, 2403,
1834      2404, 1338, 1130, 1130, 1130, 1130, 1130, 1130, 1127, 1130,
1835      1130, 1130, 1135, 1135, 1135, 2405, 1136, 2406, 2414, 1137,
1836      1132, 2415, 2416, 1132, 1138, 1138, 1138, 1132, 1138, 1138,
1837      1138, 1138, 1138, 1138, 1149, 1149, 1149,  952, 1331, 1149,
1838      1149, 1149, 1140, 1143, 1143, 1143, 1140, 1144, 2409, 1140,
1839      1145, 2417, 1151, 1149, 1149, 1149, 2409, 1151, 2418, 2412,
1840      1341, 1153, 1153, 1153, 2419, 1349, 1349, 1349, 2420, 1350,
1841
1842      2410, 1151, 1351, 1155, 1155, 1155, 2421, 2422, 1154, 1352,
1843      1352, 1352, 2407, 1353, 2423, 2424, 1354, 1158, 1158, 1158,
1844      1156, 1158, 1158, 1158, 1163, 1163, 1163, 1343, 1158, 1158,
1845      1158, 1167, 1167, 1167, 2429, 1160, 1358, 1358, 1358, 1160,
1846      1359, 1164, 1348, 1360, 2434, 2435, 1160, 2436, 1168, 1363,
1847      1363, 1363, 2437, 1364, 1394, 1395, 1365, 1170, 1170, 1170,
1848      1170, 1170, 1170, 1170, 1170, 1170, 1175, 1175, 1175,  952,
1849      1176, 2440, 2440, 1177, 2443, 1172, 2444, 2445, 1172, 2446,
1850      2455, 1172, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
1851      1178, 1182, 1182, 1182, 1356, 1370, 1370, 1370, 2458, 1371,
1852
1853      1180, 2463, 1372, 1180, 2425, 2453, 1180, 2427, 1183, 2438,
1854      1186, 1186, 1186, 1375, 1375, 1375, 2426, 1376, 2466, 2428,
1855      1377, 1188, 1188, 1188, 2454, 2430, 1367, 1187, 1188, 1188,
1856      1188, 1188, 1188, 1188, 1380, 1380, 1380, 2431, 2432, 1190,
1857      1196, 1196, 1196, 1196, 1196, 1196, 1190, 1369, 2409, 1190,
1858      2433, 1381, 1196, 1196, 1196, 1202, 1202, 1202, 1198, 2412,
1859      2456, 1198, 1202, 1202, 1202, 1202, 1202, 1202, 2409, 2440,
1860      1198, 2461, 2464, 1204, 1206, 1206, 1206, 2468, 1207, 2457,
1861      1204, 1208, 2410, 1204, 1209, 1209, 1209, 1209, 1209, 1209,
1862      2462, 2465, 1378, 1209, 1209, 1209, 1213, 1213, 1213, 2440,
1863
1864      1214, 2469, 1211, 1215, 2470, 1211, 1217, 1217, 1217, 2471,
1865      2472, 1211, 1384, 1217, 1217, 1217, 2482, 2483, 1387, 1217,
1866      1217, 1217, 2484, 2485, 1219, 1393, 1393, 1393,  965,  965,
1867       965, 1219, 1255, 1255, 1255, 2486, 2487, 1219, 1427, 1427,
1868      1427, 2491, 1428, 1394, 1395, 1429,  967, 2492, 2493, 1256,
1869      2494, 2495, 1388,  996,  996,  996, 1258, 1258, 1258, 1431,
1870      1431, 1431, 2496, 1432, 2498, 2499, 1433, 1006, 1006, 1006,
1871      2500,  998, 2505, 1259, 1264, 1264, 1264, 2506, 1265, 1390,
1872      2501, 1266, 1267, 1267, 1267, 1008, 2507, 1438, 1438, 1438,
1873      2503, 1439, 2502, 1400, 1440, 2508, 1269, 1269, 1269, 1268,
1874
1875      1270, 2509, 2504, 1271, 1273, 1273, 1273, 1442, 1442, 1442,
1876      1430, 1443, 2510, 2511, 1444, 2512, 1436, 1022, 1022, 1022,
1877      2513, 1274, 1279, 1279, 1279, 1449, 1449, 1449, 2514, 1450,
1878      2515, 2516, 1451, 2518,  952, 1024, 1452, 1452, 1452, 1280,
1879      1030, 1030, 1030, 1284, 1284, 1284, 1465, 1465, 1465, 2519,
1880      1055, 1055, 1055, 1453, 1063, 1063, 1063, 2520, 1032, 2517,
1881      2521, 1285, 2522, 1466, 1299, 1299, 1299, 1446, 1057, 1470,
1882      1470, 1470, 1065, 1471, 2523, 2524, 1472, 1071, 1071, 1071,
1883      2525, 1300, 1302, 1302, 1302, 2526, 1474, 1474, 1474, 1454,
1884      1475, 2527, 2528, 1476, 2529, 1073, 1077, 1077, 1077, 1303,
1885
1886      2530, 1308, 1308, 1308, 1481, 1481, 1481, 2531, 1482, 2532,
1887      2533, 1483, 2534, 1467, 1079, 2535,  952, 1469, 1309, 2537,
1888      1484, 1484, 1484, 1486, 1486, 1486, 1089, 1089, 1089, 1493,
1889      1493, 1493, 1319, 1319, 1319, 2536, 1473, 1485, 2538, 2539,
1890      1487, 1497, 1497, 1497, 1091, 1498, 1494, 2540, 1499, 1320,
1891      1321, 1321, 1321, 2541, 1322, 2542, 1478, 1323, 1500, 1500,
1892      1500, 1115, 1115, 1115, 1510, 1510, 1510, 2543, 2544, 1488,
1893      1336, 1336, 1336, 2545, 1337, 1501, 2546, 1338, 2547, 1117,
1894      2548, 1511, 1514, 1514, 1514, 1130, 1130, 1130, 1138, 1138,
1895      1138, 1489, 1523, 1523, 1523, 1149, 1149, 1149, 2549, 1515,
1896
1897      1349, 1349, 1349, 1132, 1350, 2550, 1140, 1351, 2551, 1524,
1898      1352, 1352, 1352, 1151, 1353, 2552, 2554, 1354, 1158, 1158,
1899      1158, 2555, 1358, 1358, 1358, 1508, 1359, 2556, 2557, 1360,
1900      1363, 1363, 1363, 2558, 1364, 2559, 1160, 1365, 1525, 1170,
1901      1170, 1170, 1178, 1178, 1178, 1370, 1370, 1370, 1517, 1371,
1902      2560, 1526, 1372, 1519, 1375, 1375, 1375, 1172, 1376,  952,
1903      1180, 1377, 1188, 1188, 1188, 1380, 1380, 1380, 1540, 1540,
1904      1540, 2561, 1541, 2562, 2563, 1542, 1196, 1196, 1196, 2553,
1905      1190, 2564, 1381, 1528, 1547, 1547, 1547, 1202, 1202, 1202,
1906      1209, 1209, 1209, 2565, 1198, 1551, 1551, 1551, 1535, 1533,
1907
1908      2566, 1548, 1217, 1217, 1217, 1204, 2567, 2568, 1211, 1538,
1909      2569, 2571, 1552, 1393, 1393, 1393,  965,  965,  965, 2572,
1910      1219, 1415, 1415, 1415,  952, 1545, 1573, 1573, 1573, 2573,
1911      2570, 1394, 2574, 2575,  967, 1576, 1576, 1576, 1424, 1424,
1912      1424, 2576, 1550, 2577, 1583, 1583, 1583, 1427, 1427, 1427,
1913      2578, 1428, 2579, 1549, 1429,  996,  996,  996, 1431, 1431,
1914      1431, 2580, 1432, 1553, 1555, 1433, 2581, 2582, 1560, 1006,
1915      1006, 1006, 2584,  998, 2585, 1438, 1438, 1438, 2586, 1439,
1916      1556, 1577, 1440, 2587, 1442, 1442, 1442, 1008, 1443, 1574,
1917      1584, 1444, 1022, 1022, 1022, 1447, 1447, 1447, 1449, 1449,
1918
1919      1449, 2588, 1450,  952, 2589, 1451, 1452, 1452, 1452, 2590,
1920      1024, 1602, 1602, 1602, 2591, 1603, 2593, 2583, 1604, 2594,
1921      1588, 1585, 2595, 1453, 1030, 1030, 1030, 1458, 1458, 1458,
1922      1459, 1459, 1459, 1609, 1609, 1609, 1609, 1609, 1609, 1573,
1923      1573, 1573, 1032, 1465, 1465, 1465, 1613, 1613, 1613, 2596,
1924      1614, 2597, 1592, 1615, 1055, 1055, 1055, 1484, 1484, 1484,
1925      1466, 1063, 1063, 1063, 1470, 1470, 1470, 2598, 1471, 2599,
1926      2600, 1472, 1057, 2603, 1485, 1605, 1071, 1071, 1071, 1065,
1927      1474, 1474, 1474, 2604, 1475, 2605, 2606, 1476, 1077, 1077,
1928      1077, 1481, 1481, 1481, 1073, 1482, 1610, 2607, 1483, 1574,
1929
1930      2608, 1616, 1610, 1624, 1624, 1624, 1079, 1625, 1618,  952,
1931      1626, 1486, 1486, 1486, 1627, 1627, 1627,  952, 1628,  952,
1932       952, 1629, 1631, 1631, 1631, 1633, 1633, 1633, 1487, 1493,
1933      1493, 1493, 1636, 1636, 1636,  952, 1637,  952,  952, 1638,
1934      1632, 1619, 1639, 1639, 1639, 2609, 1494,  952, 1497, 1497,
1935      1497, 1621, 1498, 2610,  952, 1499, 1500, 1500, 1500, 1640,
1936      1642, 1642, 1642,  952, 1643, 2631, 2611, 1644, 1645, 1645,
1937      1645, 1590, 2625, 1501, 1651, 1651, 1651, 1115, 1115, 1115,
1938      1510, 1510, 1510, 2632, 2612, 1646, 1655, 1655, 1655, 2629,
1939      1656, 1652, 2617, 1657, 2613, 1117,  952, 1511, 1658, 1658,
1940
1941      1658, 1514, 1514, 1514, 1661, 1661, 1661,  952, 1662, 2619,
1942      2614, 1663, 1665, 1665, 1665, 1659,  952,  952, 1515, 1138,
1943      1138, 1138, 1523, 1523, 1523, 1672, 1672, 1672,  952, 1673,
1944      1666,  952, 1674, 1676, 1676, 1676, 2618, 1140, 1589, 1524,
1945       952, 2620, 1653, 1158, 1158, 1158, 1681, 1681, 1681,  952,
1946      2615, 1677, 1683, 1683, 1683, 2696, 2696, 2696, 1170, 1170,
1947      1170, 1160, 2623, 1682, 1178, 1178, 1178,  952, 1587, 1684,
1948      1668, 2616, 2696, 1689, 1689, 1689, 1172, 2624, 1691, 1691,
1949      1691, 2621, 1180, 1188, 1188, 1188, 1196, 1196, 1196,  952,
1950      1690, 1547, 1547, 1547, 1679, 1692, 1540, 1540, 1540,  952,
1951
1952      1541, 1190, 2630, 1542, 1198, 1699, 1699, 1699, 1548, 1700,
1953      1688, 2622, 1701, 1202, 1202, 1202, 1586,  952, 1685,  952,
1954      1209, 1209, 1209,  952, 1686, 1551, 1551, 1551, 1704, 1704,
1955      1704, 1204, 1705,  952, 1582, 1706, 2626, 1697, 1211, 1707,
1956      1707, 1707, 1552, 1713, 1713, 1713, 1581, 1693,  965,  965,
1957       965, 1720, 1720, 1720, 1568, 1568, 1568, 1708, 2639, 2643,
1958      1714, 1726, 1726, 1726, 1580, 1579,  967, 1573, 1573, 1573,
1959      2633, 1702, 1727, 1727, 1727, 1703, 1576, 1576, 1576, 1730,
1960      1730, 1730, 1731, 1731, 1731, 1583, 1583, 1583,  996,  996,
1961       996, 1739, 1739, 1739, 1742, 1742, 1742, 1022, 1022, 1022,
1962
1963      1746, 1746, 1746, 1602, 1602, 1602,  998, 1603, 1715, 1740,
1964      1604, 1743, 1030, 1030, 1030, 1024,  952, 1747, 1759, 1759,
1965      1759, 1609, 1609, 1609, 1763, 1763, 1763, 1765, 1765, 1765,
1966      1032,  952, 1613, 1613, 1613, 1760, 1614,  952, 1736, 1615,
1967       952, 1055, 1055, 1055, 1766, 1768, 1768, 1768, 1063, 1063,
1968      1063, 1771, 1771, 1771,  952, 1745, 2627, 1578, 1758, 1057,
1969      1575,  952, 1769, 1773, 1773, 1773, 1065, 1572, 2634, 1772,
1970      1077, 1077, 1077,  952, 1624, 1624, 1624, 2628, 1625, 1571,
1971      1774, 1626, 1627, 1627, 1627, 2645, 1628, 2649, 1079, 1629,
1972      1631, 1631, 1631, 2635, 1767, 1633, 1633, 1633, 1636, 1636,
1973
1974      1636, 1770, 1637,  952,  952, 1638, 2637, 2641, 1632, 1639,
1975      1639, 1639, 1783, 1783, 1783,  952, 1784, 1775,  952, 1785,
1976      1642, 1642, 1642,  952, 1643, 2638, 1640, 1644, 1645, 1645,
1977      1645, 1787, 1787, 1787,  952, 1788, 2636, 2642, 1789, 1790,
1978      1790, 1790, 1651, 1651, 1651, 1646, 1795, 1795, 1795, 2669,
1979      1796,  952,  952, 1797,  952, 2653, 1791,  952, 2640, 1652,
1980      1115, 1115, 1115, 1655, 1655, 1655,  952, 1656,  952,  952,
1981      1657, 1658, 1658, 1658,  952, 1800, 1800, 1800, 1117, 1801,
1982      1570, 2661, 1802, 1661, 1661, 1661, 2647, 1662, 1659, 2648,
1983      1663, 1665, 1665, 1665, 1138, 1138, 1138, 1808, 1808, 1808,
1984
1985      1672, 1672, 1672, 2662, 1673,  952, 2654, 1674, 2644, 1666,
1986       952, 1798, 1140, 2646, 1809, 1676, 1676, 1676, 1816, 1816,
1987      1816, 1681, 1681, 1681, 1819, 1819, 1819, 2670, 1820, 1569,
1988      1567, 1821,  952, 1677,  952,  952, 1817,  952, 1682, 1683,
1989      1683, 1683, 1566, 1810, 1822, 1822, 1822,  952, 1823, 1565,
1990      2657, 1824, 1170, 1170, 1170, 2658, 1684, 1806, 1178, 1178,
1991      1178, 1689, 1689, 1689, 1829, 1829, 1829, 2650, 1830, 2659,
1992      1172, 1831, 1691, 1691, 1691, 2651, 1180,  952, 1690, 1832,
1993      1832, 1832, 2667, 1833,  952, 1564, 1834,  952, 2655, 1692,
1994      1188, 1188, 1188, 1196, 1196, 1196, 1699, 1699, 1699,  952,
1995
1996      1700, 2652,  952, 1701, 1202, 1202, 1202, 1828, 1190,  952,
1997       952, 1198, 1209, 1209, 1209,  952, 2663, 1826, 2656, 1704,
1998      1704, 1704, 1204, 1705, 2660,  952, 1706, 1707, 1707, 1707,
1999      1211, 1713, 1713, 1713, 1847, 1847, 1847, 2664, 1848, 2675,
2000      1563, 1849,  965,  965,  965, 1708,  952, 2668, 1714, 1851,
2001      1851, 1851, 2673, 2693, 1835, 1841, 2689, 1839, 1562, 1561,
2002       967, 1854, 1854, 1854,  952, 1842, 1720, 1720, 1720, 1855,
2003      1855, 1855, 1859, 1859, 1859, 1726, 1726, 1726, 1727, 1727,
2004      1727, 1860, 1860, 1860, 1730, 1730, 1730, 1731, 1731, 1731,
2005      1863, 1863, 1863, 1864, 1864, 1864, 1865, 1865, 1865,  996,
2006
2007       996,  996, 1739, 1739, 1739, 1850, 1742, 1742, 1742, 1871,
2008      1871, 1871,  952, 1872, 1559,  952, 1873,  998, 1558, 1557,
2009      1740, 1394,  952, 1743, 1875, 1875, 1875, 1861, 1746, 1746,
2010      1746, 1877, 1877, 1877, 1546, 1878, 1544, 1543, 1879, 1030,
2011      1030, 1030, 1876,  952, 2683, 1747, 1759, 1759, 1759, 2665,
2012      1867, 1891, 1891, 1891,  952, 1892, 2666, 1032, 1893, 1894,
2013      1894, 1894,  952, 1760, 1763, 1763, 1763, 1896, 1896, 1896,
2014      1765, 1765, 1765, 1898, 1898, 1898,  952, 1899, 2677,  952,
2015      1900, 1055, 1055, 1055, 1768, 1768, 1768, 1766, 1890, 1902,
2016      1902, 1902, 1539, 1903, 2684, 1537, 1904,  952,  952, 1057,
2017
2018      2671, 1769, 1063, 1063, 1063, 1771, 1771, 1771, 1773, 1773,
2019      1773,  952,  952, 1897, 1906, 1906, 1906, 1536, 1907, 2676,
2020      1065, 1908, 2672, 1772,  952, 1774, 1077, 1077, 1077, 1783,
2021      1783, 1783, 1901, 1784, 2674, 1534, 1785,  952, 1787, 1787,
2022      1787, 1532, 1788, 2679, 1079, 1789, 1790, 1790, 1790, 2681,
2023      1920, 1920, 1920, 1905, 1921, 2685, 2680, 1922, 1795, 1795,
2024      1795, 2682, 1796, 1791,  952, 1797, 1115, 1115, 1115, 1800,
2025      1800, 1800, 2678, 1801, 2686, 1531, 1802,  952, 1530, 1909,
2026      1931, 1931, 1931,  952, 1117, 1808, 1808, 1808, 1934, 1934,
2027      1934, 1527, 1935,  952, 2693, 1936, 1522, 1521, 1932, 1816,
2028
2029      1816, 1816, 1809, 1819, 1819, 1819, 1520, 1820,  952, 2687,
2030      1821, 1822, 1822, 1822,  952, 1823, 1518, 1817, 1824, 1170,
2031      1170, 1170, 1178, 1178, 1178, 2688, 1829, 1829, 1829, 1926,
2032      1830,  952,  952, 1831, 1832, 1832, 1832, 1172, 1833, 1516,
2033      1180, 1834, 1188, 1188, 1188, 1951, 1951, 1951, 2696, 2696,
2034      2696, 2696, 2696, 2696, 1196, 1196, 1196, 1202, 1202, 1202,
2035      1190, 2690, 1952, 2691, 2692, 2696, 1513, 1512, 2696, 1509,
2036      1947, 1507, 1198, 1506, 1505, 1204, 1504, 1503, 1950, 1958,
2037      1958, 1958, 1960, 1960, 1960, 1502, 1496, 1949, 1963, 1963,
2038      1963, 1847, 1847, 1847, 1495, 1848, 1492, 1959, 1849, 1953,
2039
2040       952,  965,  965,  965, 1851, 1851, 1851, 1491, 1490, 1954,
2041      1965, 1965, 1965, 1854, 1854, 1854, 1957, 1480, 1955,  967,
2042      1855, 1855, 1855, 1967, 1967, 1967, 1968, 1968, 1968, 1969,
2043      1969, 1969, 1859, 1859, 1859, 1860, 1860, 1860, 1863, 1863,
2044      1863, 1864, 1864, 1864, 1865, 1865, 1865, 1973, 1973, 1973,
2045      1976, 1976, 1976, 1871, 1871, 1871, 1479, 1872, 1477, 1964,
2046      1873, 2696, 2696, 2696, 1468, 1974, 1464, 1977, 1875, 1875,
2047      1875, 1463, 1877, 1877, 1877, 1462, 1878, 1461, 2696, 1879,
2048      1030, 1030, 1030, 1891, 1891, 1891, 1876, 1892, 1460, 1457,
2049      1893, 1894, 1894, 1894, 1896, 1896, 1896, 1456, 1032, 1898,
2050
2051      1898, 1898, 1455, 1899, 1448, 1445, 1900, 1055, 1055, 1055,
2052      1902, 1902, 1902, 1441, 1903, 1437, 1435, 1904, 1993, 1993,
2053      1993, 1077, 1077, 1077, 1434, 1057, 1978, 1906, 1906, 1906,
2054      1426, 1907, 1425, 1423, 1908, 1422, 1994, 1421, 1420, 1079,
2055      1989, 2003, 2003, 2003, 1920, 1920, 1920, 1419, 1921, 1418,
2056      1417, 1922, 1416, 1992, 2006, 2006, 2006, 2010, 2010, 2010,
2057      1931, 1931, 1931, 2016, 2016, 2016, 1934, 1934, 1934, 1414,
2058      1935, 2007, 1995, 1936, 1413, 2011, 1411, 1410, 1932, 1407,
2059      2017, 2027, 2027, 2027, 2029, 2029, 2029, 2031, 2031, 2031,
2060      1178, 1178, 1178, 1188, 1188, 1188, 1951, 1951, 1951, 2035,
2061
2062      2035, 2035, 2030, 2036, 2032, 1405, 2037, 1404, 1180, 2018,
2063      1403, 1190, 1402, 1952, 2038, 2038, 2038, 2696, 2696, 2696,
2064      2041, 2041, 2041, 2043, 2043, 2043, 1202, 1202, 1202, 1401,
2065      1399, 2039, 1398, 1397, 2696, 1963, 1963, 1963, 2042, 1958,
2066      1958, 1958, 1396, 1389, 1204, 1960, 1960, 1960, 1386, 2033,
2067      1965, 1965, 1965, 2034, 2048, 2048, 2048, 1959, 1967, 1967,
2068      1967, 1385, 1383,  952, 1968, 1968, 1968, 1382, 2040, 1969,
2069      1969, 1969, 2049, 1379, 1973, 1973, 1973, 1976, 1976, 1976,
2070      2055, 2055, 2055, 1374, 2056, 1373, 1368, 2057, 2696, 2696,
2071      2696, 2044, 1974, 1366, 1977, 1030, 1030, 1030, 1055, 1055,
2072
2073      1055, 1993, 1993, 1993, 1362, 2696, 2045, 2073, 2073, 2073,
2074      2079, 2079, 2079, 1032, 1361, 1357, 1057, 1355, 1347, 1994,
2075      2003, 2003, 2003, 1346, 1345, 2074, 1344, 2080, 2006, 2006,
2076      2006, 2083, 2083, 2083, 1342, 2084, 1340, 1339, 2085, 2087,
2077      2087, 2087, 1335, 2058, 1334, 2007, 2010, 2010, 2010, 2091,
2078      2091, 2091, 1333, 1332, 2069, 1330, 2088, 2016, 2016, 2016,
2079      2102, 2102, 2102, 2072, 2011, 1329, 2092, 1328, 2094, 2094,
2080      2094, 1327, 2095, 1326, 2017, 2096, 1325, 2103, 2027, 2027,
2081      2027, 2029, 2029, 2029, 2031, 2031, 2031, 2106, 2106, 2106,
2082      1324, 2107, 1318, 1317, 2108, 2109, 2109, 2109, 1316, 2030,
2083
2084      1315, 2032, 1188, 1188, 1188, 2035, 2035, 2035, 1314, 2036,
2085      1313, 1311, 2037, 2110, 2038, 2038, 2038, 2112, 2112, 2112,
2086      1190, 2113, 1310, 1307, 2114, 2115, 2115, 2115, 2041, 2041,
2087      2041, 2039, 2043, 2043, 2043, 2117, 2117, 2117, 2048, 2048,
2088      2048, 1306, 2116, 2126, 2126, 2126, 2042, 2055, 2055, 2055,
2089      1297, 2056, 1295, 2118, 2057, 1294, 2049, 2696, 2696, 2696,
2090      2127, 1030, 1030, 1030, 1055, 1055, 1055, 1293, 2111, 2073,
2091      2073, 2073, 1292, 1291, 2696, 2150, 2150, 2150, 1290, 1032,
2092      1289, 1288, 1057, 2079, 2079, 2079, 1287, 2074, 1286, 2152,
2093      2152, 2152, 2151, 2153, 1283, 1281, 2154, 2083, 2083, 2083,
2094
2095      2080, 2084, 1278, 1275, 2085, 2087, 2087, 2087, 2158, 2158,
2096      2158, 1272, 2159, 1263, 1261, 2160, 1254, 2134, 1252, 1251,
2097      2145, 1250, 2088, 2162, 2162, 2162, 2091, 2091, 2091, 2164,
2098      2164, 2164, 1249, 2165, 2148, 1248, 2166, 2167, 2167, 2167,
2099      2163, 1247, 1246, 2092, 2094, 2094, 2094, 1245, 2095, 1244,
2100      1241, 2096, 1240, 1239, 2168, 2102, 2102, 2102, 2172, 2172,
2101      2172, 1238, 2173, 1237, 1236, 2174, 2175, 2175, 2175, 2177,
2102      2177, 2177, 2103, 2106, 2106, 2106, 1235, 2107, 1234, 1233,
2103      2108, 1232, 1231, 2176, 1230, 1228, 2178, 2109, 2109, 2109,
2104      1188, 1188, 1188, 2112, 2112, 2112, 1227, 2113, 1226, 1225,
2105
2106      2114, 2115, 2115, 2115, 1224, 2110, 1223, 1222, 1190, 2186,
2107      2186, 2186,  952, 2187, 1216, 1201, 2188, 1200, 2116, 2117,
2108      2117, 2117, 2192, 2192, 2192, 2126, 2126, 2126, 2196, 2196,
2109      2196, 1195, 2197, 1194, 1193, 2198, 1192, 2118, 1174, 2696,
2110      2696, 2696, 2127, 1030, 1030, 1030, 2217, 2217, 2217, 1055,
2111      1055, 1055, 2150, 2150, 2150, 2185, 2696, 2220, 2220, 2220,
2112      1162, 1032, 1148, 1147, 2223, 2223, 2223, 1057, 2224, 2151,
2113      1146, 2225, 1142, 1134, 2221, 2152, 2152, 2152, 1129, 2153,
2114      1128, 1122, 2154, 2158, 2158, 2158, 1119, 2159, 1114, 1113,
2115      2160, 2162, 2162, 2162, 2216, 2230, 2230, 2230, 2207, 2231,
2116
2117      1112, 1111, 2232, 2222, 1110, 2164, 2164, 2164, 2163, 2165,
2118      2219, 1109, 2166, 2167, 2167, 2167, 2233, 2233, 2233, 1108,
2119      2234, 1102, 1095, 2235, 2237, 2237, 2237, 2172, 2172, 2172,
2120      2168, 2173, 1094, 1093, 2174, 2175, 2175, 2175, 2240, 2240,
2121      2240, 2238, 2241, 1088, 1087, 2242, 2177, 2177, 2177, 2243,
2122      2243, 2243, 2176, 2244, 1083, 1082, 2245, 1188, 1188, 1188,
2123      2186, 2186, 2186, 2178, 2187, 1081, 1076, 2188, 2255, 2255,
2124      2255, 2192, 2192, 2192, 1075, 1190, 2257, 2257, 2257, 1070,
2125      2196, 2196, 2196, 1062, 2197, 2256, 1394, 2198, 2268, 2268,
2126      2268, 1030, 1030, 1030, 2217, 2217, 2217, 2279, 2279, 2279,
2127
2128      1055, 1055, 1055, 1054, 1050, 2269, 1049, 1048, 2252, 1032,
2129      2220, 2220, 2220, 2281, 2281, 2281, 1047, 2282, 1057, 1046,
2130      2283, 2223, 2223, 2223, 1045, 2224, 1044, 2221, 2225, 2230,
2131      2230, 2230, 1043, 2231, 1037, 1029, 2232, 2233, 2233, 2233,
2132      2278, 2234, 1028, 1027, 2235, 2237, 2237, 2237, 2290, 2290,
2133      2290, 2280, 2291, 1026, 1021, 2292, 2240, 2240, 2240, 1020,
2134      2241, 1019, 2238, 2242, 2243, 2243, 2243, 1016, 2244, 1010,
2135      1005, 2245, 2308, 2308, 2308, 2311, 2311, 2311, 2255, 2255,
2136      2255, 2313, 2313, 2313, 1004, 2314, 1000,  995, 2315,  994,
2137      2309,  993, 2312, 1394,  992, 2256, 1394,  991,  990, 1394,
2138
2139      2257, 2257, 2257, 2316, 2316, 2316, 2317, 2317, 2317, 2268,
2140      2268, 2268, 2326, 2326, 2326,  988, 2327,  987,  986, 2328,
2141      1030, 1030, 1030, 2279, 2279, 2279, 2269, 2336, 2336, 2336,
2142      2281, 2281, 2281,  985, 2282,  984,  983, 2283, 1032, 2341,
2143      2341, 2341, 2344, 2344, 2344, 2337, 2290, 2290, 2290,  982,
2144      2291,  981,  980, 2292,  979,  978, 2342,  977,  976, 2345,
2145      2346, 2346, 2346, 2308, 2308, 2308, 2311, 2311, 2311, 2361,
2146      2361, 2361,  975, 2362,  974,  973, 2363, 2347, 2316, 2316,
2147      2316, 2309,  972, 2312, 1394, 2335,  971, 1394, 2313, 2313,
2148      2313,  964, 2314,  963,  962, 2315, 2317, 2317, 2317, 2380,
2149
2150      2380, 2380, 2336, 2336, 2336,  961, 1394, 1392, 1392, 1392,
2151      1392, 1392, 1392, 1392, 1392, 1392,  960, 2381, 1392,  959,
2152      2337,  958,  955, 1392, 1392, 1392, 1394, 1392, 2326, 2326,
2153      2326,  953, 2327,  952,  950, 2328, 2385, 2385, 2385,  948,
2154      2386,  945,  941, 2387,  939,  938, 2341, 2341, 2341, 2344,
2155      2344, 2344, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
2156      1392, 1392, 1392, 2342,  937, 1392, 2345, 2346, 2346, 2346,
2157      1392, 1392, 1392, 1394, 1392, 2389, 2389, 2389,  935, 2390,
2158       934,  933, 2391,  932, 2347, 2392, 2392, 2392,  931, 2393,
2159       929,  928, 2394,  927, 2361, 2361, 2361,  926, 2362, 1392,
2160
2161      1392, 2363,  922,  921, 2380, 2380, 2380, 2442, 2442, 2442,
2162       919,  918, 1394, 1392, 1392, 1392, 1392, 1392, 2413, 1392,
2163      1392, 1392, 2381,  917, 1392, 1394, 1395,  916,  915, 1392,
2164      1392, 1392, 1394, 1392, 2385, 2385, 2385,  914, 2386,  912,
2165       911, 2387, 2389, 2389, 2389,  910, 2390,  909,  907, 2391,
2166      2392, 2392, 2392,  906, 2393,  905,  902, 2394, 1392, 1392,
2167      1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 2413,  901,
2168       897, 1392, 2447, 2447, 2447,  896, 1392, 1392, 1392, 1394,
2169      1392, 2449, 2449, 2449, 2451, 2451, 2451,  894,  893, 2448,
2170      2459, 2459, 2459, 2467, 2467, 2467,  892,  889, 2450,  888,
2171
2172       887, 2452, 2442, 2442, 2442, 1392, 1392, 2460, 2447, 2447,
2173      2447,  952, 2473, 2473, 2473,  886, 2474,  884,  883, 2475,
2174      1394, 2449, 2449, 2449,  882, 2448, 2476, 2476, 2476,  881,
2175      2477,  880,  879, 2478, 2451, 2451, 2451,  878, 2450, 2479,
2176      2479, 2479,  877, 2480,  874,  871, 2481, 2459, 2459, 2459,
2177       870, 2452,  867, 1555, 2488, 2488, 2488,  865, 2489,  864,
2178       859, 2490,  858,  856, 2460, 2467, 2467, 2467, 2473, 2473,
2179      2473,  855, 2474,  854,  852, 2475,  849, 2476, 2476, 2476,
2180       847, 2477,  844,  952, 2478, 2479, 2479, 2479,  842, 2480,
2181       839,  836, 2481, 2488, 2488, 2488,  835, 2489,  833,  832,
2182
2183      2490,  831, 2497, 2592, 2592, 2592, 2592, 2592, 2592,  830,
2184      2601,  829,  827, 2602, 2694, 2694, 2694, 2694, 2694, 2694,
2185       824,  952,  822,  821,  952,  820,  818,  816,  815,  814,
2186       813,  812, 2695,  811,  808, 2695,  222,  222,  222,  222,
2187       222,  222,  222,  222,  222,  223,  223,  223,  223,  223,
2188       223,  223,  223,  223,  228,  228,  228,  228,  228,  228,
2189       228,  228,  228,  231,  231,  231,  231,  231,  231,  231,
2190       231,  231,  234,  234,  234,  234,  234,  234,  234,  234,
2191       234,  237,  237,  237,  237,  237,  237,  237,  237,  237,
2192       244,  244,  244,  244,  244,  244,  244,  244,  244,  252,
2193
2194       252,  252,  252,  252,  252,  252,  252,  252,  256,  256,
2195       256,  256,  256,  256,  256,  256,  256,  268,  268,  268,
2196       268,  268,  268,  268,  268,  268,  272,  272,  272,  272,
2197       272,  272,  272,  272,  272,  278,  278,  278,  278,  278,
2198       278,  278,  278,  278,  289,  289,  289,  289,  289,  289,
2199       289,  289,  289,  297,  297,  297,  297,  297,  297,  297,
2200       297,  297,  305,  305,  305,  305,  305,  305,  305,  305,
2201       305,  311,  311,  311,  311,  311,  311,  311,  311,  311,
2202       317,  317,  317,  317,  317,  317,  317,  317,  317,  322,
2203       322,  322,  322,  322,  322,  322,  322,  322,  339,  339,
2204
2205       339,  339,  339,  339,  339,  339,  339,  345,  345,  345,
2206       345,  345,  345,  345,  345,  345,  352,  352,  352,  352,
2207       352,  352,  352,  352,  352,  357,  357,  357,  357,  357,
2208       357,  357,  357,  357,  364,  364,  364,  364,  364,  364,
2209       364,  364,  364,  369,  369,  369,  369,  369,  369,  369,
2210       369,  369,  375,  375,  375,  375,  375,  375,  375,  375,
2211       375,  380,  380,  380,  380,  380,  380,  380,  380,  380,
2212       386,  386,  386,  386,  386,  386,  386,  386,  386,  394,
2213       394,  394,  394,  394,  394,  394,  394,  394,  413,  413,
2214       413,  413,  413,  413,  413,  413,  413,  429,  429,  429,
2215
2216       429,  429,  429,  429,  429,  429,  435,  435,  435,  435,
2217       435,  435,  435,  435,  435,  440,  440,  440,  440,  440,
2218       440,  440,  440,  440,  446,  446,  446,  446,  446,  446,
2219       446,  446,  446,  453,  453,  453,  453,  453,  453,  453,
2220       453,  453,  460,  460,  460,  460,  460,  460,  460,  460,
2221       460,  465,  465,  465,  465,  465,  465,  465,  465,  465,
2222       473,  473,  473,  473,  473,  473,  473,  473,  473,  479,
2223       479,  479,  479,  479,  479,  479,  479,  479,  486,  486,
2224       486,  486,  486,  486,  486,  486,  486,  491,  491,  491,
2225       491,  491,  491,  491,  491,  491,  497,  497,  497,  497,
2226
2227       497,  497,  497,  497,  497,  503,  503,  503,  503,  503,
2228       503,  503,  503,  503,  510,  510,  510,  510,  510,  510,
2229       510,  510,  510,  517,  517,  517,  517,  517,  517,  517,
2230       517,  517,  525,  525,  525,  525,  525,  525,  525,  525,
2231       525,  529,  529,  529,  529,  529,  529,  529,  529,  529,
2232       535,  535,  535,  535,  535,  535,  535,  535,  535,  539,
2233       539,  539,  539,  539,  539,  539,  539,  539,  546,  546,
2234       546,  546,  546,  546,  546,  546,  546,  551,  551,  551,
2235       551,  551,  551,  551,  551,  551,  571,  571,  571,  807,
2236       806,  803,  571,  597,  597,  597,  800,  799,  797,  597,
2237
2238       601,  601,  601,  796,  793,  791,  601,  609,  609,  609,
2239       788,  787,  779,  609,  621,  621,  621,  778,  777,  774,
2240       621,  627,  627,  627,  773,  772,  771,  627,  641,  641,
2241       641,  769,  768,  767,  641,  647,  647,  647,  766,  765,
2242       764,  647,  652,  652,  652,  759,  756,  758,  652,  657,
2243       657,  657,  753,  752,  750,  657,  662,  662,  662,  749,
2244       748,  746,  662,  671,  671,  671,  744,  742,  739,  671,
2245       687,  687,  687,  738,  737,  736,  687,  697,  697,  697,
2246       734,  733,  732,  697,  702,  702,  702,  731,  730,  728,
2247       702,  710,  710,  710,  726,  725,  723,  710,  717,  717,
2248
2249       717,  722,  719,  718,  717,  724,  724,  724,  716,  580,
2250      2696,  724,  729,  729,  729,  711,  709,  708,  729,  735,
2251       735,  735,  705,  704,  703,  735,  743,  743,  743,  701,
2252       699,  698,  743,  747,  747,  747,  696,  694,  693,  747,
2253       751,  751,  751,  692,  691,  690,  751,  755,  755,  755,
2254       755,  755,  755,  755,  689,  755,  571,  571,  571,  688,
2255       686,  677,  571,  770,  676,  675,  672,  770,  597,  597,
2256       597,  670,  667,  666,  597,  798,  665,  664,  663,  798,
2257       601,  601,  601,  661,  659,  658,  601,  805,  656,  654,
2258       653,  805,  609,  609,  609,  651,  650,  649,  609,  817,
2259
2260       648,  646,  645,  817,  621,  621,  621,  644,  643,  642,
2261       621,  823,  640, 2696,  588,  823,  627,  627,  627,  629,
2262       628,  626,  627,  828,  624,  623,  622,  828,  641,  641,
2263       641,  620,  591, 2696,  641,  843,  615,  611,  610,  843,
2264       647,  647,  647,  608,  607,  604,  647,  848,  603,  602,
2265       600,  848,  652,  652,  652,  598,  596, 2696,  652,  853,
2266       572,  570,  568,  853,  657,  657,  657,  562,  561,  562,
2267       657,  857,  561,  560,  559,  857,  662,  662,  662, 2696,
2268      2696, 2696,  662,  866, 2696, 2696, 2696,  866,  671,  671,
2269       671, 2696, 2696, 2696,  671,  885, 2696, 2696, 2696,  885,
2270
2271       687,  687,  687, 2696, 2696, 2696,  687,  895, 2696, 2696,
2272      2696,  895,  697,  697,  697, 2696, 2696, 2696,  697,  900,
2273      2696, 2696, 2696,  900,  702,  702,  702, 2696, 2696, 2696,
2274       702,  908, 2696, 2696, 2696,  908,  710,  710,  710, 2696,
2275      2696, 2696,  710,  913, 2696, 2696, 2696,  913,  717,  717,
2276       717, 2696, 2696, 2696,  717,  920, 2696, 2696, 2696,  920,
2277       724,  724,  724, 2696, 2696, 2696,  724,  925, 2696, 2696,
2278      2696,  925,  729,  729,  729, 2696, 2696, 2696,  729,  930,
2279      2696, 2696, 2696,  930,  735,  735,  735, 2696, 2696, 2696,
2280       735,  936, 2696, 2696, 2696,  936,  743,  743,  743, 2696,
2281
2282      2696, 2696,  743,  940, 2696, 2696, 2696,  940,  747,  747,
2283       747, 2696, 2696, 2696,  747,  944, 2696, 2696, 2696,  944,
2284       751,  751,  751, 2696, 2696, 2696,  751,  949, 2696, 2696,
2285      2696,  949,  951,  951,  951,  951,  951,  951,  951,  951,
2286       951,  957, 2696, 2696, 2696, 2696,  957,  571,  571,  571,
2287      2696, 2696, 2696,  571,  966,  966,  966,  966, 2696, 2696,
2288       966,  966,  597,  597,  597, 2696, 2696, 2696,  597,  997,
2289       997,  997,  997, 2696, 2696,  997,  997,  601,  601,  601,
2290      2696, 2696, 2696,  601, 1007, 1007, 1007, 1007, 2696, 2696,
2291      1007, 1007,  609,  609,  609, 2696, 2696, 2696,  609, 1023,
2292
2293      1023, 1023, 1023, 2696, 2696, 1023, 1023,  621,  621,  621,
2294      2696, 2696, 2696,  621, 1031, 1031, 1031, 1031, 2696, 2696,
2295      1031, 1031,  627,  627,  627, 2696, 2696, 2696,  627, 1039,
2296      1039, 1039, 1039, 2696, 2696, 1039, 1039,  641,  641,  641,
2297      2696, 2696, 2696,  641, 1056, 1056, 1056, 1056, 2696, 2696,
2298      1056, 1056,  647,  647,  647, 2696, 2696, 2696,  647, 1064,
2299      1064, 1064, 1064, 2696, 2696, 1064, 1064,  652,  652,  652,
2300      2696, 2696, 2696,  652, 1072, 1072, 1072, 1072, 2696, 2696,
2301      1072, 1072,  657,  657,  657, 2696, 2696, 2696,  657, 1078,
2302      1078, 1078, 1078, 2696, 2696, 1078, 1078,  662,  662,  662,
2303
2304      2696, 2696, 2696,  662, 1090, 1090, 1090, 1090, 2696, 2696,
2305      1090, 1090,  671,  671,  671, 2696, 2696, 2696,  671, 1116,
2306      1116, 1116, 1116, 2696, 2696, 1116, 1116,  687,  687,  687,
2307      2696, 2696, 2696,  687, 1131, 1131, 1131, 1131, 2696, 2696,
2308      1131, 1131,  697,  697,  697, 2696, 2696, 2696,  697, 1139,
2309      1139, 1139, 1139, 2696, 2696, 1139, 1139,  702,  702,  702,
2310      2696, 2696, 2696,  702, 1150, 1150, 1150, 1150, 2696, 2696,
2311      1150, 1150,  710,  710,  710,  710, 2696,  710, 2696,  710,
2312      1159, 1159, 1159, 1159, 2696, 2696, 1159, 1159,  717,  717,
2313       717,  717, 2696,  717, 2696,  717, 1171, 1171, 1171, 1171,
2314
2315      2696, 2696, 1171, 1171,  724,  724,  724, 2696, 2696, 2696,
2316       724, 1179, 1179, 1179, 1179, 2696, 2696, 1179, 1179,  729,
2317       729,  729,  729, 2696,  729, 2696,  729, 1189, 1189, 1189,
2318      1189, 2696, 2696, 1189, 1189,  735,  735,  735, 2696, 2696,
2319      2696,  735, 1197, 1197, 1197, 1197, 2696, 2696, 1197, 1197,
2320       743,  743,  743, 2696, 2696, 2696,  743, 1203, 1203, 1203,
2321      1203, 2696, 2696, 1203, 1203, 1210, 1210, 1210, 1210, 2696,
2322      2696, 1210, 1210,  751,  751,  751, 2696, 2696, 2696,  751,
2323      1218, 1218, 1218, 1218, 2696, 2696, 1218, 1218,  951,  951,
2324       951,  951,  951,  951,  951,  951,  951,  957, 2696,  957,
2325
2326      2696, 2696,  957,  571,  571,  571, 2696, 2696, 2696,  571,
2327       966,  966,  966,  966, 2696, 2696,  966,  966,  597,  597,
2328       597,  597, 2696,  597, 2696,  597,  997,  997,  997,  997,
2329      2696, 2696,  997,  997,  601,  601,  601,  601, 2696,  601,
2330      2696,  601, 1007, 1007, 1007, 1007, 2696, 2696, 1007, 1007,
2331       609,  609,  609, 2696, 2696, 2696,  609, 1023, 1023, 1023,
2332      1023, 2696, 2696, 1023, 1023,  621,  621,  621, 2696, 2696,
2333      2696,  621, 1031, 1031, 1031, 1031, 2696, 2696, 1031, 1031,
2334       627,  627,  627, 2696, 2696, 2696,  627, 1039, 1039, 1039,
2335      1039, 2696, 2696, 1039, 1039,  641,  641,  641, 2696, 2696,
2336
2337      2696,  641, 1056, 1056, 1056, 1056, 2696, 2696, 1056, 1056,
2338       647,  647,  647, 2696, 2696, 2696,  647, 1064, 1064, 1064,
2339      1064, 2696, 2696, 1064, 1064,  652,  652,  652,  652, 2696,
2340       652, 2696,  652, 1072, 1072, 1072, 1072, 2696, 2696, 1072,
2341      1072,  657,  657,  657,  657, 2696,  657, 2696,  657, 1078,
2342      1078, 1078, 1078, 2696, 2696, 1078, 1078,  662,  662,  662,
2343      2696, 2696, 2696,  662, 1090, 1090, 1090, 1090, 2696, 2696,
2344      1090, 1090,  671,  671,  671, 2696, 2696, 2696,  671, 1116,
2345      1116, 1116, 1116, 2696, 2696, 1116, 1116,  687,  687,  687,
2346      2696, 2696, 2696,  687, 1131, 1131, 1131, 1131, 2696, 2696,
2347
2348      1131, 1131,  697,  697,  697, 2696, 2696, 2696,  697, 1139,
2349      1139, 1139, 1139, 2696, 2696, 1139, 1139,  702,  702,  702,
2350      2696, 2696, 2696,  702, 1150, 1150, 1150, 1150, 2696, 2696,
2351      1150, 1150,  710,  710,  710, 2696, 2696, 2696,  710, 1159,
2352      1159, 1159, 1159, 2696, 2696, 1159, 1159,  717,  717,  717,
2353      2696, 2696, 2696,  717, 1171, 1171, 1171, 1171, 2696, 2696,
2354      1171, 1171,  724,  724,  724, 2696, 2696, 2696,  724, 1179,
2355      1179, 1179, 1179, 2696, 2696, 1179, 1179,  729,  729,  729,
2356      2696, 2696, 2696,  729, 1189, 1189, 1189, 1189, 2696, 2696,
2357      1189, 1189,  735,  735,  735, 2696, 2696, 2696,  735, 1197,
2358
2359      1197, 1197, 1197, 2696, 2696, 1197, 1197,  743,  743,  743,
2360      2696, 2696, 2696,  743, 1203, 1203, 1203, 1203, 2696, 2696,
2361      1203, 1203, 1210, 1210, 1210, 1210, 2696, 2696, 1210, 1210,
2362       751,  751,  751, 2696, 2696, 2696,  751, 1218, 1218, 1218,
2363      1218, 2696, 2696, 1218, 1218,  951,  951,  951,  951,  951,
2364       951,  951,  951,  951, 1392, 1392, 1392, 1392, 1392, 1392,
2365      1392, 1392, 1392,  571,  571,  571, 2696, 2696, 2696,  571,
2366       966,  966,  966,  966, 2696, 2696,  966,  966,  997,  997,
2367       997,  997, 2696, 2696,  997,  997,  601,  601,  601, 2696,
2368      2696, 2696,  601, 1007, 1007, 1007, 1007, 2696, 2696, 1007,
2369
2370      1007,  609,  609,  609, 2696, 2696, 2696,  609, 1023, 1023,
2371      1023, 1023, 2696, 2696, 1023, 1023,  621,  621,  621, 2696,
2372      2696, 2696,  621, 1031, 1031, 1031, 1031, 2696, 2696, 1031,
2373      1031,  627,  627,  627, 2696, 2696, 2696,  627,  641,  641,
2374       641, 2696, 2696, 2696,  641, 1056, 1056, 1056, 1056, 2696,
2375      2696, 1056, 1056,  647,  647,  647, 2696, 2696, 2696,  647,
2376      1064, 1064, 1064, 1064, 2696, 2696, 1064, 1064, 1072, 1072,
2377      1072, 1072, 2696, 2696, 1072, 1072,  657,  657,  657, 2696,
2378      2696, 2696,  657, 1078, 1078, 1078, 1078, 2696, 2696, 1078,
2379      1078,  662,  662,  662, 2696, 2696, 2696,  662, 1090, 1090,
2380
2381      1090, 1090, 2696, 2696, 1090, 1090,  671,  671,  671, 2696,
2382      2696, 2696,  671, 1116, 1116, 1116, 1116, 2696, 2696, 1116,
2383      1116,  687,  687,  687, 2696, 2696, 2696,  687, 1131, 1131,
2384      1131, 1131, 2696, 2696, 1131, 1131,  697,  697,  697, 2696,
2385      2696, 2696,  697, 1139, 1139, 1139, 1139, 2696, 2696, 1139,
2386      1139,  702,  702,  702, 2696, 2696, 2696,  702, 1150, 1150,
2387      1150, 1150, 2696, 2696, 1150, 1150,  710,  710,  710, 2696,
2388      2696, 2696,  710, 1159, 1159, 1159, 1159, 2696, 2696, 1159,
2389      1159,  717,  717,  717, 2696, 2696, 2696,  717, 1171, 1171,
2390      1171, 1171, 2696, 2696, 1171, 1171,  724,  724,  724, 2696,
2391
2392      2696, 2696,  724, 1179, 1179, 1179, 1179, 2696, 2696, 1179,
2393      1179,  729,  729,  729, 2696, 2696, 2696,  729, 1189, 1189,
2394      1189, 1189, 2696, 2696, 1189, 1189,  735,  735,  735, 2696,
2395      2696, 2696,  735, 1197, 1197, 1197, 1197, 2696, 2696, 1197,
2396      1197,  743,  743,  743,  743, 2696,  743, 2696,  743, 1203,
2397      1203, 1203, 1203, 2696, 2696, 1203, 1203, 1210, 1210, 1210,
2398      1210, 2696, 2696, 1210, 1210,  751,  751,  751,  751, 2696,
2399       751, 2696,  751, 1218, 1218, 1218, 1218, 2696, 2696, 1218,
2400      1218,  951,  951,  951,  951,  951,  951,  951,  951,  951,
2401      1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,  571,
2402
2403       571,  571, 2696, 2696, 2696,  571,  966,  966,  966,  966,
2404      2696, 2696,  966,  966,  997,  997,  997,  997, 2696, 2696,
2405       997,  997,  601,  601,  601, 2696, 2696, 2696,  601, 1007,
2406      1007, 1007, 1007, 2696, 2696, 1007, 1007,  609,  609,  609,
2407      2696, 2696, 2696,  609, 1023, 1023, 1023, 1023, 2696, 2696,
2408      1023, 1023,  621,  621,  621, 2696, 2696, 2696,  621, 1031,
2409      1031, 1031, 1031, 2696, 2696, 1031, 1031,  627,  627,  627,
2410      2696, 2696, 2696,  627,  641,  641,  641, 2696, 2696, 2696,
2411       641, 1056, 1056, 1056, 1056, 2696, 2696, 1056, 1056,  647,
2412       647,  647, 2696, 2696, 2696,  647, 1064, 1064, 1064, 1064,
2413
2414      2696, 2696, 1064, 1064, 1072, 1072, 1072, 1072, 2696, 2696,
2415      1072, 1072,  657,  657,  657, 2696, 2696, 2696,  657, 1078,
2416      1078, 1078, 1078, 2696, 2696, 1078, 1078,  662,  662,  662,
2417      2696, 2696, 2696,  662, 1090, 1090, 1090, 1090, 2696, 2696,
2418      1090, 1090,  671,  671,  671, 2696, 2696, 2696,  671, 1116,
2419      1116, 1116, 1116, 2696, 2696, 1116, 1116,  687,  687,  687,
2420      2696, 2696, 2696,  687, 1131, 1131, 1131, 1131, 2696, 2696,
2421      1131, 1131,  697,  697,  697, 2696, 2696, 2696,  697, 1139,
2422      1139, 1139, 1139, 2696, 2696, 1139, 1139,  702,  702,  702,
2423      2696, 2696, 2696,  702, 1150, 1150, 1150, 1150, 2696, 2696,
2424
2425      1150, 1150,  710,  710,  710, 2696, 2696, 2696,  710, 1159,
2426      1159, 1159, 1159, 2696, 2696, 1159, 1159,  717,  717,  717,
2427       717, 2696,  717, 2696,  717, 1171, 1171, 1171, 1171, 2696,
2428      2696, 1171, 1171,  724,  724,  724, 2696, 2696, 2696,  724,
2429      1179, 1179, 1179, 1179, 2696, 2696, 1179, 1179,  729,  729,
2430       729,  729, 2696,  729, 2696,  729, 1189, 1189, 1189, 1189,
2431      2696, 2696, 1189, 1189,  735,  735,  735, 2696, 2696, 2696,
2432       735, 1197, 1197, 1197, 1197, 2696, 2696, 1197, 1197, 1203,
2433      1203, 1203, 1203, 2696, 2696, 1203, 1203, 1210, 1210, 1210,
2434      1210, 2696, 2696, 1210, 1210, 1218, 1218, 1218, 1218, 2696,
2435
2436      2696, 1218, 1218,  951,  951,  951,  951,  951,  951,  951,
2437       951,  951, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
2438      1392,  571,  571,  571,  571, 2696,  571, 2696,  571,  966,
2439       966,  966,  966, 2696, 2696,  966,  966,  997,  997,  997,
2440       997, 2696, 2696,  997,  997,  601,  601,  601, 2696, 2696,
2441      2696,  601, 1007, 1007, 1007, 1007, 2696, 2696, 1007, 1007,
2442       609,  609,  609, 2696, 2696, 2696,  609, 1023, 1023, 1023,
2443      1023, 2696, 2696, 1023, 1023,  621,  621,  621,  621, 2696,
2444       621, 2696,  621, 1031, 1031, 1031, 1031, 2696, 2696, 1031,
2445      1031,  627,  627,  627,  627, 2696,  627, 2696,  627,  641,
2446
2447       641,  641,  641, 2696,  641, 2696,  641, 1056, 1056, 1056,
2448      1056, 2696, 2696, 1056, 1056,  647,  647,  647,  647, 2696,
2449       647, 2696,  647, 1064, 1064, 1064, 1064, 2696, 2696, 1064,
2450      1064, 1072, 1072, 1072, 1072, 2696, 2696, 1072, 1072,  657,
2451       657,  657,  657, 2696,  657, 2696,  657, 1078, 1078, 1078,
2452      1078, 2696, 2696, 1078, 1078,  662,  662,  662, 2696, 2696,
2453      2696,  662,  671,  671,  671, 2696, 2696, 2696,  671, 1116,
2454      1116, 1116, 1116, 2696, 2696, 1116, 1116,  687,  687,  687,
2455      2696, 2696, 2696,  687,  697,  697,  697, 2696, 2696, 2696,
2456       697, 1139, 1139, 1139, 1139, 2696, 2696, 1139, 1139,  702,
2457
2458       702,  702, 2696, 2696, 2696,  702,  710,  710,  710, 2696,
2459      2696, 2696,  710, 1159, 1159, 1159, 1159, 2696, 2696, 1159,
2460      1159,  717,  717,  717, 2696, 2696, 2696,  717, 1171, 1171,
2461      1171, 1171, 2696, 2696, 1171, 1171,  724,  724,  724, 2696,
2462      2696, 2696,  724, 1179, 1179, 1179, 1179, 2696, 2696, 1179,
2463      1179, 1189, 1189, 1189, 1189, 2696, 2696, 1189, 1189,  735,
2464       735,  735, 2696, 2696, 2696,  735, 1197, 1197, 1197, 1197,
2465      2696, 2696, 1197, 1197, 1203, 1203, 1203, 1203, 2696, 2696,
2466      1203, 1203, 1210, 1210, 1210, 1210, 2696, 2696, 1210, 1210,
2467       951,  951,  951,  951,  951,  951,  951,  951,  951, 1392,
2468
2469      1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,  966,  966,
2470       966,  966, 2696, 2696,  966,  966,  997,  997,  997,  997,
2471      2696, 2696,  997,  997,  601,  601,  601, 2696, 2696, 2696,
2472       601,  609,  609,  609, 2696, 2696, 2696,  609, 1023, 1023,
2473      1023, 1023, 2696, 2696, 1023, 1023, 1031, 1031, 1031, 1031,
2474      2696, 2696, 1031, 1031, 1056, 1056, 1056, 1056, 2696, 2696,
2475      1056, 1056, 1064, 1064, 1064, 1064, 2696, 2696, 1064, 1064,
2476      1078, 1078, 1078, 1078, 2696, 2696, 1078, 1078,  662,  662,
2477       662, 2696, 2696, 2696,  662,  671,  671,  671, 2696, 2696,
2478      2696,  671, 1116, 1116, 1116, 1116, 2696, 2696, 1116, 1116,
2479
2480       687,  687,  687, 2696, 2696, 2696,  687,  697,  697,  697,
2481      2696, 2696, 2696,  697, 1139, 1139, 1139, 1139, 2696, 2696,
2482      1139, 1139,  702,  702,  702, 2696, 2696, 2696,  702,  710,
2483       710,  710, 2696, 2696, 2696,  710,  717,  717,  717, 2696,
2484      2696, 2696,  717, 1171, 1171, 1171, 1171, 2696, 2696, 1171,
2485      1171,  724,  724,  724, 2696, 2696, 2696,  724, 1179, 1179,
2486      1179, 1179, 2696, 2696, 1179, 1179, 1189, 1189, 1189, 1189,
2487      2696, 2696, 1189, 1189,  735,  735,  735,  735, 2696,  735,
2488      2696,  735, 1197, 1197, 1197, 1197, 2696, 2696, 1197, 1197,
2489      1203, 1203, 1203, 1203, 2696, 2696, 1203, 1203, 1210, 1210,
2490
2491      1210, 1210, 2696, 2696, 1210, 1210,  951,  951,  951,  951,
2492       951,  951,  951,  951,  951, 1392, 1392, 1392, 1392, 1392,
2493      1392, 1392, 1392, 1392,  966,  966,  966,  966, 2696, 2696,
2494       966,  966,  997,  997,  997,  997, 2696, 2696,  997,  997,
2495       601,  601,  601, 2696, 2696, 2696,  601,  609,  609,  609,
2496       609, 2696,  609, 2696,  609, 2364, 2364, 2364, 2364, 2364,
2497      2364, 2364, 2364, 2364, 2365, 2365, 2365, 2365, 2365, 2365,
2498      2365, 2365, 2365, 2408, 2408, 2408, 2408, 2408, 2408, 2408,
2499      2408, 2408, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411,
2500      2411, 2439, 2439, 2439, 2439, 2439, 2439, 2439, 2439, 2439,
2501
2502      2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,  221,
2503      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
2504      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
2505      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
2506      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
2507      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
2508      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
2509      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
2510      2696, 2696
2511     } ;
2512
2513 static yyconst flex_int16_t yy_chk[9683] =
2514     {   0,
2515         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
2516         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
2517         4,   10,    0,    5,    0,    9,    6,    0,   10,    7,
2518         8,    8,    8,  226,   11,   13,   13,   12,   14,   14,
2519        13,   13,  299,   14,   14,  227,    8,   17,   17,  226,
2520        13,   15,   15,   14,   15,  230,   15,   16,   16,  264,
2521        16,  227,   16,   18,   18,  264,   15,   19,   19,   19,
2522       333,  230,   16,   20,   20,   20,   23,   23,   23,   24,
2523        24,   24,  582,   19,   25,   25,   25,  299,  582,   20,
2524       327,   17,   23,  299,  582,   24,  224,  224,  224,  327,
2525
2526        25,  225,  225,  225,  229,  229,  229,   18,   21,   21,
2527        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
2528        21,   21,   21,  333,   21,   21,   21,   21,   21,   26,
2529        26,   26,   27,   27,   27,   28,   28,   28,  259,   29,
2530        29,   29,   30,   30,   30,   26,  330, 1445,   27,  248,
2531       253,   28,  259,   21,   21,   29,  330,  269,   30,   31,
2532        31,   31,  250,  250,  250,  248,  253,  257,  257,  257,
2533       266,  266,  266,  269, 1448,   31,   21,   22,   22,   22,
2534        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
2535        22,   22,  348,   22,   22,   22,   22,   22,   32,   32,
2536
2537        32,   33,   33,   33,   34,   34,   34,  248,   35,   35,
2538        35,   36,   36,   36,   32,  260,  335,   33,  335, 1455,
2539        34,  360,   22,   22,   35,  260,  261,   36,   37,   37,
2540        37,   38,   38,   38,   39,   39,   39,   40,   40,   40,
2541        41,   41,   41,  348,   37,   22,  410,   38,  279,  410,
2542        39,  329,  290,   40,  260,  261,   41,   42,   42,   42,
2543       260,  273,  273,  273,  279,  262,  260,  261,  290,  261,
2544       260,  261,  360,   42,   43,   43,   43,   43,   43,   43,
2545        43,   43,   43,   43,   43,   43,   43,   43,   43,  329,
2546        43,   43,   43,   43,   43,   45,   45,   45,   46,   46,
2547
2548        46,   53,   53,   53,  262,  294, 1456,   49,   49,  294,
2549       306,   45,   49,  294,   46, 1457,  262,   53,  262,   43,
2550        43,  396,   49,  276,  276,  276,  306,   43,   44,   44,
2551        44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
2552        44,   44,   44,  326,   44,   44,   44,   44,   44, 1461,
2553       326,   49,  406,   50,   50,   54,   54,   54,   50,   55,
2554        55,   55,   56,   56,   56,  287,  287,  287,   50,  396,
2555       464,   54,  406,   44,   44,   55,  564,  464,   56,  564,
2556      1464,   44,   47,   47,   47,   47,   47,   47,   47,   47,
2557        47,   47,   47,   47,   47,   47,   47,   50,   47,   47,
2558
2559        47,   47,   47,   57,   57,   57,   58,   58,   58,   59,
2560        59,   59,  296,   60,   60,   60,   63,   63,   63,   57,
2561       318,  340,   58,  274,  284,   59,  296,   47,   47,   60,
2562       274,  284,   63, 1468, 1477,   47,  318,  340,   47,  274,
2563       284,  298,  298,  298,   47,   48,   48,   48,   48,   48,
2564        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
2565       519,   48,   48,   48,   48,   48,   64,   64,   64,   67,
2566        67,   67,   68,   68,   68,  397,   69,   69,   69,   70,
2567        70,   70,   64,  353,  365,   67,  313,  371,   68,  376,
2568        48,   48,   69,  313,  371,   70, 1479,  519,   48,  353,
2569
2570       365,   48,  313,  371,  240,  376, 1480,   48,   51,   51,
2571        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2572        51,   51,   51,  397,   51,   51,   51,   51,   51,   71,
2573        71,   71,   72,   72,   72,   73,   73,   73,  398,   74,
2574        74,   74,   75,   75,   75,   71,  240,  387,   72,  403,
2575       382,   73,  240,   51,   51,   74,  240,  382,   75, 1488,
2576       452,  240,   51,  387,   51,  403,  382,   51,  303,  303,
2577       303,  452,   51,   51,   52,   52,   52,   52,   52,   52,
2578        52,   52,   52,   52,   52,   52,   52,   52,   52,  398,
2579        52,   52,   52,   52,   52,   76,   76,   76,   77,   77,
2580
2581        77,   78,   78,   78,  456,   79,   79,   79,   80,   80,
2582        80,   76, 1391,  888,   77,  415,  411,   78,  888,   52,
2583        52,   79,  415, 1491,   80,  312,  312,  312,   52,  411,
2584        52,  415,  482,   52,  315,  315,  315, 1391,   52,   52,
2585        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
2586        61,   61,   61,   61,   61,  456,   61,   61,   61,   61,
2587        61,   81,   81,   81,   82,   82,   82,   83,   83,   83,
2588       412,   84,   84,   84,   85,   85,   85,   81, 1492,  482,
2589        82,  412,  412,   83,  478,   61,   61,   84,  420,  431,
2590        85,  478,   61,  323,  323,  323,  431,   61,  337,  337,
2591
2592       337,  346,  346,  346,  420,  431,   61,   62,   62,   62,
2593        62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
2594        62,   62,  555,   62,   62,   62,   62,   62,   86,   86,
2595        86,   87,   87,   87,   88,   88,   88,  555,   89,   89,
2596        89,   90,   90,   90,   86,  577,  436,   87,  577, 1496,
2597        88, 1503,   62,   62,   89,  447,  442,   90, 1504,   62,
2598      1505,  331,  436,  442,   62,  350,  350,  350,  358,  358,
2599       358,  447,  442,   62,   65,   65,   65,   65,   65,   65,
2600        65,   65,   65,   65,   65,   65,   65,   65,   65,  331,
2601        65,   65,   65,   65,   65,   91,   91,   91,   92,   92,
2602
2603        92,   93,   93,   93,  331,   94,   94,   94,   95,   95,
2604        95,   91,  461,  474,   92,  586, 1506,   93,  586,   65,
2605        65,   94,  506, 1509,   95,  362,  362,  362,  461,  474,
2606        65,  370,  370,  370,  373,  373,  373,  521,   65,   66,
2607        66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
2608        66,   66,   66,   66, 1513,   66,   66,   66,   66,   66,
2609        96,   96,   96,   99,   99,   99,  100,  100,  100,  506,
2610       101,  101,  101,  102,  102,  102,   96,  487,  498,   99,
2611      1516, 1518,  100,  542,   66,   66,  101, 1520,  521,  102,
2612       381,  381,  381,  487,  498,   66,  384,  384,  384,  395,
2613
2614       395,  395, 1521,   66,   97,   97,   97,   97,   97,   97,
2615        97,   97,   97,   97,   97,   97,   97,   97,   97, 1522,
2616        97,   97,   97,   97,   97,  103,  103,  103,  104,  104,
2617       104,  105,  105,  105,  542,  106,  106,  106,  400,  400,
2618       400,  103,  511,  526,  104, 1525,  493,  105,  581,   97,
2619        97,  106,  581,  493,   97,  414,  414,  414,  511,  526,
2620        97,  467,  493,   97,   98,   98,   98,   98,   98,   98,
2621        98,   98,   98,   98,   98,   98,   98,   98,   98, 1527,
2622        98,   98,   98,   98,   98,  109,  109,  109,  110,  110,
2623       110,  111,  111,  111, 1529,  112,  112,  112,  417,  417,
2624
2625       417,  109,  520,  536,  110,  547,  531,  111,  467,   98,
2626        98,  112,  467,  531,   98,  430,  430,  430,  605,  536,
2627        98,  547,  531,   98,  107,  107,  107,  107,  107,  107,
2628       107,  107,  107,  107,  107,  107,  107,  107,  107,  520,
2629       107,  107,  107,  107,  107,  113,  113,  113,  114,  114,
2630       114,  115,  115,  115,  605,  116,  116,  116,  119,  119,
2631       119,  113, 1534, 1539,  114,  583,  587,  115,  669,  107,
2632       107,  116,  669, 1543,  119,  433,  433,  433,  583,  587,
2633       107,  441,  441,  441,  444,  444,  444,  454,  454,  454,
2634       107,  108,  108,  108,  108,  108,  108,  108,  108,  108,
2635
2636       108,  108,  108,  108,  108,  108, 1544,  108,  108,  108,
2637       108,  108,  120,  120,  120,  123,  123,  123,  124,  124,
2638       124, 1546,  127,  127,  127,  128,  128,  128,  120,  589,
2639       757,  123,  589,  591,  124, 1558,  108,  108,  127,  591,
2640      1556,  128,  458,  458,  458,  591,  757,  108,  466,  466,
2641       466,  471,  471,  471,  480,  480,  480,  108,  117,  117,
2642       117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
2643       117,  117,  117, 1556,  117,  117,  117,  117,  117,  129,
2644       129,  129,  130,  130,  130,  131,  131,  131, 1561,  132,
2645       132,  132,  133,  133,  133,  129,  593, 1562,  130,  593,
2646
2647       594,  131, 1563,  117,  117,  132,  594, 1564,  133,  484,
2648       484,  484,  594, 1566,  117,  492,  492,  492,  117,  118,
2649       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
2650       118,  118,  118,  118, 1567,  118,  118,  118,  118,  118,
2651       134,  134,  134,  137,  137,  137,  138,  138,  138, 1569,
2652       141,  141,  141,  142,  142,  142,  134,  664, 1570,  137,
2653       664,  595,  138, 1571,  118,  118,  141,  595, 1575,  142,
2654       495,  495,  495,  595, 1577,  118,  504,  504,  504,  118,
2655       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
2656       121,  121,  121,  121,  121, 1580,  121,  121,  121,  121,
2657
2658       121,  145,  145,  145,  146,  146,  146,  149,  149,  149,
2659      1581,  150,  150,  150,  151,  151,  151,  145,  954, 1582,
2660       146, 1555,  954,  149, 1221,  121,  121,  150, 1554, 1584,
2661       151,  508,  508,  508,  518,  518,  518,  523,  523,  523,
2662       121,  530,  530,  530, 1221, 1554,  121,  122,  122,  122,
2663       122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
2664       122,  122, 1555,  122,  122,  122,  122,  122,  152,  152,
2665       152,  153,  153,  153,  154,  154,  154,  982,  155,  155,
2666       155,  156,  156,  156,  152, 1586, 1587,  153, 1589,  982,
2667       154, 1591,  122,  122,  155, 1594, 1595,  156,  533,  533,
2668
2669       533,  540,  540,  540,  544,  544,  544,  122,  552,  552,
2670       552, 1597, 1598,  122,  125,  125,  125,  125,  125,  125,
2671       125,  125,  125,  125,  125,  125,  125,  125,  125, 1599,
2672       125,  125,  125,  125,  125,  159,  159,  159,  160,  160,
2673       160,  161,  161,  161, 1596,  162,  162,  162, 1601,  553,
2674      1600,  159, 1596, 1607,  160, 1608,  553,  161, 1600,  125,
2675       125,  162,  125,  619,  125,  553,  554,  554,  554,  619,
2676       125,  563,  563,  563, 1611,  619,  125, 1622, 1623,  125,
2677       126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
2678       126,  126,  126,  126,  126, 1628,  126,  126,  126,  126,
2679
2680       126,  163,  163,  163,  164,  164,  164,  165,  165,  165,
2681      1629,  166,  166,  166,  603,  603,  603,  163, 1630,  635,
2682       164,  638,  639,  165,  871,  126,  126,  166,  126,  563,
2683       126,  603,  635,  871,  638,  639,  126,  760,  760,  760,
2684       871,  760,  126, 1634, 1635,  126,  135,  135,  135,  135,
2685       135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
2686       135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
2687       135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
2688       135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
2689       135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
2690
2691       135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
2692       135,  135,  135,  135,  135,  135,  135,  135,  139,  139,
2693       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
2694       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
2695       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
2696       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
2697       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
2698       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
2699       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
2700       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
2701
2702       143,  143,  143,  143,  143, 1641,  143,  143,  143,  143,
2703       143,  169,  169,  169,  170,  170,  170,  171,  171,  171,
2704       993,  172,  172,  172,  611,  611,  611,  169, 1648, 1649,
2705       170, 1650,  993,  171, 1654,  143,  143,  172, 1660, 1664,
2706       143,  611,  969,  969,  969, 1667,  143,  144,  144,  144,
2707       144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
2708       144,  144, 1669,  144,  144,  144,  144,  144,  173,  173,
2709       173,  174,  174,  174,  175,  175,  175, 1026,  176,  176,
2710       176,  628,  628,  628,  173, 1450, 1671,  174, 1673, 1026,
2711       175, 1450,  144,  144,  176, 1450, 1674,  144,  628, 1450,
2712
2713       772,  772,  772,  144,  147,  147,  147,  147,  147,  147,
2714       147,  147,  147,  147,  147,  147,  147,  147,  147, 1675,
2715       147,  147,  147,  147,  147,  179,  179,  179,  180,  180,
2716       180,  183,  183,  183, 1678,  184,  184,  184,  185,  185,
2717       185,  179, 1680, 1685,  180, 1687, 1694,  183, 1695,  147,
2718       147,  184, 1696,  147,  185,  791,  791,  791, 1698, 1709,
2719       147, 1712,  147,  772, 1711, 1709,  830,  830,  830,  147,
2720       148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
2721       148,  148,  148,  148,  148, 1717,  148,  148,  148,  148,
2722       148,  186,  186,  186,  187,  187,  187,  188,  188,  188,
2723
2724      1718,  189,  189,  189,  190,  190,  190,  186, 1722, 1711,
2725       187, 1723, 1724,  188, 1729,  148,  148,  189,  791,  148,
2726       190, 1735, 1737,  802,  802,  802,  148,  802,  148,  830,
2727       802,  836,  836,  836, 1738,  148,  157,  157,  157,  157,
2728       157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
2729       157, 1741,  157,  157,  157,  157,  157,  193,  193,  193,
2730       194,  194,  194,  195,  195,  195, 1744,  196,  196,  196,
2731       197,  197,  197,  193, 1748, 1749,  194, 1750, 1751,  195,
2732      1752,  157,  157,  196, 1753, 1754,  197,  157,  810,  810,
2733       810, 1755,  810, 1756,  836,  810,  989,  989,  989, 1757,
2734
2735      1762,  157,  158,  158,  158,  158,  158,  158,  158,  158,
2736       158,  158,  158,  158,  158,  158,  158, 1776,  158,  158,
2737       158,  158,  158,  198,  198,  198,  199,  199,  199,  200,
2738       200,  200, 1777,  203,  203,  203,  204,  204,  204,  198,
2739      1780, 1781,  199, 1778, 1782,  200, 1786,  158,  158,  203,
2740      1792, 1778,  204,  158,  826,  826,  826, 1779,  826, 1793,
2741      1794,  826, 1235, 1235, 1235, 1779, 1799,  158,  167,  167,
2742       167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
2743       167,  167,  167, 1803,  167,  167,  167,  167,  167,  207,
2744       207,  207,  208,  208,  208,  209,  209,  209, 1710,  210,
2745
2746       210,  210,  211,  211,  211,  207, 1451, 1804,  208, 1805,
2747      1807,  209, 1451,  167,  167,  210, 1451, 1810,  211,  167,
2748      1451, 1811,  167,  841,  841,  841, 1814,  841, 1815, 1710,
2749       841, 1818, 1825,  167,  168,  168,  168,  168,  168,  168,
2750       168,  168,  168,  168,  168,  168,  168,  168,  168, 1827,
2751       168,  168,  168,  168,  168,  212,  212,  212,  213,  213,
2752       213,  214,  214,  214, 1812,  217,  217,  217,  218,  218,
2753       218,  212, 1812, 1840,  213, 1853, 1861,  214, 1813,  168,
2754       168,  217, 1845,  324,  218,  168, 1813,  325,  168, 1237,
2755      1237, 1237, 1844,  324, 1862, 1866,  332,  325, 1868,  168,
2756
2757       177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
2758       177,  177,  177,  177,  177, 1880,  177,  177,  177,  177,
2759       177,  324,  643,  643,  643,  325, 1881,  324, 1845, 1882,
2760       324,  648,  648,  648, 1844, 1237,  324,  324,  325,  643,
2761       332,  332,  325,  332, 1883,  177,  177, 1884,  648,  332,
2762       332,  177, 1240, 1240, 1240, 1885,  177,  178,  178,  178,
2763       178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
2764       178,  178, 1886,  178,  178,  178,  178,  178,  653,  653,
2765       653,  665,  665,  665,  674,  674,  674,  676,  676,  676,
2766       691,  691,  691, 1887, 1888,  653, 1889, 1895,  665, 1897,
2767
2768      1910,  674,  178,  178,  676, 1911, 1912,  691,  178, 1243,
2769      1243, 1243, 1913,  178,  181,  181,  181,  181,  181,  181,
2770       181,  181,  181,  181,  181,  181,  181,  181,  181, 1914,
2771       181,  181,  181,  181,  181,  699,  699,  699,  704,  704,
2772       704,  726,  726,  726,  748,  748,  748,  752,  752,  752,
2773      1915, 1916,  699, 1918, 1919,  704, 1924, 1925,  726,  181,
2774       181,  748, 1927, 1928,  752,  181, 1929, 1930,  181,  846,
2775       846,  846, 1937,  846, 1938, 1939,  846, 1940, 1941,  181,
2776       182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
2777       182,  182,  182,  182,  182, 1942,  182,  182,  182,  182,
2778
2779       182,  770,  770,  770,  771,  771,  771, 1943, 1944,  798,
2780       798,  798,  799,  799,  799,  801,  801,  801, 1946,  770,
2781      1966, 1970,  771, 1971, 1972,  182,  182,  798, 1975, 1979,
2782       799,  182,  801, 1980,  182,  851,  851,  851, 1961,  851,
2783      1981, 1982,  851, 1983, 1984,  182,  191,  191,  191,  191,
2784       191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
2785       191,  771,  191,  191,  191,  191,  191,  805,  805,  805,
2786      1961,  799,  806,  806,  806, 1985,  809,  809,  809,  811,
2787       811,  811,  817,  817,  817,  805, 1986,  813,  813,  813,
2788       806,  191,  191,  809, 1987, 1988,  811, 1962, 1990,  191,
2789
2790       817,  191, 1991,  191,  813, 1252, 1252, 1252, 1277, 1277,
2791      1277,  191,  192,  192,  192,  192,  192,  192,  192,  192,
2792       192,  192,  192,  192,  192,  192,  192, 1996,  192,  192,
2793       192,  192,  192, 1997, 1962,  806,  823,  823,  823, 1998,
2794      2000,  824,  824,  824, 2004, 2005,  818,  818,  818,  825,
2795       825,  825, 2008, 2012,  823, 2013, 2015,  192,  192,  824,
2796      1288, 1288, 1288, 2018,  818,  192,  825,  192, 2019,  192,
2797      1289, 1289, 1289, 1406, 1406, 1406, 2020,  192,  201,  201,
2798       201,  201,  201,  201,  201,  201,  201,  201,  201,  201,
2799       201,  201,  201,  818,  201,  201,  201,  201,  201,  828,
2800
2801       828,  828, 2021, 2023,  824, 2026, 2028,  829,  829,  829,
2802       840,  840,  840,  843,  843,  843, 1289,  828,  844,  844,
2803       844, 2050, 2051,  201,  201,  829, 2052,  840,  845,  845,
2804       845,  843, 2045,  863,  863,  863,  844,  863, 2046, 2053,
2805       863, 1408, 1408, 1408,  829,  845,  201,  202,  202,  202,
2806       202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
2807       202,  202, 2047,  202,  202,  202,  202,  202,  848,  848,
2808       848, 2045,  849,  849,  849, 2046, 2059,  850,  850,  850,
2809       853,  853,  853,  844, 2060, 2061,  848,  854,  854,  854,
2810       849, 2062,  202,  202,  850,  857,  857,  857,  853,  873,
2811
2812       873,  873, 2063,  873, 2047,  854,  873,  876,  876,  876,
2813      2064,  876, 2065,  857,  876,  202,  205,  205,  205,  205,
2814       205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
2815       205, 2066,  205,  205,  205,  205,  205,  849,  858,  858,
2816       858,  862,  862,  862, 1410, 1410, 1410,  854,  866,  866,
2817       866,  867,  867,  867, 2067, 2068,  858, 2070,  862, 2071,
2818      2075,  205,  205,  891,  891,  891,  866,  891, 2081,  867,
2819       891, 2082,  205,  206,  206,  206,  206,  206,  206,  206,
2820       206,  206,  206,  206,  206,  206,  206,  206, 2086,  206,
2821       206,  206,  206,  206, 2089,  872,  872,  872,  875,  875,
2822
2823       875, 2097,  858,  877,  877,  877,  885,  885,  885, 2098,
2824      2099,  867,  872, 2123, 2124,  875, 2119, 2120,  206,  206,
2825       877,  899,  899,  899,  885,  899, 2125, 2128,  899,  206,
2826       215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
2827       215,  215,  215,  215,  215, 2119,  215,  215,  215,  215,
2828       215,  890,  890,  890,  892,  892,  892, 2056, 2120,  895,
2829       895,  895, 2129,  886,  886,  886, 2131, 2056,  890, 2132,
2830      2056,  892,  896,  896,  896,  215,  215,  895,  898,  898,
2831       898,  886, 1412, 1412, 1412, 2135,  215,  904,  904,  904,
2832       896,  904, 2136, 2137,  904,  898, 2138, 2140,  215,  216,
2833
2834       216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
2835       216,  216,  216,  216, 2141,  216,  216,  216,  216,  216,
2836       886, 2142, 2143,  896,  900,  900,  900, 2107,  901,  901,
2837       901,  903,  903,  903,  908,  908,  908, 2107,  909,  909,
2838       909, 2121,  900, 2107,  216,  216,  901, 2147,  903,  910,
2839       910,  910,  908, 2155, 2156,  216,  909,  911,  911,  911,
2840       912,  912,  912,  913,  913,  913,  910,  216,  258, 2157,
2841      2130,  914,  914,  914,  911,  258, 2161,  912,  916,  916,
2842       916,  913, 2121, 2130,  258,  258, 2169, 2171,  901,  914,
2843       917,  917,  917,  909, 2179,  916, 2180, 2181,  918,  918,
2844
2845       918, 1357, 1357, 1357,  919,  919,  919,  917, 2182,  920,
2846       920,  920,  258,  258,  258,  918, 2183, 2184,  912,  258,
2847       258,  919,  258,  258, 2194, 2133,  258,  920,  258,  258,
2848       258,  914,  921,  921,  921,  923,  923,  923, 2133, 2190,
2849       917,  924,  924,  924, 2189,  924, 2195, 1357,  924, 2199,
2850       921, 2200,  923, 2201,  917,  925,  925,  925,  926,  926,
2851       926, 2202,  919,  927,  927,  927,  928,  928,  928,  921,
2852       929,  929,  929,  925, 2190, 2203,  926,  930,  930,  930,
2853       927, 2204, 2205,  928,  931,  931,  931,  929,  936,  936,
2854       936, 2189,  937,  937,  937,  930,  940,  940,  940,  941,
2855
2856       941,  941,  931,  942,  942,  942,  936,  946,  946,  946,
2857       937, 2206, 2208,  926,  940, 2209,  928,  941, 2210, 2211,
2858       942,  943,  943,  943,  946,  943, 2212, 2213,  943, 2214,
2859       928,  944,  944,  944,  945,  945,  945,  947,  947,  947,
2860      2057,  947, 2215, 2222,  947,  949,  949,  949, 2226,  944,
2861      2057, 2227,  945, 2057,  931,  937,  950,  950,  950,  965,
2862       965,  965,  941,  949,  966,  966,  966,  968,  968,  968,
2863       995,  995,  995, 2228,  950, 2229, 2236,  965,  996,  996,
2864       996, 2239,  966, 2246, 2247,  968, 2248,  995,  997,  997,
2865       997,  999,  999,  999,  945, 2249,  996, 2108, 1000, 1000,
2866
2867      1000, 1001, 1001, 1001, 2250, 1001,  997, 2108, 1001,  999,
2868      1004, 1004, 1004, 2108,  968, 1000, 1006, 1006, 1006,  950,
2869      1007, 1007, 1007, 2241, 1009, 1009, 1009, 1004, 1011, 1011,
2870      1011, 2242, 1011, 2241, 1006, 1011, 2251, 2260, 1007, 2244,
2871       999, 2242, 1009, 1014, 1014, 1014, 1015, 1015, 1015, 2244,
2872      1015, 2261, 2262, 1015, 2263, 1016, 1016, 1016, 2264, 2265,
2873      1014, 1017, 1017, 1017, 1020, 1020, 1020, 1022, 1022, 1022,
2874      1004, 1009, 1016, 1018, 1018, 1018, 2266, 1018, 1017, 2267,
2875      1018, 1020, 1023, 1023, 1023, 1022, 1025, 1025, 1025, 1028,
2876      1028, 1028, 1030, 1030, 1030, 1031, 1031, 1031, 2253, 2270,
2877
2878      1023, 1033, 1033, 1033, 1025, 2271, 1028, 1034, 1034, 1034,
2879      1030, 1034, 2273, 1031, 1034, 1038, 1038, 1038, 2274, 1033,
2880      1039, 1039, 1039, 1041, 1041, 1041, 2275, 1051, 1051, 1051,
2881      2245, 1051, 2253, 1038, 1051, 1055, 1055, 1055, 1039, 2277,
2882      2245, 1041, 1056, 1056, 1056, 1025, 2284, 2285, 1033, 1058,
2883      1058, 1058, 2286, 1055, 1059, 1059, 1059, 2288, 1059, 2294,
2884      1056, 1059, 1063, 1063, 1063, 2295, 2296, 1058, 1064, 1064,
2885      1064, 1066, 1066, 1066, 1067, 1067, 1067, 2297, 1067, 2298,
2886      1063, 1067, 1070, 1070, 1070, 2299, 1064, 2300, 2301, 1066,
2887      1071, 1071, 1071, 1072, 1072, 1072, 1074, 1074, 1074, 1070,
2888
2889      1075, 1075, 1075, 1076, 1076, 1076, 2302, 2303, 1071, 1058,
2890      2305, 1072, 2306, 2318, 1074, 2310, 2319, 1075, 2320, 2321,
2891      1076, 1077, 1077, 1077, 1078, 1078, 1078, 1080, 1080, 1080,
2892      2322, 1066, 2323, 1083, 1083, 1083, 1084, 1084, 1084, 1077,
2893      1084, 2324, 1078, 1084, 2325, 1080, 1089, 1089, 1089, 1076,
2894      1083, 1090, 1090, 1090, 1092, 1092, 1092, 2310, 2329, 1099,
2895      1099, 1099, 1074, 1099, 1089, 2330, 1099, 2331, 2332, 1090,
2896      2333, 2334, 1092, 1102, 1102, 1102, 1103, 1103, 1103, 2338,
2897      1103, 2339, 2340, 1103, 1106, 1106, 1106, 1107, 1107, 1107,
2898      1102, 1107, 1080, 2343, 1107, 1115, 1115, 1115, 1116, 1116,
2899
2900      1116, 1106, 1118, 1118, 1118, 1123, 1123, 1123, 2348, 1123,
2901      2349, 2350, 1123, 1115, 2351, 2352, 1116, 2353, 1092, 2354,
2902      1118, 1126, 1126, 1126, 1127, 1127, 1127, 2355, 1127, 2356,
2903      2357, 1127, 1130, 1130, 1130, 1131, 1131, 1131, 1126, 1133,
2904      1133, 1133, 1135, 1135, 1135, 2358, 1135, 2359, 2366, 1135,
2905      1130, 2369, 2370, 1131, 1138, 1138, 1138, 1133, 1139, 1139,
2906      1139, 1141, 1141, 1141, 1149, 1149, 1149, 2360, 1118, 1150,
2907      1150, 1150, 1138, 1143, 1143, 1143, 1139, 1143, 2363, 1141,
2908      1143, 2373, 1149, 1152, 1152, 1152, 2362, 1150, 2375, 2363,
2909      1133, 1153, 1153, 1153, 2376, 1154, 1154, 1154, 2378, 1154,
2910
2911      2362, 1152, 1154, 1155, 1155, 1155, 2379, 2382, 1153, 1156,
2912      1156, 1156, 2360, 1156, 2383, 2384, 1156, 1158, 1158, 1158,
2913      1155, 1159, 1159, 1159, 1163, 1163, 1163, 1141, 1161, 1161,
2914      1161, 1167, 1167, 1167, 2388, 1158, 1164, 1164, 1164, 1159,
2915      1164, 1163, 1152, 1164, 2396, 2398, 1161, 2400, 1167, 1168,
2916      1168, 1168, 2402, 1168, 2409, 2409, 1168, 1170, 1170, 1170,
2917      1171, 1171, 1171, 1173, 1173, 1173, 1175, 1175, 1175, 2407,
2918      1175, 2410, 2412, 1175, 2414, 1170, 2415, 2416, 1171, 2417,
2919      2426, 1173, 1178, 1178, 1178, 1179, 1179, 1179, 1181, 1181,
2920      1181, 1182, 1182, 1182, 1161, 1183, 1183, 1183, 2428, 1183,
2921
2922      1178, 2431, 1183, 1179, 2386, 2425, 1181, 2387, 1182, 2407,
2923      1186, 1186, 1186, 1187, 1187, 1187, 2386, 1187, 2433, 2387,
2924      1187, 1188, 1188, 1188, 2425, 2393, 1173, 1186, 1189, 1189,
2925      1189, 1191, 1191, 1191, 1193, 1193, 1193, 2393, 2394, 1188,
2926      1196, 1196, 1196, 1197, 1197, 1197, 1189, 1181, 2411, 1191,
2927      2394, 1193, 1199, 1199, 1199, 1202, 1202, 1202, 1196, 2411,
2928      2427, 1197, 1203, 1203, 1203, 1205, 1205, 1205, 2408, 2439,
2929      1199, 2430, 2432, 1202, 1206, 1206, 1206, 2440, 1206, 2427,
2930      1203, 1206, 2408, 1205, 1209, 1209, 1209, 1210, 1210, 1210,
2931      2430, 2432, 1191, 1212, 1212, 1212, 1213, 1213, 1213, 2441,
2932
2933      1213, 2443, 1209, 1213, 2444, 1210, 1217, 1217, 1217, 2445,
2934      2446, 1212, 1199, 1218, 1218, 1218, 2453, 2454, 1205, 1220,
2935      1220, 1220, 2455, 2456, 1217, 1222, 1222, 1222, 1229, 1229,
2936      1229, 1218, 1255, 1255, 1255, 2457, 2458, 1220, 1256, 1256,
2937      1256, 2461, 1256, 1222, 1222, 1256, 1229, 2462, 2463, 1255,
2938      2464, 2465, 1212, 1257, 1257, 1257, 1258, 1258, 1258, 1259,
2939      1259, 1259, 2466, 1259, 2468, 2470, 1259, 1262, 1262, 1262,
2940      2472, 1257, 2482, 1258, 1264, 1264, 1264, 2483, 1264, 1220,
2941      2480, 1264, 1267, 1267, 1267, 1262, 2484, 1268, 1268, 1268,
2942      2481, 1268, 2480, 1229, 1268, 2485, 1269, 1269, 1269, 1267,
2943
2944      1269, 2486, 2481, 1269, 1273, 1273, 1273, 1274, 1274, 1274,
2945      1257, 1274, 2487, 2491, 1274, 2492, 1262, 1276, 1276, 1276,
2946      2493, 1273, 1279, 1279, 1279, 1280, 1280, 1280, 2494, 1280,
2947      2495, 2496, 1280, 2499, 2497, 1276, 1281, 1281, 1281, 1279,
2948      1282, 1282, 1282, 1284, 1284, 1284, 1295, 1295, 1295, 2500,
2949      1296, 1296, 1296, 1281, 1298, 1298, 1298, 2501, 1282, 2497,
2950      2502, 1284, 2503, 1295, 1299, 1299, 1299, 1276, 1296, 1300,
2951      1300, 1300, 1298, 1300, 2504, 2505, 1300, 1301, 1301, 1301,
2952      2506, 1299, 1302, 1302, 1302, 2507, 1303, 1303, 1303, 1282,
2953      1303, 2508, 2509, 1303, 2510, 1301, 1305, 1305, 1305, 1302,
2954
2955      2511, 1308, 1308, 1308, 1309, 1309, 1309, 2512, 1309, 2513,
2956      2514, 1309, 2515, 1296, 1305, 2516, 2517, 1298, 1308, 2520,
2957      1310, 1310, 1310, 1311, 1311, 1311, 1312, 1312, 1312, 1316,
2958      1316, 1316, 1319, 1319, 1319, 2517, 1301, 1310, 2521, 2522,
2959      1311, 1320, 1320, 1320, 1312, 1320, 1316, 2523, 1320, 1319,
2960      1321, 1321, 1321, 2524, 1321, 2525, 1305, 1321, 1324, 1324,
2961      1324, 1331, 1331, 1331, 1333, 1333, 1333, 2526, 2527, 1311,
2962      1336, 1336, 1336, 2528, 1336, 1324, 2529, 1336, 2530, 1331,
2963      2531, 1333, 1339, 1339, 1339, 1341, 1341, 1341, 1343, 1343,
2964      1343, 1312, 1347, 1347, 1347, 1348, 1348, 1348, 2532, 1339,
2965
2966      1349, 1349, 1349, 1341, 1349, 2533, 1343, 1349, 2534, 1347,
2967      1352, 1352, 1352, 1348, 1352, 2535, 2537, 1352, 1356, 1356,
2968      1356, 2538, 1358, 1358, 1358, 1331, 1358, 2539, 2540, 1358,
2969      1363, 1363, 1363, 2541, 1363, 2542, 1356, 1363, 1347, 1367,
2970      1367, 1367, 1369, 1369, 1369, 1370, 1370, 1370, 1341, 1370,
2971      2543, 1348, 1370, 1343, 1375, 1375, 1375, 1367, 1375, 2536,
2972      1369, 1375, 1378, 1378, 1378, 1380, 1380, 1380, 1381, 1381,
2973      1381, 2544, 1381, 2545, 2546, 1381, 1384, 1384, 1384, 2536,
2974      1378, 2547, 1380, 1356, 1386, 1386, 1386, 1387, 1387, 1387,
2975      1388, 1388, 1388, 2548, 1384, 1389, 1389, 1389, 1369, 1367,
2976
2977      2549, 1386, 1390, 1390, 1390, 1387, 2550, 2551, 1388, 1378,
2978      2552, 2554, 1389, 1393, 1393, 1393, 1400, 1400, 1400, 2555,
2979      1390, 1415, 1415, 1415, 2553, 1384, 1417, 1417, 1417, 2556,
2980      2553, 1393, 2557, 2558, 1400, 1419, 1419, 1419, 1424, 1424,
2981      1424, 2559, 1388, 2561, 1426, 1426, 1426, 1427, 1427, 1427,
2982      2562, 1427, 2564, 1387, 1427, 1430, 1430, 1430, 1431, 1431,
2983      1431, 2565, 1431, 1390, 1393, 1431, 2567, 2568, 1400, 1436,
2984      1436, 1436, 2571, 1430, 2572, 1438, 1438, 1438, 2573, 1438,
2985      1393, 1419, 1438, 2574, 1442, 1442, 1442, 1436, 1442, 1417,
2986      1426, 1442, 1446, 1446, 1446, 1447, 1447, 1447, 1449, 1449,
2987
2988      1449, 2576, 1449, 2570, 2578, 1449, 1452, 1452, 1452, 2580,
2989      1446, 1453, 1453, 1453, 2582, 1453, 2584, 2570, 1453, 2585,
2990      1436, 1430, 2586, 1452, 1454, 1454, 1454, 1458, 1458, 1458,
2991      1459, 1459, 1459, 1460, 1460, 1460, 1462, 1462, 1462, 1463,
2992      1463, 1463, 1454, 1465, 1465, 1465, 1466, 1466, 1466, 2587,
2993      1466, 2588, 1446, 1466, 1467, 1467, 1467, 1484, 1484, 1484,
2994      1465, 1469, 1469, 1469, 1470, 1470, 1470, 2589, 1470, 2590,
2995      2591, 1470, 1467, 2593, 1484, 1454, 1473, 1473, 1473, 1469,
2996      1474, 1474, 1474, 2595, 1474, 2597, 2598, 1474, 1478, 1478,
2997      1478, 1481, 1481, 1481, 1473, 1481, 1460, 2599, 1481, 1462,
2998
2999      2600, 1467, 1463, 1485, 1485, 1485, 1478, 1485, 1469, 2601,
3000      1485, 1486, 1486, 1486, 1487, 1487, 1487, 2602, 1487, 2609,
3001      2629, 1487, 1489, 1489, 1489, 1490, 1490, 1490, 1486, 1493,
3002      1493, 1493, 1494, 1494, 1494, 2623, 1494, 2610, 2630, 1494,
3003      1489, 1473, 1495, 1495, 1495, 2601, 1493, 2611, 1497, 1497,
3004      1497, 1478, 1497, 2602, 2627, 1497, 1500, 1500, 1500, 1495,
3005      1501, 1501, 1501, 2612, 1501, 2629, 2609, 1501, 1502, 1502,
3006      1502, 1441, 2623, 1500, 1507, 1507, 1507, 1508, 1508, 1508,
3007      1510, 1510, 1510, 2630, 2610, 1502, 1511, 1511, 1511, 2627,
3008      1511, 1507, 2615, 1511, 2611, 1508, 2615, 1510, 1512, 1512,
3009
3010      1512, 1514, 1514, 1514, 1515, 1515, 1515, 2613, 1515, 2617,
3011      2612, 1515, 1517, 1517, 1517, 1512, 2621, 2617, 1514, 1519,
3012      1519, 1519, 1523, 1523, 1523, 1524, 1524, 1524, 2614, 1524,
3013      1517, 2622, 1524, 1526, 1526, 1526, 2616, 1519, 1437, 1523,
3014      2616, 2618, 1508, 1528, 1528, 1528, 1530, 1530, 1530, 2618,
3015      2613, 1526, 1531, 1531, 1531, 1532, 1532, 1532, 1533, 1533,
3016      1533, 1528, 2621, 1530, 1535, 1535, 1535, 2628, 1435, 1531,
3017      1519, 2614, 1532, 1536, 1536, 1536, 1533, 2622, 1537, 1537,
3018      1537, 2619, 1535, 1538, 1538, 1538, 1545, 1545, 1545, 2619,
3019      1536, 1547, 1547, 1547, 1528, 1537, 1540, 1540, 1540, 2624,
3020
3021      1540, 1538, 2628, 1540, 1545, 1548, 1548, 1548, 1547, 1548,
3022      1535, 2620, 1548, 1549, 1549, 1549, 1434, 2641, 1532, 2620,
3023      1550, 1550, 1550, 2637, 1533, 1551, 1551, 1551, 1552, 1552,
3024      1552, 1549, 1552, 2631, 1425, 1552, 2624, 1545, 1550, 1553,
3025      1553, 1553, 1551, 1559, 1559, 1559, 1423, 1538, 1560, 1560,
3026      1560, 1565, 1565, 1565, 1568, 1568, 1568, 1553, 2637, 2641,
3027      1559, 1572, 1572, 1572, 1422, 1421, 1560, 1573, 1573, 1573,
3028      2631, 1549, 1574, 1574, 1574, 1550, 1576, 1576, 1576, 1578,
3029      1578, 1578, 1579, 1579, 1579, 1583, 1583, 1583, 1585, 1585,
3030      1585, 1588, 1588, 1588, 1590, 1590, 1590, 1592, 1592, 1592,
3031
3032      1593, 1593, 1593, 1602, 1602, 1602, 1585, 1602, 1560, 1588,
3033      1602, 1590, 1605, 1605, 1605, 1592, 2625, 1593, 1606, 1606,
3034      1606, 1609, 1609, 1609, 1610, 1610, 1610, 1612, 1612, 1612,
3035      1605, 2632, 1613, 1613, 1613, 1606, 1613, 2626, 1585, 1613,
3036      2643, 1616, 1616, 1616, 1612, 1617, 1617, 1617, 1618, 1618,
3037      1618, 1619, 1619, 1619, 2647, 1592, 2625, 1420, 1605, 1616,
3038      1418, 2633, 1617, 1620, 1620, 1620, 1618, 1416, 2632, 1619,
3039      1621, 1621, 1621, 2639, 1624, 1624, 1624, 2626, 1624, 1414,
3040      1620, 1624, 1627, 1627, 1627, 2643, 1627, 2647, 1621, 1627,
3041      1631, 1631, 1631, 2633, 1616, 1633, 1633, 1633, 1636, 1636,
3042
3043      1636, 1618, 1636, 2640, 2634, 1636, 2635, 2639, 1631, 1639,
3044      1639, 1639, 1640, 1640, 1640, 2635, 1640, 1621, 2651, 1640,
3045      1642, 1642, 1642, 2638, 1642, 2636, 1639, 1642, 1645, 1645,
3046      1645, 1646, 1646, 1646, 2636, 1646, 2634, 2640, 1646, 1647,
3047      1647, 1647, 1651, 1651, 1651, 1645, 1652, 1652, 1652, 2667,
3048      1652, 2645, 2659, 1652, 2646, 2651, 1647, 2667, 2638, 1651,
3049      1653, 1653, 1653, 1655, 1655, 1655, 2642, 1655, 2644, 2652,
3050      1655, 1658, 1658, 1658, 2660, 1659, 1659, 1659, 1653, 1659,
3051      1413, 2659, 1659, 1661, 1661, 1661, 2645, 1661, 1658, 2646,
3052      1661, 1665, 1665, 1665, 1668, 1668, 1668, 1670, 1670, 1670,
3053
3054      1672, 1672, 1672, 2660, 1672, 2655, 2652, 1672, 2642, 1665,
3055      2656, 1653, 1668, 2644, 1670, 1676, 1676, 1676, 1679, 1679,
3056      1679, 1681, 1681, 1681, 1682, 1682, 1682, 2668, 1682, 1411,
3057      1409, 1682, 2657, 1676, 2648, 2668, 1679, 2665, 1681, 1683,
3058      1683, 1683, 1407, 1670, 1684, 1684, 1684, 2653, 1684, 1405,
3059      2655, 1684, 1686, 1686, 1686, 2656, 1683, 1668, 1688, 1688,
3060      1688, 1689, 1689, 1689, 1690, 1690, 1690, 2648, 1690, 2657,
3061      1686, 1690, 1691, 1691, 1691, 2649, 1688, 2654, 1689, 1692,
3062      1692, 1692, 2665, 1692, 2649, 1404, 1692, 2658, 2653, 1691,
3063      1693, 1693, 1693, 1697, 1697, 1697, 1699, 1699, 1699, 2673,
3064
3065      1699, 2650, 2666, 1699, 1702, 1702, 1702, 1688, 1693, 2687,
3066      2650, 1697, 1703, 1703, 1703, 2671, 2661, 1686, 2654, 1704,
3067      1704, 1704, 1702, 1704, 2658, 2661, 1704, 1707, 1707, 1707,
3068      1703, 1713, 1713, 1713, 1714, 1714, 1714, 2662, 1714, 2673,
3069      1403, 1714, 1715, 1715, 1715, 1707, 2662, 2666, 1713, 1716,
3070      1716, 1716, 2671, 2692, 1693, 1702, 2687, 1697, 1402, 1401,
3071      1715, 1719, 1719, 1719, 2692, 1703, 1720, 1720, 1720, 1721,
3072      1721, 1721, 1725, 1725, 1725, 1726, 1726, 1726, 1727, 1727,
3073      1727, 1728, 1728, 1728, 1730, 1730, 1730, 1731, 1731, 1731,
3074      1732, 1732, 1732, 1733, 1733, 1733, 1734, 1734, 1734, 1736,
3075
3076      1736, 1736, 1739, 1739, 1739, 1715, 1742, 1742, 1742, 1743,
3077      1743, 1743, 2681, 1743, 1399, 2663, 1743, 1736, 1398, 1395,
3078      1739, 1392, 2664, 1742, 1745, 1745, 1745, 1728, 1746, 1746,
3079      1746, 1747, 1747, 1747, 1385, 1747, 1383, 1382, 1747, 1758,
3080      1758, 1758, 1745, 2675, 2681, 1746, 1759, 1759, 1759, 2663,
3081      1736, 1760, 1760, 1760, 2669, 1760, 2664, 1758, 1760, 1761,
3082      1761, 1761, 2682, 1759, 1763, 1763, 1763, 1764, 1764, 1764,
3083      1765, 1765, 1765, 1766, 1766, 1766, 2670, 1766, 2675, 2674,
3084      1766, 1767, 1767, 1767, 1768, 1768, 1768, 1765, 1758, 1769,
3085      1769, 1769, 1379, 1769, 2682, 1374, 1769, 2672, 2677, 1767,
3086
3087      2669, 1768, 1770, 1770, 1770, 1771, 1771, 1771, 1773, 1773,
3088      1773, 2678, 2679, 1764, 1774, 1774, 1774, 1373, 1774, 2674,
3089      1770, 1774, 2670, 1771, 2680, 1773, 1775, 1775, 1775, 1783,
3090      1783, 1783, 1767, 1783, 2672, 1368, 1783, 2676, 1787, 1787,
3091      1787, 1366, 1787, 2677, 1775, 1787, 1790, 1790, 1790, 2679,
3092      1791, 1791, 1791, 1770, 1791, 2683, 2678, 1791, 1795, 1795,
3093      1795, 2680, 1795, 1790, 2683, 1795, 1798, 1798, 1798, 1800,
3094      1800, 1800, 2676, 1800, 2684, 1362, 1800, 2685, 1361, 1775,
3095      1806, 1806, 1806, 2684, 1798, 1808, 1808, 1808, 1809, 1809,
3096      1809, 1355, 1809, 2686, 2691, 1809, 1346, 1345, 1806, 1816,
3097
3098      1816, 1816, 1808, 1819, 1819, 1819, 1344, 1819, 2691, 2685,
3099      1819, 1822, 1822, 1822, 2688, 1822, 1342, 1816, 1822, 1826,
3100      1826, 1826, 1828, 1828, 1828, 2686, 1829, 1829, 1829, 1798,
3101      1829, 2689, 2690, 1829, 1832, 1832, 1832, 1826, 1832, 1340,
3102      1828, 1832, 1835, 1835, 1835, 1836, 1836, 1836, 1837, 1837,
3103      1837, 1838, 1838, 1838, 1839, 1839, 1839, 1841, 1841, 1841,
3104      1835, 2688, 1836, 2689, 2690, 1837, 1335, 1334, 1838, 1332,
3105      1826, 1330, 1839, 1329, 1328, 1841, 1327, 1326, 1835, 1842,
3106      1842, 1842, 1843, 1843, 1843, 1325, 1318, 1828, 1846, 1846,
3107      1846, 1847, 1847, 1847, 1317, 1847, 1315, 1842, 1847, 1837,
3108
3109      1843, 1850, 1850, 1850, 1851, 1851, 1851, 1314, 1313, 1838,
3110      1852, 1852, 1852, 1854, 1854, 1854, 1841, 1307, 1839, 1850,
3111      1855, 1855, 1855, 1856, 1856, 1856, 1857, 1857, 1857, 1858,
3112      1858, 1858, 1859, 1859, 1859, 1860, 1860, 1860, 1863, 1863,
3113      1863, 1864, 1864, 1864, 1865, 1865, 1865, 1867, 1867, 1867,
3114      1870, 1870, 1870, 1871, 1871, 1871, 1306, 1871, 1304, 1850,
3115      1871, 1874, 1874, 1874, 1297, 1867, 1294, 1870, 1875, 1875,
3116      1875, 1293, 1877, 1877, 1877, 1292, 1877, 1291, 1874, 1877,
3117      1890, 1890, 1890, 1891, 1891, 1891, 1875, 1891, 1290, 1287,
3118      1891, 1894, 1894, 1894, 1896, 1896, 1896, 1286, 1890, 1898,
3119
3120      1898, 1898, 1283, 1898, 1278, 1275, 1898, 1901, 1901, 1901,
3121      1902, 1902, 1902, 1272, 1902, 1263, 1261, 1902, 1905, 1905,
3122      1905, 1909, 1909, 1909, 1260, 1901, 1874, 1906, 1906, 1906,
3123      1254, 1906, 1253, 1251, 1906, 1250, 1905, 1249, 1248, 1909,
3124      1890, 1917, 1917, 1917, 1920, 1920, 1920, 1247, 1920, 1246,
3125      1245, 1920, 1244, 1901, 1923, 1923, 1923, 1926, 1926, 1926,
3126      1931, 1931, 1931, 1933, 1933, 1933, 1934, 1934, 1934, 1242,
3127      1934, 1923, 1909, 1934, 1241, 1926, 1239, 1238, 1931, 1236,
3128      1933, 1945, 1945, 1945, 1947, 1947, 1947, 1948, 1948, 1948,
3129      1949, 1949, 1949, 1950, 1950, 1950, 1951, 1951, 1951, 1952,
3130
3131      1952, 1952, 1947, 1952, 1948, 1234, 1952, 1233, 1949, 1933,
3132      1232, 1950, 1231, 1951, 1953, 1953, 1953, 1954, 1954, 1954,
3133      1955, 1955, 1955, 1956, 1956, 1956, 1957, 1957, 1957, 1230,
3134      1228, 1953, 1227, 1226, 1954, 1963, 1963, 1963, 1955, 1958,
3135      1958, 1958, 1225, 1216, 1957, 1960, 1960, 1960, 1201, 1949,
3136      1965, 1965, 1965, 1950, 1964, 1964, 1964, 1958, 1967, 1967,
3137      1967, 1200, 1195, 1960, 1968, 1968, 1968, 1194, 1954, 1969,
3138      1969, 1969, 1964, 1192, 1973, 1973, 1973, 1976, 1976, 1976,
3139      1977, 1977, 1977, 1185, 1977, 1184, 1174, 1977, 1978, 1978,
3140      1978, 1957, 1973, 1169, 1976, 1989, 1989, 1989, 1992, 1992,
3141
3142      1992, 1993, 1993, 1993, 1166, 1978, 1960, 1995, 1995, 1995,
3143      2002, 2002, 2002, 1989, 1165, 1162, 1992, 1157, 1148, 1993,
3144      2003, 2003, 2003, 1147, 1146, 1995, 1142, 2002, 2006, 2006,
3145      2006, 2007, 2007, 2007, 1134, 2007, 1129, 1128, 2007, 2009,
3146      2009, 2009, 1122, 1978, 1121, 2006, 2010, 2010, 2010, 2014,
3147      2014, 2014, 1120, 1119, 1989, 1114, 2009, 2016, 2016, 2016,
3148      2025, 2025, 2025, 1992, 2010, 1113, 2014, 1112, 2017, 2017,
3149      2017, 1111, 2017, 1110, 2016, 2017, 1109, 2025, 2027, 2027,
3150      2027, 2029, 2029, 2029, 2031, 2031, 2031, 2032, 2032, 2032,
3151      1108, 2032, 1098, 1097, 2032, 2033, 2033, 2033, 1096, 2029,
3152
3153      1095, 2031, 2034, 2034, 2034, 2035, 2035, 2035, 1094, 2035,
3154      1093, 1088, 2035, 2033, 2038, 2038, 2038, 2039, 2039, 2039,
3155      2034, 2039, 1087, 1082, 2039, 2040, 2040, 2040, 2041, 2041,
3156      2041, 2038, 2043, 2043, 2043, 2044, 2044, 2044, 2048, 2048,
3157      2048, 1081, 2040, 2054, 2054, 2054, 2041, 2055, 2055, 2055,
3158      1062, 2055, 1054, 2044, 2055, 1050, 2048, 2058, 2058, 2058,
3159      2054, 2069, 2069, 2069, 2072, 2072, 2072, 1049, 2034, 2073,
3160      2073, 2073, 1048, 1047, 2058, 2076, 2076, 2076, 1046, 2069,
3161      1045, 1044, 2072, 2079, 2079, 2079, 1043, 2073, 1042, 2080,
3162      2080, 2080, 2076, 2080, 1037, 1029, 2080, 2083, 2083, 2083,
3163
3164      2079, 2083, 1027, 1021, 2083, 2087, 2087, 2087, 2088, 2088,
3165      2088, 1019, 2088, 1010, 1005, 2088,  994, 2058,  992,  991,
3166      2069,  990, 2087, 2090, 2090, 2090, 2091, 2091, 2091, 2092,
3167      2092, 2092,  988, 2092, 2072,  987, 2092, 2093, 2093, 2093,
3168      2090,  986,  985, 2091, 2094, 2094, 2094,  984, 2094,  983,
3169       981, 2094,  980,  979, 2093, 2102, 2102, 2102, 2103, 2103,
3170      2103,  978, 2103,  977,  976, 2103, 2104, 2104, 2104, 2105,
3171      2105, 2105, 2102, 2106, 2106, 2106,  975, 2106,  974,  973,
3172      2106,  972,  971, 2104,  970,  964, 2105, 2109, 2109, 2109,
3173      2111, 2111, 2111, 2112, 2112, 2112,  963, 2112,  962,  959,
3174
3175      2112, 2115, 2115, 2115,  958, 2109,  957,  955, 2111, 2116,
3176      2116, 2116,  951, 2116,  948,  939, 2116,  938, 2115, 2117,
3177      2117, 2117, 2122, 2122, 2122, 2126, 2126, 2126, 2127, 2127,
3178      2127,  935, 2127,  934,  933, 2127,  932, 2117,  922, 2134,
3179      2134, 2134, 2126, 2145, 2145, 2145, 2146, 2146, 2146, 2148,
3180      2148, 2148, 2150, 2150, 2150, 2111, 2134, 2149, 2149, 2149,
3181       915, 2145,  907,  906, 2151, 2151, 2151, 2148, 2151, 2150,
3182       905, 2151,  902,  897, 2149, 2152, 2152, 2152,  894, 2152,
3183       893,  889, 2152, 2158, 2158, 2158,  887, 2158,  884,  883,
3184      2158, 2162, 2162, 2162, 2145, 2163, 2163, 2163, 2134, 2163,
3185
3186       882,  881, 2163, 2149,  880, 2164, 2164, 2164, 2162, 2164,
3187      2148,  879, 2164, 2167, 2167, 2167, 2168, 2168, 2168,  878,
3188      2168,  874,  870, 2168, 2170, 2170, 2170, 2172, 2172, 2172,
3189      2167, 2172,  869,  868, 2172, 2175, 2175, 2175, 2176, 2176,
3190      2176, 2170, 2176,  865,  864, 2176, 2177, 2177, 2177, 2178,
3191      2178, 2178, 2175, 2178,  861,  860, 2178, 2185, 2185, 2185,
3192      2186, 2186, 2186, 2177, 2186,  859,  856, 2186, 2191, 2191,
3193      2191, 2192, 2192, 2192,  855, 2185, 2193, 2193, 2193,  852,
3194      2196, 2196, 2196,  847, 2196, 2191, 2191, 2196, 2207, 2207,
3195      2207, 2216, 2216, 2216, 2217, 2217, 2217, 2218, 2218, 2218,
3196
3197      2219, 2219, 2219,  842,  839, 2207,  838,  837, 2185, 2216,
3198      2220, 2220, 2220, 2221, 2221, 2221,  835, 2221, 2219,  834,
3199      2221, 2223, 2223, 2223,  833, 2223,  832, 2220, 2223, 2230,
3200      2230, 2230,  831, 2230,  827,  822, 2230, 2233, 2233, 2233,
3201      2216, 2233,  821,  820, 2233, 2237, 2237, 2237, 2238, 2238,
3202      2238, 2219, 2238,  819,  816, 2238, 2240, 2240, 2240,  815,
3203      2240,  814, 2237, 2240, 2243, 2243, 2243,  812, 2243,  808,
3204       804, 2243, 2252, 2252, 2252, 2254, 2254, 2254, 2255, 2255,
3205      2255, 2256, 2256, 2256,  803, 2256,  800,  797, 2256,  796,
3206      2252,  795, 2254, 2254,  794, 2255, 2255,  793,  792, 2256,
3207
3208      2257, 2257, 2257, 2258, 2258, 2258, 2259, 2259, 2259, 2268,
3209      2268, 2268, 2269, 2269, 2269,  790, 2269,  789,  788, 2269,
3210      2278, 2278, 2278, 2279, 2279, 2279, 2268, 2280, 2280, 2280,
3211      2281, 2281, 2281,  787, 2281,  786,  785, 2281, 2278, 2287,
3212      2287, 2287, 2289, 2289, 2289, 2280, 2290, 2290, 2290,  784,
3213      2290,  783,  782, 2290,  781,  780, 2287,  779,  778, 2289,
3214      2293, 2293, 2293, 2308, 2308, 2308, 2311, 2311, 2311, 2312,
3215      2312, 2312,  777, 2312,  776,  775, 2312, 2293, 2316, 2316,
3216      2316, 2308,  774, 2311, 2311, 2278,  773, 2312, 2313, 2313,
3217      2313,  769, 2313,  768,  766, 2313, 2317, 2317, 2317, 2335,
3218
3219      2335, 2335, 2336, 2336, 2336,  765, 2313, 2314, 2314, 2314,
3220      2314, 2314, 2314, 2314, 2314, 2314,  764, 2335, 2314,  763,
3221      2336,  762,  758, 2314, 2314, 2314, 2314, 2314, 2326, 2326,
3222      2326,  756, 2326,  755,  754, 2326, 2342, 2342, 2342,  753,
3223      2342,  749,  745, 2342,  744,  741, 2341, 2341, 2341, 2344,
3224      2344, 2344, 2314, 2314, 2315, 2315, 2315, 2315, 2315, 2315,
3225      2315, 2315, 2315, 2341,  740, 2315, 2344, 2346, 2346, 2346,
3226      2315, 2315, 2315, 2315, 2315, 2345, 2345, 2345,  739, 2345,
3227       738,  737, 2345,  736, 2346, 2347, 2347, 2347,  733, 2347,
3228       732,  731, 2347,  730, 2361, 2361, 2361,  727, 2361, 2315,
3229
3230      2315, 2361,  725,  722, 2380, 2380, 2380, 2413, 2413, 2413,
3231       721,  720, 2361, 2364, 2364, 2364, 2364, 2364, 2364, 2364,
3232      2364, 2364, 2380,  719, 2364, 2413, 2413,  718,  715, 2364,
3233      2364, 2364, 2364, 2364, 2385, 2385, 2385,  714, 2385,  713,
3234       712, 2385, 2389, 2389, 2389,  711, 2389,  708,  707, 2389,
3235      2392, 2392, 2392,  706, 2392,  705,  703, 2392, 2364, 2364,
3236      2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365,  700,
3237       698, 2365, 2422, 2422, 2422,  695, 2365, 2365, 2365, 2365,
3238      2365, 2423, 2423, 2423, 2424, 2424, 2424,  694,  693, 2422,
3239      2429, 2429, 2429, 2438, 2438, 2438,  692,  690, 2423,  689,
3240
3241       688, 2424, 2442, 2442, 2442, 2365, 2365, 2429, 2447, 2447,
3242      2447, 2438, 2448, 2448, 2448,  685, 2448,  684,  683, 2448,
3243      2442, 2449, 2449, 2449,  682, 2447, 2450, 2450, 2450,  681,
3244      2450,  680,  679, 2450, 2451, 2451, 2451,  678, 2449, 2452,
3245      2452, 2452,  677, 2452,  675,  673, 2452, 2459, 2459, 2459,
3246       672, 2451,  668, 2442, 2460, 2460, 2460,  667, 2460,  666,
3247       663, 2460,  660,  659, 2459, 2467, 2467, 2467, 2473, 2473,
3248      2473,  658, 2473,  655,  654, 2473,  650, 2476, 2476, 2476,
3249       649, 2476,  645, 2467, 2476, 2479, 2479, 2479,  644, 2479,
3250       642,  637, 2479, 2488, 2488, 2488,  636, 2488,  634,  633,
3251
3252      2488,  632, 2467, 2583, 2583, 2583, 2592, 2592, 2592,  631,
3253      2592,  630,  629, 2592, 2693, 2693, 2693, 2694, 2694, 2694,
3254       625, 2583,  624,  623, 2592,  622,  618,  617,  616,  615,
3255       614,  613, 2693,  612,  610, 2694, 2697, 2697, 2697, 2697,
3256      2697, 2697, 2697, 2697, 2697, 2698, 2698, 2698, 2698, 2698,
3257      2698, 2698, 2698, 2698, 2699, 2699, 2699, 2699, 2699, 2699,
3258      2699, 2699, 2699, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
3259      2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
3260      2701, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702,
3261      2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2704,
3262
3263      2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2705, 2705,
3264      2705, 2705, 2705, 2705, 2705, 2705, 2705, 2706, 2706, 2706,
3265      2706, 2706, 2706, 2706, 2706, 2706, 2707, 2707, 2707, 2707,
3266      2707, 2707, 2707, 2707, 2707, 2708, 2708, 2708, 2708, 2708,
3267      2708, 2708, 2708, 2708, 2709, 2709, 2709, 2709, 2709, 2709,
3268      2709, 2709, 2709, 2710, 2710, 2710, 2710, 2710, 2710, 2710,
3269      2710, 2710, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711,
3270      2711, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712,
3271      2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2714,
3272      2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2715, 2715,
3273
3274      2715, 2715, 2715, 2715, 2715, 2715, 2715, 2716, 2716, 2716,
3275      2716, 2716, 2716, 2716, 2716, 2716, 2717, 2717, 2717, 2717,
3276      2717, 2717, 2717, 2717, 2717, 2718, 2718, 2718, 2718, 2718,
3277      2718, 2718, 2718, 2718, 2719, 2719, 2719, 2719, 2719, 2719,
3278      2719, 2719, 2719, 2720, 2720, 2720, 2720, 2720, 2720, 2720,
3279      2720, 2720, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
3280      2721, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
3281      2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2724,
3282      2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2725, 2725,
3283      2725, 2725, 2725, 2725, 2725, 2725, 2725, 2726, 2726, 2726,
3284
3285      2726, 2726, 2726, 2726, 2726, 2726, 2727, 2727, 2727, 2727,
3286      2727, 2727, 2727, 2727, 2727, 2728, 2728, 2728, 2728, 2728,
3287      2728, 2728, 2728, 2728, 2729, 2729, 2729, 2729, 2729, 2729,
3288      2729, 2729, 2729, 2730, 2730, 2730, 2730, 2730, 2730, 2730,
3289      2730, 2730, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731,
3290      2731, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732,
3291      2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2734,
3292      2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2735, 2735,
3293      2735, 2735, 2735, 2735, 2735, 2735, 2735, 2736, 2736, 2736,
3294      2736, 2736, 2736, 2736, 2736, 2736, 2737, 2737, 2737, 2737,
3295
3296      2737, 2737, 2737, 2737, 2737, 2738, 2738, 2738, 2738, 2738,
3297      2738, 2738, 2738, 2738, 2739, 2739, 2739, 2739, 2739, 2739,
3298      2739, 2739, 2739, 2740, 2740, 2740, 2740, 2740, 2740, 2740,
3299      2740, 2740, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741,
3300      2741, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742,
3301      2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2744,
3302      2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2745, 2745,
3303      2745, 2745, 2745, 2745, 2745, 2745, 2745, 2746, 2746, 2746,
3304      2746, 2746, 2746, 2746, 2746, 2746, 2747, 2747, 2747,  607,
3305       606,  604, 2747, 2748, 2748, 2748,  602,  599,  598, 2748,
3306
3307      2749, 2749, 2749,  592,  590,  588, 2749, 2750, 2750, 2750,
3308       585,  584,  580, 2750, 2751, 2751, 2751,  579,  578,  576,
3309      2751, 2752, 2752, 2752,  575,  574,  573, 2752, 2753, 2753,
3310      2753,  572,  569,  568, 2753, 2754, 2754, 2754,  567,  566,
3311       565, 2754, 2755, 2755, 2755,  559,  558,  556, 2755, 2756,
3312      2756, 2756,  550,  549,  545, 2756, 2757, 2757, 2757,  541,
3313       538,  534, 2757, 2758, 2758, 2758,  528,  524,  516, 2758,
3314      2759, 2759, 2759,  515,  514,  513, 2759, 2760, 2760, 2760,
3315       509,  505,  502, 2760, 2761, 2761, 2761,  501,  500,  496,
3316      2761, 2762, 2762, 2762,  490,  489,  485, 2762, 2763, 2763,
3317
3318      2763,  481,  477,  476, 2763, 2764, 2764, 2764,  472,  469,
3319       468, 2764, 2765, 2765, 2765,  463,  459,  455, 2765, 2766,
3320      2766, 2766,  451,  450,  449, 2766, 2767, 2767, 2767,  445,
3321       439,  438, 2767, 2768, 2768, 2768,  434,  428,  427, 2768,
3322      2769, 2769, 2769,  426,  425,  424, 2769, 2770, 2770, 2770,
3323      2770, 2770, 2770, 2770,  423, 2770, 2771, 2771, 2771,  422,
3324       418,  409, 2771, 2772,  408,  407,  405, 2772, 2773, 2773,
3325      2773,  401,  393,  392, 2773, 2774,  391,  390,  389, 2774,
3326      2775, 2775, 2775,  385,  379,  378, 2775, 2776,  374,  368,
3327       367, 2776, 2777, 2777, 2777,  363,  359,  356, 2777, 2778,
3328
3329       355,  351,  347, 2778, 2779, 2779, 2779,  344,  343,  342,
3330      2779, 2780,  338,  334,  328, 2780, 2781, 2781, 2781,  321,
3331       320,  316, 2781, 2782,  310,  309,  308, 2782, 2783, 2783,
3332      2783,  304,  301,  300, 2783, 2784,  295,  293,  292, 2784,
3333      2785, 2785, 2785,  288,  285,  283, 2785, 2786,  282,  281,
3334       277, 2786, 2787, 2787, 2787,  271,  267,  263, 2787, 2788,
3335       255,  251,  247, 2788, 2789, 2789, 2789,  246,  245,  239,
3336      2789, 2790,  238,  236,  233, 2790, 2791, 2791, 2791,  221,
3337         0,    0, 2791, 2792,    0,    0,    0, 2792, 2793, 2793,
3338      2793,    0,    0,    0, 2793, 2794,    0,    0,    0, 2794,
3339
3340      2795, 2795, 2795,    0,    0,    0, 2795, 2796,    0,    0,
3341         0, 2796, 2797, 2797, 2797,    0,    0,    0, 2797, 2798,
3342         0,    0,    0, 2798, 2799, 2799, 2799,    0,    0,    0,
3343      2799, 2800,    0,    0,    0, 2800, 2801, 2801, 2801,    0,
3344         0,    0, 2801, 2802,    0,    0,    0, 2802, 2803, 2803,
3345      2803,    0,    0,    0, 2803, 2804,    0,    0,    0, 2804,
3346      2805, 2805, 2805,    0,    0,    0, 2805, 2806,    0,    0,
3347         0, 2806, 2807, 2807, 2807,    0,    0,    0, 2807, 2808,
3348         0,    0,    0, 2808, 2809, 2809, 2809,    0,    0,    0,
3349      2809, 2810,    0,    0,    0, 2810, 2811, 2811, 2811,    0,
3350
3351         0,    0, 2811, 2812,    0,    0,    0, 2812, 2813, 2813,
3352      2813,    0,    0,    0, 2813, 2814,    0,    0,    0, 2814,
3353      2815, 2815, 2815,    0,    0,    0, 2815, 2816,    0,    0,
3354         0, 2816, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817,
3355      2817, 2818,    0,    0,    0,    0, 2818, 2819, 2819, 2819,
3356         0,    0,    0, 2819, 2820, 2820, 2820, 2820,    0,    0,
3357      2820, 2820, 2821, 2821, 2821,    0,    0,    0, 2821, 2822,
3358      2822, 2822, 2822,    0,    0, 2822, 2822, 2823, 2823, 2823,
3359         0,    0,    0, 2823, 2824, 2824, 2824, 2824,    0,    0,
3360      2824, 2824, 2825, 2825, 2825,    0,    0,    0, 2825, 2826,
3361
3362      2826, 2826, 2826,    0,    0, 2826, 2826, 2827, 2827, 2827,
3363         0,    0,    0, 2827, 2828, 2828, 2828, 2828,    0,    0,
3364      2828, 2828, 2829, 2829, 2829,    0,    0,    0, 2829, 2830,
3365      2830, 2830, 2830,    0,    0, 2830, 2830, 2831, 2831, 2831,
3366         0,    0,    0, 2831, 2832, 2832, 2832, 2832,    0,    0,
3367      2832, 2832, 2833, 2833, 2833,    0,    0,    0, 2833, 2834,
3368      2834, 2834, 2834,    0,    0, 2834, 2834, 2835, 2835, 2835,
3369         0,    0,    0, 2835, 2836, 2836, 2836, 2836,    0,    0,
3370      2836, 2836, 2837, 2837, 2837,    0,    0,    0, 2837, 2838,
3371      2838, 2838, 2838,    0,    0, 2838, 2838, 2839, 2839, 2839,
3372
3373         0,    0,    0, 2839, 2840, 2840, 2840, 2840,    0,    0,
3374      2840, 2840, 2841, 2841, 2841,    0,    0,    0, 2841, 2842,
3375      2842, 2842, 2842,    0,    0, 2842, 2842, 2843, 2843, 2843,
3376         0,    0,    0, 2843, 2844, 2844, 2844, 2844,    0,    0,
3377      2844, 2844, 2845, 2845, 2845,    0,    0,    0, 2845, 2846,
3378      2846, 2846, 2846,    0,    0, 2846, 2846, 2847, 2847, 2847,
3379         0,    0,    0, 2847, 2848, 2848, 2848, 2848,    0,    0,
3380      2848, 2848, 2849, 2849, 2849, 2849,    0, 2849,    0, 2849,
3381      2850, 2850, 2850, 2850,    0,    0, 2850, 2850, 2851, 2851,
3382      2851, 2851,    0, 2851,    0, 2851, 2852, 2852, 2852, 2852,
3383
3384         0,    0, 2852, 2852, 2853, 2853, 2853,    0,    0,    0,
3385      2853, 2854, 2854, 2854, 2854,    0,    0, 2854, 2854, 2855,
3386      2855, 2855, 2855,    0, 2855,    0, 2855, 2856, 2856, 2856,
3387      2856,    0,    0, 2856, 2856, 2857, 2857, 2857,    0,    0,
3388         0, 2857, 2858, 2858, 2858, 2858,    0,    0, 2858, 2858,
3389      2859, 2859, 2859,    0,    0,    0, 2859, 2860, 2860, 2860,
3390      2860,    0,    0, 2860, 2860, 2861, 2861, 2861, 2861,    0,
3391         0, 2861, 2861, 2862, 2862, 2862,    0,    0,    0, 2862,
3392      2863, 2863, 2863, 2863,    0,    0, 2863, 2863, 2864, 2864,
3393      2864, 2864, 2864, 2864, 2864, 2864, 2864, 2865,    0, 2865,
3394
3395         0,    0, 2865, 2866, 2866, 2866,    0,    0,    0, 2866,
3396      2867, 2867, 2867, 2867,    0,    0, 2867, 2867, 2868, 2868,
3397      2868, 2868,    0, 2868,    0, 2868, 2869, 2869, 2869, 2869,
3398         0,    0, 2869, 2869, 2870, 2870, 2870, 2870,    0, 2870,
3399         0, 2870, 2871, 2871, 2871, 2871,    0,    0, 2871, 2871,
3400      2872, 2872, 2872,    0,    0,    0, 2872, 2873, 2873, 2873,
3401      2873,    0,    0, 2873, 2873, 2874, 2874, 2874,    0,    0,
3402         0, 2874, 2875, 2875, 2875, 2875,    0,    0, 2875, 2875,
3403      2876, 2876, 2876,    0,    0,    0, 2876, 2877, 2877, 2877,
3404      2877,    0,    0, 2877, 2877, 2878, 2878, 2878,    0,    0,
3405
3406         0, 2878, 2879, 2879, 2879, 2879,    0,    0, 2879, 2879,
3407      2880, 2880, 2880,    0,    0,    0, 2880, 2881, 2881, 2881,
3408      2881,    0,    0, 2881, 2881, 2882, 2882, 2882, 2882,    0,
3409      2882,    0, 2882, 2883, 2883, 2883, 2883,    0,    0, 2883,
3410      2883, 2884, 2884, 2884, 2884,    0, 2884,    0, 2884, 2885,
3411      2885, 2885, 2885,    0,    0, 2885, 2885, 2886, 2886, 2886,
3412         0,    0,    0, 2886, 2887, 2887, 2887, 2887,    0,    0,
3413      2887, 2887, 2888, 2888, 2888,    0,    0,    0, 2888, 2889,
3414      2889, 2889, 2889,    0,    0, 2889, 2889, 2890, 2890, 2890,
3415         0,    0,    0, 2890, 2891, 2891, 2891, 2891,    0,    0,
3416
3417      2891, 2891, 2892, 2892, 2892,    0,    0,    0, 2892, 2893,
3418      2893, 2893, 2893,    0,    0, 2893, 2893, 2894, 2894, 2894,
3419         0,    0,    0, 2894, 2895, 2895, 2895, 2895,    0,    0,
3420      2895, 2895, 2896, 2896, 2896,    0,    0,    0, 2896, 2897,
3421      2897, 2897, 2897,    0,    0, 2897, 2897, 2898, 2898, 2898,
3422         0,    0,    0, 2898, 2899, 2899, 2899, 2899,    0,    0,
3423      2899, 2899, 2900, 2900, 2900,    0,    0,    0, 2900, 2901,
3424      2901, 2901, 2901,    0,    0, 2901, 2901, 2902, 2902, 2902,
3425         0,    0,    0, 2902, 2903, 2903, 2903, 2903,    0,    0,
3426      2903, 2903, 2904, 2904, 2904,    0,    0,    0, 2904, 2905,
3427
3428      2905, 2905, 2905,    0,    0, 2905, 2905, 2906, 2906, 2906,
3429         0,    0,    0, 2906, 2907, 2907, 2907, 2907,    0,    0,
3430      2907, 2907, 2908, 2908, 2908, 2908,    0,    0, 2908, 2908,
3431      2909, 2909, 2909,    0,    0,    0, 2909, 2910, 2910, 2910,
3432      2910,    0,    0, 2910, 2910, 2911, 2911, 2911, 2911, 2911,
3433      2911, 2911, 2911, 2911, 2912, 2912, 2912, 2912, 2912, 2912,
3434      2912, 2912, 2912, 2913, 2913, 2913,    0,    0,    0, 2913,
3435      2914, 2914, 2914, 2914,    0,    0, 2914, 2914, 2915, 2915,
3436      2915, 2915,    0,    0, 2915, 2915, 2916, 2916, 2916,    0,
3437         0,    0, 2916, 2917, 2917, 2917, 2917,    0,    0, 2917,
3438
3439      2917, 2918, 2918, 2918,    0,    0,    0, 2918, 2919, 2919,
3440      2919, 2919,    0,    0, 2919, 2919, 2920, 2920, 2920,    0,
3441         0,    0, 2920, 2921, 2921, 2921, 2921,    0,    0, 2921,
3442      2921, 2922, 2922, 2922,    0,    0,    0, 2922, 2923, 2923,
3443      2923,    0,    0,    0, 2923, 2924, 2924, 2924, 2924,    0,
3444         0, 2924, 2924, 2925, 2925, 2925,    0,    0,    0, 2925,
3445      2926, 2926, 2926, 2926,    0,    0, 2926, 2926, 2927, 2927,
3446      2927, 2927,    0,    0, 2927, 2927, 2928, 2928, 2928,    0,
3447         0,    0, 2928, 2929, 2929, 2929, 2929,    0,    0, 2929,
3448      2929, 2930, 2930, 2930,    0,    0,    0, 2930, 2931, 2931,
3449
3450      2931, 2931,    0,    0, 2931, 2931, 2932, 2932, 2932,    0,
3451         0,    0, 2932, 2933, 2933, 2933, 2933,    0,    0, 2933,
3452      2933, 2934, 2934, 2934,    0,    0,    0, 2934, 2935, 2935,
3453      2935, 2935,    0,    0, 2935, 2935, 2936, 2936, 2936,    0,
3454         0,    0, 2936, 2937, 2937, 2937, 2937,    0,    0, 2937,
3455      2937, 2938, 2938, 2938,    0,    0,    0, 2938, 2939, 2939,
3456      2939, 2939,    0,    0, 2939, 2939, 2940, 2940, 2940,    0,
3457         0,    0, 2940, 2941, 2941, 2941, 2941,    0,    0, 2941,
3458      2941, 2942, 2942, 2942,    0,    0,    0, 2942, 2943, 2943,
3459      2943, 2943,    0,    0, 2943, 2943, 2944, 2944, 2944,    0,
3460
3461         0,    0, 2944, 2945, 2945, 2945, 2945,    0,    0, 2945,
3462      2945, 2946, 2946, 2946,    0,    0,    0, 2946, 2947, 2947,
3463      2947, 2947,    0,    0, 2947, 2947, 2948, 2948, 2948,    0,
3464         0,    0, 2948, 2949, 2949, 2949, 2949,    0,    0, 2949,
3465      2949, 2950, 2950, 2950, 2950,    0, 2950,    0, 2950, 2951,
3466      2951, 2951, 2951,    0,    0, 2951, 2951, 2952, 2952, 2952,
3467      2952,    0,    0, 2952, 2952, 2953, 2953, 2953, 2953,    0,
3468      2953,    0, 2953, 2954, 2954, 2954, 2954,    0,    0, 2954,
3469      2954, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955,
3470      2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2957,
3471
3472      2957, 2957,    0,    0,    0, 2957, 2958, 2958, 2958, 2958,
3473         0,    0, 2958, 2958, 2959, 2959, 2959, 2959,    0,    0,
3474      2959, 2959, 2960, 2960, 2960,    0,    0,    0, 2960, 2961,
3475      2961, 2961, 2961,    0,    0, 2961, 2961, 2962, 2962, 2962,
3476         0,    0,    0, 2962, 2963, 2963, 2963, 2963,    0,    0,
3477      2963, 2963, 2964, 2964, 2964,    0,    0,    0, 2964, 2965,
3478      2965, 2965, 2965,    0,    0, 2965, 2965, 2966, 2966, 2966,
3479         0,    0,    0, 2966, 2967, 2967, 2967,    0,    0,    0,
3480      2967, 2968, 2968, 2968, 2968,    0,    0, 2968, 2968, 2969,
3481      2969, 2969,    0,    0,    0, 2969, 2970, 2970, 2970, 2970,
3482
3483         0,    0, 2970, 2970, 2971, 2971, 2971, 2971,    0,    0,
3484      2971, 2971, 2972, 2972, 2972,    0,    0,    0, 2972, 2973,
3485      2973, 2973, 2973,    0,    0, 2973, 2973, 2974, 2974, 2974,
3486         0,    0,    0, 2974, 2975, 2975, 2975, 2975,    0,    0,
3487      2975, 2975, 2976, 2976, 2976,    0,    0,    0, 2976, 2977,
3488      2977, 2977, 2977,    0,    0, 2977, 2977, 2978, 2978, 2978,
3489         0,    0,    0, 2978, 2979, 2979, 2979, 2979,    0,    0,
3490      2979, 2979, 2980, 2980, 2980,    0,    0,    0, 2980, 2981,
3491      2981, 2981, 2981,    0,    0, 2981, 2981, 2982, 2982, 2982,
3492         0,    0,    0, 2982, 2983, 2983, 2983, 2983,    0,    0,
3493
3494      2983, 2983, 2984, 2984, 2984,    0,    0,    0, 2984, 2985,
3495      2985, 2985, 2985,    0,    0, 2985, 2985, 2986, 2986, 2986,
3496      2986,    0, 2986,    0, 2986, 2987, 2987, 2987, 2987,    0,
3497         0, 2987, 2987, 2988, 2988, 2988,    0,    0,    0, 2988,
3498      2989, 2989, 2989, 2989,    0,    0, 2989, 2989, 2990, 2990,
3499      2990, 2990,    0, 2990,    0, 2990, 2991, 2991, 2991, 2991,
3500         0,    0, 2991, 2991, 2992, 2992, 2992,    0,    0,    0,
3501      2992, 2993, 2993, 2993, 2993,    0,    0, 2993, 2993, 2994,
3502      2994, 2994, 2994,    0,    0, 2994, 2994, 2995, 2995, 2995,
3503      2995,    0,    0, 2995, 2995, 2996, 2996, 2996, 2996,    0,
3504
3505         0, 2996, 2996, 2997, 2997, 2997, 2997, 2997, 2997, 2997,
3506      2997, 2997, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998,
3507      2998, 2999, 2999, 2999, 2999,    0, 2999,    0, 2999, 3000,
3508      3000, 3000, 3000,    0,    0, 3000, 3000, 3001, 3001, 3001,
3509      3001,    0,    0, 3001, 3001, 3002, 3002, 3002,    0,    0,
3510         0, 3002, 3003, 3003, 3003, 3003,    0,    0, 3003, 3003,
3511      3004, 3004, 3004,    0,    0,    0, 3004, 3005, 3005, 3005,
3512      3005,    0,    0, 3005, 3005, 3006, 3006, 3006, 3006,    0,
3513      3006,    0, 3006, 3007, 3007, 3007, 3007,    0,    0, 3007,
3514      3007, 3008, 3008, 3008, 3008,    0, 3008,    0, 3008, 3009,
3515
3516      3009, 3009, 3009,    0, 3009,    0, 3009, 3010, 3010, 3010,
3517      3010,    0,    0, 3010, 3010, 3011, 3011, 3011, 3011,    0,
3518      3011,    0, 3011, 3012, 3012, 3012, 3012,    0,    0, 3012,
3519      3012, 3013, 3013, 3013, 3013,    0,    0, 3013, 3013, 3014,
3520      3014, 3014, 3014,    0, 3014,    0, 3014, 3015, 3015, 3015,
3521      3015,    0,    0, 3015, 3015, 3016, 3016, 3016,    0,    0,
3522         0, 3016, 3017, 3017, 3017,    0,    0,    0, 3017, 3018,
3523      3018, 3018, 3018,    0,    0, 3018, 3018, 3019, 3019, 3019,
3524         0,    0,    0, 3019, 3020, 3020, 3020,    0,    0,    0,
3525      3020, 3021, 3021, 3021, 3021,    0,    0, 3021, 3021, 3022,
3526
3527      3022, 3022,    0,    0,    0, 3022, 3023, 3023, 3023,    0,
3528         0,    0, 3023, 3024, 3024, 3024, 3024,    0,    0, 3024,
3529      3024, 3025, 3025, 3025,    0,    0,    0, 3025, 3026, 3026,
3530      3026, 3026,    0,    0, 3026, 3026, 3027, 3027, 3027,    0,
3531         0,    0, 3027, 3028, 3028, 3028, 3028,    0,    0, 3028,
3532      3028, 3029, 3029, 3029, 3029,    0,    0, 3029, 3029, 3030,
3533      3030, 3030,    0,    0,    0, 3030, 3031, 3031, 3031, 3031,
3534         0,    0, 3031, 3031, 3032, 3032, 3032, 3032,    0,    0,
3535      3032, 3032, 3033, 3033, 3033, 3033,    0,    0, 3033, 3033,
3536      3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3035,
3537
3538      3035, 3035, 3035, 3035, 3035, 3035, 3035, 3035, 3036, 3036,
3539      3036, 3036,    0,    0, 3036, 3036, 3037, 3037, 3037, 3037,
3540         0,    0, 3037, 3037, 3038, 3038, 3038,    0,    0,    0,
3541      3038, 3039, 3039, 3039,    0,    0,    0, 3039, 3040, 3040,
3542      3040, 3040,    0,    0, 3040, 3040, 3041, 3041, 3041, 3041,
3543         0,    0, 3041, 3041, 3042, 3042, 3042, 3042,    0,    0,
3544      3042, 3042, 3043, 3043, 3043, 3043,    0,    0, 3043, 3043,
3545      3044, 3044, 3044, 3044,    0,    0, 3044, 3044, 3045, 3045,
3546      3045,    0,    0,    0, 3045, 3046, 3046, 3046,    0,    0,
3547         0, 3046, 3047, 3047, 3047, 3047,    0,    0, 3047, 3047,
3548
3549      3048, 3048, 3048,    0,    0,    0, 3048, 3049, 3049, 3049,
3550         0,    0,    0, 3049, 3050, 3050, 3050, 3050,    0,    0,
3551      3050, 3050, 3051, 3051, 3051,    0,    0,    0, 3051, 3052,
3552      3052, 3052,    0,    0,    0, 3052, 3053, 3053, 3053,    0,
3553         0,    0, 3053, 3054, 3054, 3054, 3054,    0,    0, 3054,
3554      3054, 3055, 3055, 3055,    0,    0,    0, 3055, 3056, 3056,
3555      3056, 3056,    0,    0, 3056, 3056, 3057, 3057, 3057, 3057,
3556         0,    0, 3057, 3057, 3058, 3058, 3058, 3058,    0, 3058,
3557         0, 3058, 3059, 3059, 3059, 3059,    0,    0, 3059, 3059,
3558      3060, 3060, 3060, 3060,    0,    0, 3060, 3060, 3061, 3061,
3559
3560      3061, 3061,    0,    0, 3061, 3061, 3062, 3062, 3062, 3062,
3561      3062, 3062, 3062, 3062, 3062, 3063, 3063, 3063, 3063, 3063,
3562      3063, 3063, 3063, 3063, 3064, 3064, 3064, 3064,    0,    0,
3563      3064, 3064, 3065, 3065, 3065, 3065,    0,    0, 3065, 3065,
3564      3066, 3066, 3066,    0,    0,    0, 3066, 3067, 3067, 3067,
3565      3067,    0, 3067,    0, 3067, 3068, 3068, 3068, 3068, 3068,
3566      3068, 3068, 3068, 3068, 3069, 3069, 3069, 3069, 3069, 3069,
3567      3069, 3069, 3069, 3070, 3070, 3070, 3070, 3070, 3070, 3070,
3568      3070, 3070, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071,
3569      3071, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072,
3570
3571      3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, 2696,
3572      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
3573      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
3574      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
3575      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
3576      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
3577      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
3578      2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
3579      2696, 2696
3580     } ;
3581
3582 /* Table of booleans, true if rule could match eol. */
3583 static yyconst flex_int32_t yy_rule_can_match_eol[460] =
3584     {   0,
3585 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
3586     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
3587     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3588     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
3589     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
3590     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
3591     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
3592     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
3593     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 
3594     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
3595     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3596     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
3597     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3598     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
3599     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3600     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
3601     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3602     1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
3603     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
3604     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
3605     1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 
3606     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 
3607     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 
3608         };
3609
3610 static yy_state_type yy_last_accepting_state;
3611 static char *yy_last_accepting_cpos;
3612
3613 extern int surf_parse__flex_debug;
3614 int surf_parse__flex_debug = 0;
3615
3616 /* The intent behind this definition is that it'll catch
3617  * any uses of REJECT which flex missed.
3618  */
3619 #define REJECT reject_used_but_not_detected
3620 #define yymore() yymore_used_but_not_detected
3621 #define YY_MORE_ADJ 0
3622 #define YY_RESTORE_YY_MORE_OFFSET
3623 char *surf_parse_text;
3624 /* Validating XML processor for src/surf/simgrid.dtd.
3625  *
3626  * This program was generated with the FleXML XML processor generator.
3627  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
3628  * FleXML is Copyright (C) 2003-2011 Martin Quinson.  All rights reserved.
3629  * (Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp).
3630  * 
3631  * There are two, intertwined parts to this program, part A and part B.
3632  *
3633  * Part A
3634  * ------
3635  * 
3636  * Some parts, here collectively called "Part A", are found in the 
3637  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
3638  * and Copyright (C) 2003-2011 Martin Quinson. All rights reserved.
3639  *
3640  * You can redistribute, use, perform, display and/or modify "Part A"
3641  * provided the following two conditions hold:
3642  *
3643  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
3644  *    FleXML; without even the implied warranty of MERCHANTABILITY or
3645  *    FITNESS FOR A PARTICULAR PURPOSE.
3646  *
3647  * 2. The program distribution conditions do not in any way affect the
3648  *    distribution conditions of the FleXML system used to generate this
3649  *    file or any version of FleXML derived from that system.
3650  *
3651  * Notice that these are explicit rights granted to you for files
3652  * generated by the FleXML system.  For your rights in connection with
3653  * the FleXML system itself please consult the GNU General Public License.
3654  * 
3655  * Part B
3656  * ------
3657  * 
3658  * The other parts, here collectively called "Part B", and which came 
3659  * from the DTD used by FleXML to generate this program, can be 
3660  * distributed (or not, as the case may be) under the terms of whoever
3661  * wrote them, provided these terms respect and obey the two conditions 
3662  * above under the heading "Part A".
3663  *
3664  * The author of and contributors to FleXML specifically disclaim
3665  * any copyright interest in "Part B", unless "Part B" was written 
3666  * by the author of or contributors to FleXML.
3667  * 
3668  */
3669
3670 /* Version strings. */
3671 const char rcs_surfxml_flexml_skeleton[] =
3672  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
3673 const char rcs_surfxml_flexml[] =
3674  "$" "Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp $";
3675
3676 /* ANSI headers. */
3677 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
3678 #include <stdio.h>
3679 #include <string.h>
3680 #include <assert.h>
3681 #include <stdarg.h>
3682 #include <ctype.h>
3683      
3684 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
3685 # ifndef __STRICT_ANSI__
3686 #  include <io.h>
3687 #  include <process.h>
3688 # endif
3689 #else
3690 # include <unistd.h>
3691 #endif
3692      
3693 #ifndef FLEXML_INDEXSTACKSIZE
3694 #define FLEXML_INDEXSTACKSIZE 1000
3695 #endif
3696
3697 /* Generated definitions. */
3698 #define FLEXML_yylineno
3699 #ifndef FLEXML_BUFFERSTACKSIZE
3700 #define FLEXML_BUFFERSTACKSIZE 1000000
3701 #endif
3702 #define FLEXML_NEED_BUFFERLIT
3703
3704 /* XML processor api. */
3705 /* FleXML-provided data. */
3706 int surfxml_pcdata_ix;
3707 extern char *surfxml_bufferstack;
3708 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
3709 AT_surfxml_mount_name AX_surfxml_mount_name;
3710 #define A_surfxml_mount_name (surfxml_bufferstack + AX_surfxml_mount_name)
3711 short int surfxml_mount_name_isset;
3712 AT_surfxml_random_generator AX_surfxml_random_generator;
3713 #define A_surfxml_random_generator AX_surfxml_random_generator
3714 short int surfxml_random_generator_isset;
3715 AT_surfxml_ASroute_gw_dst AX_surfxml_ASroute_gw_dst;
3716 #define A_surfxml_ASroute_gw_dst (surfxml_bufferstack + AX_surfxml_ASroute_gw_dst)
3717 short int surfxml_ASroute_gw_dst_isset;
3718 AT_surfxml_trace_connect_element AX_surfxml_trace_connect_element;
3719 #define A_surfxml_trace_connect_element (surfxml_bufferstack + AX_surfxml_trace_connect_element)
3720 short int surfxml_trace_connect_element_isset;
3721 AT_surfxml_prop_id AX_surfxml_prop_id;
3722 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
3723 short int surfxml_prop_id_isset;
3724 AT_surfxml_host_id AX_surfxml_host_id;
3725 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
3726 short int surfxml_host_id_isset;
3727 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
3728 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
3729 short int surfxml_ASroute_symmetrical_isset;
3730 AT_surfxml_peer_lat AX_surfxml_peer_lat;
3731 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
3732 short int surfxml_peer_lat_isset;
3733 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
3734 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
3735 short int surfxml_link_latency_file_isset;
3736 AT_surfxml_peer_availability_file AX_surfxml_peer_availability_file;
3737 #define A_surfxml_peer_availability_file (surfxml_bufferstack + AX_surfxml_peer_availability_file)
3738 short int surfxml_peer_availability_file_isset;
3739 AT_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction;
3740 #define A_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction
3741 short int surfxml_link_ctn_direction_isset;
3742 AT_surfxml_host_state AX_surfxml_host_state;
3743 #define A_surfxml_host_state AX_surfxml_host_state
3744 short int surfxml_host_state_isset;
3745 AT_surfxml_AS_id AX_surfxml_AS_id;
3746 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
3747 short int surfxml_AS_id_isset;
3748 AT_surfxml_host_power AX_surfxml_host_power;
3749 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
3750 short int surfxml_host_power_isset;
3751 AT_surfxml_router_id AX_surfxml_router_id;
3752 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
3753 short int surfxml_router_id_isset;
3754 AT_surfxml_storage_type_id AX_surfxml_storage_type_id;
3755 #define A_surfxml_storage_type_id (surfxml_bufferstack + AX_surfxml_storage_type_id)
3756 short int surfxml_storage_type_id_isset;
3757 AT_surfxml_process_start_time AX_surfxml_process_start_time;
3758 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
3759 short int surfxml_process_start_time_isset;
3760 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
3761 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
3762 short int surfxml_cluster_suffix_isset;
3763 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
3764 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
3765 short int surfxml_ASroute_src_isset;
3766 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
3767 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
3768 short int surfxml_cluster_prefix_isset;
3769 AT_surfxml_trace_file AX_surfxml_trace_file;
3770 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
3771 short int surfxml_trace_file_isset;
3772 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
3773 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
3774 short int surfxml_link_sharing_policy_isset;
3775 AT_surfxml_random_min AX_surfxml_random_min;
3776 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
3777 short int surfxml_random_min_isset;
3778 AT_surfxml_link_ctn_id AX_surfxml_link_ctn_id;
3779 #define A_surfxml_link_ctn_id (surfxml_bufferstack + AX_surfxml_link_ctn_id)
3780 short int surfxml_link_ctn_id_isset;
3781 AT_surfxml_peer_bw_out AX_surfxml_peer_bw_out;
3782 #define A_surfxml_peer_bw_out (surfxml_bufferstack + AX_surfxml_peer_bw_out)
3783 short int surfxml_peer_bw_out_isset;
3784 AT_surfxml_cluster_availability_file AX_surfxml_cluster_availability_file;
3785 #define A_surfxml_cluster_availability_file (surfxml_bufferstack + AX_surfxml_cluster_availability_file)
3786 short int surfxml_cluster_availability_file_isset;
3787 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
3788 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
3789 short int surfxml_process_kill_time_isset;
3790 AT_surfxml_cluster_bb_bw AX_surfxml_cluster_bb_bw;
3791 #define A_surfxml_cluster_bb_bw (surfxml_bufferstack + AX_surfxml_cluster_bb_bw)
3792 short int surfxml_cluster_bb_bw_isset;
3793 AT_surfxml_argument_value AX_surfxml_argument_value;
3794 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
3795 short int surfxml_argument_value_isset;
3796 AT_surfxml_link_state AX_surfxml_link_state;
3797 #define A_surfxml_link_state AX_surfxml_link_state
3798 short int surfxml_link_state_isset;
3799 AT_surfxml_ASroute_gw_src AX_surfxml_ASroute_gw_src;
3800 #define A_surfxml_ASroute_gw_src (surfxml_bufferstack + AX_surfxml_ASroute_gw_src)
3801 short int surfxml_ASroute_gw_src_isset;
3802 AT_surfxml_AS_routing AX_surfxml_AS_routing;
3803 #define A_surfxml_AS_routing (surfxml_bufferstack + AX_surfxml_AS_routing)
3804 short int surfxml_AS_routing_isset;
3805 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
3806 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
3807 short int surfxml_link_bandwidth_isset;
3808 AT_surfxml_cluster_id AX_surfxml_cluster_id;
3809 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
3810 short int surfxml_cluster_id_isset;
3811 AT_surfxml_peer_bw_in AX_surfxml_peer_bw_in;
3812 #define A_surfxml_peer_bw_in (surfxml_bufferstack + AX_surfxml_peer_bw_in)
3813 short int surfxml_peer_bw_in_isset;
3814 AT_surfxml_random_mean AX_surfxml_random_mean;
3815 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
3816 short int surfxml_random_mean_isset;
3817 AT_surfxml_cluster_bb_lat AX_surfxml_cluster_bb_lat;
3818 #define A_surfxml_cluster_bb_lat (surfxml_bufferstack + AX_surfxml_cluster_bb_lat)
3819 short int surfxml_cluster_bb_lat_isset;
3820 AT_surfxml_link_latency AX_surfxml_link_latency;
3821 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
3822 short int surfxml_link_latency_isset;
3823 AT_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind;
3824 #define A_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind
3825 short int surfxml_trace_connect_kind_isset;
3826 AT_surfxml_random_seed AX_surfxml_random_seed;
3827 #define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
3828 short int surfxml_random_seed_isset;
3829 AT_surfxml_cluster_state_file AX_surfxml_cluster_state_file;
3830 #define A_surfxml_cluster_state_file (surfxml_bufferstack + AX_surfxml_cluster_state_file)
3831 short int surfxml_cluster_state_file_isset;
3832 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
3833 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
3834 short int surfxml_link_bandwidth_file_isset;
3835 AT_surfxml_storage_type_content AX_surfxml_storage_type_content;
3836 #define A_surfxml_storage_type_content (surfxml_bufferstack + AX_surfxml_storage_type_content)
3837 short int surfxml_storage_type_content_isset;
3838 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
3839 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
3840 short int surfxml_route_symmetrical_isset;
3841 AT_surfxml_random_id AX_surfxml_random_id;
3842 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
3843 short int surfxml_random_id_isset;
3844 AT_surfxml_mstorage_name AX_surfxml_mstorage_name;
3845 #define A_surfxml_mstorage_name (surfxml_bufferstack + AX_surfxml_mstorage_name)
3846 short int surfxml_mstorage_name_isset;
3847 AT_surfxml_random_max AX_surfxml_random_max;
3848 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
3849 short int surfxml_random_max_isset;
3850 AT_surfxml_link_id AX_surfxml_link_id;
3851 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
3852 short int surfxml_link_id_isset;
3853 AT_surfxml_process_host AX_surfxml_process_host;
3854 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
3855 short int surfxml_process_host_isset;
3856 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
3857 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
3858 short int surfxml_host_availability_file_isset;
3859 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
3860 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
3861 short int surfxml_cluster_lat_isset;
3862 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
3863 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
3864 short int surfxml_trace_periodicity_isset;
3865 AT_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy;
3866 #define A_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy
3867 short int surfxml_cluster_bb_sharing_policy_isset;
3868 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
3869 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
3870 short int surfxml_router_coordinates_isset;
3871 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
3872 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
3873 short int surfxml_peer_coordinates_isset;
3874 AT_surfxml_peer_state_file AX_surfxml_peer_state_file;
3875 #define A_surfxml_peer_state_file (surfxml_bufferstack + AX_surfxml_peer_state_file)
3876 short int surfxml_peer_state_file_isset;
3877 AT_surfxml_prop_value AX_surfxml_prop_value;
3878 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
3879 short int surfxml_prop_value_isset;
3880 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
3881 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
3882 short int surfxml_ASroute_dst_isset;
3883 AT_surfxml_link_state_file AX_surfxml_link_state_file;
3884 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
3885 short int surfxml_link_state_file_isset;
3886 AT_surfxml_random_radical AX_surfxml_random_radical;
3887 #define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
3888 short int surfxml_random_radical_isset;
3889 AT_surfxml_trace_connect_trace AX_surfxml_trace_connect_trace;
3890 #define A_surfxml_trace_connect_trace (surfxml_bufferstack + AX_surfxml_trace_connect_trace)
3891 short int surfxml_trace_connect_trace_isset;
3892 AT_surfxml_mount_id AX_surfxml_mount_id;
3893 #define A_surfxml_mount_id (surfxml_bufferstack + AX_surfxml_mount_id)
3894 short int surfxml_mount_id_isset;
3895 AT_surfxml_storage_type_id AX_surfxml_storage_type_id;
3896 #define A_surfxml_storage_type_id (surfxml_bufferstack + AX_surfxml_storage_type_id)
3897 short int surfxml_storage_type_id_isset;
3898 AT_surfxml_cluster_power AX_surfxml_cluster_power;
3899 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
3900 short int surfxml_cluster_power_isset;
3901 AT_surfxml_process_function AX_surfxml_process_function;
3902 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
3903 short int surfxml_process_function_isset;
3904 AT_surfxml_peer_id AX_surfxml_peer_id;
3905 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
3906 short int surfxml_peer_id_isset;
3907 AT_surfxml_cluster_router_id AX_surfxml_cluster_router_id;
3908 #define A_surfxml_cluster_router_id (surfxml_bufferstack + AX_surfxml_cluster_router_id)
3909 short int surfxml_cluster_router_id_isset;
3910 AT_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy;
3911 #define A_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy
3912 short int surfxml_cluster_sharing_policy_isset;
3913 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
3914 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
3915 short int surfxml_bypassRoute_dst_isset;
3916 AT_surfxml_mstorage_type_id AX_surfxml_mstorage_type_id;
3917 #define A_surfxml_mstorage_type_id (surfxml_bufferstack + AX_surfxml_mstorage_type_id)
3918 short int surfxml_mstorage_type_id_isset;
3919 AT_surfxml_host_core AX_surfxml_host_core;
3920 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
3921 short int surfxml_host_core_isset;
3922 AT_surfxml_host_availability AX_surfxml_host_availability;
3923 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
3924 short int surfxml_host_availability_isset;
3925 AT_surfxml_storage_type_model AX_surfxml_storage_type_model;
3926 #define A_surfxml_storage_type_model (surfxml_bufferstack + AX_surfxml_storage_type_model)
3927 short int surfxml_storage_type_model_isset;
3928 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
3929 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
3930 short int surfxml_bypassRoute_src_isset;
3931 AT_surfxml_route_src AX_surfxml_route_src;
3932 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
3933 short int surfxml_route_src_isset;
3934 AT_surfxml_bypassRoute_gw_dst AX_surfxml_bypassRoute_gw_dst;
3935 #define A_surfxml_bypassRoute_gw_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_gw_dst)
3936 short int surfxml_bypassRoute_gw_dst_isset;
3937 AT_surfxml_storage_id AX_surfxml_storage_id;
3938 #define A_surfxml_storage_id (surfxml_bufferstack + AX_surfxml_storage_id)
3939 short int surfxml_storage_id_isset;
3940 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
3941 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
3942 short int surfxml_host_coordinates_isset;
3943 AT_surfxml_trace_id AX_surfxml_trace_id;
3944 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
3945 short int surfxml_trace_id_isset;
3946 AT_surfxml_peer_power AX_surfxml_peer_power;
3947 #define A_surfxml_peer_power (surfxml_bufferstack + AX_surfxml_peer_power)
3948 short int surfxml_peer_power_isset;
3949 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
3950 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
3951 short int surfxml_cluster_radical_isset;
3952 AT_surfxml_config_id AX_surfxml_config_id;
3953 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
3954 short int surfxml_config_id_isset;
3955 AT_surfxml_bypassRoute_gw_src AX_surfxml_bypassRoute_gw_src;
3956 #define A_surfxml_bypassRoute_gw_src (surfxml_bufferstack + AX_surfxml_bypassRoute_gw_src)
3957 short int surfxml_bypassRoute_gw_src_isset;
3958 AT_surfxml_include_file AX_surfxml_include_file;
3959 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
3960 short int surfxml_include_file_isset;
3961 AT_surfxml_random_std_deviation AX_surfxml_random_std_deviation;
3962 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
3963 short int surfxml_random_std_deviation_isset;
3964 AT_surfxml_cluster_core AX_surfxml_cluster_core;
3965 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
3966 short int surfxml_cluster_core_isset;
3967 AT_surfxml_host_state_file AX_surfxml_host_state_file;
3968 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
3969 short int surfxml_host_state_file_isset;
3970 AT_surfxml_route_dst AX_surfxml_route_dst;
3971 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
3972 short int surfxml_route_dst_isset;
3973 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
3974 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
3975 short int surfxml_cluster_bw_isset;
3976 AT_surfxml_platform_version AX_surfxml_platform_version;
3977 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
3978 short int surfxml_platform_version_isset;
3979
3980 /* XML state. */
3981 #ifdef FLEX_DEBUG
3982 # define ENTER(state)   debug_enter(state,#state)
3983 # define LEAVE          debug_leave()
3984 # define SET(state)     debug_set(state,#state)
3985   static void debug_enter(int, const char*);
3986   static void debug_leave(void);
3987   static void debug_set(int, const char*);
3988 #else
3989 # define ENTER(state)   (yy_push_state(state))
3990 # define LEAVE          (yy_pop_state())
3991 # define SET(state)     BEGIN(state)
3992 #endif
3993
3994 /* Generic actions. */
3995 #define SKIP    /*skip*/
3996 #define SUCCEED        CLEANUP; return 0
3997
3998 #define FAIL    return fail
3999 static int fail(const char*, ...);
4000
4001 enum {flexml_max_err_msg_size = 512};
4002 static char flexml_err_msg[flexml_max_err_msg_size];
4003 const char * surfxml_parse_err_msg()
4004 {
4005     return flexml_err_msg;
4006 }
4007 static void reset_surfxml_parse_err_msg()
4008 {
4009     flexml_err_msg[0] = '\0';
4010 }
4011
4012 /* Cleanup */
4013 static void cleanup(void);
4014 #define CLEANUP  cleanup()
4015
4016 /* Text buffer stack handling. */
4017 char *surfxml_bufferstack = NULL;
4018 static int blimit = FLEXML_BUFFERSTACKSIZE;
4019 static int bnext = 1;
4020
4021 static int *indexstack = NULL;
4022 static int ilimit = FLEXML_INDEXSTACKSIZE;
4023 static int inext = 1;
4024
4025 #define BUFFERSET(P)  (P = bnext)
4026 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
4027 #define BUFFERDONE    (BUFFERPUTC('\0'))
4028
4029 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
4030
4031 /* after this is called, there are at least 2 slots left in the stack */
4032 static int ck_blimit()
4033 {
4034      if (bnext >= blimit) {
4035          blimit += FLEXML_BUFFERSTACKSIZE + 2;
4036          {
4037              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
4038              assert(temp);
4039              surfxml_bufferstack = temp;
4040          }
4041      }
4042      return 0;
4043 }
4044
4045 /* after this is called, there are at least 2 slots left in the stack */
4046 static int ck_ilimit()
4047 {
4048      if (inext >= ilimit) {
4049          ilimit += FLEXML_INDEXSTACKSIZE + 2;
4050          {
4051              int *temp = (int *) realloc(indexstack, ilimit);
4052              assert(temp);
4053              indexstack = temp;
4054          }
4055      }
4056      return 0;
4057 }
4058
4059 #ifdef FLEXML_NEED_BUFFERLIT
4060 static void surfxml_bufferliteral(char c, int* pp, const char* text)
4061 {
4062   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
4063   assert(s <= e); BUFFERSET(*pp);
4064   while (++s<e) {
4065     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
4066     else BUFFERPUTC(*s);
4067   }
4068   BUFFERDONE;
4069 }
4070 #endif
4071
4072 static void pushbuffer(int p)
4073 {
4074     ck_ilimit();
4075     indexstack[inext++] = p;
4076     indexstack[inext++] = bnext;    
4077 }
4078
4079 static int popbuffer(void)
4080 {
4081     assert(inext >= 2);
4082     bnext = indexstack[--inext];
4083     return indexstack[--inext];
4084 }
4085
4086 /* General internal entities are `unput' back onto the input stream... */
4087 #define ENTITYTEXT(T) \
4088   { char *s = (T), *e = s+strlen(s);\
4089     while (--e >= s) { unput(*e); }}
4090
4091 /* Flex standard options. */
4092 #define YY_NO_INPUT 1
4093 /* Flex user-requested options. */
4094 /* XML character classes (currently restricted to ASCII). */
4095 /* "Common syntactic structures." */
4096 /* "Names and Tokens." */
4097 /* Miscellaneous. */
4098 /* Parser states (flex `exclusive start conditions'):
4099  *
4100  * PROLOG       the XML prolog of the document before <?xml...>
4101  * DOCTYPE      the XML prolog of the document after <?xml...>
4102  * EPILOG       after the root element
4103  * INCOMMENT    inside an XML comment <!--....-->
4104  * INPI         inside an XML PI <?...?>
4105  * VALUE1       inside a '...'-delimited literal
4106  * VALUE2       inside a "..."-delimited literal
4107  * CDATA        inside a <![CDATA[...] ]> section.
4108  * ROOT_<tag>   expect root element <tag>
4109  * AL_<tag>     inside the attribute list for <tag>
4110  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
4111  * IMPOSSIBLE   dummy to permit disabling rules; must be last
4112  */
4113
4114 /* State names. */
4115 const char* *surfxml_statenames=NULL;
4116
4117 #define INITIAL 0
4118 #define PROLOG 1
4119 #define DOCTYPE 2
4120 #define EPILOG 3
4121 #define INCOMMENT 4
4122 #define INPI 5
4123 #define VALUE1 6
4124 #define VALUE2 7
4125 #define CDATA 8
4126 #define ROOT_surfxml_platform 9
4127 #define AL_surfxml_platform 10
4128 #define S_surfxml_platform 11
4129 #define S_surfxml_platform_1 12
4130 #define S_surfxml_platform_2 13
4131 #define S_surfxml_platform_3 14
4132 #define S_surfxml_platform_4 15
4133 #define S_surfxml_platform_5 16
4134 #define S_surfxml_platform_6 17
4135 #define S_surfxml_platform_7 18
4136 #define S_surfxml_platform_8 19
4137 #define E_surfxml_platform 20
4138 #define AL_surfxml_include 21
4139 #define E_surfxml_include 22
4140 #define AL_surfxml_trace 23
4141 #define IN_trace 24
4142 #define AL_surfxml_random 25
4143 #define S_surfxml_random 26
4144 #define S_surfxml_random_1 27
4145 #define S_surfxml_random_2 28
4146 #define E_surfxml_random 29
4147 #define AL_surfxml_trace_connect 30
4148 #define E_surfxml_trace_connect 31
4149 #define AL_surfxml_AS 32
4150 #define S_surfxml_AS 33
4151 #define S_surfxml_AS_1 34
4152 #define S_surfxml_AS_2 35
4153 #define S_surfxml_AS_3 36
4154 #define S_surfxml_AS_4 37
4155 #define S_surfxml_AS_5 38
4156 #define S_surfxml_AS_6 39
4157 #define S_surfxml_AS_7 40
4158 #define S_surfxml_AS_8 41
4159 #define S_surfxml_AS_9 42
4160 #define S_surfxml_AS_10 43
4161 #define S_surfxml_AS_11 44
4162 #define S_surfxml_AS_12 45
4163 #define S_surfxml_AS_13 46
4164 #define E_surfxml_AS 47
4165 #define AL_surfxml_storage_type 48
4166 #define S_surfxml_storage_type 49
4167 #define S_surfxml_storage_type_1 50
4168 #define S_surfxml_storage_type_2 51
4169 #define E_surfxml_storage_type 52
4170 #define AL_surfxml_storage 53
4171 #define S_surfxml_storage 54
4172 #define S_surfxml_storage_1 55
4173 #define S_surfxml_storage_2 56
4174 #define E_surfxml_storage 57
4175 #define AL_surfxml_mount 58
4176 #define E_surfxml_mount 59
4177 #define AL_surfxml_mstorage 60
4178 #define E_surfxml_mstorage 61
4179 #define AL_surfxml_host 62
4180 #define S_surfxml_host 63
4181 #define S_surfxml_host_1 64
4182 #define S_surfxml_host_2 65
4183 #define E_surfxml_host 66
4184 #define AL_surfxml_cluster 67
4185 #define E_surfxml_cluster 68
4186 #define AL_surfxml_peer 69
4187 #define E_surfxml_peer 70
4188 #define AL_surfxml_router 71
4189 #define E_surfxml_router 72
4190 #define AL_surfxml_link 73
4191 #define S_surfxml_link 74
4192 #define S_surfxml_link_1 75
4193 #define S_surfxml_link_2 76
4194 #define E_surfxml_link 77
4195 #define AL_surfxml_route 78
4196 #define S_surfxml_route 79
4197 #define S_surfxml_route_1 80
4198 #define S_surfxml_route_2 81
4199 #define E_surfxml_route 82
4200 #define AL_surfxml_ASroute 83
4201 #define S_surfxml_ASroute 84
4202 #define S_surfxml_ASroute_1 85
4203 #define S_surfxml_ASroute_2 86
4204 #define E_surfxml_ASroute 87
4205 #define AL_surfxml_link_ctn 88
4206 #define E_surfxml_link_ctn 89
4207 #define AL_surfxml_bypassRoute 90
4208 #define S_surfxml_bypassRoute 91
4209 #define S_surfxml_bypassRoute_1 92
4210 #define S_surfxml_bypassRoute_2 93
4211 #define E_surfxml_bypassRoute 94
4212 #define AL_surfxml_process 95
4213 #define S_surfxml_process 96
4214 #define S_surfxml_process_1 97
4215 #define S_surfxml_process_2 98
4216 #define E_surfxml_process 99
4217 #define AL_surfxml_argument 100
4218 #define E_surfxml_argument 101
4219 #define AL_surfxml_config 102
4220 #define S_surfxml_config 103
4221 #define S_surfxml_config_1 104
4222 #define S_surfxml_config_2 105
4223 #define E_surfxml_config 106
4224 #define AL_surfxml_prop 107
4225 #define E_surfxml_prop 108
4226 #define IMPOSSIBLE 109
4227
4228 #ifndef YY_NO_UNISTD_H
4229 /* Special case for "unistd.h", since it is non-ANSI. We include it way
4230  * down here because we want the user's section 1 to have been scanned first.
4231  * The user has a chance to override it with an option.
4232  */
4233 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
4234 #  ifndef __STRICT_ANSI__
4235 #    include <io.h>
4236 #    include <process.h>
4237 #  endif
4238 #else
4239 #  include <unistd.h>
4240 #endif
4241 #endif
4242
4243 #ifndef YY_EXTRA_TYPE
4244 #define YY_EXTRA_TYPE void *
4245 #endif
4246
4247 static int yy_init_globals (void );
4248
4249 /* Accessor methods to globals.
4250    These are made visible to non-reentrant scanners for convenience. */
4251
4252 int surf_parse_lex_destroy (void );
4253
4254 int surf_parse_get_debug (void );
4255
4256 void surf_parse_set_debug (int debug_flag  );
4257
4258 YY_EXTRA_TYPE surf_parse_get_extra (void );
4259
4260 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
4261
4262 FILE *surf_parse_get_in (void );
4263
4264 void surf_parse_set_in  (FILE * in_str  );
4265
4266 FILE *surf_parse_get_out (void );
4267
4268 void surf_parse_set_out  (FILE * out_str  );
4269
4270 int surf_parse_get_leng (void );
4271
4272 char *surf_parse_get_text (void );
4273
4274 int surf_parse_get_lineno (void );
4275
4276 void surf_parse_set_lineno (int line_number  );
4277
4278 /* Macros after this point can all be overridden by user definitions in
4279  * section 1.
4280  */
4281
4282 #ifndef YY_SKIP_YYWRAP
4283 #ifdef __cplusplus
4284 extern "C" int surf_parse_wrap (void );
4285 #else
4286 extern int surf_parse_wrap (void );
4287 #endif
4288 #endif
4289
4290 #ifndef yytext_ptr
4291 static void yy_flex_strncpy (char *,yyconst char *,int );
4292 #endif
4293
4294 #ifdef YY_NEED_STRLEN
4295 static int yy_flex_strlen (yyconst char * );
4296 #endif
4297
4298 #ifndef YY_NO_INPUT
4299
4300 #ifdef __cplusplus
4301 static int yyinput (void );
4302 #else
4303 static int input (void );
4304 #endif
4305
4306 #endif
4307
4308         static int yy_start_stack_ptr = 0;
4309         static int yy_start_stack_depth = 0;
4310         static int *yy_start_stack = NULL;
4311     
4312     static void yy_push_state (int new_state );
4313     
4314     static void yy_pop_state (void );
4315     
4316 /* Amount of stuff to slurp up with each read. */
4317 #ifndef YY_READ_BUF_SIZE
4318 #ifdef __ia64__
4319 /* On IA-64, the buffer size is 16k, not 8k */
4320 #define YY_READ_BUF_SIZE 16384
4321 #else
4322 #define YY_READ_BUF_SIZE 8192
4323 #endif /* __ia64__ */
4324 #endif
4325
4326 /* Copy whatever the last rule matched to the standard output. */
4327 #ifndef ECHO
4328 /* This used to be an fputs(), but since the string might contain NUL's,
4329  * we now use fwrite().
4330  */
4331 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
4332 #endif
4333
4334 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
4335  * is returned in "result".
4336  */
4337 #ifndef YY_INPUT
4338 #define YY_INPUT(buf,result,max_size) \
4339         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
4340                 { \
4341                 int c = '*'; \
4342                 size_t n; \
4343                 for ( n = 0; n < max_size && \
4344                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
4345                         buf[n] = (char) c; \
4346                 if ( c == '\n' ) \
4347                         buf[n++] = (char) c; \
4348                 if ( c == EOF && ferror( surf_parse_in ) ) \
4349                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
4350                 result = n; \
4351                 } \
4352         else \
4353                 { \
4354                 errno=0; \
4355                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
4356                         { \
4357                         if( errno != EINTR) \
4358                                 { \
4359                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
4360                                 break; \
4361                                 } \
4362                         errno=0; \
4363                         clearerr(surf_parse_in); \
4364                         } \
4365                 }\
4366 \
4367
4368 #endif
4369
4370 /* No semi-colon after return; correct usage is to write "yyterminate();" -
4371  * we don't want an extra ';' after the "return" because that will cause
4372  * some compilers to complain about unreachable statements.
4373  */
4374 #ifndef yyterminate
4375 #define yyterminate() return YY_NULL
4376 #endif
4377
4378 /* Number of entries by which start-condition stack grows. */
4379 #ifndef YY_START_STACK_INCR
4380 #define YY_START_STACK_INCR 25
4381 #endif
4382
4383 /* Report a fatal error. */
4384 #ifndef YY_FATAL_ERROR
4385 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
4386 #endif
4387
4388 /* end tables serialization structures and prototypes */
4389
4390 /* Default declaration of generated scanner - a define so the user can
4391  * easily add parameters.
4392  */
4393 #ifndef YY_DECL
4394 #define YY_DECL_IS_OURS 1
4395
4396 extern int surf_parse_lex (void);
4397
4398 #define YY_DECL int surf_parse_lex (void)
4399 #endif /* !YY_DECL */
4400
4401 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
4402  * have been set up.
4403  */
4404 #ifndef YY_USER_ACTION
4405 #define YY_USER_ACTION
4406 #endif
4407
4408 /* Code executed at the end of each rule. */
4409 #ifndef YY_BREAK
4410 #define YY_BREAK break;
4411 #endif
4412
4413 #define YY_RULE_SETUP \
4414         YY_USER_ACTION
4415
4416 /** The main scanner function which does all the work.
4417  */
4418 YY_DECL
4419 {
4420         register yy_state_type yy_current_state;
4421         register char *yy_cp, *yy_bp;
4422         register int yy_act;
4423     
4424  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
4425  SET(PROLOG);
4426  reset_surfxml_parse_err_msg();
4427  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
4428  assert(surfxml_bufferstack);
4429  #ifdef FLEX_DEBUG
4430  {
4431      int i;
4432      for (i = 0; i < blimit; i++) {
4433          surfxml_bufferstack[i] = '\377';
4434      }
4435  }
4436  #endif
4437  surfxml_bufferstack[0] = '\0';
4438  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
4439  assert(indexstack);
4440  indexstack[0] = 0;
4441
4442   /* FleXML_init */
4443   bnext = inext = 1;
4444   surfxml_bufferliteral('\0', &bnext, "0.0");
4445   surfxml_bufferliteral('\0', &bnext, "2147483647");
4446   surfxml_bufferliteral('\0', &bnext, "1");
4447   surfxml_bufferliteral('\0', &bnext, "1.0");
4448   surfxml_bufferliteral('\0', &bnext, "1");
4449   surfxml_bufferliteral('\0', &bnext, "0.0");
4450   surfxml_bufferliteral('\0', &bnext, "-1.0");
4451   surfxml_bufferliteral('\0', &bnext, "-1.0");
4452   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
4453   surfxml_statenames[PROLOG] = NULL;
4454   surfxml_statenames[DOCTYPE] = NULL;
4455   surfxml_statenames[EPILOG] = NULL;
4456   surfxml_statenames[INCOMMENT] = NULL;
4457   surfxml_statenames[INPI] = NULL;
4458   surfxml_statenames[VALUE1] = NULL;
4459   surfxml_statenames[VALUE2] = NULL;
4460   surfxml_statenames[CDATA] = NULL;
4461   surfxml_statenames[ROOT_surfxml_platform] = NULL;
4462   surfxml_statenames[AL_surfxml_platform] = NULL;
4463   surfxml_statenames[S_surfxml_platform] = "platform";
4464   surfxml_statenames[S_surfxml_platform_1] = "platform";
4465   surfxml_statenames[S_surfxml_platform_2] = "platform";
4466   surfxml_statenames[S_surfxml_platform_3] = "platform";
4467   surfxml_statenames[S_surfxml_platform_4] = "platform";
4468   surfxml_statenames[S_surfxml_platform_5] = "platform";
4469   surfxml_statenames[S_surfxml_platform_6] = "platform";
4470   surfxml_statenames[S_surfxml_platform_7] = "platform";
4471   surfxml_statenames[S_surfxml_platform_8] = "platform";
4472   surfxml_statenames[E_surfxml_platform] = "platform";
4473   surfxml_statenames[AL_surfxml_include] = NULL;
4474   surfxml_statenames[E_surfxml_include] = "include";
4475   surfxml_statenames[AL_surfxml_trace] = NULL;
4476   surfxml_statenames[IN_trace] = "trace";
4477   surfxml_statenames[AL_surfxml_random] = NULL;
4478   surfxml_statenames[S_surfxml_random] = "random";
4479   surfxml_statenames[S_surfxml_random_1] = "random";
4480   surfxml_statenames[S_surfxml_random_2] = "random";
4481   surfxml_statenames[E_surfxml_random] = "random";
4482   surfxml_statenames[AL_surfxml_trace_connect] = NULL;
4483   surfxml_statenames[E_surfxml_trace_connect] = "trace_connect";
4484   surfxml_statenames[AL_surfxml_AS] = NULL;
4485   surfxml_statenames[S_surfxml_AS] = "AS";
4486   surfxml_statenames[S_surfxml_AS_1] = "AS";
4487   surfxml_statenames[S_surfxml_AS_2] = "AS";
4488   surfxml_statenames[S_surfxml_AS_3] = "AS";
4489   surfxml_statenames[S_surfxml_AS_4] = "AS";
4490   surfxml_statenames[S_surfxml_AS_5] = "AS";
4491   surfxml_statenames[S_surfxml_AS_6] = "AS";
4492   surfxml_statenames[S_surfxml_AS_7] = "AS";
4493   surfxml_statenames[S_surfxml_AS_8] = "AS";
4494   surfxml_statenames[S_surfxml_AS_9] = "AS";
4495   surfxml_statenames[S_surfxml_AS_10] = "AS";
4496   surfxml_statenames[S_surfxml_AS_11] = "AS";
4497   surfxml_statenames[S_surfxml_AS_12] = "AS";
4498   surfxml_statenames[S_surfxml_AS_13] = "AS";
4499   surfxml_statenames[E_surfxml_AS] = "AS";
4500   surfxml_statenames[AL_surfxml_storage_type] = NULL;
4501   surfxml_statenames[S_surfxml_storage_type] = "storage_type";
4502   surfxml_statenames[S_surfxml_storage_type_1] = "storage_type";
4503   surfxml_statenames[S_surfxml_storage_type_2] = "storage_type";
4504   surfxml_statenames[E_surfxml_storage_type] = "storage_type";
4505   surfxml_statenames[AL_surfxml_storage] = NULL;
4506   surfxml_statenames[S_surfxml_storage] = "storage";
4507   surfxml_statenames[S_surfxml_storage_1] = "storage";
4508   surfxml_statenames[S_surfxml_storage_2] = "storage";
4509   surfxml_statenames[E_surfxml_storage] = "storage";
4510   surfxml_statenames[AL_surfxml_mount] = NULL;
4511   surfxml_statenames[E_surfxml_mount] = "mount";
4512   surfxml_statenames[AL_surfxml_mstorage] = NULL;
4513   surfxml_statenames[E_surfxml_mstorage] = "mstorage";
4514   surfxml_statenames[AL_surfxml_host] = NULL;
4515   surfxml_statenames[S_surfxml_host] = "host";
4516   surfxml_statenames[S_surfxml_host_1] = "host";
4517   surfxml_statenames[S_surfxml_host_2] = "host";
4518   surfxml_statenames[E_surfxml_host] = "host";
4519   surfxml_statenames[AL_surfxml_cluster] = NULL;
4520   surfxml_statenames[E_surfxml_cluster] = "cluster";
4521   surfxml_statenames[AL_surfxml_peer] = NULL;
4522   surfxml_statenames[E_surfxml_peer] = "peer";
4523   surfxml_statenames[AL_surfxml_router] = NULL;
4524   surfxml_statenames[E_surfxml_router] = "router";
4525   surfxml_statenames[AL_surfxml_link] = NULL;
4526   surfxml_statenames[S_surfxml_link] = "link";
4527   surfxml_statenames[S_surfxml_link_1] = "link";
4528   surfxml_statenames[S_surfxml_link_2] = "link";
4529   surfxml_statenames[E_surfxml_link] = "link";
4530   surfxml_statenames[AL_surfxml_route] = NULL;
4531   surfxml_statenames[S_surfxml_route] = "route";
4532   surfxml_statenames[S_surfxml_route_1] = "route";
4533   surfxml_statenames[S_surfxml_route_2] = "route";
4534   surfxml_statenames[E_surfxml_route] = "route";
4535   surfxml_statenames[AL_surfxml_ASroute] = NULL;
4536   surfxml_statenames[S_surfxml_ASroute] = "ASroute";
4537   surfxml_statenames[S_surfxml_ASroute_1] = "ASroute";
4538   surfxml_statenames[S_surfxml_ASroute_2] = "ASroute";
4539   surfxml_statenames[E_surfxml_ASroute] = "ASroute";
4540   surfxml_statenames[AL_surfxml_link_ctn] = NULL;
4541   surfxml_statenames[E_surfxml_link_ctn] = "link_ctn";
4542   surfxml_statenames[AL_surfxml_bypassRoute] = NULL;
4543   surfxml_statenames[S_surfxml_bypassRoute] = "bypassRoute";
4544   surfxml_statenames[S_surfxml_bypassRoute_1] = "bypassRoute";
4545   surfxml_statenames[S_surfxml_bypassRoute_2] = "bypassRoute";
4546   surfxml_statenames[E_surfxml_bypassRoute] = "bypassRoute";
4547   surfxml_statenames[AL_surfxml_process] = NULL;
4548   surfxml_statenames[S_surfxml_process] = "process";
4549   surfxml_statenames[S_surfxml_process_1] = "process";
4550   surfxml_statenames[S_surfxml_process_2] = "process";
4551   surfxml_statenames[E_surfxml_process] = "process";
4552   surfxml_statenames[AL_surfxml_argument] = NULL;
4553   surfxml_statenames[E_surfxml_argument] = "argument";
4554   surfxml_statenames[AL_surfxml_config] = NULL;
4555   surfxml_statenames[S_surfxml_config] = "config";
4556   surfxml_statenames[S_surfxml_config_1] = "config";
4557   surfxml_statenames[S_surfxml_config_2] = "config";
4558   surfxml_statenames[E_surfxml_config] = "config";
4559   surfxml_statenames[AL_surfxml_prop] = NULL;
4560   surfxml_statenames[E_surfxml_prop] = "prop";
4561   }
4562
4563  /* COMMENTS and PIs: handled uniformly for efficiency. */
4564
4565         if ( !(yy_init) )
4566                 {
4567                 (yy_init) = 1;
4568
4569 #ifdef YY_USER_INIT
4570                 YY_USER_INIT;
4571 #endif
4572
4573                 if ( ! (yy_start) )
4574                         (yy_start) = 1; /* first start state */
4575
4576                 if ( ! surf_parse_in )
4577                         surf_parse_in = stdin;
4578
4579                 if ( ! surf_parse_out )
4580                         surf_parse_out = stdout;
4581
4582                 if ( ! YY_CURRENT_BUFFER ) {
4583                         surf_parse_ensure_buffer_stack ();
4584                         YY_CURRENT_BUFFER_LVALUE =
4585                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
4586                 }
4587
4588                 surf_parse__load_buffer_state( );
4589                 }
4590
4591         while ( 1 )             /* loops until end-of-file is reached */
4592                 {
4593                 yy_cp = (yy_c_buf_p);
4594
4595                 /* Support of surf_parse_text. */
4596                 *yy_cp = (yy_hold_char);
4597
4598                 /* yy_bp points to the position in yy_ch_buf of the start of
4599                  * the current run.
4600                  */
4601                 yy_bp = yy_cp;
4602
4603                 yy_current_state = (yy_start);
4604 yy_match:
4605                 do
4606                         {
4607                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
4608                         if ( yy_accept[yy_current_state] )
4609                                 {
4610                                 (yy_last_accepting_state) = yy_current_state;
4611                                 (yy_last_accepting_cpos) = yy_cp;
4612                                 }
4613                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4614                                 {
4615                                 yy_current_state = (int) yy_def[yy_current_state];
4616                                 if ( yy_current_state >= 2697 )
4617                                         yy_c = yy_meta[(unsigned int) yy_c];
4618                                 }
4619                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4620                         ++yy_cp;
4621                         }
4622                 while ( yy_base[yy_current_state] != 9610 );
4623
4624 yy_find_action:
4625                 yy_act = yy_accept[yy_current_state];
4626                 if ( yy_act == 0 )
4627                         { /* have to back up */
4628                         yy_cp = (yy_last_accepting_cpos);
4629                         yy_current_state = (yy_last_accepting_state);
4630                         yy_act = yy_accept[yy_current_state];
4631                         }
4632
4633                 YY_DO_BEFORE_ACTION;
4634
4635                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
4636                         {
4637                         int yyl;
4638                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
4639                                 if ( surf_parse_text[yyl] == '\n' )
4640                                            
4641     surf_parse_lineno++;
4642 ;
4643                         }
4644
4645 do_action:      /* This label is used only to access EOF actions. */
4646
4647                 switch ( yy_act )
4648         { /* beginning of action switch */
4649                         case 0: /* must back up */
4650                         /* undo the effects of YY_DO_BEFORE_ACTION */
4651                         *yy_cp = (yy_hold_char);
4652                         yy_cp = (yy_last_accepting_cpos);
4653                         yy_current_state = (yy_last_accepting_state);
4654                         goto yy_find_action;
4655
4656 case 1:
4657 YY_RULE_SETUP
4658 ENTER(INCOMMENT);
4659         YY_BREAK
4660 case 2:
4661 YY_RULE_SETUP
4662 ENTER(INPI);
4663         YY_BREAK
4664
4665 case 3:
4666 YY_RULE_SETUP
4667 LEAVE;
4668         YY_BREAK
4669 case 4:
4670 case 5:
4671 case 6:
4672 /* rule 6 can match eol */
4673 YY_RULE_SETUP
4674 SKIP;
4675         YY_BREAK
4676 case YY_STATE_EOF(INCOMMENT):
4677 FAIL("EOF in comment.");
4678         YY_BREAK
4679
4680 case 7:
4681 YY_RULE_SETUP
4682 LEAVE;
4683         YY_BREAK
4684 case 8:
4685 case 9:
4686 /* rule 9 can match eol */
4687 YY_RULE_SETUP
4688 SKIP;
4689         YY_BREAK
4690 case YY_STATE_EOF(INPI):
4691 FAIL("EOF in PI (processing instruction).");
4692         YY_BREAK
4693
4694 /* SPACES: skipped uniformly */
4695 case 10:
4696 /* rule 10 can match eol */
4697 YY_RULE_SETUP
4698 SKIP;
4699         YY_BREAK
4700 /* PROLOG: determine root element and process it. */
4701
4702 case 11:
4703 /* rule 11 can match eol */
4704 YY_RULE_SETUP
4705 SET(DOCTYPE); 
4706         YY_BREAK
4707 case 12:
4708 /* rule 12 can match eol */
4709 YY_RULE_SETUP
4710 FAIL("Bad declaration %s.",surf_parse_text);
4711         YY_BREAK
4712
4713 case 13:
4714 /* rule 13 can match eol */
4715 YY_RULE_SETUP
4716 SET(ROOT_surfxml_platform);
4717         YY_BREAK
4718 case 14:
4719 /* rule 14 can match eol */
4720 YY_RULE_SETUP
4721 FAIL("Bad declaration %s.",surf_parse_text);
4722         YY_BREAK
4723 case 15:
4724 YY_RULE_SETUP
4725 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
4726         YY_BREAK
4727 case YY_STATE_EOF(PROLOG):
4728 case YY_STATE_EOF(DOCTYPE):
4729 FAIL("EOF in prolog.");
4730         YY_BREAK
4731
4732 /* RULES DERIVED FROM DTD. */
4733 /* <!-- Small DTD for SURF based tools. -->  */
4734 case 16:
4735 /* rule 16 can match eol */
4736 YY_RULE_SETUP
4737 FAIL("Starting tag <platform> is not allowed here.");
4738         YY_BREAK
4739 case 17:
4740 /* rule 17 can match eol */
4741 YY_RULE_SETUP
4742 {
4743   AX_surfxml_platform_version = 1;
4744   surfxml_platform_version_isset = 0;
4745   ENTER(AL_surfxml_platform); pushbuffer(0);
4746   }
4747         YY_BREAK
4748
4749 case 18:
4750 /* rule 18 can match eol */
4751 YY_RULE_SETUP
4752 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");} surfxml_platform_version_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
4753         YY_BREAK
4754 case 19:
4755 /* rule 19 can match eol */
4756 YY_RULE_SETUP
4757 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");}  surfxml_platform_version_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
4758         YY_BREAK
4759 case 20:
4760 YY_RULE_SETUP
4761 {
4762   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
4763  }
4764         YY_BREAK
4765 case 21:
4766 YY_RULE_SETUP
4767 {
4768   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
4769   switch (YY_START) {
4770    case ROOT_surfxml_platform: SET(EPILOG); break;
4771   }
4772  }
4773         YY_BREAK
4774 case 22:
4775 YY_RULE_SETUP
4776 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
4777         YY_BREAK
4778 case 23:
4779 YY_RULE_SETUP
4780 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
4781         YY_BREAK
4782 case YY_STATE_EOF(AL_surfxml_platform):
4783 FAIL("EOF in attribute list of `platform' element.");
4784         YY_BREAK
4785
4786 case 24:
4787 /* rule 24 can match eol */
4788 YY_RULE_SETUP
4789 {
4790   LEAVE;
4791   ETag_surfxml_platform();
4792   popbuffer(); /* attribute */
4793   switch (YY_START) {
4794    case ROOT_surfxml_platform: SET(EPILOG); break;
4795   }
4796  }
4797         YY_BREAK
4798 case 25:
4799 /* rule 25 can match eol */
4800 YY_RULE_SETUP
4801 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
4802         YY_BREAK
4803 case 26:
4804 YY_RULE_SETUP
4805 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
4806         YY_BREAK
4807 case YY_STATE_EOF(S_surfxml_platform_8):
4808 case YY_STATE_EOF(S_surfxml_platform_1):
4809 case YY_STATE_EOF(S_surfxml_platform_3):
4810 case YY_STATE_EOF(S_surfxml_platform):
4811 case YY_STATE_EOF(S_surfxml_platform_4):
4812 case YY_STATE_EOF(S_surfxml_platform_6):
4813 case YY_STATE_EOF(E_surfxml_platform):
4814 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</platform>' expected.");
4815         YY_BREAK
4816
4817 case 27:
4818 /* rule 27 can match eol */
4819 YY_RULE_SETUP
4820 FAIL("Starting tag <include> is not allowed here.");
4821         YY_BREAK
4822 case 28:
4823 /* rule 28 can match eol */
4824 YY_RULE_SETUP
4825 {
4826   AX_surfxml_include_file = 0;
4827   surfxml_include_file_isset = 0;
4828   ENTER(AL_surfxml_include); pushbuffer(0);
4829   }
4830         YY_BREAK
4831
4832 case 29:
4833 /* rule 29 can match eol */
4834 YY_RULE_SETUP
4835 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");} surfxml_include_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
4836         YY_BREAK
4837 case 30:
4838 /* rule 30 can match eol */
4839 YY_RULE_SETUP
4840 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");}  surfxml_include_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
4841         YY_BREAK
4842 case 31:
4843 YY_RULE_SETUP
4844 {
4845   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
4846   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(E_surfxml_include);
4847  }
4848         YY_BREAK
4849 case 32:
4850 YY_RULE_SETUP
4851 {
4852   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
4853   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
4854   switch (YY_START) {
4855    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4856    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4857    case S_surfxml_platform_5: SET(S_surfxml_platform_6); break;
4858    case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_6: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_8); break;
4859   }
4860  }
4861         YY_BREAK
4862 case 33:
4863 YY_RULE_SETUP
4864 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
4865         YY_BREAK
4866 case 34:
4867 YY_RULE_SETUP
4868 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
4869         YY_BREAK
4870 case YY_STATE_EOF(AL_surfxml_include):
4871 FAIL("EOF in attribute list of `include' element.");
4872         YY_BREAK
4873
4874 case 35:
4875 /* rule 35 can match eol */
4876 YY_RULE_SETUP
4877 {
4878   LEAVE;
4879   ETag_surfxml_include();
4880   popbuffer(); /* attribute */
4881   switch (YY_START) {
4882    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4883    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4884    case S_surfxml_platform_5: SET(S_surfxml_platform_6); break;
4885    case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_6: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_8); break;
4886   }
4887  }
4888         YY_BREAK
4889 case 36:
4890 /* rule 36 can match eol */
4891 YY_RULE_SETUP
4892 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
4893         YY_BREAK
4894 case 37:
4895 YY_RULE_SETUP
4896 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
4897         YY_BREAK
4898 case YY_STATE_EOF(E_surfxml_include):
4899 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</include>' expected.");
4900         YY_BREAK
4901
4902 case 38:
4903 /* rule 38 can match eol */
4904 YY_RULE_SETUP
4905 FAIL("Starting tag <trace> is not allowed here.");
4906         YY_BREAK
4907 case 39:
4908 /* rule 39 can match eol */
4909 YY_RULE_SETUP
4910 {
4911   AX_surfxml_trace_id = 0;
4912   surfxml_trace_id_isset = 0;
4913   AX_surfxml_trace_file = 0;
4914   surfxml_trace_file_isset = 0;
4915   AX_surfxml_trace_periodicity = 0;
4916   surfxml_trace_periodicity_isset = 0;
4917   ENTER(AL_surfxml_trace); pushbuffer(0);
4918   }
4919         YY_BREAK
4920
4921 case 40:
4922 /* rule 40 can match eol */
4923 YY_RULE_SETUP
4924 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");} surfxml_trace_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
4925         YY_BREAK
4926 case 41:
4927 /* rule 41 can match eol */
4928 YY_RULE_SETUP
4929 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");}  surfxml_trace_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
4930         YY_BREAK
4931 case 42:
4932 /* rule 42 can match eol */
4933 YY_RULE_SETUP
4934 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");} surfxml_trace_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
4935         YY_BREAK
4936 case 43:
4937 /* rule 43 can match eol */
4938 YY_RULE_SETUP
4939 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");}  surfxml_trace_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
4940         YY_BREAK
4941 case 44:
4942 /* rule 44 can match eol */
4943 YY_RULE_SETUP
4944 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");} surfxml_trace_periodicity_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
4945         YY_BREAK
4946 case 45:
4947 /* rule 45 can match eol */
4948 YY_RULE_SETUP
4949 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");}  surfxml_trace_periodicity_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
4950         YY_BREAK
4951 case 46:
4952 YY_RULE_SETUP
4953 {
4954   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
4955   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
4956   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
4957  }
4958         YY_BREAK
4959 case 47:
4960 YY_RULE_SETUP
4961 {
4962   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
4963   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
4964   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
4965   switch (YY_START) {
4966    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: SET(S_surfxml_AS_8); break;
4967    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4968    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4969    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
4970    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
4971    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4972   }
4973  }
4974         YY_BREAK
4975 case 48:
4976 YY_RULE_SETUP
4977 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
4978         YY_BREAK
4979 case 49:
4980 YY_RULE_SETUP
4981 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
4982         YY_BREAK
4983 case YY_STATE_EOF(AL_surfxml_trace):
4984 FAIL("EOF in attribute list of `trace' element.");
4985         YY_BREAK
4986
4987 case 50:
4988 /* rule 50 can match eol */
4989 YY_RULE_SETUP
4990 {
4991   LEAVE;
4992   BUFFERDONE;
4993   ETag_surfxml_trace();
4994   surfxml_pcdata_ix = popbuffer();
4995   popbuffer(); /* attribute */
4996   switch (YY_START) {
4997    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: SET(S_surfxml_AS_8); break;
4998    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4999    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
5000    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
5001    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
5002    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
5003   }
5004  }
5005         YY_BREAK
5006 case 51:
5007 /* rule 51 can match eol */
5008 YY_RULE_SETUP
5009 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
5010         YY_BREAK
5011 case YY_STATE_EOF(IN_trace):
5012 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace>' expected.");
5013         YY_BREAK
5014
5015 case 52:
5016 /* rule 52 can match eol */
5017 YY_RULE_SETUP
5018 FAIL("Starting tag <random> is not allowed here.");
5019         YY_BREAK
5020 case 53:
5021 /* rule 53 can match eol */
5022 YY_RULE_SETUP
5023 {
5024   AX_surfxml_random_id = 0;
5025   surfxml_random_id_isset = 0;
5026   AX_surfxml_random_min = 0;
5027   surfxml_random_min_isset = 0;
5028   AX_surfxml_random_max = 0;
5029   surfxml_random_max_isset = 0;
5030   AX_surfxml_random_mean = 0;
5031   surfxml_random_mean_isset = 0;
5032   AX_surfxml_random_std_deviation = 0;
5033   surfxml_random_std_deviation_isset = 0;
5034   AX_surfxml_random_seed = 5;
5035   surfxml_random_seed_isset = 0;
5036   AX_surfxml_random_radical = 0;
5037   surfxml_random_radical_isset = 0;
5038   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
5039   surfxml_random_generator_isset = 0;
5040   ENTER(AL_surfxml_random); pushbuffer(0);
5041   }
5042         YY_BREAK
5043
5044 case 54:
5045 /* rule 54 can match eol */
5046 YY_RULE_SETUP
5047 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");} surfxml_random_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
5048         YY_BREAK
5049 case 55:
5050 /* rule 55 can match eol */
5051 YY_RULE_SETUP
5052 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");}  surfxml_random_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
5053         YY_BREAK
5054 case 56:
5055 /* rule 56 can match eol */
5056 YY_RULE_SETUP
5057 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");} surfxml_random_min_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
5058         YY_BREAK
5059 case 57:
5060 /* rule 57 can match eol */
5061 YY_RULE_SETUP
5062 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");}  surfxml_random_min_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
5063         YY_BREAK
5064 case 58:
5065 /* rule 58 can match eol */
5066 YY_RULE_SETUP
5067 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");} surfxml_random_max_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
5068         YY_BREAK
5069 case 59:
5070 /* rule 59 can match eol */
5071 YY_RULE_SETUP
5072 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");}  surfxml_random_max_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
5073         YY_BREAK
5074 case 60:
5075 /* rule 60 can match eol */
5076 YY_RULE_SETUP
5077 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");} surfxml_random_mean_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
5078         YY_BREAK
5079 case 61:
5080 /* rule 61 can match eol */
5081 YY_RULE_SETUP
5082 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");}  surfxml_random_mean_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
5083         YY_BREAK
5084 case 62:
5085 /* rule 62 can match eol */
5086 YY_RULE_SETUP
5087 if (surfxml_random_std_deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");} surfxml_random_std_deviation_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std_deviation);
5088         YY_BREAK
5089 case 63:
5090 /* rule 63 can match eol */
5091 YY_RULE_SETUP
5092 if (surfxml_random_std_deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");}  surfxml_random_std_deviation_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std_deviation);
5093         YY_BREAK
5094 case 64:
5095 /* rule 64 can match eol */
5096 YY_RULE_SETUP
5097 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");} surfxml_random_seed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_seed);
5098         YY_BREAK
5099 case 65:
5100 /* rule 65 can match eol */
5101 YY_RULE_SETUP
5102 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");}  surfxml_random_seed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_seed);
5103         YY_BREAK
5104 case 66:
5105 /* rule 66 can match eol */
5106 YY_RULE_SETUP
5107 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");} surfxml_random_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_radical);
5108         YY_BREAK
5109 case 67:
5110 /* rule 67 can match eol */
5111 YY_RULE_SETUP
5112 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");}  surfxml_random_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_radical);
5113         YY_BREAK
5114 case 68:
5115 /* rule 68 can match eol */
5116 case 69:
5117 /* rule 69 can match eol */
5118 YY_RULE_SETUP
5119 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
5120         YY_BREAK
5121 case 70:
5122 /* rule 70 can match eol */
5123 case 71:
5124 /* rule 71 can match eol */
5125 YY_RULE_SETUP
5126 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
5127         YY_BREAK
5128 case 72:
5129 /* rule 72 can match eol */
5130 case 73:
5131 /* rule 73 can match eol */
5132 YY_RULE_SETUP
5133 A_surfxml_random_generator = A_surfxml_random_generator_RNGSTREAM;
5134         YY_BREAK
5135 case 74:
5136 /* rule 74 can match eol */
5137 case 75:
5138 /* rule 75 can match eol */
5139 YY_RULE_SETUP
5140 A_surfxml_random_generator = A_surfxml_random_generator_NONE;
5141         YY_BREAK
5142 case 76:
5143 YY_RULE_SETUP
5144 {
5145   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
5146   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
5147   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
5148   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
5149   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
5150   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(S_surfxml_random);
5151  }
5152         YY_BREAK
5153 case 77:
5154 YY_RULE_SETUP
5155 {
5156   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
5157   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
5158   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
5159   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
5160   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
5161   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
5162   switch (YY_START) {
5163    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
5164   }
5165  }
5166         YY_BREAK
5167 case 78:
5168 YY_RULE_SETUP
5169 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
5170         YY_BREAK
5171 case 79:
5172 YY_RULE_SETUP
5173 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
5174         YY_BREAK
5175 case YY_STATE_EOF(AL_surfxml_random):
5176 FAIL("EOF in attribute list of `random' element.");
5177         YY_BREAK
5178
5179 case 80:
5180 /* rule 80 can match eol */
5181 YY_RULE_SETUP
5182 {
5183   LEAVE;
5184   ETag_surfxml_random();
5185   popbuffer(); /* attribute */
5186   switch (YY_START) {
5187    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
5188   }
5189  }
5190         YY_BREAK
5191 case 81:
5192 /* rule 81 can match eol */
5193 YY_RULE_SETUP
5194 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
5195         YY_BREAK
5196 case 82:
5197 YY_RULE_SETUP
5198 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
5199         YY_BREAK
5200 case YY_STATE_EOF(S_surfxml_random):
5201 case YY_STATE_EOF(S_surfxml_random_2):
5202 case YY_STATE_EOF(E_surfxml_random):
5203 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</random>' expected.");
5204         YY_BREAK
5205
5206 case 83:
5207 /* rule 83 can match eol */
5208 YY_RULE_SETUP
5209 FAIL("Starting tag <trace_connect> is not allowed here.");
5210         YY_BREAK
5211 case 84:
5212 /* rule 84 can match eol */
5213 YY_RULE_SETUP
5214 {
5215   AX_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
5216   surfxml_trace_connect_kind_isset = 0;
5217   AX_surfxml_trace_connect_trace = 0;
5218   surfxml_trace_connect_trace_isset = 0;
5219   AX_surfxml_trace_connect_element = 0;
5220   surfxml_trace_connect_element_isset = 0;
5221   ENTER(AL_surfxml_trace_connect); pushbuffer(0);
5222   }
5223         YY_BREAK
5224
5225 case 85:
5226 /* rule 85 can match eol */
5227 case 86:
5228 /* rule 86 can match eol */
5229 YY_RULE_SETUP
5230 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
5231         YY_BREAK
5232 case 87:
5233 /* rule 87 can match eol */
5234 case 88:
5235 /* rule 88 can match eol */
5236 YY_RULE_SETUP
5237 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_POWER;
5238         YY_BREAK
5239 case 89:
5240 /* rule 89 can match eol */
5241 case 90:
5242 /* rule 90 can match eol */
5243 YY_RULE_SETUP
5244 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_LINK_AVAIL;
5245         YY_BREAK
5246 case 91:
5247 /* rule 91 can match eol */
5248 case 92:
5249 /* rule 92 can match eol */
5250 YY_RULE_SETUP
5251 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_BANDWIDTH;
5252         YY_BREAK
5253 case 93:
5254 /* rule 93 can match eol */
5255 case 94:
5256 /* rule 94 can match eol */
5257 YY_RULE_SETUP
5258 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_LATENCY;
5259         YY_BREAK
5260 case 95:
5261 /* rule 95 can match eol */
5262 YY_RULE_SETUP
5263 if (surfxml_trace_connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace_connect>");} surfxml_trace_connect_trace_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_trace);
5264         YY_BREAK
5265 case 96:
5266 /* rule 96 can match eol */
5267 YY_RULE_SETUP
5268 if (surfxml_trace_connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace_connect>");}  surfxml_trace_connect_trace_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_trace);
5269         YY_BREAK
5270 case 97:
5271 /* rule 97 can match eol */
5272 YY_RULE_SETUP
5273 if (surfxml_trace_connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace_connect>");} surfxml_trace_connect_element_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_element);
5274         YY_BREAK
5275 case 98:
5276 /* rule 98 can match eol */
5277 YY_RULE_SETUP
5278 if (surfxml_trace_connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace_connect>");}  surfxml_trace_connect_element_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_element);
5279         YY_BREAK
5280 case 99:
5281 YY_RULE_SETUP
5282 {
5283   if (!AX_surfxml_trace_connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
5284   if (!AX_surfxml_trace_connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
5285   LEAVE; STag_surfxml_trace_connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace_connect);
5286  }
5287         YY_BREAK
5288 case 100:
5289 YY_RULE_SETUP
5290 {
5291   if (!AX_surfxml_trace_connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
5292   if (!AX_surfxml_trace_connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
5293   LEAVE; STag_surfxml_trace_connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace_connect(); popbuffer(); /* attribute */
5294   switch (YY_START) {
5295    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: SET(S_surfxml_AS_8); break;
5296    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5297    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
5298    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
5299    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
5300    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
5301   }
5302  }
5303         YY_BREAK
5304 case 101:
5305 YY_RULE_SETUP
5306 FAIL("Unexpected character `%c' in attribute list of trace_connect element.", surf_parse_text[0]);
5307         YY_BREAK
5308 case 102:
5309 YY_RULE_SETUP
5310 FAIL("Bad attribute `%s' in `trace_connect' element start tag.",surf_parse_text);
5311         YY_BREAK
5312 case YY_STATE_EOF(AL_surfxml_trace_connect):
5313 FAIL("EOF in attribute list of `trace_connect' element.");
5314         YY_BREAK
5315
5316 case 103:
5317 /* rule 103 can match eol */
5318 YY_RULE_SETUP
5319 {
5320   LEAVE;
5321   ETag_surfxml_trace_connect();
5322   popbuffer(); /* attribute */
5323   switch (YY_START) {
5324    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: SET(S_surfxml_AS_8); break;
5325    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5326    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
5327    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
5328    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
5329    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
5330   }
5331  }
5332         YY_BREAK
5333 case 104:
5334 /* rule 104 can match eol */
5335 YY_RULE_SETUP
5336 FAIL("Unexpected end-tag `%s': `</trace_connect>' expected.",surf_parse_text);
5337         YY_BREAK
5338 case 105:
5339 YY_RULE_SETUP
5340 FAIL("Unexpected character `%c': `</trace_connect>' expected.",surf_parse_text[0]);
5341         YY_BREAK
5342 case YY_STATE_EOF(E_surfxml_trace_connect):
5343 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace_connect>' expected.");
5344         YY_BREAK
5345
5346 /* (ASroute|trace|trace_connect)*,
5347   * (bypassRoute|trace|trace_connect)*)
5348   * |((include|storage_type|storage|host|router|link|trace|trace_connect)*,
5349   * (route|trace|trace_connect)*))>  */
5350 case 106:
5351 /* rule 106 can match eol */
5352 YY_RULE_SETUP
5353 FAIL("Starting tag <AS> is not allowed here.");
5354         YY_BREAK
5355 case 107:
5356 /* rule 107 can match eol */
5357 YY_RULE_SETUP
5358 {
5359   AX_surfxml_AS_id = 0;
5360   surfxml_AS_id_isset = 0;
5361   AX_surfxml_AS_routing = 0;
5362   surfxml_AS_routing_isset = 0;
5363   ENTER(AL_surfxml_AS); pushbuffer(0);
5364   }
5365         YY_BREAK
5366
5367 case 108:
5368 /* rule 108 can match eol */
5369 YY_RULE_SETUP
5370 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");} surfxml_AS_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
5371         YY_BREAK
5372 case 109:
5373 /* rule 109 can match eol */
5374 YY_RULE_SETUP
5375 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");}  surfxml_AS_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
5376         YY_BREAK
5377 case 110:
5378 /* rule 110 can match eol */
5379 YY_RULE_SETUP
5380 if (surfxml_AS_routing_isset != 0) {FAIL("Multiple definition of attribute routing in <surfxml_AS>");} surfxml_AS_routing_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_routing);
5381         YY_BREAK
5382 case 111:
5383 /* rule 111 can match eol */
5384 YY_RULE_SETUP
5385 if (surfxml_AS_routing_isset != 0) {FAIL("Multiple definition of attribute routing in <surfxml_AS>");}  surfxml_AS_routing_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_routing);
5386         YY_BREAK
5387 case 112:
5388 YY_RULE_SETUP
5389 {
5390   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5391   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5392   LEAVE; STag_surfxml_AS();surfxml_pcdata_ix = 0; ENTER(S_surfxml_AS);
5393  }
5394         YY_BREAK
5395 case 113:
5396 YY_RULE_SETUP
5397 {
5398   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5399   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5400   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
5401   switch (YY_START) {
5402    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5403    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
5404   }
5405  }
5406         YY_BREAK
5407 case 114:
5408 YY_RULE_SETUP
5409 FAIL("Unexpected character `%c' in attribute list of AS element.", surf_parse_text[0]);
5410         YY_BREAK
5411 case 115:
5412 YY_RULE_SETUP
5413 FAIL("Bad attribute `%s' in `AS' element start tag.",surf_parse_text);
5414         YY_BREAK
5415 case YY_STATE_EOF(AL_surfxml_AS):
5416 FAIL("EOF in attribute list of `AS' element.");
5417         YY_BREAK
5418
5419 case 116:
5420 /* rule 116 can match eol */
5421 YY_RULE_SETUP
5422 {
5423   LEAVE;
5424   ETag_surfxml_AS();
5425   popbuffer(); /* attribute */
5426   switch (YY_START) {
5427    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5428    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
5429   }
5430  }
5431         YY_BREAK
5432 case 117:
5433 /* rule 117 can match eol */
5434 YY_RULE_SETUP
5435 FAIL("Unexpected end-tag `%s': `</AS>' expected.",surf_parse_text);
5436         YY_BREAK
5437 case 118:
5438 YY_RULE_SETUP
5439 FAIL("Unexpected character `%c': `</AS>' expected.",surf_parse_text[0]);
5440         YY_BREAK
5441 case YY_STATE_EOF(S_surfxml_AS_9):
5442 case YY_STATE_EOF(S_surfxml_AS_1):
5443 case YY_STATE_EOF(S_surfxml_AS_11):
5444 case YY_STATE_EOF(S_surfxml_AS_6):
5445 case YY_STATE_EOF(E_surfxml_AS):
5446 case YY_STATE_EOF(S_surfxml_AS_3):
5447 case YY_STATE_EOF(S_surfxml_AS_13):
5448 case YY_STATE_EOF(S_surfxml_AS_8):
5449 case YY_STATE_EOF(S_surfxml_AS):
5450 case YY_STATE_EOF(S_surfxml_AS_4):
5451 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</AS>' expected.");
5452         YY_BREAK
5453
5454 case 119:
5455 /* rule 119 can match eol */
5456 YY_RULE_SETUP
5457 FAIL("Starting tag <storage_type> is not allowed here.");
5458         YY_BREAK
5459 case 120:
5460 /* rule 120 can match eol */
5461 YY_RULE_SETUP
5462 {
5463   AX_surfxml_storage_type_id = 0;
5464   surfxml_storage_type_id_isset = 0;
5465   AX_surfxml_storage_type_model = 0;
5466   surfxml_storage_type_model_isset = 0;
5467   AX_surfxml_storage_type_content = 0;
5468   surfxml_storage_type_content_isset = 0;
5469   ENTER(AL_surfxml_storage_type); pushbuffer(0);
5470   }
5471         YY_BREAK
5472
5473 case 121:
5474 /* rule 121 can match eol */
5475 YY_RULE_SETUP
5476 if (surfxml_storage_type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage_type>");} surfxml_storage_type_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_id);
5477         YY_BREAK
5478 case 122:
5479 /* rule 122 can match eol */
5480 YY_RULE_SETUP
5481 if (surfxml_storage_type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage_type>");}  surfxml_storage_type_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_id);
5482         YY_BREAK
5483 case 123:
5484 /* rule 123 can match eol */
5485 YY_RULE_SETUP
5486 if (surfxml_storage_type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage_type>");} surfxml_storage_type_model_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_model);
5487         YY_BREAK
5488 case 124:
5489 /* rule 124 can match eol */
5490 YY_RULE_SETUP
5491 if (surfxml_storage_type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage_type>");}  surfxml_storage_type_model_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_model);
5492         YY_BREAK
5493 case 125:
5494 /* rule 125 can match eol */
5495 YY_RULE_SETUP
5496 if (surfxml_storage_type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage_type>");} surfxml_storage_type_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_content);
5497         YY_BREAK
5498 case 126:
5499 /* rule 126 can match eol */
5500 YY_RULE_SETUP
5501 if (surfxml_storage_type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage_type>");}  surfxml_storage_type_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_content);
5502         YY_BREAK
5503 case 127:
5504 YY_RULE_SETUP
5505 {
5506   if (!AX_surfxml_storage_type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
5507   if (!AX_surfxml_storage_type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
5508   LEAVE; STag_surfxml_storage_type();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage_type);
5509  }
5510         YY_BREAK
5511 case 128:
5512 YY_RULE_SETUP
5513 {
5514   if (!AX_surfxml_storage_type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
5515   if (!AX_surfxml_storage_type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
5516   LEAVE; STag_surfxml_storage_type(); surfxml_pcdata_ix = 0; ETag_surfxml_storage_type(); popbuffer(); /* attribute */
5517   switch (YY_START) {
5518    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5519    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5520   }
5521  }
5522         YY_BREAK
5523 case 129:
5524 YY_RULE_SETUP
5525 FAIL("Unexpected character `%c' in attribute list of storage_type element.", surf_parse_text[0]);
5526         YY_BREAK
5527 case 130:
5528 YY_RULE_SETUP
5529 FAIL("Bad attribute `%s' in `storage_type' element start tag.",surf_parse_text);
5530         YY_BREAK
5531 case YY_STATE_EOF(AL_surfxml_storage_type):
5532 FAIL("EOF in attribute list of `storage_type' element.");
5533         YY_BREAK
5534
5535 case 131:
5536 /* rule 131 can match eol */
5537 YY_RULE_SETUP
5538 {
5539   LEAVE;
5540   ETag_surfxml_storage_type();
5541   popbuffer(); /* attribute */
5542   switch (YY_START) {
5543    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5544    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5545   }
5546  }
5547         YY_BREAK
5548 case 132:
5549 /* rule 132 can match eol */
5550 YY_RULE_SETUP
5551 FAIL("Unexpected end-tag `%s': `</storage_type>' expected.",surf_parse_text);
5552         YY_BREAK
5553 case 133:
5554 YY_RULE_SETUP
5555 FAIL("Unexpected character `%c': `</storage_type>' expected.",surf_parse_text[0]);
5556         YY_BREAK
5557 case YY_STATE_EOF(E_surfxml_storage_type):
5558 case YY_STATE_EOF(S_surfxml_storage_type_2):
5559 case YY_STATE_EOF(S_surfxml_storage_type):
5560 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage_type>' expected.");
5561         YY_BREAK
5562
5563 case 134:
5564 /* rule 134 can match eol */
5565 YY_RULE_SETUP
5566 FAIL("Starting tag <storage> is not allowed here.");
5567         YY_BREAK
5568 case 135:
5569 /* rule 135 can match eol */
5570 YY_RULE_SETUP
5571 {
5572   AX_surfxml_storage_id = 0;
5573   surfxml_storage_id_isset = 0;
5574   AX_surfxml_storage_type_id = 0;
5575   surfxml_storage_type_id_isset = 0;
5576   ENTER(AL_surfxml_storage); pushbuffer(0);
5577   }
5578         YY_BREAK
5579
5580 case 136:
5581 /* rule 136 can match eol */
5582 YY_RULE_SETUP
5583 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");} surfxml_storage_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_id);
5584         YY_BREAK
5585 case 137:
5586 /* rule 137 can match eol */
5587 YY_RULE_SETUP
5588 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");}  surfxml_storage_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_id);
5589         YY_BREAK
5590 case 138:
5591 /* rule 138 can match eol */
5592 YY_RULE_SETUP
5593 if (surfxml_storage_type_id_isset != 0) {FAIL("Multiple definition of attribute type_id in <surfxml_storage>");} surfxml_storage_type_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_id);
5594         YY_BREAK
5595 case 139:
5596 /* rule 139 can match eol */
5597 YY_RULE_SETUP
5598 if (surfxml_storage_type_id_isset != 0) {FAIL("Multiple definition of attribute type_id in <surfxml_storage>");}  surfxml_storage_type_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_id);
5599         YY_BREAK
5600 case 140:
5601 YY_RULE_SETUP
5602 {
5603   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
5604   if (!AX_surfxml_storage_type_id) FAIL("Required attribute `type_id' not set for `storage' element.");
5605   LEAVE; STag_surfxml_storage();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage);
5606  }
5607         YY_BREAK
5608 case 141:
5609 YY_RULE_SETUP
5610 {
5611   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
5612   if (!AX_surfxml_storage_type_id) FAIL("Required attribute `type_id' not set for `storage' element.");
5613   LEAVE; STag_surfxml_storage(); surfxml_pcdata_ix = 0; ETag_surfxml_storage(); popbuffer(); /* attribute */
5614   switch (YY_START) {
5615    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5616    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5617   }
5618  }
5619         YY_BREAK
5620 case 142:
5621 YY_RULE_SETUP
5622 FAIL("Unexpected character `%c' in attribute list of storage element.", surf_parse_text[0]);
5623         YY_BREAK
5624 case 143:
5625 YY_RULE_SETUP
5626 FAIL("Bad attribute `%s' in `storage' element start tag.",surf_parse_text);
5627         YY_BREAK
5628 case YY_STATE_EOF(AL_surfxml_storage):
5629 FAIL("EOF in attribute list of `storage' element.");
5630         YY_BREAK
5631
5632 case 144:
5633 /* rule 144 can match eol */
5634 YY_RULE_SETUP
5635 {
5636   LEAVE;
5637   ETag_surfxml_storage();
5638   popbuffer(); /* attribute */
5639   switch (YY_START) {
5640    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5641    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5642   }
5643  }
5644         YY_BREAK
5645 case 145:
5646 /* rule 145 can match eol */
5647 YY_RULE_SETUP
5648 FAIL("Unexpected end-tag `%s': `</storage>' expected.",surf_parse_text);
5649         YY_BREAK
5650 case 146:
5651 YY_RULE_SETUP
5652 FAIL("Unexpected character `%c': `</storage>' expected.",surf_parse_text[0]);
5653         YY_BREAK
5654 case YY_STATE_EOF(E_surfxml_storage):
5655 case YY_STATE_EOF(S_surfxml_storage):
5656 case YY_STATE_EOF(S_surfxml_storage_2):
5657 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage>' expected.");
5658         YY_BREAK
5659
5660 case 147:
5661 /* rule 147 can match eol */
5662 YY_RULE_SETUP
5663 FAIL("Starting tag <mount> is not allowed here.");
5664         YY_BREAK
5665 case 148:
5666 /* rule 148 can match eol */
5667 YY_RULE_SETUP
5668 {
5669   AX_surfxml_mount_id = 0;
5670   surfxml_mount_id_isset = 0;
5671   AX_surfxml_mount_name = 0;
5672   surfxml_mount_name_isset = 0;
5673   ENTER(AL_surfxml_mount); pushbuffer(0);
5674   }
5675         YY_BREAK
5676
5677 case 149:
5678 /* rule 149 can match eol */
5679 YY_RULE_SETUP
5680 if (surfxml_mount_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_mount>");} surfxml_mount_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_id);
5681         YY_BREAK
5682 case 150:
5683 /* rule 150 can match eol */
5684 YY_RULE_SETUP
5685 if (surfxml_mount_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_mount>");}  surfxml_mount_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_id);
5686         YY_BREAK
5687 case 151:
5688 /* rule 151 can match eol */
5689 YY_RULE_SETUP
5690 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");} surfxml_mount_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_name);
5691         YY_BREAK
5692 case 152:
5693 /* rule 152 can match eol */
5694 YY_RULE_SETUP
5695 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");}  surfxml_mount_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_name);
5696         YY_BREAK
5697 case 153:
5698 YY_RULE_SETUP
5699 {
5700   if (!AX_surfxml_mount_id) FAIL("Required attribute `id' not set for `mount' element.");
5701   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
5702   LEAVE; STag_surfxml_mount();surfxml_pcdata_ix = 0; ENTER(E_surfxml_mount);
5703  }
5704         YY_BREAK
5705 case 154:
5706 YY_RULE_SETUP
5707 {
5708   if (!AX_surfxml_mount_id) FAIL("Required attribute `id' not set for `mount' element.");
5709   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
5710   LEAVE; STag_surfxml_mount(); surfxml_pcdata_ix = 0; ETag_surfxml_mount(); popbuffer(); /* attribute */
5711   switch (YY_START) {
5712    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
5713   }
5714  }
5715         YY_BREAK
5716 case 155:
5717 YY_RULE_SETUP
5718 FAIL("Unexpected character `%c' in attribute list of mount element.", surf_parse_text[0]);
5719         YY_BREAK
5720 case 156:
5721 YY_RULE_SETUP
5722 FAIL("Bad attribute `%s' in `mount' element start tag.",surf_parse_text);
5723         YY_BREAK
5724 case YY_STATE_EOF(AL_surfxml_mount):
5725 FAIL("EOF in attribute list of `mount' element.");
5726         YY_BREAK
5727
5728 case 157:
5729 /* rule 157 can match eol */
5730 YY_RULE_SETUP
5731 {
5732   LEAVE;
5733   ETag_surfxml_mount();
5734   popbuffer(); /* attribute */
5735   switch (YY_START) {
5736    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
5737   }
5738  }
5739         YY_BREAK
5740 case 158:
5741 /* rule 158 can match eol */
5742 YY_RULE_SETUP
5743 FAIL("Unexpected end-tag `%s': `</mount>' expected.",surf_parse_text);
5744         YY_BREAK
5745 case 159:
5746 YY_RULE_SETUP
5747 FAIL("Unexpected character `%c': `</mount>' expected.",surf_parse_text[0]);
5748         YY_BREAK
5749 case YY_STATE_EOF(E_surfxml_mount):
5750 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</mount>' expected.");
5751         YY_BREAK
5752
5753 case 160:
5754 /* rule 160 can match eol */
5755 YY_RULE_SETUP
5756 FAIL("Starting tag <mstorage> is not allowed here.");
5757         YY_BREAK
5758 case 161:
5759 /* rule 161 can match eol */
5760 YY_RULE_SETUP
5761 {
5762   AX_surfxml_mstorage_type_id = 0;
5763   surfxml_mstorage_type_id_isset = 0;
5764   AX_surfxml_mstorage_name = 0;
5765   surfxml_mstorage_name_isset = 0;
5766   ENTER(AL_surfxml_mstorage); pushbuffer(0);
5767   }
5768         YY_BREAK
5769
5770 case 162:
5771 /* rule 162 can match eol */
5772 YY_RULE_SETUP
5773 if (surfxml_mstorage_type_id_isset != 0) {FAIL("Multiple definition of attribute type_id in <surfxml_mstorage>");} surfxml_mstorage_type_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_type_id);
5774         YY_BREAK
5775 case 163:
5776 /* rule 163 can match eol */
5777 YY_RULE_SETUP
5778 if (surfxml_mstorage_type_id_isset != 0) {FAIL("Multiple definition of attribute type_id in <surfxml_mstorage>");}  surfxml_mstorage_type_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_type_id);
5779         YY_BREAK
5780 case 164:
5781 /* rule 164 can match eol */
5782 YY_RULE_SETUP
5783 if (surfxml_mstorage_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mstorage>");} surfxml_mstorage_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_name);
5784         YY_BREAK
5785 case 165:
5786 /* rule 165 can match eol */
5787 YY_RULE_SETUP
5788 if (surfxml_mstorage_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mstorage>");}  surfxml_mstorage_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_name);
5789         YY_BREAK
5790 case 166:
5791 YY_RULE_SETUP
5792 {
5793   if (!AX_surfxml_mstorage_type_id) FAIL("Required attribute `type_id' not set for `mstorage' element.");
5794   if (!AX_surfxml_mstorage_name) FAIL("Required attribute `name' not set for `mstorage' element.");
5795   LEAVE; STag_surfxml_mstorage();surfxml_pcdata_ix = 0; ENTER(E_surfxml_mstorage);
5796  }
5797         YY_BREAK
5798 case 167:
5799 YY_RULE_SETUP
5800 {
5801   if (!AX_surfxml_mstorage_type_id) FAIL("Required attribute `type_id' not set for `mstorage' element.");
5802   if (!AX_surfxml_mstorage_name) FAIL("Required attribute `name' not set for `mstorage' element.");
5803   LEAVE; STag_surfxml_mstorage(); surfxml_pcdata_ix = 0; ETag_surfxml_mstorage(); popbuffer(); /* attribute */
5804   switch (YY_START) {
5805    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
5806   }
5807  }
5808         YY_BREAK
5809 case 168:
5810 YY_RULE_SETUP
5811 FAIL("Unexpected character `%c' in attribute list of mstorage element.", surf_parse_text[0]);
5812         YY_BREAK
5813 case 169:
5814 YY_RULE_SETUP
5815 FAIL("Bad attribute `%s' in `mstorage' element start tag.",surf_parse_text);
5816         YY_BREAK
5817 case YY_STATE_EOF(AL_surfxml_mstorage):
5818 FAIL("EOF in attribute list of `mstorage' element.");
5819         YY_BREAK
5820
5821 case 170:
5822 /* rule 170 can match eol */
5823 YY_RULE_SETUP
5824 {
5825   LEAVE;
5826   ETag_surfxml_mstorage();
5827   popbuffer(); /* attribute */
5828   switch (YY_START) {
5829    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
5830   }
5831  }
5832         YY_BREAK
5833 case 171:
5834 /* rule 171 can match eol */
5835 YY_RULE_SETUP
5836 FAIL("Unexpected end-tag `%s': `</mstorage>' expected.",surf_parse_text);
5837         YY_BREAK
5838 case 172:
5839 YY_RULE_SETUP
5840 FAIL("Unexpected character `%c': `</mstorage>' expected.",surf_parse_text[0]);
5841         YY_BREAK
5842 case YY_STATE_EOF(E_surfxml_mstorage):
5843 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</mstorage>' expected.");
5844         YY_BREAK
5845
5846 case 173:
5847 /* rule 173 can match eol */
5848 YY_RULE_SETUP
5849 FAIL("Starting tag <host> is not allowed here.");
5850         YY_BREAK
5851 case 174:
5852 /* rule 174 can match eol */
5853 YY_RULE_SETUP
5854 {
5855   AX_surfxml_host_id = 0;
5856   surfxml_host_id_isset = 0;
5857   AX_surfxml_host_power = 0;
5858   surfxml_host_power_isset = 0;
5859   AX_surfxml_host_core = 16;
5860   surfxml_host_core_isset = 0;
5861   AX_surfxml_host_availability = 18;
5862   surfxml_host_availability_isset = 0;
5863   AX_surfxml_host_availability_file = 0;
5864   surfxml_host_availability_file_isset = 0;
5865   AX_surfxml_host_state = A_surfxml_host_state_ON;
5866   surfxml_host_state_isset = 0;
5867   AX_surfxml_host_state_file = 0;
5868   surfxml_host_state_file_isset = 0;
5869   AX_surfxml_host_coordinates = 0;
5870   surfxml_host_coordinates_isset = 0;
5871   ENTER(AL_surfxml_host); pushbuffer(0);
5872   }
5873         YY_BREAK
5874
5875 case 175:
5876 /* rule 175 can match eol */
5877 YY_RULE_SETUP
5878 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");} surfxml_host_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
5879         YY_BREAK
5880 case 176:
5881 /* rule 176 can match eol */
5882 YY_RULE_SETUP
5883 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");}  surfxml_host_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
5884         YY_BREAK
5885 case 177:
5886 /* rule 177 can match eol */
5887 YY_RULE_SETUP
5888 if (surfxml_host_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_host>");} surfxml_host_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
5889         YY_BREAK
5890 case 178:
5891 /* rule 178 can match eol */
5892 YY_RULE_SETUP
5893 if (surfxml_host_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_host>");}  surfxml_host_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
5894         YY_BREAK
5895 case 179:
5896 /* rule 179 can match eol */
5897 YY_RULE_SETUP
5898 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");} surfxml_host_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
5899         YY_BREAK
5900 case 180:
5901 /* rule 180 can match eol */
5902 YY_RULE_SETUP
5903 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");}  surfxml_host_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
5904         YY_BREAK
5905 case 181:
5906 /* rule 181 can match eol */
5907 YY_RULE_SETUP
5908 if (surfxml_host_availability_isset != 0) {FAIL("Multiple definition of attribute availability in <surfxml_host>");} surfxml_host_availability_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
5909         YY_BREAK
5910 case 182:
5911 /* rule 182 can match eol */
5912 YY_RULE_SETUP
5913 if (surfxml_host_availability_isset != 0) {FAIL("Multiple definition of attribute availability in <surfxml_host>");}  surfxml_host_availability_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
5914         YY_BREAK
5915 case 183:
5916 /* rule 183 can match eol */
5917 YY_RULE_SETUP
5918 if (surfxml_host_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");} surfxml_host_availability_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
5919         YY_BREAK
5920 case 184:
5921 /* rule 184 can match eol */
5922 YY_RULE_SETUP
5923 if (surfxml_host_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");}  surfxml_host_availability_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
5924         YY_BREAK
5925 case 185:
5926 /* rule 185 can match eol */
5927 case 186:
5928 /* rule 186 can match eol */
5929 YY_RULE_SETUP
5930 A_surfxml_host_state = A_surfxml_host_state_ON;
5931         YY_BREAK
5932 case 187:
5933 /* rule 187 can match eol */
5934 case 188:
5935 /* rule 188 can match eol */
5936 YY_RULE_SETUP
5937 A_surfxml_host_state = A_surfxml_host_state_OFF;
5938         YY_BREAK
5939 case 189:
5940 /* rule 189 can match eol */
5941 YY_RULE_SETUP
5942 if (surfxml_host_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");} surfxml_host_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
5943         YY_BREAK
5944 case 190:
5945 /* rule 190 can match eol */
5946 YY_RULE_SETUP
5947 if (surfxml_host_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");}  surfxml_host_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
5948         YY_BREAK
5949 case 191:
5950 /* rule 191 can match eol */
5951 YY_RULE_SETUP
5952 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");} surfxml_host_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
5953         YY_BREAK
5954 case 192:
5955 /* rule 192 can match eol */
5956 YY_RULE_SETUP
5957 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");}  surfxml_host_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
5958         YY_BREAK
5959 case 193:
5960 YY_RULE_SETUP
5961 {
5962   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
5963   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
5964   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
5965  }
5966         YY_BREAK
5967 case 194:
5968 YY_RULE_SETUP
5969 {
5970   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
5971   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
5972   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
5973   switch (YY_START) {
5974    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5975   }
5976  }
5977         YY_BREAK
5978 case 195:
5979 YY_RULE_SETUP
5980 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
5981         YY_BREAK
5982 case 196:
5983 YY_RULE_SETUP
5984 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
5985         YY_BREAK
5986 case YY_STATE_EOF(AL_surfxml_host):
5987 FAIL("EOF in attribute list of `host' element.");
5988         YY_BREAK
5989
5990 case 197:
5991 /* rule 197 can match eol */
5992 YY_RULE_SETUP
5993 {
5994   LEAVE;
5995   ETag_surfxml_host();
5996   popbuffer(); /* attribute */
5997   switch (YY_START) {
5998    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5999   }
6000  }
6001         YY_BREAK
6002 case 198:
6003 /* rule 198 can match eol */
6004 YY_RULE_SETUP
6005 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
6006         YY_BREAK
6007 case 199:
6008 YY_RULE_SETUP
6009 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
6010         YY_BREAK
6011 case YY_STATE_EOF(S_surfxml_host):
6012 case YY_STATE_EOF(E_surfxml_host):
6013 case YY_STATE_EOF(S_surfxml_host_2):
6014 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host>' expected.");
6015         YY_BREAK
6016
6017 case 200:
6018 /* rule 200 can match eol */
6019 YY_RULE_SETUP
6020 FAIL("Starting tag <cluster> is not allowed here.");
6021         YY_BREAK
6022 case 201:
6023 /* rule 201 can match eol */
6024 YY_RULE_SETUP
6025 {
6026   AX_surfxml_cluster_id = 0;
6027   surfxml_cluster_id_isset = 0;
6028   AX_surfxml_cluster_prefix = 0;
6029   surfxml_cluster_prefix_isset = 0;
6030   AX_surfxml_cluster_suffix = 0;
6031   surfxml_cluster_suffix_isset = 0;
6032   AX_surfxml_cluster_radical = 0;
6033   surfxml_cluster_radical_isset = 0;
6034   AX_surfxml_cluster_power = 0;
6035   surfxml_cluster_power_isset = 0;
6036   AX_surfxml_cluster_core = 22;
6037   surfxml_cluster_core_isset = 0;
6038   AX_surfxml_cluster_bw = 0;
6039   surfxml_cluster_bw_isset = 0;
6040   AX_surfxml_cluster_lat = 0;
6041   surfxml_cluster_lat_isset = 0;
6042   AX_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FULLDUPLEX;
6043   surfxml_cluster_sharing_policy_isset = 0;
6044   AX_surfxml_cluster_bb_bw = 0;
6045   surfxml_cluster_bb_bw_isset = 0;
6046   AX_surfxml_cluster_bb_lat = 0;
6047   surfxml_cluster_bb_lat_isset = 0;
6048   AX_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
6049   surfxml_cluster_bb_sharing_policy_isset = 0;
6050   AX_surfxml_cluster_availability_file = 0;
6051   surfxml_cluster_availability_file_isset = 0;
6052   AX_surfxml_cluster_state_file = 0;
6053   surfxml_cluster_state_file_isset = 0;
6054   AX_surfxml_cluster_router_id = 0;
6055   surfxml_cluster_router_id_isset = 0;
6056   ENTER(AL_surfxml_cluster); pushbuffer(0);
6057   }
6058         YY_BREAK
6059
6060 case 202:
6061 /* rule 202 can match eol */
6062 YY_RULE_SETUP
6063 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");} surfxml_cluster_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
6064         YY_BREAK
6065 case 203:
6066 /* rule 203 can match eol */
6067 YY_RULE_SETUP
6068 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");}  surfxml_cluster_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
6069         YY_BREAK
6070 case 204:
6071 /* rule 204 can match eol */
6072 YY_RULE_SETUP
6073 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");} surfxml_cluster_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
6074         YY_BREAK
6075 case 205:
6076 /* rule 205 can match eol */
6077 YY_RULE_SETUP
6078 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");}  surfxml_cluster_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
6079         YY_BREAK
6080 case 206:
6081 /* rule 206 can match eol */
6082 YY_RULE_SETUP
6083 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");} surfxml_cluster_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
6084         YY_BREAK
6085 case 207:
6086 /* rule 207 can match eol */
6087 YY_RULE_SETUP
6088 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");}  surfxml_cluster_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
6089         YY_BREAK
6090 case 208:
6091 /* rule 208 can match eol */
6092 YY_RULE_SETUP
6093 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");} surfxml_cluster_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
6094         YY_BREAK
6095 case 209:
6096 /* rule 209 can match eol */
6097 YY_RULE_SETUP
6098 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");}  surfxml_cluster_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
6099         YY_BREAK
6100 case 210:
6101 /* rule 210 can match eol */
6102 YY_RULE_SETUP
6103 if (surfxml_cluster_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cluster>");} surfxml_cluster_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
6104         YY_BREAK
6105 case 211:
6106 /* rule 211 can match eol */
6107 YY_RULE_SETUP
6108 if (surfxml_cluster_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cluster>");}  surfxml_cluster_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
6109         YY_BREAK
6110 case 212:
6111 /* rule 212 can match eol */
6112 YY_RULE_SETUP
6113 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");} surfxml_cluster_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
6114         YY_BREAK
6115 case 213:
6116 /* rule 213 can match eol */
6117 YY_RULE_SETUP
6118 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");}  surfxml_cluster_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
6119         YY_BREAK
6120 case 214:
6121 /* rule 214 can match eol */
6122 YY_RULE_SETUP
6123 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");} surfxml_cluster_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
6124         YY_BREAK
6125 case 215:
6126 /* rule 215 can match eol */
6127 YY_RULE_SETUP
6128 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");}  surfxml_cluster_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
6129         YY_BREAK
6130 case 216:
6131 /* rule 216 can match eol */
6132 YY_RULE_SETUP
6133 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");} surfxml_cluster_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
6134         YY_BREAK
6135 case 217:
6136 /* rule 217 can match eol */
6137 YY_RULE_SETUP
6138 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");}  surfxml_cluster_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
6139         YY_BREAK
6140 case 218:
6141 /* rule 218 can match eol */
6142 case 219:
6143 /* rule 219 can match eol */
6144 YY_RULE_SETUP
6145 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_SHARED;
6146         YY_BREAK
6147 case 220:
6148 /* rule 220 can match eol */
6149 case 221:
6150 /* rule 221 can match eol */
6151 YY_RULE_SETUP
6152 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FULLDUPLEX;
6153         YY_BREAK
6154 case 222:
6155 /* rule 222 can match eol */
6156 case 223:
6157 /* rule 223 can match eol */
6158 YY_RULE_SETUP
6159 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FATPIPE;
6160         YY_BREAK
6161 case 224:
6162 /* rule 224 can match eol */
6163 YY_RULE_SETUP
6164 if (surfxml_cluster_bb_bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");} surfxml_cluster_bb_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_bw);
6165         YY_BREAK
6166 case 225:
6167 /* rule 225 can match eol */
6168 YY_RULE_SETUP
6169 if (surfxml_cluster_bb_bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");}  surfxml_cluster_bb_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_bw);
6170         YY_BREAK
6171 case 226:
6172 /* rule 226 can match eol */
6173 YY_RULE_SETUP
6174 if (surfxml_cluster_bb_lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");} surfxml_cluster_bb_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_lat);
6175         YY_BREAK
6176 case 227:
6177 /* rule 227 can match eol */
6178 YY_RULE_SETUP
6179 if (surfxml_cluster_bb_lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");}  surfxml_cluster_bb_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_lat);
6180         YY_BREAK
6181 case 228:
6182 /* rule 228 can match eol */
6183 case 229:
6184 /* rule 229 can match eol */
6185 YY_RULE_SETUP
6186 A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
6187         YY_BREAK
6188 case 230:
6189 /* rule 230 can match eol */
6190 case 231:
6191 /* rule 231 can match eol */
6192 YY_RULE_SETUP
6193 A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_FATPIPE;
6194         YY_BREAK
6195 case 232:
6196 /* rule 232 can match eol */
6197 YY_RULE_SETUP
6198 if (surfxml_cluster_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");} surfxml_cluster_availability_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_availability_file);
6199         YY_BREAK
6200 case 233:
6201 /* rule 233 can match eol */
6202 YY_RULE_SETUP
6203 if (surfxml_cluster_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");}  surfxml_cluster_availability_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_availability_file);
6204         YY_BREAK
6205 case 234:
6206 /* rule 234 can match eol */
6207 YY_RULE_SETUP
6208 if (surfxml_cluster_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");} surfxml_cluster_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_state_file);
6209         YY_BREAK
6210 case 235:
6211 /* rule 235 can match eol */
6212 YY_RULE_SETUP
6213 if (surfxml_cluster_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");}  surfxml_cluster_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_state_file);
6214         YY_BREAK
6215 case 236:
6216 /* rule 236 can match eol */
6217 YY_RULE_SETUP
6218 if (surfxml_cluster_router_id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");} surfxml_cluster_router_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_router_id);
6219         YY_BREAK
6220 case 237:
6221 /* rule 237 can match eol */
6222 YY_RULE_SETUP
6223 if (surfxml_cluster_router_id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");}  surfxml_cluster_router_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_router_id);
6224         YY_BREAK
6225 case 238:
6226 YY_RULE_SETUP
6227 {
6228   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6229   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6230   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6231   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6232   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
6233   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6234   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6235   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cluster);
6236  }
6237         YY_BREAK
6238 case 239:
6239 YY_RULE_SETUP
6240 {
6241   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6242   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6243   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6244   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6245   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
6246   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6247   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6248   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
6249   switch (YY_START) {
6250    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
6251    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
6252   }
6253  }
6254         YY_BREAK
6255 case 240:
6256 YY_RULE_SETUP
6257 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
6258         YY_BREAK
6259 case 241:
6260 YY_RULE_SETUP
6261 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
6262         YY_BREAK
6263 case YY_STATE_EOF(AL_surfxml_cluster):
6264 FAIL("EOF in attribute list of `cluster' element.");
6265         YY_BREAK
6266
6267 case 242:
6268 /* rule 242 can match eol */
6269 YY_RULE_SETUP
6270 {
6271   LEAVE;
6272   ETag_surfxml_cluster();
6273   popbuffer(); /* attribute */
6274   switch (YY_START) {
6275    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
6276    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
6277   }
6278  }
6279         YY_BREAK
6280 case 243:
6281 /* rule 243 can match eol */
6282 YY_RULE_SETUP
6283 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
6284         YY_BREAK
6285 case 244:
6286 YY_RULE_SETUP
6287 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
6288         YY_BREAK
6289 case YY_STATE_EOF(E_surfxml_cluster):
6290 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cluster>' expected.");
6291         YY_BREAK
6292
6293 case 245:
6294 /* rule 245 can match eol */
6295 YY_RULE_SETUP
6296 FAIL("Starting tag <peer> is not allowed here.");
6297         YY_BREAK
6298 case 246:
6299 /* rule 246 can match eol */
6300 YY_RULE_SETUP
6301 {
6302   AX_surfxml_peer_id = 0;
6303   surfxml_peer_id_isset = 0;
6304   AX_surfxml_peer_power = 0;
6305   surfxml_peer_power_isset = 0;
6306   AX_surfxml_peer_bw_in = 0;
6307   surfxml_peer_bw_in_isset = 0;
6308   AX_surfxml_peer_bw_out = 0;
6309   surfxml_peer_bw_out_isset = 0;
6310   AX_surfxml_peer_lat = 0;
6311   surfxml_peer_lat_isset = 0;
6312   AX_surfxml_peer_coordinates = 0;
6313   surfxml_peer_coordinates_isset = 0;
6314   AX_surfxml_peer_availability_file = 0;
6315   surfxml_peer_availability_file_isset = 0;
6316   AX_surfxml_peer_state_file = 0;
6317   surfxml_peer_state_file_isset = 0;
6318   ENTER(AL_surfxml_peer); pushbuffer(0);
6319   }
6320         YY_BREAK
6321
6322 case 247:
6323 /* rule 247 can match eol */
6324 YY_RULE_SETUP
6325 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");} surfxml_peer_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
6326         YY_BREAK
6327 case 248:
6328 /* rule 248 can match eol */
6329 YY_RULE_SETUP
6330 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");}  surfxml_peer_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
6331         YY_BREAK
6332 case 249:
6333 /* rule 249 can match eol */
6334 YY_RULE_SETUP
6335 if (surfxml_peer_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_peer>");} surfxml_peer_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_power);
6336         YY_BREAK
6337 case 250:
6338 /* rule 250 can match eol */
6339 YY_RULE_SETUP
6340 if (surfxml_peer_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_peer>");}  surfxml_peer_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_power);
6341         YY_BREAK
6342 case 251:
6343 /* rule 251 can match eol */
6344 YY_RULE_SETUP
6345 if (surfxml_peer_bw_in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");} surfxml_peer_bw_in_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_in);
6346         YY_BREAK
6347 case 252:
6348 /* rule 252 can match eol */
6349 YY_RULE_SETUP
6350 if (surfxml_peer_bw_in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");}  surfxml_peer_bw_in_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_in);
6351         YY_BREAK
6352 case 253:
6353 /* rule 253 can match eol */
6354 YY_RULE_SETUP
6355 if (surfxml_peer_bw_out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");} surfxml_peer_bw_out_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_out);
6356         YY_BREAK
6357 case 254:
6358 /* rule 254 can match eol */
6359 YY_RULE_SETUP
6360 if (surfxml_peer_bw_out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");}  surfxml_peer_bw_out_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_out);
6361         YY_BREAK
6362 case 255:
6363 /* rule 255 can match eol */
6364 YY_RULE_SETUP
6365 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");} surfxml_peer_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
6366         YY_BREAK
6367 case 256:
6368 /* rule 256 can match eol */
6369 YY_RULE_SETUP
6370 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");}  surfxml_peer_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
6371         YY_BREAK
6372 case 257:
6373 /* rule 257 can match eol */
6374 YY_RULE_SETUP
6375 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");} surfxml_peer_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
6376         YY_BREAK
6377 case 258:
6378 /* rule 258 can match eol */
6379 YY_RULE_SETUP
6380 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");}  surfxml_peer_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
6381         YY_BREAK
6382 case 259:
6383 /* rule 259 can match eol */
6384 YY_RULE_SETUP
6385 if (surfxml_peer_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");} surfxml_peer_availability_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_availability_file);
6386         YY_BREAK
6387 case 260:
6388 /* rule 260 can match eol */
6389 YY_RULE_SETUP
6390 if (surfxml_peer_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");}  surfxml_peer_availability_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_availability_file);
6391         YY_BREAK
6392 case 261:
6393 /* rule 261 can match eol */
6394 YY_RULE_SETUP
6395 if (surfxml_peer_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");} surfxml_peer_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_state_file);
6396         YY_BREAK
6397 case 262:
6398 /* rule 262 can match eol */
6399 YY_RULE_SETUP
6400 if (surfxml_peer_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");}  surfxml_peer_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_state_file);
6401         YY_BREAK
6402 case 263:
6403 YY_RULE_SETUP
6404 {
6405   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
6406   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
6407   if (!AX_surfxml_peer_bw_in) FAIL("Required attribute `bw_in' not set for `peer' element.");
6408   if (!AX_surfxml_peer_bw_out) FAIL("Required attribute `bw_out' not set for `peer' element.");
6409   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
6410   LEAVE; STag_surfxml_peer();surfxml_pcdata_ix = 0; ENTER(E_surfxml_peer);
6411  }
6412         YY_BREAK
6413 case 264:
6414 YY_RULE_SETUP
6415 {
6416   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
6417   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
6418   if (!AX_surfxml_peer_bw_in) FAIL("Required attribute `bw_in' not set for `peer' element.");
6419   if (!AX_surfxml_peer_bw_out) FAIL("Required attribute `bw_out' not set for `peer' element.");
6420   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
6421   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
6422   switch (YY_START) {
6423    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
6424    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
6425   }
6426  }
6427         YY_BREAK
6428 case 265:
6429 YY_RULE_SETUP
6430 FAIL("Unexpected character `%c' in attribute list of peer element.", surf_parse_text[0]);
6431         YY_BREAK
6432 case 266:
6433 YY_RULE_SETUP
6434 FAIL("Bad attribute `%s' in `peer' element start tag.",surf_parse_text);
6435         YY_BREAK
6436 case YY_STATE_EOF(AL_surfxml_peer):
6437 FAIL("EOF in attribute list of `peer' element.");
6438         YY_BREAK
6439
6440 case 267:
6441 /* rule 267 can match eol */
6442 YY_RULE_SETUP
6443 {
6444   LEAVE;
6445   ETag_surfxml_peer();
6446   popbuffer(); /* attribute */
6447   switch (YY_START) {
6448    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
6449    case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
6450   }
6451  }
6452         YY_BREAK
6453 case 268:
6454 /* rule 268 can match eol */
6455 YY_RULE_SETUP
6456 FAIL("Unexpected end-tag `%s': `</peer>' expected.",surf_parse_text);
6457         YY_BREAK
6458 case 269:
6459 YY_RULE_SETUP
6460 FAIL("Unexpected character `%c': `</peer>' expected.",surf_parse_text[0]);
6461         YY_BREAK
6462 case YY_STATE_EOF(E_surfxml_peer):
6463 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</peer>' expected.");
6464         YY_BREAK
6465
6466 case 270:
6467 /* rule 270 can match eol */
6468 YY_RULE_SETUP
6469 FAIL("Starting tag <router> is not allowed here.");
6470         YY_BREAK
6471 case 271:
6472 /* rule 271 can match eol */
6473 YY_RULE_SETUP
6474 {
6475   AX_surfxml_router_id = 0;
6476   surfxml_router_id_isset = 0;
6477   AX_surfxml_router_coordinates = 0;
6478   surfxml_router_coordinates_isset = 0;
6479   ENTER(AL_surfxml_router); pushbuffer(0);
6480   }
6481         YY_BREAK
6482
6483 case 272:
6484 /* rule 272 can match eol */
6485 YY_RULE_SETUP
6486 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");} surfxml_router_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
6487         YY_BREAK
6488 case 273:
6489 /* rule 273 can match eol */
6490 YY_RULE_SETUP
6491 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");}  surfxml_router_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
6492         YY_BREAK
6493 case 274:
6494 /* rule 274 can match eol */
6495 YY_RULE_SETUP
6496 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");} surfxml_router_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
6497         YY_BREAK
6498 case 275:
6499 /* rule 275 can match eol */
6500 YY_RULE_SETUP
6501 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");}  surfxml_router_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
6502         YY_BREAK
6503 case 276:
6504 YY_RULE_SETUP
6505 {
6506   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
6507   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
6508  }
6509         YY_BREAK
6510 case 277:
6511 YY_RULE_SETUP
6512 {
6513   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
6514   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
6515   switch (YY_START) {
6516    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
6517   }
6518  }
6519         YY_BREAK
6520 case 278:
6521 YY_RULE_SETUP
6522 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
6523         YY_BREAK
6524 case 279:
6525 YY_RULE_SETUP
6526 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
6527         YY_BREAK
6528 case YY_STATE_EOF(AL_surfxml_router):
6529 FAIL("EOF in attribute list of `router' element.");
6530         YY_BREAK
6531
6532 case 280:
6533 /* rule 280 can match eol */
6534 YY_RULE_SETUP
6535 {
6536   LEAVE;
6537   ETag_surfxml_router();
6538   popbuffer(); /* attribute */
6539   switch (YY_START) {
6540    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
6541   }
6542  }
6543         YY_BREAK
6544 case 281:
6545 /* rule 281 can match eol */
6546 YY_RULE_SETUP
6547 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
6548         YY_BREAK
6549 case 282:
6550 YY_RULE_SETUP
6551 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
6552         YY_BREAK
6553 case YY_STATE_EOF(E_surfxml_router):
6554 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</router>' expected.");
6555         YY_BREAK
6556
6557 case 283:
6558 /* rule 283 can match eol */
6559 YY_RULE_SETUP
6560 FAIL("Starting tag <link> is not allowed here.");
6561         YY_BREAK
6562 case 284:
6563 /* rule 284 can match eol */
6564 YY_RULE_SETUP
6565 {
6566   AX_surfxml_link_id = 0;
6567   surfxml_link_id_isset = 0;
6568   AX_surfxml_link_bandwidth = 0;
6569   surfxml_link_bandwidth_isset = 0;
6570   AX_surfxml_link_bandwidth_file = 0;
6571   surfxml_link_bandwidth_file_isset = 0;
6572   AX_surfxml_link_latency = 24;
6573   surfxml_link_latency_isset = 0;
6574   AX_surfxml_link_latency_file = 0;
6575   surfxml_link_latency_file_isset = 0;
6576   AX_surfxml_link_state = A_surfxml_link_state_ON;
6577   surfxml_link_state_isset = 0;
6578   AX_surfxml_link_state_file = 0;
6579   surfxml_link_state_file_isset = 0;
6580   AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
6581   surfxml_link_sharing_policy_isset = 0;
6582   ENTER(AL_surfxml_link); pushbuffer(0);
6583   }
6584         YY_BREAK
6585
6586 case 285:
6587 /* rule 285 can match eol */
6588 YY_RULE_SETUP
6589 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");} surfxml_link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
6590         YY_BREAK
6591 case 286:
6592 /* rule 286 can match eol */
6593 YY_RULE_SETUP
6594 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");}  surfxml_link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
6595         YY_BREAK
6596 case 287:
6597 /* rule 287 can match eol */
6598 YY_RULE_SETUP
6599 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");} surfxml_link_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
6600         YY_BREAK
6601 case 288:
6602 /* rule 288 can match eol */
6603 YY_RULE_SETUP
6604 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");}  surfxml_link_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
6605         YY_BREAK
6606 case 289:
6607 /* rule 289 can match eol */
6608 YY_RULE_SETUP
6609 if (surfxml_link_bandwidth_file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");} surfxml_link_bandwidth_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
6610         YY_BREAK
6611 case 290:
6612 /* rule 290 can match eol */
6613 YY_RULE_SETUP
6614 if (surfxml_link_bandwidth_file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");}  surfxml_link_bandwidth_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
6615         YY_BREAK
6616 case 291:
6617 /* rule 291 can match eol */
6618 YY_RULE_SETUP
6619 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");} surfxml_link_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
6620         YY_BREAK
6621 case 292:
6622 /* rule 292 can match eol */
6623 YY_RULE_SETUP
6624 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");}  surfxml_link_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
6625         YY_BREAK
6626 case 293:
6627 /* rule 293 can match eol */
6628 YY_RULE_SETUP
6629 if (surfxml_link_latency_file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");} surfxml_link_latency_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
6630         YY_BREAK
6631 case 294:
6632 /* rule 294 can match eol */
6633 YY_RULE_SETUP
6634 if (surfxml_link_latency_file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");}  surfxml_link_latency_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
6635         YY_BREAK
6636 case 295:
6637 /* rule 295 can match eol */
6638 case 296:
6639 /* rule 296 can match eol */
6640 YY_RULE_SETUP
6641 A_surfxml_link_state = A_surfxml_link_state_ON;
6642         YY_BREAK
6643 case 297:
6644 /* rule 297 can match eol */
6645 case 298:
6646 /* rule 298 can match eol */
6647 YY_RULE_SETUP
6648 A_surfxml_link_state = A_surfxml_link_state_OFF;
6649         YY_BREAK
6650 case 299:
6651 /* rule 299 can match eol */
6652 YY_RULE_SETUP
6653 if (surfxml_link_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");} surfxml_link_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
6654         YY_BREAK
6655 case 300:
6656 /* rule 300 can match eol */
6657 YY_RULE_SETUP
6658 if (surfxml_link_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");}  surfxml_link_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
6659         YY_BREAK
6660 case 301:
6661 /* rule 301 can match eol */
6662 case 302:
6663 /* rule 302 can match eol */
6664 YY_RULE_SETUP
6665 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
6666         YY_BREAK
6667 case 303:
6668 /* rule 303 can match eol */
6669 case 304:
6670 /* rule 304 can match eol */
6671 YY_RULE_SETUP
6672 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;
6673         YY_BREAK
6674 case 305:
6675 /* rule 305 can match eol */
6676 case 306:
6677 /* rule 306 can match eol */
6678 YY_RULE_SETUP
6679 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FULLDUPLEX;
6680         YY_BREAK
6681 case 307:
6682 YY_RULE_SETUP
6683 {
6684   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
6685   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
6686   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
6687  }
6688         YY_BREAK
6689 case 308:
6690 YY_RULE_SETUP
6691 {
6692   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
6693   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
6694   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
6695   switch (YY_START) {
6696    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
6697    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
6698   }
6699  }
6700         YY_BREAK
6701 case 309:
6702 YY_RULE_SETUP
6703 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
6704         YY_BREAK
6705 case 310:
6706 YY_RULE_SETUP
6707 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
6708         YY_BREAK
6709 case YY_STATE_EOF(AL_surfxml_link):
6710 FAIL("EOF in attribute list of `link' element.");
6711         YY_BREAK
6712
6713 case 311:
6714 /* rule 311 can match eol */
6715 YY_RULE_SETUP
6716 {
6717   LEAVE;
6718   ETag_surfxml_link();
6719   popbuffer(); /* attribute */
6720   switch (YY_START) {
6721    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
6722    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
6723   }
6724  }
6725         YY_BREAK
6726 case 312:
6727 /* rule 312 can match eol */
6728 YY_RULE_SETUP
6729 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
6730         YY_BREAK
6731 case 313:
6732 YY_RULE_SETUP
6733 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
6734         YY_BREAK
6735 case YY_STATE_EOF(E_surfxml_link):
6736 case YY_STATE_EOF(S_surfxml_link_2):
6737 case YY_STATE_EOF(S_surfxml_link):
6738 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link>' expected.");
6739         YY_BREAK
6740
6741 case 314:
6742 /* rule 314 can match eol */
6743 YY_RULE_SETUP
6744 FAIL("Starting tag <route> is not allowed here.");
6745         YY_BREAK
6746 case 315:
6747 /* rule 315 can match eol */
6748 YY_RULE_SETUP
6749 {
6750   AX_surfxml_route_src = 0;
6751   surfxml_route_src_isset = 0;
6752   AX_surfxml_route_dst = 0;
6753   surfxml_route_dst_isset = 0;
6754   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
6755   surfxml_route_symmetrical_isset = 0;
6756   ENTER(AL_surfxml_route); pushbuffer(0);
6757   }
6758         YY_BREAK
6759
6760 case 316:
6761 /* rule 316 can match eol */
6762 YY_RULE_SETUP
6763 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");} surfxml_route_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
6764         YY_BREAK
6765 case 317:
6766 /* rule 317 can match eol */
6767 YY_RULE_SETUP
6768 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");}  surfxml_route_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
6769         YY_BREAK
6770 case 318:
6771 /* rule 318 can match eol */
6772 YY_RULE_SETUP
6773 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");} surfxml_route_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
6774         YY_BREAK
6775 case 319:
6776 /* rule 319 can match eol */
6777 YY_RULE_SETUP
6778 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");}  surfxml_route_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
6779         YY_BREAK
6780 case 320:
6781 /* rule 320 can match eol */
6782 case 321:
6783 /* rule 321 can match eol */
6784 YY_RULE_SETUP
6785 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
6786         YY_BREAK
6787 case 322:
6788 /* rule 322 can match eol */
6789 case 323:
6790 /* rule 323 can match eol */
6791 YY_RULE_SETUP
6792 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_NO;
6793         YY_BREAK
6794 case 324:
6795 YY_RULE_SETUP
6796 {
6797   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
6798   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
6799   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
6800  }
6801         YY_BREAK
6802 case 325:
6803 YY_RULE_SETUP
6804 {
6805   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
6806   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
6807   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
6808   switch (YY_START) {
6809    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_11: case S_surfxml_AS_13: case S_surfxml_AS: SET(S_surfxml_AS_13); break;
6810   }
6811  }
6812         YY_BREAK
6813 case 326:
6814 YY_RULE_SETUP
6815 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
6816         YY_BREAK
6817 case 327:
6818 YY_RULE_SETUP
6819 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
6820         YY_BREAK
6821 case YY_STATE_EOF(AL_surfxml_route):
6822 FAIL("EOF in attribute list of `route' element.");
6823         YY_BREAK
6824
6825 case 328:
6826 /* rule 328 can match eol */
6827 YY_RULE_SETUP
6828 {
6829   LEAVE;
6830   ETag_surfxml_route();
6831   popbuffer(); /* attribute */
6832   switch (YY_START) {
6833    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_11: case S_surfxml_AS_13: case S_surfxml_AS: SET(S_surfxml_AS_13); break;
6834   }
6835  }
6836         YY_BREAK
6837 case 329:
6838 /* rule 329 can match eol */
6839 YY_RULE_SETUP
6840 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
6841         YY_BREAK
6842 case 330:
6843 YY_RULE_SETUP
6844 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
6845         YY_BREAK
6846 case YY_STATE_EOF(S_surfxml_route):
6847 case YY_STATE_EOF(S_surfxml_route_2):
6848 case YY_STATE_EOF(E_surfxml_route):
6849 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</route>' expected.");
6850         YY_BREAK
6851
6852 case 331:
6853 /* rule 331 can match eol */
6854 YY_RULE_SETUP
6855 FAIL("Starting tag <ASroute> is not allowed here.");
6856         YY_BREAK
6857 case 332:
6858 /* rule 332 can match eol */
6859 YY_RULE_SETUP
6860 {
6861   AX_surfxml_ASroute_src = 0;
6862   surfxml_ASroute_src_isset = 0;
6863   AX_surfxml_ASroute_dst = 0;
6864   surfxml_ASroute_dst_isset = 0;
6865   AX_surfxml_ASroute_gw_src = 0;
6866   surfxml_ASroute_gw_src_isset = 0;
6867   AX_surfxml_ASroute_gw_dst = 0;
6868   surfxml_ASroute_gw_dst_isset = 0;
6869   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
6870   surfxml_ASroute_symmetrical_isset = 0;
6871   ENTER(AL_surfxml_ASroute); pushbuffer(0);
6872   }
6873         YY_BREAK
6874
6875 case 333:
6876 /* rule 333 can match eol */
6877 YY_RULE_SETUP
6878 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");} surfxml_ASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
6879         YY_BREAK
6880 case 334:
6881 /* rule 334 can match eol */
6882 YY_RULE_SETUP
6883 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");}  surfxml_ASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
6884         YY_BREAK
6885 case 335:
6886 /* rule 335 can match eol */
6887 YY_RULE_SETUP
6888 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");} surfxml_ASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
6889         YY_BREAK
6890 case 336:
6891 /* rule 336 can match eol */
6892 YY_RULE_SETUP
6893 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");}  surfxml_ASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
6894         YY_BREAK
6895 case 337:
6896 /* rule 337 can match eol */
6897 YY_RULE_SETUP
6898 if (surfxml_ASroute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");} surfxml_ASroute_gw_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_src);
6899         YY_BREAK
6900 case 338:
6901 /* rule 338 can match eol */
6902 YY_RULE_SETUP
6903 if (surfxml_ASroute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");}  surfxml_ASroute_gw_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_src);
6904         YY_BREAK
6905 case 339:
6906 /* rule 339 can match eol */
6907 YY_RULE_SETUP
6908 if (surfxml_ASroute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");} surfxml_ASroute_gw_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_dst);
6909         YY_BREAK
6910 case 340:
6911 /* rule 340 can match eol */
6912 YY_RULE_SETUP
6913 if (surfxml_ASroute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");}  surfxml_ASroute_gw_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_dst);
6914         YY_BREAK
6915 case 341:
6916 /* rule 341 can match eol */
6917 case 342:
6918 /* rule 342 can match eol */
6919 YY_RULE_SETUP
6920 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
6921         YY_BREAK
6922 case 343:
6923 /* rule 343 can match eol */
6924 case 344:
6925 /* rule 344 can match eol */
6926 YY_RULE_SETUP
6927 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_NO;
6928         YY_BREAK
6929 case 345:
6930 YY_RULE_SETUP
6931 {
6932   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
6933   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
6934   if (!AX_surfxml_ASroute_gw_src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
6935   if (!AX_surfxml_ASroute_gw_dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
6936   LEAVE; STag_surfxml_ASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_ASroute);
6937  }
6938         YY_BREAK
6939 case 346:
6940 YY_RULE_SETUP
6941 {
6942   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
6943   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
6944   if (!AX_surfxml_ASroute_gw_src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
6945   if (!AX_surfxml_ASroute_gw_dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
6946   LEAVE; STag_surfxml_ASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_ASroute(); popbuffer(); /* attribute */
6947   switch (YY_START) {
6948    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
6949   }
6950  }
6951         YY_BREAK
6952 case 347:
6953 YY_RULE_SETUP
6954 FAIL("Unexpected character `%c' in attribute list of ASroute element.", surf_parse_text[0]);
6955         YY_BREAK
6956 case 348:
6957 YY_RULE_SETUP
6958 FAIL("Bad attribute `%s' in `ASroute' element start tag.",surf_parse_text);
6959         YY_BREAK
6960 case YY_STATE_EOF(AL_surfxml_ASroute):
6961 FAIL("EOF in attribute list of `ASroute' element.");
6962         YY_BREAK
6963
6964 case 349:
6965 /* rule 349 can match eol */
6966 YY_RULE_SETUP
6967 {
6968   LEAVE;
6969   ETag_surfxml_ASroute();
6970   popbuffer(); /* attribute */
6971   switch (YY_START) {
6972    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
6973   }
6974  }
6975         YY_BREAK
6976 case 350:
6977 /* rule 350 can match eol */
6978 YY_RULE_SETUP
6979 FAIL("Unexpected end-tag `%s': `</ASroute>' expected.",surf_parse_text);
6980         YY_BREAK
6981 case 351:
6982 YY_RULE_SETUP
6983 FAIL("Unexpected character `%c': `</ASroute>' expected.",surf_parse_text[0]);
6984         YY_BREAK
6985 case YY_STATE_EOF(E_surfxml_ASroute):
6986 case YY_STATE_EOF(S_surfxml_ASroute):
6987 case YY_STATE_EOF(S_surfxml_ASroute_2):
6988 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</ASroute>' expected.");
6989         YY_BREAK
6990
6991 case 352:
6992 /* rule 352 can match eol */
6993 YY_RULE_SETUP
6994 FAIL("Starting tag <link_ctn> is not allowed here.");
6995         YY_BREAK
6996 case 353:
6997 /* rule 353 can match eol */
6998 YY_RULE_SETUP
6999 {
7000   AX_surfxml_link_ctn_id = 0;
7001   surfxml_link_ctn_id_isset = 0;
7002   AX_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_NONE;
7003   surfxml_link_ctn_direction_isset = 0;
7004   ENTER(AL_surfxml_link_ctn); pushbuffer(0);
7005   }
7006         YY_BREAK
7007
7008 case 354:
7009 /* rule 354 can match eol */
7010 YY_RULE_SETUP
7011 if (surfxml_link_ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link_ctn>");} surfxml_link_ctn_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_ctn_id);
7012         YY_BREAK
7013 case 355:
7014 /* rule 355 can match eol */
7015 YY_RULE_SETUP
7016 if (surfxml_link_ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link_ctn>");}  surfxml_link_ctn_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_ctn_id);
7017         YY_BREAK
7018 case 356:
7019 /* rule 356 can match eol */
7020 case 357:
7021 /* rule 357 can match eol */
7022 YY_RULE_SETUP
7023 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_UP;
7024         YY_BREAK
7025 case 358:
7026 /* rule 358 can match eol */
7027 case 359:
7028 /* rule 359 can match eol */
7029 YY_RULE_SETUP
7030 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_DOWN;
7031         YY_BREAK
7032 case 360:
7033 /* rule 360 can match eol */
7034 case 361:
7035 /* rule 361 can match eol */
7036 YY_RULE_SETUP
7037 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_NONE;
7038         YY_BREAK
7039 case 362:
7040 YY_RULE_SETUP
7041 {
7042   if (!AX_surfxml_link_ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7043   LEAVE; STag_surfxml_link_ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link_ctn);
7044  }
7045         YY_BREAK
7046 case 363:
7047 YY_RULE_SETUP
7048 {
7049   if (!AX_surfxml_link_ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7050   LEAVE; STag_surfxml_link_ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link_ctn(); popbuffer(); /* attribute */
7051   switch (YY_START) {
7052    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_2: case S_surfxml_bypassRoute_1: SET(S_surfxml_bypassRoute_2); break;
7053    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7054    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7055   }
7056  }
7057         YY_BREAK
7058 case 364:
7059 YY_RULE_SETUP
7060 FAIL("Unexpected character `%c' in attribute list of link_ctn element.", surf_parse_text[0]);
7061         YY_BREAK
7062 case 365:
7063 YY_RULE_SETUP
7064 FAIL("Bad attribute `%s' in `link_ctn' element start tag.",surf_parse_text);
7065         YY_BREAK
7066 case YY_STATE_EOF(AL_surfxml_link_ctn):
7067 FAIL("EOF in attribute list of `link_ctn' element.");
7068         YY_BREAK
7069
7070 case 366:
7071 /* rule 366 can match eol */
7072 YY_RULE_SETUP
7073 {
7074   LEAVE;
7075   ETag_surfxml_link_ctn();
7076   popbuffer(); /* attribute */
7077   switch (YY_START) {
7078    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_2: case S_surfxml_bypassRoute_1: SET(S_surfxml_bypassRoute_2); break;
7079    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7080    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7081   }
7082  }
7083         YY_BREAK
7084 case 367:
7085 /* rule 367 can match eol */
7086 YY_RULE_SETUP
7087 FAIL("Unexpected end-tag `%s': `</link_ctn>' expected.",surf_parse_text);
7088         YY_BREAK
7089 case 368:
7090 YY_RULE_SETUP
7091 FAIL("Unexpected character `%c': `</link_ctn>' expected.",surf_parse_text[0]);
7092         YY_BREAK
7093 case YY_STATE_EOF(E_surfxml_link_ctn):
7094 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link_ctn>' expected.");
7095         YY_BREAK
7096
7097 case 369:
7098 /* rule 369 can match eol */
7099 YY_RULE_SETUP
7100 FAIL("Starting tag <bypassRoute> is not allowed here.");
7101         YY_BREAK
7102 case 370:
7103 /* rule 370 can match eol */
7104 YY_RULE_SETUP
7105 {
7106   AX_surfxml_bypassRoute_src = 0;
7107   surfxml_bypassRoute_src_isset = 0;
7108   AX_surfxml_bypassRoute_dst = 0;
7109   surfxml_bypassRoute_dst_isset = 0;
7110   AX_surfxml_bypassRoute_gw_src = 0;
7111   surfxml_bypassRoute_gw_src_isset = 0;
7112   AX_surfxml_bypassRoute_gw_dst = 0;
7113   surfxml_bypassRoute_gw_dst_isset = 0;
7114   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
7115   }
7116         YY_BREAK
7117
7118 case 371:
7119 /* rule 371 can match eol */
7120 YY_RULE_SETUP
7121 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");} surfxml_bypassRoute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
7122         YY_BREAK
7123 case 372:
7124 /* rule 372 can match eol */
7125 YY_RULE_SETUP
7126 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");}  surfxml_bypassRoute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
7127         YY_BREAK
7128 case 373:
7129 /* rule 373 can match eol */
7130 YY_RULE_SETUP
7131 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");} surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
7132         YY_BREAK
7133 case 374:
7134 /* rule 374 can match eol */
7135 YY_RULE_SETUP
7136 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");}  surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
7137         YY_BREAK
7138 case 375:
7139 /* rule 375 can match eol */
7140 YY_RULE_SETUP
7141 if (surfxml_bypassRoute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassRoute>");} surfxml_bypassRoute_gw_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_gw_src);
7142         YY_BREAK
7143 case 376:
7144 /* rule 376 can match eol */
7145 YY_RULE_SETUP
7146 if (surfxml_bypassRoute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassRoute>");}  surfxml_bypassRoute_gw_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_gw_src);
7147         YY_BREAK
7148 case 377:
7149 /* rule 377 can match eol */
7150 YY_RULE_SETUP
7151 if (surfxml_bypassRoute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassRoute>");} surfxml_bypassRoute_gw_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_gw_dst);
7152         YY_BREAK
7153 case 378:
7154 /* rule 378 can match eol */
7155 YY_RULE_SETUP
7156 if (surfxml_bypassRoute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassRoute>");}  surfxml_bypassRoute_gw_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_gw_dst);
7157         YY_BREAK
7158 case 379:
7159 YY_RULE_SETUP
7160 {
7161   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
7162   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
7163   if (!AX_surfxml_bypassRoute_gw_src) FAIL("Required attribute `gw_src' not set for `bypassRoute' element.");
7164   if (!AX_surfxml_bypassRoute_gw_dst) FAIL("Required attribute `gw_dst' not set for `bypassRoute' element.");
7165   LEAVE; STag_surfxml_bypassRoute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassRoute);
7166  }
7167         YY_BREAK
7168 case 380:
7169 YY_RULE_SETUP
7170 {
7171   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
7172   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
7173   if (!AX_surfxml_bypassRoute_gw_src) FAIL("Required attribute `gw_src' not set for `bypassRoute' element.");
7174   if (!AX_surfxml_bypassRoute_gw_dst) FAIL("Required attribute `gw_dst' not set for `bypassRoute' element.");
7175   LEAVE; STag_surfxml_bypassRoute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassRoute(); popbuffer(); /* attribute */
7176   switch (YY_START) {
7177    case S_surfxml_AS_1: case S_surfxml_AS: case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
7178   }
7179  }
7180         YY_BREAK
7181 case 381:
7182 YY_RULE_SETUP
7183 FAIL("Unexpected character `%c' in attribute list of bypassRoute element.", surf_parse_text[0]);
7184         YY_BREAK
7185 case 382:
7186 YY_RULE_SETUP
7187 FAIL("Bad attribute `%s' in `bypassRoute' element start tag.",surf_parse_text);
7188         YY_BREAK
7189 case YY_STATE_EOF(AL_surfxml_bypassRoute):
7190 FAIL("EOF in attribute list of `bypassRoute' element.");
7191         YY_BREAK
7192
7193 case 383:
7194 /* rule 383 can match eol */
7195 YY_RULE_SETUP
7196 {
7197   LEAVE;
7198   ETag_surfxml_bypassRoute();
7199   popbuffer(); /* attribute */
7200   switch (YY_START) {
7201    case S_surfxml_AS_1: case S_surfxml_AS: case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
7202   }
7203  }
7204         YY_BREAK
7205 case 384:
7206 /* rule 384 can match eol */
7207 YY_RULE_SETUP
7208 FAIL("Unexpected end-tag `%s': `</bypassRoute>' expected.",surf_parse_text);
7209         YY_BREAK
7210 case 385:
7211 YY_RULE_SETUP
7212 FAIL("Unexpected character `%c': `</bypassRoute>' expected.",surf_parse_text[0]);
7213         YY_BREAK
7214 case YY_STATE_EOF(S_surfxml_bypassRoute):
7215 case YY_STATE_EOF(S_surfxml_bypassRoute_2):
7216 case YY_STATE_EOF(E_surfxml_bypassRoute):
7217 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassRoute>' expected.");
7218         YY_BREAK
7219
7220 case 386:
7221 /* rule 386 can match eol */
7222 YY_RULE_SETUP
7223 FAIL("Starting tag <process> is not allowed here.");
7224         YY_BREAK
7225 case 387:
7226 /* rule 387 can match eol */
7227 YY_RULE_SETUP
7228 {
7229   AX_surfxml_process_host = 0;
7230   surfxml_process_host_isset = 0;
7231   AX_surfxml_process_function = 0;
7232   surfxml_process_function_isset = 0;
7233   AX_surfxml_process_start_time = 28;
7234   surfxml_process_start_time_isset = 0;
7235   AX_surfxml_process_kill_time = 33;
7236   surfxml_process_kill_time_isset = 0;
7237   ENTER(AL_surfxml_process); pushbuffer(0);
7238   }
7239         YY_BREAK
7240
7241 case 388:
7242 /* rule 388 can match eol */
7243 YY_RULE_SETUP
7244 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");} surfxml_process_host_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
7245         YY_BREAK
7246 case 389:
7247 /* rule 389 can match eol */
7248 YY_RULE_SETUP
7249 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");}  surfxml_process_host_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
7250         YY_BREAK
7251 case 390:
7252 /* rule 390 can match eol */
7253 YY_RULE_SETUP
7254 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");} surfxml_process_function_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
7255         YY_BREAK
7256 case 391:
7257 /* rule 391 can match eol */
7258 YY_RULE_SETUP
7259 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");}  surfxml_process_function_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
7260         YY_BREAK
7261 case 392:
7262 /* rule 392 can match eol */
7263 YY_RULE_SETUP
7264 if (surfxml_process_start_time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");} surfxml_process_start_time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
7265         YY_BREAK
7266 case 393:
7267 /* rule 393 can match eol */
7268 YY_RULE_SETUP
7269 if (surfxml_process_start_time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");}  surfxml_process_start_time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
7270         YY_BREAK
7271 case 394:
7272 /* rule 394 can match eol */
7273 YY_RULE_SETUP
7274 if (surfxml_process_kill_time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");} surfxml_process_kill_time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
7275         YY_BREAK
7276 case 395:
7277 /* rule 395 can match eol */
7278 YY_RULE_SETUP
7279 if (surfxml_process_kill_time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");}  surfxml_process_kill_time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
7280         YY_BREAK
7281 case 396:
7282 YY_RULE_SETUP
7283 {
7284   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
7285   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
7286   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
7287  }
7288         YY_BREAK
7289 case 397:
7290 YY_RULE_SETUP
7291 {
7292   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
7293   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
7294   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
7295   switch (YY_START) {
7296    case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: SET(S_surfxml_platform_8); break;
7297   }
7298  }
7299         YY_BREAK
7300 case 398:
7301 YY_RULE_SETUP
7302 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
7303         YY_BREAK
7304 case 399:
7305 YY_RULE_SETUP
7306 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
7307         YY_BREAK
7308 case YY_STATE_EOF(AL_surfxml_process):
7309 FAIL("EOF in attribute list of `process' element.");
7310         YY_BREAK
7311
7312 case 400:
7313 /* rule 400 can match eol */
7314 YY_RULE_SETUP
7315 {
7316   LEAVE;
7317   ETag_surfxml_process();
7318   popbuffer(); /* attribute */
7319   switch (YY_START) {
7320    case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: SET(S_surfxml_platform_8); break;
7321   }
7322  }
7323         YY_BREAK
7324 case 401:
7325 /* rule 401 can match eol */
7326 YY_RULE_SETUP
7327 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
7328         YY_BREAK
7329 case 402:
7330 YY_RULE_SETUP
7331 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
7332         YY_BREAK
7333 case YY_STATE_EOF(E_surfxml_process):
7334 case YY_STATE_EOF(S_surfxml_process):
7335 case YY_STATE_EOF(S_surfxml_process_2):
7336 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</process>' expected.");
7337         YY_BREAK
7338
7339 case 403:
7340 /* rule 403 can match eol */
7341 YY_RULE_SETUP
7342 FAIL("Starting tag <argument> is not allowed here.");
7343         YY_BREAK
7344 case 404:
7345 /* rule 404 can match eol */
7346 YY_RULE_SETUP
7347 {
7348   AX_surfxml_argument_value = 0;
7349   surfxml_argument_value_isset = 0;
7350   ENTER(AL_surfxml_argument); pushbuffer(0);
7351   }
7352         YY_BREAK
7353
7354 case 405:
7355 /* rule 405 can match eol */
7356 YY_RULE_SETUP
7357 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");} surfxml_argument_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
7358         YY_BREAK
7359 case 406:
7360 /* rule 406 can match eol */
7361 YY_RULE_SETUP
7362 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");}  surfxml_argument_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
7363         YY_BREAK
7364 case 407:
7365 YY_RULE_SETUP
7366 {
7367   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
7368   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
7369  }
7370         YY_BREAK
7371 case 408:
7372 YY_RULE_SETUP
7373 {
7374   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
7375   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
7376   switch (YY_START) {
7377    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
7378   }
7379  }
7380         YY_BREAK
7381 case 409:
7382 YY_RULE_SETUP
7383 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
7384         YY_BREAK
7385 case 410:
7386 YY_RULE_SETUP
7387 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
7388         YY_BREAK
7389 case YY_STATE_EOF(AL_surfxml_argument):
7390 FAIL("EOF in attribute list of `argument' element.");
7391         YY_BREAK
7392
7393 case 411:
7394 /* rule 411 can match eol */
7395 YY_RULE_SETUP
7396 {
7397   LEAVE;
7398   ETag_surfxml_argument();
7399   popbuffer(); /* attribute */
7400   switch (YY_START) {
7401    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
7402   }
7403  }
7404         YY_BREAK
7405 case 412:
7406 /* rule 412 can match eol */
7407 YY_RULE_SETUP
7408 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
7409         YY_BREAK
7410 case 413:
7411 YY_RULE_SETUP
7412 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
7413         YY_BREAK
7414 case YY_STATE_EOF(E_surfxml_argument):
7415 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</argument>' expected.");
7416         YY_BREAK
7417
7418 case 414:
7419 /* rule 414 can match eol */
7420 YY_RULE_SETUP
7421 FAIL("Starting tag <config> is not allowed here.");
7422         YY_BREAK
7423 case 415:
7424 /* rule 415 can match eol */
7425 YY_RULE_SETUP
7426 {
7427   AX_surfxml_config_id = 0;
7428   surfxml_config_id_isset = 0;
7429   ENTER(AL_surfxml_config); pushbuffer(0);
7430   }
7431         YY_BREAK
7432
7433 case 416:
7434 /* rule 416 can match eol */
7435 YY_RULE_SETUP
7436 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");} surfxml_config_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
7437         YY_BREAK
7438 case 417:
7439 /* rule 417 can match eol */
7440 YY_RULE_SETUP
7441 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");}  surfxml_config_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
7442         YY_BREAK
7443 case 418:
7444 YY_RULE_SETUP
7445 {
7446   LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
7447  }
7448         YY_BREAK
7449 case 419:
7450 YY_RULE_SETUP
7451 {
7452   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
7453   switch (YY_START) {
7454    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
7455   }
7456  }
7457         YY_BREAK
7458 case 420:
7459 YY_RULE_SETUP
7460 FAIL("Unexpected character `%c' in attribute list of config element.", surf_parse_text[0]);
7461         YY_BREAK
7462 case 421:
7463 YY_RULE_SETUP
7464 FAIL("Bad attribute `%s' in `config' element start tag.",surf_parse_text);
7465         YY_BREAK
7466 case YY_STATE_EOF(AL_surfxml_config):
7467 FAIL("EOF in attribute list of `config' element.");
7468         YY_BREAK
7469
7470 case 422:
7471 /* rule 422 can match eol */
7472 YY_RULE_SETUP
7473 {
7474   LEAVE;
7475   ETag_surfxml_config();
7476   popbuffer(); /* attribute */
7477   switch (YY_START) {
7478    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
7479   }
7480  }
7481         YY_BREAK
7482 case 423:
7483 /* rule 423 can match eol */
7484 YY_RULE_SETUP
7485 FAIL("Unexpected end-tag `%s': `</config>' expected.",surf_parse_text);
7486         YY_BREAK
7487 case 424:
7488 YY_RULE_SETUP
7489 FAIL("Unexpected character `%c': `</config>' expected.",surf_parse_text[0]);
7490         YY_BREAK
7491 case YY_STATE_EOF(S_surfxml_config):
7492 case YY_STATE_EOF(S_surfxml_config_2):
7493 case YY_STATE_EOF(E_surfxml_config):
7494 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</config>' expected.");
7495         YY_BREAK
7496
7497 /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
7498   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
7499 case 425:
7500 /* rule 425 can match eol */
7501 YY_RULE_SETUP
7502 FAIL("Starting tag <prop> is not allowed here.");
7503         YY_BREAK
7504 case 426:
7505 /* rule 426 can match eol */
7506 YY_RULE_SETUP
7507 {
7508   AX_surfxml_prop_id = 0;
7509   surfxml_prop_id_isset = 0;
7510   AX_surfxml_prop_value = 0;
7511   surfxml_prop_value_isset = 0;
7512   ENTER(AL_surfxml_prop); pushbuffer(0);
7513   }
7514         YY_BREAK
7515
7516 case 427:
7517 /* rule 427 can match eol */
7518 YY_RULE_SETUP
7519 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");} surfxml_prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
7520         YY_BREAK
7521 case 428:
7522 /* rule 428 can match eol */
7523 YY_RULE_SETUP
7524 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");}  surfxml_prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
7525         YY_BREAK
7526 case 429:
7527 /* rule 429 can match eol */
7528 YY_RULE_SETUP
7529 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");} surfxml_prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
7530         YY_BREAK
7531 case 430:
7532 /* rule 430 can match eol */
7533 YY_RULE_SETUP
7534 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");}  surfxml_prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
7535         YY_BREAK
7536 case 431:
7537 YY_RULE_SETUP
7538 {
7539   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
7540   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
7541   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
7542  }
7543         YY_BREAK
7544 case 432:
7545 YY_RULE_SETUP
7546 {
7547   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
7548   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
7549   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
7550   switch (YY_START) {
7551    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
7552    case S_surfxml_storage_1: case S_surfxml_storage_2: case S_surfxml_storage: SET(S_surfxml_storage_2); break;
7553    case S_surfxml_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
7554    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
7555    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
7556    case S_surfxml_storage_type_2: case S_surfxml_storage_type: case S_surfxml_storage_type_1: SET(S_surfxml_storage_type_2); break;
7557    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
7558   }
7559  }
7560         YY_BREAK
7561 case 433:
7562 YY_RULE_SETUP
7563 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
7564         YY_BREAK
7565 case 434:
7566 YY_RULE_SETUP
7567 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
7568         YY_BREAK
7569 case YY_STATE_EOF(AL_surfxml_prop):
7570 FAIL("EOF in attribute list of `prop' element.");
7571         YY_BREAK
7572
7573 case 435:
7574 /* rule 435 can match eol */
7575 YY_RULE_SETUP
7576 {
7577   LEAVE;
7578   ETag_surfxml_prop();
7579   popbuffer(); /* attribute */
7580   switch (YY_START) {
7581    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
7582    case S_surfxml_storage_1: case S_surfxml_storage_2: case S_surfxml_storage: SET(S_surfxml_storage_2); break;
7583    case S_surfxml_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
7584    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
7585    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
7586    case S_surfxml_storage_type_2: case S_surfxml_storage_type: case S_surfxml_storage_type_1: SET(S_surfxml_storage_type_2); break;
7587    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
7588   }
7589  }
7590         YY_BREAK
7591 case 436:
7592 /* rule 436 can match eol */
7593 YY_RULE_SETUP
7594 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
7595         YY_BREAK
7596 case 437:
7597 YY_RULE_SETUP
7598 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
7599         YY_BREAK
7600 case YY_STATE_EOF(E_surfxml_prop):
7601 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</prop>' expected.");
7602         YY_BREAK
7603
7604 /* EPILOG: after the root element. */
7605
7606 case 438:
7607 YY_RULE_SETUP
7608 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
7609         YY_BREAK
7610 case YY_STATE_EOF(EPILOG):
7611 SUCCEED;
7612         YY_BREAK
7613
7614 /* CHARACTER DATA. */
7615
7616 /* Non-defined standard entities... */
7617 case 439:
7618 YY_RULE_SETUP
7619 BUFFERPUTC('&');
7620         YY_BREAK
7621 case 440:
7622 YY_RULE_SETUP
7623 BUFFERPUTC('<');
7624         YY_BREAK
7625 case 441:
7626 YY_RULE_SETUP
7627 BUFFERPUTC('>');
7628         YY_BREAK
7629 case 442:
7630 YY_RULE_SETUP
7631 BUFFERPUTC('\'');
7632         YY_BREAK
7633 case 443:
7634 YY_RULE_SETUP
7635 BUFFERPUTC('"');
7636         YY_BREAK
7637 /* Character entities. */
7638 case 444:
7639 YY_RULE_SETUP
7640 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
7641         YY_BREAK
7642 case 445:
7643 YY_RULE_SETUP
7644 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
7645         YY_BREAK
7646
7647 case 446:
7648 /* rule 446 can match eol */
7649 case 447:
7650 /* rule 447 can match eol */
7651 case 448:
7652 /* rule 448 can match eol */
7653 case 449:
7654 /* rule 449 can match eol */
7655 YY_RULE_SETUP
7656 BUFFERPUTC('\n');
7657         YY_BREAK
7658
7659 case 450:
7660 YY_RULE_SETUP
7661 ENTER(CDATA);
7662         YY_BREAK
7663 case 451:
7664 YY_RULE_SETUP
7665 FAIL("Unexpected `]""]>' in character data.");
7666         YY_BREAK
7667
7668 case 452:
7669 YY_RULE_SETUP
7670 BUFFERDONE; LEAVE;
7671         YY_BREAK
7672 case YY_STATE_EOF(VALUE1):
7673 FAIL("EOF in literal (\"'\" expected).");
7674         YY_BREAK
7675
7676 case 453:
7677 YY_RULE_SETUP
7678 BUFFERDONE; LEAVE;
7679         YY_BREAK
7680 case YY_STATE_EOF(VALUE2):
7681 FAIL("EOF in literal (`\"' expected).");
7682         YY_BREAK
7683
7684 case 454:
7685 /* rule 454 can match eol */
7686 YY_RULE_SETUP
7687 BUFFERPUTC(surf_parse_text[0]);
7688         YY_BREAK
7689 case 455:
7690 YY_RULE_SETUP
7691 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
7692         YY_BREAK
7693
7694 case 456:
7695 YY_RULE_SETUP
7696 LEAVE;
7697         YY_BREAK
7698 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
7699 case 457:
7700 YY_RULE_SETUP
7701 BUFFERPUTC(surf_parse_text[0]);
7702         YY_BREAK
7703 case YY_STATE_EOF(CDATA):
7704 FAIL("EOF in CDATA section.");
7705         YY_BREAK
7706
7707 /* Impossible rules to avoid warnings from flex(1). */
7708 /* Ideally, this should be replaced by code in flexml.pl that
7709     generates just the states not covered by other rules. */
7710
7711 case 458:
7712 /* rule 458 can match eol */
7713 YY_RULE_SETUP
7714 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
7715         YY_BREAK
7716
7717 case 459:
7718 YY_RULE_SETUP
7719 ECHO;
7720         YY_BREAK
7721 case YY_STATE_EOF(INITIAL):
7722 case YY_STATE_EOF(ROOT_surfxml_platform):
7723 case YY_STATE_EOF(S_surfxml_platform_2):
7724 case YY_STATE_EOF(S_surfxml_platform_5):
7725 case YY_STATE_EOF(S_surfxml_platform_7):
7726 case YY_STATE_EOF(S_surfxml_random_1):
7727 case YY_STATE_EOF(S_surfxml_AS_2):
7728 case YY_STATE_EOF(S_surfxml_AS_5):
7729 case YY_STATE_EOF(S_surfxml_AS_7):
7730 case YY_STATE_EOF(S_surfxml_AS_10):
7731 case YY_STATE_EOF(S_surfxml_AS_12):
7732 case YY_STATE_EOF(S_surfxml_storage_type_1):
7733 case YY_STATE_EOF(S_surfxml_storage_1):
7734 case YY_STATE_EOF(S_surfxml_host_1):
7735 case YY_STATE_EOF(S_surfxml_link_1):
7736 case YY_STATE_EOF(S_surfxml_route_1):
7737 case YY_STATE_EOF(S_surfxml_ASroute_1):
7738 case YY_STATE_EOF(S_surfxml_bypassRoute_1):
7739 case YY_STATE_EOF(S_surfxml_process_1):
7740 case YY_STATE_EOF(S_surfxml_config_1):
7741 case YY_STATE_EOF(IMPOSSIBLE):
7742         yyterminate();
7743
7744         case YY_END_OF_BUFFER:
7745                 {
7746                 /* Amount of text matched not including the EOB char. */
7747                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
7748
7749                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
7750                 *yy_cp = (yy_hold_char);
7751                 YY_RESTORE_YY_MORE_OFFSET
7752
7753                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
7754                         {
7755                         /* We're scanning a new file or input source.  It's
7756                          * possible that this happened because the user
7757                          * just pointed surf_parse_in at a new source and called
7758                          * surf_parse_lex().  If so, then we have to assure
7759                          * consistency between YY_CURRENT_BUFFER and our
7760                          * globals.  Here is the right place to do so, because
7761                          * this is the first action (other than possibly a
7762                          * back-up) that will match for the new input source.
7763                          */
7764                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
7765                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
7766                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
7767                         }
7768
7769                 /* Note that here we test for yy_c_buf_p "<=" to the position
7770                  * of the first EOB in the buffer, since yy_c_buf_p will
7771                  * already have been incremented past the NUL character
7772                  * (since all states make transitions on EOB to the
7773                  * end-of-buffer state).  Contrast this with the test
7774                  * in input().
7775                  */
7776                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
7777                         { /* This was really a NUL. */
7778                         yy_state_type yy_next_state;
7779
7780                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
7781
7782                         yy_current_state = yy_get_previous_state(  );
7783
7784                         /* Okay, we're now positioned to make the NUL
7785                          * transition.  We couldn't have
7786                          * yy_get_previous_state() go ahead and do it
7787                          * for us because it doesn't know how to deal
7788                          * with the possibility of jamming (and we don't
7789                          * want to build jamming into it because then it
7790                          * will run more slowly).
7791                          */
7792
7793                         yy_next_state = yy_try_NUL_trans( yy_current_state );
7794
7795                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
7796
7797                         if ( yy_next_state )
7798                                 {
7799                                 /* Consume the NUL. */
7800                                 yy_cp = ++(yy_c_buf_p);
7801                                 yy_current_state = yy_next_state;
7802                                 goto yy_match;
7803                                 }
7804
7805                         else
7806                                 {
7807                                 yy_cp = (yy_c_buf_p);
7808                                 goto yy_find_action;
7809                                 }
7810                         }
7811
7812                 else switch ( yy_get_next_buffer(  ) )
7813                         {
7814                         case EOB_ACT_END_OF_FILE:
7815                                 {
7816                                 (yy_did_buffer_switch_on_eof) = 0;
7817
7818                                 if ( surf_parse_wrap( ) )
7819                                         {
7820                                         /* Note: because we've taken care in
7821                                          * yy_get_next_buffer() to have set up
7822                                          * surf_parse_text, we can now set up
7823                                          * yy_c_buf_p so that if some total
7824                                          * hoser (like flex itself) wants to
7825                                          * call the scanner after we return the
7826                                          * YY_NULL, it'll still work - another
7827                                          * YY_NULL will get returned.
7828                                          */
7829                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
7830
7831                                         yy_act = YY_STATE_EOF(YY_START);
7832                                         goto do_action;
7833                                         }
7834
7835                                 else
7836                                         {
7837                                         if ( ! (yy_did_buffer_switch_on_eof) )
7838                                                 YY_NEW_FILE;
7839                                         }
7840                                 break;
7841                                 }
7842
7843                         case EOB_ACT_CONTINUE_SCAN:
7844                                 (yy_c_buf_p) =
7845                                         (yytext_ptr) + yy_amount_of_matched_text;
7846
7847                                 yy_current_state = yy_get_previous_state(  );
7848
7849                                 yy_cp = (yy_c_buf_p);
7850                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
7851                                 goto yy_match;
7852
7853                         case EOB_ACT_LAST_MATCH:
7854                                 (yy_c_buf_p) =
7855                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
7856
7857                                 yy_current_state = yy_get_previous_state(  );
7858
7859                                 yy_cp = (yy_c_buf_p);
7860                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
7861                                 goto yy_find_action;
7862                         }
7863                 break;
7864                 }
7865
7866         default:
7867                 YY_FATAL_ERROR(
7868                         "fatal flex scanner internal error--no action found" );
7869         } /* end of action switch */
7870                 } /* end of scanning one token */
7871 } /* end of surf_parse_lex */
7872
7873 /* yy_get_next_buffer - try to read in a new buffer
7874  *
7875  * Returns a code representing an action:
7876  *      EOB_ACT_LAST_MATCH -
7877  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
7878  *      EOB_ACT_END_OF_FILE - end of file
7879  */
7880 static int yy_get_next_buffer (void)
7881 {
7882         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
7883         register char *source = (yytext_ptr);
7884         register int number_to_move, i;
7885         int ret_val;
7886
7887         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
7888                 YY_FATAL_ERROR(
7889                 "fatal flex scanner internal error--end of buffer missed" );
7890
7891         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
7892                 { /* Don't try to fill the buffer, so this is an EOF. */
7893                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
7894                         {
7895                         /* We matched a single character, the EOB, so
7896                          * treat this as a final EOF.
7897                          */
7898                         return EOB_ACT_END_OF_FILE;
7899                         }
7900
7901                 else
7902                         {
7903                         /* We matched some text prior to the EOB, first
7904                          * process it.
7905                          */
7906                         return EOB_ACT_LAST_MATCH;
7907                         }
7908                 }
7909
7910         /* Try to read more data. */
7911
7912         /* First move last chars to start of buffer. */
7913         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
7914
7915         for ( i = 0; i < number_to_move; ++i )
7916                 *(dest++) = *(source++);
7917
7918         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
7919                 /* don't do the read, it's not guaranteed to return an EOF,
7920                  * just force an EOF
7921                  */
7922                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
7923
7924         else
7925                 {
7926                         int num_to_read =
7927                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
7928
7929                 while ( num_to_read <= 0 )
7930                         { /* Not enough room in the buffer - grow it. */
7931
7932                         /* just a shorter name for the current buffer */
7933                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
7934
7935                         int yy_c_buf_p_offset =
7936                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
7937
7938                         if ( b->yy_is_our_buffer )
7939                                 {
7940                                 int new_size = b->yy_buf_size * 2;
7941
7942                                 if ( new_size <= 0 )
7943                                         b->yy_buf_size += b->yy_buf_size / 8;
7944                                 else
7945                                         b->yy_buf_size *= 2;
7946
7947                                 b->yy_ch_buf = (char *)
7948                                         /* Include room in for 2 EOB chars. */
7949                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
7950                                 }
7951                         else
7952                                 /* Can't grow it, we don't own it. */
7953                                 b->yy_ch_buf = 0;
7954
7955                         if ( ! b->yy_ch_buf )
7956                                 YY_FATAL_ERROR(
7957                                 "fatal error - scanner input buffer overflow" );
7958
7959                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
7960
7961                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
7962                                                 number_to_move - 1;
7963
7964                         }
7965
7966                 if ( num_to_read > YY_READ_BUF_SIZE )
7967                         num_to_read = YY_READ_BUF_SIZE;
7968
7969                 /* Read in more data. */
7970                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
7971                         (yy_n_chars), (size_t) num_to_read );
7972
7973                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
7974                 }
7975
7976         if ( (yy_n_chars) == 0 )
7977                 {
7978                 if ( number_to_move == YY_MORE_ADJ )
7979                         {
7980                         ret_val = EOB_ACT_END_OF_FILE;
7981                         surf_parse_restart(surf_parse_in  );
7982                         }
7983
7984                 else
7985                         {
7986                         ret_val = EOB_ACT_LAST_MATCH;
7987                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
7988                                 YY_BUFFER_EOF_PENDING;
7989                         }
7990                 }
7991
7992         else
7993                 ret_val = EOB_ACT_CONTINUE_SCAN;
7994
7995         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
7996                 /* Extend the array by 50%, plus the number we really need. */
7997                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
7998                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
7999                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
8000                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
8001         }
8002
8003         (yy_n_chars) += number_to_move;
8004         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
8005         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
8006
8007         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
8008
8009         return ret_val;
8010 }
8011
8012 /* yy_get_previous_state - get the state just before the EOB char was reached */
8013
8014     static yy_state_type yy_get_previous_state (void)
8015 {
8016         register yy_state_type yy_current_state;
8017         register char *yy_cp;
8018     
8019         yy_current_state = (yy_start);
8020
8021         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
8022                 {
8023                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
8024                 if ( yy_accept[yy_current_state] )
8025                         {
8026                         (yy_last_accepting_state) = yy_current_state;
8027                         (yy_last_accepting_cpos) = yy_cp;
8028                         }
8029                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
8030                         {
8031                         yy_current_state = (int) yy_def[yy_current_state];
8032                         if ( yy_current_state >= 2697 )
8033                                 yy_c = yy_meta[(unsigned int) yy_c];
8034                         }
8035                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
8036                 }
8037
8038         return yy_current_state;
8039 }
8040
8041 /* yy_try_NUL_trans - try to make a transition on the NUL character
8042  *
8043  * synopsis
8044  *      next_state = yy_try_NUL_trans( current_state );
8045  */
8046     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
8047 {
8048         register int yy_is_jam;
8049         register char *yy_cp = (yy_c_buf_p);
8050
8051         register YY_CHAR yy_c = 1;
8052         if ( yy_accept[yy_current_state] )
8053                 {
8054                 (yy_last_accepting_state) = yy_current_state;
8055                 (yy_last_accepting_cpos) = yy_cp;
8056                 }
8057         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
8058                 {
8059                 yy_current_state = (int) yy_def[yy_current_state];
8060                 if ( yy_current_state >= 2697 )
8061                         yy_c = yy_meta[(unsigned int) yy_c];
8062                 }
8063         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
8064         yy_is_jam = (yy_current_state == 2696);
8065
8066         return yy_is_jam ? 0 : yy_current_state;
8067 }
8068
8069 #ifndef YY_NO_INPUT
8070 #ifdef __cplusplus
8071     static int yyinput (void)
8072 #else
8073     static int input  (void)
8074 #endif
8075
8076 {
8077         int c;
8078     
8079         *(yy_c_buf_p) = (yy_hold_char);
8080
8081         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
8082                 {
8083                 /* yy_c_buf_p now points to the character we want to return.
8084                  * If this occurs *before* the EOB characters, then it's a
8085                  * valid NUL; if not, then we've hit the end of the buffer.
8086                  */
8087                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
8088                         /* This was really a NUL. */
8089                         *(yy_c_buf_p) = '\0';
8090
8091                 else
8092                         { /* need more input */
8093                         int offset = (yy_c_buf_p) - (yytext_ptr);
8094                         ++(yy_c_buf_p);
8095
8096                         switch ( yy_get_next_buffer(  ) )
8097                                 {
8098                                 case EOB_ACT_LAST_MATCH:
8099                                         /* This happens because yy_g_n_b()
8100                                          * sees that we've accumulated a
8101                                          * token and flags that we need to
8102                                          * try matching the token before
8103                                          * proceeding.  But for input(),
8104                                          * there's no matching to consider.
8105                                          * So convert the EOB_ACT_LAST_MATCH
8106                                          * to EOB_ACT_END_OF_FILE.
8107                                          */
8108
8109                                         /* Reset buffer status. */
8110                                         surf_parse_restart(surf_parse_in );
8111
8112                                         /*FALLTHROUGH*/
8113
8114                                 case EOB_ACT_END_OF_FILE:
8115                                         {
8116                                         if ( surf_parse_wrap( ) )
8117                                                 return EOF;
8118
8119                                         if ( ! (yy_did_buffer_switch_on_eof) )
8120                                                 YY_NEW_FILE;
8121 #ifdef __cplusplus
8122                                         return yyinput();
8123 #else
8124                                         return input();
8125 #endif
8126                                         }
8127
8128                                 case EOB_ACT_CONTINUE_SCAN:
8129                                         (yy_c_buf_p) = (yytext_ptr) + offset;
8130                                         break;
8131                                 }
8132                         }
8133                 }
8134
8135         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
8136         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
8137         (yy_hold_char) = *++(yy_c_buf_p);
8138
8139         if ( c == '\n' )
8140                    
8141     surf_parse_lineno++;
8142 ;
8143
8144         return c;
8145 }
8146 #endif  /* ifndef YY_NO_INPUT */
8147
8148 /** Immediately switch to a different input stream.
8149  * @param input_file A readable stream.
8150  * 
8151  * @note This function does not reset the start condition to @c INITIAL .
8152  */
8153     void surf_parse_restart  (FILE * input_file )
8154 {
8155     
8156         if ( ! YY_CURRENT_BUFFER ){
8157         surf_parse_ensure_buffer_stack ();
8158                 YY_CURRENT_BUFFER_LVALUE =
8159             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
8160         }
8161
8162         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
8163         surf_parse__load_buffer_state( );
8164 }
8165
8166 /** Switch to a different input buffer.
8167  * @param new_buffer The new input buffer.
8168  * 
8169  */
8170     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
8171 {
8172     
8173         /* TODO. We should be able to replace this entire function body
8174          * with
8175          *              surf_parse_pop_buffer_state();
8176          *              surf_parse_push_buffer_state(new_buffer);
8177      */
8178         surf_parse_ensure_buffer_stack ();
8179         if ( YY_CURRENT_BUFFER == new_buffer )
8180                 return;
8181
8182         if ( YY_CURRENT_BUFFER )
8183                 {
8184                 /* Flush out information for old buffer. */
8185                 *(yy_c_buf_p) = (yy_hold_char);
8186                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
8187                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
8188                 }
8189
8190         YY_CURRENT_BUFFER_LVALUE = new_buffer;
8191         surf_parse__load_buffer_state( );
8192
8193         /* We don't actually know whether we did this switch during
8194          * EOF (surf_parse_wrap()) processing, but the only time this flag
8195          * is looked at is after surf_parse_wrap() is called, so it's safe
8196          * to go ahead and always set it.
8197          */
8198         (yy_did_buffer_switch_on_eof) = 1;
8199 }
8200
8201 static void surf_parse__load_buffer_state  (void)
8202 {
8203         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
8204         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
8205         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
8206         (yy_hold_char) = *(yy_c_buf_p);
8207 }
8208
8209 /** Allocate and initialize an input buffer state.
8210  * @param file A readable stream.
8211  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
8212  * 
8213  * @return the allocated buffer state.
8214  */
8215     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
8216 {
8217         YY_BUFFER_STATE b;
8218     
8219         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
8220         if ( ! b )
8221                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
8222
8223         b->yy_buf_size = size;
8224
8225         /* yy_ch_buf has to be 2 characters longer than the size given because
8226          * we need to put in 2 end-of-buffer characters.
8227          */
8228         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
8229         if ( ! b->yy_ch_buf )
8230                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
8231
8232         b->yy_is_our_buffer = 1;
8233
8234         surf_parse__init_buffer(b,file );
8235
8236         return b;
8237 }
8238
8239 /** Destroy the buffer.
8240  * @param b a buffer created with surf_parse__create_buffer()
8241  * 
8242  */
8243     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
8244 {
8245     
8246         if ( ! b )
8247                 return;
8248
8249         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
8250                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
8251
8252         if ( b->yy_is_our_buffer )
8253                 surf_parse_free((void *) b->yy_ch_buf  );
8254
8255         surf_parse_free((void *) b  );
8256 }
8257
8258 #ifndef __cplusplus
8259 extern int isatty (int );
8260 #endif /* __cplusplus */
8261     
8262 /* Initializes or reinitializes a buffer.
8263  * This function is sometimes called more than once on the same buffer,
8264  * such as during a surf_parse_restart() or at EOF.
8265  */
8266     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
8267
8268 {
8269         int oerrno = errno;
8270     
8271         surf_parse__flush_buffer(b );
8272
8273         b->yy_input_file = file;
8274         b->yy_fill_buffer = 1;
8275
8276     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
8277      * called from surf_parse_restart() or through yy_get_next_buffer.
8278      * In that case, we don't want to reset the lineno or column.
8279      */
8280     if (b != YY_CURRENT_BUFFER){
8281         b->yy_bs_lineno = 1;
8282         b->yy_bs_column = 0;
8283     }
8284
8285         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
8286     
8287         errno = oerrno;
8288 }
8289
8290 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
8291  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
8292  * 
8293  */
8294     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
8295 {
8296         if ( ! b )
8297                 return;
8298
8299         b->yy_n_chars = 0;
8300
8301         /* We always need two end-of-buffer characters.  The first causes
8302          * a transition to the end-of-buffer state.  The second causes
8303          * a jam in that state.
8304          */
8305         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
8306         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
8307
8308         b->yy_buf_pos = &b->yy_ch_buf[0];
8309
8310         b->yy_at_bol = 1;
8311         b->yy_buffer_status = YY_BUFFER_NEW;
8312
8313         if ( b == YY_CURRENT_BUFFER )
8314                 surf_parse__load_buffer_state( );
8315 }
8316
8317 /** Pushes the new state onto the stack. The new state becomes
8318  *  the current state. This function will allocate the stack
8319  *  if necessary.
8320  *  @param new_buffer The new state.
8321  *  
8322  */
8323 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
8324 {
8325         if (new_buffer == NULL)
8326                 return;
8327
8328         surf_parse_ensure_buffer_stack();
8329
8330         /* This block is copied from surf_parse__switch_to_buffer. */
8331         if ( YY_CURRENT_BUFFER )
8332                 {
8333                 /* Flush out information for old buffer. */
8334                 *(yy_c_buf_p) = (yy_hold_char);
8335                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
8336                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
8337                 }
8338
8339         /* Only push if top exists. Otherwise, replace top. */
8340         if (YY_CURRENT_BUFFER)
8341                 (yy_buffer_stack_top)++;
8342         YY_CURRENT_BUFFER_LVALUE = new_buffer;
8343
8344         /* copied from surf_parse__switch_to_buffer. */
8345         surf_parse__load_buffer_state( );
8346         (yy_did_buffer_switch_on_eof) = 1;
8347 }
8348
8349 /** Removes and deletes the top of the stack, if present.
8350  *  The next element becomes the new top.
8351  *  
8352  */
8353 void surf_parse_pop_buffer_state (void)
8354 {
8355         if (!YY_CURRENT_BUFFER)
8356                 return;
8357
8358         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
8359         YY_CURRENT_BUFFER_LVALUE = NULL;
8360         if ((yy_buffer_stack_top) > 0)
8361                 --(yy_buffer_stack_top);
8362
8363         if (YY_CURRENT_BUFFER) {
8364                 surf_parse__load_buffer_state( );
8365                 (yy_did_buffer_switch_on_eof) = 1;
8366         }
8367 }
8368
8369 /* Allocates the stack if it does not exist.
8370  *  Guarantees space for at least one push.
8371  */
8372 static void surf_parse_ensure_buffer_stack (void)
8373 {
8374         int num_to_alloc;
8375     
8376         if (!(yy_buffer_stack)) {
8377
8378                 /* First allocation is just for 2 elements, since we don't know if this
8379                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
8380                  * immediate realloc on the next call.
8381          */
8382                 num_to_alloc = 1;
8383                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
8384                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
8385                                                                 );
8386                 if ( ! (yy_buffer_stack) )
8387                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
8388                                                                   
8389                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
8390                                 
8391                 (yy_buffer_stack_max) = num_to_alloc;
8392                 (yy_buffer_stack_top) = 0;
8393                 return;
8394         }
8395
8396         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
8397
8398                 /* Increase the buffer to prepare for a possible push. */
8399                 int grow_size = 8 /* arbitrary grow size */;
8400
8401                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
8402                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
8403                                                                 ((yy_buffer_stack),
8404                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
8405                                                                 );
8406                 if ( ! (yy_buffer_stack) )
8407                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
8408
8409                 /* zero only the new slots.*/
8410                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
8411                 (yy_buffer_stack_max) = num_to_alloc;
8412         }
8413 }
8414
8415 /** Setup the input buffer state to scan directly from a user-specified character buffer.
8416  * @param base the character buffer
8417  * @param size the size in bytes of the character buffer
8418  * 
8419  * @return the newly allocated buffer state object. 
8420  */
8421 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
8422 {
8423         YY_BUFFER_STATE b;
8424     
8425         if ( size < 2 ||
8426              base[size-2] != YY_END_OF_BUFFER_CHAR ||
8427              base[size-1] != YY_END_OF_BUFFER_CHAR )
8428                 /* They forgot to leave room for the EOB's. */
8429                 return 0;
8430
8431         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
8432         if ( ! b )
8433                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
8434
8435         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
8436         b->yy_buf_pos = b->yy_ch_buf = base;
8437         b->yy_is_our_buffer = 0;
8438         b->yy_input_file = 0;
8439         b->yy_n_chars = b->yy_buf_size;
8440         b->yy_is_interactive = 0;
8441         b->yy_at_bol = 1;
8442         b->yy_fill_buffer = 0;
8443         b->yy_buffer_status = YY_BUFFER_NEW;
8444
8445         surf_parse__switch_to_buffer(b  );
8446
8447         return b;
8448 }
8449
8450 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
8451  * scan from a @e copy of @a str.
8452  * @param yystr a NUL-terminated string to scan
8453  * 
8454  * @return the newly allocated buffer state object.
8455  * @note If you want to scan bytes that may contain NUL values, then use
8456  *       surf_parse__scan_bytes() instead.
8457  */
8458 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
8459 {
8460     
8461         return surf_parse__scan_bytes(yystr,strlen(yystr) );
8462 }
8463
8464 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
8465  * scan from a @e copy of @a bytes.
8466  * @param yybytes the byte buffer to scan
8467  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
8468  * 
8469  * @return the newly allocated buffer state object.
8470  */
8471 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
8472 {
8473         YY_BUFFER_STATE b;
8474         char *buf;
8475         yy_size_t n;
8476         int i;
8477     
8478         /* Get memory for full buffer, including space for trailing EOB's. */
8479         n = _yybytes_len + 2;
8480         buf = (char *) surf_parse_alloc(n  );
8481         if ( ! buf )
8482                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
8483
8484         for ( i = 0; i < _yybytes_len; ++i )
8485                 buf[i] = yybytes[i];
8486
8487         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
8488
8489         b = surf_parse__scan_buffer(buf,n );
8490         if ( ! b )
8491                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
8492
8493         /* It's okay to grow etc. this buffer, and we should throw it
8494          * away when we're done.
8495          */
8496         b->yy_is_our_buffer = 1;
8497
8498         return b;
8499 }
8500
8501     static void yy_push_state (int  new_state )
8502 {
8503         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
8504                 {
8505                 yy_size_t new_size;
8506
8507                 (yy_start_stack_depth) += YY_START_STACK_INCR;
8508                 new_size = (yy_start_stack_depth) * sizeof( int );
8509
8510                 if ( ! (yy_start_stack) )
8511                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
8512
8513                 else
8514                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
8515
8516                 if ( ! (yy_start_stack) )
8517                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
8518                 }
8519
8520         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
8521
8522         BEGIN(new_state);
8523 }
8524
8525     static void yy_pop_state  (void)
8526 {
8527         if ( --(yy_start_stack_ptr) < 0 )
8528                 YY_FATAL_ERROR( "start-condition stack underflow" );
8529
8530         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
8531 }
8532
8533 #ifndef YY_EXIT_FAILURE
8534 #define YY_EXIT_FAILURE 2
8535 #endif
8536
8537 static void yy_fatal_error (yyconst char* msg )
8538 {
8539         (void) fprintf( stderr, "%s\n", msg );
8540         exit( YY_EXIT_FAILURE );
8541 }
8542
8543 /* Redefine yyless() so it works in section 3 code. */
8544
8545 #undef yyless
8546 #define yyless(n) \
8547         do \
8548                 { \
8549                 /* Undo effects of setting up surf_parse_text. */ \
8550         int yyless_macro_arg = (n); \
8551         YY_LESS_LINENO(yyless_macro_arg);\
8552                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
8553                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
8554                 (yy_hold_char) = *(yy_c_buf_p); \
8555                 *(yy_c_buf_p) = '\0'; \
8556                 surf_parse_leng = yyless_macro_arg; \
8557                 } \
8558         while ( 0 )
8559
8560 /* Accessor  methods (get/set functions) to struct members. */
8561
8562 /** Get the current line number.
8563  * 
8564  */
8565 int surf_parse_get_lineno  (void)
8566 {
8567         
8568     return surf_parse_lineno;
8569 }
8570
8571 /** Get the input stream.
8572  * 
8573  */
8574 FILE *surf_parse_get_in  (void)
8575 {
8576         return surf_parse_in;
8577 }
8578
8579 /** Get the output stream.
8580  * 
8581  */
8582 FILE *surf_parse_get_out  (void)
8583 {
8584         return surf_parse_out;
8585 }
8586
8587 /** Get the length of the current token.
8588  * 
8589  */
8590 int surf_parse_get_leng  (void)
8591 {
8592         return surf_parse_leng;
8593 }
8594
8595 /** Get the current token.
8596  * 
8597  */
8598
8599 char *surf_parse_get_text  (void)
8600 {
8601         return surf_parse_text;
8602 }
8603
8604 /** Set the current line number.
8605  * @param line_number
8606  * 
8607  */
8608 void surf_parse_set_lineno (int  line_number )
8609 {
8610     
8611     surf_parse_lineno = line_number;
8612 }
8613
8614 /** Set the input stream. This does not discard the current
8615  * input buffer.
8616  * @param in_str A readable stream.
8617  * 
8618  * @see surf_parse__switch_to_buffer
8619  */
8620 void surf_parse_set_in (FILE *  in_str )
8621 {
8622         surf_parse_in = in_str ;
8623 }
8624
8625 void surf_parse_set_out (FILE *  out_str )
8626 {
8627         surf_parse_out = out_str ;
8628 }
8629
8630 int surf_parse_get_debug  (void)
8631 {
8632         return surf_parse__flex_debug;
8633 }
8634
8635 void surf_parse_set_debug (int  bdebug )
8636 {
8637         surf_parse__flex_debug = bdebug ;
8638 }
8639
8640 static int yy_init_globals (void)
8641 {
8642         /* Initialization is the same as for the non-reentrant scanner.
8643      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
8644      */
8645
8646     /* We do not touch surf_parse_lineno unless the option is enabled. */
8647     surf_parse_lineno =  1;
8648     
8649     (yy_buffer_stack) = 0;
8650     (yy_buffer_stack_top) = 0;
8651     (yy_buffer_stack_max) = 0;
8652     (yy_c_buf_p) = (char *) 0;
8653     (yy_init) = 0;
8654     (yy_start) = 0;
8655
8656     (yy_start_stack_ptr) = 0;
8657     (yy_start_stack_depth) = 0;
8658     (yy_start_stack) =  NULL;
8659
8660 /* Defined in main.c */
8661 #ifdef YY_STDINIT
8662     surf_parse_in = stdin;
8663     surf_parse_out = stdout;
8664 #else
8665     surf_parse_in = (FILE *) 0;
8666     surf_parse_out = (FILE *) 0;
8667 #endif
8668
8669     /* For future reference: Set errno on error, since we are called by
8670      * surf_parse_lex_init()
8671      */
8672     return 0;
8673 }
8674
8675 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
8676 int surf_parse_lex_destroy  (void)
8677 {
8678     
8679     /* Pop the buffer stack, destroying each element. */
8680         while(YY_CURRENT_BUFFER){
8681                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
8682                 YY_CURRENT_BUFFER_LVALUE = NULL;
8683                 surf_parse_pop_buffer_state();
8684         }
8685
8686         /* Destroy the stack itself. */
8687         surf_parse_free((yy_buffer_stack) );
8688         (yy_buffer_stack) = NULL;
8689
8690     /* Destroy the start condition stack. */
8691         surf_parse_free((yy_start_stack)  );
8692         (yy_start_stack) = NULL;
8693
8694     /* Reset the globals. This is important in a non-reentrant scanner so the next time
8695      * surf_parse_lex() is called, initialization will occur. */
8696     yy_init_globals( );
8697
8698     return 0;
8699 }
8700
8701 /*
8702  * Internal utility routines.
8703  */
8704
8705 #ifndef yytext_ptr
8706 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
8707 {
8708         register int i;
8709         for ( i = 0; i < n; ++i )
8710                 s1[i] = s2[i];
8711 }
8712 #endif
8713
8714 #ifdef YY_NEED_STRLEN
8715 static int yy_flex_strlen (yyconst char * s )
8716 {
8717         register int n;
8718         for ( n = 0; s[n]; ++n )
8719                 ;
8720
8721         return n;
8722 }
8723 #endif
8724
8725 void *surf_parse_alloc (yy_size_t  size )
8726 {
8727         return (void *) malloc( size );
8728 }
8729
8730 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
8731 {
8732         /* The cast to (char *) in the following accommodates both
8733          * implementations that use char* generic pointers, and those
8734          * that use void* generic pointers.  It works with the latter
8735          * because both ANSI C and C++ allow castless assignment from
8736          * any pointer type to void*, and deal with argument conversions
8737          * as though doing an assignment.
8738          */
8739         return (void *) realloc( (char *) ptr, size );
8740 }
8741
8742 void surf_parse_free (void * ptr )
8743 {
8744         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
8745 }
8746
8747 #define YYTABLES_NAME "yytables"
8748
8749 /* Element context stack lookup. */
8750 int surfxml_element_context(int i)
8751 {
8752   return (0<i && i<yy_start_stack_depth
8753           ? yy_start_stack[yy_start_stack_ptr - i]
8754           : 0);
8755 }
8756
8757 #ifdef FLEX_DEBUG
8758 void print_yy_stack(char* fmt, ...)
8759 {
8760   int i = 0; va_list ap; va_start(ap, fmt);
8761   vfprintf(stderr, fmt, ap);
8762   if (surfxml_statenames) {
8763       for (i=1; i<yy_start_stack_ptr; i++) {
8764           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
8765       }
8766       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
8767   }
8768   va_end(ap);
8769 }
8770
8771 void print_surfxml_bufferstack()
8772 {
8773     int i;
8774     fputs("Buffer: ", stderr);
8775     for (i = 0; i < blimit; i++) {
8776        if ( surfxml_bufferstack[i] == '\377' ) break;
8777          putc(surfxml_bufferstack[i], stderr);
8778     }
8779     putc('\n', stderr);
8780 }
8781
8782 static void debug_enter(int state, const char* statename) {
8783   yy_push_state(state);
8784   if (surf_parse__flex_debug) {
8785        print_yy_stack("--ENTER(%s) : ",statename);
8786        print_surfxml_bufferstack();
8787   }
8788 }
8789
8790 static void debug_leave(void) {
8791     if (surf_parse__flex_debug) {
8792         print_yy_stack("--LEAVE : ");
8793         print_surfxml_bufferstack();
8794     }
8795   yy_pop_state();
8796 }
8797
8798 static void debug_set(int state, const char* statename) {
8799   BEGIN(state);
8800   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
8801 }
8802 #endif
8803
8804 static void cleanup(void)
8805 {
8806     if (surfxml_statenames) {
8807         free(surfxml_statenames);
8808         surfxml_statenames = NULL;
8809     }
8810     free(surfxml_bufferstack);
8811     surfxml_bufferstack = NULL;
8812
8813     free(indexstack);
8814     indexstack = NULL;
8815 }
8816
8817 static int fail(const char* fmt, ...)
8818 {
8819     int chars_left, used;
8820     va_list ap; va_start(ap, fmt);
8821 #ifdef FLEXML_yylineno
8822     used = sprintf(flexml_err_msg,
8823                    "Invalid XML (XML input line %d, state %d): ",
8824                    surf_parse_lineno, YY_START);
8825 #else
8826     used = sprintf(flexml_err_msg,
8827                    "Invalid XML (state %d): ",
8828                    YY_START);
8829 #endif
8830     chars_left = flexml_max_err_msg_size - used - 1;
8831     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
8832     va_end(ap);
8833
8834 #ifndef FLEXML_quiet_parser
8835     /* print directly to sdterr */
8836     fprintf(stderr, "%s\n", flexml_err_msg);
8837     flexml_err_msg[0] = '\0';
8838 #endif
8839
8840     cleanup();
8841
8842     return 1;
8843 }
8844