Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Less verbosity
[simgrid.git] / src / surf / surfxml.c
1 #line 2 "surf/surfxml.c"
2
3 #line 4 "surf/surfxml.c"
4
5 #define  YY_INT_ALIGNED short int
6
7 /* A lexical scanner generated by flex */
8
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12 #define YY_FLEX_SUBMINOR_VERSION 31
13 #if YY_FLEX_SUBMINOR_VERSION > 0
14 #define FLEX_BETA
15 #endif
16
17 /* First, we deal with  platform-specific or compiler-specific issues. */
18
19 /* begin standard C headers. */
20 #include <stdio.h>
21 #include <string.h>
22 #include <errno.h>
23 #include <stdlib.h>
24
25 /* end standard C headers. */
26
27 /* flex integer type definitions */
28
29 #ifndef FLEXINT_H
30 #define FLEXINT_H
31
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33
34 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
35 #include <inttypes.h>
36 typedef int8_t flex_int8_t;
37 typedef uint8_t flex_uint8_t;
38 typedef int16_t flex_int16_t;
39 typedef uint16_t flex_uint16_t;
40 typedef int32_t flex_int32_t;
41 typedef uint32_t flex_uint32_t;
42 #else
43 typedef signed char flex_int8_t;
44 typedef short int flex_int16_t;
45 typedef int flex_int32_t;
46 typedef unsigned char flex_uint8_t; 
47 typedef unsigned short int flex_uint16_t;
48 typedef unsigned int flex_uint32_t;
49 #endif /* ! C99 */
50
51 /* Limits of integral types. */
52 #ifndef INT8_MIN
53 #define INT8_MIN               (-128)
54 #endif
55 #ifndef INT16_MIN
56 #define INT16_MIN              (-32767-1)
57 #endif
58 #ifndef INT32_MIN
59 #define INT32_MIN              (-2147483647-1)
60 #endif
61 #ifndef INT8_MAX
62 #define INT8_MAX               (127)
63 #endif
64 #ifndef INT16_MAX
65 #define INT16_MAX              (32767)
66 #endif
67 #ifndef INT32_MAX
68 #define INT32_MAX              (2147483647)
69 #endif
70 #ifndef UINT8_MAX
71 #define UINT8_MAX              (255U)
72 #endif
73 #ifndef UINT16_MAX
74 #define UINT16_MAX             (65535U)
75 #endif
76 #ifndef UINT32_MAX
77 #define UINT32_MAX             (4294967295U)
78 #endif
79
80 #endif /* ! FLEXINT_H */
81
82 #ifdef __cplusplus
83
84 /* The "const" storage-class-modifier is valid. */
85 #define YY_USE_CONST
86
87 #else   /* ! __cplusplus */
88
89 #if __STDC__
90
91 #define YY_USE_CONST
92
93 #endif  /* __STDC__ */
94 #endif  /* ! __cplusplus */
95
96 #ifdef YY_USE_CONST
97 #define yyconst const
98 #else
99 #define yyconst
100 #endif
101
102 /* Returned upon end-of-file. */
103 #define YY_NULL 0
104
105 /* Promotes a possibly negative, possibly signed char to an unsigned
106  * integer for use as an array index.  If the signed char is negative,
107  * we want to instead treat it as an 8-bit unsigned char, hence the
108  * double cast.
109  */
110 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
111
112 /* Enter a start condition.  This macro really ought to take a parameter,
113  * but we do it the disgusting crufty way forced on us by the ()-less
114  * definition of BEGIN.
115  */
116 #define BEGIN (yy_start) = 1 + 2 *
117
118 /* Translate the current start state into a value that can be later handed
119  * to BEGIN to return to the state.  The YYSTATE alias is for lex
120  * compatibility.
121  */
122 #define YY_START (((yy_start) - 1) / 2)
123 #define YYSTATE YY_START
124
125 /* Action number for EOF rule of a given start state. */
126 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
127
128 /* Special action meaning "start processing a new file". */
129 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
130
131 #define YY_END_OF_BUFFER_CHAR 0
132
133 /* Size of default input buffer. */
134 #ifndef YY_BUF_SIZE
135 #define YY_BUF_SIZE 16384
136 #endif
137
138 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
139 #define YY_TYPEDEF_YY_BUFFER_STATE
140 typedef struct yy_buffer_state *YY_BUFFER_STATE;
141 #endif
142
143 extern int surf_parse_leng;
144
145 extern FILE *surf_parse_in, *surf_parse_out;
146
147 #define EOB_ACT_CONTINUE_SCAN 0
148 #define EOB_ACT_END_OF_FILE 1
149 #define EOB_ACT_LAST_MATCH 2
150
151     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
152      *       access to the local variable yy_act. Since yyless() is a macro, it would break
153      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
154      *       One obvious solution it to make yy_act a global. I tried that, and saw
155      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
156      *       normally declared as a register variable-- so it is not worth it.
157      */
158     #define  YY_LESS_LINENO(n) \
159             do { \
160                 int yyl;\
161                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
162                     if ( surf_parse_text[yyl] == '\n' )\
163                         --surf_parse_lineno;\
164             }while(0)
165     
166 /* Return all but the first "n" matched characters back to the input stream. */
167 #define yyless(n) \
168         do \
169                 { \
170                 /* Undo effects of setting up surf_parse_text. */ \
171         int yyless_macro_arg = (n); \
172         YY_LESS_LINENO(yyless_macro_arg);\
173                 *yy_cp = (yy_hold_char); \
174                 YY_RESTORE_YY_MORE_OFFSET \
175                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
176                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
177                 } \
178         while ( 0 )
179
180 #define unput(c) yyunput( c, (yytext_ptr)  )
181
182 /* The following is because we cannot portably get our hands on size_t
183  * (without autoconf's help, which isn't available because we want
184  * flex-generated scanners to compile on their own).
185  */
186
187 #ifndef YY_TYPEDEF_YY_SIZE_T
188 #define YY_TYPEDEF_YY_SIZE_T
189 typedef unsigned int yy_size_t;
190 #endif
191
192 #ifndef YY_STRUCT_YY_BUFFER_STATE
193 #define YY_STRUCT_YY_BUFFER_STATE
194 struct yy_buffer_state
195         {
196         FILE *yy_input_file;
197
198         char *yy_ch_buf;                /* input buffer */
199         char *yy_buf_pos;               /* current position in input buffer */
200
201         /* Size of input buffer in bytes, not including room for EOB
202          * characters.
203          */
204         yy_size_t yy_buf_size;
205
206         /* Number of characters read into yy_ch_buf, not including EOB
207          * characters.
208          */
209         int yy_n_chars;
210
211         /* Whether we "own" the buffer - i.e., we know we created it,
212          * and can realloc() it to grow it, and should free() it to
213          * delete it.
214          */
215         int yy_is_our_buffer;
216
217         /* Whether this is an "interactive" input source; if so, and
218          * if we're using stdio for input, then we want to use getc()
219          * instead of fread(), to make sure we stop fetching input after
220          * each newline.
221          */
222         int yy_is_interactive;
223
224         /* Whether we're considered to be at the beginning of a line.
225          * If so, '^' rules will be active on the next match, otherwise
226          * not.
227          */
228         int yy_at_bol;
229
230     int yy_bs_lineno; /**< The line count. */
231     int yy_bs_column; /**< The column count. */
232     
233         /* Whether to try to fill the input buffer when we reach the
234          * end of it.
235          */
236         int yy_fill_buffer;
237
238         int yy_buffer_status;
239
240 #define YY_BUFFER_NEW 0
241 #define YY_BUFFER_NORMAL 1
242         /* When an EOF's been seen but there's still some text to process
243          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
244          * shouldn't try reading from the input source any more.  We might
245          * still have a bunch of tokens to match, though, because of
246          * possible backing-up.
247          *
248          * When we actually see the EOF, we change the status to "new"
249          * (via surf_parse_restart()), so that the user can continue scanning by
250          * just pointing surf_parse_in at a new input file.
251          */
252 #define YY_BUFFER_EOF_PENDING 2
253
254         };
255 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
256
257 /* Stack of input buffers. */
258 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
259 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
260 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
261
262 /* We provide macros for accessing buffer states in case in the
263  * future we want to put the buffer states in a more general
264  * "scanner state".
265  *
266  * Returns the top of the stack, or NULL.
267  */
268 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
269                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
270                           : NULL)
271
272 /* Same as previous macro, but useful when we know that the buffer stack is not
273  * NULL or when we need an lvalue. For internal use only.
274  */
275 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
276
277 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
278 static char yy_hold_char;
279 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
280 int surf_parse_leng;
281
282 /* Points to current character in buffer. */
283 static char *yy_c_buf_p = (char *) 0;
284 static int yy_init = 1;         /* whether we need to initialize */
285 static int yy_start = 0;        /* start state number */
286
287 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
288  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
289  */
290 static int yy_did_buffer_switch_on_eof;
291
292 void surf_parse_restart (FILE *input_file  );
293 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
294 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
295 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
296 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
297 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
298 void surf_parse_pop_buffer_state (void );
299
300 static void surf_parse_ensure_buffer_stack (void );
301 static void surf_parse__load_buffer_state (void );
302 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
303
304 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
305
306 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
307 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
308 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
309
310 void *surf_parse_alloc (yy_size_t  );
311 void *surf_parse_realloc (void *,yy_size_t  );
312 void surf_parse_free (void *  );
313
314 #define yy_new_buffer surf_parse__create_buffer
315
316 #define yy_set_interactive(is_interactive) \
317         { \
318         if ( ! YY_CURRENT_BUFFER ){ \
319         surf_parse_ensure_buffer_stack (); \
320                 YY_CURRENT_BUFFER_LVALUE =    \
321             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
322         } \
323         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
324         }
325
326 #define yy_set_bol(at_bol) \
327         { \
328         if ( ! YY_CURRENT_BUFFER ){\
329         surf_parse_ensure_buffer_stack (); \
330                 YY_CURRENT_BUFFER_LVALUE =    \
331             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
332         } \
333         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
334         }
335
336 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
337
338 /* Begin user sect3 */
339
340 #define surf_parse_wrap() 1
341 #define YY_SKIP_YYWRAP
342
343 typedef unsigned char YY_CHAR;
344
345 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
346
347 typedef int yy_state_type;
348
349 extern int surf_parse_lineno;
350
351 int surf_parse_lineno = 1;
352
353 extern char *surf_parse_text;
354 #define yytext_ptr surf_parse_text
355
356 static yy_state_type yy_get_previous_state (void );
357 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
358 static int yy_get_next_buffer (void );
359 static void yy_fatal_error (yyconst char msg[]  );
360
361 /* Done after the current pattern has been matched and before the
362  * corresponding action - sets up surf_parse_text.
363  */
364 #define YY_DO_BEFORE_ACTION \
365         (yytext_ptr) = yy_bp; \
366         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
367         (yy_hold_char) = *yy_cp; \
368         *yy_cp = '\0'; \
369         (yy_c_buf_p) = yy_cp;
370
371 #define YY_NUM_RULES 178
372 #define YY_END_OF_BUFFER 179
373 /* This struct is not used in this scanner,
374    but its presence is necessary. */
375 struct yy_trans_info
376         {
377         flex_int32_t yy_verify;
378         flex_int32_t yy_nxt;
379         };
380 static yyconst flex_int16_t yy_accept[1345] =
381     {   0,
382         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
383         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
384         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
385         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
386         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
387         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
388         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
389         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
390         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
391         0,    0,  179,  177,   22,   10,   10,   22,   22,  157,
392
393        10,  157,    5,    6,    5,    8,    9,    8,  173,  165,
394       166,  174,  171,  174,  172,  176,  165,  166,  176,  177,
395        28,   10,   28,   28,   28,   26,   28,   32,   10,   32,
396       177,   32,  177,   38,   10,   38,   38,   38,   36,   38,
397        42,   10,   42,   42,  177,   68,   10,   68,   68,   68,
398        66,   68,   68,   68,   68,   68,   68,   72,   10,   72,
399       177,   96,   10,   96,   96,   96,   94,   96,   96,   96,
400        96,  100,   10,  100,  177,  116,   10,  116,  116,  116,
401       114,  116,  116,  116,  120,   10,  120,  177,  120,  126,
402        10,  126,  126,  126,  124,  126,  130,   10,  130,  177,
403
404       142,   10,  142,  142,  142,  140,  142,  142,  142,  142,
405       146,   10,  146,  177,  146,  152,   10,  152,  152,  152,
406       150,  152,  156,   10,  156,  174,  173,   10,    0,    2,
407         2,    0,    4,    7,  168,  167,    0,    0,    0,    0,
408         0,    0,    0,   27,   29,   29,    0,    0,    0,    0,
409         0,    0,   37,   39,   39,    0,   67,   69,   69,   69,
410        69,   69,   69,   69,    0,   95,   97,   97,   97,   97,
411        97,   97,    0,  115,  117,  117,  117,  117,    0,    0,
412       125,  127,  127,    0,  141,  143,  143,  143,  143,  143,
413         0,    0,  151,  153,  153,    0,    0,    0,    0,    0,
414
415         0,    0,    3,    0,    0,    0,    0,    0,    0,    0,
416       175,    0,   29,    0,    0,    0,    0,    0,    0,    0,
417        39,    0,    0,   69,   69,   69,   69,   69,   69,    0,
418         0,   97,   97,   97,   97,   97,    0,    0,  117,  117,
419       117,    0,    0,    0,  127,    0,    0,  143,  143,  143,
420       143,    0,    0,    0,  153,    0,    0,    0,  170,    0,
421        21,    1,    0,    0,  163,    0,    0,    0,  160,  159,
422         0,    0,   29,    0,    0,   31,    0,   43,    0,    0,
423         0,    0,   39,    0,    0,   41,    0,   69,   69,   69,
424        69,   69,   69,    0,    0,   71,    0,   97,   97,   97,
425
426        97,   97,    0,    0,   99,    0,    0,    0,  117,    0,
427         0,    0,    0,  119,    0,    0,  127,    0,    0,  129,
428         0,  143,  143,  143,  143,    0,    0,  145,    0,    0,
429       153,    0,    0,  155,    0,    0,    0,    0,  164,  158,
430         0,    0,    0,   29,    0,   43,    0,    0,    0,    0,
431         0,    0,    0,   69,   69,   69,    0,    0,   69,   69,
432         0,   97,   97,    0,    0,   97,   97,    0,    0,  105,
433       104,  117,    0,  103,  102,    0,    0,    0,    0,    0,
434       143,    0,    0,  143,  143,    0,    0,  153,    0,    0,
435         0,    0,    0,   12,    0,  161,  162,    0,   29,    0,
436
437         0,    0,    0,  101,    0,   35,   34,    0,   69,   69,
438        69,    0,   45,   44,    0,    0,    0,    0,   69,    0,
439        70,   97,   97,    0,   75,   74,   97,    0,    0,   97,
440         0,  117,    0,    0,    0,  123,  122,    0,  143,    0,
441       133,  132,  143,  143,    0,    0,    0,    0,    0,    0,
442         0,    0,    0,   11,    0,   29,    0,    0,    0,    0,
443       101,    0,   69,   69,   69,    0,   47,   46,    0,    0,
444         0,   69,   97,   97,   97,    0,    0,    0,   97,    0,
445       117,    0,    0,    0,  143,  143,  143,    0,    0,    0,
446       149,  148,    0,    0,    0,    0,    0,    0,    0,    0,
447
448         0,   33,    0,  131,    0,   69,   69,   69,    0,    0,
449        69,   97,    0,    0,   97,   97,    0,    0,   97,    0,
450       117,    0,  118,    0,    0,  143,  143,  143,    0,    0,
451         0,    0,    0,    0,    0,    0,    0,   25,   24,    0,
452        33,    0,  131,    0,   69,   69,   69,    0,    0,    0,
453         0,   69,   97,    0,   81,   80,   97,   97,    0,    0,
454         0,    0,   97,    0,  117,    0,    0,    0,    0,  143,
455       143,    0,  147,    0,  169,    0,    0,    0,    0,    0,
456         0,    0,   40,   69,   69,   69,    0,   53,    0,   52,
457        69,    0,    0,   97,   97,   97,    0,   85,    0,   84,
458
459        97,    0,  117,    0,    0,    0,  135,  134,    0,    0,
460       143,    0,  144,  147,    0,    0,    0,    0,    0,    0,
461         0,    0,    0,    0,    0,    0,   69,   69,   69,   55,
462        54,    0,    0,    0,   77,   76,   97,   97,   97,   87,
463        86,    0,    0,    0,  117,  117,    0,    0,    0,  139,
464       138,    0,    0,    0,  154,    0,    0,    0,    0,    0,
465         0,    0,    0,    0,    0,    0,    0,   69,   69,   69,
466         0,   57,   56,   97,   97,   97,    0,   89,   88,    0,
467       117,  117,    0,    0,    0,  137,  136,    0,    0,    0,
468         0,    0,    0,    0,    0,    0,    0,    0,   73,    0,
469
470         0,   69,   69,   69,   97,    0,    0,   97,    0,  117,
471       117,    0,    0,    0,    0,    0,    0,    0,    0,    0,
472         0,    0,    0,    0,    0,   73,    0,   49,   48,   69,
473        69,   69,   69,   97,    0,   83,   82,   97,    0,    0,
474         0,  117,    0,    0,  117,  121,    0,    0,    0,    0,
475         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
476         0,   69,   69,   69,   69,    0,    0,    0,    0,    0,
477        98,    0,  109,  108,  117,    0,  107,  106,  117,  121,
478         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
479         0,    0,    0,    0,    0,    0,   69,   69,   69,   69,
480
481         0,   79,   78,    0,    0,    0,  117,  117,    0,  128,
482         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
483        12,    0,   12,    0,    0,    0,   69,   69,   69,   69,
484         0,    0,    0,    0,  117,  117,    0,    0,    0,    0,
485         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
486         0,    0,    0,    0,    0,    0,   69,    0,    0,    0,
487         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
488         0,    0,    0,    0,    0,    0,    0,   51,   50,    0,
489        61,   60,    0,   59,   58,   69,    0,   65,   64,    0,
490         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
491
492         0,    0,    0,   11,    0,    0,   69,    0,    0,    0,
493         0,  117,  117,    0,    0,    0,    0,    0,    0,    0,
494         0,   23,    0,   69,    0,    0,    0,    0,  117,  117,
495         0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
496         0,   69,    0,    0,    0,    0,  117,  117,    0,    0,
497         0,    0,    0,    0,    0,    0,    0,    0,   30,    0,
498         0,    0,   91,    0,   90,  117,  117,    0,    0,    0,
499         0,    0,    0,    0,    0,    0,    0,    0,   63,   62,
500        93,   92,  117,  117,    0,    0,    0,    0,    0,    0,
501         0,    0,    0,    0,  117,  117,    0,    0,    0,    0,
502
503         0,    0,    0,    0,    0,    0,    0,    0,  117,  117,
504         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
505         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
506         0,    0,    0,    0,    0,    0,    0,    0,  117,  117,
507         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
508         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
509         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
510         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
511         0,    0,    0,    0,    0,    0,    0,  113,  112,    0,
512       111,  110,    0,    0,    0,    0,    0,    0,    0,    0,
513
514         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
515         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
516         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
517         0,    0,    0,    0,    0,    0,    0,    0,    0,   15,
518         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
519         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
520         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
521         0,    0,    0,   17,    0,    0,    0,    0,    0,    0,
522         0,    0,    0,    0,    0,    0,    0,   16,    0,    0,
523         0,    0,    0,   20,    0,    0,    0,   13,    0,    0,
524
525         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
526         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
527         0,    0,   19,    0,    0,    0,    0,    0,    0,   14,
528         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
529         0,    0,   18,    0
530     } ;
531
532 static yyconst flex_int32_t yy_ec[256] =
533     {   0,
534         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
535         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
536         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
537         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
538         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
539        13,   13,   13,   13,   13,   13,   13,   14,   15,   16,
540        17,   18,   19,    1,   20,   21,   22,   23,   24,   25,
541        14,   26,   27,   14,   14,   14,   28,   29,   30,   31,
542        14,   32,   33,   34,   14,   14,   14,   14,   35,   14,
543        36,    1,   37,    1,   38,    1,   39,   40,   41,   42,
544
545        43,   44,   45,   46,   47,   14,   48,   49,   50,   51,
546        52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
547        62,   14,    1,    1,    1,    1,    1,    1,    1,    1,
548         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
549         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
550         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
551         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
552         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
553         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
554         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
555
556         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
557         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
558         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
559         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
560         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
561         1,    1,    1,    1,    1
562     } ;
563
564 static yyconst flex_int32_t yy_meta[63] =
565     {   0,
566         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
567         3,    1,    4,    5,    1,    1,    1,    6,    1,    7,
568         7,    7,    7,    7,    7,    5,    5,    5,    5,    5,
569         5,    5,    5,    5,    5,    1,    1,    5,    7,    7,
570         7,    7,    7,    7,    5,    5,    5,    5,    5,    5,
571         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
572         5,    5
573     } ;
574
575 static yyconst flex_int16_t yy_base[1401] =
576     {   0,
577         0,    0,    0,    3,    6,    9,   24,   27,   11,   14,
578        15,   17,   29,   38,   45,   52,   59,   61,   67,   70,
579        98,  157,   73,   76,  116,  120,  123,  126,  175,  179,
580       182,  185,  216,  260,  234,  238,  241,  278,  282,  285,
581       289,  304,  307,  310,  326,    0,  387,  390,  393,  396,
582       412,  468,  430,  434,  437,  440,  524,  580,  486,  490,
583       493,  496,  542,  546,  549,  552,  598,  602,  636,  687,
584       605,  608,  654,  658,  738,  794,  661,  664,  705,  709,
585       712,  715,  756,  760,  763,  767,  850,  909,  812,  816,
586       833,  868, 3674, 3675, 3675,   91,  141,   47,   62, 3675,
587
588       144,  132, 3675, 3675, 3663, 3675, 3675, 3654, 3675, 3667,
589      3667,  836, 3675, 3675, 3675, 3675, 3665, 3665, 3630,  194,
590      3675,  150, 3648,    0,  136, 3675, 3622, 3675,  200,  888,
591       889,  195,  192, 3675,  206, 3646,    0,  187, 3675, 3616,
592      3675,  313,  942,  446,  803, 3675,  511, 3644,    0,  440,
593      3675, 3602, 3609, 3620, 3619, 3605, 3599, 3675,  518,  558,
594       717, 3675,  570, 3637,    0,  559, 3675, 3615, 3614, 3613,
595        92, 3675,  626,  614,  768, 3675,  679, 3633,    0,  615,
596      3675, 3594, 3599, 3593, 3675,  682,  877,  772,  715, 3675,
597       786, 3629,    0,  773, 3675, 3607, 3675,  822,  883,  878,
598
599      3675,  831, 3627,    0,  859, 3675, 3586, 3591, 3595, 3584,
600      3675,  843,  943,  918,  887, 3675,  947, 3622,    0,  872,
601      3675, 3600, 3675,  956,  951, 3633, 3600,  962,   34, 3575,
602      3675, 3625, 3616, 3675, 3675, 3675,   26,   32, 3576, 3575,
603      3573, 3612, 3580, 3675,    0, 3573, 3574, 3573, 3574, 3581,
604      3568, 3570, 3675,    0, 3572, 3573, 3675,    0, 3580, 3561,
605      3556, 3566, 3555, 3575, 3572, 3675,    0, 3561, 3554, 3560,
606      3570, 3569, 3556, 3675,    0, 3549, 3552, 3563, 3548, 3550,
607      3675,    0, 3551, 3545, 3675,    0, 3548, 3542, 3548, 3557,
608      3542, 3539, 3675,    0, 3544, 3553, 3555, 3572, 3571, 3578,
609
610         5, 3537, 3675,   75,    0, 3533, 3533, 3569, 3568, 3530,
611      3675, 3542, 3524,  969,  972, 3521, 3537, 3520, 3524, 3517,
612      3531,  976,  982, 3526, 3529, 3533, 3527, 3526, 3511,  999,
613      1002, 3525, 3523, 3522, 3509, 3506, 1005, 1008, 1011, 3523,
614      1027, 1032, 1035, 3503, 3517, 1038, 1043, 3518, 3501, 3508,
615      3501, 1055, 1060, 3510, 3496, 1063, 1066, 3531, 3675, 3534,
616      3675, 3675,  233, 3502, 3675, 3535, 3534, 3492, 3675, 3675,
617      3490, 3489, 3498, 1072, 1089, 3675, 1094, 1097, 3495, 3483,
618      3501, 3484, 1100, 1106, 1116, 3675, 1123, 3491, 3484, 3486,
619      1126, 3482, 3493, 1133, 1136, 3675, 1142, 3475, 3483, 1145,
620
621      3486, 3489, 1153, 1163, 3675, 1166, 1170, 1173, 3490, 1186,
622      1189, 1202, 1206, 3675, 1209, 3473, 1212, 1215, 1228, 3675,
623      1232, 3472, 1235, 3490, 3470, 1238, 1241, 3675, 1245, 3468,
624      3482, 1251, 1258, 3675, 1262, 3501,  122, 1268, 3675, 3675,
625      3508, 3507, 3477, 3468, 1271, 1275, 3461, 3466, 3474, 3473,
626      1279, 1289, 1297, 3476, 3470, 3455, 1300, 1307, 1316, 1319,
627      1322, 3465, 3470, 1327, 1339, 3459, 1335, 1347, 1352, 3675,
628      3675, 3452, 1360, 3675, 3675, 1368, 3465, 1372, 1375, 1388,
629      3460, 1391, 1394, 3449, 3467, 1408, 3454, 1411, 1414, 3483,
630       115, 3484, 1417, 3675, 3483, 3675, 3675, 3448, 3448, 1420,
631
632      3456, 3442, 3440, 1427, 1437, 3675, 3675, 1448, 3455, 3451,
633      3436, 1452, 3675, 3675, 1465, 1471, 1481, 1484, 3448, 1492,
634      3675, 3449, 3428, 1498, 3675, 3675, 3444, 1509, 1512, 3444,
635      1520, 3449, 1525, 3448, 1528, 3675, 3675, 1537, 3433, 1542,
636      3675, 3675, 3437, 3426, 1555, 3439, 1550, 1560, 1572, 3447,
637        66,  197,  153, 3675, 3425, 1575, 1579, 3436, 3430, 3421,
638      1582, 1585, 3429, 3420, 3429, 1598, 3675, 3675, 1606, 3443,
639      3442, 3424, 3413, 1615, 3431, 1631, 3438, 3437, 3419, 1621,
640      3413, 1626, 3421, 1639, 3412, 3412, 3414, 1643, 3409, 1646,
641      3675, 3675, 1660, 3439,  300,  281,  194, 3408, 1656, 1663,
642
643      1677, 1591, 3419, 1680, 1683, 3407, 3412, 3402,  296,  376,
644      3404, 3406, 1687, 1703, 3407, 3397,  379,  382, 3400, 1690,
645      3397, 1711, 3675, 3398, 1715, 1694, 3403, 3395, 1718, 3387,
646      1721, 3407, 1738,  238,  408, 3404, 1741, 3675, 3675, 1749,
647      1757, 3392, 1760, 1766, 3393, 3388, 3391, 3412, 3430, 3410,
648      3425, 3390, 1773, 1776, 3675, 3675, 3385, 3379, 3405, 3423,
649      3403, 3418, 3383, 1784, 3387, 3381, 1789, 1792, 1810, 1801,
650      3380, 1821, 1824, 1827, 3675, 1883,  241,  256, 3380, 1830,
651      3374, 1833, 3675, 3363, 3378, 3367, 3411, 3675, 3407, 3675,
652      1838, 1850, 1854, 3371, 3365, 3364, 3406, 3675, 3402, 3675,
653
654      1862, 1870,  896, 3360, 1873, 1890, 3675, 3675, 1878, 1900,
655      1908, 1911, 3675, 1867, 1924,  240,  429,  384,  162,  520,
656       439,  500,  449, 3366, 1929, 3357, 3345, 3363, 3360, 3675,
657      3675, 1937, 1942, 1953, 3675, 3675, 3357, 3360, 3355, 3675,
658      3675, 1961, 1964, 1972, 3345, 3345, 3356, 1977, 1980, 3675,
659      3675, 1989, 1994, 2005, 3675,  549,   73,  660,  558,  632,
660       505,  172,  734,  883, 3342, 2008, 3349, 2011, 3358, 3357,
661      2027, 3675, 3675, 3345, 2018, 3352, 2035, 3675, 3675, 2014,
662      3335, 3350, 3339, 2043, 2050, 3675, 3675,  617, 2060,  661,
663       959,  935,  862,  970,  614, 2064, 3348, 2067, 2070, 2073,
664
665      2085, 3344,  399, 3332, 3245, 2093, 2096, 3225, 2104, 2109,
666      2112, 3220, 2115,  711, 2128,  763,  561,  830,  855,  861,
667      2136, 2139, 2156, 3219, 2165, 2132, 2169, 3675, 3675, 3224,
668      3225, 3222, 3223, 2177, 2182, 3675, 3675, 2193, 2196, 2199,
669      2209, 3199, 2205, 2217, 3196, 2225, 2228,  973,  284,  775,
670       448,  915,  613, 2231, 2234, 2238, 2255, 2285, 2322, 3206,
671      2263, 3197, 3200, 3185, 3174, 2251, 2268, 2303, 2306, 2280,
672      3675, 2340, 3675, 3675, 3179, 2348, 3675, 3675, 3174, 2276,
673      2358,  981,  963, 1000, 1004, 1030, 1076, 2361, 1006, 2364,
674      1054,   41, 2394, 2431, 3163, 2423, 3168, 2993, 3009, 3006,
675
676      2381, 3675, 3675, 2412, 1046, 1055, 2991, 2990, 2389, 3675,
677      1059, 1071, 2451,  585, 1036, 2454, 1088, 1064, 1179,  492,
678      3040,  103, 3036, 2457, 2985, 2460, 2477, 2480, 2483, 2486,
679      3021, 3014, 3012, 3000, 2979, 2977, 2489,  708, 2502, 1065,
680      1093, 2506, 1145, 1140, 3000, 2986, 2979, 2512, 2857, 2515,
681      2523, 2539, 2534, 2550, 2558, 2561, 2845, 2574, 2577, 2791,
682      2791, 2766, 2729, 2678, 2665, 2585,  811, 1124,  951, 1183,
683      1233, 1162, 1176, 2670, 2564, 2590, 2593, 3675, 3675, 2603,
684      3675, 3675, 2611, 3675, 3675, 2539, 2619, 3675, 3675, 2538,
685      2496, 2481, 2434, 2281, 2267, 1270, 2627, 1189, 1135, 1316,
686
687      1294, 1290, 1317, 3675, 2266, 2630, 2198, 2177, 2169, 2163,
688      2124, 2046, 2000, 1314, 2637, 1349, 1104, 1143, 1367, 1266,
689      1386, 2420, 2647, 1901, 1877, 1884, 1639, 1603, 1560, 1503,
690      1429, 1409, 1415, 1364, 2650, 1416, 1381, 2654, 1391, 2657,
691      2660, 2667, 1512, 1483, 1420, 1371, 1263, 1242, 1418, 1441,
692      1461, 1463, 2671, 1203, 1507, 2677, 2688, 2697, 3675, 2705,
693      2708, 1196, 3675, 1141, 3675,  970,  680, 1532, 1487, 1515,
694      2716, 1435, 1210, 2721, 1491, 1543, 2724, 2727, 3675, 3675,
695      3675, 3675,  695,  692, 2741, 1547, 1656, 2744, 1335, 1444,
696      2752, 1538, 1553, 1485,  620,  570, 2762,  498,  719, 1595,
697
698      1598, 1474, 1460, 1692, 1698, 1620, 1710, 1369,  464,  419,
699      1717, 1765, 1618, 1638, 1713, 1731, 1596, 1719, 1739, 1788,
700      1737, 1799, 1587,  409,  369, 1792, 1831, 1653, 1829, 1843,
701      1865, 1780, 1900, 1882, 1903, 1783, 1844, 1899,  258,  187,
702      1917, 1932, 1716, 1879, 1925, 1981, 2770, 1943, 2006, 2016,
703      1935, 2030, 2065, 2773, 2779, 2040, 2083, 1959, 2037, 2102,
704      2103, 2783, 2791, 2126, 2131, 2106, 2127, 2795, 2800, 2812,
705      2803, 2820, 2164, 2187, 1802, 1931, 2225, 2245, 1984, 1986,
706      2828, 2295, 2298, 2159, 2206, 2831, 2839, 3675, 3675, 2848,
707      3675, 3675, 2338, 2354, 2086, 2293, 2227, 2329, 2278, 2359,
708
709      2074, 2337, 2356, 2402, 2410, 1987, 2133, 2424, 2447, 2119,
710      2362, 2484, 2511, 2244, 2314, 1782, 2539, 2555, 2296, 2514,
711      2371, 2453, 2593, 2608, 2856, 2456, 2459, 2401, 2505, 1712,
712      2516, 2526, 2556, 2582, 2529, 2572, 2624, 2679, 2860, 3675,
713      2528, 2620, 2390, 2583, 2357, 2675, 2678, 2629, 2658, 2592,
714      2669, 2684, 2722, 2742, 2749, 2481, 2687, 2232, 2794, 2826,
715      2863, 2792, 2809, 2829, 2837, 2745, 2676, 2720, 2790, 2873,
716      2866, 2810, 2883, 3675, 2838, 2855, 2874, 2880, 2891, 2872,
717      2885, 2904, 2912, 2820, 2879, 2915, 2921, 3675, 2884, 2893,
718      2864, 2881, 2938, 3675, 2916, 2918, 2941, 3675, 2894, 2903,
719
720      2913, 2914, 2920, 2928, 2931, 2932, 2929, 2930, 2934, 2935,
721      2948, 2946, 2734, 2939, 2940, 2945, 2975, 2943, 2947, 2962,
722      2958, 2992, 3675, 2951, 2957, 2995, 2963, 2968, 3012, 3675,
723      2991, 3000, 2982, 2985, 2971, 2972, 3001, 3002, 3015, 3013,
724      3032, 3035, 3675, 3675, 3053, 3060, 3067, 3074, 3081, 3088,
725      3095, 3102, 3109, 3116, 3123, 3130, 3137, 3144, 3151, 3158,
726      3165, 3172, 3179, 3186, 3193, 3200, 3205, 3210, 3215, 3220,
727      3225, 3230, 3235, 3240, 3247, 3250, 3253, 3256, 3259, 3262,
728      3265, 3268, 3271, 3278, 3282, 3288, 3294, 3300, 3306, 3312,
729      3318, 3324, 3330, 3337, 3344, 3351, 3358, 3365, 3372, 3379
730
731     } ;
732
733 static yyconst flex_int16_t yy_def[1401] =
734     {   0,
735      1345, 1345, 1346, 1346, 1346, 1346, 1347, 1347, 1348, 1348,
736      1349, 1349, 1350, 1350, 1350, 1350, 1351, 1351, 1345, 1345,
737      1352, 1352, 1353, 1353, 1345, 1345, 1353, 1353, 1353, 1353,
738      1345, 1345, 1354, 1354, 1355, 1355, 1345, 1345, 1355, 1355,
739      1355, 1355, 1345, 1345, 1344,   45, 1356, 1356, 1345, 1345,
740      1357, 1357, 1358, 1358, 1345, 1345, 1359, 1359, 1360, 1360,
741      1345, 1345, 1360, 1360, 1360, 1360, 1345, 1345, 1361, 1361,
742      1362, 1362, 1345, 1345, 1363, 1363, 1364, 1364, 1345, 1345,
743      1364, 1364, 1364, 1364, 1345, 1345, 1365, 1365, 1366, 1366,
744      1350, 1350, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
745
746      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
747      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
748      1344, 1344, 1344, 1367, 1344, 1344, 1367, 1344, 1344, 1344,
749      1344, 1344, 1344, 1344, 1344, 1344, 1368, 1344, 1344, 1368,
750      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1369, 1344,
751      1344, 1369, 1369, 1369, 1369, 1369, 1369, 1344, 1344, 1344,
752      1344, 1344, 1344, 1344, 1370, 1344, 1344, 1370, 1370, 1370,
753      1370, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1371, 1344,
754      1344, 1371, 1371, 1371, 1344, 1344, 1344, 1344, 1344, 1344,
755      1344, 1344, 1372, 1344, 1344, 1372, 1344, 1344, 1344, 1344,
756
757      1344, 1344, 1344, 1373, 1344, 1344, 1373, 1373, 1373, 1373,
758      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1374, 1344,
759      1344, 1374, 1344, 1344, 1344, 1344, 1344, 1344, 1375, 1344,
760      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
761      1344, 1344, 1344, 1344, 1367, 1367, 1376, 1344, 1344, 1344,
762      1344, 1344, 1344, 1368, 1368, 1377, 1344, 1369, 1369, 1369,
763      1369, 1369, 1369, 1369, 1378, 1344, 1370, 1370, 1370, 1370,
764      1370, 1370, 1379, 1344, 1371, 1371, 1371, 1371, 1380, 1344,
765      1344, 1372, 1372, 1381, 1344, 1373, 1373, 1373, 1373, 1373,
766      1382, 1344, 1344, 1374, 1374, 1383, 1344, 1344, 1384, 1344,
767
768      1384, 1344, 1344, 1344, 1385, 1344, 1344, 1344, 1344, 1344,
769      1344, 1344, 1367, 1386, 1386, 1344, 1344, 1344, 1344, 1344,
770      1368, 1387, 1387, 1369, 1369, 1369, 1369, 1369, 1369, 1388,
771      1388, 1370, 1370, 1370, 1370, 1370, 1389, 1389, 1371, 1371,
772      1371, 1390, 1390, 1344, 1372, 1391, 1391, 1373, 1373, 1373,
773      1373, 1392, 1392, 1344, 1374, 1393, 1393, 1344, 1344, 1384,
774      1344, 1344, 1384, 1344, 1344, 1385, 1344, 1344, 1344, 1344,
775      1344, 1344, 1367, 1344, 1386, 1344, 1386, 1344, 1344, 1344,
776      1344, 1344, 1368, 1344, 1387, 1344, 1387, 1369, 1369, 1369,
777      1369, 1369, 1369, 1344, 1388, 1344, 1388, 1370, 1370, 1370,
778
779      1370, 1370, 1344, 1389, 1344, 1389, 1344, 1344, 1371, 1344,
780      1344, 1344, 1390, 1344, 1390, 1344, 1372, 1344, 1391, 1344,
781      1391, 1373, 1373, 1373, 1373, 1344, 1392, 1344, 1392, 1344,
782      1374, 1344, 1393, 1344, 1393, 1344, 1384, 1394, 1344, 1344,
783      1344, 1344, 1344, 1367, 1386, 1344, 1344, 1344, 1344, 1344,
784      1344, 1344, 1387, 1369, 1369, 1369, 1344, 1344, 1369, 1369,
785      1388, 1370, 1370, 1344, 1344, 1370, 1370, 1389, 1344, 1344,
786      1344, 1371, 1344, 1344, 1344, 1390, 1344, 1344, 1344, 1391,
787      1373, 1344, 1344, 1373, 1373, 1392, 1344, 1374, 1393, 1344,
788      1384, 1394, 1394, 1344, 1394, 1344, 1344, 1344, 1367, 1386,
789
790      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1387, 1369, 1369,
791      1369, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1369, 1344,
792      1344, 1370, 1370, 1344, 1344, 1344, 1370, 1344, 1344, 1370,
793      1389, 1371, 1390, 1344, 1344, 1344, 1344, 1391, 1373, 1344,
794      1344, 1344, 1373, 1373, 1392, 1344, 1344, 1344, 1393, 1344,
795      1384, 1394, 1394, 1344, 1344, 1367, 1386, 1344, 1344, 1344,
796      1344, 1387, 1369, 1369, 1369, 1344, 1344, 1344, 1344, 1344,
797      1344, 1369, 1370, 1370, 1370, 1344, 1344, 1344, 1370, 1389,
798      1371, 1390, 1344, 1391, 1373, 1373, 1373, 1392, 1344, 1344,
799      1344, 1344, 1393, 1344, 1384, 1394, 1394, 1344, 1344, 1344,
800
801      1386, 1344, 1344, 1344, 1387, 1369, 1369, 1369, 1344, 1344,
802      1369, 1370, 1344, 1344, 1370, 1370, 1344, 1344, 1370, 1389,
803      1371, 1344, 1344, 1344, 1391, 1373, 1373, 1373, 1392, 1344,
804      1393, 1344, 1384, 1394, 1394, 1344, 1344, 1344, 1344, 1386,
805      1344, 1344, 1344, 1387, 1369, 1369, 1369, 1344, 1344, 1344,
806      1344, 1369, 1370, 1344, 1344, 1344, 1370, 1370, 1344, 1344,
807      1344, 1344, 1370, 1389, 1371, 1344, 1391, 1344, 1344, 1373,
808      1373, 1392, 1344, 1393, 1344, 1384, 1394, 1394, 1344, 1386,
809      1344, 1344, 1344, 1369, 1369, 1369, 1344, 1344, 1344, 1344,
810      1369, 1344, 1344, 1370, 1370, 1370, 1344, 1344, 1344, 1344,
811
812      1370, 1389, 1371, 1344, 1391, 1344, 1344, 1344, 1344, 1344,
813      1373, 1344, 1344, 1344, 1393, 1384, 1384, 1384, 1384, 1384,
814      1384, 1394, 1394, 1344, 1386, 1344, 1369, 1369, 1369, 1344,
815      1344, 1344, 1344, 1344, 1344, 1344, 1370, 1370, 1370, 1344,
816      1344, 1344, 1344, 1389, 1371, 1371, 1344, 1391, 1344, 1344,
817      1344, 1344, 1344, 1344, 1344, 1384, 1384, 1384, 1384, 1384,
818      1384, 1384, 1394, 1394, 1344, 1386, 1344, 1369, 1369, 1369,
819      1344, 1344, 1344, 1370, 1370, 1370, 1344, 1344, 1344, 1389,
820      1371, 1371, 1344, 1391, 1344, 1344, 1344, 1384, 1384, 1384,
821      1384, 1384, 1384, 1384, 1394, 1394, 1344, 1386, 1344, 1344,
822
823      1344, 1369, 1369, 1369, 1370, 1344, 1344, 1370, 1389, 1371,
824      1371, 1344, 1391, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
825      1394, 1394, 1394, 1344, 1386, 1344, 1344, 1344, 1344, 1369,
826      1369, 1369, 1369, 1370, 1344, 1344, 1344, 1370, 1389, 1344,
827      1344, 1371, 1344, 1344, 1371, 1344, 1391, 1384, 1384, 1384,
828      1384, 1384, 1384, 1384, 1394, 1394, 1394, 1395, 1396, 1344,
829      1386, 1369, 1369, 1369, 1369, 1344, 1344, 1344, 1344, 1344,
830      1344, 1344, 1344, 1344, 1371, 1344, 1344, 1344, 1371, 1344,
831      1391, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1394,
832      1397, 1398, 1395, 1396, 1344, 1386, 1369, 1369, 1369, 1369,
833
834      1344, 1344, 1344, 1344, 1344, 1344, 1371, 1371, 1344, 1344,
835      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1397, 1394,
836      1399, 1398, 1400, 1394, 1344, 1386, 1369, 1369, 1369, 1369,
837      1344, 1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384,
838      1384, 1384, 1384, 1384, 1399, 1344, 1400, 1394, 1344, 1386,
839      1344, 1344, 1344, 1344, 1344, 1344, 1369, 1344, 1344, 1344,
840      1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
841      1384, 1384, 1384, 1344, 1344, 1386, 1344, 1344, 1344, 1344,
842      1344, 1344, 1344, 1344, 1344, 1369, 1344, 1344, 1344, 1344,
843      1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
844
845      1384, 1384, 1384, 1344, 1344, 1386, 1369, 1344, 1344, 1344,
846      1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
847      1384, 1344, 1386, 1369, 1344, 1344, 1344, 1344, 1371, 1371,
848      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344,
849      1386, 1369, 1344, 1344, 1344, 1344, 1371, 1371, 1384, 1384,
850      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344, 1344,
851      1344, 1344, 1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384,
852      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344, 1344,
853      1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384, 1384,
854      1384, 1384, 1384, 1384, 1371, 1371, 1384, 1384, 1384, 1384,
855
856      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1371, 1371,
857      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
858      1384, 1384, 1384, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
859      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1371, 1371,
860      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
861      1384, 1384, 1384, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
862      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344,
863      1344, 1344, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
864      1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344, 1344, 1344,
865      1344, 1344, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
866
867      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
868      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
869      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
870      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344,
871      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
872      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
873      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
874      1384, 1384, 1384, 1344, 1384, 1384, 1384, 1384, 1384, 1384,
875      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1384, 1384,
876      1384, 1384, 1384, 1344, 1384, 1384, 1384, 1344, 1384, 1384,
877
878      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
879      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
880      1384, 1384, 1344, 1384, 1384, 1384, 1384, 1384, 1384, 1344,
881      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
882      1384, 1384, 1344,    0, 1344, 1344, 1344, 1344, 1344, 1344,
883      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
884      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
885      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
886      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
887      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344
888
889     } ;
890
891 static yyconst flex_int16_t yy_nxt[3738] =
892     {   0,
893      1344,   96,   97,   96,   96,   97,   96,   96,   97,   96,
894        96,   97,   96,  104, 1344,   98,  104,  107,   98,  107,
895       105,   99,  361,  105,   99,  101,   97,  101,  101,   97,
896       101,  110,  111,  108,  363,  108,  112,  113,  304,  102,
897       110,  111,  102,  300,  114,  112,  113,  110,  111,  920,
898       115,  229,  112,  114,  110,  111,  301,  115,  923,  112,
899       114,  117,  118,  117,  118,  230,  229,  114,   97,   97,
900        97,   97,   97,   97,  129,   97,  129,  129,   97,  129,
901       231,  306,  120,  361,  307,  120,  305,  304,  130,  365,
902       361,  130,  228,  228,  228,  119,  595,  119,  121,  122,
903
904        97,  122,  121,  121,  121,  121,  121,  121,  121,  123,
905       121,  920,  121,  125,  121,  126,  121,   97,   97,   97,
906       923,   97,   97,   97,  129,   97,  129,  129,   97,  129,
907       789,  131,  361,  121,  121,  131,  232,  271,  130,  361,
908       232,  130,  228,  228,  228,  228,  228,  228,  272,  551,
909       231,  228,  228,  228,  231,  491,  127,  121,  122,   97,
910       122,  121,  121,  121,  121,  121,  121,  121,  123,  121,
911       494,  121,  125,  121,  126,  121,  129,   97,  129,  361,
912       129,   97,  129,   97,   97,   97,   97,   97,   97,  361,
913       132,  232,  121,  121,  132,  597,  232,  133,  232,  232,
914
915       133,  228,  228,  228,  759,  231,  247,  228,  228,  228,
916       231,  494,  231,  231,  494,  127,  134,  135,   97,  135,
917       134,  134,  134,  134,  134,  134,  134,  136,  134,  794,
918       134,  138,  134,  139,  134,  142,   97,  142,  249,  142,
919        97,  142,   97,   97,   97, 1155,  243,  596,  635,  143,
920       361,  134,  134,  143,  437,  494,  131,  361,  494,  140,
921       134,  135,   97,  135,  134,  134,  134,  134,  134,  134,
922       134,  136,  134,  494,  134,  138,  134,  139,  134,   97,
923        97,   97,  722,  142,   97,  142,  142,   97,  142,  677,
924       142,   97,  142,  131,  756,  134,  134,  143,  494, 1154,
925
926       143,  361,  723,  140,  144,  142,   97,  142,   97,   97,
927        97,   97,   97,   97,  228,  228,  228,  361,  883,  144,
928       648,  634,  145,  633,  649,  145,  146,  147,   97,  147,
929       146,  146,  146,  146,  146,  146,  146,  148,  146,  149,
930       146,  150,  146,  151,  146,  149,  149,  149,  149,  149,
931       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
932       149,  146,  146,  149,  152,  149,  149,  149,  149,  149,
933       149,  149,  153,  149,  149,  154,  155,  149,  156,  149,
934       149,  157,  149,  149,  149,  149,  149,  149,  159,   97,
935       159,  159,   97,  159,   97,   97,   97,   97,   97,   97,
936
937       650,  361,  160,  659,  651,  160,  661,  660,  161, 1140,
938       662,  161,  162,  163,   97,  163,  162,  162,  162,  162,
939       162,  162,  162,  164,  162,  494,  162,  166,  162,  167,
940       162,  173,   97,  173,  758,  173,   97,  173,   97,   97,
941        97,   97,   97,   97,  232,  174,  361,  162,  162,  174,
942       232,  168,  175,  831,  832,  175,  361,  256,  231, 1139,
943       169, 1125,  170,  678,  231,  361,  494,  171,  162,  163,
944        97,  163,  162,  162,  162,  162,  162,  162,  162,  164,
945       162,  757,  162,  166,  162,  167,  162,  186,   97,  186,
946       762,  186,   97,  186,   97,   97,   97,   97,   97,   97,
947
948       764,  187,  885,  162,  162,  187, 1124,  168,  188,  494,
949       495,  188,  228,  228,  228,  361,  169,  494,  170,  228,
950       228,  228,  361,  171,  176,  177,   97,  177,  176,  176,
951       176,  176,  176,  176,  176,  178,  176,  361,  176,  180,
952       176,  181,  176,  186,   97,  186,  763,  186,   97,  186,
953       186,   97,  186,  186,   97,  186,  793,  187, 1113,  176,
954       176,  187,  232,  232,  189,  182,  361,  189,  760,  265,
955       183,  228,  228,  228,  761,  361,  231,  231,  361,  184,
956       176,  177,   97,  177,  176,  176,  176,  176,  176,  176,
957       176,  178,  176,  788,  176,  180,  176,  181,  176,   97,
958
959        97,   97,  361,   97,   97,   97,  198,   97,  198,  198,
960        97,  198,  851,  188,  791,  176,  176,  188,  232,  232,
961       199,  182,  940,  199, 1110,  273,  183,  228,  228,  228,
962       361,  494,  231,  231,  361,  184,  190,  191,   97,  191,
963       190,  190,  190,  190,  190,  190,  190,  192,  190,  361,
964       190,  194,  190,  195,  190,   97,   97,   97,  821,   97,
965        97,   97,  212,   97,  212,  212,   97,  212,  887,  200,
966       792,  190,  190,  200,  814, 1109,  213,  361,  361,  213,
967       228,  228,  228,  228,  228,  228,  196,  190,  191,   97,
968       191,  190,  190,  190,  190,  190,  190,  190,  192,  190,
969
970       790,  190,  194,  190,  195,  190,   97,   97,   97,  816,
971        97,   97,   97,  212,   97,  212,  212,   97,  212,  232,
972       214,  232,  190,  190,  214,  361,  279,  213,  361, 1096,
973       213,  967, 1095,  231, 1084,  231,  361,  196,  201,  202,
974        97,  202,  201,  201,  201,  201,  201,  201,  201,  203,
975       201,  494,  201,  205,  201,  206,  201,  212,   97,  212,
976       848,  212,   97,  212,   97,   97,   97,  250,   97,   97,
977        97,  215,  232,  201,  201,  215,  232,  232,  214, 1114,
978       361,  207,  214,  208,  795,  209,  231,  228,  228,  228,
979       231,  231,  361,  210,  201,  202,   97,  202,  201,  201,
980
981       201,  201,  201,  201,  201,  203,  201,  232,  201,  205,
982       201,  206,  201,  224,   97,  224,  884,  224,   97,  224,
983       850,  231,  252,  228,  228,  228,  280,  225,  361,  201,
984       201,  225,  228,  228,  228,  110,  111,  207,  997,  208,
985       112,  209,  237,  248,  228,  228,  228,  361,  226,  210,
986       216,  217,   97,  217,  216,  216,  216,  216,  216,  216,
987       216,  218,  216,  232,  216,  220,  216,  221,  216,  227,
988       110,  111,  361,  852,  238,  112,  232,  231,  361,  361,
989       239,  232,  232,  226,  240,  216,  216,  232,  279,  241,
990       231,  232,  232,  232,  284,  231,  231,  853,  291,  247,
991
992       494,  231,  819,  854,  227,  231,  231,  231,  222,  216,
993       217,   97,  217,  216,  216,  216,  216,  216,  216,  216,
994       218,  216,  232,  216,  220,  216,  221,  216,  248,  248,
995       251,  280,  361,  796,  249,  249,  231,  745,  250,  250,
996       251,  251,  252,  252,  216,  216,  232,  232,  228,  228,
997       228,  746,  361,  256,  291,  232,  292,  228,  228,  228,
998       231,  231,  296,  228,  228,  228,  886,  222,  361,  231,
999       374,  374,  374,  374,  374,  374,  361,  384,  384,  384,
1000       361,  292,  248,  384,  384,  384,  376,  361,  249,  376,
1001       361,  818,  250,  386,  251,  912,  252,  999,  361,  386,
1002
1003       394,  394,  394,  394,  394,  394,  403,  403,  403,  403,
1004       403,  403,  407,  407,  407,  882,  396,  361,  817,  396,
1005       377,  361,  405,  361, 1083,  405,  820,  408,  410,  410,
1006       410,  911,  387,  412,  412,  412,  412,  412,  412,  418,
1007       418,  418,  913,  411,  418,  418,  418,  361,  918,  414,
1008       406,  914,  414,  361,  397,  420,  426,  426,  426,  920,
1009       420,  426,  426,  426,  432,  432,  432,  432,  432,  432,
1010       931,  921,  428,  374,  374,  374,  361,  428,  932,  933,
1011       434,  361,  361,  434,  915,  941,  415,  934,  361,  376,
1012       374,  374,  374,  361,  421,  374,  374,  374,  446,  446,
1013
1014       446,  451,  451,  451,  938,  361,  376,  384,  384,  384,
1015       361,  376,  944,  969,  429,  937,  452,  384,  384,  384,
1016       435,  361,  943,  386,  384,  384,  384,  457,  457,  457,
1017       970,  916,  445,  386,  394,  394,  394,  394,  394,  394,
1018       386,  361,  458,  394,  394,  394,  464,  464,  464, 1082,
1019       396, 1035,  361,  396,  403,  403,  403,  361,  998,  396,
1020       361,  465,  361,  453,  403,  403,  403,  403,  403,  403,
1021       405,  407,  407,  407,  469,  469,  469,  972,  470,  361,
1022       405,  471,  973,  405,  920, 1017,  408,  410,  410,  410,
1023       473,  473,  473,  361,  474, 1002,  921,  475, 1036,  461,
1024
1025       361, 1081,  411,  412,  412,  412,  361,  412,  412,  412,
1026       412,  412,  412,  478,  478,  478,  418,  418,  418,  414,
1027       361, 1016,  468,  414, 1000, 1003,  414,  361,  479,  418,
1028       418,  418,  420,  418,  418,  418,  482,  482,  482,  426,
1029       426,  426,  426,  426,  426,  420,  426,  426,  426,  420,
1030       361,  483,  432,  432,  432,  428, 1090, 1073,  428,  432,
1031       432,  432,  428,  432,  432,  432,  476, 1001,  434,  493,
1032       493,  493,  374,  374,  374,  434,  446,  446,  446,  434,
1033       451,  451,  451,  361, 1067,  494,  495,  361,  376,  480,
1034       505,  505,  505, 1038,  506,  452,  486,  507,  384,  384,
1035
1036       384,  457,  457,  457, 1014, 1066,  489,  361,  512,  512,
1037       512,  361,  513, 1020,  386,  514,  458,  515,  515,  515,
1038       517,  517,  517,  520,  520,  520, 1019,  500,  464,  464,
1039       464,  361,  516,  361,  361,  518,  528,  528,  528,  521,
1040       524,  524,  524,  465,  525,  508, 1031,  526,  403,  403,
1041       403,  529,  361,  469,  469,  469,  519,  470, 1018, 1021,
1042       471,  473,  473,  473,  405,  474,  361, 1102,  475,  412,
1043       412,  412,  530,  478,  478,  478,  535,  535,  535, 1065,
1044       536,  361, 1034,  537,  361,  414,  361, 1052,  479,  418,
1045       418,  418,  482,  482,  482,  540,  540,  540,  361,  541,
1046
1047      1037, 1123,  542,  361, 1055,  420,  531,  483,  361,  426,
1048       426,  426,  547,  547,  547,  432,  432,  432,  493,  493,
1049       493,  374,  374,  374,  533,  428,  361,  548,  561,  561,
1050       561,  434,  361,  361,  494,  361, 1039,  376,  505,  505,
1051       505, 1068,  506, 1064,  538,  507,  361, 1057,  545,  384,
1052       384,  384,  361,  512,  512,  512, 1054,  513,  361,  552,
1053       514,  361, 1049,  557, 1050,  386,  515,  515,  515, 1089,
1054      1051,  549,  566,  566,  566,  553,  567,  361,  361,  568,
1055       361,  516,  517,  517,  517,  569,  569,  569, 1063,  570,
1056      1071,  361,  571,  520,  520,  520, 1103,  518, 1069,  524,
1057
1058       524,  524,  361,  525,  361,  562,  526, 1117,  361,  521,
1059       528,  528,  528,  576,  576,  576, 1118,  577, 1070, 1108,
1060       578,  403,  403,  403,  361,  529,  412,  412,  412,  535,
1061       535,  535,  361,  536, 1074, 1062,  537,  405,  418,  418,
1062       418, 1086,  414,  540,  540,  540, 1092,  541, 1048,  361,
1063       542,  547,  547,  547,  420,  361,  426,  426,  426, 1085,
1064       361,  590,  590,  590,  361,  591,  548,  582,  592, 1087,
1065       361,  580,  428,  432,  432,  432,  599,  599,  599,  584,
1066       374,  374,  374,  561,  561,  561,  384,  384,  384,  434,
1067      1098,  600,  641,  641,  641, 1106,  376,  588, 1093,  566,
1068
1069       566,  566,  386,  567,  361, 1047,  568,  569,  569,  569,
1070      1107,  570,  361,  361,  571,  361,  613,  613,  613, 1132,
1071      1138,  593,  403,  403,  403, 1046,  605,  622,  622,  622,
1072       601,  614,  576,  576,  576,  361,  577,  361,  405,  578,
1073       418,  418,  418,  623,  426,  426,  426,  590,  590,  590,
1074      1115,  591,  615, 1116,  592,  361,  420,  599,  599,  599,
1075       428,  432,  432,  432,  637,  637,  637, 1128,  638, 1045,
1076       361,  639,  600,  361, 1121,  620,  625,  434,  374,  374,
1077       374,  643,  643,  643,  384,  384,  384, 1129,  613,  613,
1078       613,  403,  403,  403,  376,  668,  668,  668,  629, 1099,
1079
1080       386, 1143,  631,  614,  654,  654,  654,  405,  655,  361,
1081       669,  656,  622,  622,  622,  361,  418,  418,  418,  426,
1082       426,  426,  432,  432,  432,  644, 1158,  361,  623,  361,
1083       361,  640,  420,  361,  361,  428,  361,  664,  434,  676,
1084       676,  676,  637,  637,  637, 1245,  638, 1119,  361,  639,
1085       374,  374,  374, 1120,  361,  361,  361,  667,  641,  641,
1086       641,  643,  643,  643, 1122, 1133,  376,  682,  682,  682,
1087      1130,  674, 1126,  672,  692,  692,  692,  654,  654,  654,
1088      1136,  655,  361,  683,  656,  403,  403,  403, 1131,  693,
1089       418,  418,  418,  668,  668,  668, 1134,  361,  680,  361,
1090
1091       361,  405,  709,  709,  709,  361,  420, 1147,  669,  361,
1092       694,  706,  706,  706, 1230,  707,  361,  710,  708,  361,
1093      1127,  702,  712,  712,  712,  714,  714,  714,  432,  432,
1094       432,  374,  374,  374,  682,  682,  682,  705,  713,  732,
1095       732,  732, 1137, 1151,  434, 1135,  361,  376,  361, 1141,
1096       683,  692,  692,  692,  733,  734,  734,  734, 1195,  735,
1097       361,  361,  736,  742,  742,  742,  693,  725,  714,  714,
1098       714,  403,  403,  403,  418,  418,  418, 1144,  743,  709,
1099       709,  709,  361,  715,  676,  676,  676,  405, 1142, 1159,
1100       420,  706,  706,  706,  710,  707,  361, 1145,  708,  361,
1101
1102       361,  749,  749,  749, 1152,  750, 1044, 1043,  751,  752,
1103       752,  752,  712,  712,  712,  748,  361,  361,  744, 1146,
1104       361,  716, 1153,  717,  753,  754,  754,  754,  713,  718,
1105       374,  374,  374,  719,  361,  720, 1149,  721,  732,  732,
1106       732,  755,  361,  771,  771,  771,  376,  772,  361,  361,
1107       773, 1148,  361,  733,  734,  734,  734, 1150,  735, 1042,
1108       361,  736,  742,  742,  742,  777,  777,  777, 1160,  778,
1109       766, 1156,  779,  403,  403,  403,  361,  743,  418,  418,
1110       418,  749,  749,  749, 1166,  750, 1157, 1196,  751,  405,
1111       752,  752,  752, 1163,  420,  785,  785,  785,  361,  786,
1112
1113      1175,  361,  787,  361,  361,  753,  754,  754,  754,  374,
1114       374,  374,  800,  800,  800,  403,  403,  403,  780,  806,
1115       806,  806,  755,  361, 1161,  376,  784,  801,  771,  771,
1116       771,  405,  772,  361,  807,  773,  777,  777,  777, 1199,
1117       778, 1200, 1221,  779,  418,  418,  418,  361,  802, 1164,
1118       798,  785,  785,  785,  361,  786, 1030,  361,  787, 1165,
1119       420,  815,  815,  815,  809,  822,  822,  822,  374,  374,
1120       374,  826,  826,  826,  800,  800,  800,  361, 1176, 1167,
1121       823,  494,  361, 1173,  376,  813,  827,  827,  827,  801,
1122       828,  361, 1168,  829,  806,  806,  806,  835,  835,  835,
1123
1124       361,  836, 1029,  361,  837,  403,  403,  403, 1216,  807,
1125       840,  840,  840,  843,  843,  843,  418,  418,  418,  361,
1126       361,  405,  825,  361, 1225,  841, 1174, 1210,  844,  815,
1127       815,  815,  420,  826,  826,  826,  361,  855,  855,  855,
1128       822,  822,  822,  361,  361,  361,  842, 1028,  361,  845,
1129       361,  839,  856,  494, 1184,  823,  494,  857,  857,  857,
1130       849,  858, 1177, 1178,  859,  847,  374,  374,  374, 1204,
1131       827,  827,  827,  494,  828, 1185,  361,  829,  866,  866,
1132       866,  361,  376,  835,  835,  835, 1182,  836, 1222, 1027,
1133       837, 1183, 1026,  867,  868,  868,  868,  870,  870,  870,
1134
1135       840,  840,  840, 1025,  361,  861,  843,  843,  843,  869,
1136       872,  872,  872,  871,  873,  841, 1205,  874,  876,  876,
1137       876,  844,  877,  361, 1193,  878,  880,  880,  880,  418,
1138       418,  418,  888,  888,  888,  855,  855,  855, 1024,  890,
1139       890,  890,  361,  891,  361,  420,  892, 1194,  361,  361,
1140       856,  494,  866,  866,  866,  494,  857,  857,  857, 1270,
1141       858,  361,  361,  859,  374,  374,  374,  867,  889,  901,
1142       901,  901,  494,  902, 1197, 1212,  903,  880,  880,  880,
1143       376,  870,  870,  870,  881,  492,  492,  492,  492,  492,
1144       492,  492,  492,  492, 1198,  361,  492,  871, 1228,  492,
1145
1146       492,  492,  494,  492,  868,  868,  868,  904,  904,  904,
1147       361,  905,  361,  361,  906,  361, 1022,  896, 1013,  869,
1148       492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
1149       492,  361, 1012,  492, 1211, 1214,  492,  492,  492,  494,
1150       492,  872,  872,  872, 1202,  873,  361, 1203,  874,  876,
1151       876,  876, 1233,  877,  361,  361,  878,  492,  492,  909,
1152       909,  909,  888,  888,  888,  890,  890,  890, 1229,  891,
1153      1225,  361,  892,  361,  361,  910,  361, 1213,  361,  361,
1154      1258,  494,  901,  901,  901, 1217,  902, 1208,  361,  903,
1155       909,  909,  909,  917,  492,  492,  492,  492,  492,  924,
1156
1157       492,  492,  492, 1209, 1218,  492,  910,  361,  492,  492,
1158       492,  494,  492,  904,  904,  904, 1215,  905,  361,  361,
1159       906, 1040, 1040, 1040,  374,  374,  374,  361, 1235,  492,
1160       492,  492,  492,  492,  492,  492,  492,  492,  492,  924,
1161       376,  361,  492, 1219, 1243,  492,  492,  492,  494,  492,
1162      1256, 1220,  939,  939,  939,  942,  942,  942,  948,  948,
1163       948,  374,  374,  374,  361, 1011,  492,  492,  361,  926,
1164       361,  361, 1223,  361,  494,  495,  361,  376,  951,  951,
1165       951,  953,  953,  953,  955,  955,  955,  958,  958,  958,
1166       966,  966,  966,  952, 1226, 1224,  954, 1241,  361,  956,
1167
1168      1242,  361,  959,  939,  939,  939,  361,  942,  942,  942,
1169      1236, 1010,  950,  948,  948,  948,  374,  374,  374,  361,
1170       957, 1227,  361,  361,  951,  951,  951, 1009,  361,  494,
1171      1268,  361,  376,  361,  968,  953,  953,  953,  971,  952,
1172       977,  977,  977,  361,  978,  361,  361,  979, 1244, 1231,
1173       954,  980,  980,  980,  552,  981,  361, 1246,  982,  955,
1174       955,  955,  983,  983,  983, 1232,  984, 1247, 1008,  985,
1175      1234,  976,  361,  361,  956,  958,  958,  958,  987,  987,
1176       987, 1007,  988, 1250, 1254,  989,  966,  966,  966,  361,
1177       959,  374,  374,  374,  977,  977,  977, 1248,  978,  361,
1178
1179       361,  979,  361, 1237,  980,  980,  980,  376,  981,  361,
1180       361,  982,  983,  983,  983, 1005,  984,  996, 1238,  985,
1181       987,  987,  987, 1249,  988,  361, 1251,  989, 1015, 1015,
1182      1015,  374,  374,  374, 1261, 1262, 1006,  361, 1015, 1015,
1183      1015,  361, 1032, 1257,  361, 1033,  361,  376,  374,  374,
1184       374, 1053, 1053, 1053,  361, 1056, 1056, 1056, 1040, 1040,
1185      1040, 1058, 1058, 1058,  376, 1252, 1261,  361, 1060, 1060,
1186      1060,  361, 1053, 1053, 1053,  361, 1255, 1059, 1056, 1056,
1187      1056, 1023, 1075, 1061, 1279, 1076,  361, 1004,  361, 1077,
1188      1077, 1077,  361,  361,  361,  361,  361, 1041, 1058, 1058,
1189
1190      1058,  361,  995, 1072,  361,  361, 1060, 1060, 1060, 1078,
1191      1078, 1078, 1263, 1079, 1059,  994, 1080, 1088, 1088, 1088,
1192      1253, 1061, 1091, 1091, 1091, 1077, 1077, 1077, 1078, 1078,
1193      1078, 1259, 1079,  361, 1260, 1080, 1269,  361,  361,  361,
1194      1264,  361, 1097, 1097, 1097, 1088, 1088, 1088,  993, 1100,
1195      1279,  361, 1101, 1091, 1091, 1091, 1094, 1104,  361,  361,
1196      1105,  361,  361, 1097, 1097, 1097,  361, 1111, 1280,  361,
1197      1112, 1162, 1162, 1162, 1169, 1169, 1169, 1318, 1265,  361,
1198      1171, 1171, 1171, 1266, 1162, 1162, 1162,  361, 1179, 1170,
1199      1267, 1180, 1181, 1181, 1181, 1172, 1186, 1186, 1186,  992,
1200
1201       361, 1169, 1169, 1169, 1171, 1171, 1171,  361,  361,  361,
1202       991,  361,  361, 1187, 1187, 1187, 1170, 1188, 1283, 1172,
1203      1189, 1190, 1190, 1190,  990, 1191,  361,  361, 1192, 1181,
1204      1181, 1181, 1186, 1186, 1186, 1271, 1206,  361, 1281, 1207,
1205      1187, 1187, 1187,  361, 1188,  361,  361, 1189,  361, 1190,
1206      1190, 1190, 1275, 1191,  361,  361, 1192, 1239, 1239, 1239,
1207      1201, 1239, 1239, 1239, 1273, 1273, 1273, 1272, 1295, 1276,
1208      1277, 1283,  361, 1240, 1282, 1282, 1282, 1240, 1278, 1286,
1209      1274,  361, 1289,  361, 1273, 1273, 1273, 1284, 1286,  361,
1210       361,  361, 1287, 1287, 1287, 1290,  361,  361,  361,  986,
1211
1212      1274,  361,  361,  975, 1285, 1282, 1282, 1282, 1288, 1291,
1213       361,  361, 1292, 1293, 1293, 1293, 1297, 1297, 1297, 1301,
1214       361,  361, 1287, 1287, 1287, 1299, 1303, 1296, 1304, 1294,
1215       361,  361, 1298,  361, 1300,  361, 1302,  361, 1288, 1293,
1216      1293, 1293, 1297, 1297, 1297,  361,  361,  361,  361,  361,
1217      1305,  361,  361, 1317, 1317, 1294,  361,  361, 1298, 1306,
1218       361, 1309,  361,  361,  361,  361, 1326, 1326,  361, 1310,
1219      1307, 1308, 1311, 1312,  361,  361, 1322, 1322, 1322,  361,
1220       361, 1320, 1319, 1313, 1314,  361, 1321,  946,  361,  361,
1221      1315, 1316, 1323, 1322, 1322, 1322, 1329, 1329, 1329,  361,
1222
1223      1327, 1333,  361, 1324,  974,  946, 1328, 1325,  361, 1323,
1224      1334, 1331, 1330, 1329, 1329, 1329, 1332,  361,  361,  361,
1225      1341, 1341,  965, 1335,  964,  963, 1336, 1337, 1338, 1330,
1226       361,  962,  361, 1342, 1342, 1342, 1342, 1342, 1342,  961,
1227       960,  949, 1339, 1340,  946,  946,  936,  935,  930, 1343,
1228       929,  928, 1343,   94,   94,   94,   94,   94,   94,   94,
1229        95,   95,   95,   95,   95,   95,   95,  100,  100,  100,
1230       100,  100,  100,  100,  103,  103,  103,  103,  103,  103,
1231       103,  106,  106,  106,  106,  106,  106,  106,  109,  109,
1232       109,  109,  109,  109,  109,  116,  116,  116,  116,  116,
1233
1234       116,  116,  124,  124,  124,  124,  124,  124,  124,  128,
1235       128,  128,  128,  128,  128,  128,  137,  137,  137,  137,
1236       137,  137,  137,  141,  141,  141,  141,  141,  141,  141,
1237       158,  158,  158,  158,  158,  158,  158,  165,  165,  165,
1238       165,  165,  165,  165,  172,  172,  172,  172,  172,  172,
1239       172,  179,  179,  179,  179,  179,  179,  179,  185,  185,
1240       185,  185,  185,  185,  185,  193,  193,  193,  193,  193,
1241       193,  193,  197,  197,  197,  197,  197,  197,  197,  204,
1242       204,  204,  204,  204,  204,  204,  211,  211,  211,  211,
1243       211,  211,  211,  219,  219,  219,  219,  219,  219,  219,
1244
1245       223,  223,  223,  223,  223,  223,  223,  245,  245,  245,
1246       927,  245,  254,  254,  254,  925,  254,  258,  258,  258,
1247       908,  258,  267,  267,  267,  907,  267,  275,  275,  275,
1248       900,  275,  282,  282,  282,  899,  282,  286,  286,  286,
1249       898,  286,  294,  294,  294,  897,  294,  299,  299,  299,
1250       299,  299,  895,  299,  314,  879,  314,  322,  875,  322,
1251       330,  865,  330,  337,  864,  337,  342,  863,  342,  346,
1252       862,  346,  352,  860,  352,  356,  846,  356,  360,  360,
1253       360,  360,  360,  360,  360,  366,  838,  834,  366,  375,
1254       375,  375,  375,  375,  375,  385,  385,  385,  385,  385,
1255
1256       385,  395,  395,  395,  395,  395,  395,  404,  404,  404,
1257       404,  404,  404,  413,  413,  413,  413,  413,  413,  419,
1258       419,  419,  419,  419,  419,  427,  427,  427,  427,  427,
1259       427,  433,  433,  433,  433,  433,  433,  492,  492,  492,
1260       492,  492,  492,  492,  893,  893,  893,  893,  893,  893,
1261       893,  894,  894,  894,  894,  894,  894,  894,  919,  919,
1262       919,  919,  919,  919,  919,  922,  922,  922,  922,  922,
1263       922,  922,  945,  945,  945,  945,  945,  945,  945,  947,
1264       947,  947,  947,  947,  947,  947,  833,  830,  824,  812,
1265       811,  810,  808,  805,  804,  803,  799,  797,  783,  782,
1266
1267       781,  776,  775,  774,  770,  769,  768,  767,  765,  747,
1268       741,  740,  739,  738,  737,  731,  730,  729,  728,  727,
1269       726,  724,  711,  704,  703,  701,  700,  699,  698,  697,
1270       696,  695,  691,  690,  689,  688,  687,  686,  685,  684,
1271       681,  679,  675,  673,  671,  670,  666,  665,  663,  658,
1272       657,  653,  652,  647,  646,  645,  642,  636,  632,  630,
1273       628,  627,  626,  624,  621,  619,  618,  617,  616,  612,
1274       611,  610,  609,  608,  607,  606,  604,  603,  602,  598,
1275       594,  589,  587,  586,  585,  583,  581,  579,  575,  574,
1276       573,  572,  565,  564,  563,  560,  559,  558,  556,  555,
1277
1278       554,  494,  550,  546,  544,  543,  539,  534,  532,  527,
1279       523,  522,  511,  510,  509,  504,  503,  502,  501,  499,
1280       498,  497,  496,  490,  488,  487,  485,  484,  481,  477,
1281       472,  467,  466,  463,  462,  460,  459,  456,  455,  454,
1282       450,  449,  448,  447,  444,  443,  442,  441,  440,  439,
1283       438,  361,  436,  431,  430,  425,  424,  423,  422,  417,
1284       416,  409,  402,  401,  400,  399,  398,  393,  392,  391,
1285       390,  389,  388,  383,  382,  381,  380,  379,  378,  373,
1286       372,  371,  370,  369,  368,  367,  364,  362,  361,  359,
1287       358,  357,  355,  354,  353,  351,  350,  349,  348,  347,
1288
1289       345,  344,  343,  341,  340,  339,  338,  336,  335,  334,
1290       333,  332,  331,  329,  328,  327,  326,  325,  324,  323,
1291       321,  320,  319,  318,  317,  316,  315,  313,  312,  311,
1292       310,  309,  308,  303,  300,  302,  298,  297,  295,  293,
1293       290,  289,  288,  287,  285,  283,  281,  278,  277,  276,
1294       274,  270,  269,  268,  266,  264,  263,  262,  261,  260,
1295       259,  257,  255,  253,  246,  244,  242,  236,  235,  236,
1296       235,  234,  233, 1344,   93, 1344, 1344, 1344, 1344, 1344,
1297      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1298      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1299
1300      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1301      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1302      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1303      1344, 1344, 1344, 1344, 1344, 1344, 1344
1304     } ;
1305
1306 static yyconst flex_int16_t yy_chk[3738] =
1307     {   0,
1308         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
1309         6,    6,    6,    9,    0,    3,   10,   11,    4,   12,
1310         9,    5,  301,   10,    6,    7,    7,    7,    8,    8,
1311         8,   13,   13,   11,  301,   12,   13,   13,  237,    7,
1312        14,   14,    8,  229,   13,   14,   14,   15,   15,  892,
1313        15,   98,   15,   14,   16,   16,  229,   16,  892,   16,
1314        15,   17,   17,   18,   18,   98,   99,   16,   19,   19,
1315        19,   20,   20,   20,   23,   23,   23,   24,   24,   24,
1316        99,  238,   19,  551,  238,   20,  237,  304,   23,  304,
1317       757,   24,   96,   96,   96,   17,  551,   18,   21,   21,
1318
1319        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
1320        21,  922,   21,   21,   21,   21,   21,   25,   25,   25,
1321       922,   26,   26,   26,   27,   27,   27,   28,   28,   28,
1322       757,   25,  491,   21,   21,   26,  102,  171,   27,  437,
1323       125,   28,   97,   97,   97,  101,  101,  101,  171,  491,
1324       102,  122,  122,  122,  125,  437,   21,   22,   22,   22,
1325        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
1326       553,   22,   22,   22,   22,   22,   29,   29,   29,  719,
1327        30,   30,   30,   31,   31,   31,   32,   32,   32,  762,
1328        29,  138,   22,   22,   30,  553,  133,   31,  120,  132,
1329
1330        32,  129,  129,  129,  719,  138,  132,  135,  135,  135,
1331       133,  597,  120,  132,  552,   22,   33,   33,   33,   33,
1332        33,   33,   33,   33,   33,   33,   33,   33,   33,  762,
1333        33,   33,   33,   33,   33,   35,   35,   35,  133,   36,
1334        36,   36,   37,   37,   37, 1140,  120,  552,  597,   35,
1335       363,   33,   33,   36,  363,  634,   37,  716,  677,   33,
1336        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
1337        34,   34,   34,  678,   34,   34,   34,   34,   34,   38,
1338        38,   38,  677,   39,   39,   39,   40,   40,   40,  634,
1339        41,   41,   41,   38,  716,   34,   34,   39,  596, 1139,
1340
1341        40,  849,  678,   34,   41,   42,   42,   42,   43,   43,
1342        43,   44,   44,   44,  142,  142,  142,  595,  849,   42,
1343       609,  596,   43,  595,  609,   44,   45,   45,   45,   45,
1344        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1345        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1346        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1347        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1348        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1349        45,   45,   45,   45,   45,   45,   45,   45,   47,   47,
1350        47,   48,   48,   48,   49,   49,   49,   50,   50,   50,
1351
1352       610,  718,   47,  617,  610,   48,  618,  617,   49, 1125,
1353       618,   50,   51,   51,   51,   51,   51,   51,   51,   51,
1354        51,   51,   51,   51,   51,  635,   51,   51,   51,   51,
1355        51,   53,   53,   53,  718,   54,   54,   54,   55,   55,
1356        55,   56,   56,   56,  150,   53,  717,   51,   51,   54,
1357       144,   51,   55,  803,  803,   56,  721,  144,  150, 1124,
1358        51, 1110,   51,  635,  144,  851,  723,   51,   52,   52,
1359        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1360        52,  717,   52,   52,   52,   52,   52,   59,   59,   59,
1361       721,   60,   60,   60,   61,   61,   61,   62,   62,   62,
1362
1363       723,   59,  851,   52,   52,   60, 1109,   52,   61,  920,
1364       920,   62,  147,  147,  147, 1098,   52,  722,   52,  159,
1365       159,  159,  761,   52,   57,   57,   57,   57,   57,   57,
1366        57,   57,   57,   57,   57,   57,   57,  720,   57,   57,
1367        57,   57,   57,   63,   63,   63,  722,   64,   64,   64,
1368        65,   65,   65,   66,   66,   66,  761,   63, 1098,   57,
1369        57,   64,  160,  166,   65,   57,  756,   66,  720,  160,
1370        57,  163,  163,  163,  720,  759,  160,  166,  817,   57,
1371        58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
1372        58,   58,   58,  756,   58,   58,   58,   58,   58,   67,
1373
1374        67,   67,  914,   68,   68,   68,   71,   71,   71,   72,
1375        72,   72,  817,   67,  759,   58,   58,   68,  174,  180,
1376        71,   58,  914,   72, 1096,  174,   58,  173,  173,  173,
1377       853,  795,  174,  180,  788,   58,   69,   69,   69,   69,
1378        69,   69,   69,   69,   69,   69,   69,   69,   69,  760,
1379        69,   69,   69,   69,   69,   73,   73,   73,  795,   74,
1380        74,   74,   77,   77,   77,   78,   78,   78,  853,   73,
1381       760,   69,   69,   74,  788, 1095,   77,  758,  790,   78,
1382       177,  177,  177,  186,  186,  186,   69,   70,   70,   70,
1383        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
1384
1385       758,   70,   70,   70,   70,   70,   79,   79,   79,  790,
1386        80,   80,   80,   81,   81,   81,   82,   82,   82,  189,
1387        79,  161,   70,   70,   80,  938,  189,   81,  814, 1084,
1388        82,  938, 1083,  189, 1067,  161, 1099,   70,   75,   75,
1389        75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
1390        75,  763,   75,   75,   75,   75,   75,   83,   83,   83,
1391       814,   84,   84,   84,   85,   85,   85,  161,   86,   86,
1392        86,   83,  175,   75,   75,   84,  188,  194,   85, 1099,
1393       816,   75,   86,   75,  763,   75,  175,  191,  191,  191,
1394       188,  194,  850,   75,   76,   76,   76,   76,   76,   76,
1395
1396        76,   76,   76,   76,   76,   76,   76,  145,   76,   76,
1397        76,   76,   76,   89,   89,   89,  850,   90,   90,   90,
1398       816,  145,  175,  198,  198,  198,  188,   89,  967,   76,
1399        76,   90,  202,  202,  202,   91,   91,   76,  967,   76,
1400        91,   76,  112,  145,  212,  212,  212,  818,   91,   76,
1401        87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
1402        87,   87,   87,  205,   87,   87,   87,   87,   87,   91,
1403        92,   92,  819,  818,  112,   92,  220,  205,  820,  793,
1404       112,  187,  200,   92,  112,   87,   87,  199,  187,  112,
1405       220,  215,  130,  131,  199,  187,  200,  819,  215,  130,
1406
1407       764,  199,  793,  820,   92,  215,  130,  131,   87,   88,
1408        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
1409        88,   88,  214,   88,   88,   88,   88,   88,  130,  131,
1410       200,  187,  852,  764,  130,  131,  214,  703,  130,  131,
1411       130,  131,  130,  131,   88,   88,  143,  213,  217,  217,
1412       217,  703,  792,  143,  213,  225,  214,  224,  224,  224,
1413       143,  213,  225,  228,  228,  228,  852,   88,  969,  225,
1414       314,  314,  314,  315,  315,  315,  791,  322,  322,  322,
1415       883,  213,  143,  323,  323,  323,  314,  794,  143,  315,
1416       848,  792,  143,  322,  143,  883,  143,  969,  882,  323,
1417
1418       330,  330,  330,  331,  331,  331,  337,  337,  337,  338,
1419       338,  338,  339,  339,  339,  848,  330,  884,  791,  331,
1420       315,  885,  337,  889, 1066,  338,  794,  339,  341,  341,
1421       341,  882,  323,  342,  342,  342,  343,  343,  343,  346,
1422       346,  346,  884,  341,  347,  347,  347,  886,  889,  342,
1423       338,  885,  343,  915,  331,  346,  352,  352,  352,  891,
1424       347,  353,  353,  353,  356,  356,  356,  357,  357,  357,
1425       905,  891,  352,  374,  374,  374,  911,  353,  905,  906,
1426       356,  918,  940,  357,  886,  915,  343,  906,  912,  374,
1427       375,  375,  375,  887,  347,  377,  377,  377,  378,  378,
1428
1429       378,  383,  383,  383,  912,  917,  375,  384,  384,  384,
1430       941,  377,  918,  940,  353,  911,  383,  385,  385,  385,
1431       357, 1017,  917,  384,  387,  387,  387,  391,  391,  391,
1432       941,  887,  377,  385,  394,  394,  394,  395,  395,  395,
1433       387,  968,  391,  397,  397,  397,  400,  400,  400, 1064,
1434       394, 1017,  999,  395,  403,  403,  403,  944,  968,  397,
1435      1018,  400,  943,  387,  404,  404,  404,  406,  406,  406,
1436       403,  407,  407,  407,  408,  408,  408,  943,  408,  972,
1437       404,  408,  944,  406,  919,  999,  407,  410,  410,  410,
1438       411,  411,  411,  973,  411,  972,  919,  411, 1018,  397,
1439
1440       970, 1062,  410,  412,  412,  412,  998,  413,  413,  413,
1441       415,  415,  415,  417,  417,  417,  418,  418,  418,  412,
1442      1054,  998,  406,  413,  970,  973,  415, 1073,  417,  419,
1443       419,  419,  418,  421,  421,  421,  423,  423,  423,  426,
1444       426,  426,  427,  427,  427,  419,  429,  429,  429,  421,
1445       971,  423,  432,  432,  432,  426, 1073, 1054,  427,  433,
1446       433,  433,  429,  435,  435,  435,  415,  971,  432,  438,
1447       438,  438,  445,  445,  445,  433,  446,  446,  446,  435,
1448       451,  451,  451, 1020, 1048,  438,  438,  996,  445,  421,
1449       452,  452,  452, 1020,  452,  451,  429,  452,  453,  453,
1450
1451       453,  457,  457,  457,  996, 1047,  435, 1002,  458,  458,
1452       458, 1001,  458, 1002,  453,  458,  457,  459,  459,  459,
1453       460,  460,  460,  461,  461,  461, 1001,  445,  464,  464,
1454       464, 1014,  459, 1000, 1003,  460,  467,  467,  467,  461,
1455       465,  465,  465,  464,  465,  453, 1014,  465,  468,  468,
1456       468,  467, 1089,  469,  469,  469,  460,  469, 1000, 1003,
1457       469,  473,  473,  473,  468,  473, 1016, 1089,  473,  476,
1458       476,  476,  467,  478,  478,  478,  479,  479,  479, 1046,
1459       479, 1034, 1016,  479, 1019,  476, 1108, 1034,  478,  480,
1460       480,  480,  482,  482,  482,  483,  483,  483, 1037,  483,
1461
1462      1019, 1108,  483, 1021, 1037,  480,  468,  482, 1039,  486,
1463       486,  486,  488,  488,  488,  489,  489,  489,  493,  493,
1464       493,  500,  500,  500,  476,  486, 1032,  488,  504,  504,
1465       504,  489, 1033, 1036,  493, 1049, 1021,  500,  505,  505,
1466       505, 1049,  505, 1045,  480,  505, 1031, 1039,  486,  508,
1467       508,  508, 1072,  512,  512,  512, 1036,  512, 1050,  493,
1468       512, 1090, 1031,  500, 1032,  508,  515,  515,  515, 1072,
1469      1033,  489,  516,  516,  516,  493,  516, 1103, 1051,  516,
1470      1052,  515,  517,  517,  517,  518,  518,  518, 1044,  518,
1471      1052, 1102,  518,  520,  520,  520, 1090,  517, 1050,  524,
1472
1473       524,  524, 1094,  524, 1069,  508,  524, 1102, 1075,  520,
1474       528,  528,  528,  529,  529,  529, 1103,  529, 1051, 1094,
1475       529,  531,  531,  531, 1055,  528,  533,  533,  533,  535,
1476       535,  535, 1070,  535, 1055, 1043,  535,  531,  538,  538,
1477       538, 1069,  533,  540,  540,  540, 1075,  540, 1030, 1068,
1478       540,  547,  547,  547,  538, 1092,  545,  545,  545, 1068,
1479      1076,  548,  548,  548, 1086,  548,  547,  533,  548, 1070,
1480      1093,  531,  545,  549,  549,  549,  556,  556,  556,  538,
1481       557,  557,  557,  561,  561,  561,  562,  562,  562,  549,
1482      1086,  556,  602,  602,  602, 1092,  557,  545, 1076,  566,
1483
1484       566,  566,  562,  566, 1123, 1029,  566,  569,  569,  569,
1485      1093,  569, 1100, 1117,  569, 1101,  574,  574,  574, 1117,
1486      1123,  549,  580,  580,  580, 1028,  562,  582,  582,  582,
1487       557,  574,  576,  576,  576, 1113,  576, 1106,  580,  576,
1488       584,  584,  584,  582,  588,  588,  588,  590,  590,  590,
1489      1100,  590,  574, 1101,  590, 1114,  584,  599,  599,  599,
1490       588,  593,  593,  593,  600,  600,  600, 1113,  600, 1027,
1491      1128,  600,  599, 1087, 1106,  580,  584,  593,  601,  601,
1492       601,  604,  604,  604,  605,  605,  605, 1114,  613,  613,
1493       613,  620,  620,  620,  601,  626,  626,  626,  588, 1087,
1494
1495       605, 1128,  593,  613,  614,  614,  614,  620,  614, 1104,
1496       626,  614,  622,  622,  622, 1105,  625,  625,  625,  629,
1497       629,  629,  631,  631,  631,  605, 1143, 1107,  622, 1230,
1498      1115,  601,  625, 1143, 1111,  629, 1118,  620,  631,  633,
1499       633,  633,  637,  637,  637, 1230,  637, 1104, 1116,  637,
1500       640,  640,  640, 1105, 1121,  633, 1119,  625,  641,  641,
1501       641,  643,  643,  643, 1107, 1118,  640,  644,  644,  644,
1502      1115,  631, 1111,  629,  653,  653,  653,  654,  654,  654,
1503      1121,  654, 1112,  644,  654,  664,  664,  664, 1116,  653,
1504       667,  667,  667,  668,  668,  668, 1119, 1132,  640, 1216,
1505
1506      1136,  664,  670,  670,  670, 1120,  667, 1132,  668, 1126,
1507       653,  669,  669,  669, 1216,  669, 1122,  670,  669, 1175,
1508      1112,  664,  672,  672,  672,  673,  673,  673,  674,  674,
1509       674,  680,  680,  680,  682,  682,  682,  667,  672,  691,
1510       691,  691, 1122, 1136,  674, 1120, 1129,  680, 1127, 1126,
1511       682,  692,  692,  692,  691,  693,  693,  693, 1175,  693,
1512      1130, 1137,  693,  701,  701,  701,  692,  680,  714,  714,
1513       714,  702,  702,  702,  705,  705,  705, 1129,  701,  709,
1514       709,  709, 1131,  674,  676,  676,  676,  702, 1127, 1144,
1515       705,  706,  706,  706,  709,  706, 1144, 1130,  706, 1134,
1516
1517       676,  710,  710,  710, 1137,  710, 1026, 1025,  710,  711,
1518       711,  711,  712,  712,  712,  705, 1138, 1133,  702, 1131,
1519      1135,  676, 1138,  676,  711,  715,  715,  715,  712,  676,
1520       725,  725,  725,  676, 1141,  676, 1134,  676,  732,  732,
1521       732,  715, 1145,  733,  733,  733,  725,  733, 1176, 1142,
1522       733, 1133, 1151,  732,  734,  734,  734, 1135,  734, 1024,
1523      1148,  734,  742,  742,  742,  743,  743,  743, 1145,  743,
1524       725, 1141,  743,  744,  744,  744, 1158,  742,  748,  748,
1525       748,  749,  749,  749, 1151,  749, 1142, 1176,  749,  744,
1526       752,  752,  752, 1148,  748,  753,  753,  753, 1146,  753,
1527
1528      1158, 1179,  753, 1180, 1206,  752,  754,  754,  754,  766,
1529       766,  766,  768,  768,  768,  780,  780,  780,  744,  775,
1530       775,  775,  754, 1149, 1146,  766,  748,  768,  771,  771,
1531       771,  780,  771, 1150,  775,  771,  777,  777,  777, 1179,
1532       777, 1180, 1206,  777,  784,  784,  784, 1152,  768, 1149,
1533       766,  785,  785,  785, 1159,  785, 1013, 1156,  785, 1150,
1534       784,  789,  789,  789,  780,  796,  796,  796,  798,  798,
1535       798,  799,  799,  799,  800,  800,  800,  789, 1159, 1152,
1536       796,  796, 1153, 1156,  798,  784,  801,  801,  801,  800,
1537       801, 1201, 1153,  801,  806,  806,  806,  807,  807,  807,
1538
1539      1157,  807, 1012, 1195,  807,  809,  809,  809, 1201,  806,
1540       810,  810,  810,  811,  811,  811,  813,  813,  813, 1160,
1541      1161,  809,  798, 1166, 1210,  810, 1157, 1195,  811,  815,
1542       815,  815,  813,  826,  826,  826, 1210,  821,  821,  821,
1543       822,  822,  822, 1164, 1167,  815,  810, 1011, 1165,  811,
1544      1207,  809,  821,  821, 1166,  822,  822,  823,  823,  823,
1545       815,  823, 1160, 1161,  823,  813,  825,  825,  825, 1184,
1546       827,  827,  827,  823,  827, 1167, 1184,  827,  834,  834,
1547       834, 1173,  825,  835,  835,  835, 1164,  835, 1207, 1010,
1548       835, 1165, 1009,  834,  838,  838,  838,  839,  839,  839,
1549
1550       840,  840,  840, 1008, 1174,  825,  843,  843,  843,  838,
1551       841,  841,  841,  839,  841,  840, 1185,  841,  844,  844,
1552       844,  843,  844, 1185, 1173,  844,  846,  846,  846,  847,
1553       847,  847,  854,  854,  854,  855,  855,  855, 1007,  856,
1554       856,  856, 1177,  856, 1197,  847,  856, 1174,  854, 1258,
1555       855,  855,  866,  866,  866,  856,  857,  857,  857, 1258,
1556       857, 1214, 1178,  857,  861,  861,  861,  866,  854,  867,
1557       867,  867,  857,  867, 1177, 1197,  867,  880,  880,  880,
1558       861,  870,  870,  870,  847,  858,  858,  858,  858,  858,
1559       858,  858,  858,  858, 1178, 1199,  858,  870, 1214,  858,
1560
1561       858,  858,  858,  858,  868,  868,  868,  869,  869,  869,
1562      1196,  869, 1182, 1219,  869, 1183, 1005,  861,  995,  868,
1563       858,  858,  859,  859,  859,  859,  859,  859,  859,  859,
1564       859, 1215,  994,  859, 1196, 1199,  859,  859,  859,  859,
1565       859,  872,  872,  872, 1182,  872, 1198, 1183,  872,  876,
1566       876,  876, 1219,  876, 1202, 1193,  876,  859,  859,  881,
1567       881,  881,  888,  888,  888,  890,  890,  890, 1215,  890,
1568      1211, 1194,  890, 1203, 1245,  881, 1200, 1198,  888, 1211,
1569      1245,  890,  901,  901,  901, 1202,  901, 1193, 1221,  901,
1570       909,  909,  909,  888,  893,  893,  893,  893,  893,  893,
1571
1572       893,  893,  893, 1194, 1203,  893,  909, 1243,  893,  893,
1573       893,  893,  893,  904,  904,  904, 1200,  904, 1228, 1204,
1574       904, 1022, 1022, 1022,  896,  896,  896, 1205, 1221,  893,
1575       893,  894,  894,  894,  894,  894,  894,  894,  894,  894,
1576       896, 1208,  894, 1204, 1228,  894,  894,  894,  894,  894,
1577      1243, 1205,  913,  913,  913,  916,  916,  916,  924,  924,
1578       924,  926,  926,  926, 1209,  993,  894,  894,  913,  896,
1579      1222,  916, 1208, 1226,  924,  924, 1227,  926,  927,  927,
1580       927,  928,  928,  928,  929,  929,  929,  930,  930,  930,
1581       937,  937,  937,  927, 1212, 1209,  928, 1226, 1256,  929,
1582
1583      1227, 1212,  930,  939,  939,  939,  937,  942,  942,  942,
1584      1222,  992,  926,  948,  948,  948,  950,  950,  950,  939,
1585       929, 1213, 1229,  942,  951,  951,  951,  991, 1213,  948,
1586      1256, 1220,  950, 1231,  939,  953,  953,  953,  942,  951,
1587       952,  952,  952, 1232,  952, 1241, 1235,  952, 1229, 1217,
1588       953,  954,  954,  954,  948,  954, 1217, 1231,  954,  955,
1589       955,  955,  956,  956,  956, 1218,  956, 1232,  990,  956,
1590      1220,  950, 1218, 1233,  955,  958,  958,  958,  959,  959,
1591       959,  986,  959, 1235, 1241,  959,  966,  966,  966, 1236,
1592       958,  976,  976,  976,  977,  977,  977, 1233,  977, 1234,
1593
1594      1244,  977,  966, 1223,  980,  980,  980,  976,  980, 1250,
1595      1223,  980,  983,  983,  983,  975,  983,  966, 1224,  983,
1596       987,  987,  987, 1234,  987, 1224, 1236,  987,  997,  997,
1597       997, 1006, 1006, 1006, 1248, 1250,  976, 1242, 1015, 1015,
1598      1015, 1237, 1015, 1244,  997, 1015, 1248, 1006, 1023, 1023,
1599      1023, 1035, 1035, 1035, 1015, 1038, 1038, 1038, 1040, 1040,
1600      1040, 1041, 1041, 1041, 1023, 1237, 1249, 1035, 1042, 1042,
1601      1042, 1038, 1053, 1053, 1053, 1249, 1242, 1041, 1056, 1056,
1602      1056, 1006, 1056, 1042, 1267, 1056, 1251,  974, 1053, 1057,
1603      1057, 1057, 1246, 1267, 1056, 1247, 1238, 1023, 1058, 1058,
1604
1605      1058, 1252,  965, 1053, 1257, 1057, 1060, 1060, 1060, 1061,
1606      1061, 1061, 1251, 1061, 1058,  964, 1061, 1071, 1071, 1071,
1607      1238, 1060, 1074, 1074, 1074, 1077, 1077, 1077, 1078, 1078,
1608      1078, 1246, 1078, 1071, 1247, 1078, 1257, 1268, 1074, 1253,
1609      1252, 1077, 1085, 1085, 1085, 1088, 1088, 1088,  963, 1088,
1610      1266, 1313, 1088, 1091, 1091, 1091, 1077, 1091, 1085, 1254,
1611      1091, 1088, 1266, 1097, 1097, 1097, 1255, 1097, 1268, 1091,
1612      1097, 1147, 1147, 1147, 1154, 1154, 1154, 1313, 1253, 1097,
1613      1155, 1155, 1155, 1254, 1162, 1162, 1162, 1147, 1162, 1154,
1614      1255, 1162, 1163, 1163, 1163, 1155, 1168, 1168, 1168,  962,
1615
1616      1162, 1169, 1169, 1169, 1171, 1171, 1171, 1269, 1163, 1262,
1617       961, 1259, 1168, 1170, 1170, 1170, 1169, 1170, 1272, 1171,
1618      1170, 1172, 1172, 1172,  960, 1172, 1263, 1272, 1172, 1181,
1619      1181, 1181, 1186, 1186, 1186, 1259, 1186, 1284, 1269, 1186,
1620      1187, 1187, 1187, 1260, 1187, 1181, 1264, 1187, 1186, 1190,
1621      1190, 1190, 1262, 1190, 1265, 1275, 1190, 1225, 1225, 1225,
1622      1181, 1239, 1239, 1239, 1261, 1261, 1261, 1260, 1284, 1263,
1623      1264, 1271, 1276, 1225, 1270, 1270, 1270, 1239, 1265, 1277,
1624      1261, 1291, 1280, 1271, 1273, 1273, 1273, 1275, 1278, 1280,
1625      1270, 1277, 1279, 1279, 1279, 1281, 1285, 1278, 1292,  957,
1626
1627      1273, 1289, 1281,  949, 1276, 1282, 1282, 1282, 1279, 1282,
1628      1290, 1299, 1282, 1283, 1283, 1283, 1286, 1286, 1286, 1291,
1629      1300, 1282, 1287, 1287, 1287, 1289, 1295, 1285, 1296, 1283,
1630      1301, 1302, 1286, 1295, 1290, 1296, 1292, 1303, 1287, 1293,
1631      1293, 1293, 1297, 1297, 1297, 1304, 1307, 1308, 1305, 1306,
1632      1299, 1309, 1310, 1311, 1312, 1293, 1314, 1315, 1297, 1300,
1633      1318, 1303, 1316, 1312, 1319, 1311, 1321, 1320, 1324, 1304,
1634      1301, 1302, 1305, 1306, 1325, 1321, 1317, 1317, 1317, 1320,
1635      1327, 1315, 1314, 1307, 1308, 1328, 1316,  947, 1335, 1336,
1636      1309, 1310, 1317, 1322, 1322, 1322, 1326, 1326, 1326, 1333,
1637
1638      1324, 1331, 1334, 1318,  946,  945, 1325, 1319, 1331, 1322,
1639      1332, 1327, 1326, 1329, 1329, 1329, 1328, 1332, 1337, 1338,
1640      1339, 1340,  936, 1333,  935,  934, 1334, 1335, 1336, 1329,
1641      1340,  933, 1339, 1341, 1341, 1341, 1342, 1342, 1342,  932,
1642       931,  925, 1337, 1338,  923,  921,  908,  907,  900, 1341,
1643       899,  898, 1342, 1345, 1345, 1345, 1345, 1345, 1345, 1345,
1644      1346, 1346, 1346, 1346, 1346, 1346, 1346, 1347, 1347, 1347,
1645      1347, 1347, 1347, 1347, 1348, 1348, 1348, 1348, 1348, 1348,
1646      1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1350, 1350,
1647      1350, 1350, 1350, 1350, 1350, 1351, 1351, 1351, 1351, 1351,
1648
1649      1351, 1351, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1353,
1650      1353, 1353, 1353, 1353, 1353, 1353, 1354, 1354, 1354, 1354,
1651      1354, 1354, 1354, 1355, 1355, 1355, 1355, 1355, 1355, 1355,
1652      1356, 1356, 1356, 1356, 1356, 1356, 1356, 1357, 1357, 1357,
1653      1357, 1357, 1357, 1357, 1358, 1358, 1358, 1358, 1358, 1358,
1654      1358, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1360, 1360,
1655      1360, 1360, 1360, 1360, 1360, 1361, 1361, 1361, 1361, 1361,
1656      1361, 1361, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1363,
1657      1363, 1363, 1363, 1363, 1363, 1363, 1364, 1364, 1364, 1364,
1658      1364, 1364, 1364, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
1659
1660      1366, 1366, 1366, 1366, 1366, 1366, 1366, 1367, 1367, 1367,
1661       897, 1367, 1368, 1368, 1368,  895, 1368, 1369, 1369, 1369,
1662       879, 1369, 1370, 1370, 1370,  875, 1370, 1371, 1371, 1371,
1663       865, 1371, 1372, 1372, 1372,  864, 1372, 1373, 1373, 1373,
1664       863, 1373, 1374, 1374, 1374,  862, 1374, 1375, 1375, 1375,
1665      1375, 1375,  860, 1375, 1376,  845, 1376, 1377,  842, 1377,
1666      1378,  833, 1378, 1379,  832, 1379, 1380,  831, 1380, 1381,
1667       830, 1381, 1382,  824, 1382, 1383,  812, 1383, 1384, 1384,
1668      1384, 1384, 1384, 1384, 1384, 1385,  808,  805, 1385, 1386,
1669      1386, 1386, 1386, 1386, 1386, 1387, 1387, 1387, 1387, 1387,
1670
1671      1387, 1388, 1388, 1388, 1388, 1388, 1388, 1389, 1389, 1389,
1672      1389, 1389, 1389, 1390, 1390, 1390, 1390, 1390, 1390, 1391,
1673      1391, 1391, 1391, 1391, 1391, 1392, 1392, 1392, 1392, 1392,
1674      1392, 1393, 1393, 1393, 1393, 1393, 1393, 1394, 1394, 1394,
1675      1394, 1394, 1394, 1394, 1395, 1395, 1395, 1395, 1395, 1395,
1676      1395, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1397, 1397,
1677      1397, 1397, 1397, 1397, 1397, 1398, 1398, 1398, 1398, 1398,
1678      1398, 1398, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1400,
1679      1400, 1400, 1400, 1400, 1400, 1400,  804,  802,  797,  783,
1680       782,  781,  776,  774,  770,  769,  767,  765,  747,  746,
1681
1682       745,  739,  738,  737,  729,  728,  727,  726,  724,  704,
1683       699,  697,  696,  695,  694,  689,  687,  686,  685,  684,
1684       681,  679,  671,  666,  665,  663,  662,  661,  660,  659,
1685       658,  657,  652,  651,  650,  649,  648,  647,  646,  645,
1686       642,  636,  632,  630,  628,  627,  624,  621,  619,  616,
1687       615,  612,  611,  608,  607,  606,  603,  598,  594,  589,
1688       587,  586,  585,  583,  581,  579,  578,  577,  575,  573,
1689       572,  571,  570,  565,  564,  563,  560,  559,  558,  555,
1690       550,  546,  544,  543,  539,  534,  532,  530,  527,  523,
1691       522,  519,  511,  510,  509,  503,  502,  501,  499,  498,
1692
1693       495,  492,  490,  487,  485,  484,  481,  477,  472,  466,
1694       463,  462,  456,  455,  454,  450,  449,  448,  447,  444,
1695       443,  442,  441,  436,  431,  430,  425,  424,  422,  416,
1696       409,  402,  401,  399,  398,  393,  392,  390,  389,  388,
1697       382,  381,  380,  379,  373,  372,  371,  368,  367,  366,
1698       364,  360,  358,  355,  354,  351,  350,  349,  348,  345,
1699       344,  340,  336,  335,  334,  333,  332,  329,  328,  327,
1700       326,  325,  324,  321,  320,  319,  318,  317,  316,  313,
1701       312,  310,  309,  308,  307,  306,  302,  300,  299,  298,
1702       297,  296,  295,  292,  291,  290,  289,  288,  287,  284,
1703
1704       283,  280,  279,  278,  277,  276,  273,  272,  271,  270,
1705       269,  268,  265,  264,  263,  262,  261,  260,  259,  256,
1706       255,  252,  251,  250,  249,  248,  247,  246,  243,  242,
1707       241,  240,  239,  233,  232,  230,  227,  226,  222,  218,
1708       210,  209,  208,  207,  203,  196,  192,  184,  183,  182,
1709       178,  170,  169,  168,  164,  157,  156,  155,  154,  153,
1710       152,  148,  140,  136,  127,  123,  119,  118,  117,  111,
1711       110,  108,  105,   93, 1344, 1344, 1344, 1344, 1344, 1344,
1712      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1713      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1714
1715      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1716      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1717      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1718      1344, 1344, 1344, 1344, 1344, 1344, 1344
1719     } ;
1720
1721 /* Table of booleans, true if rule could match eol. */
1722 static yyconst flex_int32_t yy_rule_can_match_eol[179] =
1723     {   0,
1724 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1725     1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 
1726     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1727     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 
1728     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
1729     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
1730     0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1731     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 
1732     0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,     };
1733
1734 static yy_state_type yy_last_accepting_state;
1735 static char *yy_last_accepting_cpos;
1736
1737 extern int surf_parse__flex_debug;
1738 int surf_parse__flex_debug = 0;
1739
1740 /* The intent behind this definition is that it'll catch
1741  * any uses of REJECT which flex missed.
1742  */
1743 #define REJECT reject_used_but_not_detected
1744 #define yymore() yymore_used_but_not_detected
1745 #define YY_MORE_ADJ 0
1746 #define YY_RESTORE_YY_MORE_OFFSET
1747 char *surf_parse_text;
1748 #line 1 "surf/surfxml.l"
1749 /* Validating XML processor for surf/surfxml.dtd.
1750  * Generated 2006/07/18 21:02:15.
1751  *
1752  * This program was generated with the FleXML XML processor generator.
1753  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
1754  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
1755  * (Id: flexml.pl,v 1.53 2006/07/18 12:12:06 mquinson Exp).
1756  * 
1757  * There are two, intertwined parts to this program, part A and part B.
1758  *
1759  * Part A
1760  * ------
1761  * 
1762  * Some parts, here collectively called "Part A", are found in the 
1763  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
1764  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
1765  *
1766  * You can redistribute, use, perform, display and/or modify "Part A"
1767  * provided the following two conditions hold:
1768  *
1769  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
1770  *    FleXML; without even the implied warranty of MERCHANTABILITY or
1771  *    FITNESS FOR A PARTICULAR PURPOSE.
1772  *
1773  * 2. The program distribution conditions do not in any way affect the
1774  *    distribution conditions of the FleXML system used to generate this
1775  *    file or any version of FleXML derived from that system.
1776  *
1777  * Notice that these are explicit rights granted to you for files
1778  * generated by the FleXML system.  For your rights in connection with
1779  * the FleXML system itself please consult the GNU General Public License.
1780  * 
1781  * Part B
1782  * ------
1783  * 
1784  * The other parts, here collectively called "Part B", and which came 
1785  * from the DTD used by FleXML to generate this program, can be 
1786  * distributed (or not, as the case may be) under the terms of whoever
1787  * wrote them, provided these terms respect and obey the two conditions 
1788  * above under the heading "Part A".
1789  *
1790  * The author of and contributors to FleXML specifically disclaim
1791  * any copyright interest in "Part B", unless "Part B" was written 
1792  * by the author of or contributors to FleXML.
1793  * 
1794  */
1795 #line 49 "surf/surfxml.l"
1796
1797 /* Version strings. */
1798 const char rcs_surfxml_flexml_skeleton[] =
1799  "$" "Id: skel,v 1.31 2006/07/18 18:21:13 mquinson Exp $";
1800 const char rcs_surfxml_flexml[] =
1801  "$" "Id: flexml.pl,v 1.53 2006/07/18 12:12:06 mquinson Exp $";
1802
1803 /* ANSI headers. */
1804 #include <unistd.h>
1805 #include <stdio.h>
1806 #include <string.h>
1807 #include <assert.h>
1808 #include <stdarg.h>
1809 #include <ctype.h>
1810
1811 /* Generated definitions. */
1812 #define FLEXML_yylineno
1813 #define FLEXML_BUFFERSTACKSIZE 1000000
1814
1815 /* XML processor api. */
1816 /* FleXML-provided data. */
1817 const char* surfxml_pcdata;
1818 AT_surfxml_network_link_bandwidth A_surfxml_network_link_bandwidth;
1819 AT_surfxml_process_host A_surfxml_process_host;
1820 AT_surfxml_network_link_latency_file A_surfxml_network_link_latency_file;
1821 AT_surfxml_route_impact_on_dst_with_other_send A_surfxml_route_impact_on_dst_with_other_send;
1822 AT_surfxml_cpu_interference_send_recv A_surfxml_cpu_interference_send_recv;
1823 AT_surfxml_route_impact_on_dst A_surfxml_route_impact_on_dst;
1824 AT_surfxml_platform_description_version A_surfxml_platform_description_version;
1825 AT_surfxml_route_impact_on_src_with_other_recv A_surfxml_route_impact_on_src_with_other_recv;
1826 AT_surfxml_route_element_name A_surfxml_route_element_name;
1827 AT_surfxml_process_start_time A_surfxml_process_start_time;
1828 AT_surfxml_process_function A_surfxml_process_function;
1829 AT_surfxml_cpu_state A_surfxml_cpu_state;
1830 AT_surfxml_cpu_interference_send A_surfxml_cpu_interference_send;
1831 AT_surfxml_network_link_bandwidth_file A_surfxml_network_link_bandwidth_file;
1832 AT_surfxml_cpu_name A_surfxml_cpu_name;
1833 AT_surfxml_process_kill_time A_surfxml_process_kill_time;
1834 AT_surfxml_network_link_state A_surfxml_network_link_state;
1835 AT_surfxml_cpu_availability_file A_surfxml_cpu_availability_file;
1836 AT_surfxml_argument_value A_surfxml_argument_value;
1837 AT_surfxml_route_src A_surfxml_route_src;
1838 AT_surfxml_route_impact_on_src A_surfxml_route_impact_on_src;
1839 AT_surfxml_cpu_max_outgoing_rate A_surfxml_cpu_max_outgoing_rate;
1840 AT_surfxml_cpu_availability A_surfxml_cpu_availability;
1841 AT_surfxml_cpu_interference_recv A_surfxml_cpu_interference_recv;
1842 AT_surfxml_network_link_name A_surfxml_network_link_name;
1843 AT_surfxml_cpu_power A_surfxml_cpu_power;
1844 AT_surfxml_include_file A_surfxml_include_file;
1845 AT_surfxml_network_link_sharing_policy A_surfxml_network_link_sharing_policy;
1846 AT_surfxml_route_dst A_surfxml_route_dst;
1847 AT_surfxml_network_link_latency A_surfxml_network_link_latency;
1848 AT_surfxml_cpu_state_file A_surfxml_cpu_state_file;
1849 AT_surfxml_network_link_state_file A_surfxml_network_link_state_file;
1850
1851 /* XML state. */
1852 #ifdef FLEX_DEBUG
1853 # define ENTER(state)   debug_enter(state,#state)
1854 # define LEAVE          debug_leave()
1855 # define SET(state)     debug_set(state,#state)
1856   static void debug_enter(int, const char*);
1857   static void debug_leave(void);
1858   static void debug_set(int, const char*);
1859 #else
1860 # define ENTER(state)   (yy_push_state(state))
1861 # define LEAVE          (yy_pop_state())
1862 # define SET(state)     BEGIN(state)
1863 #endif
1864
1865 /* Generic actions. */
1866 #define SKIP    /*skip*/
1867 #define SUCCEED        CLEANUP; return 0
1868
1869 #define FAIL    return fail
1870 static int fail(const char*, ...);
1871 const char * surfxml_parse_err_msg(void);
1872
1873 /* Cleanup */
1874 static void cleanup(void);
1875 #define CLEANUP  cleanup()
1876
1877 /* Text buffer stack handling. */
1878 static char bufferstack[FLEXML_BUFFERSTACKSIZE];
1879 static char* limit = bufferstack + FLEXML_BUFFERSTACKSIZE;
1880 typedef struct BufferLast_s {
1881   struct BufferLast_s *old; const char* saved; char new1[1];
1882 } BufferLast;
1883 #ifdef FLEXML_HasMixed
1884 static BufferLast* last = (BufferLast*)0;
1885 #endif
1886 static char* next = bufferstack;
1887
1888 #define BUFFERSET(P)  (P = next)
1889 #define BUFFERPUTC(C) (assert(next<limit), *(next++) = (C))
1890 #define BUFFERDONE    (BUFFERPUTC('\0'))
1891
1892 #define BUFFERLITERAL(C,P) bufferliteral(C,&(P),surf_parse_text)
1893 static void bufferliteral(char c, const char** pp, char* text)
1894 {
1895   char *s = strchr(text,c), *e = strrchr(text,c);
1896   assert(s <= e); BUFFERSET(*pp);
1897   while (++s<e) {
1898     if (isspace(*s)) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
1899     else BUFFERPUTC(*s);
1900   }
1901   BUFFERDONE;
1902 }
1903
1904 #ifdef FLEXML_HasMixed
1905 static void pushbuffer(const char* p)
1906 {
1907   BufferLast* l = (BufferLast*)next;
1908   assert(next < limit);
1909   l->old = last;
1910   l->saved = p;
1911   next = l->new1;
1912   last = l;
1913 }
1914
1915 static const char* popbuffer(void)
1916 {
1917   BufferLast* l = last;
1918   assert(last != (BufferLast*)0);
1919   last = l->old;
1920   next = (char*)l;
1921   return l->saved;
1922 }
1923 #endif
1924
1925 /* General internal entities are `unput' back onto the input stream... */
1926 #define ENTITYTEXT(T) \
1927   { char *s = (T), *e = s+strlen(s);\
1928     while (--e >= s) { unput(*e); }}
1929 /* Flex standard options. */
1930 #define YY_NO_INPUT 1
1931 /* Flex user-requested options. */
1932 /* XML character classes (currently restricted to ASCII). */
1933 /* "Common syntactic structures." */
1934 /* "Names and Tokens." */
1935 /* Miscellaneous. */
1936 /* Parser states (flex `exclusive start conditions'):
1937  *
1938  * PROLOG       the XML prolog of the document before <?xml...>
1939  * DOCTYPE      the XML prolog of the document after <?xml...>
1940  * EPILOG       after the root element
1941  * INCOMMENT    inside an XML comment <!--....-->
1942  * INPI         inside an XML PI <?...?>
1943  * VALUE1       inside a '...'-delimited literal
1944  * VALUE2       inside a "..."-delimited literal
1945  * CDATA        inside a <![CDATA[...] ]> section.
1946  * ROOT_<tag>   expect root element <tag>
1947  * AL_<tag>     inside the attribute list for <tag>
1948  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
1949  * IMPOSSIBLE   dummy to permit disabling rules; must be last
1950  */
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961 #line 241 "surf/surfxml.l"
1962 /* State names. */
1963 const char* *surfxml_statenames=NULL;
1964 #line 1965 "surf/surfxml.c"
1965
1966 #define INITIAL 0
1967 #define PROLOG 1
1968 #define DOCTYPE 2
1969 #define EPILOG 3
1970 #define INCOMMENT 4
1971 #define INPI 5
1972 #define VALUE1 6
1973 #define VALUE2 7
1974 #define CDATA 8
1975 #define ROOT_surfxml_platform_description 9
1976 #define AL_surfxml_platform_description 10
1977 #define S_surfxml_platform_description 11
1978 #define S_surfxml_platform_description_1 12
1979 #define S_surfxml_platform_description_2 13
1980 #define E_surfxml_platform_description 14
1981 #define ROOT_surfxml_include 15
1982 #define AL_surfxml_include 16
1983 #define S_surfxml_include 17
1984 #define S_surfxml_include_1 18
1985 #define S_surfxml_include_2 19
1986 #define E_surfxml_include 20
1987 #define ROOT_surfxml_cpu 21
1988 #define AL_surfxml_cpu 22
1989 #define E_surfxml_cpu 23
1990 #define ROOT_surfxml_network_link 24
1991 #define AL_surfxml_network_link 25
1992 #define E_surfxml_network_link 26
1993 #define ROOT_surfxml_route 27
1994 #define AL_surfxml_route 28
1995 #define S_surfxml_route 29
1996 #define S_surfxml_route_1 30
1997 #define S_surfxml_route_2 31
1998 #define E_surfxml_route 32
1999 #define ROOT_surfxml_route_element 33
2000 #define AL_surfxml_route_element 34
2001 #define E_surfxml_route_element 35
2002 #define ROOT_surfxml_process 36
2003 #define AL_surfxml_process 37
2004 #define S_surfxml_process 38
2005 #define S_surfxml_process_1 39
2006 #define S_surfxml_process_2 40
2007 #define E_surfxml_process 41
2008 #define ROOT_surfxml_argument 42
2009 #define AL_surfxml_argument 43
2010 #define E_surfxml_argument 44
2011 #define IMPOSSIBLE 45
2012
2013 #ifndef YY_NO_UNISTD_H
2014 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2015  * down here because we want the user's section 1 to have been scanned first.
2016  * The user has a chance to override it with an option.
2017  */
2018 #include <unistd.h>
2019 #endif
2020
2021 #ifndef YY_EXTRA_TYPE
2022 #define YY_EXTRA_TYPE void *
2023 #endif
2024
2025 /* Macros after this point can all be overridden by user definitions in
2026  * section 1.
2027  */
2028
2029 #ifndef YY_SKIP_YYWRAP
2030 #ifdef __cplusplus
2031 extern "C" int surf_parse_wrap (void );
2032 #else
2033 extern int surf_parse_wrap (void );
2034 #endif
2035 #endif
2036
2037 #ifndef yytext_ptr
2038 static void yy_flex_strncpy (char *,yyconst char *,int );
2039 #endif
2040
2041 #ifdef YY_NEED_STRLEN
2042 static int yy_flex_strlen (yyconst char * );
2043 #endif
2044
2045 #ifndef YY_NO_INPUT
2046
2047 #ifdef __cplusplus
2048 static int yyinput (void );
2049 #else
2050 static int input (void );
2051 #endif
2052
2053 #endif
2054
2055         static int yy_start_stack_ptr = 0;
2056         static int yy_start_stack_depth = 0;
2057         static int *yy_start_stack = 0;
2058     
2059     static void yy_push_state (int new_state );
2060     
2061     static void yy_pop_state (void );
2062     
2063 /* Amount of stuff to slurp up with each read. */
2064 #ifndef YY_READ_BUF_SIZE
2065 #define YY_READ_BUF_SIZE 8192
2066 #endif
2067
2068 /* Copy whatever the last rule matched to the standard output. */
2069 #ifndef ECHO
2070 /* This used to be an fputs(), but since the string might contain NUL's,
2071  * we now use fwrite().
2072  */
2073 #define ECHO (void) fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )
2074 #endif
2075
2076 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2077  * is returned in "result".
2078  */
2079 #ifndef YY_INPUT
2080 #define YY_INPUT(buf,result,max_size) \
2081         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2082                 { \
2083                 int c = '*'; \
2084                 size_t n; \
2085                 for ( n = 0; n < max_size && \
2086                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
2087                         buf[n] = (char) c; \
2088                 if ( c == '\n' ) \
2089                         buf[n++] = (char) c; \
2090                 if ( c == EOF && ferror( surf_parse_in ) ) \
2091                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
2092                 result = n; \
2093                 } \
2094         else \
2095                 { \
2096                 errno=0; \
2097                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
2098                         { \
2099                         if( errno != EINTR) \
2100                                 { \
2101                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2102                                 break; \
2103                                 } \
2104                         errno=0; \
2105                         clearerr(surf_parse_in); \
2106                         } \
2107                 }\
2108 \
2109
2110 #endif
2111
2112 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2113  * we don't want an extra ';' after the "return" because that will cause
2114  * some compilers to complain about unreachable statements.
2115  */
2116 #ifndef yyterminate
2117 #define yyterminate() return YY_NULL
2118 #endif
2119
2120 /* Number of entries by which start-condition stack grows. */
2121 #ifndef YY_START_STACK_INCR
2122 #define YY_START_STACK_INCR 25
2123 #endif
2124
2125 /* Report a fatal error. */
2126 #ifndef YY_FATAL_ERROR
2127 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2128 #endif
2129
2130 /* end tables serialization structures and prototypes */
2131
2132 /* Default declaration of generated scanner - a define so the user can
2133  * easily add parameters.
2134  */
2135 #ifndef YY_DECL
2136 #define YY_DECL_IS_OURS 1
2137
2138 extern int surf_parse_lex (void);
2139
2140 #define YY_DECL int surf_parse_lex (void)
2141 #endif /* !YY_DECL */
2142
2143 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
2144  * have been set up.
2145  */
2146 #ifndef YY_USER_ACTION
2147 #define YY_USER_ACTION
2148 #endif
2149
2150 /* Code executed at the end of each rule. */
2151 #ifndef YY_BREAK
2152 #define YY_BREAK break;
2153 #endif
2154
2155 #define YY_RULE_SETUP \
2156         YY_USER_ACTION
2157
2158 /** The main scanner function which does all the work.
2159  */
2160 YY_DECL
2161 {
2162         register yy_state_type yy_current_state;
2163         register char *yy_cp, *yy_bp;
2164         register int yy_act;
2165     
2166 #line 245 "surf/surfxml.l"
2167
2168
2169  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
2170  SET(PROLOG);
2171   /* FleXML_init */
2172   next = bufferstack;
2173   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
2174   surfxml_statenames[PROLOG] = NULL;
2175   surfxml_statenames[DOCTYPE] = NULL;
2176   surfxml_statenames[EPILOG] = NULL;
2177   surfxml_statenames[INCOMMENT] = NULL;
2178   surfxml_statenames[INPI] = NULL;
2179   surfxml_statenames[VALUE1] = NULL;
2180   surfxml_statenames[VALUE2] = NULL;
2181   surfxml_statenames[CDATA] = NULL;
2182   surfxml_statenames[ROOT_surfxml_platform_description] = NULL;
2183   surfxml_statenames[AL_surfxml_platform_description] = NULL;
2184   surfxml_statenames[S_surfxml_platform_description] = "platform_description";
2185   surfxml_statenames[S_surfxml_platform_description_1] = "platform_description";
2186   surfxml_statenames[S_surfxml_platform_description_2] = "platform_description";
2187   surfxml_statenames[E_surfxml_platform_description] = "platform_description";
2188   surfxml_statenames[ROOT_surfxml_include] = NULL;
2189   surfxml_statenames[AL_surfxml_include] = NULL;
2190   surfxml_statenames[S_surfxml_include] = "include";
2191   surfxml_statenames[S_surfxml_include_1] = "include";
2192   surfxml_statenames[S_surfxml_include_2] = "include";
2193   surfxml_statenames[E_surfxml_include] = "include";
2194   surfxml_statenames[ROOT_surfxml_cpu] = NULL;
2195   surfxml_statenames[AL_surfxml_cpu] = NULL;
2196   surfxml_statenames[E_surfxml_cpu] = "cpu";
2197   surfxml_statenames[ROOT_surfxml_network_link] = NULL;
2198   surfxml_statenames[AL_surfxml_network_link] = NULL;
2199   surfxml_statenames[E_surfxml_network_link] = "network_link";
2200   surfxml_statenames[ROOT_surfxml_route] = NULL;
2201   surfxml_statenames[AL_surfxml_route] = NULL;
2202   surfxml_statenames[S_surfxml_route] = "route";
2203   surfxml_statenames[S_surfxml_route_1] = "route";
2204   surfxml_statenames[S_surfxml_route_2] = "route";
2205   surfxml_statenames[E_surfxml_route] = "route";
2206   surfxml_statenames[ROOT_surfxml_route_element] = NULL;
2207   surfxml_statenames[AL_surfxml_route_element] = NULL;
2208   surfxml_statenames[E_surfxml_route_element] = "route_element";
2209   surfxml_statenames[ROOT_surfxml_process] = NULL;
2210   surfxml_statenames[AL_surfxml_process] = NULL;
2211   surfxml_statenames[S_surfxml_process] = "process";
2212   surfxml_statenames[S_surfxml_process_1] = "process";
2213   surfxml_statenames[S_surfxml_process_2] = "process";
2214   surfxml_statenames[E_surfxml_process] = "process";
2215   surfxml_statenames[ROOT_surfxml_argument] = NULL;
2216   surfxml_statenames[AL_surfxml_argument] = NULL;
2217   surfxml_statenames[E_surfxml_argument] = "argument";
2218   }
2219
2220  /* COMMENTS and PIs: handled uniformly for efficiency. */
2221
2222 #line 2223 "surf/surfxml.c"
2223
2224         if ( (yy_init) )
2225                 {
2226                 (yy_init) = 0;
2227
2228 #ifdef YY_USER_INIT
2229                 YY_USER_INIT;
2230 #endif
2231
2232                 if ( ! (yy_start) )
2233                         (yy_start) = 1; /* first start state */
2234
2235                 if ( ! surf_parse_in )
2236                         surf_parse_in = stdin;
2237
2238                 if ( ! surf_parse_out )
2239                         surf_parse_out = stdout;
2240
2241                 if ( ! YY_CURRENT_BUFFER ) {
2242                         surf_parse_ensure_buffer_stack ();
2243                         YY_CURRENT_BUFFER_LVALUE =
2244                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
2245                 }
2246
2247                 surf_parse__load_buffer_state( );
2248                 }
2249
2250         while ( 1 )             /* loops until end-of-file is reached */
2251                 {
2252                 yy_cp = (yy_c_buf_p);
2253
2254                 /* Support of surf_parse_text. */
2255                 *yy_cp = (yy_hold_char);
2256
2257                 /* yy_bp points to the position in yy_ch_buf of the start of
2258                  * the current run.
2259                  */
2260                 yy_bp = yy_cp;
2261
2262                 yy_current_state = (yy_start);
2263 yy_match:
2264                 do
2265                         {
2266                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2267                         if ( yy_accept[yy_current_state] )
2268                                 {
2269                                 (yy_last_accepting_state) = yy_current_state;
2270                                 (yy_last_accepting_cpos) = yy_cp;
2271                                 }
2272                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2273                                 {
2274                                 yy_current_state = (int) yy_def[yy_current_state];
2275                                 if ( yy_current_state >= 1345 )
2276                                         yy_c = yy_meta[(unsigned int) yy_c];
2277                                 }
2278                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2279                         ++yy_cp;
2280                         }
2281                 while ( yy_base[yy_current_state] != 3675 );
2282
2283 yy_find_action:
2284                 yy_act = yy_accept[yy_current_state];
2285                 if ( yy_act == 0 )
2286                         { /* have to back up */
2287                         yy_cp = (yy_last_accepting_cpos);
2288                         yy_current_state = (yy_last_accepting_state);
2289                         yy_act = yy_accept[yy_current_state];
2290                         }
2291
2292                 YY_DO_BEFORE_ACTION;
2293
2294                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2295                         {
2296                         int yyl;
2297                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
2298                                 if ( surf_parse_text[yyl] == '\n' )
2299                                            
2300     surf_parse_lineno++;
2301 ;
2302                         }
2303
2304 do_action:      /* This label is used only to access EOF actions. */
2305
2306                 switch ( yy_act )
2307         { /* beginning of action switch */
2308                         case 0: /* must back up */
2309                         /* undo the effects of YY_DO_BEFORE_ACTION */
2310                         *yy_cp = (yy_hold_char);
2311                         yy_cp = (yy_last_accepting_cpos);
2312                         yy_current_state = (yy_last_accepting_state);
2313                         goto yy_find_action;
2314
2315 case 1:
2316 YY_RULE_SETUP
2317 #line 301 "surf/surfxml.l"
2318 ENTER(INCOMMENT);
2319         YY_BREAK
2320 case 2:
2321 YY_RULE_SETUP
2322 #line 302 "surf/surfxml.l"
2323 ENTER(INPI);
2324         YY_BREAK
2325
2326
2327 case 3:
2328 YY_RULE_SETUP
2329 #line 305 "surf/surfxml.l"
2330 LEAVE;
2331         YY_BREAK
2332 case 4:
2333 #line 307 "surf/surfxml.l"
2334 case 5:
2335 #line 308 "surf/surfxml.l"
2336 case 6:
2337 /* rule 6 can match eol */
2338 YY_RULE_SETUP
2339 #line 308 "surf/surfxml.l"
2340 SKIP;
2341         YY_BREAK
2342 case YY_STATE_EOF(INCOMMENT):
2343 #line 309 "surf/surfxml.l"
2344 FAIL("EOF in comment.");
2345         YY_BREAK
2346
2347
2348 case 7:
2349 YY_RULE_SETUP
2350 #line 312 "surf/surfxml.l"
2351 LEAVE;
2352         YY_BREAK
2353 case 8:
2354 #line 314 "surf/surfxml.l"
2355 case 9:
2356 /* rule 9 can match eol */
2357 YY_RULE_SETUP
2358 #line 314 "surf/surfxml.l"
2359 SKIP;
2360         YY_BREAK
2361 case YY_STATE_EOF(INPI):
2362 #line 315 "surf/surfxml.l"
2363 FAIL("EOF in PI (processing instruction).");
2364         YY_BREAK
2365
2366 /* SPACES: skipped uniformly */
2367 case 10:
2368 /* rule 10 can match eol */
2369 YY_RULE_SETUP
2370 #line 320 "surf/surfxml.l"
2371 SKIP;
2372         YY_BREAK
2373 /* PROLOG: determine root element and process it. */
2374
2375 case 11:
2376 /* rule 11 can match eol */
2377 YY_RULE_SETUP
2378 #line 325 "surf/surfxml.l"
2379 SET(DOCTYPE); 
2380         YY_BREAK
2381 case 12:
2382 /* rule 12 can match eol */
2383 YY_RULE_SETUP
2384 #line 326 "surf/surfxml.l"
2385 FAIL("Bad declaration %s.",surf_parse_text);
2386         YY_BREAK
2387
2388
2389 case 13:
2390 /* rule 13 can match eol */
2391 YY_RULE_SETUP
2392 #line 330 "surf/surfxml.l"
2393 SET(ROOT_surfxml_argument);
2394         YY_BREAK
2395 case 14:
2396 /* rule 14 can match eol */
2397 YY_RULE_SETUP
2398 #line 331 "surf/surfxml.l"
2399 SET(ROOT_surfxml_route_element);
2400         YY_BREAK
2401 case 15:
2402 /* rule 15 can match eol */
2403 YY_RULE_SETUP
2404 #line 332 "surf/surfxml.l"
2405 SET(ROOT_surfxml_cpu);
2406         YY_BREAK
2407 case 16:
2408 /* rule 16 can match eol */
2409 YY_RULE_SETUP
2410 #line 333 "surf/surfxml.l"
2411 SET(ROOT_surfxml_include);
2412         YY_BREAK
2413 case 17:
2414 /* rule 17 can match eol */
2415 YY_RULE_SETUP
2416 #line 334 "surf/surfxml.l"
2417 SET(ROOT_surfxml_route);
2418         YY_BREAK
2419 case 18:
2420 /* rule 18 can match eol */
2421 YY_RULE_SETUP
2422 #line 335 "surf/surfxml.l"
2423 SET(ROOT_surfxml_platform_description);
2424         YY_BREAK
2425 case 19:
2426 /* rule 19 can match eol */
2427 YY_RULE_SETUP
2428 #line 336 "surf/surfxml.l"
2429 SET(ROOT_surfxml_network_link);
2430         YY_BREAK
2431 case 20:
2432 /* rule 20 can match eol */
2433 YY_RULE_SETUP
2434 #line 337 "surf/surfxml.l"
2435 SET(ROOT_surfxml_process);
2436         YY_BREAK
2437 case 21:
2438 /* rule 21 can match eol */
2439 YY_RULE_SETUP
2440 #line 338 "surf/surfxml.l"
2441 FAIL("Bad declaration %s.",surf_parse_text);
2442         YY_BREAK
2443 case 22:
2444 YY_RULE_SETUP
2445 #line 339 "surf/surfxml.l"
2446 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
2447         YY_BREAK
2448 case YY_STATE_EOF(PROLOG):
2449 case YY_STATE_EOF(DOCTYPE):
2450 #line 340 "surf/surfxml.l"
2451 FAIL("EOF in prolog.");
2452         YY_BREAK
2453
2454 /* RULES DERIVED FROM DTD. */
2455 /* <!-- Small DTD for SURF based tools. -->  */
2456 case 23:
2457 /* rule 23 can match eol */
2458 YY_RULE_SETUP
2459 #line 347 "surf/surfxml.l"
2460 {
2461   A_surfxml_platform_description_version = "0.0";
2462   ENTER(AL_surfxml_platform_description);
2463   }
2464         YY_BREAK
2465
2466 case 24:
2467 /* rule 24 can match eol */
2468 YY_RULE_SETUP
2469 #line 353 "surf/surfxml.l"
2470 ENTER(VALUE1); BUFFERSET(A_surfxml_platform_description_version);
2471         YY_BREAK
2472 case 25:
2473 /* rule 25 can match eol */
2474 YY_RULE_SETUP
2475 #line 354 "surf/surfxml.l"
2476 ENTER(VALUE2); BUFFERSET(A_surfxml_platform_description_version);
2477         YY_BREAK
2478 case 26:
2479 YY_RULE_SETUP
2480 #line 356 "surf/surfxml.l"
2481 {
2482   LEAVE; STag_surfxml_platform_description();surfxml_pcdata = NULL; ENTER(S_surfxml_platform_description);
2483  }
2484         YY_BREAK
2485 case 27:
2486 YY_RULE_SETUP
2487 #line 359 "surf/surfxml.l"
2488 {
2489   LEAVE; STag_surfxml_platform_description(); surfxml_pcdata = NULL; ETag_surfxml_platform_description();
2490   switch (YY_START) {
2491    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2492   }
2493  }
2494         YY_BREAK
2495 case 28:
2496 YY_RULE_SETUP
2497 #line 365 "surf/surfxml.l"
2498 FAIL("Unexpected character `%c' in attribute list of platform_description element.", surf_parse_text[0]);
2499         YY_BREAK
2500 case 29:
2501 YY_RULE_SETUP
2502 #line 366 "surf/surfxml.l"
2503 FAIL("Bad attribute `%s' in `platform_description' element start tag.",surf_parse_text);
2504         YY_BREAK
2505 case YY_STATE_EOF(AL_surfxml_platform_description):
2506 #line 367 "surf/surfxml.l"
2507 FAIL("EOF in attribute list of `platform_description' element.");
2508         YY_BREAK
2509
2510
2511 case 30:
2512 /* rule 30 can match eol */
2513 YY_RULE_SETUP
2514 #line 371 "surf/surfxml.l"
2515 {
2516   LEAVE;
2517   ETag_surfxml_platform_description();
2518   switch (YY_START) {
2519    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2520   }
2521  }
2522         YY_BREAK
2523 case 31:
2524 /* rule 31 can match eol */
2525 YY_RULE_SETUP
2526 #line 378 "surf/surfxml.l"
2527 FAIL("Unexpected end-tag `%s': `</platform_description>' expected.",surf_parse_text);
2528         YY_BREAK
2529 case 32:
2530 YY_RULE_SETUP
2531 #line 379 "surf/surfxml.l"
2532 FAIL("Unexpected character `%c': `</platform_description>' expected.",surf_parse_text[0]);
2533         YY_BREAK
2534 case YY_STATE_EOF(E_surfxml_platform_description):
2535 case YY_STATE_EOF(S_surfxml_platform_description_2):
2536 case YY_STATE_EOF(S_surfxml_platform_description):
2537 #line 380 "surf/surfxml.l"
2538 FAIL("Premature EOF: `</platform_description>' expected.");
2539         YY_BREAK
2540
2541 case 33:
2542 /* rule 33 can match eol */
2543 YY_RULE_SETUP
2544 #line 383 "surf/surfxml.l"
2545 {
2546   A_surfxml_include_file = NULL;
2547   ENTER(AL_surfxml_include);
2548   }
2549         YY_BREAK
2550
2551 case 34:
2552 /* rule 34 can match eol */
2553 YY_RULE_SETUP
2554 #line 389 "surf/surfxml.l"
2555 ENTER(VALUE1); BUFFERSET(A_surfxml_include_file);
2556         YY_BREAK
2557 case 35:
2558 /* rule 35 can match eol */
2559 YY_RULE_SETUP
2560 #line 390 "surf/surfxml.l"
2561 ENTER(VALUE2); BUFFERSET(A_surfxml_include_file);
2562         YY_BREAK
2563 case 36:
2564 YY_RULE_SETUP
2565 #line 392 "surf/surfxml.l"
2566 {
2567   if (!A_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2568   LEAVE; STag_surfxml_include();surfxml_pcdata = NULL; ENTER(S_surfxml_include);
2569  }
2570         YY_BREAK
2571 case 37:
2572 YY_RULE_SETUP
2573 #line 396 "surf/surfxml.l"
2574 {
2575   if (!A_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2576   LEAVE; STag_surfxml_include(); surfxml_pcdata = NULL; ETag_surfxml_include();
2577   switch (YY_START) {
2578    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2579    case ROOT_surfxml_include: SET(EPILOG); break;
2580    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2581   }
2582  }
2583         YY_BREAK
2584 case 38:
2585 YY_RULE_SETUP
2586 #line 405 "surf/surfxml.l"
2587 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
2588         YY_BREAK
2589 case 39:
2590 YY_RULE_SETUP
2591 #line 406 "surf/surfxml.l"
2592 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
2593         YY_BREAK
2594 case YY_STATE_EOF(AL_surfxml_include):
2595 #line 407 "surf/surfxml.l"
2596 FAIL("EOF in attribute list of `include' element.");
2597         YY_BREAK
2598
2599
2600 case 40:
2601 /* rule 40 can match eol */
2602 YY_RULE_SETUP
2603 #line 411 "surf/surfxml.l"
2604 {
2605   LEAVE;
2606   ETag_surfxml_include();
2607   switch (YY_START) {
2608    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2609    case ROOT_surfxml_include: SET(EPILOG); break;
2610    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2611   }
2612  }
2613         YY_BREAK
2614 case 41:
2615 /* rule 41 can match eol */
2616 YY_RULE_SETUP
2617 #line 420 "surf/surfxml.l"
2618 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
2619         YY_BREAK
2620 case 42:
2621 YY_RULE_SETUP
2622 #line 421 "surf/surfxml.l"
2623 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
2624         YY_BREAK
2625 case YY_STATE_EOF(E_surfxml_include):
2626 case YY_STATE_EOF(S_surfxml_include):
2627 case YY_STATE_EOF(S_surfxml_include_2):
2628 #line 422 "surf/surfxml.l"
2629 FAIL("Premature EOF: `</include>' expected.");
2630         YY_BREAK
2631
2632 case 43:
2633 /* rule 43 can match eol */
2634 YY_RULE_SETUP
2635 #line 425 "surf/surfxml.l"
2636 {
2637   A_surfxml_cpu_name = NULL;
2638   A_surfxml_cpu_power = NULL;
2639   A_surfxml_cpu_availability = "1.0";
2640   A_surfxml_cpu_availability_file = NULL;
2641   A_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2642   A_surfxml_cpu_state_file = NULL;
2643   A_surfxml_cpu_interference_send = "1.0";
2644   A_surfxml_cpu_interference_recv = "1.0";
2645   A_surfxml_cpu_interference_send_recv = "1.0";
2646   A_surfxml_cpu_max_outgoing_rate = "-1.0";
2647   ENTER(AL_surfxml_cpu);
2648   }
2649         YY_BREAK
2650
2651 case 44:
2652 /* rule 44 can match eol */
2653 YY_RULE_SETUP
2654 #line 440 "surf/surfxml.l"
2655 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_name);
2656         YY_BREAK
2657 case 45:
2658 /* rule 45 can match eol */
2659 YY_RULE_SETUP
2660 #line 441 "surf/surfxml.l"
2661 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_name);
2662         YY_BREAK
2663 case 46:
2664 /* rule 46 can match eol */
2665 YY_RULE_SETUP
2666 #line 443 "surf/surfxml.l"
2667 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_power);
2668         YY_BREAK
2669 case 47:
2670 /* rule 47 can match eol */
2671 YY_RULE_SETUP
2672 #line 444 "surf/surfxml.l"
2673 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_power);
2674         YY_BREAK
2675 case 48:
2676 /* rule 48 can match eol */
2677 YY_RULE_SETUP
2678 #line 446 "surf/surfxml.l"
2679 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_availability);
2680         YY_BREAK
2681 case 49:
2682 /* rule 49 can match eol */
2683 YY_RULE_SETUP
2684 #line 447 "surf/surfxml.l"
2685 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_availability);
2686         YY_BREAK
2687 case 50:
2688 /* rule 50 can match eol */
2689 YY_RULE_SETUP
2690 #line 449 "surf/surfxml.l"
2691 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_availability_file);
2692         YY_BREAK
2693 case 51:
2694 /* rule 51 can match eol */
2695 YY_RULE_SETUP
2696 #line 450 "surf/surfxml.l"
2697 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_availability_file);
2698         YY_BREAK
2699 case 52:
2700 /* rule 52 can match eol */
2701 #line 453 "surf/surfxml.l"
2702 case 53:
2703 /* rule 53 can match eol */
2704 YY_RULE_SETUP
2705 #line 453 "surf/surfxml.l"
2706 A_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2707         YY_BREAK
2708 case 54:
2709 /* rule 54 can match eol */
2710 #line 455 "surf/surfxml.l"
2711 case 55:
2712 /* rule 55 can match eol */
2713 YY_RULE_SETUP
2714 #line 455 "surf/surfxml.l"
2715 A_surfxml_cpu_state = A_surfxml_cpu_state_OFF;
2716         YY_BREAK
2717 case 56:
2718 /* rule 56 can match eol */
2719 YY_RULE_SETUP
2720 #line 457 "surf/surfxml.l"
2721 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_state_file);
2722         YY_BREAK
2723 case 57:
2724 /* rule 57 can match eol */
2725 YY_RULE_SETUP
2726 #line 458 "surf/surfxml.l"
2727 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_state_file);
2728         YY_BREAK
2729 case 58:
2730 /* rule 58 can match eol */
2731 YY_RULE_SETUP
2732 #line 460 "surf/surfxml.l"
2733 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_send);
2734         YY_BREAK
2735 case 59:
2736 /* rule 59 can match eol */
2737 YY_RULE_SETUP
2738 #line 461 "surf/surfxml.l"
2739 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_send);
2740         YY_BREAK
2741 case 60:
2742 /* rule 60 can match eol */
2743 YY_RULE_SETUP
2744 #line 463 "surf/surfxml.l"
2745 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_recv);
2746         YY_BREAK
2747 case 61:
2748 /* rule 61 can match eol */
2749 YY_RULE_SETUP
2750 #line 464 "surf/surfxml.l"
2751 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_recv);
2752         YY_BREAK
2753 case 62:
2754 /* rule 62 can match eol */
2755 YY_RULE_SETUP
2756 #line 466 "surf/surfxml.l"
2757 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_send_recv);
2758         YY_BREAK
2759 case 63:
2760 /* rule 63 can match eol */
2761 YY_RULE_SETUP
2762 #line 467 "surf/surfxml.l"
2763 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_send_recv);
2764         YY_BREAK
2765 case 64:
2766 /* rule 64 can match eol */
2767 YY_RULE_SETUP
2768 #line 469 "surf/surfxml.l"
2769 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_max_outgoing_rate);
2770         YY_BREAK
2771 case 65:
2772 /* rule 65 can match eol */
2773 YY_RULE_SETUP
2774 #line 470 "surf/surfxml.l"
2775 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_max_outgoing_rate);
2776         YY_BREAK
2777 case 66:
2778 YY_RULE_SETUP
2779 #line 472 "surf/surfxml.l"
2780 {
2781   if (!A_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
2782   if (!A_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
2783   LEAVE; STag_surfxml_cpu();surfxml_pcdata = NULL; ENTER(E_surfxml_cpu);
2784  }
2785         YY_BREAK
2786 case 67:
2787 YY_RULE_SETUP
2788 #line 477 "surf/surfxml.l"
2789 {
2790   if (!A_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
2791   if (!A_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
2792   LEAVE; STag_surfxml_cpu(); surfxml_pcdata = NULL; ETag_surfxml_cpu();
2793   switch (YY_START) {
2794    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2795    case ROOT_surfxml_cpu: SET(EPILOG); break;
2796    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2797   }
2798  }
2799         YY_BREAK
2800 case 68:
2801 YY_RULE_SETUP
2802 #line 487 "surf/surfxml.l"
2803 FAIL("Unexpected character `%c' in attribute list of cpu element.", surf_parse_text[0]);
2804         YY_BREAK
2805 case 69:
2806 YY_RULE_SETUP
2807 #line 488 "surf/surfxml.l"
2808 FAIL("Bad attribute `%s' in `cpu' element start tag.",surf_parse_text);
2809         YY_BREAK
2810 case YY_STATE_EOF(AL_surfxml_cpu):
2811 #line 489 "surf/surfxml.l"
2812 FAIL("EOF in attribute list of `cpu' element.");
2813         YY_BREAK
2814
2815
2816 case 70:
2817 /* rule 70 can match eol */
2818 YY_RULE_SETUP
2819 #line 493 "surf/surfxml.l"
2820 {
2821   LEAVE;
2822   ETag_surfxml_cpu();
2823   switch (YY_START) {
2824    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2825    case ROOT_surfxml_cpu: SET(EPILOG); break;
2826    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2827   }
2828  }
2829         YY_BREAK
2830 case 71:
2831 /* rule 71 can match eol */
2832 YY_RULE_SETUP
2833 #line 502 "surf/surfxml.l"
2834 FAIL("Unexpected end-tag `%s': `</cpu>' expected.",surf_parse_text);
2835         YY_BREAK
2836 case 72:
2837 YY_RULE_SETUP
2838 #line 503 "surf/surfxml.l"
2839 FAIL("Unexpected character `%c': `</cpu>' expected.",surf_parse_text[0]);
2840         YY_BREAK
2841 case YY_STATE_EOF(E_surfxml_cpu):
2842 #line 504 "surf/surfxml.l"
2843 FAIL("Premature EOF: `</cpu>' expected.");
2844         YY_BREAK
2845
2846 case 73:
2847 /* rule 73 can match eol */
2848 YY_RULE_SETUP
2849 #line 507 "surf/surfxml.l"
2850 {
2851   A_surfxml_network_link_name = NULL;
2852   A_surfxml_network_link_bandwidth = NULL;
2853   A_surfxml_network_link_bandwidth_file = NULL;
2854   A_surfxml_network_link_latency = "0.0";
2855   A_surfxml_network_link_latency_file = NULL;
2856   A_surfxml_network_link_state = A_surfxml_network_link_state_ON;
2857   A_surfxml_network_link_state_file = NULL;
2858   A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
2859   ENTER(AL_surfxml_network_link);
2860   }
2861         YY_BREAK
2862
2863 case 74:
2864 /* rule 74 can match eol */
2865 YY_RULE_SETUP
2866 #line 520 "surf/surfxml.l"
2867 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_name);
2868         YY_BREAK
2869 case 75:
2870 /* rule 75 can match eol */
2871 YY_RULE_SETUP
2872 #line 521 "surf/surfxml.l"
2873 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_name);
2874         YY_BREAK
2875 case 76:
2876 /* rule 76 can match eol */
2877 YY_RULE_SETUP
2878 #line 523 "surf/surfxml.l"
2879 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_bandwidth);
2880         YY_BREAK
2881 case 77:
2882 /* rule 77 can match eol */
2883 YY_RULE_SETUP
2884 #line 524 "surf/surfxml.l"
2885 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_bandwidth);
2886         YY_BREAK
2887 case 78:
2888 /* rule 78 can match eol */
2889 YY_RULE_SETUP
2890 #line 526 "surf/surfxml.l"
2891 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_bandwidth_file);
2892         YY_BREAK
2893 case 79:
2894 /* rule 79 can match eol */
2895 YY_RULE_SETUP
2896 #line 527 "surf/surfxml.l"
2897 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_bandwidth_file);
2898         YY_BREAK
2899 case 80:
2900 /* rule 80 can match eol */
2901 YY_RULE_SETUP
2902 #line 529 "surf/surfxml.l"
2903 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_latency);
2904         YY_BREAK
2905 case 81:
2906 /* rule 81 can match eol */
2907 YY_RULE_SETUP
2908 #line 530 "surf/surfxml.l"
2909 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_latency);
2910         YY_BREAK
2911 case 82:
2912 /* rule 82 can match eol */
2913 YY_RULE_SETUP
2914 #line 532 "surf/surfxml.l"
2915 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_latency_file);
2916         YY_BREAK
2917 case 83:
2918 /* rule 83 can match eol */
2919 YY_RULE_SETUP
2920 #line 533 "surf/surfxml.l"
2921 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_latency_file);
2922         YY_BREAK
2923 case 84:
2924 /* rule 84 can match eol */
2925 #line 536 "surf/surfxml.l"
2926 case 85:
2927 /* rule 85 can match eol */
2928 YY_RULE_SETUP
2929 #line 536 "surf/surfxml.l"
2930 A_surfxml_network_link_state = A_surfxml_network_link_state_ON;
2931         YY_BREAK
2932 case 86:
2933 /* rule 86 can match eol */
2934 #line 538 "surf/surfxml.l"
2935 case 87:
2936 /* rule 87 can match eol */
2937 YY_RULE_SETUP
2938 #line 538 "surf/surfxml.l"
2939 A_surfxml_network_link_state = A_surfxml_network_link_state_OFF;
2940         YY_BREAK
2941 case 88:
2942 /* rule 88 can match eol */
2943 YY_RULE_SETUP
2944 #line 540 "surf/surfxml.l"
2945 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_state_file);
2946         YY_BREAK
2947 case 89:
2948 /* rule 89 can match eol */
2949 YY_RULE_SETUP
2950 #line 541 "surf/surfxml.l"
2951 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_state_file);
2952         YY_BREAK
2953 case 90:
2954 /* rule 90 can match eol */
2955 #line 544 "surf/surfxml.l"
2956 case 91:
2957 /* rule 91 can match eol */
2958 YY_RULE_SETUP
2959 #line 544 "surf/surfxml.l"
2960 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
2961         YY_BREAK
2962 case 92:
2963 /* rule 92 can match eol */
2964 #line 546 "surf/surfxml.l"
2965 case 93:
2966 /* rule 93 can match eol */
2967 YY_RULE_SETUP
2968 #line 546 "surf/surfxml.l"
2969 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_FATPIPE;
2970         YY_BREAK
2971 case 94:
2972 YY_RULE_SETUP
2973 #line 548 "surf/surfxml.l"
2974 {
2975   if (!A_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
2976   if (!A_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
2977   LEAVE; STag_surfxml_network_link();surfxml_pcdata = NULL; ENTER(E_surfxml_network_link);
2978  }
2979         YY_BREAK
2980 case 95:
2981 YY_RULE_SETUP
2982 #line 553 "surf/surfxml.l"
2983 {
2984   if (!A_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
2985   if (!A_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
2986   LEAVE; STag_surfxml_network_link(); surfxml_pcdata = NULL; ETag_surfxml_network_link();
2987   switch (YY_START) {
2988    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2989    case ROOT_surfxml_network_link: SET(EPILOG); break;
2990    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2991   }
2992  }
2993         YY_BREAK
2994 case 96:
2995 YY_RULE_SETUP
2996 #line 563 "surf/surfxml.l"
2997 FAIL("Unexpected character `%c' in attribute list of network_link element.", surf_parse_text[0]);
2998         YY_BREAK
2999 case 97:
3000 YY_RULE_SETUP
3001 #line 564 "surf/surfxml.l"
3002 FAIL("Bad attribute `%s' in `network_link' element start tag.",surf_parse_text);
3003         YY_BREAK
3004 case YY_STATE_EOF(AL_surfxml_network_link):
3005 #line 565 "surf/surfxml.l"
3006 FAIL("EOF in attribute list of `network_link' element.");
3007         YY_BREAK
3008
3009
3010 case 98:
3011 /* rule 98 can match eol */
3012 YY_RULE_SETUP
3013 #line 569 "surf/surfxml.l"
3014 {
3015   LEAVE;
3016   ETag_surfxml_network_link();
3017   switch (YY_START) {
3018    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3019    case ROOT_surfxml_network_link: SET(EPILOG); break;
3020    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3021   }
3022  }
3023         YY_BREAK
3024 case 99:
3025 /* rule 99 can match eol */
3026 YY_RULE_SETUP
3027 #line 578 "surf/surfxml.l"
3028 FAIL("Unexpected end-tag `%s': `</network_link>' expected.",surf_parse_text);
3029         YY_BREAK
3030 case 100:
3031 YY_RULE_SETUP
3032 #line 579 "surf/surfxml.l"
3033 FAIL("Unexpected character `%c': `</network_link>' expected.",surf_parse_text[0]);
3034         YY_BREAK
3035 case YY_STATE_EOF(E_surfxml_network_link):
3036 #line 580 "surf/surfxml.l"
3037 FAIL("Premature EOF: `</network_link>' expected.");
3038         YY_BREAK
3039
3040 case 101:
3041 /* rule 101 can match eol */
3042 YY_RULE_SETUP
3043 #line 583 "surf/surfxml.l"
3044 {
3045   A_surfxml_route_src = NULL;
3046   A_surfxml_route_dst = NULL;
3047   A_surfxml_route_impact_on_src = "0.0";
3048   A_surfxml_route_impact_on_dst = "0.0";
3049   A_surfxml_route_impact_on_src_with_other_recv = "0.0";
3050   A_surfxml_route_impact_on_dst_with_other_send = "0.0";
3051   ENTER(AL_surfxml_route);
3052   }
3053         YY_BREAK
3054
3055 case 102:
3056 /* rule 102 can match eol */
3057 YY_RULE_SETUP
3058 #line 594 "surf/surfxml.l"
3059 ENTER(VALUE1); BUFFERSET(A_surfxml_route_src);
3060         YY_BREAK
3061 case 103:
3062 /* rule 103 can match eol */
3063 YY_RULE_SETUP
3064 #line 595 "surf/surfxml.l"
3065 ENTER(VALUE2); BUFFERSET(A_surfxml_route_src);
3066         YY_BREAK
3067 case 104:
3068 /* rule 104 can match eol */
3069 YY_RULE_SETUP
3070 #line 597 "surf/surfxml.l"
3071 ENTER(VALUE1); BUFFERSET(A_surfxml_route_dst);
3072         YY_BREAK
3073 case 105:
3074 /* rule 105 can match eol */
3075 YY_RULE_SETUP
3076 #line 598 "surf/surfxml.l"
3077 ENTER(VALUE2); BUFFERSET(A_surfxml_route_dst);
3078         YY_BREAK
3079 case 106:
3080 /* rule 106 can match eol */
3081 YY_RULE_SETUP
3082 #line 600 "surf/surfxml.l"
3083 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_src);
3084         YY_BREAK
3085 case 107:
3086 /* rule 107 can match eol */
3087 YY_RULE_SETUP
3088 #line 601 "surf/surfxml.l"
3089 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_src);
3090         YY_BREAK
3091 case 108:
3092 /* rule 108 can match eol */
3093 YY_RULE_SETUP
3094 #line 603 "surf/surfxml.l"
3095 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_dst);
3096         YY_BREAK
3097 case 109:
3098 /* rule 109 can match eol */
3099 YY_RULE_SETUP
3100 #line 604 "surf/surfxml.l"
3101 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_dst);
3102         YY_BREAK
3103 case 110:
3104 /* rule 110 can match eol */
3105 YY_RULE_SETUP
3106 #line 606 "surf/surfxml.l"
3107 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_src_with_other_recv);
3108         YY_BREAK
3109 case 111:
3110 /* rule 111 can match eol */
3111 YY_RULE_SETUP
3112 #line 607 "surf/surfxml.l"
3113 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_src_with_other_recv);
3114         YY_BREAK
3115 case 112:
3116 /* rule 112 can match eol */
3117 YY_RULE_SETUP
3118 #line 609 "surf/surfxml.l"
3119 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_dst_with_other_send);
3120         YY_BREAK
3121 case 113:
3122 /* rule 113 can match eol */
3123 YY_RULE_SETUP
3124 #line 610 "surf/surfxml.l"
3125 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_dst_with_other_send);
3126         YY_BREAK
3127 case 114:
3128 YY_RULE_SETUP
3129 #line 612 "surf/surfxml.l"
3130 {
3131   if (!A_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3132   if (!A_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3133   LEAVE; STag_surfxml_route();surfxml_pcdata = NULL; ENTER(S_surfxml_route);
3134  }
3135         YY_BREAK
3136 case 115:
3137 YY_RULE_SETUP
3138 #line 617 "surf/surfxml.l"
3139 {
3140   if (!A_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3141   if (!A_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3142   LEAVE; STag_surfxml_route(); surfxml_pcdata = NULL; ETag_surfxml_route();
3143   switch (YY_START) {
3144    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3145    case ROOT_surfxml_route: SET(EPILOG); break;
3146    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3147   }
3148  }
3149         YY_BREAK
3150 case 116:
3151 YY_RULE_SETUP
3152 #line 627 "surf/surfxml.l"
3153 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
3154         YY_BREAK
3155 case 117:
3156 YY_RULE_SETUP
3157 #line 628 "surf/surfxml.l"
3158 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
3159         YY_BREAK
3160 case YY_STATE_EOF(AL_surfxml_route):
3161 #line 629 "surf/surfxml.l"
3162 FAIL("EOF in attribute list of `route' element.");
3163         YY_BREAK
3164
3165
3166 case 118:
3167 /* rule 118 can match eol */
3168 YY_RULE_SETUP
3169 #line 633 "surf/surfxml.l"
3170 {
3171   LEAVE;
3172   ETag_surfxml_route();
3173   switch (YY_START) {
3174    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3175    case ROOT_surfxml_route: SET(EPILOG); break;
3176    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3177   }
3178  }
3179         YY_BREAK
3180 case 119:
3181 /* rule 119 can match eol */
3182 YY_RULE_SETUP
3183 #line 642 "surf/surfxml.l"
3184 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
3185         YY_BREAK
3186 case 120:
3187 YY_RULE_SETUP
3188 #line 643 "surf/surfxml.l"
3189 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
3190         YY_BREAK
3191 case YY_STATE_EOF(S_surfxml_route):
3192 case YY_STATE_EOF(S_surfxml_route_2):
3193 case YY_STATE_EOF(E_surfxml_route):
3194 #line 644 "surf/surfxml.l"
3195 FAIL("Premature EOF: `</route>' expected.");
3196         YY_BREAK
3197
3198 case 121:
3199 /* rule 121 can match eol */
3200 YY_RULE_SETUP
3201 #line 647 "surf/surfxml.l"
3202 {
3203   A_surfxml_route_element_name = NULL;
3204   ENTER(AL_surfxml_route_element);
3205   }
3206         YY_BREAK
3207
3208 case 122:
3209 /* rule 122 can match eol */
3210 YY_RULE_SETUP
3211 #line 653 "surf/surfxml.l"
3212 ENTER(VALUE1); BUFFERSET(A_surfxml_route_element_name);
3213         YY_BREAK
3214 case 123:
3215 /* rule 123 can match eol */
3216 YY_RULE_SETUP
3217 #line 654 "surf/surfxml.l"
3218 ENTER(VALUE2); BUFFERSET(A_surfxml_route_element_name);
3219         YY_BREAK
3220 case 124:
3221 YY_RULE_SETUP
3222 #line 656 "surf/surfxml.l"
3223 {
3224   if (!A_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3225   LEAVE; STag_surfxml_route_element();surfxml_pcdata = NULL; ENTER(E_surfxml_route_element);
3226  }
3227         YY_BREAK
3228 case 125:
3229 YY_RULE_SETUP
3230 #line 660 "surf/surfxml.l"
3231 {
3232   if (!A_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3233   LEAVE; STag_surfxml_route_element(); surfxml_pcdata = NULL; ETag_surfxml_route_element();
3234   switch (YY_START) {
3235    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3236    case ROOT_surfxml_route_element: SET(EPILOG); break;
3237   }
3238  }
3239         YY_BREAK
3240 case 126:
3241 YY_RULE_SETUP
3242 #line 668 "surf/surfxml.l"
3243 FAIL("Unexpected character `%c' in attribute list of route_element element.", surf_parse_text[0]);
3244         YY_BREAK
3245 case 127:
3246 YY_RULE_SETUP
3247 #line 669 "surf/surfxml.l"
3248 FAIL("Bad attribute `%s' in `route_element' element start tag.",surf_parse_text);
3249         YY_BREAK
3250 case YY_STATE_EOF(AL_surfxml_route_element):
3251 #line 670 "surf/surfxml.l"
3252 FAIL("EOF in attribute list of `route_element' element.");
3253         YY_BREAK
3254
3255
3256 case 128:
3257 /* rule 128 can match eol */
3258 YY_RULE_SETUP
3259 #line 674 "surf/surfxml.l"
3260 {
3261   LEAVE;
3262   ETag_surfxml_route_element();
3263   switch (YY_START) {
3264    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3265    case ROOT_surfxml_route_element: SET(EPILOG); break;
3266   }
3267  }
3268         YY_BREAK
3269 case 129:
3270 /* rule 129 can match eol */
3271 YY_RULE_SETUP
3272 #line 682 "surf/surfxml.l"
3273 FAIL("Unexpected end-tag `%s': `</route_element>' expected.",surf_parse_text);
3274         YY_BREAK
3275 case 130:
3276 YY_RULE_SETUP
3277 #line 683 "surf/surfxml.l"
3278 FAIL("Unexpected character `%c': `</route_element>' expected.",surf_parse_text[0]);
3279         YY_BREAK
3280 case YY_STATE_EOF(E_surfxml_route_element):
3281 #line 684 "surf/surfxml.l"
3282 FAIL("Premature EOF: `</route_element>' expected.");
3283         YY_BREAK
3284
3285 case 131:
3286 /* rule 131 can match eol */
3287 YY_RULE_SETUP
3288 #line 687 "surf/surfxml.l"
3289 {
3290   A_surfxml_process_host = NULL;
3291   A_surfxml_process_function = NULL;
3292   A_surfxml_process_start_time = "-1.0";
3293   A_surfxml_process_kill_time = "-1.0";
3294   ENTER(AL_surfxml_process);
3295   }
3296         YY_BREAK
3297
3298 case 132:
3299 /* rule 132 can match eol */
3300 YY_RULE_SETUP
3301 #line 696 "surf/surfxml.l"
3302 ENTER(VALUE1); BUFFERSET(A_surfxml_process_host);
3303         YY_BREAK
3304 case 133:
3305 /* rule 133 can match eol */
3306 YY_RULE_SETUP
3307 #line 697 "surf/surfxml.l"
3308 ENTER(VALUE2); BUFFERSET(A_surfxml_process_host);
3309         YY_BREAK
3310 case 134:
3311 /* rule 134 can match eol */
3312 YY_RULE_SETUP
3313 #line 699 "surf/surfxml.l"
3314 ENTER(VALUE1); BUFFERSET(A_surfxml_process_function);
3315         YY_BREAK
3316 case 135:
3317 /* rule 135 can match eol */
3318 YY_RULE_SETUP
3319 #line 700 "surf/surfxml.l"
3320 ENTER(VALUE2); BUFFERSET(A_surfxml_process_function);
3321         YY_BREAK
3322 case 136:
3323 /* rule 136 can match eol */
3324 YY_RULE_SETUP
3325 #line 702 "surf/surfxml.l"
3326 ENTER(VALUE1); BUFFERSET(A_surfxml_process_start_time);
3327         YY_BREAK
3328 case 137:
3329 /* rule 137 can match eol */
3330 YY_RULE_SETUP
3331 #line 703 "surf/surfxml.l"
3332 ENTER(VALUE2); BUFFERSET(A_surfxml_process_start_time);
3333         YY_BREAK
3334 case 138:
3335 /* rule 138 can match eol */
3336 YY_RULE_SETUP
3337 #line 705 "surf/surfxml.l"
3338 ENTER(VALUE1); BUFFERSET(A_surfxml_process_kill_time);
3339         YY_BREAK
3340 case 139:
3341 /* rule 139 can match eol */
3342 YY_RULE_SETUP
3343 #line 706 "surf/surfxml.l"
3344 ENTER(VALUE2); BUFFERSET(A_surfxml_process_kill_time);
3345         YY_BREAK
3346 case 140:
3347 YY_RULE_SETUP
3348 #line 708 "surf/surfxml.l"
3349 {
3350   if (!A_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3351   if (!A_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3352   LEAVE; STag_surfxml_process();surfxml_pcdata = NULL; ENTER(S_surfxml_process);
3353  }
3354         YY_BREAK
3355 case 141:
3356 YY_RULE_SETUP
3357 #line 713 "surf/surfxml.l"
3358 {
3359   if (!A_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3360   if (!A_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3361   LEAVE; STag_surfxml_process(); surfxml_pcdata = NULL; ETag_surfxml_process();
3362   switch (YY_START) {
3363    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3364    case ROOT_surfxml_process: SET(EPILOG); break;
3365    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3366   }
3367  }
3368         YY_BREAK
3369 case 142:
3370 YY_RULE_SETUP
3371 #line 723 "surf/surfxml.l"
3372 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
3373         YY_BREAK
3374 case 143:
3375 YY_RULE_SETUP
3376 #line 724 "surf/surfxml.l"
3377 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
3378         YY_BREAK
3379 case YY_STATE_EOF(AL_surfxml_process):
3380 #line 725 "surf/surfxml.l"
3381 FAIL("EOF in attribute list of `process' element.");
3382         YY_BREAK
3383
3384
3385 case 144:
3386 /* rule 144 can match eol */
3387 YY_RULE_SETUP
3388 #line 729 "surf/surfxml.l"
3389 {
3390   LEAVE;
3391   ETag_surfxml_process();
3392   switch (YY_START) {
3393    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3394    case ROOT_surfxml_process: SET(EPILOG); break;
3395    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3396   }
3397  }
3398         YY_BREAK
3399 case 145:
3400 /* rule 145 can match eol */
3401 YY_RULE_SETUP
3402 #line 738 "surf/surfxml.l"
3403 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
3404         YY_BREAK
3405 case 146:
3406 YY_RULE_SETUP
3407 #line 739 "surf/surfxml.l"
3408 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
3409         YY_BREAK
3410 case YY_STATE_EOF(S_surfxml_process):
3411 case YY_STATE_EOF(E_surfxml_process):
3412 case YY_STATE_EOF(S_surfxml_process_2):
3413 #line 740 "surf/surfxml.l"
3414 FAIL("Premature EOF: `</process>' expected.");
3415         YY_BREAK
3416
3417 case 147:
3418 /* rule 147 can match eol */
3419 YY_RULE_SETUP
3420 #line 743 "surf/surfxml.l"
3421 {
3422   A_surfxml_argument_value = NULL;
3423   ENTER(AL_surfxml_argument);
3424   }
3425         YY_BREAK
3426
3427 case 148:
3428 /* rule 148 can match eol */
3429 YY_RULE_SETUP
3430 #line 749 "surf/surfxml.l"
3431 ENTER(VALUE1); BUFFERSET(A_surfxml_argument_value);
3432         YY_BREAK
3433 case 149:
3434 /* rule 149 can match eol */
3435 YY_RULE_SETUP
3436 #line 750 "surf/surfxml.l"
3437 ENTER(VALUE2); BUFFERSET(A_surfxml_argument_value);
3438         YY_BREAK
3439 case 150:
3440 YY_RULE_SETUP
3441 #line 752 "surf/surfxml.l"
3442 {
3443   if (!A_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3444   LEAVE; STag_surfxml_argument();surfxml_pcdata = NULL; ENTER(E_surfxml_argument);
3445  }
3446         YY_BREAK
3447 case 151:
3448 YY_RULE_SETUP
3449 #line 756 "surf/surfxml.l"
3450 {
3451   if (!A_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3452   LEAVE; STag_surfxml_argument(); surfxml_pcdata = NULL; ETag_surfxml_argument();
3453   switch (YY_START) {
3454    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3455    case ROOT_surfxml_argument: SET(EPILOG); break;
3456   }
3457  }
3458         YY_BREAK
3459 case 152:
3460 YY_RULE_SETUP
3461 #line 764 "surf/surfxml.l"
3462 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
3463         YY_BREAK
3464 case 153:
3465 YY_RULE_SETUP
3466 #line 765 "surf/surfxml.l"
3467 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
3468         YY_BREAK
3469 case YY_STATE_EOF(AL_surfxml_argument):
3470 #line 766 "surf/surfxml.l"
3471 FAIL("EOF in attribute list of `argument' element.");
3472         YY_BREAK
3473
3474
3475 case 154:
3476 /* rule 154 can match eol */
3477 YY_RULE_SETUP
3478 #line 770 "surf/surfxml.l"
3479 {
3480   LEAVE;
3481   ETag_surfxml_argument();
3482   switch (YY_START) {
3483    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3484    case ROOT_surfxml_argument: SET(EPILOG); break;
3485   }
3486  }
3487         YY_BREAK
3488 case 155:
3489 /* rule 155 can match eol */
3490 YY_RULE_SETUP
3491 #line 778 "surf/surfxml.l"
3492 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
3493         YY_BREAK
3494 case 156:
3495 YY_RULE_SETUP
3496 #line 779 "surf/surfxml.l"
3497 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
3498         YY_BREAK
3499 case YY_STATE_EOF(E_surfxml_argument):
3500 #line 780 "surf/surfxml.l"
3501 FAIL("Premature EOF: `</argument>' expected.");
3502         YY_BREAK
3503
3504 /* EPILOG: after the root element. */
3505
3506 case 157:
3507 YY_RULE_SETUP
3508 #line 786 "surf/surfxml.l"
3509 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
3510         YY_BREAK
3511 case YY_STATE_EOF(EPILOG):
3512 #line 787 "surf/surfxml.l"
3513 SUCCEED;
3514         YY_BREAK
3515
3516 /* CHARACTER DATA. */
3517
3518 /* Non-defined standard entities... */
3519 case 158:
3520 YY_RULE_SETUP
3521 #line 794 "surf/surfxml.l"
3522 BUFFERPUTC('&');
3523         YY_BREAK
3524 case 159:
3525 YY_RULE_SETUP
3526 #line 795 "surf/surfxml.l"
3527 BUFFERPUTC('<');
3528         YY_BREAK
3529 case 160:
3530 YY_RULE_SETUP
3531 #line 796 "surf/surfxml.l"
3532 BUFFERPUTC('>');
3533         YY_BREAK
3534 case 161:
3535 YY_RULE_SETUP
3536 #line 797 "surf/surfxml.l"
3537 BUFFERPUTC('\'');
3538         YY_BREAK
3539 case 162:
3540 YY_RULE_SETUP
3541 #line 798 "surf/surfxml.l"
3542 BUFFERPUTC('"');
3543         YY_BREAK
3544 /* Character entities. */
3545 case 163:
3546 YY_RULE_SETUP
3547 #line 801 "surf/surfxml.l"
3548 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
3549         YY_BREAK
3550 case 164:
3551 YY_RULE_SETUP
3552 #line 802 "surf/surfxml.l"
3553 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
3554         YY_BREAK
3555
3556
3557 case 165:
3558 /* rule 165 can match eol */
3559 #line 807 "surf/surfxml.l"
3560 case 166:
3561 /* rule 166 can match eol */
3562 #line 808 "surf/surfxml.l"
3563 case 167:
3564 /* rule 167 can match eol */
3565 #line 809 "surf/surfxml.l"
3566 case 168:
3567 /* rule 168 can match eol */
3568 YY_RULE_SETUP
3569 #line 809 "surf/surfxml.l"
3570 BUFFERPUTC('\n');
3571         YY_BREAK
3572
3573
3574 case 169:
3575 YY_RULE_SETUP
3576 #line 813 "surf/surfxml.l"
3577 ENTER(CDATA);
3578         YY_BREAK
3579 case 170:
3580 YY_RULE_SETUP
3581 #line 814 "surf/surfxml.l"
3582 FAIL("Unexpected `]""]>' in character data.");
3583         YY_BREAK
3584
3585
3586 case 171:
3587 YY_RULE_SETUP
3588 #line 818 "surf/surfxml.l"
3589 BUFFERDONE; LEAVE;
3590         YY_BREAK
3591 case YY_STATE_EOF(VALUE1):
3592 #line 819 "surf/surfxml.l"
3593 FAIL("EOF in literal (\"'\" expected).");
3594         YY_BREAK
3595
3596
3597 case 172:
3598 YY_RULE_SETUP
3599 #line 823 "surf/surfxml.l"
3600 BUFFERDONE; LEAVE;
3601         YY_BREAK
3602 case YY_STATE_EOF(VALUE2):
3603 #line 824 "surf/surfxml.l"
3604 FAIL("EOF in literal (`\"' expected).");
3605         YY_BREAK
3606
3607
3608 case 173:
3609 /* rule 173 can match eol */
3610 YY_RULE_SETUP
3611 #line 828 "surf/surfxml.l"
3612 BUFFERPUTC(surf_parse_text[0]);
3613         YY_BREAK
3614 case 174:
3615 YY_RULE_SETUP
3616 #line 829 "surf/surfxml.l"
3617 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
3618         YY_BREAK
3619
3620
3621 case 175:
3622 YY_RULE_SETUP
3623 #line 833 "surf/surfxml.l"
3624 LEAVE;
3625         YY_BREAK
3626 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
3627 case 176:
3628 YY_RULE_SETUP
3629 #line 835 "surf/surfxml.l"
3630 BUFFERPUTC(surf_parse_text[0]);
3631         YY_BREAK
3632 case YY_STATE_EOF(CDATA):
3633 #line 836 "surf/surfxml.l"
3634 FAIL("EOF in CDATA section.");
3635         YY_BREAK
3636
3637 /* Impossible rules to avoid warnings from flex(1). */
3638 /* Ideally, this should be replaced by code in flexml.pl that
3639     generates just the states not covered by other rules. */
3640
3641 case 177:
3642 /* rule 177 can match eol */
3643 YY_RULE_SETUP
3644 #line 843 "surf/surfxml.l"
3645 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
3646         YY_BREAK
3647
3648 case 178:
3649 YY_RULE_SETUP
3650 #line 846 "surf/surfxml.l"
3651 ECHO;
3652         YY_BREAK
3653 #line 3654 "surf/surfxml.c"
3654 case YY_STATE_EOF(INITIAL):
3655 case YY_STATE_EOF(ROOT_surfxml_platform_description):
3656 case YY_STATE_EOF(S_surfxml_platform_description_1):
3657 case YY_STATE_EOF(ROOT_surfxml_include):
3658 case YY_STATE_EOF(S_surfxml_include_1):
3659 case YY_STATE_EOF(ROOT_surfxml_cpu):
3660 case YY_STATE_EOF(ROOT_surfxml_network_link):
3661 case YY_STATE_EOF(ROOT_surfxml_route):
3662 case YY_STATE_EOF(S_surfxml_route_1):
3663 case YY_STATE_EOF(ROOT_surfxml_route_element):
3664 case YY_STATE_EOF(ROOT_surfxml_process):
3665 case YY_STATE_EOF(S_surfxml_process_1):
3666 case YY_STATE_EOF(ROOT_surfxml_argument):
3667 case YY_STATE_EOF(IMPOSSIBLE):
3668         yyterminate();
3669
3670         case YY_END_OF_BUFFER:
3671                 {
3672                 /* Amount of text matched not including the EOB char. */
3673                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3674
3675                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3676                 *yy_cp = (yy_hold_char);
3677                 YY_RESTORE_YY_MORE_OFFSET
3678
3679                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3680                         {
3681                         /* We're scanning a new file or input source.  It's
3682                          * possible that this happened because the user
3683                          * just pointed surf_parse_in at a new source and called
3684                          * surf_parse_lex().  If so, then we have to assure
3685                          * consistency between YY_CURRENT_BUFFER and our
3686                          * globals.  Here is the right place to do so, because
3687                          * this is the first action (other than possibly a
3688                          * back-up) that will match for the new input source.
3689                          */
3690                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3691                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
3692                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3693                         }
3694
3695                 /* Note that here we test for yy_c_buf_p "<=" to the position
3696                  * of the first EOB in the buffer, since yy_c_buf_p will
3697                  * already have been incremented past the NUL character
3698                  * (since all states make transitions on EOB to the
3699                  * end-of-buffer state).  Contrast this with the test
3700                  * in input().
3701                  */
3702                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3703                         { /* This was really a NUL. */
3704                         yy_state_type yy_next_state;
3705
3706                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3707
3708                         yy_current_state = yy_get_previous_state(  );
3709
3710                         /* Okay, we're now positioned to make the NUL
3711                          * transition.  We couldn't have
3712                          * yy_get_previous_state() go ahead and do it
3713                          * for us because it doesn't know how to deal
3714                          * with the possibility of jamming (and we don't
3715                          * want to build jamming into it because then it
3716                          * will run more slowly).
3717                          */
3718
3719                         yy_next_state = yy_try_NUL_trans( yy_current_state );
3720
3721                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3722
3723                         if ( yy_next_state )
3724                                 {
3725                                 /* Consume the NUL. */
3726                                 yy_cp = ++(yy_c_buf_p);
3727                                 yy_current_state = yy_next_state;
3728                                 goto yy_match;
3729                                 }
3730
3731                         else
3732                                 {
3733                                 yy_cp = (yy_c_buf_p);
3734                                 goto yy_find_action;
3735                                 }
3736                         }
3737
3738                 else switch ( yy_get_next_buffer(  ) )
3739                         {
3740                         case EOB_ACT_END_OF_FILE:
3741                                 {
3742                                 (yy_did_buffer_switch_on_eof) = 0;
3743
3744                                 if ( surf_parse_wrap( ) )
3745                                         {
3746                                         /* Note: because we've taken care in
3747                                          * yy_get_next_buffer() to have set up
3748                                          * surf_parse_text, we can now set up
3749                                          * yy_c_buf_p so that if some total
3750                                          * hoser (like flex itself) wants to
3751                                          * call the scanner after we return the
3752                                          * YY_NULL, it'll still work - another
3753                                          * YY_NULL will get returned.
3754                                          */
3755                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3756
3757                                         yy_act = YY_STATE_EOF(YY_START);
3758                                         goto do_action;
3759                                         }
3760
3761                                 else
3762                                         {
3763                                         if ( ! (yy_did_buffer_switch_on_eof) )
3764                                                 YY_NEW_FILE;
3765                                         }
3766                                 break;
3767                                 }
3768
3769                         case EOB_ACT_CONTINUE_SCAN:
3770                                 (yy_c_buf_p) =
3771                                         (yytext_ptr) + yy_amount_of_matched_text;
3772
3773                                 yy_current_state = yy_get_previous_state(  );
3774
3775                                 yy_cp = (yy_c_buf_p);
3776                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3777                                 goto yy_match;
3778
3779                         case EOB_ACT_LAST_MATCH:
3780                                 (yy_c_buf_p) =
3781                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3782
3783                                 yy_current_state = yy_get_previous_state(  );
3784
3785                                 yy_cp = (yy_c_buf_p);
3786                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3787                                 goto yy_find_action;
3788                         }
3789                 break;
3790                 }
3791
3792         default:
3793                 YY_FATAL_ERROR(
3794                         "fatal flex scanner internal error--no action found" );
3795         } /* end of action switch */
3796                 } /* end of scanning one token */
3797 } /* end of surf_parse_lex */
3798
3799 /* yy_get_next_buffer - try to read in a new buffer
3800  *
3801  * Returns a code representing an action:
3802  *      EOB_ACT_LAST_MATCH -
3803  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3804  *      EOB_ACT_END_OF_FILE - end of file
3805  */
3806 static int yy_get_next_buffer (void)
3807 {
3808         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3809         register char *source = (yytext_ptr);
3810         register int number_to_move, i;
3811         int ret_val;
3812
3813         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3814                 YY_FATAL_ERROR(
3815                 "fatal flex scanner internal error--end of buffer missed" );
3816
3817         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3818                 { /* Don't try to fill the buffer, so this is an EOF. */
3819                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3820                         {
3821                         /* We matched a single character, the EOB, so
3822                          * treat this as a final EOF.
3823                          */
3824                         return EOB_ACT_END_OF_FILE;
3825                         }
3826
3827                 else
3828                         {
3829                         /* We matched some text prior to the EOB, first
3830                          * process it.
3831                          */
3832                         return EOB_ACT_LAST_MATCH;
3833                         }
3834                 }
3835
3836         /* Try to read more data. */
3837
3838         /* First move last chars to start of buffer. */
3839         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3840
3841         for ( i = 0; i < number_to_move; ++i )
3842                 *(dest++) = *(source++);
3843
3844         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3845                 /* don't do the read, it's not guaranteed to return an EOF,
3846                  * just force an EOF
3847                  */
3848                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3849
3850         else
3851                 {
3852                         int num_to_read =
3853                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3854
3855                 while ( num_to_read <= 0 )
3856                         { /* Not enough room in the buffer - grow it. */
3857
3858                         /* just a shorter name for the current buffer */
3859                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
3860
3861                         int yy_c_buf_p_offset =
3862                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
3863
3864                         if ( b->yy_is_our_buffer )
3865                                 {
3866                                 int new_size = b->yy_buf_size * 2;
3867
3868                                 if ( new_size <= 0 )
3869                                         b->yy_buf_size += b->yy_buf_size / 8;
3870                                 else
3871                                         b->yy_buf_size *= 2;
3872
3873                                 b->yy_ch_buf = (char *)
3874                                         /* Include room in for 2 EOB chars. */
3875                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
3876                                 }
3877                         else
3878                                 /* Can't grow it, we don't own it. */
3879                                 b->yy_ch_buf = 0;
3880
3881                         if ( ! b->yy_ch_buf )
3882                                 YY_FATAL_ERROR(
3883                                 "fatal error - scanner input buffer overflow" );
3884
3885                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
3886
3887                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3888                                                 number_to_move - 1;
3889
3890                         }
3891
3892                 if ( num_to_read > YY_READ_BUF_SIZE )
3893                         num_to_read = YY_READ_BUF_SIZE;
3894
3895                 /* Read in more data. */
3896                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3897                         (yy_n_chars), num_to_read );
3898
3899                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3900                 }
3901
3902         if ( (yy_n_chars) == 0 )
3903                 {
3904                 if ( number_to_move == YY_MORE_ADJ )
3905                         {
3906                         ret_val = EOB_ACT_END_OF_FILE;
3907                         surf_parse_restart(surf_parse_in  );
3908                         }
3909
3910                 else
3911                         {
3912                         ret_val = EOB_ACT_LAST_MATCH;
3913                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3914                                 YY_BUFFER_EOF_PENDING;
3915                         }
3916                 }
3917
3918         else
3919                 ret_val = EOB_ACT_CONTINUE_SCAN;
3920
3921         (yy_n_chars) += number_to_move;
3922         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3923         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3924
3925         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3926
3927         return ret_val;
3928 }
3929
3930 /* yy_get_previous_state - get the state just before the EOB char was reached */
3931
3932     static yy_state_type yy_get_previous_state (void)
3933 {
3934         register yy_state_type yy_current_state;
3935         register char *yy_cp;
3936     
3937         yy_current_state = (yy_start);
3938
3939         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3940                 {
3941                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3942                 if ( yy_accept[yy_current_state] )
3943                         {
3944                         (yy_last_accepting_state) = yy_current_state;
3945                         (yy_last_accepting_cpos) = yy_cp;
3946                         }
3947                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3948                         {
3949                         yy_current_state = (int) yy_def[yy_current_state];
3950                         if ( yy_current_state >= 1345 )
3951                                 yy_c = yy_meta[(unsigned int) yy_c];
3952                         }
3953                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3954                 }
3955
3956         return yy_current_state;
3957 }
3958
3959 /* yy_try_NUL_trans - try to make a transition on the NUL character
3960  *
3961  * synopsis
3962  *      next_state = yy_try_NUL_trans( current_state );
3963  */
3964     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
3965 {
3966         register int yy_is_jam;
3967         register char *yy_cp = (yy_c_buf_p);
3968
3969         register YY_CHAR yy_c = 1;
3970         if ( yy_accept[yy_current_state] )
3971                 {
3972                 (yy_last_accepting_state) = yy_current_state;
3973                 (yy_last_accepting_cpos) = yy_cp;
3974                 }
3975         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3976                 {
3977                 yy_current_state = (int) yy_def[yy_current_state];
3978                 if ( yy_current_state >= 1345 )
3979                         yy_c = yy_meta[(unsigned int) yy_c];
3980                 }
3981         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3982         yy_is_jam = (yy_current_state == 1344);
3983
3984         return yy_is_jam ? 0 : yy_current_state;
3985 }
3986
3987 #ifndef YY_NO_INPUT
3988 #ifdef __cplusplus
3989     static int yyinput (void)
3990 #else
3991     static int input  (void)
3992 #endif
3993
3994 {
3995         int c;
3996     
3997         *(yy_c_buf_p) = (yy_hold_char);
3998
3999         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
4000                 {
4001                 /* yy_c_buf_p now points to the character we want to return.
4002                  * If this occurs *before* the EOB characters, then it's a
4003                  * valid NUL; if not, then we've hit the end of the buffer.
4004                  */
4005                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4006                         /* This was really a NUL. */
4007                         *(yy_c_buf_p) = '\0';
4008
4009                 else
4010                         { /* need more input */
4011                         int offset = (yy_c_buf_p) - (yytext_ptr);
4012                         ++(yy_c_buf_p);
4013
4014                         switch ( yy_get_next_buffer(  ) )
4015                                 {
4016                                 case EOB_ACT_LAST_MATCH:
4017                                         /* This happens because yy_g_n_b()
4018                                          * sees that we've accumulated a
4019                                          * token and flags that we need to
4020                                          * try matching the token before
4021                                          * proceeding.  But for input(),
4022                                          * there's no matching to consider.
4023                                          * So convert the EOB_ACT_LAST_MATCH
4024                                          * to EOB_ACT_END_OF_FILE.
4025                                          */
4026
4027                                         /* Reset buffer status. */
4028                                         surf_parse_restart(surf_parse_in );
4029
4030                                         /*FALLTHROUGH*/
4031
4032                                 case EOB_ACT_END_OF_FILE:
4033                                         {
4034                                         if ( surf_parse_wrap( ) )
4035                                                 return EOF;
4036
4037                                         if ( ! (yy_did_buffer_switch_on_eof) )
4038                                                 YY_NEW_FILE;
4039 #ifdef __cplusplus
4040                                         return yyinput();
4041 #else
4042                                         return input();
4043 #endif
4044                                         }
4045
4046                                 case EOB_ACT_CONTINUE_SCAN:
4047                                         (yy_c_buf_p) = (yytext_ptr) + offset;
4048                                         break;
4049                                 }
4050                         }
4051                 }
4052
4053         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
4054         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
4055         (yy_hold_char) = *++(yy_c_buf_p);
4056
4057         if ( c == '\n' )
4058                    
4059     surf_parse_lineno++;
4060 ;
4061
4062         return c;
4063 }
4064 #endif  /* ifndef YY_NO_INPUT */
4065
4066 /** Immediately switch to a different input stream.
4067  * @param input_file A readable stream.
4068  * 
4069  * @note This function does not reset the start condition to @c INITIAL .
4070  */
4071     void surf_parse_restart  (FILE * input_file )
4072 {
4073     
4074         if ( ! YY_CURRENT_BUFFER ){
4075         surf_parse_ensure_buffer_stack ();
4076                 YY_CURRENT_BUFFER_LVALUE =
4077             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
4078         }
4079
4080         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
4081         surf_parse__load_buffer_state( );
4082 }
4083
4084 /** Switch to a different input buffer.
4085  * @param new_buffer The new input buffer.
4086  * 
4087  */
4088     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
4089 {
4090     
4091         /* TODO. We should be able to replace this entire function body
4092          * with
4093          *              surf_parse_pop_buffer_state();
4094          *              surf_parse_push_buffer_state(new_buffer);
4095      */
4096         surf_parse_ensure_buffer_stack ();
4097         if ( YY_CURRENT_BUFFER == new_buffer )
4098                 return;
4099
4100         if ( YY_CURRENT_BUFFER )
4101                 {
4102                 /* Flush out information for old buffer. */
4103                 *(yy_c_buf_p) = (yy_hold_char);
4104                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4105                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4106                 }
4107
4108         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4109         surf_parse__load_buffer_state( );
4110
4111         /* We don't actually know whether we did this switch during
4112          * EOF (surf_parse_wrap()) processing, but the only time this flag
4113          * is looked at is after surf_parse_wrap() is called, so it's safe
4114          * to go ahead and always set it.
4115          */
4116         (yy_did_buffer_switch_on_eof) = 1;
4117 }
4118
4119 static void surf_parse__load_buffer_state  (void)
4120 {
4121         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4122         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4123         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4124         (yy_hold_char) = *(yy_c_buf_p);
4125 }
4126
4127 /** Allocate and initialize an input buffer state.
4128  * @param file A readable stream.
4129  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4130  * 
4131  * @return the allocated buffer state.
4132  */
4133     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
4134 {
4135         YY_BUFFER_STATE b;
4136     
4137         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4138         if ( ! b )
4139                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4140
4141         b->yy_buf_size = size;
4142
4143         /* yy_ch_buf has to be 2 characters longer than the size given because
4144          * we need to put in 2 end-of-buffer characters.
4145          */
4146         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
4147         if ( ! b->yy_ch_buf )
4148                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4149
4150         b->yy_is_our_buffer = 1;
4151
4152         surf_parse__init_buffer(b,file );
4153
4154         return b;
4155 }
4156
4157 /** Destroy the buffer.
4158  * @param b a buffer created with surf_parse__create_buffer()
4159  * 
4160  */
4161     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
4162 {
4163     
4164         if ( ! b )
4165                 return;
4166
4167         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4168                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4169
4170         if ( b->yy_is_our_buffer )
4171                 surf_parse_free((void *) b->yy_ch_buf  );
4172
4173         surf_parse_free((void *) b  );
4174 }
4175
4176 #ifndef __cplusplus
4177 extern int isatty (int );
4178 #endif /* __cplusplus */
4179     
4180 /* Initializes or reinitializes a buffer.
4181  * This function is sometimes called more than once on the same buffer,
4182  * such as during a surf_parse_restart() or at EOF.
4183  */
4184     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
4185
4186 {
4187         int oerrno = errno;
4188     
4189         surf_parse__flush_buffer(b );
4190
4191         b->yy_input_file = file;
4192         b->yy_fill_buffer = 1;
4193
4194     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
4195      * called from surf_parse_restart() or through yy_get_next_buffer.
4196      * In that case, we don't want to reset the lineno or column.
4197      */
4198     if (b != YY_CURRENT_BUFFER){
4199         b->yy_bs_lineno = 1;
4200         b->yy_bs_column = 0;
4201     }
4202
4203         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4204     
4205         errno = oerrno;
4206 }
4207
4208 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4209  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4210  * 
4211  */
4212     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
4213 {
4214         if ( ! b )
4215                 return;
4216
4217         b->yy_n_chars = 0;
4218
4219         /* We always need two end-of-buffer characters.  The first causes
4220          * a transition to the end-of-buffer state.  The second causes
4221          * a jam in that state.
4222          */
4223         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4224         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4225
4226         b->yy_buf_pos = &b->yy_ch_buf[0];
4227
4228         b->yy_at_bol = 1;
4229         b->yy_buffer_status = YY_BUFFER_NEW;
4230
4231         if ( b == YY_CURRENT_BUFFER )
4232                 surf_parse__load_buffer_state( );
4233 }
4234
4235 /** Pushes the new state onto the stack. The new state becomes
4236  *  the current state. This function will allocate the stack
4237  *  if necessary.
4238  *  @param new_buffer The new state.
4239  *  
4240  */
4241 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
4242 {
4243         if (new_buffer == NULL)
4244                 return;
4245
4246         surf_parse_ensure_buffer_stack();
4247
4248         /* This block is copied from surf_parse__switch_to_buffer. */
4249         if ( YY_CURRENT_BUFFER )
4250                 {
4251                 /* Flush out information for old buffer. */
4252                 *(yy_c_buf_p) = (yy_hold_char);
4253                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4254                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4255                 }
4256
4257         /* Only push if top exists. Otherwise, replace top. */
4258         if (YY_CURRENT_BUFFER)
4259                 (yy_buffer_stack_top)++;
4260         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4261
4262         /* copied from surf_parse__switch_to_buffer. */
4263         surf_parse__load_buffer_state( );
4264         (yy_did_buffer_switch_on_eof) = 1;
4265 }
4266
4267 /** Removes and deletes the top of the stack, if present.
4268  *  The next element becomes the new top.
4269  *  
4270  */
4271 void surf_parse_pop_buffer_state (void)
4272 {
4273         if (!YY_CURRENT_BUFFER)
4274                 return;
4275
4276         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
4277         YY_CURRENT_BUFFER_LVALUE = NULL;
4278         if ((yy_buffer_stack_top) > 0)
4279                 --(yy_buffer_stack_top);
4280
4281         if (YY_CURRENT_BUFFER) {
4282                 surf_parse__load_buffer_state( );
4283                 (yy_did_buffer_switch_on_eof) = 1;
4284         }
4285 }
4286
4287 /* Allocates the stack if it does not exist.
4288  *  Guarantees space for at least one push.
4289  */
4290 static void surf_parse_ensure_buffer_stack (void)
4291 {
4292         int num_to_alloc;
4293     
4294         if (!(yy_buffer_stack)) {
4295
4296                 /* First allocation is just for 2 elements, since we don't know if this
4297                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4298                  * immediate realloc on the next call.
4299          */
4300                 num_to_alloc = 1;
4301                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
4302                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
4303                                                                 );
4304                 
4305                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4306                                 
4307                 (yy_buffer_stack_max) = num_to_alloc;
4308                 (yy_buffer_stack_top) = 0;
4309                 return;
4310         }
4311
4312         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4313
4314                 /* Increase the buffer to prepare for a possible push. */
4315                 int grow_size = 8 /* arbitrary grow size */;
4316
4317                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4318                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
4319                                                                 ((yy_buffer_stack),
4320                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
4321                                                                 );
4322
4323                 /* zero only the new slots.*/
4324                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4325                 (yy_buffer_stack_max) = num_to_alloc;
4326         }
4327 }
4328
4329 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4330  * @param base the character buffer
4331  * @param size the size in bytes of the character buffer
4332  * 
4333  * @return the newly allocated buffer state object. 
4334  */
4335 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
4336 {
4337         YY_BUFFER_STATE b;
4338     
4339         if ( size < 2 ||
4340              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4341              base[size-1] != YY_END_OF_BUFFER_CHAR )
4342                 /* They forgot to leave room for the EOB's. */
4343                 return 0;
4344
4345         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4346         if ( ! b )
4347                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
4348
4349         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4350         b->yy_buf_pos = b->yy_ch_buf = base;
4351         b->yy_is_our_buffer = 0;
4352         b->yy_input_file = 0;
4353         b->yy_n_chars = b->yy_buf_size;
4354         b->yy_is_interactive = 0;
4355         b->yy_at_bol = 1;
4356         b->yy_fill_buffer = 0;
4357         b->yy_buffer_status = YY_BUFFER_NEW;
4358
4359         surf_parse__switch_to_buffer(b  );
4360
4361         return b;
4362 }
4363
4364 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
4365  * scan from a @e copy of @a str.
4366  * @param str a NUL-terminated string to scan
4367  * 
4368  * @return the newly allocated buffer state object.
4369  * @note If you want to scan bytes that may contain NUL values, then use
4370  *       surf_parse__scan_bytes() instead.
4371  */
4372 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yy_str )
4373 {
4374     
4375         return surf_parse__scan_bytes(yy_str,strlen(yy_str) );
4376 }
4377
4378 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
4379  * scan from a @e copy of @a bytes.
4380  * @param bytes the byte buffer to scan
4381  * @param len the number of bytes in the buffer pointed to by @a bytes.
4382  * 
4383  * @return the newly allocated buffer state object.
4384  */
4385 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * bytes, int  len )
4386 {
4387         YY_BUFFER_STATE b;
4388         char *buf;
4389         yy_size_t n;
4390         int i;
4391     
4392         /* Get memory for full buffer, including space for trailing EOB's. */
4393         n = len + 2;
4394         buf = (char *) surf_parse_alloc(n  );
4395         if ( ! buf )
4396                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
4397
4398         for ( i = 0; i < len; ++i )
4399                 buf[i] = bytes[i];
4400
4401         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
4402
4403         b = surf_parse__scan_buffer(buf,n );
4404         if ( ! b )
4405                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
4406
4407         /* It's okay to grow etc. this buffer, and we should throw it
4408          * away when we're done.
4409          */
4410         b->yy_is_our_buffer = 1;
4411
4412         return b;
4413 }
4414
4415     static void yy_push_state (int  new_state )
4416 {
4417         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4418                 {
4419                 yy_size_t new_size;
4420
4421                 (yy_start_stack_depth) += YY_START_STACK_INCR;
4422                 new_size = (yy_start_stack_depth) * sizeof( int );
4423
4424                 if ( ! (yy_start_stack) )
4425                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
4426
4427                 else
4428                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
4429
4430                 if ( ! (yy_start_stack) )
4431                         YY_FATAL_ERROR(
4432                         "out of memory expanding start-condition stack" );
4433                 }
4434
4435         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4436
4437         BEGIN(new_state);
4438 }
4439
4440     static void yy_pop_state  (void)
4441 {
4442         if ( --(yy_start_stack_ptr) < 0 )
4443                 YY_FATAL_ERROR( "start-condition stack underflow" );
4444
4445         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4446 }
4447
4448 #ifndef YY_EXIT_FAILURE
4449 #define YY_EXIT_FAILURE 2
4450 #endif
4451
4452 static void yy_fatal_error (yyconst char* msg )
4453 {
4454         (void) fprintf( stderr, "%s\n", msg );
4455         exit( YY_EXIT_FAILURE );
4456 }
4457
4458 /* Redefine yyless() so it works in section 3 code. */
4459
4460 #undef yyless
4461 #define yyless(n) \
4462         do \
4463                 { \
4464                 /* Undo effects of setting up surf_parse_text. */ \
4465         int yyless_macro_arg = (n); \
4466         YY_LESS_LINENO(yyless_macro_arg);\
4467                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
4468                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
4469                 (yy_hold_char) = *(yy_c_buf_p); \
4470                 *(yy_c_buf_p) = '\0'; \
4471                 surf_parse_leng = yyless_macro_arg; \
4472                 } \
4473         while ( 0 )
4474
4475 /* Accessor  methods (get/set functions) to struct members. */
4476
4477 /** Get the current line number.
4478  * 
4479  */
4480 int surf_parse_get_lineno  (void)
4481 {
4482         
4483     return surf_parse_lineno;
4484 }
4485
4486 /** Get the input stream.
4487  * 
4488  */
4489 FILE *surf_parse_get_in  (void)
4490 {
4491         return surf_parse_in;
4492 }
4493
4494 /** Get the output stream.
4495  * 
4496  */
4497 FILE *surf_parse_get_out  (void)
4498 {
4499         return surf_parse_out;
4500 }
4501
4502 /** Get the length of the current token.
4503  * 
4504  */
4505 int surf_parse_get_leng  (void)
4506 {
4507         return surf_parse_leng;
4508 }
4509
4510 /** Get the current token.
4511  * 
4512  */
4513
4514 char *surf_parse_get_text  (void)
4515 {
4516         return surf_parse_text;
4517 }
4518
4519 /** Set the current line number.
4520  * @param line_number
4521  * 
4522  */
4523 void surf_parse_set_lineno (int  line_number )
4524 {
4525     
4526     surf_parse_lineno = line_number;
4527 }
4528
4529 /** Set the input stream. This does not discard the current
4530  * input buffer.
4531  * @param in_str A readable stream.
4532  * 
4533  * @see surf_parse__switch_to_buffer
4534  */
4535 void surf_parse_set_in (FILE *  in_str )
4536 {
4537         surf_parse_in = in_str ;
4538 }
4539
4540 void surf_parse_set_out (FILE *  out_str )
4541 {
4542         surf_parse_out = out_str ;
4543 }
4544
4545 int surf_parse_get_debug  (void)
4546 {
4547         return surf_parse__flex_debug;
4548 }
4549
4550 void surf_parse_set_debug (int  bdebug )
4551 {
4552         surf_parse__flex_debug = bdebug ;
4553 }
4554
4555 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
4556 int surf_parse_lex_destroy  (void)
4557 {
4558     
4559     /* Pop the buffer stack, destroying each element. */
4560         while(YY_CURRENT_BUFFER){
4561                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
4562                 YY_CURRENT_BUFFER_LVALUE = NULL;
4563                 surf_parse_pop_buffer_state();
4564         }
4565
4566         /* Destroy the stack itself. */
4567         surf_parse_free((yy_buffer_stack) );
4568         (yy_buffer_stack) = NULL;
4569
4570     /* Destroy the start condition stack. */
4571         surf_parse_free((yy_start_stack)  );
4572         (yy_start_stack) = NULL;
4573
4574     return 0;
4575 }
4576
4577 /*
4578  * Internal utility routines.
4579  */
4580
4581 #ifndef yytext_ptr
4582 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4583 {
4584         register int i;
4585         for ( i = 0; i < n; ++i )
4586                 s1[i] = s2[i];
4587 }
4588 #endif
4589
4590 #ifdef YY_NEED_STRLEN
4591 static int yy_flex_strlen (yyconst char * s )
4592 {
4593         register int n;
4594         for ( n = 0; s[n]; ++n )
4595                 ;
4596
4597         return n;
4598 }
4599 #endif
4600
4601 void *surf_parse_alloc (yy_size_t  size )
4602 {
4603         return (void *) malloc( size );
4604 }
4605
4606 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
4607 {
4608         /* The cast to (char *) in the following accommodates both
4609          * implementations that use char* generic pointers, and those
4610          * that use void* generic pointers.  It works with the latter
4611          * because both ANSI C and C++ allow castless assignment from
4612          * any pointer type to void*, and deal with argument conversions
4613          * as though doing an assignment.
4614          */
4615         return (void *) realloc( (char *) ptr, size );
4616 }
4617
4618 void surf_parse_free (void * ptr )
4619 {
4620         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
4621 }
4622
4623 #define YYTABLES_NAME "yytables"
4624
4625 #undef YY_NEW_FILE
4626 #undef YY_FLUSH_BUFFER
4627 #undef yy_set_bol
4628 #undef yy_new_buffer
4629 #undef yy_set_interactive
4630 #undef yytext_ptr
4631 #undef YY_DO_BEFORE_ACTION
4632
4633 #ifdef YY_DECL_IS_OURS
4634 #undef YY_DECL_IS_OURS
4635 #undef YY_DECL
4636 #endif
4637 #line 846 "surf/surfxml.l"
4638
4639
4640
4641 /* Element context stack lookup. */
4642 int surfxml_element_context(int i)
4643 {
4644   return (0<i && i<yy_start_stack_depth
4645           ? yy_start_stack[yy_start_stack_ptr - i]
4646           : 0);
4647 }
4648
4649 #ifdef FLEX_DEBUG
4650 void print_yy_stack(char* fmt, ...)
4651 {
4652   int i = 0; va_list ap; va_start(ap, fmt);
4653   vfprintf(stderr, fmt, ap);
4654   for (i=1; i<yy_start_stack_ptr; i++)
4655     fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
4656   fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
4657   va_end(ap);
4658 }
4659
4660 static void debug_enter(int state, const char* statename) {
4661   yy_push_state(state);
4662   if (surf_parse__flex_debug) print_yy_stack("--ENTER(%s) : ",statename);
4663 }
4664
4665 static void debug_leave(void) {
4666   if (surf_parse__flex_debug) print_yy_stack("--LEAVE : ");
4667   yy_pop_state();
4668 }
4669
4670 static void debug_set(int state, const char* statename) {
4671   BEGIN(state);
4672   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
4673 }
4674 #endif
4675
4676 enum {flexml_max_err_msg_size = 512};
4677
4678 static char flexml_err_msg[flexml_max_err_msg_size];
4679 const char * surfxml_parse_err_msg()
4680 {
4681     return flexml_err_msg;
4682 }
4683
4684 static void reset_surfxml_parse_err_msg()
4685 {
4686     flexml_err_msg[0] = '\0';
4687 }
4688
4689
4690 static void cleanup(void)
4691 {
4692     if (surfxml_statenames) {
4693         free(surfxml_statenames);
4694         surfxml_statenames = NULL;
4695     }
4696 }
4697
4698
4699 static int fail(const char* fmt, ...)
4700 {
4701     int chars_left, used;
4702     va_list ap; va_start(ap, fmt);
4703 #ifdef FLEXML_yylineno
4704     used = sprintf(flexml_err_msg,
4705                    "Invalid XML (XML input line %d, state %d): ",
4706                    surf_parse_lineno, YY_START);
4707 #else
4708     used = sprintf(flexml_err_msg,
4709                    "Invalid XML (state %d): ",
4710                    YY_START);
4711 #endif
4712     chars_left = flexml_max_err_msg_size - used - 1;
4713     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
4714     va_end(ap);
4715
4716 #ifndef FLEXML_quiet_parser
4717     /* print directly to sdterr */
4718     fprintf(stderr, "%s\n", flexml_err_msg);
4719     flexml_err_msg[0] = '\0';
4720 #endif
4721
4722     cleanup();
4723
4724     return 1;
4725 }
4726