Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/commentscan.cpp

Source at commit 1322 created 12 years 8 months ago.
By meklort, Add doxygen to utils folder
1
2#line 3 "<stdout>"
3
4#define YY_INT_ALIGNED short int
5
6/* A lexical scanner generated by flex */
7
8#define yy_create_buffer commentScanYY_create_buffer
9#define yy_delete_buffer commentScanYY_delete_buffer
10#define yy_flex_debug commentScanYY_flex_debug
11#define yy_init_buffer commentScanYY_init_buffer
12#define yy_flush_buffer commentScanYY_flush_buffer
13#define yy_load_buffer_state commentScanYY_load_buffer_state
14#define yy_switch_to_buffer commentScanYY_switch_to_buffer
15#define yyin commentScanYYin
16#define yyleng commentScanYYleng
17#define yylex commentScanYYlex
18#define yylineno commentScanYYlineno
19#define yyout commentScanYYout
20#define yyrestart commentScanYYrestart
21#define yytext commentScanYYtext
22#define yywrap commentScanYYwrap
23#define yyalloc commentScanYYalloc
24#define yyrealloc commentScanYYrealloc
25#define yyfree commentScanYYfree
26
27#define FLEX_SCANNER
28#define YY_FLEX_MAJOR_VERSION 2
29#define YY_FLEX_MINOR_VERSION 5
30#define YY_FLEX_SUBMINOR_VERSION 35
31#if YY_FLEX_SUBMINOR_VERSION > 0
32#define FLEX_BETA
33#endif
34
35/* First, we deal with platform-specific or compiler-specific issues. */
36
37/* begin standard C headers. */
38#include <stdio.h>
39#include <string.h>
40#include <errno.h>
41#include <stdlib.h>
42
43/* end standard C headers. */
44
45/* flex integer type definitions */
46
47#ifndef FLEXINT_H
48#define FLEXINT_H
49
50/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55 * if you want the limit (max/min) macros for int types.
56 */
57#ifndef __STDC_LIMIT_MACROS
58#define __STDC_LIMIT_MACROS 1
59#endif
60
61#include <inttypes.h>
62typedef int8_t flex_int8_t;
63typedef uint8_t flex_uint8_t;
64typedef int16_t flex_int16_t;
65typedef uint16_t flex_uint16_t;
66typedef int32_t flex_int32_t;
67typedef uint32_t flex_uint32_t;
68#else
69typedef signed char flex_int8_t;
70typedef short int flex_int16_t;
71typedef int flex_int32_t;
72typedef unsigned char flex_uint8_t;
73typedef unsigned short int flex_uint16_t;
74typedef unsigned int flex_uint32_t;
75#endif /* ! C99 */
76
77/* Limits of integral types. */
78#ifndef INT8_MIN
79#define INT8_MIN (-128)
80#endif
81#ifndef INT16_MIN
82#define INT16_MIN (-32767-1)
83#endif
84#ifndef INT32_MIN
85#define INT32_MIN (-2147483647-1)
86#endif
87#ifndef INT8_MAX
88#define INT8_MAX (127)
89#endif
90#ifndef INT16_MAX
91#define INT16_MAX (32767)
92#endif
93#ifndef INT32_MAX
94#define INT32_MAX (2147483647)
95#endif
96#ifndef UINT8_MAX
97#define UINT8_MAX (255U)
98#endif
99#ifndef UINT16_MAX
100#define UINT16_MAX (65535U)
101#endif
102#ifndef UINT32_MAX
103#define UINT32_MAX (4294967295U)
104#endif
105
106#endif /* ! FLEXINT_H */
107
108#ifdef __cplusplus
109
110/* The "const" storage-class-modifier is valid. */
111#define YY_USE_CONST
112
113#else/* ! __cplusplus */
114
115/* C99 requires __STDC__ to be defined as 1. */
116#if defined (__STDC__)
117
118#define YY_USE_CONST
119
120#endif/* defined (__STDC__) */
121#endif/* ! __cplusplus */
122
123#ifdef YY_USE_CONST
124#define yyconst const
125#else
126#define yyconst
127#endif
128
129/* Returned upon end-of-file. */
130#define YY_NULL 0
131
132/* Promotes a possibly negative, possibly signed char to an unsigned
133 * integer for use as an array index. If the signed char is negative,
134 * we want to instead treat it as an 8-bit unsigned char, hence the
135 * double cast.
136 */
137#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
138
139/* Enter a start condition. This macro really ought to take a parameter,
140 * but we do it the disgusting crufty way forced on us by the ()-less
141 * definition of BEGIN.
142 */
143#define BEGIN (yy_start) = 1 + 2 *
144
145/* Translate the current start state into a value that can be later handed
146 * to BEGIN to return to the state. The YYSTATE alias is for lex
147 * compatibility.
148 */
149#define YY_START (((yy_start) - 1) / 2)
150#define YYSTATE YY_START
151
152/* Action number for EOF rule of a given start state. */
153#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154
155/* Special action meaning "start processing a new file". */
156#define YY_NEW_FILE commentScanYYrestart(commentScanYYin )
157
158#define YY_END_OF_BUFFER_CHAR 0
159
160/* Size of default input buffer. */
161#ifndef YY_BUF_SIZE
162#define YY_BUF_SIZE 262144
163#endif
164
165/* The state buf must be large enough to hold one state per character in the main buffer.
166 */
167#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
168
169#ifndef YY_TYPEDEF_YY_BUFFER_STATE
170#define YY_TYPEDEF_YY_BUFFER_STATE
171typedef struct yy_buffer_state *YY_BUFFER_STATE;
172#endif
173
174#ifndef YY_TYPEDEF_YY_SIZE_T
175#define YY_TYPEDEF_YY_SIZE_T
176typedef size_t yy_size_t;
177#endif
178
179extern yy_size_t commentScanYYleng;
180
181extern FILE *commentScanYYin, *commentScanYYout;
182
183#define EOB_ACT_CONTINUE_SCAN 0
184#define EOB_ACT_END_OF_FILE 1
185#define EOB_ACT_LAST_MATCH 2
186
187 #define YY_LESS_LINENO(n)
188
189/* Return all but the first "n" matched characters back to the input stream. */
190#define yyless(n) \
191do \
192{ \
193/* Undo effects of setting up commentScanYYtext. */ \
194 int yyless_macro_arg = (n); \
195 YY_LESS_LINENO(yyless_macro_arg);\
196*yy_cp = (yy_hold_char); \
197YY_RESTORE_YY_MORE_OFFSET \
198(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
199YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */ \
200} \
201while ( 0 )
202
203#define unput(c) yyunput( c, (yytext_ptr) )
204
205#ifndef YY_STRUCT_YY_BUFFER_STATE
206#define YY_STRUCT_YY_BUFFER_STATE
207struct yy_buffer_state
208{
209FILE *yy_input_file;
210
211char *yy_ch_buf;/* input buffer */
212char *yy_buf_pos;/* current position in input buffer */
213
214/* Size of input buffer in bytes, not including room for EOB
215 * characters.
216 */
217yy_size_t yy_buf_size;
218
219/* Number of characters read into yy_ch_buf, not including EOB
220 * characters.
221 */
222yy_size_t yy_n_chars;
223
224/* Whether we "own" the buffer - i.e., we know we created it,
225 * and can realloc() it to grow it, and should free() it to
226 * delete it.
227 */
228int yy_is_our_buffer;
229
230/* Whether this is an "interactive" input source; if so, and
231 * if we're using stdio for input, then we want to use getc()
232 * instead of fread(), to make sure we stop fetching input after
233 * each newline.
234 */
235int yy_is_interactive;
236
237/* Whether we're considered to be at the beginning of a line.
238 * If so, '^' rules will be active on the next match, otherwise
239 * not.
240 */
241int yy_at_bol;
242
243 int yy_bs_lineno; /**< The line count. */
244 int yy_bs_column; /**< The column count. */
245
246/* Whether to try to fill the input buffer when we reach the
247 * end of it.
248 */
249int yy_fill_buffer;
250
251int yy_buffer_status;
252
253#define YY_BUFFER_NEW 0
254#define YY_BUFFER_NORMAL 1
255/* When an EOF's been seen but there's still some text to process
256 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
257 * shouldn't try reading from the input source any more. We might
258 * still have a bunch of tokens to match, though, because of
259 * possible backing-up.
260 *
261 * When we actually see the EOF, we change the status to "new"
262 * (via commentScanYYrestart()), so that the user can continue scanning by
263 * just pointing commentScanYYin at a new input file.
264 */
265#define YY_BUFFER_EOF_PENDING 2
266
267};
268#endif /* !YY_STRUCT_YY_BUFFER_STATE */
269
270/* Stack of input buffers. */
271static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
272static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
273static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
274
275/* We provide macros for accessing buffer states in case in the
276 * future we want to put the buffer states in a more general
277 * "scanner state".
278 *
279 * Returns the top of the stack, or NULL.
280 */
281#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
282 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
283 : NULL)
284
285/* Same as previous macro, but useful when we know that the buffer stack is not
286 * NULL or when we need an lvalue. For internal use only.
287 */
288#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
289
290/* yy_hold_char holds the character lost when commentScanYYtext is formed. */
291static char yy_hold_char;
292static yy_size_t yy_n_chars;/* number of characters read into yy_ch_buf */
293yy_size_t commentScanYYleng;
294
295/* Points to current character in buffer. */
296static char *yy_c_buf_p = (char *) 0;
297static int yy_init = 0;/* whether we need to initialize */
298static int yy_start = 0;/* start state number */
299
300/* Flag which is used to allow commentScanYYwrap()'s to do buffer switches
301 * instead of setting up a fresh commentScanYYin. A bit of a hack ...
302 */
303static int yy_did_buffer_switch_on_eof;
304
305void commentScanYYrestart (FILE *input_file );
306void commentScanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer );
307YY_BUFFER_STATE commentScanYY_create_buffer (FILE *file,int size );
308void commentScanYY_delete_buffer (YY_BUFFER_STATE b );
309void commentScanYY_flush_buffer (YY_BUFFER_STATE b );
310void commentScanYYpush_buffer_state (YY_BUFFER_STATE new_buffer );
311void commentScanYYpop_buffer_state (void );
312
313static void commentScanYYensure_buffer_stack (void );
314static void commentScanYY_load_buffer_state (void );
315static void commentScanYY_init_buffer (YY_BUFFER_STATE b,FILE *file );
316
317#define YY_FLUSH_BUFFER commentScanYY_flush_buffer(YY_CURRENT_BUFFER )
318
319YY_BUFFER_STATE commentScanYY_scan_buffer (char *base,yy_size_t size );
320YY_BUFFER_STATE commentScanYY_scan_string (yyconst char *yy_str );
321YY_BUFFER_STATE commentScanYY_scan_bytes (yyconst char *bytes,yy_size_t len );
322
323void *commentScanYYalloc (yy_size_t );
324void *commentScanYYrealloc (void *,yy_size_t );
325void commentScanYYfree (void * );
326
327#define yy_new_buffer commentScanYY_create_buffer
328
329#define yy_set_interactive(is_interactive) \
330{ \
331if ( ! YY_CURRENT_BUFFER ){ \
332 commentScanYYensure_buffer_stack (); \
333YY_CURRENT_BUFFER_LVALUE = \
334 commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE ); \
335} \
336YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
337}
338
339#define yy_set_bol(at_bol) \
340{ \
341if ( ! YY_CURRENT_BUFFER ){\
342 commentScanYYensure_buffer_stack (); \
343YY_CURRENT_BUFFER_LVALUE = \
344 commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE ); \
345} \
346YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
347}
348
349#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
350
351/* Begin user sect3 */
352
353#define commentScanYYwrap(n) 1
354#define YY_SKIP_YYWRAP
355
356typedef unsigned char YY_CHAR;
357
358FILE *commentScanYYin = (FILE *) 0, *commentScanYYout = (FILE *) 0;
359
360typedef int yy_state_type;
361
362extern int commentScanYYlineno;
363
364int commentScanYYlineno = 1;
365
366extern char *commentScanYYtext;
367#define yytext_ptr commentScanYYtext
368
369static yy_state_type yy_get_previous_state (void );
370static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
371static int yy_get_next_buffer (void );
372static void yy_fatal_error (yyconst char msg[] );
373
374/* Done after the current pattern has been matched and before the
375 * corresponding action - sets up commentScanYYtext.
376 */
377#define YY_DO_BEFORE_ACTION \
378(yytext_ptr) = yy_bp; \
379commentScanYYleng = (size_t) (yy_cp - yy_bp); \
380(yy_hold_char) = *yy_cp; \
381*yy_cp = '\0'; \
382(yy_c_buf_p) = yy_cp;
383
384#define YY_NUM_RULES 180
385#define YY_END_OF_BUFFER 181
386/* This struct is not used in this scanner,
387 but its presence is necessary. */
388struct yy_trans_info
389{
390flex_int32_t yy_verify;
391flex_int32_t yy_nxt;
392};
393static yyconst flex_int16_t yy_acclist[743] =
394 { 0,
395 66, 66, 110, 110, 123, 123, 133, 133, 177, 177,
396 181, 180, 34, 180, 34, 180, 33, 180, 34, 180,
397 34, 180, 34, 180, 32, 34, 180, 34, 180, 34,
398 180, 23, 34, 180, 34, 180, 34, 180, 25, 34,
399 180, 32, 34, 180, 79, 180, 78, 180, 79, 180,
400 76, 79, 180, 79, 180, 79, 180, 180, 80, 180,
401 100, 180, 99, 180, 100, 180, 97, 100, 180, 100,
402 180, 61, 180, 61, 180, 60, 180, 61, 180, 61,
403 180, 61, 180, 57, 61, 180, 61, 180, 61, 180,
404 65, 180, 64, 180, 65, 180, 62, 65, 180, 65,
405
406 180, 65, 180, 65, 180, 69, 180, 68, 180, 69,
407 180, 66, 69, 180, 69, 180, 66, 69, 180, 66,
408 69, 180, 69, 180, 61, 180, 60, 180, 61, 180,
409 61, 180, 61, 180, 61, 180, 61, 180, 88, 180,
410 87, 180, 85, 88, 180, 88, 180, 92, 180, 91,
411 180, 92, 180, 92, 180, 96, 180, 95, 180, 96,
412 180, 96, 180, 84, 180, 81, 180, 84, 180, 82,
413 84, 180, 84, 180, 84, 180, 48, 180, 47, 180,
414 48, 180, 45, 48, 180, 48, 180, 52, 180, 52,
415 180, 51, 180, 52, 180, 52, 180, 52, 180, 49,
416
417 52, 180, 52, 180, 52, 180, 56, 180, 55, 180,
418 56, 180, 53, 56, 180, 56, 180, 72, 180, 70,
419 180, 180, 74, 180, 75, 180, 180, 106, 180, 105,
420 180, 104, 106, 180, 106, 180, 110, 113, 180, 107,
421 180, 110, 113, 180, 113, 180, 113, 180, 115, 180,
422 114, 180, 180, 118, 180, 118, 180, 116, 180, 118,
423 180, 118, 180, 123, 127, 180, 124, 180, 127, 180,
424 127, 180, 127, 180, 127, 180, 127, 180, 103, 180,
425 101, 180, 103, 180, 131, 180, 129, 180, 128, 131,
426 180, 131, 180, 134, 180, 133, 134, 180, 132, 180,
427
428 134, 180, 141, 142, 180, 140, 180, 142, 180, 142,
429 180, 142, 180, 152, 153, 180, 143, 180, 153, 180,
430 153, 180, 153, 180, 156, 180, 154, 180, 156, 180,
431 160, 180, 158, 180, 157, 160, 180, 160, 180, 163,
432 166, 180, 161, 180, 164, 166, 180, 165, 166, 180,
433 166, 180, 166, 180, 169, 180, 167, 180, 169, 180,
434 172, 180, 171, 180, 172, 180, 170, 172, 180, 172,
435 180, 175, 180, 174, 180, 175, 180, 173, 175, 180,
436 175, 180, 42, 44, 180, 43, 180, 44, 180, 44,
437 180, 121, 180, 120, 180, 119, 121, 180, 121, 180,
438
439 37, 38, 180, 36, 180, 38, 180, 38, 180, 177,
440 179, 180, 178, 180, 179, 180, 179, 180, 179, 180,
441 31, 4, 26, 28, 26, 22, 22, 14, 22, 14,
442 14, 14, 14, 14, 14, 20, 21, 16, 22, 23,
443 14, 14, 14, 14, 14, 14, 14, 14, 25, 24,
444 76, 76, 77, 76, 80, 97, 97, 98, 57, 57,
445 59, 57, 62, 62, 63, 62, 66, 66, 66, 67,
446 66, 85, 86, 89, 90, 94, 93, 94, 82, 82,
447 83, 82, 45, 45, 45, 46, 49, 49, 50, 49,
448 53, 53, 54, 70, 71, 74, 73, 104, 110, 107,
449
450 110, 112, 112, 109, 114, 117, 123, 126, 125, 102,
451 128, 130, 133, 132, 141, 152, 155, 157, 159, 163,
452 162, 168, 170, 170, 173, 173, 42, 119, 37, 177,
453 176, 22, 30, 26, 30, 30, 30, 26, 30, 30,
454 27, 7, 1, 1, 2, 14, 14, 14, 14, 18,
455 19, 14, 14, 14, 16, 5, 14, 14, 14, 14,
456 14, 14, 14, 76, 76, 57, 62, 62, 66, 66,
457 82, 82, 45, 45, 45, 45, 49, 53, 111, 39,
458 40, 41, 35, 176, 30, 30, 12, 1, 15, 2,
459 8198, 14,16390, 14, 14, 14, 14, 14, 14, 8198,
460
461 14,16390, 14, 14, 14, 14, 14, 76, 62, 66,
462 58, 82, 45, 45, 45, 53, 111, 136, 144, 35,
463 11, 29, 8198, 8198, 14, 14, 14, 17, 14, 14,
464 5, 8198, 14, 14, 14, 76, 62, 66, 82, 3,
465 14, 14, 17, 14, 14, 14, 14, 14, 76, 62,
466 66, 82, 70, 138, 146, 14, 14, 14, 14, 14,
467 14, 14, 76, 62, 66, 82, 137, 135, 145, 14,
468 14, 14, 14, 14, 14, 14, 76, 78, 99, 60,
469 62, 64, 66, 68, 87, 91, 95, 81, 82, 47,
470 51, 55, 72, 75, 105, 108, 115, 116, 122, 124,
471
472 101, 129, 139, 140, 143, 154, 158, 161, 167, 171,
473 174, 120, 36, 178, 9, 8, 14, 14, 14, 5,
474 14, 14, 147, 10, 14, 14, 14, 14, 14, 14,
475 150, 13, 14, 13, 14, 151, 148, 13, 14, 151,
476 149, 31
477 } ;
478
479static yyconst flex_int16_t yy_accept[1055] =
480 { 0,
481 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
482 1, 1, 1, 1, 1, 2, 3, 3, 3, 3,
483 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
484 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
485 5, 5, 5, 5, 5, 6, 7, 7, 7, 7,
486 7, 8, 9, 9, 9, 9, 9, 9, 9, 9,
487 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
488 9, 9, 9, 9, 9, 9, 9, 10, 11, 12,
489 13, 15, 17, 19, 21, 23, 25, 28, 30, 32,
490 35, 37, 39, 42, 45, 47, 49, 51, 54, 56,
491
492 58, 59, 61, 63, 65, 67, 70, 72, 74, 76,
493 78, 80, 82, 84, 87, 89, 91, 93, 95, 97,
494 100, 102, 104, 106, 108, 110, 112, 115, 117, 120,
495 123, 125, 127, 129, 131, 133, 135, 137, 139, 141,
496 143, 146, 148, 150, 152, 154, 156, 158, 160, 162,
497 164, 166, 168, 170, 173, 175, 177, 179, 181, 183,
498 186, 188, 190, 192, 194, 196, 198, 200, 203, 205,
499 207, 209, 211, 213, 216, 218, 220, 222, 223, 225,
500 227, 228, 230, 232, 235, 237, 240, 242, 245, 247,
501 249, 251, 253, 254, 256, 258, 260, 262, 264, 267,
502
503 269, 271, 273, 275, 277, 279, 281, 283, 285, 287,
504 289, 292, 294, 296, 299, 301, 303, 306, 308, 310,
505 312, 314, 317, 319, 321, 323, 325, 327, 329, 331,
506 333, 335, 338, 340, 343, 345, 348, 351, 353, 355,
507 357, 359, 361, 363, 365, 367, 370, 372, 374, 376,
508 378, 381, 383, 386, 388, 390, 392, 394, 396, 399,
509 401, 404, 406, 408, 410, 413, 415, 417, 419, 421,
510 421, 421, 421, 421, 422, 422, 422, 423, 423, 423,
511 423, 423, 424, 425, 425, 426, 426, 426, 426, 426,
512 426, 426, 426, 426, 426, 426, 426, 426, 427, 428,
513
514 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
515 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
516 449, 450, 450, 450, 451, 451, 452, 453, 453, 453,
517 453, 454, 455, 455, 456, 457, 457, 458, 458, 458,
518 459, 459, 459, 459, 459, 459, 460, 460, 460, 461,
519 461, 462, 462, 462, 462, 463, 463, 464, 465, 465,
520 465, 465, 466, 467, 467, 468, 469, 469, 469, 470,
521 470, 470, 471, 472, 472, 472, 472, 472, 472, 472,
522 472, 472, 472, 472, 472, 472, 472, 473, 473, 474,
523 474, 474, 475, 475, 477, 477, 477, 478, 478, 479,
524
525 479, 479, 480, 481, 481, 481, 481, 482, 483, 484,
526 484, 484, 485, 485, 486, 486, 487, 487, 487, 487,
527 487, 487, 488, 488, 488, 489, 489, 490, 490, 490,
528 490, 491, 492, 492, 493, 493, 494, 494, 495, 495,
529 495, 496, 496, 497, 497, 498, 498, 499, 499, 500,
530 501, 502, 502, 503, 504, 504, 505, 505, 506, 506,
531 506, 506, 506, 507, 507, 508, 509, 510, 510, 510,
532 510, 511, 511, 512, 512, 513, 513, 514, 515, 515,
533 515, 516, 516, 516, 516, 517, 517, 517, 517, 517,
534 517, 517, 518, 518, 519, 519, 520, 520, 521, 521,
535
536 522, 522, 522, 523, 523, 524, 524, 525, 525, 525,
537 526, 526, 527, 527, 527, 528, 528, 528, 529, 529,
538 530, 530, 530, 531, 532, 532, 533, 533, 533, 533,
539 533, 534, 536, 537, 538, 540, 541, 542, 542, 542,
540 542, 542, 542, 542, 543, 543, 543, 543, 543, 544,
541 545, 546, 547, 548, 549, 550, 551, 552, 552, 553,
542 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
543 564, 565, 565, 566, 566, 566, 566, 567, 568, 568,
544 569, 570, 570, 571, 571, 571, 571, 571, 571, 571,
545 572, 572, 573, 574, 575, 576, 577, 577, 577, 578,
546
547 578, 579, 579, 579, 579, 579, 579, 579, 580, 580,
548 580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
549 580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
550 580, 580, 580, 580, 580, 581, 582, 583, 583, 583,
551 584, 584, 585, 585, 585, 585, 585, 585, 586, 587,
552 588, 588, 588, 588, 588, 588, 588, 588, 589, 590,
553 591, 594, 595, 596, 596, 597, 598, 599, 599, 600,
554 603, 604, 605, 606, 607, 608, 609, 609, 609, 610,
555 611, 612, 612, 612, 612, 613, 613, 614, 615, 616,
556 616, 616, 617, 617, 617, 617, 617, 617, 618, 618,
557
558 618, 618, 618, 618, 618, 618, 618, 618, 618, 619,
559 619, 619, 619, 620, 620, 620, 620, 620, 620, 620,
560 620, 620, 620, 620, 620, 620, 621, 621, 621, 621,
561 622, 622, 622, 623, 623, 623, 623, 623, 623, 624,
562 626, 627, 628, 629, 630, 631, 633, 634, 635, 636,
563 637, 637, 637, 638, 639, 639, 639, 639, 640, 640,
564 640, 640, 640, 640, 640, 640, 640, 640, 640, 640,
565 640, 640, 640, 640, 640, 640, 640, 640, 640, 640,
566 640, 640, 640, 640, 640, 640, 640, 640, 640, 640,
567 640, 640, 640, 640, 640, 640, 640, 640, 640, 640,
568
569 640, 640, 641, 641, 641, 641, 641, 642, 643, 644,
570 645, 646, 647, 648, 649, 650, 650, 650, 651, 652,
571 652, 652, 652, 653, 653, 653, 653, 653, 653, 654,
572 654, 654, 654, 654, 654, 654, 654, 654, 654, 654,
573 654, 654, 654, 654, 654, 654, 654, 654, 654, 655,
574 655, 655, 655, 655, 656, 656, 656, 656, 656, 656,
575 656, 656, 656, 656, 656, 656, 656, 656, 656, 656,
576 656, 656, 656, 656, 656, 656, 657, 658, 659, 660,
577 661, 662, 663, 664, 664, 664, 665, 666, 666, 666,
578 666, 667, 667, 667, 667, 667, 667, 667, 667, 667,
579
580 667, 667, 667, 667, 667, 667, 667, 667, 667, 667,
581 667, 667, 667, 667, 668, 669, 669, 669, 670, 670,
582 670, 670, 670, 670, 670, 670, 670, 670, 670, 670,
583 670, 670, 670, 670, 670, 670, 670, 670, 671, 672,
584 673, 674, 675, 676, 677, 679, 680, 681, 683, 685,
585 686, 687, 688, 690, 691, 692, 693, 694, 695, 696,
586 697, 698, 699, 700, 700, 700, 700, 700, 700, 700,
587 701, 702, 703, 704, 705, 705, 705, 705, 705, 705,
588 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
589 715, 715, 716, 717, 718, 719, 720, 721, 722, 723,
590
591 723, 723, 723, 723, 723, 723, 723, 723, 724, 724,
592 724, 725, 726, 727, 727, 728, 729, 729, 729, 729,
593 729, 729, 729, 729, 729, 729, 729, 730, 730, 731,
594 731, 731, 731, 731, 732, 732, 732, 734, 734, 736,
595 736, 737, 738, 738, 740, 740, 741, 741, 741, 741,
596 741, 742, 743, 743
597 } ;
598
599static yyconst flex_int32_t yy_ec[256] =
600 { 0,
601 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
602 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
603 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
604 1, 5, 6, 7, 8, 9, 8, 8, 1, 10,
605 11, 12, 13, 14, 15, 16, 17, 18, 19, 19,
606 19, 19, 19, 19, 18, 18, 18, 20, 1, 21,
607 1, 22, 1, 23, 24, 25, 26, 27, 28, 26,
608 29, 30, 31, 26, 26, 32, 33, 26, 34, 35,
609 26, 36, 26, 37, 38, 26, 26, 26, 26, 26,
610 39, 40, 41, 1, 42, 1, 43, 44, 45, 46,
611
612 47, 48, 49, 50, 51, 26, 52, 53, 54, 55,
613 56, 57, 26, 58, 59, 60, 61, 62, 26, 63,
614 64, 26, 65, 1, 66, 67, 1, 68, 68, 68,
615 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
616 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
617 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
618 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
619 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
620 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
621 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
622
623 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
624 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
625 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
626 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
627 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
628 68, 68, 68, 68, 68
629 } ;
630
631static yyconst flex_int32_t yy_meta[69] =
632 { 0,
633 1, 2, 3, 4, 5, 1, 1, 6, 7, 8,
634 9, 10, 11, 12, 13, 14, 15, 16, 16, 17,
635 6, 18, 19, 20, 20, 20, 20, 20, 20, 20,
636 20, 20, 20, 20, 20, 20, 20, 20, 1, 21,
637 1, 22, 20, 20, 20, 20, 20, 20, 20, 20,
638 23, 20, 20, 20, 24, 20, 20, 20, 20, 20,
639 20, 20, 20, 20, 6, 25, 26, 27
640 } ;
641
642static yyconst flex_int16_t yy_base[1259] =
643 { 0,
644 0, 0, 0, 67, 83, 150, 4487, 4481, 217, 0,
645 285, 0, 353, 420, 487, 554, 621, 0, 689, 0,
646 67, 68, 70, 73, 757, 824, 891, 0, 959, 0,
647 1027, 0, 1095, 0, 99, 106, 1163, 0, 162, 165,
648 1231, 0, 123, 129, 374, 393, 75, 76, 1299, 0,
649 135, 139, 173, 377, 441, 442, 93, 95, 1367, 0,
650 460, 502, 140, 142, 1435, 0, 1503, 0, 412, 435,
651 499, 508, 1571, 0, 363, 368, 511, 566, 4483, 7500,
652 7500, 527, 399, 4470, 4442, 4401, 568, 1634, 1688, 185,
653 1748, 770, 4374, 846, 7500, 7500, 4386, 167, 433, 797,
654
655 4389, 7500, 7500, 7500, 0, 101, 464, 7500, 190, 452,
656 785, 1639, 4368, 583, 474, 515, 7500, 7500, 4379, 775,
657 838, 4363, 1684, 7500, 7500, 4377, 1630, 1659, 1698, 7500,
658 1742, 868, 1763, 1771, 1796, 4362, 1815, 607, 7500, 7500,
659 0, 538, 7500, 7500, 4374, 779, 7500, 7500, 4371, 801,
660 7500, 7500, 4370, 1637, 1723, 1824, 7500, 7500, 0, 1849,
661 1747, 7500, 1845, 1868, 1873, 1892, 4353, 1900, 1801, 872,
662 7500, 7500, 0, 4355, 1857, 7500, 4354, 1904, 0, 7500,
663 1908, 7500, 7500, 0, 4327, 369, 7500, 4328, 1909, 1975,
664 7500, 0, 4325, 7500, 207, 7500, 4359, 4323, 0, 7500,
665
666 7500, 4347, 4351, 4315, 72, 7500, 7500, 1919, 7500, 7500,
667 0, 1923, 7500, 533, 7500, 4319, 0, 7500, 7500, 337,
668 348, 0, 7500, 7500, 545, 1666, 7500, 7500, 1931, 7500,
669 7500, 0, 1939, 0, 7500, 7500, 7500, 7500, 1949, 7500,
670 7500, 1953, 7500, 7500, 0, 369, 4318, 7500, 7500, 0,
671 391, 4316, 0, 7500, 4304, 4303, 7500, 7500, 0, 4305,
672 0, 7500, 4330, 4302, 0, 7500, 7500, 4274, 144, 1805,
673 2035, 2095, 1834, 1961, 4297, 4331, 7500, 0, 4317, 4313,
674 0, 7500, 7500, 2162, 4312, 446, 4318, 354, 565, 1630,
675 833, 1630, 1966, 77, 1650, 4285, 4264, 7500, 320, 2229,
676
677 4254, 4258, 4271, 4261, 803, 474, 4257, 7500, 7500, 0,
678 1990, 1658, 1967, 1985, 1987, 2009, 2014, 2030, 2026, 2036,
679 7500, 542, 612, 7500, 4306, 7500, 2020, 1702, 2045, 806,
680 7500, 2052, 4309, 7500, 458, 4302, 464, 4290, 877, 7500,
681 4256, 2091, 2120, 4288, 2128, 2188, 2110, 2216, 2194, 1728,
682 7500, 4253, 2147, 2237, 0, 4293, 7500, 2195, 2070, 2227,
683 1819, 7500, 2237, 4292, 4271, 2239, 2169, 2246, 7500, 4279,
684 1878, 7500, 2258, 2268, 2297, 4240, 2305, 2324, 2328, 2343,
685 2351, 0, 2371, 2375, 2390, 1776, 0, 2045, 7500, 4203,
686 4248, 7500, 2086, 7500, 4196, 4241, 7500, 2136, 7500, 4189,
687
688 4209, 7500, 2265, 2272, 2299, 2152, 7500, 2349, 2402, 2410,
689 0, 2414, 4192, 2422, 2162, 7500, 4158, 2433, 2441, 4187,
690 2460, 2468, 2487, 2495, 2514, 2221, 7500, 4152, 2519, 2533,
691 0, 4188, 4194, 4186, 2333, 7500, 4148, 4184, 4149, 2355,
692 7500, 4145, 0, 2380, 7500, 4144, 0, 4143, 1790, 7500,
693 4155, 4152, 7500, 4183, 2395, 7500, 4133, 0, 4132, 1885,
694 4174, 4172, 7500, 4125, 0, 7500, 7500, 4120, 4120, 2449,
695 7500, 4119, 0, 2453, 7500, 4118, 2472, 7500, 4128, 4116,
696 0, 74, 4120, 4114, 0, 4111, 4111, 4112, 806, 4100,
697 2476, 7500, 4099, 0, 2480, 7500, 4097, 0, 2500, 7500,
698
699 4096, 2504, 7500, 4094, 517, 4137, 585, 4125, 4091, 800,
700 4134, 1658, 4122, 4087, 0, 4125, 1661, 0, 4080, 0,
701 175, 4076, 0, 0, 4074, 4078, 4070, 4100, 0, 4103,
702 7500, 7500, 4092, 2562, 4062, 4068, 7500, 4063, 4030, 4010,
703 1977, 1692, 2076, 7500, 1795, 1854, 3991, 3979, 544, 1965,
704 0, 1933, 2024, 1943, 2508, 7500, 7500, 0, 2069, 2541,
705 2016, 0, 0, 2546, 2550, 2524, 2548, 2555, 2591, 2602,
706 2592, 2599, 2601, 0, 3981, 3980, 0, 2606, 2618, 2627,
707 2634, 2643, 2653, 4019, 2539, 2643, 3978, 3977, 3976, 2660,
708 2665, 2670, 2693, 2713, 2721, 2733, 3975, 3974, 0, 0,
709
710 4008, 3967, 3955, 3963, 3961, 3958, 0, 0, 3947, 3946,
711 3945, 3949, 3943, 3939, 3929, 3928, 3918, 3926, 3912, 3913,
712 3917, 1955, 3903, 3913, 3911, 3903, 3899, 3897, 3896, 3893,
713 0, 3892, 0, 3887, 7500, 7500, 7500, 3860, 3291, 2104,
714 3256, 0, 3254, 1707, 3253, 3294, 0, 2732, 2211, 7500,
715 3241, 3238, 3268, 2243, 1802, 3245, 3232, 2318, 7500, 0,
716 2755, 2608, 2554, 3218, 2631, 2822, 2659, 3241, 2824, 2879,
717 2863, 2823, 2864, 2870, 2666, 2815, 3225, 3219, 2821, 2895,
718 7500, 3215, 3199, 3198, 2911, 0, 2840, 2934, 2953, 3186,
719 3180, 3202, 3162, 3155, 3150, 3145, 3143, 0, 3139, 3127,
720
721 3107, 2914, 3106, 3100, 3099, 3098, 3100, 3095, 7500, 3089,
722 3086, 3081, 7500, 3070, 3072, 3048, 3048, 3048, 3044, 3043,
723 3034, 3019, 3018, 3014, 3013, 2556, 3009, 2968, 2959, 7500,
724 2980, 2967, 7500, 2942, 2925, 1872, 2912, 2922, 0, 2587,
725 2687, 2851, 2898, 2920, 2979, 3026, 3010, 3015, 3011, 2971,
726 2914, 2902, 3036, 3055, 2901, 2895, 2894, 3064, 2990, 2893,
727 2887, 2876, 2861, 2861, 2860, 2824, 2820, 2815, 2810, 2796,
728 2792, 2786, 2797, 1718, 2774, 2707, 2696, 2697, 2680, 2673,
729 2672, 2658, 2660, 2643, 2654, 552, 2639, 2645, 2637, 1785,
730 2637, 2632, 2625, 2615, 2610, 2608, 2593, 2578, 2577, 2573,
731
732 2564, 2590, 2542, 2555, 2539, 2522, 2828, 2845, 7500, 2849,
733 3019, 3056, 3077, 3083, 3070, 2523, 2521, 3089, 3096, 2503,
734 2501, 2496, 3104, 3147, 3155, 2495, 2489, 2488, 7500, 2487,
735 2481, 2476, 2470, 2457, 2451, 2448, 2433, 2433, 2426, 2413,
736 2422, 2418, 2402, 2406, 2404, 2403, 2395, 2385, 7500, 2380,
737 0, 0, 2365, 7500, 2348, 2726, 2345, 2345, 2351, 2346,
738 2344, 2342, 2326, 2324, 2318, 2307, 2306, 2305, 2299, 2298,
739 2297, 2272, 2264, 2259, 2240, 2834, 2927, 2928, 3020, 3095,
740 3123, 3129, 3161, 2245, 2239, 3163, 3168, 2235, 2233, 2229,
741 3175, 2218, 2206, 2202, 2200, 2191, 2175, 2164, 2159, 2149,
742
743 2159, 0, 2152, 2153, 2138, 2132, 2137, 2124, 2101, 2100,
744 2095, 2089, 0, 7500, 7500, 2088, 2098, 7500, 2091, 2072,
745 2066, 2062, 2062, 2050, 2041, 2039, 2022, 2009, 1997, 1987,
746 1981, 1975, 1964, 1953, 1930, 1963, 1953, 3137, 2911, 3000,
747 3184, 3191, 3197, 3166, 3194, 7500, 7500, 3196, 3222, 7500,
748 7500, 7500, 3212, 7500, 7500, 7500, 7500, 7500, 7500, 7500,
749 7500, 7500, 7500, 1906, 1890, 1892, 1888, 1896, 1882, 7500,
750 7500, 7500, 7500, 7500, 1871, 1858, 2727, 1863, 1844, 7500,
751 7500, 7500, 7500, 7500, 7500, 7500, 7500, 7500, 7500, 1864,
752 1863, 7500, 7500, 3125, 3202, 3220, 843, 3225, 3238, 1802,
753
754 1800, 1780, 1756, 1737, 1732, 1705, 1687, 7500, 1673, 1667,
755 7500, 3243, 3244, 730, 3245, 3254, 1654, 1618, 1603, 1594,
756 1605, 1581, 813, 2744, 795, 759, 3256, 767, 3261, 712,
757 462, 408, 353, 7500, 2984, 148, 2995, 558, 3262, 83,
758 2996, 7500, 56, 3001, 1946, 3002, 26, 1883, 3117, 532,
759 7500, 3266, 7500, 3314, 3341, 3368, 3395, 3422, 3449, 3476,
760 3503, 3530, 3557, 3584, 3611, 3638, 3665, 3692, 3719, 3746,
761 3773, 3800, 3827, 3854, 3881, 3908, 3929, 3946, 3962, 3981,
762 3997, 4016, 4042, 4059, 4086, 4094, 4108, 4134, 4160, 4186,
763 4213, 4230, 4257, 4274, 4300, 4326, 4352, 4367, 4394, 4421,
764
765 4448, 4465, 4473, 4499, 4525, 4551, 4577, 4585, 4599, 4614,
766 4641, 4656, 4683, 4710, 4725, 4752, 4779, 4794, 4821, 4848,
767 4863, 4890, 4898, 4912, 4920, 4934, 4961, 4976, 5003, 5030,
768 5052, 5078, 5086, 5098, 5115, 5127, 5151, 5159, 3253, 5175,
769 5198, 5222, 5239, 5256, 5283, 5297, 5318, 5344, 5370, 5396,
770 5408, 5435, 5452, 5469, 5496, 5513, 5530, 5556, 5582, 5608,
771 5635, 5661, 5676, 5703, 5730, 5757, 5774, 5791, 5817, 5825,
772 5851, 5877, 5903, 5929, 5941, 5955, 5976, 5991, 6018, 6033,
773 6060, 6087, 6108, 6123, 6150, 6177, 6192, 6219, 6246, 6261,
774 6288, 6302, 6323, 6337, 6358, 6385, 6400, 6427, 6454, 3259,
775
776 6466, 6493, 6508, 6522, 6546, 6573, 6599, 3276, 6622, 6646,
777 3288, 3917, 6672, 6686, 6703, 6711, 6723, 6740, 6757, 6774,
778 6791, 6818, 6844, 6861, 6878, 6904, 6930, 6956, 6968, 6976,
779 6990, 6998, 7010, 7037, 7045, 7053, 3922, 7080, 7095, 7111,
780 7135, 3969, 7161, 7185, 7193, 7216, 7230, 7247, 7264, 7272,
781 7287, 7311, 7337, 7364, 7391, 7418, 7445, 7472
782 } ;
783
784static yyconst flex_int16_t yy_def[1259] =
785 { 0,
786 1054, 1054, 1053, 3, 1055, 1055, 1056, 1056, 1053, 9,
787 1053, 11, 1057, 1057, 1058, 1058, 1053, 17, 1053, 19,
788 1059, 1059, 1060, 1060, 1061, 1061, 1053, 27, 1053, 29,
789 1053, 31, 1053, 33, 1062, 1062, 1053, 37, 1063, 1063,
790 1053, 41, 1064, 1064, 1065, 1065, 1066, 1066, 1053, 49,
791 1067, 1067, 1068, 1068, 1069, 1069, 1070, 1070, 1053, 59,
792 1071, 1071, 1072, 1072, 1053, 65, 1053, 67, 1073, 1073,
793 1073, 1073, 1053, 73, 1074, 1074, 1075, 1075, 1053, 1053,
794 1053, 1053, 1053, 1076, 1077, 1078, 1079, 1053, 1080, 1081,
795 1082, 1053, 1078, 1079, 1053, 1053, 1083, 1084, 1084, 1084,
796
797 1085, 1053, 1053, 1053, 1086, 1087, 1053, 1053, 1053, 1053,
798 1088, 1088, 1053, 1089, 1053, 1090, 1053, 1053, 1091, 1092,
799 1092, 1053, 1092, 1053, 1053, 1093, 1094, 1094, 1094, 1053,
800 1094, 1053, 1053, 1095, 1095, 1053, 1096, 1097, 1053, 1053,
801 1098, 1053, 1053, 1053, 1099, 1053, 1053, 1053, 1100, 1053,
802 1053, 1053, 1101, 1102, 1102, 1102, 1053, 1053, 1103, 1104,
803 1053, 1053, 1053, 1053, 1105, 1105, 1053, 1106, 1053, 1107,
804 1053, 1053, 1108, 1109, 1053, 1053, 1110, 1053, 1111, 1053,
805 1053, 1053, 1053, 1112, 1053, 1113, 1053, 1114, 1053, 1053,
806 1053, 1115, 1053, 1053, 1053, 1053, 1116, 1053, 1117, 1053,
807
808 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
809 1118, 1053, 1053, 1053, 1053, 1053, 1119, 1053, 1053, 1053,
810 1053, 1120, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
811 1053, 1121, 1053, 1122, 1053, 1053, 1053, 1053, 1053, 1053,
812 1053, 1053, 1053, 1053, 1123, 1124, 1053, 1053, 1053, 1125,
813 1126, 1053, 1127, 1053, 1053, 1053, 1053, 1053, 1128, 1053,
814 1129, 1053, 1053, 1053, 1130, 1053, 1053, 1053, 1053, 1053,
815 1131, 1131, 1053, 1053, 1053, 1132, 1053, 1133, 1134, 1135,
816 1136, 1053, 1053, 1137, 1135, 1053, 1053, 1053, 1053, 1053,
817 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1138, 1131,
818
819 1138, 300, 300, 300, 300, 300, 300, 1053, 1053, 1139,
820 1140, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1053,
821 1053, 1053, 1053, 1053, 1142, 1053, 1143, 1144, 1143, 1053,
822 1053, 1143, 1145, 1053, 1146, 1147, 1146, 1053, 1053, 1053,
823 1053, 1053, 1148, 1053, 1148, 1149, 1150, 1148, 1149, 1053,
824 1053, 1053, 1150, 1150, 1151, 1152, 1053, 1153, 1154, 1153,
825 1053, 1053, 1153, 1155, 1053, 1156, 1157, 1156, 1053, 1155,
826 1053, 1053, 1156, 1053, 1158, 1053, 1158, 1159, 1160, 1158,
827 1053, 1161, 1159, 1160, 1160, 1162, 1163, 1053, 1053, 1053,
828 1164, 1053, 1053, 1053, 1053, 1165, 1053, 1053, 1053, 1053,
829
830 1166, 1053, 1167, 1168, 1167, 1053, 1053, 1167, 1169, 1053,
831 1170, 1169, 1053, 1171, 1053, 1053, 1053, 1053, 1172, 1053,
832 1172, 1173, 1174, 1172, 1173, 1053, 1053, 1053, 1174, 1174,
833 1175, 1176, 1177, 1176, 1053, 1053, 1053, 1178, 1053, 1053,
834 1053, 1053, 1179, 1053, 1053, 1053, 1180, 1053, 1181, 1053,
835 1182, 1053, 1053, 1183, 1053, 1053, 1053, 1184, 1053, 1053,
836 1185, 1185, 1053, 1053, 1186, 1053, 1053, 1053, 1053, 1053,
837 1053, 1053, 1187, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
838 1188, 1053, 1053, 1053, 1189, 1053, 1053, 1053, 1053, 1053,
839 1053, 1053, 1053, 1190, 1053, 1053, 1053, 1191, 1053, 1053,
840
841 1053, 1053, 1053, 1053, 1192, 1193, 1192, 1053, 1053, 1194,
842 1195, 1194, 1053, 1053, 1196, 1053, 1053, 1197, 1053, 1198,
843 1053, 1053, 1199, 1200, 1053, 1053, 1053, 1201, 1202, 1203,
844 1053, 1053, 1204, 1205, 1204, 1203, 1053, 1053, 1053, 1053,
845 1053, 1053, 1206, 1053, 1053, 1053, 1053, 1053, 1207, 1207,
846 1208, 1053, 1209, 1209, 1209, 1053, 1053, 1210, 1209, 1209,
847 1209, 1211, 1212, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
848 1214, 1214, 1215, 1216, 1053, 1053, 1217, 1218, 1218, 1219,
849 1220, 1220, 1221, 1222, 1053, 1223, 1053, 1053, 1053, 1224,
850 1224, 1225, 1226, 1227, 1228, 1228, 1053, 1053, 1229, 1230,
851
852 1231, 1053, 1053, 1053, 1053, 1053, 1232, 1233, 1053, 1053,
853 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1234, 1053,
854 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
855 1235, 1053, 1236, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
856 1053, 1237, 1053, 1053, 1053, 1238, 1239, 1240, 1053, 1053,
857 1053, 1053, 1241, 1241, 1053, 1053, 1053, 1053, 1053, 1242,
858 1053, 1243, 1243, 1244, 1243, 1243, 1243, 1245, 1246, 1246,
859 1246, 1246, 1246, 1246, 1246, 1247, 1053, 1053, 1248, 1249,
860 1053, 1053, 1053, 1053, 1225, 1250, 1226, 1226, 1227, 1053,
861 1053, 1231, 1053, 1053, 1053, 1053, 1053, 1233, 1053, 1053,
862
863 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
864 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
865 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
866 1251, 1240, 1053, 1053, 1053, 1053, 1053, 1053, 1252, 1252,
867 1243, 1243, 1053, 1243, 1246, 1245, 1246, 1246, 1246, 1247,
868 1053, 1053, 1248, 1249, 1053, 1053, 1053, 1225, 1253, 1053,
869 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
870 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
871 1053, 1254, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
872 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
873
874 1053, 1251, 1053, 1053, 1053, 1053, 1243, 1243, 1053, 1243,
875 1246, 1246, 1246, 1246, 1247, 1053, 1053, 1248, 1249, 1053,
876 1053, 1053, 1225, 1253, 1253, 1053, 1053, 1053, 1053, 1053,
877 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
878 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
879 1255, 1256, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
880 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
881 1053, 1053, 1053, 1053, 1053, 1243, 1243, 1243, 1246, 1246,
882 1246, 1246, 1247, 1053, 1053, 1248, 1249, 1053, 1053, 1053,
883 1225, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
884
885 1053, 1257, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
886 1053, 1053, 1258, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
887 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
888 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1243, 1243, 1243,
889 1246, 1246, 1246, 1246, 1247, 1053, 1053, 1248, 1249, 1053,
890 1053, 1053, 1225, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
891 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
892 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
893 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
894 1053, 1053, 1053, 1243, 1243, 1053, 1245, 1246, 1246, 1053,
895
896 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
897 1053, 1243, 1243, 1245, 1246, 1246, 1053, 1053, 1053, 1053,
898 1053, 1053, 1053, 1053, 1053, 1053, 1243, 1245, 1246, 1053,
899 1053, 1053, 1053, 1053, 1053, 1053, 1243, 1245, 1246, 1053,
900 1053, 1053, 1053, 1053, 1245, 1053, 1053, 1245, 1053, 1245,
901 1053, 1245, 0, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
902 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
903 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
904 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
905 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
906
907 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
908 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
909 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
910 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
911 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
912 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
913 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
914 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
915 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
916 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
917
918 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
919 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
920 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
921 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
922 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
923 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053
924 } ;
925
926static yyconst flex_int16_t yy_nxt[7569] =
927 { 0,
928 81, 82, 83, 81, 82, 81, 84, 81, 85, 81,
929 81, 81, 86, 81, 86, 87, 81, 86, 86, 81,
930 88, 81, 89, 90, 90, 90, 90, 90, 90, 90,
931 90, 90, 90, 90, 90, 90, 90, 90, 81, 91,
932 81, 90, 90, 90, 90, 90, 90, 90, 90, 90,
933 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
934 90, 90, 90, 90, 81, 81, 81, 81, 92, 144,
935 144, 92, 148, 145, 145, 148, 149, 207, 207, 149,
936 1049, 93, 94, 95, 95, 96, 95, 95, 95, 97,
937 95, 95, 95, 95, 95, 228, 95, 228, 95, 99,
938
939 546, 180, 99, 95, 95, 95, 146, 146, 180, 150,
940 80, 1047, 150, 469, 208, 208, 336, 80, 468, 546,
941 338, 95, 100, 95, 195, 196, 617, 195, 618, 197,
942 195, 196, 229, 195, 229, 197, 214, 215, 181, 214,
943 214, 215, 241, 214, 241, 181, 902, 95, 95, 95,
944 95, 95, 96, 95, 95, 95, 97, 95, 95, 95,
945 95, 95, 198, 95, 187, 95, 99, 187, 198, 99,
946 95, 95, 95, 188, 216, 218, 188, 219, 216, 242,
947 639, 242, 328, 329, 189, 525, 329, 189, 95, 100,
948 95, 342, 342, 342, 342, 220, 640, 280, 1043, 280,
949
950 280, 190, 280, 280, 190, 343, 329, 281, 460, 344,
951 524, 460, 221, 461, 95, 95, 95, 103, 103, 104,
952 103, 103, 103, 103, 103, 105, 103, 103, 103, 103,
953 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
954 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
955 106, 106, 106, 106, 106, 103, 107, 103, 106, 106,
956 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
957 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
958 106, 103, 103, 103, 106, 108, 109, 110, 109, 109,
959 108, 108, 108, 111, 108, 108, 108, 108, 108, 108,
960
961 112, 108, 108, 108, 113, 108, 108, 108, 114, 114,
962 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
963 114, 114, 114, 108, 115, 108, 114, 114, 114, 114,
964 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
965 114, 114, 114, 114, 114, 114, 114, 114, 114, 108,
966 108, 116, 114, 117, 117, 118, 117, 117, 117, 119,
967 117, 117, 117, 117, 117, 262, 117, 550, 117, 121,
968 262, 450, 121, 122, 117, 117, 200, 263, 201, 218,
969 451, 219, 263, 482, 506, 202, 551, 483, 508, 484,
970 203, 117, 123, 117, 482, 200, 204, 201, 483, 220,
971
972 273, 274, 264, 273, 202, 1041, 511, 264, 452, 203,
973 513, 539, 540, 205, 254, 204, 221, 117, 117, 117,
974 117, 117, 118, 117, 117, 117, 119, 117, 117, 117,
975 117, 117, 205, 117, 255, 117, 121, 254, 275, 121,
976 122, 117, 117, 223, 223, 224, 224, 537, 1053, 329,
977 537, 255, 329, 342, 342, 342, 342, 255, 117, 123,
978 117, 902, 235, 225, 225, 339, 340, 343, 339, 236,
979 237, 344, 329, 336, 255, 350, 351, 338, 350, 336,
980 226, 226, 238, 338, 117, 117, 117, 124, 124, 125,
981 124, 124, 124, 126, 124, 124, 124, 124, 124, 239,
982
983 124, 254, 124, 128, 235, 341, 128, 129, 130, 124,
984 254, 236, 237, 266, 1040, 352, 353, 353, 353, 353,
985 559, 256, 267, 354, 238, 124, 131, 124, 270, 560,
986 256, 270, 506, 268, 477, 478, 508, 477, 256, 388,
987 389, 239, 388, 323, 324, 658, 323, 256, 658, 271,
988 269, 124, 124, 124, 124, 124, 125, 124, 124, 124,
989 126, 124, 124, 124, 124, 124, 272, 124, 266, 124,
990 128, 563, 479, 128, 129, 130, 124, 267, 282, 390,
991 280, 283, 280, 284, 342, 342, 342, 342, 268, 1052,
992 281, 486, 124, 131, 124, 487, 541, 563, 343, 854,
993
994 506, 488, 344, 489, 508, 269, 855, 286, 384, 384,
995 384, 384, 1045, 323, 324, 385, 323, 541, 124, 124,
996 124, 108, 132, 133, 132, 132, 108, 108, 108, 134,
997 108, 108, 108, 108, 108, 108, 135, 108, 108, 108,
998 136, 108, 108, 108, 137, 137, 137, 137, 137, 137,
999 137, 137, 137, 137, 137, 137, 137, 137, 137, 108,
1000 115, 108, 137, 137, 137, 137, 137, 137, 137, 137,
1001 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
1002 137, 137, 137, 137, 137, 108, 108, 138, 137, 139,
1003 139, 140, 139, 139, 139, 139, 139, 139, 139, 139,
1004
1005 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1006 139, 139, 141, 141, 141, 141, 141, 141, 141, 141,
1007 141, 141, 141, 141, 141, 141, 141, 139, 142, 139,
1008 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
1009 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
1010 141, 141, 141, 139, 139, 139, 141, 151, 151, 152,
1011 151, 151, 151, 153, 151, 151, 151, 151, 151, 563,
1012 151, 320, 151, 155, 320, 902, 155, 151, 151, 151,
1013 393, 394, 1028, 393, 321, 322, 342, 342, 342, 342,
1014 359, 360, 271, 345, 360, 151, 156, 151, 330, 331,
1015
1016 343, 330, 398, 399, 344, 398, 563, 330, 331, 272,
1017 330, 556, 1053, 329, 360, 511, 329, 1038, 1036, 513,
1018 395, 151, 151, 151, 151, 151, 152, 151, 151, 151,
1019 153, 151, 151, 151, 151, 151, 329, 151, 332, 151,
1020 155, 557, 400, 155, 151, 151, 151, 323, 324, 1035,
1021 323, 347, 624, 1053, 360, 1033, 282, 360, 280, 283,
1022 280, 284, 151, 156, 151, 542, 625, 558, 281, 374,
1023 374, 374, 374, 429, 429, 429, 429, 360, 339, 340,
1024 430, 339, 1053, 375, 1014, 286, 542, 376, 151, 151,
1025 151, 157, 157, 158, 157, 157, 157, 157, 157, 159,
1026
1027 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1028 157, 157, 157, 157, 160, 160, 160, 160, 160, 160,
1029 160, 160, 160, 160, 160, 160, 160, 160, 160, 157,
1030 161, 157, 160, 160, 160, 160, 160, 160, 160, 160,
1031 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1032 160, 160, 160, 160, 160, 157, 157, 157, 160, 162,
1033 163, 164, 163, 163, 162, 162, 162, 165, 162, 162,
1034 162, 162, 162, 162, 166, 162, 162, 162, 167, 162,
1035 162, 162, 168, 168, 168, 168, 168, 168, 168, 168,
1036 168, 168, 168, 168, 168, 168, 168, 162, 169, 162,
1037
1038 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
1039 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
1040 168, 168, 168, 162, 162, 170, 168, 171, 171, 172,
1041 171, 171, 171, 171, 171, 173, 171, 171, 171, 171,
1042 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
1043 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1044 174, 174, 174, 174, 174, 171, 175, 171, 174, 174,
1045 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1046 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1047 174, 171, 171, 171, 174, 80, 80, 176, 80, 80,
1048
1049 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
1050 80, 80, 80, 80, 80, 80, 80, 80, 177, 177,
1051 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1052 177, 177, 177, 80, 178, 80, 177, 177, 177, 177,
1053 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1054 177, 177, 177, 177, 177, 177, 177, 177, 177, 80,
1055 80, 80, 177, 182, 182, 183, 182, 182, 182, 182,
1056 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
1057 182, 182, 182, 182, 182, 182, 184, 184, 184, 184,
1058 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1059
1060 184, 182, 185, 182, 184, 184, 184, 184, 184, 184,
1061 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1062 184, 184, 184, 184, 184, 184, 184, 182, 182, 182,
1063 184, 80, 80, 191, 80, 80, 80, 80, 80, 80,
1064 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
1065 80, 80, 80, 80, 192, 192, 192, 192, 192, 192,
1066 192, 192, 192, 192, 192, 192, 192, 192, 192, 80,
1067 193, 80, 192, 192, 192, 192, 192, 192, 192, 192,
1068 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
1069 192, 192, 192, 192, 192, 80, 80, 80, 192, 209,
1070
1071 209, 210, 209, 209, 209, 209, 209, 209, 209, 209,
1072 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
1073 209, 209, 211, 211, 211, 211, 211, 211, 211, 211,
1074 211, 211, 211, 211, 211, 211, 211, 209, 212, 209,
1075 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
1076 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
1077 211, 211, 211, 209, 209, 209, 211, 230, 230, 231,
1078 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1079 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1080 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1081
1082 232, 232, 232, 232, 232, 230, 233, 230, 232, 232,
1083 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1084 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1085 232, 230, 230, 230, 232, 243, 243, 244, 243, 243,
1086 243, 243, 243, 245, 243, 243, 243, 243, 243, 243,
1087 243, 243, 243, 243, 243, 243, 243, 243, 246, 246,
1088 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
1089 246, 246, 246, 243, 247, 243, 246, 246, 246, 246,
1090 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
1091 246, 246, 246, 246, 246, 246, 246, 246, 246, 243,
1092
1093 243, 243, 246, 248, 248, 249, 248, 248, 248, 248,
1094 248, 250, 248, 248, 248, 248, 248, 248, 248, 248,
1095 248, 248, 248, 248, 248, 248, 251, 251, 251, 251,
1096 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1097 251, 248, 252, 248, 251, 251, 251, 251, 251, 251,
1098 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1099 251, 251, 251, 251, 251, 251, 251, 248, 248, 248,
1100 251, 257, 257, 258, 257, 257, 257, 257, 257, 257,
1101 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
1102 257, 257, 257, 257, 259, 259, 259, 259, 259, 259,
1103
1104 259, 259, 259, 259, 259, 259, 259, 259, 259, 257,
1105 260, 257, 259, 259, 259, 259, 259, 259, 259, 259,
1106 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
1107 259, 259, 259, 259, 259, 257, 257, 257, 259, 287,
1108 348, 348, 348, 348, 902, 367, 368, 345, 541, 368,
1109 288, 369, 404, 405, 343, 1032, 405, 902, 344, 552,
1110 289, 541, 552, 290, 291, 541, 902, 292, 293, 368,
1111 294, 295, 1031, 511, 1053, 368, 405, 513, 368, 289,
1112 1053, 541, 541, 290, 291, 361, 362, 541, 361, 292,
1113 293, 296, 297, 294, 295, 298, 298, 563, 368, 1053,
1114
1115 360, 636, 541, 360, 370, 347, 1030, 490, 298, 298,
1116 299, 1026, 486, 1053, 368, 659, 487, 368, 572, 369,
1117 541, 572, 488, 360, 489, 363, 637, 301, 1025, 350,
1118 351, 302, 350, 303, 304, 305, 1024, 368, 1053, 405,
1119 541, 572, 405, 371, 372, 659, 371, 306, 415, 416,
1120 307, 415, 308, 309, 310, 298, 298, 1053, 368, 1023,
1121 840, 368, 405, 1053, 374, 374, 374, 374, 298, 298,
1122 301, 659, 374, 374, 374, 374, 841, 585, 375, 377,
1123 585, 368, 376, 373, 1022, 382, 375, 299, 417, 313,
1124 376, 314, 450, 315, 316, 317, 1021, 380, 380, 380,
1125
1126 380, 451, 426, 427, 377, 426, 270, 318, 1020, 270,
1127 319, 375, 308, 309, 310, 376, 381, 374, 374, 381,
1128 361, 362, 541, 361, 382, 406, 407, 271, 406, 452,
1129 375, 859, 1019, 736, 376, 273, 274, 379, 273, 1053,
1130 405, 541, 428, 405, 272, 860, 418, 418, 418, 418,
1131 410, 410, 410, 410, 736, 1018, 1017, 411, 435, 436,
1132 419, 435, 379, 405, 420, 408, 412, 412, 413, 418,
1133 418, 418, 418, 275, 418, 418, 418, 418, 655, 371,
1134 372, 421, 371, 419, 992, 1011, 460, 420, 419, 460,
1135 1010, 461, 420, 424, 424, 424, 424, 655, 437, 541,
1136
1137 421, 418, 418, 418, 418, 440, 441, 419, 440, 444,
1138 445, 420, 444, 1009, 1007, 419, 453, 453, 541, 420,
1139 470, 471, 563, 470, 474, 475, 1050, 474, 1006, 453,
1140 453, 454, 491, 492, 552, 491, 1005, 552, 1004, 423,
1141 495, 496, 1003, 495, 552, 442, 1002, 552, 453, 446,
1142 499, 500, 1001, 499, 502, 503, 713, 502, 423, 713,
1143 472, 1000, 273, 274, 476, 273, 658, 543, 552, 658,
1144 543, 552, 493, 659, 993, 453, 455, 456, 543, 455,
1145 497, 543, 453, 453, 992, 563, 552, 544, 552, 552,
1146 501, 552, 1048, 991, 504, 453, 453, 453, 544, 662,
1147
1148 275, 545, 280, 659, 280, 280, 563, 280, 280, 714,
1149 552, 990, 281, 552, 454, 552, 457, 552, 552, 564,
1150 552, 274, 556, 545, 563, 552, 563, 552, 552, 659,
1151 552, 552, 989, 566, 552, 328, 329, 320, 988, 329,
1152 320, 453, 298, 298, 987, 565, 388, 389, 563, 388,
1153 321, 322, 557, 563, 986, 298, 298, 526, 271, 329,
1154 1053, 329, 667, 567, 329, 563, 985, 328, 329, 563,
1155 552, 329, 661, 552, 298, 272, 568, 654, 558, 984,
1156 654, 304, 305, 570, 329, 569, 579, 393, 394, 579,
1157 393, 329, 342, 342, 342, 342, 983, 544, 982, 308,
1158
1159 309, 310, 298, 298, 573, 726, 343, 981, 726, 579,
1160 344, 353, 353, 353, 353, 298, 298, 298, 354, 980,
1161 979, 348, 348, 348, 348, 978, 977, 665, 345, 1053,
1162 1053, 1053, 1053, 976, 526, 343, 1053, 398, 399, 344,
1163 398, 304, 305, 1053, 975, 974, 478, 1053, 353, 353,
1164 353, 353, 972, 406, 407, 354, 406, 971, 970, 308,
1165 309, 310, 531, 415, 416, 531, 415, 531, 531, 531,
1166 531, 531, 532, 531, 533, 531, 533, 534, 531, 969,
1167 968, 531, 531, 531, 536, 582, 347, 967, 582, 342,
1168 342, 342, 342, 966, 1053, 342, 342, 342, 342, 965,
1169
1170 531, 531, 531, 343, 964, 902, 962, 344, 582, 343,
1171 359, 360, 733, 344, 360, 733, 961, 348, 348, 348,
1172 348, 960, 426, 427, 345, 426, 531, 531, 531, 531,
1173 552, 343, 959, 552, 360, 344, 1053, 1053, 1053, 1053,
1174 1053, 1053, 1053, 360, 654, 1053, 360, 654, 958, 1053,
1175 1053, 1053, 359, 360, 367, 368, 360, 957, 368, 956,
1176 369, 1053, 368, 955, 544, 368, 360, 1053, 1053, 374,
1177 374, 374, 374, 367, 368, 954, 360, 368, 368, 369,
1178 404, 405, 347, 375, 405, 368, 952, 376, 591, 580,
1179 951, 591, 950, 1053, 1053, 1053, 947, 368, 380, 380,
1180
1181 380, 380, 946, 937, 405, 377, 1053, 1053, 1053, 1053,
1182 583, 591, 375, 1053, 1053, 405, 376, 936, 405, 658,
1183 1053, 935, 658, 934, 1053, 381, 374, 374, 381, 384,
1184 384, 384, 384, 382, 435, 436, 385, 435, 405, 375,
1185 933, 932, 931, 376, 380, 380, 380, 380, 930, 929,
1186 928, 377, 381, 374, 374, 381, 440, 441, 375, 440,
1187 382, 927, 376, 379, 404, 405, 375, 926, 405, 925,
1188 376, 1053, 381, 374, 374, 381, 384, 384, 384, 384,
1189 382, 444, 445, 385, 444, 924, 375, 923, 405, 922,
1190 376, 1053, 1053, 1053, 1053, 921, 455, 456, 1053, 455,
1191
1192 920, 592, 919, 410, 410, 410, 410, 917, 916, 379,
1193 411, 410, 410, 410, 410, 410, 410, 410, 410, 412,
1194 412, 413, 411, 410, 410, 410, 410, 913, 912, 413,
1195 411, 412, 412, 413, 418, 418, 418, 418, 911, 595,
1196 595, 413, 424, 424, 424, 424, 910, 909, 419, 421,
1197 470, 471, 420, 470, 474, 475, 419, 474, 908, 907,
1198 420, 1053, 1053, 1053, 1053, 906, 902, 905, 1053, 418,
1199 418, 418, 418, 477, 478, 1053, 477, 491, 492, 1053,
1200 491, 495, 496, 419, 495, 904, 903, 420, 429, 429,
1201 429, 429, 902, 901, 900, 430, 424, 424, 424, 424,
1202
1203 899, 499, 500, 421, 499, 502, 503, 423, 502, 552,
1204 419, 479, 552, 898, 420, 418, 418, 418, 418, 897,
1205 429, 429, 429, 429, 896, 552, 1053, 430, 552, 419,
1206 895, 894, 893, 420, 1053, 1053, 1053, 1053, 892, 890,
1207 585, 1053, 552, 585, 889, 552, 888, 552, 382, 552,
1208 552, 552, 552, 663, 552, 552, 552, 726, 552, 552,
1209 726, 423, 531, 563, 885, 531, 884, 531, 531, 531,
1210 531, 531, 532, 531, 533, 531, 533, 648, 531, 875,
1211 671, 531, 531, 531, 536, 563, 666, 563, 740, 563,
1212 874, 740, 552, 672, 563, 552, 669, 873, 670, 872,
1213
1214 531, 649, 531, 552, 742, 647, 552, 328, 572, 552,
1215 871, 572, 552, 673, 1053, 572, 328, 329, 572, 870,
1216 329, 359, 579, 869, 868, 579, 531, 531, 531, 531,
1217 563, 572, 552, 1053, 579, 552, 674, 579, 572, 867,
1218 329, 563, 359, 360, 585, 579, 360, 585, 675, 367,
1219 582, 676, 382, 582, 866, 369, 865, 579, 1053, 582,
1220 552, 864, 582, 552, 1053, 741, 360, 552, 367, 368,
1221 552, 863, 368, 582, 369, 404, 591, 679, 862, 591,
1222 1053, 591, 582, 861, 591, 404, 405, 858, 552, 405,
1223 661, 552, 368, 857, 410, 410, 410, 410, 856, 591,
1224
1225 853, 686, 852, 680, 591, 563, 744, 851, 850, 405,
1226 687, 687, 413, 749, 689, 689, 689, 689, 848, 847,
1227 685, 411, 410, 410, 410, 410, 846, 918, 1008, 411,
1228 918, 1008, 413, 807, 410, 410, 410, 410, 595, 595,
1229 413, 411, 282, 845, 280, 1034, 280, 732, 1034, 844,
1230 595, 595, 413, 843, 281, 739, 740, 739, 739, 740,
1231 739, 739, 739, 739, 739, 739, 739, 739, 739, 739,
1232 739, 739, 739, 739, 739, 739, 739, 739, 300, 300,
1233 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
1234 300, 300, 300, 739, 739, 739, 300, 300, 300, 300,
1235
1236 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
1237 300, 300, 300, 300, 300, 300, 300, 300, 300, 739,
1238 739, 739, 739, 552, 552, 552, 552, 552, 552, 552,
1239 328, 329, 552, 842, 329, 552, 359, 360, 552, 839,
1240 360, 410, 410, 410, 410, 838, 552, 837, 686, 552,
1241 552, 836, 552, 552, 329, 552, 835, 687, 687, 413,
1242 360, 834, 563, 563, 552, 552, 833, 552, 552, 750,
1243 832, 552, 876, 748, 552, 753, 938, 661, 745, 739,
1244 740, 739, 739, 740, 739, 739, 739, 739, 739, 739,
1245 739, 739, 739, 739, 739, 739, 739, 739, 739, 739,
1246
1247 739, 739, 563, 563, 877, 808, 831, 830, 878, 563,
1248 367, 368, 552, 829, 368, 552, 369, 739, 746, 739,
1249 747, 552, 828, 670, 552, 670, 404, 405, 552, 552,
1250 405, 552, 552, 827, 368, 410, 410, 410, 410, 826,
1251 822, 821, 686, 739, 739, 739, 739, 820, 817, 754,
1252 405, 687, 687, 413, 689, 689, 689, 689, 770, 771,
1253 816, 411, 809, 772, 806, 758, 773, 774, 995, 805,
1254 810, 775, 413, 939, 940, 776, 777, 282, 804, 280,
1255 552, 280, 732, 552, 803, 1042, 328, 329, 1042, 281,
1256 329, 410, 410, 410, 410, 647, 1044, 1046, 686, 1044,
1257
1258 1046, 552, 1044, 1046, 552, 1044, 1046, 824, 824, 413,
1259 329, 552, 552, 801, 552, 552, 552, 815, 563, 552,
1260 552, 552, 800, 552, 552, 811, 739, 739, 739, 739,
1261 739, 739, 739, 739, 739, 739, 739, 739, 739, 739,
1262 739, 739, 739, 739, 739, 739, 739, 739, 739, 563,
1263 563, 359, 360, 661, 563, 360, 812, 552, 563, 563,
1264 552, 814, 879, 799, 739, 739, 739, 798, 797, 813,
1265 367, 368, 796, 795, 368, 360, 369, 941, 552, 404,
1266 405, 552, 818, 405, 552, 328, 329, 552, 794, 329,
1267 739, 739, 739, 739, 368, 563, 552, 793, 792, 552,
1268
1269 880, 819, 791, 405, 359, 360, 790, 789, 360, 329,
1270 823, 367, 368, 883, 788, 368, 563, 369, 1051, 404,
1271 405, 1051, 563, 405, 552, 787, 552, 552, 360, 552,
1272 552, 786, 886, 552, 563, 368, 881, 942, 552, 887,
1273 785, 552, 882, 405, 784, 783, 782, 891, 410, 410,
1274 410, 410, 781, 780, 779, 686, 410, 410, 410, 410,
1275 778, 769, 563, 686, 824, 824, 413, 552, 563, 943,
1276 552, 1012, 824, 824, 413, 944, 328, 329, 359, 360,
1277 329, 768, 360, 367, 368, 996, 274, 368, 996, 369,
1278 404, 405, 552, 767, 405, 552, 994, 766, 552, 765,
1279
1280 329, 552, 360, 552, 764, 563, 552, 368, 763, 328,
1281 329, 359, 360, 329, 405, 360, 762, 433, 945, 670,
1282 948, 996, 274, 997, 996, 949, 552, 404, 405, 552,
1283 563, 405, 953, 329, 761, 360, 563, 367, 368, 552,
1284 760, 368, 552, 369, 552, 552, 552, 552, 552, 552,
1285 998, 405, 757, 756, 999, 552, 1013, 552, 552, 275,
1286 552, 368, 552, 1044, 563, 552, 1044, 273, 274, 755,
1287 273, 1015, 562, 752, 562, 562, 562, 563, 642, 751,
1288 563, 642, 642, 743, 563, 738, 1027, 737, 661, 544,
1289 670, 735, 1016, 563, 734, 660, 1029, 660, 660, 660,
1290
1291 563, 563, 730, 729, 728, 997, 727, 562, 1037, 562,
1292 562, 562, 640, 1039, 80, 80, 80, 80, 80, 80,
1293 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
1294 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
1295 80, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1296 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1297 98, 98, 98, 98, 98, 98, 98, 98, 101, 101,
1298 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1299 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1300 101, 101, 101, 101, 101, 120, 120, 120, 120, 120,
1301
1302 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
1303 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
1304 120, 120, 127, 127, 127, 127, 127, 127, 127, 127,
1305 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
1306 127, 127, 127, 127, 127, 127, 127, 127, 127, 143,
1307 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1308 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1309 143, 143, 143, 143, 143, 143, 147, 147, 147, 147,
1310 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1311 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1312
1313 147, 147, 147, 154, 154, 154, 154, 154, 154, 154,
1314 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
1315 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
1316 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
1317 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
1318 179, 179, 179, 179, 179, 179, 179, 186, 186, 186,
1319 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1320 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1321 186, 186, 186, 186, 194, 194, 194, 194, 194, 194,
1322 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
1323
1324 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
1325 194, 199, 199, 199, 199, 199, 199, 199, 199, 199,
1326 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
1327 199, 199, 199, 199, 199, 199, 199, 199, 206, 206,
1328 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1329 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1330 206, 206, 206, 206, 206, 213, 213, 213, 213, 213,
1331 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
1332 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
1333 213, 213, 217, 217, 217, 217, 217, 217, 217, 217,
1334
1335 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
1336 217, 217, 217, 217, 217, 217, 217, 217, 217, 222,
1337 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
1338 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
1339 222, 222, 222, 222, 222, 222, 227, 227, 227, 227,
1340 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1341 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1342 227, 227, 227, 234, 234, 234, 234, 234, 234, 234,
1343 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1344 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1345
1346 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
1347 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
1348 240, 240, 240, 240, 240, 240, 240, 253, 253, 253,
1349 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
1350 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
1351 253, 253, 253, 253, 261, 261, 261, 261, 261, 261,
1352 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
1353 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
1354 261, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1355 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1356
1357 265, 265, 265, 265, 265, 265, 265, 265, 276, 276,
1358 725, 276, 276, 276, 276, 276, 276, 276, 276, 276,
1359 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
1360 276, 276, 276, 276, 276, 279, 668, 724, 668, 668,
1361 668, 642, 723, 722, 642, 642, 721, 720, 279, 719,
1362 279, 279, 279, 718, 717, 279, 280, 716, 280, 280,
1363 715, 280, 712, 711, 280, 280, 710, 280, 280, 280,
1364 285, 708, 285, 285, 285, 285, 707, 285, 706, 705,
1365 285, 285, 285, 285, 285, 285, 300, 300, 660, 704,
1366 660, 660, 660, 703, 702, 701, 700, 699, 300, 300,
1367
1368 300, 300, 300, 300, 300, 300, 300, 311, 697, 311,
1369 311, 696, 311, 695, 694, 311, 311, 693, 311, 311,
1370 311, 312, 312, 433, 691, 690, 684, 683, 682, 681,
1371 678, 677, 657, 312, 312, 312, 312, 312, 312, 312,
1372 312, 312, 325, 325, 656, 325, 325, 325, 325, 325,
1373 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
1374 325, 325, 325, 325, 325, 325, 325, 325, 325, 327,
1375 652, 327, 327, 327, 327, 327, 651, 650, 327, 327,
1376 327, 327, 327, 1053, 281, 327, 333, 333, 333, 333,
1377 333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
1378
1379 333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
1380 333, 333, 333, 335, 281, 335, 335, 335, 647, 529,
1381 335, 337, 645, 337, 337, 644, 643, 337, 641, 337,
1382 337, 337, 638, 635, 337, 346, 346, 346, 346, 634,
1383 346, 511, 633, 632, 506, 631, 630, 346, 629, 628,
1384 346, 627, 626, 346, 623, 346, 346, 346, 622, 346,
1385 346, 349, 349, 349, 349, 621, 620, 619, 616, 480,
1386 615, 614, 613, 349, 612, 349, 349, 611, 463, 349,
1387 463, 349, 349, 349, 610, 609, 349, 355, 355, 355,
1388 355, 607, 355, 457, 452, 606, 605, 604, 603, 439,
1389
1390 602, 433, 600, 433, 598, 355, 419, 355, 355, 355,
1391 597, 594, 355, 356, 356, 402, 356, 356, 356, 356,
1392 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
1393 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
1394 358, 589, 358, 358, 358, 358, 358, 397, 588, 358,
1395 358, 358, 358, 358, 392, 587, 358, 364, 364, 375,
1396 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
1397 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
1398 364, 364, 364, 364, 366, 365, 366, 366, 366, 366,
1399 366, 366, 369, 366, 366, 366, 366, 366, 365, 357,
1400
1401 366, 378, 378, 378, 378, 576, 378, 343, 575, 336,
1402 574, 334, 326, 378, 561, 555, 378, 554, 553, 378,
1403 551, 378, 378, 378, 548, 378, 378, 383, 383, 383,
1404 383, 547, 538, 383, 281, 281, 529, 277, 527, 383,
1405 524, 383, 383, 522, 521, 383, 519, 383, 383, 383,
1406 517, 516, 383, 386, 386, 386, 386, 514, 386, 509,
1407 480, 468, 467, 466, 464, 463, 459, 452, 448, 439,
1408 433, 386, 419, 386, 386, 386, 402, 397, 386, 387,
1409 392, 375, 387, 365, 357, 357, 387, 343, 387, 387,
1410 387, 334, 326, 387, 391, 391, 281, 391, 391, 391,
1411
1412 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1413 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1414 391, 396, 396, 281, 396, 396, 396, 396, 396, 396,
1415 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1416 396, 396, 396, 396, 396, 396, 396, 396, 401, 401,
1417 278, 401, 401, 401, 401, 401, 401, 401, 401, 401,
1418 401, 401, 401, 401, 401, 401, 401, 401, 401, 401,
1419 401, 401, 401, 401, 401, 403, 277, 403, 403, 403,
1420 403, 403, 1053, 102, 403, 403, 403, 403, 403, 102,
1421 1053, 403, 409, 1053, 409, 409, 409, 1053, 1053, 409,
1422
1423 414, 414, 414, 414, 1053, 414, 1053, 1053, 1053, 1053,
1424 1053, 1053, 1053, 1053, 414, 414, 1053, 1053, 414, 1053,
1425 414, 414, 414, 1053, 1053, 414, 422, 422, 422, 422,
1426 1053, 422, 1053, 1053, 1053, 1053, 1053, 1053, 422, 1053,
1427 1053, 422, 1053, 1053, 422, 1053, 422, 422, 422, 1053,
1428 422, 422, 425, 425, 425, 425, 1053, 1053, 1053, 1053,
1429 1053, 1053, 1053, 1053, 425, 1053, 425, 425, 1053, 1053,
1430 425, 1053, 425, 425, 425, 1053, 1053, 425, 431, 431,
1431 431, 431, 1053, 431, 1053, 1053, 1053, 1053, 1053, 1053,
1432 1053, 1053, 1053, 1053, 1053, 1053, 431, 1053, 431, 431,
1433
1434 431, 1053, 1053, 431, 432, 1053, 432, 432, 432, 1053,
1435 1053, 432, 434, 1053, 434, 1053, 1053, 1053, 434, 1053,
1436 434, 434, 434, 1053, 1053, 434, 438, 438, 1053, 438,
1437 1053, 1053, 1053, 438, 1053, 438, 438, 438, 1053, 1053,
1438 438, 443, 443, 1053, 443, 443, 443, 443, 443, 443,
1439 1053, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1440 443, 1053, 443, 443, 443, 443, 443, 443, 447, 1053,
1441 1053, 447, 1053, 1053, 1053, 447, 1053, 447, 447, 447,
1442 1053, 1053, 447, 449, 449, 449, 449, 449, 449, 449,
1443 449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
1444
1445 449, 1053, 449, 449, 449, 449, 449, 449, 449, 449,
1446 451, 451, 1053, 451, 451, 451, 451, 451, 451, 451,
1447 451, 451, 451, 451, 451, 451, 451, 451, 1053, 451,
1448 451, 451, 451, 451, 451, 451, 451, 458, 1053, 1053,
1449 458, 1053, 1053, 1053, 458, 1053, 458, 458, 458, 1053,
1450 1053, 458, 462, 462, 1053, 462, 462, 462, 462, 462,
1451 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
1452 462, 462, 462, 462, 462, 462, 462, 462, 462, 465,
1453 465, 1053, 465, 1053, 465, 465, 465, 465, 1053, 465,
1454 465, 465, 465, 1053, 465, 465, 465, 1053, 465, 1053,
1455
1456 465, 465, 465, 465, 465, 465, 473, 1053, 1053, 473,
1457 1053, 1053, 1053, 473, 1053, 473, 473, 473, 1053, 1053,
1458 473, 481, 481, 1053, 481, 1053, 481, 481, 481, 481,
1459 481, 481, 481, 481, 481, 481, 481, 481, 481, 1053,
1460 481, 1053, 481, 481, 481, 481, 481, 481, 485, 485,
1461 1053, 485, 1053, 485, 485, 485, 485, 485, 485, 485,
1462 485, 485, 485, 485, 485, 485, 1053, 485, 1053, 485,
1463 485, 485, 485, 485, 485, 494, 1053, 1053, 494, 1053,
1464 1053, 1053, 494, 1053, 494, 494, 494, 1053, 1053, 494,
1465 498, 498, 1053, 498, 498, 498, 498, 1053, 1053, 498,
1466
1467 498, 498, 498, 498, 498, 498, 498, 498, 1053, 498,
1468 1053, 498, 498, 498, 498, 498, 498, 505, 1053, 505,
1469 505, 505, 1053, 1053, 505, 507, 1053, 507, 507, 1053,
1470 1053, 507, 1053, 507, 507, 507, 1053, 1053, 507, 510,
1471 1053, 510, 510, 510, 1053, 1053, 510, 512, 1053, 512,
1472 512, 1053, 1053, 512, 1053, 512, 512, 512, 1053, 1053,
1473 512, 515, 515, 1053, 515, 515, 515, 515, 515, 515,
1474 515, 515, 515, 515, 515, 515, 515, 515, 515, 1053,
1475 515, 1053, 515, 515, 515, 515, 515, 515, 518, 1053,
1476 1053, 518, 1053, 1053, 1053, 518, 1053, 518, 518, 518,
1477
1478 1053, 1053, 518, 520, 520, 1053, 520, 520, 520, 520,
1479 520, 520, 520, 520, 520, 1053, 520, 520, 520, 520,
1480 520, 520, 520, 1053, 520, 520, 520, 520, 520, 520,
1481 523, 523, 1053, 523, 523, 523, 523, 523, 523, 1053,
1482 523, 523, 523, 523, 523, 523, 523, 523, 1053, 523,
1483 1053, 523, 523, 523, 523, 523, 523, 300, 300, 1053,
1484 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 300,
1485 300, 300, 300, 300, 300, 300, 300, 300, 276, 276,
1486 1053, 276, 276, 276, 276, 276, 276, 276, 276, 276,
1487 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
1488
1489 276, 276, 276, 276, 276, 279, 1053, 279, 279, 279,
1490 1053, 1053, 279, 528, 528, 1053, 1053, 528, 1053, 528,
1491 528, 528, 1053, 1053, 528, 280, 1053, 280, 280, 1053,
1492 280, 1053, 1053, 280, 280, 1053, 280, 280, 280, 530,
1493 1053, 1053, 530, 1053, 1053, 1053, 530, 1053, 530, 530,
1494 530, 535, 1053, 1053, 535, 1053, 535, 535, 535, 535,
1495 535, 535, 535, 535, 535, 535, 535, 535, 535, 535,
1496 535, 535, 535, 535, 535, 535, 535, 535, 549, 1053,
1497 549, 549, 549, 1053, 549, 311, 1053, 311, 311, 1053,
1498 311, 1053, 1053, 311, 311, 1053, 311, 311, 311, 312,
1499
1500 1053, 1053, 312, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1501 1053, 1053, 1053, 1053, 1053, 1053, 1053, 312, 312, 312,
1502 312, 312, 325, 325, 1053, 325, 325, 325, 325, 325,
1503 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
1504 325, 325, 325, 325, 325, 325, 325, 325, 325, 327,
1505 1053, 327, 327, 327, 327, 327, 1053, 1053, 327, 327,
1506 327, 327, 327, 1053, 1053, 327, 571, 1053, 571, 1053,
1507 571, 571, 571, 1053, 1053, 571, 571, 571, 571, 571,
1508 1053, 1053, 571, 333, 333, 333, 333, 333, 333, 333,
1509 333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
1510
1511 333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
1512 337, 1053, 337, 337, 1053, 1053, 337, 1053, 337, 337,
1513 337, 1053, 1053, 337, 335, 1053, 1053, 1053, 1053, 1053,
1514 1053, 1053, 1053, 1053, 1053, 1053, 1053, 335, 1053, 335,
1515 335, 335, 1053, 1053, 335, 346, 346, 346, 346, 1053,
1516 346, 1053, 1053, 1053, 1053, 1053, 1053, 346, 1053, 1053,
1517 346, 1053, 1053, 346, 1053, 346, 346, 346, 1053, 346,
1518 346, 349, 349, 349, 349, 1053, 1053, 1053, 1053, 1053,
1519 1053, 1053, 1053, 349, 1053, 349, 349, 1053, 1053, 349,
1520 1053, 349, 349, 349, 1053, 1053, 349, 355, 355, 355,
1521
1522 355, 1053, 355, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1523 1053, 1053, 1053, 1053, 1053, 355, 1053, 355, 355, 355,
1524 1053, 1053, 355, 577, 1053, 1053, 1053, 577, 1053, 577,
1525 577, 577, 1053, 1053, 577, 356, 356, 1053, 356, 356,
1526 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
1527 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
1528 356, 356, 358, 1053, 358, 358, 358, 358, 358, 1053,
1529 1053, 358, 358, 358, 358, 358, 1053, 1053, 358, 578,
1530 1053, 578, 1053, 578, 578, 578, 1053, 1053, 578, 578,
1531 578, 578, 578, 1053, 1053, 578, 364, 364, 1053, 364,
1532
1533 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
1534 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
1535 364, 364, 364, 366, 1053, 366, 366, 366, 366, 366,
1536 366, 1053, 366, 366, 366, 366, 366, 1053, 1053, 366,
1537 581, 1053, 581, 1053, 581, 581, 581, 1053, 1053, 581,
1538 581, 581, 581, 581, 1053, 1053, 581, 378, 378, 378,
1539 378, 1053, 378, 1053, 1053, 1053, 1053, 1053, 1053, 378,
1540 1053, 1053, 378, 1053, 1053, 378, 1053, 378, 378, 378,
1541 1053, 378, 378, 383, 383, 383, 383, 1053, 1053, 383,
1542 1053, 1053, 1053, 1053, 1053, 383, 1053, 383, 383, 1053,
1543
1544 1053, 383, 1053, 383, 383, 383, 1053, 1053, 383, 386,
1545 386, 386, 386, 1053, 386, 1053, 1053, 1053, 1053, 1053,
1546 1053, 1053, 1053, 1053, 1053, 1053, 1053, 386, 1053, 386,
1547 386, 386, 1053, 1053, 386, 584, 584, 584, 584, 584,
1548 584, 584, 584, 1053, 584, 584, 584, 584, 584, 584,
1549 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
1550 584, 584, 586, 1053, 1053, 586, 1053, 1053, 586, 1053,
1551 1053, 1053, 1053, 1053, 1053, 1053, 586, 1053, 1053, 1053,
1552 586, 1053, 586, 586, 586, 1053, 1053, 586, 387, 1053,
1553 1053, 387, 1053, 1053, 1053, 387, 1053, 387, 387, 387,
1554
1555 1053, 1053, 387, 391, 391, 1053, 391, 391, 391, 391,
1556 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1557 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1558 396, 396, 1053, 396, 396, 396, 396, 396, 396, 396,
1559 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1560 396, 396, 396, 396, 396, 396, 396, 401, 401, 1053,
1561 401, 401, 401, 401, 401, 401, 401, 401, 401, 401,
1562 401, 401, 401, 401, 401, 401, 401, 401, 401, 401,
1563 401, 401, 401, 401, 403, 1053, 403, 403, 403, 403,
1564 403, 1053, 1053, 403, 403, 403, 403, 403, 1053, 1053,
1565
1566 403, 590, 1053, 590, 1053, 590, 590, 590, 1053, 1053,
1567 590, 590, 590, 590, 590, 1053, 1053, 590, 414, 414,
1568 414, 414, 1053, 414, 1053, 1053, 1053, 1053, 1053, 1053,
1569 1053, 1053, 414, 414, 1053, 1053, 414, 1053, 414, 414,
1570 414, 1053, 1053, 414, 593, 1053, 593, 593, 593, 1053,
1571 1053, 593, 596, 596, 596, 596, 1053, 596, 1053, 1053,
1572 1053, 1053, 1053, 1053, 1053, 1053, 596, 596, 1053, 1053,
1573 596, 1053, 596, 596, 596, 1053, 1053, 596, 422, 422,
1574 422, 422, 1053, 422, 1053, 1053, 1053, 1053, 1053, 1053,
1575 422, 1053, 1053, 422, 1053, 1053, 422, 1053, 422, 422,
1576
1577 422, 1053, 422, 422, 425, 425, 425, 425, 1053, 1053,
1578 1053, 1053, 1053, 1053, 1053, 1053, 425, 1053, 425, 425,
1579 1053, 1053, 425, 1053, 425, 425, 425, 1053, 1053, 425,
1580 431, 431, 431, 431, 1053, 431, 1053, 1053, 1053, 1053,
1581 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 431, 1053,
1582 431, 431, 431, 1053, 1053, 431, 599, 1053, 1053, 1053,
1583 599, 1053, 599, 599, 599, 1053, 1053, 599, 434, 1053,
1584 434, 1053, 1053, 1053, 434, 1053, 434, 434, 434, 1053,
1585 1053, 434, 601, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1586 1053, 1053, 1053, 1053, 1053, 601, 1053, 601, 601, 601,
1587
1588 1053, 1053, 601, 438, 438, 1053, 438, 1053, 1053, 1053,
1589 438, 1053, 438, 438, 438, 1053, 1053, 438, 443, 443,
1590 1053, 443, 443, 443, 443, 443, 443, 1053, 443, 443,
1591 443, 443, 443, 443, 443, 443, 443, 443, 1053, 443,
1592 443, 443, 443, 443, 443, 447, 1053, 1053, 447, 1053,
1593 1053, 1053, 447, 1053, 447, 447, 447, 1053, 1053, 447,
1594 449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
1595 449, 449, 449, 449, 449, 449, 449, 449, 1053, 449,
1596 449, 449, 449, 449, 449, 449, 449, 451, 451, 1053,
1597 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
1598
1599 451, 451, 451, 451, 451, 1053, 451, 451, 451, 451,
1600 451, 451, 451, 451, 608, 1053, 1053, 1053, 1053, 1053,
1601 1053, 1053, 1053, 1053, 1053, 1053, 1053, 608, 1053, 608,
1602 608, 608, 1053, 1053, 608, 458, 1053, 1053, 458, 1053,
1603 1053, 1053, 458, 1053, 458, 458, 458, 1053, 1053, 458,
1604 462, 462, 1053, 462, 462, 462, 462, 462, 462, 462,
1605 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
1606 462, 462, 462, 462, 462, 462, 462, 465, 465, 1053,
1607 465, 1053, 465, 465, 465, 465, 1053, 465, 465, 465,
1608 465, 1053, 465, 465, 465, 1053, 465, 1053, 465, 465,
1609
1610 465, 465, 465, 465, 473, 1053, 1053, 473, 1053, 1053,
1611 1053, 473, 1053, 473, 473, 473, 1053, 1053, 473, 481,
1612 481, 1053, 481, 1053, 481, 481, 481, 481, 481, 481,
1613 481, 481, 481, 481, 481, 481, 481, 1053, 481, 1053,
1614 481, 481, 481, 481, 481, 481, 485, 485, 1053, 485,
1615 1053, 485, 485, 485, 485, 485, 485, 485, 485, 485,
1616 485, 485, 485, 485, 1053, 485, 1053, 485, 485, 485,
1617 485, 485, 485, 494, 1053, 1053, 494, 1053, 1053, 1053,
1618 494, 1053, 494, 494, 494, 1053, 1053, 494, 498, 498,
1619 1053, 498, 498, 498, 498, 1053, 1053, 498, 498, 498,
1620
1621 498, 498, 498, 498, 498, 498, 1053, 498, 1053, 498,
1622 498, 498, 498, 498, 498, 507, 1053, 507, 507, 1053,
1623 1053, 507, 1053, 507, 507, 507, 1053, 1053, 507, 505,
1624 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1625 1053, 1053, 505, 1053, 505, 505, 505, 1053, 1053, 505,
1626 512, 1053, 512, 512, 1053, 1053, 512, 1053, 512, 512,
1627 512, 1053, 1053, 512, 510, 1053, 1053, 1053, 1053, 1053,
1628 1053, 1053, 1053, 1053, 1053, 1053, 1053, 510, 1053, 510,
1629 510, 510, 1053, 1053, 510, 515, 515, 1053, 515, 515,
1630 515, 515, 515, 515, 515, 515, 515, 515, 515, 515,
1631
1632 515, 515, 515, 1053, 515, 1053, 515, 515, 515, 515,
1633 515, 515, 518, 1053, 1053, 518, 1053, 1053, 1053, 518,
1634 1053, 518, 518, 518, 1053, 1053, 518, 520, 520, 1053,
1635 520, 520, 520, 520, 520, 520, 520, 520, 520, 1053,
1636 520, 520, 520, 520, 520, 520, 520, 1053, 520, 520,
1637 520, 520, 520, 520, 523, 523, 1053, 523, 523, 523,
1638 523, 523, 523, 1053, 523, 523, 523, 523, 523, 523,
1639 523, 523, 1053, 523, 1053, 523, 523, 523, 523, 523,
1640 523, 528, 528, 1053, 1053, 528, 1053, 528, 528, 528,
1641 1053, 1053, 528, 646, 646, 1053, 646, 646, 646, 1053,
1642
1643 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
1644 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
1645 530, 530, 1053, 530, 1053, 1053, 1053, 530, 1053, 530,
1646 530, 530, 280, 1053, 280, 280, 1053, 280, 1053, 1053,
1647 280, 280, 1053, 280, 280, 280, 535, 1053, 1053, 535,
1648 1053, 535, 535, 535, 535, 535, 535, 535, 535, 535,
1649 535, 535, 535, 535, 535, 535, 535, 535, 535, 535,
1650 535, 535, 535, 653, 653, 1053, 653, 653, 653, 653,
1651 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
1652 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
1653
1654 549, 1053, 1053, 549, 1053, 1053, 1053, 1053, 1053, 1053,
1655 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 549, 1053,
1656 549, 549, 549, 300, 1053, 1053, 300, 1053, 1053, 1053,
1657 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1658 1053, 300, 1053, 300, 300, 300, 664, 664, 1053, 664,
1659 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
1660 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
1661 1053, 664, 664, 312, 1053, 1053, 312, 1053, 1053, 1053,
1662 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1663 1053, 312, 312, 312, 312, 312, 571, 1053, 571, 571,
1664
1665 571, 571, 571, 1053, 1053, 571, 571, 571, 571, 571,
1666 1053, 1053, 571, 327, 1053, 327, 327, 327, 327, 327,
1667 1053, 1053, 327, 327, 327, 327, 327, 1053, 1053, 327,
1668 335, 1053, 335, 335, 335, 1053, 1053, 335, 577, 1053,
1669 1053, 1053, 577, 1053, 577, 577, 577, 1053, 1053, 577,
1670 578, 1053, 578, 578, 578, 578, 578, 1053, 1053, 578,
1671 578, 578, 578, 578, 1053, 1053, 578, 358, 1053, 358,
1672 358, 358, 358, 358, 1053, 1053, 358, 358, 358, 358,
1673 358, 1053, 1053, 358, 581, 1053, 581, 581, 581, 581,
1674 581, 581, 1053, 581, 581, 581, 581, 581, 1053, 1053,
1675
1676 581, 366, 1053, 366, 366, 366, 366, 366, 366, 1053,
1677 366, 366, 366, 366, 366, 1053, 1053, 366, 584, 584,
1678 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
1679 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
1680 584, 584, 584, 584, 584, 586, 1053, 1053, 586, 1053,
1681 1053, 586, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 586,
1682 1053, 1053, 1053, 586, 1053, 586, 586, 586, 1053, 1053,
1683 586, 590, 1053, 590, 590, 590, 590, 590, 1053, 1053,
1684 590, 590, 590, 590, 590, 1053, 1053, 590, 403, 1053,
1685 403, 403, 403, 403, 403, 1053, 1053, 403, 403, 403,
1686
1687 403, 403, 1053, 1053, 403, 688, 688, 688, 688, 1053,
1688 688, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 688,
1689 688, 1053, 1053, 688, 1053, 688, 688, 688, 1053, 1053,
1690 688, 593, 593, 593, 593, 1053, 593, 1053, 1053, 1053,
1691 1053, 1053, 1053, 1053, 1053, 1053, 593, 1053, 1053, 593,
1692 1053, 593, 593, 593, 1053, 1053, 593, 596, 596, 596,
1693 596, 1053, 596, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1694 1053, 596, 596, 1053, 1053, 596, 1053, 596, 596, 596,
1695 1053, 1053, 596, 599, 1053, 1053, 1053, 599, 1053, 599,
1696 599, 599, 1053, 1053, 599, 601, 1053, 601, 601, 601,
1697
1698 1053, 1053, 601, 692, 1053, 692, 1053, 1053, 1053, 692,
1699 1053, 692, 692, 692, 1053, 1053, 692, 608, 1053, 608,
1700 608, 608, 1053, 1053, 608, 698, 1053, 1053, 1053, 698,
1701 1053, 698, 698, 698, 1053, 1053, 698, 709, 709, 709,
1702 709, 709, 709, 709, 709, 709, 709, 709, 709, 709,
1703 709, 709, 1053, 709, 709, 709, 1053, 709, 1053, 1053,
1704 709, 709, 709, 709, 505, 1053, 505, 505, 505, 1053,
1705 1053, 505, 510, 1053, 510, 510, 510, 1053, 1053, 510,
1706 646, 646, 1053, 646, 646, 646, 646, 646, 646, 646,
1707 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
1708
1709 646, 646, 646, 646, 646, 646, 646, 731, 1053, 1053,
1710 731, 1053, 1053, 1053, 731, 1053, 731, 731, 731, 285,
1711 1053, 285, 1053, 285, 285, 1053, 285, 1053, 1053, 285,
1712 285, 1053, 285, 285, 285, 653, 653, 1053, 653, 653,
1713 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
1714 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
1715 653, 653, 300, 1053, 1053, 300, 1053, 1053, 1053, 1053,
1716 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1717 300, 1053, 300, 300, 300, 664, 664, 1053, 664, 664,
1718 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
1719
1720 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
1721 664, 664, 668, 668, 668, 668, 668, 312, 1053, 1053,
1722 312, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1723 1053, 1053, 1053, 1053, 1053, 312, 312, 312, 312, 312,
1724 327, 1053, 327, 327, 327, 327, 327, 1053, 1053, 327,
1725 327, 327, 327, 327, 1053, 1053, 327, 358, 1053, 358,
1726 358, 358, 358, 358, 1053, 1053, 358, 358, 358, 358,
1727 358, 1053, 1053, 358, 366, 1053, 366, 366, 366, 366,
1728 366, 366, 1053, 366, 366, 366, 366, 366, 1053, 1053,
1729 366, 759, 1053, 759, 759, 759, 1053, 1053, 759, 802,
1730
1731 802, 1053, 802, 1053, 1053, 1053, 802, 1053, 802, 802,
1732 802, 739, 739, 739, 739, 739, 739, 739, 739, 739,
1733 739, 739, 739, 739, 739, 739, 739, 739, 739, 739,
1734 1053, 739, 1053, 1053, 1053, 739, 739, 739, 825, 825,
1735 825, 825, 1053, 825, 1053, 1053, 1053, 1053, 1053, 1053,
1736 1053, 1053, 825, 825, 1053, 1053, 825, 1053, 825, 825,
1737 825, 1053, 1053, 825, 849, 849, 849, 849, 849, 849,
1738 849, 849, 849, 849, 849, 849, 849, 849, 849, 1053,
1739 849, 849, 849, 1053, 849, 1053, 849, 1053, 849, 849,
1740 849, 914, 914, 914, 914, 914, 914, 914, 914, 914,
1741
1742 914, 914, 914, 914, 914, 914, 1053, 914, 914, 914,
1743 1053, 914, 1053, 1053, 1053, 914, 914, 914, 915, 915,
1744 915, 915, 915, 915, 915, 915, 915, 915, 915, 915,
1745 915, 915, 915, 1053, 915, 915, 915, 1053, 915, 1053,
1746 1053, 1053, 915, 915, 915, 963, 963, 963, 963, 963,
1747 963, 963, 963, 963, 963, 963, 963, 963, 963, 963,
1748 1053, 963, 963, 963, 1053, 963, 1053, 1053, 1053, 963,
1749 963, 963, 973, 973, 973, 973, 973, 973, 973, 973,
1750 973, 973, 973, 973, 973, 973, 973, 1053, 973, 973,
1751 973, 1053, 973, 1053, 1053, 1053, 973, 973, 973, 79,
1752
1753 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1754 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1755 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1756 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1757 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1758 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1759 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053
1760 } ;
1761
1762static yyconst flex_int16_t yy_chk[7569] =
1763 { 0,
1764 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1765 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1766 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1767 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1768 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1769 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1770 3, 3, 3, 3, 3, 3, 3, 3, 4, 21,
1771 22, 4, 23, 21, 22, 24, 23, 47, 48, 24,
1772 1047, 4, 4, 5, 5, 5, 5, 5, 5, 5,
1773 5, 5, 5, 5, 5, 57, 5, 58, 5, 5,
1774
1775 294, 35, 5, 5, 5, 5, 21, 22, 36, 23,
1776 35, 1043, 24, 205, 47, 48, 106, 36, 205, 294,
1777 106, 5, 5, 5, 43, 43, 482, 43, 482, 43,
1778 44, 44, 57, 44, 58, 44, 51, 51, 35, 51,
1779 52, 52, 63, 52, 64, 36, 1040, 5, 5, 5,
1780 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1781 6, 6, 43, 6, 39, 6, 6, 40, 44, 6,
1782 6, 6, 6, 39, 51, 53, 40, 53, 52, 63,
1783 521, 64, 98, 98, 39, 269, 98, 40, 6, 6,
1784 6, 109, 109, 109, 109, 53, 521, 90, 1036, 90,
1785
1786 90, 39, 90, 90, 40, 109, 98, 90, 195, 109,
1787 269, 195, 53, 195, 6, 6, 6, 9, 9, 9,
1788 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1789 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1790 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1791 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1792 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1793 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1794 9, 9, 9, 9, 9, 11, 11, 11, 11, 11,
1795 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1796
1797 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1798 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1799 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1800 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1801 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1802 11, 11, 11, 13, 13, 13, 13, 13, 13, 13,
1803 13, 13, 13, 13, 13, 75, 13, 299, 13, 13,
1804 76, 186, 13, 13, 13, 13, 45, 75, 45, 54,
1805 186, 54, 76, 220, 246, 45, 299, 220, 246, 221,
1806 45, 13, 13, 13, 221, 46, 45, 46, 221, 54,
1807
1808 83, 83, 75, 83, 46, 1033, 251, 76, 186, 46,
1809 251, 288, 288, 45, 69, 46, 54, 13, 13, 13,
1810 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1811 14, 14, 46, 14, 69, 14, 14, 70, 83, 14,
1812 14, 14, 14, 55, 56, 55, 56, 286, 99, 99,
1813 286, 69, 99, 110, 110, 110, 110, 70, 14, 14,
1814 14, 1032, 61, 55, 56, 107, 107, 110, 107, 61,
1815 61, 110, 99, 335, 70, 115, 115, 335, 115, 337,
1816 55, 56, 61, 337, 14, 14, 14, 15, 15, 15,
1817 15, 15, 15, 15, 15, 15, 15, 15, 15, 61,
1818
1819 15, 71, 15, 15, 62, 107, 15, 15, 15, 15,
1820 72, 62, 62, 77, 1031, 115, 116, 116, 116, 116,
1821 306, 71, 77, 116, 62, 15, 15, 15, 82, 306,
1822 72, 82, 505, 77, 214, 214, 505, 214, 71, 142,
1823 142, 62, 142, 322, 322, 549, 322, 72, 549, 82,
1824 77, 15, 15, 15, 16, 16, 16, 16, 16, 16,
1825 16, 16, 16, 16, 16, 16, 82, 16, 78, 16,
1826 16, 1050, 214, 16, 16, 16, 16, 78, 87, 142,
1827 87, 87, 87, 87, 114, 114, 114, 114, 78, 1050,
1828 87, 225, 16, 16, 16, 225, 289, 1038, 114, 786,
1829
1830 507, 225, 114, 225, 507, 78, 786, 87, 138, 138,
1831 138, 138, 1038, 323, 323, 138, 323, 289, 16, 16,
1832 16, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1833 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1834 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1835 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1836 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1837 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1838 17, 17, 17, 17, 17, 17, 17, 17, 17, 19,
1839 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1840
1841 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1842 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1843 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1844 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1845 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1846 19, 19, 19, 19, 19, 19, 19, 25, 25, 25,
1847 25, 25, 25, 25, 25, 25, 25, 25, 25, 1014,
1848 25, 92, 25, 25, 92, 1030, 25, 25, 25, 25,
1849 146, 146, 1014, 146, 92, 92, 111, 111, 111, 111,
1850 120, 120, 92, 111, 120, 25, 25, 25, 100, 100,
1851
1852 111, 100, 150, 150, 111, 150, 1028, 330, 330, 92,
1853 330, 305, 100, 100, 120, 510, 100, 1028, 1026, 510,
1854 146, 25, 25, 25, 26, 26, 26, 26, 26, 26,
1855 26, 26, 26, 26, 26, 26, 100, 26, 100, 26,
1856 26, 305, 150, 26, 26, 26, 26, 94, 94, 1025,
1857 94, 111, 489, 121, 121, 1023, 94, 121, 94, 94,
1858 94, 94, 26, 26, 26, 291, 489, 305, 94, 132,
1859 132, 132, 132, 170, 170, 170, 170, 121, 339, 339,
1860 170, 339, 997, 132, 997, 94, 291, 132, 26, 26,
1861 26, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1862
1863 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1864 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1865 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1866 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1867 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1868 27, 27, 27, 27, 27, 27, 27, 27, 27, 29,
1869 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1870 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1871 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1872 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1873
1874 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1875 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1876 29, 29, 29, 29, 29, 29, 29, 31, 31, 31,
1877 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1878 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1879 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1880 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1881 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1882 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1883 31, 31, 31, 31, 31, 33, 33, 33, 33, 33,
1884
1885 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1886 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1887 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1888 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1889 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1890 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1891 33, 33, 33, 37, 37, 37, 37, 37, 37, 37,
1892 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1893 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1894 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1895
1896 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1897 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1898 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1899 37, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1900 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1901 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1902 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1903 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1904 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1905 41, 41, 41, 41, 41, 41, 41, 41, 41, 49,
1906
1907 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1908 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1909 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1910 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1911 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1912 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1913 49, 49, 49, 49, 49, 49, 49, 59, 59, 59,
1914 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1915 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1916 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1917
1918 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1919 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1920 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1921 59, 59, 59, 59, 59, 65, 65, 65, 65, 65,
1922 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1923 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1924 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1925 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1926 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1927 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1928
1929 65, 65, 65, 67, 67, 67, 67, 67, 67, 67,
1930 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1931 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1932 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1933 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1934 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1935 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
1936 67, 73, 73, 73, 73, 73, 73, 73, 73, 73,
1937 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
1938 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
1939
1940 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
1941 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
1942 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
1943 73, 73, 73, 73, 73, 73, 73, 73, 73, 88,
1944 112, 112, 112, 112, 1022, 127, 127, 112, 290, 127,
1945 88, 127, 154, 154, 112, 1021, 154, 1020, 112, 312,
1946 88, 292, 312, 88, 88, 290, 1019, 88, 88, 127,
1947 88, 88, 1018, 512, 128, 128, 154, 512, 128, 88,
1948 128, 295, 292, 88, 88, 123, 123, 290, 123, 88,
1949 88, 88, 88, 88, 88, 89, 89, 312, 128, 123,
1950
1951 123, 517, 295, 123, 129, 112, 1017, 226, 89, 89,
1952 89, 1010, 226, 129, 129, 644, 226, 129, 328, 129,
1953 542, 328, 226, 123, 226, 123, 517, 89, 1009, 350,
1954 350, 89, 350, 89, 89, 89, 1007, 129, 155, 155,
1955 542, 328, 155, 131, 131, 644, 131, 89, 161, 161,
1956 89, 161, 89, 89, 89, 91, 91, 131, 131, 1006,
1957 774, 131, 155, 131, 133, 133, 133, 133, 91, 91,
1958 91, 644, 134, 134, 134, 134, 774, 386, 133, 134,
1959 386, 131, 133, 131, 1005, 386, 134, 91, 161, 91,
1960 134, 91, 449, 91, 91, 91, 1004, 135, 135, 135,
1961
1962 135, 449, 169, 169, 135, 169, 270, 91, 1003, 270,
1963 91, 135, 91, 91, 91, 135, 137, 137, 137, 137,
1964 361, 361, 545, 361, 137, 156, 156, 270, 156, 449,
1965 137, 790, 1002, 655, 137, 273, 273, 134, 273, 156,
1966 156, 545, 169, 156, 270, 790, 163, 163, 163, 163,
1967 160, 160, 160, 160, 655, 1001, 1000, 160, 175, 175,
1968 163, 175, 135, 156, 163, 156, 160, 160, 160, 164,
1969 164, 164, 164, 273, 165, 165, 165, 165, 546, 371,
1970 371, 165, 371, 164, 991, 990, 460, 164, 165, 460,
1971 979, 460, 165, 166, 166, 166, 166, 546, 175, 736,
1972
1973 166, 168, 168, 168, 168, 178, 178, 166, 178, 181,
1974 181, 166, 181, 978, 976, 168, 189, 189, 736, 168,
1975 208, 208, 1048, 208, 212, 212, 1048, 212, 975, 189,
1976 189, 189, 229, 229, 552, 229, 969, 552, 968, 165,
1977 233, 233, 967, 233, 554, 178, 966, 554, 189, 181,
1978 239, 239, 965, 239, 242, 242, 622, 242, 166, 622,
1979 208, 964, 274, 274, 212, 274, 550, 293, 313, 550,
1980 293, 313, 229, 550, 937, 189, 190, 190, 541, 190,
1981 233, 541, 190, 190, 936, 1045, 314, 293, 315, 314,
1982 239, 315, 1045, 935, 242, 190, 190, 190, 541, 554,
1983
1984 274, 293, 311, 550, 311, 311, 313, 311, 311, 622,
1985 316, 934, 311, 316, 190, 317, 190, 561, 317, 313,
1986 561, 933, 317, 293, 314, 553, 315, 319, 553, 550,
1987 319, 318, 932, 315, 318, 327, 327, 320, 931, 327,
1988 320, 190, 271, 271, 930, 314, 388, 388, 316, 388,
1989 320, 320, 317, 317, 929, 271, 271, 271, 320, 327,
1990 329, 329, 561, 316, 329, 319, 928, 332, 332, 318,
1991 559, 332, 553, 559, 271, 320, 318, 543, 317, 927,
1992 543, 271, 271, 319, 329, 318, 359, 393, 393, 359,
1993 393, 332, 342, 342, 342, 342, 926, 543, 925, 271,
1994
1995 271, 271, 272, 272, 332, 640, 342, 924, 640, 359,
1996 342, 347, 347, 347, 347, 272, 272, 272, 347, 923,
1997 922, 343, 343, 343, 343, 921, 920, 559, 343, 345,
1998 345, 345, 345, 919, 272, 343, 345, 398, 398, 343,
1999 398, 272, 272, 345, 917, 916, 912, 345, 353, 353,
2000 353, 353, 911, 406, 406, 353, 406, 910, 909, 272,
2001 272, 272, 284, 415, 415, 284, 415, 284, 284, 284,
2002 284, 284, 284, 284, 284, 284, 284, 284, 284, 908,
2003 907, 284, 284, 284, 284, 367, 343, 906, 367, 346,
2004 346, 346, 346, 905, 345, 349, 349, 349, 349, 904,
2005
2006 284, 284, 284, 346, 903, 901, 900, 346, 367, 349,
2007 358, 358, 649, 349, 358, 649, 899, 348, 348, 348,
2008 348, 898, 426, 426, 348, 426, 284, 284, 284, 284,
2009 300, 348, 897, 300, 358, 348, 300, 300, 354, 354,
2010 354, 354, 360, 360, 654, 354, 360, 654, 896, 300,
2011 300, 300, 363, 363, 366, 366, 363, 895, 366, 894,
2012 366, 368, 368, 893, 654, 368, 360, 368, 300, 374,
2013 374, 374, 374, 373, 373, 892, 363, 373, 366, 373,
2014 403, 403, 348, 374, 403, 368, 890, 374, 404, 363,
2015 889, 404, 888, 300, 300, 300, 885, 373, 375, 375,
2016
2017 375, 375, 884, 875, 403, 375, 377, 377, 377, 377,
2018 373, 404, 375, 377, 405, 405, 375, 874, 405, 658,
2019 377, 873, 658, 872, 377, 378, 378, 378, 378, 379,
2020 379, 379, 379, 378, 435, 435, 379, 435, 405, 378,
2021 871, 870, 869, 378, 380, 380, 380, 380, 868, 867,
2022 866, 380, 381, 381, 381, 381, 440, 440, 380, 440,
2023 381, 865, 380, 375, 408, 408, 381, 864, 408, 863,
2024 381, 377, 383, 383, 383, 383, 384, 384, 384, 384,
2025 383, 444, 444, 384, 444, 862, 383, 861, 408, 860,
2026 383, 385, 385, 385, 385, 859, 455, 455, 385, 455,
2027
2028 858, 408, 857, 409, 409, 409, 409, 855, 853, 380,
2029 409, 410, 410, 410, 410, 412, 412, 412, 412, 409,
2030 409, 409, 412, 414, 414, 414, 414, 850, 848, 410,
2031 414, 412, 412, 412, 418, 418, 418, 418, 847, 414,
2032 414, 414, 419, 419, 419, 419, 846, 845, 418, 419,
2033 470, 470, 418, 470, 474, 474, 419, 474, 844, 843,
2034 419, 421, 421, 421, 421, 842, 841, 840, 421, 422,
2035 422, 422, 422, 477, 477, 421, 477, 491, 491, 421,
2036 491, 495, 495, 422, 495, 839, 838, 422, 423, 423,
2037 423, 423, 837, 836, 835, 423, 424, 424, 424, 424,
2038
2039 834, 499, 499, 424, 499, 502, 502, 419, 502, 555,
2040 424, 477, 555, 833, 424, 425, 425, 425, 425, 832,
2041 429, 429, 429, 429, 831, 566, 421, 429, 566, 425,
2042 830, 828, 827, 425, 430, 430, 430, 430, 826, 822,
2043 585, 430, 560, 585, 821, 560, 820, 564, 585, 567,
2044 564, 565, 567, 555, 565, 663, 568, 726, 663, 568,
2045 726, 424, 534, 566, 817, 534, 816, 534, 534, 534,
2046 534, 534, 534, 534, 534, 534, 534, 534, 534, 806,
2047 566, 534, 534, 534, 534, 564, 560, 567, 740, 565,
2048 805, 740, 569, 567, 568, 569, 564, 804, 565, 803,
2049
2050 534, 534, 534, 570, 663, 802, 570, 571, 571, 662,
2051 801, 571, 662, 568, 572, 572, 573, 573, 572, 800,
2052 573, 578, 578, 799, 798, 578, 534, 534, 534, 534,
2053 569, 571, 665, 579, 579, 665, 569, 579, 572, 797,
2054 573, 570, 580, 580, 586, 578, 580, 586, 570, 581,
2055 581, 573, 586, 581, 796, 581, 795, 579, 582, 582,
2056 667, 794, 582, 667, 582, 662, 580, 675, 583, 583,
2057 675, 793, 583, 581, 583, 590, 590, 580, 792, 590,
2058 591, 591, 582, 791, 591, 592, 592, 789, 741, 592,
2059 665, 741, 583, 788, 593, 593, 593, 593, 787, 590,
2060
2061 785, 593, 784, 583, 591, 675, 667, 783, 782, 592,
2062 593, 593, 593, 675, 594, 594, 594, 594, 781, 780,
2063 592, 594, 595, 595, 595, 595, 779, 856, 977, 595,
2064 856, 977, 594, 741, 596, 596, 596, 596, 595, 595,
2065 595, 596, 648, 778, 648, 1024, 648, 648, 1024, 777,
2066 596, 596, 596, 776, 648, 661, 661, 661, 661, 661,
2067 661, 661, 661, 661, 661, 661, 661, 661, 661, 661,
2068 661, 661, 661, 661, 661, 661, 661, 661, 661, 661,
2069 661, 661, 661, 661, 661, 661, 661, 661, 661, 661,
2070 661, 661, 661, 661, 661, 661, 661, 661, 661, 661,
2071
2072 661, 661, 661, 661, 661, 661, 661, 661, 661, 661,
2073 661, 661, 661, 661, 661, 661, 661, 661, 661, 661,
2074 661, 661, 661, 666, 672, 669, 666, 672, 669, 807,
2075 676, 676, 807, 775, 676, 876, 679, 679, 876, 773,
2076 679, 687, 687, 687, 687, 772, 808, 771, 687, 808,
2077 810, 770, 742, 810, 676, 742, 769, 687, 687, 687,
2078 679, 768, 672, 669, 671, 673, 767, 671, 673, 676,
2079 766, 674, 807, 672, 674, 679, 876, 666, 669, 670,
2080 670, 670, 670, 670, 670, 670, 670, 670, 670, 670,
2081 670, 670, 670, 670, 670, 670, 670, 670, 670, 670,
2082
2083 670, 670, 671, 673, 808, 742, 765, 764, 810, 674,
2084 680, 680, 939, 763, 680, 939, 680, 670, 670, 670,
2085 671, 744, 762, 673, 744, 674, 685, 685, 877, 878,
2086 685, 877, 878, 761, 680, 688, 688, 688, 688, 760,
2087 757, 756, 688, 670, 670, 670, 670, 755, 752, 680,
2088 685, 688, 688, 688, 689, 689, 689, 689, 702, 702,
2089 751, 689, 743, 702, 738, 685, 702, 702, 939, 737,
2090 744, 702, 689, 877, 878, 702, 702, 732, 735, 732,
2091 745, 732, 732, 745, 734, 1035, 750, 750, 1035, 732,
2092 750, 759, 759, 759, 759, 731, 1037, 1041, 759, 1037,
2093
2094 1041, 940, 1044, 1046, 940, 1044, 1046, 759, 759, 759,
2095 750, 747, 749, 729, 747, 749, 748, 750, 745, 748,
2096 811, 879, 728, 811, 879, 745, 746, 746, 746, 746,
2097 746, 746, 746, 746, 746, 746, 746, 746, 746, 746,
2098 746, 746, 746, 746, 746, 746, 746, 746, 746, 747,
2099 749, 753, 753, 940, 748, 753, 747, 812, 811, 879,
2100 812, 749, 811, 727, 746, 746, 746, 725, 724, 748,
2101 754, 754, 723, 722, 754, 753, 754, 879, 813, 758,
2102 758, 813, 753, 758, 814, 815, 815, 814, 721, 815,
2103 746, 746, 746, 746, 754, 812, 880, 720, 719, 880,
2104
2105 812, 754, 718, 758, 818, 818, 717, 716, 818, 815,
2106 758, 819, 819, 815, 715, 819, 813, 819, 1049, 823,
2107 823, 1049, 814, 823, 881, 714, 994, 881, 818, 994,
2108 882, 712, 818, 882, 880, 819, 813, 880, 938, 819,
2109 711, 938, 814, 823, 710, 708, 707, 823, 824, 824,
2110 824, 824, 706, 705, 704, 824, 825, 825, 825, 825,
2111 703, 701, 881, 825, 824, 824, 824, 944, 882, 881,
2112 944, 994, 825, 825, 825, 882, 883, 883, 886, 886,
2113 883, 700, 886, 887, 887, 941, 941, 887, 941, 887,
2114 891, 891, 942, 699, 891, 942, 938, 697, 943, 696,
2115
2116 883, 943, 886, 995, 695, 944, 995, 887, 694, 945,
2117 945, 948, 948, 945, 891, 948, 693, 692, 883, 944,
2118 886, 996, 996, 941, 996, 887, 998, 953, 953, 998,
2119 942, 953, 891, 945, 691, 948, 943, 949, 949, 999,
2120 690, 949, 999, 949, 1012, 1013, 1015, 1012, 1013, 1015,
2121 942, 953, 684, 683, 943, 1016, 995, 1027, 1016, 996,
2122 1027, 949, 1029, 1039, 998, 1029, 1039, 1052, 1052, 682,
2123 1052, 998, 1139, 678, 1139, 1139, 1139, 999, 1200, 677,
2124 668, 1200, 1200, 664, 1015, 657, 1013, 656, 1012, 653,
2125 1015, 652, 999, 1016, 651, 1208, 1016, 1208, 1208, 1208,
2126
2127 1029, 1039, 646, 645, 643, 1052, 641, 1211, 1027, 1211,
2128 1211, 1211, 639, 1029, 1054, 1054, 1054, 1054, 1054, 1054,
2129 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054,
2130 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054,
2131 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
2132 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
2133 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056, 1056,
2134 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
2135 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
2136 1056, 1056, 1056, 1056, 1056, 1057, 1057, 1057, 1057, 1057,
2137
2138 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
2139 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
2140 1057, 1057, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058,
2141 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058,
2142 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1059,
2143 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
2144 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
2145 1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060, 1060, 1060,
2146 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
2147 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
2148
2149 1060, 1060, 1060, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
2150 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
2151 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
2152 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
2153 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
2154 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1063, 1063, 1063,
2155 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
2156 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
2157 1063, 1063, 1063, 1063, 1064, 1064, 1064, 1064, 1064, 1064,
2158 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
2159
2160 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
2161 1064, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
2162 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
2163 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066,
2164 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
2165 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
2166 1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067, 1067,
2167 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
2168 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
2169 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
2170
2171 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
2172 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069,
2173 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
2174 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
2175 1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070,
2176 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
2177 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
2178 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1071,
2179 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071,
2180 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071,
2181
2182 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
2183 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
2184 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1073, 1073, 1073,
2185 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
2186 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
2187 1073, 1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1074,
2188 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
2189 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
2190 1074, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075,
2191 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075,
2192
2193 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076,
2194 638, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
2195 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
2196 1076, 1076, 1076, 1076, 1076, 1077, 1212, 634, 1212, 1212,
2197 1212, 1237, 632, 630, 1237, 1237, 629, 628, 1077, 627,
2198 1077, 1077, 1077, 626, 625, 1077, 1078, 624, 1078, 1078,
2199 623, 1078, 621, 620, 1078, 1078, 619, 1078, 1078, 1078,
2200 1079, 618, 1079, 1079, 1079, 1079, 617, 1079, 616, 615,
2201 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1242, 614,
2202 1242, 1242, 1242, 613, 612, 611, 610, 609, 1080, 1080,
2203
2204 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 606, 1081,
2205 1081, 605, 1081, 604, 603, 1081, 1081, 602, 1081, 1081,
2206 1081, 1082, 1082, 601, 598, 597, 589, 588, 587, 584,
2207 576, 575, 548, 1082, 1082, 1082, 1082, 1082, 1082, 1082,
2208 1082, 1082, 1083, 1083, 547, 1083, 1083, 1083, 1083, 1083,
2209 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
2210 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084,
2211 540, 1084, 1084, 1084, 1084, 1084, 539, 538, 1084, 1084,
2212 1084, 1084, 1084, 536, 535, 1084, 1085, 1085, 1085, 1085,
2213 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
2214
2215 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
2216 1085, 1085, 1085, 1086, 533, 1086, 1086, 1086, 530, 528,
2217 1086, 1087, 527, 1087, 1087, 526, 525, 1087, 522, 1087,
2218 1087, 1087, 519, 516, 1087, 1088, 1088, 1088, 1088, 514,
2219 1088, 513, 511, 509, 508, 506, 504, 1088, 501, 497,
2220 1088, 493, 490, 1088, 488, 1088, 1088, 1088, 487, 1088,
2221 1088, 1089, 1089, 1089, 1089, 486, 484, 483, 480, 479,
2222 476, 472, 469, 1089, 468, 1089, 1089, 464, 462, 1089,
2223 461, 1089, 1089, 1089, 459, 457, 1089, 1090, 1090, 1090,
2224 1090, 454, 1090, 452, 451, 448, 446, 442, 439, 438,
2225
2226 437, 434, 433, 432, 428, 1090, 420, 1090, 1090, 1090,
2227 417, 413, 1090, 1091, 1091, 401, 1091, 1091, 1091, 1091,
2228 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
2229 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
2230 1092, 400, 1092, 1092, 1092, 1092, 1092, 396, 395, 1092,
2231 1092, 1092, 1092, 1092, 391, 390, 1092, 1093, 1093, 376,
2232 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2233 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2234 1093, 1093, 1093, 1093, 1094, 370, 1094, 1094, 1094, 1094,
2235 1094, 1094, 365, 1094, 1094, 1094, 1094, 1094, 364, 356,
2236
2237 1094, 1095, 1095, 1095, 1095, 352, 1095, 344, 341, 338,
2238 336, 333, 325, 1095, 307, 304, 1095, 303, 302, 1095,
2239 301, 1095, 1095, 1095, 297, 1095, 1095, 1096, 1096, 1096,
2240 1096, 296, 287, 1096, 285, 280, 279, 276, 275, 1096,
2241 268, 1096, 1096, 264, 263, 1096, 260, 1096, 1096, 1096,
2242 256, 255, 1096, 1097, 1097, 1097, 1097, 252, 1097, 247,
2243 216, 204, 203, 202, 198, 197, 193, 188, 185, 177,
2244 174, 1097, 167, 1097, 1097, 1097, 153, 149, 1097, 1098,
2245 145, 136, 1098, 126, 122, 119, 1098, 113, 1098, 1098,
2246 1098, 101, 97, 1098, 1099, 1099, 93, 1099, 1099, 1099,
2247
2248 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
2249 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
2250 1099, 1100, 1100, 86, 1100, 1100, 1100, 1100, 1100, 1100,
2251 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
2252 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1101, 1101,
2253 85, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
2254 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
2255 1101, 1101, 1101, 1101, 1101, 1102, 84, 1102, 1102, 1102,
2256 1102, 1102, 79, 8, 1102, 1102, 1102, 1102, 1102, 7,
2257 0, 1102, 1103, 0, 1103, 1103, 1103, 0, 0, 1103,
2258
2259 1104, 1104, 1104, 1104, 0, 1104, 0, 0, 0, 0,
2260 0, 0, 0, 0, 1104, 1104, 0, 0, 1104, 0,
2261 1104, 1104, 1104, 0, 0, 1104, 1105, 1105, 1105, 1105,
2262 0, 1105, 0, 0, 0, 0, 0, 0, 1105, 0,
2263 0, 1105, 0, 0, 1105, 0, 1105, 1105, 1105, 0,
2264 1105, 1105, 1106, 1106, 1106, 1106, 0, 0, 0, 0,
2265 0, 0, 0, 0, 1106, 0, 1106, 1106, 0, 0,
2266 1106, 0, 1106, 1106, 1106, 0, 0, 1106, 1107, 1107,
2267 1107, 1107, 0, 1107, 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0, 1107, 0, 1107, 1107,
2269
2270 1107, 0, 0, 1107, 1108, 0, 1108, 1108, 1108, 0,
2271 0, 1108, 1109, 0, 1109, 0, 0, 0, 1109, 0,
2272 1109, 1109, 1109, 0, 0, 1109, 1110, 1110, 0, 1110,
2273 0, 0, 0, 1110, 0, 1110, 1110, 1110, 0, 0,
2274 1110, 1111, 1111, 0, 1111, 1111, 1111, 1111, 1111, 1111,
2275 0, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
2276 1111, 0, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 0,
2277 0, 1112, 0, 0, 0, 1112, 0, 1112, 1112, 1112,
2278 0, 0, 1112, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
2279 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
2280
2281 1113, 0, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
2282 1114, 1114, 0, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
2283 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 0, 1114,
2284 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1115, 0, 0,
2285 1115, 0, 0, 0, 1115, 0, 1115, 1115, 1115, 0,
2286 0, 1115, 1116, 1116, 0, 1116, 1116, 1116, 1116, 1116,
2287 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
2288 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117,
2289 1117, 0, 1117, 0, 1117, 1117, 1117, 1117, 0, 1117,
2290 1117, 1117, 1117, 0, 1117, 1117, 1117, 0, 1117, 0,
2291
2292 1117, 1117, 1117, 1117, 1117, 1117, 1118, 0, 0, 1118,
2293 0, 0, 0, 1118, 0, 1118, 1118, 1118, 0, 0,
2294 1118, 1119, 1119, 0, 1119, 0, 1119, 1119, 1119, 1119,
2295 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 0,
2296 1119, 0, 1119, 1119, 1119, 1119, 1119, 1119, 1120, 1120,
2297 0, 1120, 0, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
2298 1120, 1120, 1120, 1120, 1120, 1120, 0, 1120, 0, 1120,
2299 1120, 1120, 1120, 1120, 1120, 1121, 0, 0, 1121, 0,
2300 0, 0, 1121, 0, 1121, 1121, 1121, 0, 0, 1121,
2301 1122, 1122, 0, 1122, 1122, 1122, 1122, 0, 0, 1122,
2302
2303 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 0, 1122,
2304 0, 1122, 1122, 1122, 1122, 1122, 1122, 1123, 0, 1123,
2305 1123, 1123, 0, 0, 1123, 1124, 0, 1124, 1124, 0,
2306 0, 1124, 0, 1124, 1124, 1124, 0, 0, 1124, 1125,
2307 0, 1125, 1125, 1125, 0, 0, 1125, 1126, 0, 1126,
2308 1126, 0, 0, 1126, 0, 1126, 1126, 1126, 0, 0,
2309 1126, 1127, 1127, 0, 1127, 1127, 1127, 1127, 1127, 1127,
2310 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 0,
2311 1127, 0, 1127, 1127, 1127, 1127, 1127, 1127, 1128, 0,
2312 0, 1128, 0, 0, 0, 1128, 0, 1128, 1128, 1128,
2313
2314 0, 0, 1128, 1129, 1129, 0, 1129, 1129, 1129, 1129,
2315 1129, 1129, 1129, 1129, 1129, 0, 1129, 1129, 1129, 1129,
2316 1129, 1129, 1129, 0, 1129, 1129, 1129, 1129, 1129, 1129,
2317 1130, 1130, 0, 1130, 1130, 1130, 1130, 1130, 1130, 0,
2318 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 0, 1130,
2319 0, 1130, 1130, 1130, 1130, 1130, 1130, 1131, 1131, 0,
2320 0, 0, 0, 0, 0, 0, 0, 0, 0, 1131,
2321 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1132, 1132,
2322 0, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
2323 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
2324
2325 1132, 1132, 1132, 1132, 1132, 1133, 0, 1133, 1133, 1133,
2326 0, 0, 1133, 1134, 1134, 0, 0, 1134, 0, 1134,
2327 1134, 1134, 0, 0, 1134, 1135, 0, 1135, 1135, 0,
2328 1135, 0, 0, 1135, 1135, 0, 1135, 1135, 1135, 1136,
2329 0, 0, 1136, 0, 0, 0, 1136, 0, 1136, 1136,
2330 1136, 1137, 0, 0, 1137, 0, 1137, 1137, 1137, 1137,
2331 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
2332 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1138, 0,
2333 1138, 1138, 1138, 0, 1138, 1140, 0, 1140, 1140, 0,
2334 1140, 0, 0, 1140, 1140, 0, 1140, 1140, 1140, 1141,
2335
2336 0, 0, 1141, 0, 0, 0, 0, 0, 0, 0,
2337 0, 0, 0, 0, 0, 0, 0, 1141, 1141, 1141,
2338 1141, 1141, 1142, 1142, 0, 1142, 1142, 1142, 1142, 1142,
2339 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
2340 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1143,
2341 0, 1143, 1143, 1143, 1143, 1143, 0, 0, 1143, 1143,
2342 1143, 1143, 1143, 0, 0, 1143, 1144, 0, 1144, 0,
2343 1144, 1144, 1144, 0, 0, 1144, 1144, 1144, 1144, 1144,
2344 0, 0, 1144, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
2345 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
2346
2347 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
2348 1146, 0, 1146, 1146, 0, 0, 1146, 0, 1146, 1146,
2349 1146, 0, 0, 1146, 1147, 0, 0, 0, 0, 0,
2350 0, 0, 0, 0, 0, 0, 0, 1147, 0, 1147,
2351 1147, 1147, 0, 0, 1147, 1148, 1148, 1148, 1148, 0,
2352 1148, 0, 0, 0, 0, 0, 0, 1148, 0, 0,
2353 1148, 0, 0, 1148, 0, 1148, 1148, 1148, 0, 1148,
2354 1148, 1149, 1149, 1149, 1149, 0, 0, 0, 0, 0,
2355 0, 0, 0, 1149, 0, 1149, 1149, 0, 0, 1149,
2356 0, 1149, 1149, 1149, 0, 0, 1149, 1150, 1150, 1150,
2357
2358 1150, 0, 1150, 0, 0, 0, 0, 0, 0, 0,
2359 0, 0, 0, 0, 0, 1150, 0, 1150, 1150, 1150,
2360 0, 0, 1150, 1151, 0, 0, 0, 1151, 0, 1151,
2361 1151, 1151, 0, 0, 1151, 1152, 1152, 0, 1152, 1152,
2362 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
2363 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
2364 1152, 1152, 1153, 0, 1153, 1153, 1153, 1153, 1153, 0,
2365 0, 1153, 1153, 1153, 1153, 1153, 0, 0, 1153, 1154,
2366 0, 1154, 0, 1154, 1154, 1154, 0, 0, 1154, 1154,
2367 1154, 1154, 1154, 0, 0, 1154, 1155, 1155, 0, 1155,
2368
2369 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
2370 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
2371 1155, 1155, 1155, 1156, 0, 1156, 1156, 1156, 1156, 1156,
2372 1156, 0, 1156, 1156, 1156, 1156, 1156, 0, 0, 1156,
2373 1157, 0, 1157, 0, 1157, 1157, 1157, 0, 0, 1157,
2374 1157, 1157, 1157, 1157, 0, 0, 1157, 1158, 1158, 1158,
2375 1158, 0, 1158, 0, 0, 0, 0, 0, 0, 1158,
2376 0, 0, 1158, 0, 0, 1158, 0, 1158, 1158, 1158,
2377 0, 1158, 1158, 1159, 1159, 1159, 1159, 0, 0, 1159,
2378 0, 0, 0, 0, 0, 1159, 0, 1159, 1159, 0,
2379
2380 0, 1159, 0, 1159, 1159, 1159, 0, 0, 1159, 1160,
2381 1160, 1160, 1160, 0, 1160, 0, 0, 0, 0, 0,
2382 0, 0, 0, 0, 0, 0, 0, 1160, 0, 1160,
2383 1160, 1160, 0, 0, 1160, 1161, 1161, 1161, 1161, 1161,
2384 1161, 1161, 1161, 0, 1161, 1161, 1161, 1161, 1161, 1161,
2385 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
2386 1161, 1161, 1162, 0, 0, 1162, 0, 0, 1162, 0,
2387 0, 0, 0, 0, 0, 0, 1162, 0, 0, 0,
2388 1162, 0, 1162, 1162, 1162, 0, 0, 1162, 1163, 0,
2389 0, 1163, 0, 0, 0, 1163, 0, 1163, 1163, 1163,
2390
2391 0, 0, 1163, 1164, 1164, 0, 1164, 1164, 1164, 1164,
2392 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
2393 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
2394 1165, 1165, 0, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
2395 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
2396 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1166, 1166, 0,
2397 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166,
2398 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166,
2399 1166, 1166, 1166, 1166, 1167, 0, 1167, 1167, 1167, 1167,
2400 1167, 0, 0, 1167, 1167, 1167, 1167, 1167, 0, 0,
2401
2402 1167, 1168, 0, 1168, 0, 1168, 1168, 1168, 0, 0,
2403 1168, 1168, 1168, 1168, 1168, 0, 0, 1168, 1169, 1169,
2404 1169, 1169, 0, 1169, 0, 0, 0, 0, 0, 0,
2405 0, 0, 1169, 1169, 0, 0, 1169, 0, 1169, 1169,
2406 1169, 0, 0, 1169, 1170, 0, 1170, 1170, 1170, 0,
2407 0, 1170, 1171, 1171, 1171, 1171, 0, 1171, 0, 0,
2408 0, 0, 0, 0, 0, 0, 1171, 1171, 0, 0,
2409 1171, 0, 1171, 1171, 1171, 0, 0, 1171, 1172, 1172,
2410 1172, 1172, 0, 1172, 0, 0, 0, 0, 0, 0,
2411 1172, 0, 0, 1172, 0, 0, 1172, 0, 1172, 1172,
2412
2413 1172, 0, 1172, 1172, 1173, 1173, 1173, 1173, 0, 0,
2414 0, 0, 0, 0, 0, 0, 1173, 0, 1173, 1173,
2415 0, 0, 1173, 0, 1173, 1173, 1173, 0, 0, 1173,
2416 1174, 1174, 1174, 1174, 0, 1174, 0, 0, 0, 0,
2417 0, 0, 0, 0, 0, 0, 0, 0, 1174, 0,
2418 1174, 1174, 1174, 0, 0, 1174, 1175, 0, 0, 0,
2419 1175, 0, 1175, 1175, 1175, 0, 0, 1175, 1176, 0,
2420 1176, 0, 0, 0, 1176, 0, 1176, 1176, 1176, 0,
2421 0, 1176, 1177, 0, 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 1177, 0, 1177, 1177, 1177,
2423
2424 0, 0, 1177, 1178, 1178, 0, 1178, 0, 0, 0,
2425 1178, 0, 1178, 1178, 1178, 0, 0, 1178, 1179, 1179,
2426 0, 1179, 1179, 1179, 1179, 1179, 1179, 0, 1179, 1179,
2427 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 0, 1179,
2428 1179, 1179, 1179, 1179, 1179, 1180, 0, 0, 1180, 0,
2429 0, 0, 1180, 0, 1180, 1180, 1180, 0, 0, 1180,
2430 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
2431 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 0, 1181,
2432 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182, 0,
2433 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
2434
2435 1182, 1182, 1182, 1182, 1182, 0, 1182, 1182, 1182, 1182,
2436 1182, 1182, 1182, 1182, 1183, 0, 0, 0, 0, 0,
2437 0, 0, 0, 0, 0, 0, 0, 1183, 0, 1183,
2438 1183, 1183, 0, 0, 1183, 1184, 0, 0, 1184, 0,
2439 0, 0, 1184, 0, 1184, 1184, 1184, 0, 0, 1184,
2440 1185, 1185, 0, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2441 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2442 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1186, 1186, 0,
2443 1186, 0, 1186, 1186, 1186, 1186, 0, 1186, 1186, 1186,
2444 1186, 0, 1186, 1186, 1186, 0, 1186, 0, 1186, 1186,
2445
2446 1186, 1186, 1186, 1186, 1187, 0, 0, 1187, 0, 0,
2447 0, 1187, 0, 1187, 1187, 1187, 0, 0, 1187, 1188,
2448 1188, 0, 1188, 0, 1188, 1188, 1188, 1188, 1188, 1188,
2449 1188, 1188, 1188, 1188, 1188, 1188, 1188, 0, 1188, 0,
2450 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 0, 1189,
2451 0, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
2452 1189, 1189, 1189, 1189, 0, 1189, 0, 1189, 1189, 1189,
2453 1189, 1189, 1189, 1190, 0, 0, 1190, 0, 0, 0,
2454 1190, 0, 1190, 1190, 1190, 0, 0, 1190, 1191, 1191,
2455 0, 1191, 1191, 1191, 1191, 0, 0, 1191, 1191, 1191,
2456
2457 1191, 1191, 1191, 1191, 1191, 1191, 0, 1191, 0, 1191,
2458 1191, 1191, 1191, 1191, 1191, 1192, 0, 1192, 1192, 0,
2459 0, 1192, 0, 1192, 1192, 1192, 0, 0, 1192, 1193,
2460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2461 0, 0, 1193, 0, 1193, 1193, 1193, 0, 0, 1193,
2462 1194, 0, 1194, 1194, 0, 0, 1194, 0, 1194, 1194,
2463 1194, 0, 0, 1194, 1195, 0, 0, 0, 0, 0,
2464 0, 0, 0, 0, 0, 0, 0, 1195, 0, 1195,
2465 1195, 1195, 0, 0, 1195, 1196, 1196, 0, 1196, 1196,
2466 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
2467
2468 1196, 1196, 1196, 0, 1196, 0, 1196, 1196, 1196, 1196,
2469 1196, 1196, 1197, 0, 0, 1197, 0, 0, 0, 1197,
2470 0, 1197, 1197, 1197, 0, 0, 1197, 1198, 1198, 0,
2471 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 0,
2472 1198, 1198, 1198, 1198, 1198, 1198, 1198, 0, 1198, 1198,
2473 1198, 1198, 1198, 1198, 1199, 1199, 0, 1199, 1199, 1199,
2474 1199, 1199, 1199, 0, 1199, 1199, 1199, 1199, 1199, 1199,
2475 1199, 1199, 0, 1199, 0, 1199, 1199, 1199, 1199, 1199,
2476 1199, 1201, 1201, 0, 0, 1201, 0, 1201, 1201, 1201,
2477 0, 0, 1201, 1202, 1202, 0, 1202, 1202, 1202, 0,
2478
2479 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
2480 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
2481 1203, 1203, 0, 1203, 0, 0, 0, 1203, 0, 1203,
2482 1203, 1203, 1204, 0, 1204, 1204, 0, 1204, 0, 0,
2483 1204, 1204, 0, 1204, 1204, 1204, 1205, 0, 0, 1205,
2484 0, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
2485 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
2486 1205, 1205, 1205, 1206, 1206, 0, 1206, 1206, 1206, 1206,
2487 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
2488 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
2489
2490 1207, 0, 0, 1207, 0, 0, 0, 0, 0, 0,
2491 0, 0, 0, 0, 0, 0, 0, 0, 1207, 0,
2492 1207, 1207, 1207, 1209, 0, 0, 1209, 0, 0, 0,
2493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2494 0, 1209, 0, 1209, 1209, 1209, 1210, 1210, 0, 1210,
2495 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
2496 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
2497 0, 1210, 1210, 1213, 0, 0, 1213, 0, 0, 0,
2498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2499 0, 1213, 1213, 1213, 1213, 1213, 1214, 0, 1214, 1214,
2500
2501 1214, 1214, 1214, 0, 0, 1214, 1214, 1214, 1214, 1214,
2502 0, 0, 1214, 1215, 0, 1215, 1215, 1215, 1215, 1215,
2503 0, 0, 1215, 1215, 1215, 1215, 1215, 0, 0, 1215,
2504 1216, 0, 1216, 1216, 1216, 0, 0, 1216, 1217, 0,
2505 0, 0, 1217, 0, 1217, 1217, 1217, 0, 0, 1217,
2506 1218, 0, 1218, 1218, 1218, 1218, 1218, 0, 0, 1218,
2507 1218, 1218, 1218, 1218, 0, 0, 1218, 1219, 0, 1219,
2508 1219, 1219, 1219, 1219, 0, 0, 1219, 1219, 1219, 1219,
2509 1219, 0, 0, 1219, 1220, 0, 1220, 1220, 1220, 1220,
2510 1220, 1220, 0, 1220, 1220, 1220, 1220, 1220, 0, 0,
2511
2512 1220, 1221, 0, 1221, 1221, 1221, 1221, 1221, 1221, 0,
2513 1221, 1221, 1221, 1221, 1221, 0, 0, 1221, 1222, 1222,
2514 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
2515 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
2516 1222, 1222, 1222, 1222, 1222, 1223, 0, 0, 1223, 0,
2517 0, 1223, 0, 0, 0, 0, 0, 0, 0, 1223,
2518 0, 0, 0, 1223, 0, 1223, 1223, 1223, 0, 0,
2519 1223, 1224, 0, 1224, 1224, 1224, 1224, 1224, 0, 0,
2520 1224, 1224, 1224, 1224, 1224, 0, 0, 1224, 1225, 0,
2521 1225, 1225, 1225, 1225, 1225, 0, 0, 1225, 1225, 1225,
2522
2523 1225, 1225, 0, 0, 1225, 1226, 1226, 1226, 1226, 0,
2524 1226, 0, 0, 0, 0, 0, 0, 0, 0, 1226,
2525 1226, 0, 0, 1226, 0, 1226, 1226, 1226, 0, 0,
2526 1226, 1227, 1227, 1227, 1227, 0, 1227, 0, 0, 0,
2527 0, 0, 0, 0, 0, 0, 1227, 0, 0, 1227,
2528 0, 1227, 1227, 1227, 0, 0, 1227, 1228, 1228, 1228,
2529 1228, 0, 1228, 0, 0, 0, 0, 0, 0, 0,
2530 0, 1228, 1228, 0, 0, 1228, 0, 1228, 1228, 1228,
2531 0, 0, 1228, 1229, 0, 0, 0, 1229, 0, 1229,
2532 1229, 1229, 0, 0, 1229, 1230, 0, 1230, 1230, 1230,
2533
2534 0, 0, 1230, 1231, 0, 1231, 0, 0, 0, 1231,
2535 0, 1231, 1231, 1231, 0, 0, 1231, 1232, 0, 1232,
2536 1232, 1232, 0, 0, 1232, 1233, 0, 0, 0, 1233,
2537 0, 1233, 1233, 1233, 0, 0, 1233, 1234, 1234, 1234,
2538 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
2539 1234, 1234, 0, 1234, 1234, 1234, 0, 1234, 0, 0,
2540 1234, 1234, 1234, 1234, 1235, 0, 1235, 1235, 1235, 0,
2541 0, 1235, 1236, 0, 1236, 1236, 1236, 0, 0, 1236,
2542 1238, 1238, 0, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
2543 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
2544
2545 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1239, 0, 0,
2546 1239, 0, 0, 0, 1239, 0, 1239, 1239, 1239, 1240,
2547 0, 1240, 0, 1240, 1240, 0, 1240, 0, 0, 1240,
2548 1240, 0, 1240, 1240, 1240, 1241, 1241, 0, 1241, 1241,
2549 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2550 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2551 1241, 1241, 1243, 0, 0, 1243, 0, 0, 0, 0,
2552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2553 1243, 0, 1243, 1243, 1243, 1244, 1244, 0, 1244, 1244,
2554 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
2555
2556 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
2557 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1246, 0, 0,
2558 1246, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2559 0, 0, 0, 0, 0, 1246, 1246, 1246, 1246, 1246,
2560 1247, 0, 1247, 1247, 1247, 1247, 1247, 0, 0, 1247,
2561 1247, 1247, 1247, 1247, 0, 0, 1247, 1248, 0, 1248,
2562 1248, 1248, 1248, 1248, 0, 0, 1248, 1248, 1248, 1248,
2563 1248, 0, 0, 1248, 1249, 0, 1249, 1249, 1249, 1249,
2564 1249, 1249, 0, 1249, 1249, 1249, 1249, 1249, 0, 0,
2565 1249, 1250, 0, 1250, 1250, 1250, 0, 0, 1250, 1251,
2566
2567 1251, 0, 1251, 0, 0, 0, 1251, 0, 1251, 1251,
2568 1251, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
2569 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
2570 0, 1252, 0, 0, 0, 1252, 1252, 1252, 1253, 1253,
2571 1253, 1253, 0, 1253, 0, 0, 0, 0, 0, 0,
2572 0, 0, 1253, 1253, 0, 0, 1253, 0, 1253, 1253,
2573 1253, 0, 0, 1253, 1254, 1254, 1254, 1254, 1254, 1254,
2574 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 0,
2575 1254, 1254, 1254, 0, 1254, 0, 1254, 0, 1254, 1254,
2576 1254, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255,
2577
2578 1255, 1255, 1255, 1255, 1255, 1255, 0, 1255, 1255, 1255,
2579 0, 1255, 0, 0, 0, 1255, 1255, 1255, 1256, 1256,
2580 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
2581 1256, 1256, 1256, 0, 1256, 1256, 1256, 0, 1256, 0,
2582 0, 0, 1256, 1256, 1256, 1257, 1257, 1257, 1257, 1257,
2583 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257,
2584 0, 1257, 1257, 1257, 0, 1257, 0, 0, 0, 1257,
2585 1257, 1257, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258,
2586 1258, 1258, 1258, 1258, 1258, 1258, 1258, 0, 1258, 1258,
2587 1258, 0, 1258, 0, 0, 0, 1258, 1258, 1258, 1053,
2588
2589 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
2590 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
2591 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
2592 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
2593 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
2594 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
2595 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053
2596 } ;
2597
2598extern int commentScanYY_flex_debug;
2599int commentScanYY_flex_debug = 0;
2600
2601static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
2602static char *yy_full_match;
2603static int yy_lp;
2604static int yy_looking_for_trail_begin = 0;
2605static int yy_full_lp;
2606static int *yy_full_state;
2607#define YY_TRAILING_MASK 0x2000
2608#define YY_TRAILING_HEAD_MASK 0x4000
2609#define REJECT \
2610{ \
2611*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */ \
2612yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
2613(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
2614(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
2615yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
2616++(yy_lp); \
2617goto find_rule; \
2618}
2619
2620#define yymore() yymore_used_but_not_detected
2621#define YY_MORE_ADJ 0
2622#define YY_RESTORE_YY_MORE_OFFSET
2623char *commentScanYYtext;
2624#line 1 "commentscan.l"
2625/*****************************************************************************
2626 *
2627 * Copyright (C) 1997-2011 by Dimitri van Heesch.
2628 *
2629 * Permission to use, copy, modify, and distribute this software and its
2630 * documentation under the terms of the GNU General Public License is hereby
2631 * granted. No representations are made about the suitability of this software
2632 * for any purpose. It is provided "as is" without express or implied warranty.
2633 * See the GNU General Public License for more details.
2634 *
2635 * Documents produced by Doxygen are derivative works derived from the
2636 * input used in their production; they are not affected by this license.
2637 *
2638 */
2639#line 17 "commentscan.l"
2640
2641/*
2642 *includes
2643 */
2644#include <stdio.h>
2645#include <stdlib.h>
2646#include <assert.h>
2647#include <ctype.h>
2648
2649#include "qtbc.h"
2650#include <qarray.h>
2651#include <qstack.h>
2652#include <qregexp.h>
2653#include <unistd.h>
2654#include <qfile.h>
2655
2656#include "scanner.h"
2657#include "entry.h"
2658#include "doxygen.h"
2659#include "message.h"
2660#include "config.h"
2661#include "util.h"
2662#include "index.h"
2663#include "defargs.h"
2664#include "language.h"
2665#include "outputlist.h"
2666#include "membergroup.h"
2667#include "reflist.h"
2668#include "debug.h"
2669#include "parserintf.h"
2670
2671// forward declarations
2672static bool handleBrief(const QCString &);
2673static bool handleFn(const QCString &);
2674static bool handleDef(const QCString &);
2675static bool handleOverload(const QCString &);
2676static bool handleEnum(const QCString &);
2677static bool handleDefGroup(const QCString &);
2678static bool handleAddToGroup(const QCString &);
2679static bool handleWeakGroup(const QCString &);
2680static bool handleNamespace(const QCString &);
2681static bool handlePackage(const QCString &);
2682static bool handleClass(const QCString &);
2683static bool handleHeaderFile(const QCString &);
2684static bool handleProtocol(const QCString &);
2685static bool handleCategory(const QCString &);
2686static bool handleUnion(const QCString &);
2687static bool handleStruct(const QCString &);
2688static bool handleInterface(const QCString &);
2689static bool handleIdlException(const QCString &);
2690static bool handlePage(const QCString &);
2691static bool handleMainpage(const QCString &);
2692static bool handleFile(const QCString &);
2693static bool handleDir(const QCString &);
2694static bool handleExample(const QCString &);
2695static bool handleDetails(const QCString &);
2696static bool handleName(const QCString &);
2697static bool handleTodo(const QCString &);
2698static bool handleTest(const QCString &);
2699static bool handleBug(const QCString &);
2700static bool handleSubpage(const QCString &s);
2701static bool handleDeprecated(const QCString &);
2702static bool handleXRefItem(const QCString &);
2703static bool handleRelated(const QCString &);
2704static bool handleRelatedAlso(const QCString &);
2705static bool handleMemberOf(const QCString &);
2706static bool handleRefItem(const QCString &);
2707static bool handleSection(const QCString &);
2708static bool handleAnchor(const QCString &);
2709static bool handleFormatBlock(const QCString &);
2710static bool handleAddIndex(const QCString &);
2711static bool handleIf(const QCString &);
2712static bool handleIfNot(const QCString &);
2713static bool handleElseIf(const QCString &);
2714static bool handleElse(const QCString &);
2715static bool handleEndIf(const QCString &);
2716static bool handleIngroup(const QCString &);
2717static bool handleNoSubGrouping(const QCString &);
2718static bool handleShowInitializer(const QCString &);
2719static bool handleHideInitializer(const QCString &);
2720static bool handleCallgraph(const QCString &);
2721static bool handleCallergraph(const QCString &);
2722static bool handleInternal(const QCString &);
2723static bool handleLineBr(const QCString &);
2724static bool handleStatic(const QCString &);
2725static bool handlePure(const QCString &);
2726static bool handlePrivate(const QCString &);
2727static bool handlePrivateSection(const QCString &);
2728static bool handleProtected(const QCString &);
2729static bool handleProtectedSection(const QCString &);
2730static bool handlePublic(const QCString &s);
2731static bool handlePublicSection(const QCString &s);
2732static bool handleInherit(const QCString &);
2733static bool handleExtends(const QCString &);
2734
2735typedef bool (*DocCmdFunc)(const QCString &name);
2736
2737struct DocCmdMap
2738{
2739 const char *cmdName;
2740 DocCmdFunc handler;
2741 bool endsBrief;
2742};
2743
2744// map of command to handler function
2745static DocCmdMap docCmdMap[] =
2746{
2747 // command name handler function ends brief description
2748 { "brief", &handleBrief, FALSE },
2749 { "short", &handleBrief, FALSE },
2750 { "fn", &handleFn, FALSE },
2751 { "var", &handleFn, FALSE },
2752 { "typedef", &handleFn, FALSE },
2753 { "property", &handleFn, FALSE },
2754 { "def", &handleDef, FALSE },
2755 { "overload", &handleOverload, FALSE },
2756 { "enum", &handleEnum, FALSE },
2757 { "defgroup", &handleDefGroup, FALSE },
2758 { "addtogroup", &handleAddToGroup, FALSE },
2759 { "weakgroup", &handleWeakGroup, FALSE },
2760 { "namespace", &handleNamespace, FALSE },
2761 { "package", &handlePackage, FALSE },
2762 { "class", &handleClass, FALSE },
2763 { "headerfile", &handleHeaderFile, FALSE },
2764 { "protocol", &handleProtocol, FALSE },
2765 { "category", &handleCategory, FALSE },
2766 { "union", &handleUnion, FALSE },
2767 { "struct", &handleStruct, FALSE },
2768 { "interface", &handleInterface, FALSE },
2769 { "idlexcept", &handleIdlException, FALSE },
2770 { "page", &handlePage, FALSE },
2771 { "mainpage", &handleMainpage, FALSE },
2772 { "file", &handleFile, FALSE },
2773 { "dir", &handleDir, FALSE },
2774 { "example", &handleExample, FALSE },
2775 { "details", &handleDetails, TRUE },
2776 { "name", &handleName, FALSE },
2777 { "todo", &handleTodo, FALSE }, // end brief will be done differently
2778 { "test", &handleTest, FALSE }, // end brief will be done differently
2779 { "bug", &handleBug, FALSE }, // end brief will be done differently
2780 { "deprecated", &handleDeprecated, FALSE }, // end brief will be done differently
2781 { "xrefitem", &handleXRefItem, FALSE }, // end brief will be done differently
2782 { "related", &handleRelated, TRUE },
2783 { "relates", &handleRelated, TRUE },
2784 { "relatedalso", &handleRelatedAlso, TRUE },
2785 { "relatesalso", &handleRelatedAlso, TRUE },
2786 { "refitem", &handleRefItem, TRUE },
2787 { "subpage", &handleSubpage, TRUE },
2788 { "section", &handleSection, TRUE },
2789 { "subsection", &handleSection, TRUE },
2790 { "subsubsection", &handleSection, TRUE },
2791 { "paragraph", &handleSection, TRUE },
2792 { "anchor", &handleAnchor, TRUE },
2793 { "verbatim", &handleFormatBlock, TRUE },
2794 { "latexonly", &handleFormatBlock, FALSE },
2795 { "htmlonly", &handleFormatBlock, FALSE },
2796 { "xmlonly", &handleFormatBlock, FALSE },
2797 { "rtfonly", &handleFormatBlock, FALSE },
2798 { "manonly", &handleFormatBlock, FALSE },
2799 { "dot", &handleFormatBlock, TRUE },
2800 { "msc", &handleFormatBlock, TRUE },
2801 { "code", &handleFormatBlock, TRUE },
2802 { "addindex", &handleAddIndex, FALSE },
2803 { "if", &handleIf, FALSE },
2804 { "ifnot", &handleIfNot, FALSE },
2805 { "elseif", &handleElseIf, FALSE },
2806 { "else", &handleElse, FALSE },
2807 { "endif", &handleEndIf, FALSE },
2808 { "ingroup", &handleIngroup, FALSE },
2809 { "nosubgrouping", &handleNoSubGrouping, FALSE },
2810 { "showinitializer", &handleShowInitializer, FALSE },
2811 { "hideinitializer", &handleHideInitializer, FALSE },
2812 { "callgraph", &handleCallgraph, FALSE },
2813 { "callergraph", &handleCallergraph, FALSE },
2814 { "internal", &handleInternal, TRUE },
2815 { "_linebr", &handleLineBr, FALSE },
2816 { "static", &handleStatic, FALSE },
2817 { "pure", &handlePure, FALSE },
2818 { "private", &handlePrivate, FALSE },
2819 { "privatesection", &handlePrivateSection, FALSE },
2820 { "protected", &handleProtected, FALSE },
2821 { "protectedsection",&handleProtectedSection, FALSE },
2822 { "public", &handlePublic, FALSE },
2823 { "publicsection", &handlePublicSection, FALSE },
2824 { "inherit", &handleInherit, TRUE },
2825 { "extends", &handleExtends, TRUE },
2826 { "implements", &handleExtends, TRUE },
2827 { "memberof", &handleMemberOf, TRUE },
2828 { "arg", 0, TRUE },
2829 { "attention", 0, TRUE },
2830 { "author", 0, TRUE },
2831 { "authors", 0, TRUE },
2832 { "copydoc", 0, TRUE },
2833 { "copybrief", 0, FALSE },
2834 { "copydetails", 0, TRUE },
2835 { "date", 0, TRUE },
2836 { "dotfile", 0, TRUE },
2837 { "htmlinclude", 0, FALSE },
2838 { "image", 0, TRUE },
2839 { "include", 0, TRUE },
2840 { "includelineno", 0, TRUE },
2841 { "invariant", 0, TRUE },
2842 { "li", 0, TRUE },
2843 { "line", 0, TRUE },
2844 { "note", 0, TRUE },
2845 { "par", 0, TRUE },
2846 { "param", 0, TRUE },
2847 { "tparam", 0, TRUE },
2848 { "post", 0, TRUE },
2849 { "pre", 0, TRUE },
2850 { "remark", 0, TRUE },
2851 { "remarks", 0, TRUE },
2852 { "result", 0, TRUE },
2853 { "return", 0, TRUE },
2854 { "returns", 0, TRUE },
2855 { "retval", 0, TRUE },
2856 { "sa", 0, TRUE },
2857 { "see", 0, TRUE },
2858 { "since", 0, TRUE },
2859 { "throw", 0, TRUE },
2860 { "throws", 0, TRUE },
2861 { "until", 0, TRUE },
2862 { "verbinclude", 0, FALSE },
2863 { "version", 0, TRUE },
2864 { "warning", 0, TRUE },
2865 { 0, 0, FALSE }
2866};
2867
2868/** @brief Command mapper.
2869 *
2870 * Maps a command name (as found in a comment block) onto a
2871 * specific handler function.
2872 */
2873class DocCmdMapper
2874{
2875 public:
2876 struct Cmd
2877 {
2878 DocCmdFunc func;
2879 bool endsBrief;
2880 };
2881
2882 /** maps a command name to a handler function */
2883 static Cmd *map(const char *name)
2884 {
2885 return instance()->find(name);
2886 }
2887
2888 /** release the singleton */
2889 static void freeInstance()
2890 {
2891 delete s_instance; s_instance=0;
2892 }
2893
2894 private:
2895 static DocCmdMapper *instance()
2896 {
2897 if (s_instance==0) s_instance = new DocCmdMapper;
2898 return s_instance;
2899 }
2900
2901 DocCmdMapper() : m_map(113)
2902 {
2903 m_map.setAutoDelete(TRUE);
2904 DocCmdMap *p = docCmdMap;
2905 while (p->cmdName)
2906 {
2907if (m_map.find(p->cmdName)!=0)
2908{
2909 printf("Error: DocCmdMapper: command %s already added\n",p->cmdName);
2910 exit(1);
2911}
2912Cmd *cmd = new Cmd;
2913cmd->func = p->handler;
2914cmd->endsBrief = p->endsBrief;
2915m_map.insert(p->cmdName,cmd);
2916p++;
2917 }
2918 }
2919
2920 Cmd *find(const char *name)
2921 {
2922 return m_map.find(name);
2923 }
2924 QDict<Cmd> m_map;
2925 static DocCmdMapper *s_instance;
2926};
2927
2928DocCmdMapper *DocCmdMapper::s_instance=0;
2929
2930
2931#define YY_NEVER_INTERACTIVE 1
2932
2933enum XRefKind
2934{
2935 XRef_Item,
2936 XRef_Todo,
2937 XRef_Test,
2938 XRef_Bug,
2939 XRef_Deprecated,
2940 XRef_None
2941};
2942
2943enum OutputContext
2944{
2945 OutputDoc,
2946 OutputBrief,
2947 OutputXRef,
2948 OutputInbody
2949};
2950
2951enum GuardType
2952{
2953 Guard_If,
2954 Guard_IfNot,
2955 Guard_Skip
2956};
2957
2958class GuardedSection
2959{
2960 public:
2961 GuardedSection(bool enabled,bool parentVisible)
2962 : m_enabled(enabled),m_parentVisible(parentVisible) {}
2963 bool isEnabled() const { return m_enabled; }
2964 bool parentVisible() const { return m_parentVisible; }
2965
2966 private:
2967 bool m_enabled;
2968 bool m_parentVisible;
2969};
2970
2971void openGroup(Entry *e,const char *file,int line);
2972void closeGroup(Entry *e,const char *file,int line,bool foundInline=FALSE);
2973void initGroupInfo(Entry *e);
2974static void groupAddDocs(Entry *e,const char *fileName);
2975
2976/* -----------------------------------------------------------------
2977 *
2978 *statics
2979 */
2980
2981static ParserInterface *langParser; // the language parser that is calling us
2982static QCString inputString; // input string
2983static intinputPosition; // read pointer
2984static QCStringyyFileName; // file name that is read from
2985static intyyLineNr; // line number in the input
2986static bool inBody; // was the comment found inside the body of a function?
2987static OutputContext inContext; // are we inside the brief, details or xref part
2988static bool briefEndsAtDot; // does the brief description stop at a dot?
2989static QCString formulaText; // Running text of a formula
2990static QCString formulaEnv; // environment name
2991static int formulaNewLines; // amount of new lines in the formula
2992static QCString *pOutputString; // pointer to string to which the output is appended.
2993static QCString outputXRef; // temp argument of todo/test/../xrefitem commands
2994static QCString blockName; // preformatted block name (e.g. verbatim, latexonly,...)
2995static XRefKind xrefKind; // kind of cross-reference command
2996static XRefKind newXRefKind; //
2997static GuardType guardType; // kind of guard for conditional section
2998static bool enabledSectionFound;
2999static QCString functionProto; // function prototype
3000static QStack<GuardedSection> guards; // tracks nested conditional sections (if,ifnot,..)
3001static Entry*current = 0 ; // working entry
3002//static Entry*current_root = 0 ; // parent of working entry
3003
3004
3005//static Entry*previous = 0 ; // TODO: remove need for this
3006static bool needNewEntry;
3007
3008static QCString sectionLabel;
3009static QCStringsectionTitle;
3010static QCString xrefItemKey;
3011static QCString newXRefItemKey;
3012static QCString xrefItemTitle;
3013static QCString xrefListTitle;
3014static Protectionprotection;
3015
3016static bool xrefAppendFlag;
3017static bool inGroupParamFound;
3018static int braceCount;
3019static bool insidePre;
3020static bool parseMore;
3021static int g_condCount;
3022static int g_sectionLevel;
3023
3024static int g_commentCount;
3025
3026//-----------------------------------------------------------------------------
3027
3028static QStack<Grouping> g_autoGroupStack;
3029static int g_memberGroupId = DOX_NOGROUP;
3030static QCString g_memberGroupHeader;
3031static QCString g_memberGroupDocs;
3032static QCString g_memberGroupRelates;
3033static QCString g_compoundName;
3034
3035//-----------------------------------------------------------------------------
3036
3037static void initParser()
3038{
3039 sectionLabel.resize(0);
3040 sectionTitle.resize(0);
3041 g_memberGroupHeader.resize(0);
3042}
3043
3044//-----------------------------------------------------------------------------
3045
3046static QCString getDocSectionName(int s)
3047{
3048 switch(s)
3049 {
3050 case Entry::CLASSDOC_SEC: return "\\class";
3051 case Entry::STRUCTDOC_SEC: return "\\struct";
3052 case Entry::UNIONDOC_SEC: return "\\union";
3053 case Entry::EXCEPTIONDOC_SEC: return "\\exception";
3054 case Entry::NAMESPACEDOC_SEC: return "\\namespace";
3055 case Entry::PROTOCOLDOC_SEC: return "\\protocol";
3056 case Entry::CATEGORYDOC_SEC: return "\\category";
3057 case Entry::ENUMDOC_SEC: return "\\enum";
3058 case Entry::PAGEDOC_SEC: return "\\page";
3059 case Entry::VARIABLEDOC_SEC: return "\\var";
3060 case Entry::MEMBERDOC_SEC: return "\\fn";
3061 case Entry::OVERLOADDOC_SEC: return "\\overload";
3062 case Entry::FILEDOC_SEC: return "\\file";
3063 case Entry::DEFINEDOC_SEC: return "\\def";
3064 case Entry::GROUPDOC_SEC: return "\\defgroup";
3065 case Entry::MAINPAGEDOC_SEC: return "\\mainpage";
3066 case Entry::PACKAGEDOC_SEC: return "\\package";
3067 case Entry::DIRDOC_SEC: return "\\dir";
3068 case Entry::EXAMPLE_SEC: return "\\example";
3069 case Entry::MEMBERGRP_SEC: return "\\name";
3070 default: return "";
3071 }
3072}
3073
3074//-----------------------------------------------------------------------------
3075
3076static bool makeStructuralIndicator(Entry::Sections s)
3077{
3078 //printf("current->section=%x\n",current->section);
3079 if (!getDocSectionName(current->section).isEmpty())
3080 {
3081 return TRUE;
3082 }
3083 else
3084 {
3085 needNewEntry = TRUE;
3086 current->section = s;
3087 current->fileName = yyFileName;
3088 current->startLine = yyLineNr;
3089 return FALSE;
3090 }
3091}
3092
3093static void lineCount()
3094{
3095 for( const char* c = commentScanYYtext ; *c ; ++c )
3096 yyLineNr += (*c == '\n') ;
3097}
3098
3099
3100static QCString stripQuotes(const char *s)
3101{
3102 QCString name;
3103 if (s==0 || *s==0) return name;
3104 name=s;
3105 if (name.at(0)=='"' && name.at(name.length()-1)=='"')
3106 {
3107 name=name.mid(1,name.length()-2);
3108 }
3109 return name;
3110}
3111
3112//-----------------------------------------------------------------
3113
3114static void addXRefItem(const char *listName,const char *itemTitle,
3115 const char *listTitle,bool append)
3116{
3117 Entry *docEntry = current; // inBody && previous ? previous : current;
3118 if (listName==0) return;
3119 //printf("addXRefItem(%s,%s,%s,%d)\n",listName,itemTitle,listTitle,append);
3120
3121 ListItemInfo *lii=0;
3122 RefList *refList = Doxygen::xrefLists->find(listName);
3123 if (refList==0) // new list
3124 {
3125 refList = new RefList(listName,listTitle,itemTitle);
3126 Doxygen::xrefLists->insert(listName,refList);
3127 //printf("new list!\n");
3128 }
3129 if (docEntry->sli)
3130 {
3131 QListIterator<ListItemInfo> slii(*docEntry->sli);
3132 for (slii.toFirst();(lii=slii.current());++slii)
3133 {
3134 if (strcmp(lii->type,listName)==0)
3135 {
3136 //printf("found %s lii->type=%s\n",listName,lii->type);
3137 break;
3138 }
3139 }
3140 }
3141 if (lii && append) // already found item of same type just before this one
3142 {
3143 //printf("listName=%s item id = %d existing\n",listName,lii->itemId);
3144 RefItem *item = refList->getRefItem(lii->itemId);
3145 ASSERT(item!=0);
3146 item->text += " <p>";
3147 item->text += outputXRef;
3148 //printf("%s: text +=%s\n",listName,item->text.data());
3149 }
3150 else // new item
3151 {
3152 int itemId = refList->addRefItem();
3153 //printf("listName=%s item id = %d new current=%p\n",listName,itemId,current);
3154
3155 // if we have already an item from the same list type (e.g. a second @todo)
3156 // in the same Entry (i.e. lii!=0) then we reuse its link anchor.
3157 char anchorLabel[1024];
3158 //sprintf(anchorLabel,"_%s%06d",listName,lii ? lii->itemId : itemId);
3159 sprintf(anchorLabel,"_%s%06d",listName,itemId);
3160 RefItem *item = refList->getRefItem(itemId);
3161 ASSERT(item!=0);
3162 item->text = outputXRef;
3163 item->listAnchor = anchorLabel;
3164 docEntry->addSpecialListItem(listName,itemId);
3165 QCString cmdString;
3166 cmdString.sprintf("\\xrefitem %s %d.",listName,itemId);
3167 if (inBody)
3168 {
3169 docEntry->inbodyDocs += cmdString;
3170 }
3171 else
3172 {
3173 docEntry->doc += cmdString;
3174 }
3175 SectionInfo *si=new SectionInfo(listName,anchorLabel,
3176 sectionTitle,SectionInfo::Anchor);
3177 Doxygen::sectionDict.insert(anchorLabel,si);
3178 docEntry->anchors->append(si);
3179 }
3180 outputXRef.resize(0);
3181}
3182
3183//-----------------------------------------------------------------------------
3184
3185// Adds a formula text to the list/dictionary of formulas if it was
3186// not already added. Returns the label of the formula.
3187static QCString addFormula()
3188{
3189 QCString formLabel;
3190 QCString fText=formulaText.simplifyWhiteSpace();
3191 Formula *f=0;
3192 if ((f=Doxygen::formulaDict[fText])==0)
3193 {
3194 f = new Formula(fText);
3195 Doxygen::formulaList.append(f);
3196 Doxygen::formulaDict.insert(fText,f);
3197 formLabel.sprintf("\\form#%d",f->getId());
3198 Doxygen::formulaNameDict.insert(formLabel,f);
3199 }
3200 else
3201 {
3202 formLabel.sprintf("\\form#%d",f->getId());
3203 }
3204 int i;
3205 for (i=0;i<formulaNewLines;i++) formLabel+="\\_fakenl"; // add fake newlines to
3206 // keep the warnings
3207 // correctly aligned.
3208 return formLabel;
3209}
3210
3211//-----------------------------------------------------------------------------
3212
3213static void checkFormula();
3214//-----------------------------------------------------------------------------
3215
3216static void addSection()
3217{
3218 sectionTitle+=commentScanYYtext;
3219 sectionTitle=sectionTitle.stripWhiteSpace();
3220 //printf("Adding new section file=%s label=%s title=%s\n",yyFileName,sectionLabel.data(),sectionTitle.data());
3221 SectionInfo *si = new SectionInfo(yyFileName,sectionLabel,sectionTitle,SectionInfo::Anchor);
3222 current->anchors->append(si);
3223 Doxygen::sectionDict.insert(commentScanYYtext,si);
3224}
3225
3226//-----------------------------------------------------------------------------
3227
3228// strip trailing whitespace (excluding newlines) from string s
3229static void stripTrailingWhiteSpace(QCString &s)
3230{
3231 uint len = s.length();
3232 int i = (int)len-1;
3233 char c;
3234 while (i>=0 && ((c = s.at(i))==' ' || c=='\t' || c=='\r')) i--;
3235 if (i!=(int)len-1)
3236 {
3237 s.resize(i+2); // string upto and including char at pos i and \0 terminator
3238 }
3239}
3240
3241// selects the output to write to
3242static inline void setOutput(OutputContext ctx)
3243{
3244 bool xrefAppendToPrev = xrefAppendFlag;
3245 // determine append flag for the next item (i.e. the end of this item)
3246 xrefAppendFlag = !inBody &&
3247 inContext==OutputXRef && ctx==OutputXRef && // two consecutive xref items
3248 newXRefKind==xrefKind && // of the same kind
3249 (xrefKind!=XRef_Item ||
3250 newXRefItemKey==xrefItemKey); // with the same key if \xrefitem
3251 //printf("%d && %d && %d && (%d || %d)\n",
3252 // inContext==OutputXRef,
3253 // ctx==OutputXRef,
3254 // newXRefKind==xrefKind,
3255 // xrefKind!=XRef_Item,
3256 // newXRefItemKey==xrefItemKey);
3257
3258 //printf("refKind=%d newXRefKind=%d xrefAppendToPrev=%d xrefAppendFlag=%d\n",
3259 // xrefKind,newXRefKind,xrefAppendToPrev,xrefAppendFlag);
3260
3261 //printf("setOutput(inContext=%d ctx=%d)\n",inContext,ctx);
3262 if (inContext==OutputXRef) // end of XRef section => add the item
3263 {
3264 // See if we can append this new xref item to the previous one.
3265 // We know this at the start of the next item of the same
3266 // type and need to remember this until the end of that item.
3267 switch(xrefKind)
3268 {
3269 case XRef_Todo:
3270addXRefItem("todo",
3271 theTranslator->trTodo(),
3272 theTranslator->trTodoList(),
3273 xrefAppendToPrev
3274 );
3275break;
3276 case XRef_Test:
3277addXRefItem("test",
3278 theTranslator->trTest(),
3279 theTranslator->trTestList(),
3280 xrefAppendToPrev
3281 );
3282break;
3283 case XRef_Bug:
3284addXRefItem("bug",
3285 theTranslator->trBug(),
3286 theTranslator->trBugList(),
3287 xrefAppendToPrev
3288 );
3289break;
3290 case XRef_Deprecated:
3291addXRefItem("deprecated",
3292 theTranslator->trDeprecated(),
3293 theTranslator->trDeprecatedList(),
3294 xrefAppendToPrev
3295 );
3296break;
3297 case XRef_Item: // user defined list
3298addXRefItem(xrefItemKey,
3299 xrefItemTitle,
3300 xrefListTitle,
3301 xrefAppendToPrev
3302 );
3303break;
3304 case XRef_None:
3305ASSERT(0);
3306break;
3307 }
3308 }
3309 xrefItemKey = newXRefItemKey;
3310
3311 int oldContext = inContext;
3312 inContext = ctx;
3313 if (inContext!=OutputXRef && inBody) inContext=OutputInbody;
3314 switch(inContext)
3315 {
3316 case OutputDoc:
3317 if (oldContext!=inContext)
3318 {
3319 stripTrailingWhiteSpace(current->doc);
3320 if (current->docFile.isEmpty())
3321 {
3322 current->docFile = yyFileName;
3323 current->docLine = yyLineNr;
3324 }
3325 }
3326 pOutputString = &current->doc;
3327 break;
3328 case OutputBrief:
3329 if (oldContext!=inContext)
3330 {
3331if (current->briefFile.isEmpty())
3332{
3333 current->briefFile = yyFileName;
3334 current->briefLine = yyLineNr;
3335}
3336 }
3337 if (current->brief.stripWhiteSpace().isEmpty()) // we only want one brief
3338 // description even if multiple
3339 // are given...
3340 {
3341 pOutputString = &current->brief;
3342 }
3343 else
3344 {
3345 pOutputString = &current->doc;
3346inContext = OutputDoc; // need to switch to detailed docs, see bug 631380
3347 }
3348 break;
3349 case OutputXRef:
3350 pOutputString = &outputXRef;
3351 // first item found, so can't append to previous
3352 //xrefAppendFlag = FALSE;
3353 break;
3354 case OutputInbody:
3355 pOutputString = &current->inbodyDocs;
3356 break;
3357 }
3358}
3359
3360// add a string to the output
3361static inline void addOutput(const char *s)
3362{
3363 *pOutputString+=s;
3364}
3365
3366// add a character to the output
3367static inline void addOutput(char c)
3368{
3369 *pOutputString+=c;
3370}
3371
3372static void endBrief(bool addToOutput=TRUE)
3373{
3374 if (!current->brief.stripWhiteSpace().isEmpty())
3375 { // only go to the detailed description if we have
3376 // found some brief description and not just whitespace
3377 briefEndsAtDot=FALSE;
3378 setOutput(OutputDoc);
3379 if (addToOutput) addOutput(commentScanYYtext);
3380 }
3381}
3382
3383/* ----------------------------------------------------------------- */
3384#undefYY_INPUT
3385#defineYY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
3386
3387static int prevPosition=0;
3388
3389static int yyread(char *buf,int max_size)
3390{
3391 prevPosition=inputPosition;
3392 int c=0;
3393 while( c < max_size && inputString[inputPosition] )
3394 {
3395*buf = inputString[inputPosition++] ;
3396//printf("%d (%c)\n",*buf,*buf);
3397c++; buf++;
3398 }
3399 return c;
3400}
3401
3402/* start command character */
3403/* comment parsing states. */
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442#line 3443 "<stdout>"
3443
3444#define INITIAL 0
3445#define Comment 1
3446#define PageDocArg1 2
3447#define PageDocArg2 3
3448#define RelatesParam1 4
3449#define ClassDocArg1 5
3450#define ClassDocArg2 6
3451#define ClassDocArg3 7
3452#define CategoryDocArg1 8
3453#define XRefItemParam1 9
3454#define XRefItemParam2 10
3455#define XRefItemParam3 11
3456#define FileDocArg1 12
3457#define EnumDocArg1 13
3458#define NameSpaceDocArg1 14
3459#define PackageDocArg1 15
3460#define GroupDocArg1 16
3461#define GroupDocArg2 17
3462#define SectionLabel 18
3463#define SectionTitle 19
3464#define SubpageLabel 20
3465#define SubpageTitle 21
3466#define FormatBlock 22
3467#define LineParam 23
3468#define GuardParam 24
3469#define GuardParamEnd 25
3470#define SkipGuardedSection 26
3471#define SkipInternal 27
3472#define NameParam 28
3473#define InGroupParam 29
3474#define FnParam 30
3475#define OverloadParam 31
3476#define InheritParam 32
3477#define ExtendsParam 33
3478#define ReadFormulaShort 34
3479#define ReadFormulaLong 35
3480#define AnchorLabel 36
3481#define HtmlComment 37
3482#define SkipLang 38
3483
3484#ifndef YY_NO_UNISTD_H
3485/* Special case for "unistd.h", since it is non-ANSI. We include it way
3486 * down here because we want the user's section 1 to have been scanned first.
3487 * The user has a chance to override it with an option.
3488 */
3489#include <unistd.h>
3490#endif
3491
3492#ifndef YY_EXTRA_TYPE
3493#define YY_EXTRA_TYPE void *
3494#endif
3495
3496static int yy_init_globals (void );
3497
3498/* Accessor methods to globals.
3499 These are made visible to non-reentrant scanners for convenience. */
3500
3501int commentScanYYlex_destroy (void );
3502
3503int commentScanYYget_debug (void );
3504
3505void commentScanYYset_debug (int debug_flag );
3506
3507YY_EXTRA_TYPE commentScanYYget_extra (void );
3508
3509void commentScanYYset_extra (YY_EXTRA_TYPE user_defined );
3510
3511FILE *commentScanYYget_in (void );
3512
3513void commentScanYYset_in (FILE * in_str );
3514
3515FILE *commentScanYYget_out (void );
3516
3517void commentScanYYset_out (FILE * out_str );
3518
3519yy_size_t commentScanYYget_leng (void );
3520
3521char *commentScanYYget_text (void );
3522
3523int commentScanYYget_lineno (void );
3524
3525void commentScanYYset_lineno (int line_number );
3526
3527/* Macros after this point can all be overridden by user definitions in
3528 * section 1.
3529 */
3530
3531#ifndef YY_SKIP_YYWRAP
3532#ifdef __cplusplus
3533extern "C" int commentScanYYwrap (void );
3534#else
3535extern int commentScanYYwrap (void );
3536#endif
3537#endif
3538
3539 static void yyunput (int c,char *buf_ptr );
3540
3541#ifndef yytext_ptr
3542static void yy_flex_strncpy (char *,yyconst char *,int );
3543#endif
3544
3545#ifdef YY_NEED_STRLEN
3546static int yy_flex_strlen (yyconst char * );
3547#endif
3548
3549#ifndef YY_NO_INPUT
3550
3551#ifdef __cplusplus
3552static int yyinput (void );
3553#else
3554static int input (void );
3555#endif
3556
3557#endif
3558
3559/* Amount of stuff to slurp up with each read. */
3560#ifndef YY_READ_BUF_SIZE
3561#define YY_READ_BUF_SIZE 262144
3562#endif
3563
3564/* Copy whatever the last rule matched to the standard output. */
3565#ifndef ECHO
3566/* This used to be an fputs(), but since the string might contain NUL's,
3567 * we now use fwrite().
3568 */
3569#define ECHO fwrite( commentScanYYtext, commentScanYYleng, 1, commentScanYYout )
3570#endif
3571
3572/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3573 * is returned in "result".
3574 */
3575#ifndef YY_INPUT
3576#define YY_INPUT(buf,result,max_size) \
3577if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3578{ \
3579int c = '*'; \
3580yy_size_t n; \
3581for ( n = 0; n < max_size && \
3582 (c = getc( commentScanYYin )) != EOF && c != '\n'; ++n ) \
3583buf[n] = (char) c; \
3584if ( c == '\n' ) \
3585buf[n++] = (char) c; \
3586if ( c == EOF && ferror( commentScanYYin ) ) \
3587YY_FATAL_ERROR( "input in flex scanner failed" ); \
3588result = n; \
3589} \
3590else \
3591{ \
3592errno=0; \
3593while ( (result = fread(buf, 1, max_size, commentScanYYin))==0 && ferror(commentScanYYin)) \
3594{ \
3595if( errno != EINTR) \
3596{ \
3597YY_FATAL_ERROR( "input in flex scanner failed" ); \
3598break; \
3599} \
3600errno=0; \
3601clearerr(commentScanYYin); \
3602} \
3603}\
3604\
3605
3606#endif
3607
3608/* No semi-colon after return; correct usage is to write "yyterminate();" -
3609 * we don't want an extra ';' after the "return" because that will cause
3610 * some compilers to complain about unreachable statements.
3611 */
3612#ifndef yyterminate
3613#define yyterminate() return YY_NULL
3614#endif
3615
3616/* Number of entries by which start-condition stack grows. */
3617#ifndef YY_START_STACK_INCR
3618#define YY_START_STACK_INCR 25
3619#endif
3620
3621/* Report a fatal error. */
3622#ifndef YY_FATAL_ERROR
3623#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3624#endif
3625
3626/* end tables serialization structures and prototypes */
3627
3628/* Default declaration of generated scanner - a define so the user can
3629 * easily add parameters.
3630 */
3631#ifndef YY_DECL
3632#define YY_DECL_IS_OURS 1
3633
3634extern int commentScanYYlex (void);
3635
3636#define YY_DECL int commentScanYYlex (void)
3637#endif /* !YY_DECL */
3638
3639/* Code executed at the beginning of each rule, after commentScanYYtext and commentScanYYleng
3640 * have been set up.
3641 */
3642#ifndef YY_USER_ACTION
3643#define YY_USER_ACTION
3644#endif
3645
3646/* Code executed at the end of each rule. */
3647#ifndef YY_BREAK
3648#define YY_BREAK break;
3649#endif
3650
3651#define YY_RULE_SETUP \
3652if ( commentScanYYleng > 0 ) \
3653YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
3654(commentScanYYtext[commentScanYYleng - 1] == '\n'); \
3655YY_USER_ACTION
3656
3657/** The main scanner function which does all the work.
3658 */
3659YY_DECL
3660{
3661register yy_state_type yy_current_state;
3662register char *yy_cp, *yy_bp;
3663register int yy_act;
3664
3665#line 865 "commentscan.l"
3666
3667
3668 /* What can happen in while parsing a comment block:
3669 * commands (e.g. @page, or \page)
3670 * escaped commands (e.g. @@page or \\page).
3671 * formulas (e.g. \f$ \f[ \f{..)
3672 * directories (e.g. \doxygen\src\)
3673 * autolist end. (e.g. a dot on an otherwise empty line)
3674 * newlines.
3675 * end of brief description due to blank line.
3676 * end of brief description due to some command (@command, or <command>).
3677 * words and whitespace and other characters (#,?!, etc).
3678 * grouping commands (e.g. @{ and @})
3679 * language switch (e.g. \~english or \~).
3680 * mail adress (e.g. dimitri@stack.nl).
3681 * quoted text, such as "foo@bar"
3682 * XML commands, <summary></summary><remarks></remarks>
3683 */
3684
3685#line 3686 "<stdout>"
3686
3687if ( !(yy_init) )
3688{
3689(yy_init) = 1;
3690
3691#ifdef YY_USER_INIT
3692YY_USER_INIT;
3693#endif
3694
3695 /* Create the reject buffer large enough to save one state per allowed character. */
3696 if ( ! (yy_state_buf) )
3697 (yy_state_buf) = (yy_state_type *)commentScanYYalloc(YY_STATE_BUF_SIZE );
3698 if ( ! (yy_state_buf) )
3699 YY_FATAL_ERROR( "out of dynamic memory in commentScanYYlex()" );
3700
3701if ( ! (yy_start) )
3702(yy_start) = 1;/* first start state */
3703
3704if ( ! commentScanYYin )
3705commentScanYYin = stdin;
3706
3707if ( ! commentScanYYout )
3708commentScanYYout = stdout;
3709
3710if ( ! YY_CURRENT_BUFFER ) {
3711commentScanYYensure_buffer_stack ();
3712YY_CURRENT_BUFFER_LVALUE =
3713commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE );
3714}
3715
3716commentScanYY_load_buffer_state( );
3717}
3718
3719while ( 1 )/* loops until end-of-file is reached */
3720{
3721yy_cp = (yy_c_buf_p);
3722
3723/* Support of commentScanYYtext. */
3724*yy_cp = (yy_hold_char);
3725
3726/* yy_bp points to the position in yy_ch_buf of the start of
3727 * the current run.
3728 */
3729yy_bp = yy_cp;
3730
3731yy_current_state = (yy_start);
3732yy_current_state += YY_AT_BOL();
3733
3734(yy_state_ptr) = (yy_state_buf);
3735*(yy_state_ptr)++ = yy_current_state;
3736
3737yy_match:
3738do
3739{
3740register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3741while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3742{
3743yy_current_state = (int) yy_def[yy_current_state];
3744if ( yy_current_state >= 1054 )
3745yy_c = yy_meta[(unsigned int) yy_c];
3746}
3747yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3748*(yy_state_ptr)++ = yy_current_state;
3749++yy_cp;
3750}
3751while ( yy_base[yy_current_state] != 7500 );
3752
3753yy_find_action:
3754yy_current_state = *--(yy_state_ptr);
3755(yy_lp) = yy_accept[yy_current_state];
3756goto find_rule; /* Shut up GCC warning -Wall */
3757find_rule: /* we branch to this label when backing up */
3758for ( ; ; ) /* until we find what rule we matched */
3759{
3760if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
3761{
3762yy_act = yy_acclist[(yy_lp)];
3763if ( yy_act & YY_TRAILING_HEAD_MASK ||
3764 (yy_looking_for_trail_begin) )
3765{
3766if ( yy_act == (yy_looking_for_trail_begin) )
3767{
3768(yy_looking_for_trail_begin) = 0;
3769yy_act &= ~YY_TRAILING_HEAD_MASK;
3770break;
3771}
3772}
3773else if ( yy_act & YY_TRAILING_MASK )
3774{
3775(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
3776(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
3777(yy_full_match) = yy_cp;
3778(yy_full_state) = (yy_state_ptr);
3779(yy_full_lp) = (yy_lp);
3780}
3781else
3782{
3783(yy_full_match) = yy_cp;
3784(yy_full_state) = (yy_state_ptr);
3785(yy_full_lp) = (yy_lp);
3786break;
3787}
3788++(yy_lp);
3789goto find_rule;
3790}
3791--yy_cp;
3792yy_current_state = *--(yy_state_ptr);
3793(yy_lp) = yy_accept[yy_current_state];
3794}
3795
3796YY_DO_BEFORE_ACTION;
3797
3798do_action:/* This label is used only to access EOF actions. */
3799
3800switch ( yy_act )
3801{ /* beginning of action switch */
3802case 1:
3803YY_RULE_SETUP
3804#line 884 "commentscan.l"
3805{ // escaped command
3806 addOutput(commentScanYYtext);
3807 }
3808YY_BREAK
3809case 2:
3810YY_RULE_SETUP
3811#line 887 "commentscan.l"
3812{ // escaped command
3813 addOutput(commentScanYYtext);
3814 }
3815YY_BREAK
3816case 3:
3817YY_RULE_SETUP
3818#line 890 "commentscan.l"
3819{ // mail adress
3820 addOutput(commentScanYYtext);
3821 }
3822YY_BREAK
3823case 4:
3824YY_RULE_SETUP
3825#line 893 "commentscan.l"
3826{ // quoted text
3827 addOutput(commentScanYYtext);
3828 }
3829YY_BREAK
3830case 5:
3831YY_RULE_SETUP
3832#line 896 "commentscan.l"
3833{ // directory (or chain of commands!)
3834 addOutput(commentScanYYtext);
3835 }
3836YY_BREAK
3837case 6:
3838/* rule 6 can match eol */
3839YY_RULE_SETUP
3840#line 899 "commentscan.l"
3841{ // xref command
3842 if (inContext!=OutputXRef)
3843 {
3844 briefEndsAtDot=FALSE;
3845 setOutput(OutputDoc);
3846 }
3847 // continue with the same input
3848 REJECT;
3849}
3850YY_BREAK
3851/*
3852<Comment>{DETAILEDCMD}/[^a-z_A-Z]*{ // command that can end a brief description
3853 briefEndsAtDot=FALSE;
3854 setOutput(OutputDoc);
3855 // continue with the same input
3856 REJECT;
3857}
3858 */
3859case 7:
3860YY_RULE_SETUP
3861#line 916 "commentscan.l"
3862{ // HTML command that ends a brief description
3863 setOutput(OutputDoc);
3864 // continue with the same input
3865 REJECT;
3866}
3867YY_BREAK
3868case 8:
3869YY_RULE_SETUP
3870#line 921 "commentscan.l"
3871{ // start of a .NET XML style brief description
3872 setOutput(OutputBrief);
3873 }
3874YY_BREAK
3875case 9:
3876YY_RULE_SETUP
3877#line 924 "commentscan.l"
3878{ // start of a .NET XML style detailed description
3879 setOutput(OutputDoc);
3880 }
3881YY_BREAK
3882case 10:
3883YY_RULE_SETUP
3884#line 927 "commentscan.l"
3885{ // end of a brief or detailed description
3886 }
3887YY_BREAK
3888case 11:
3889YY_RULE_SETUP
3890#line 929 "commentscan.l"
3891{ // RCS tag which end a brief description
3892 setOutput(OutputDoc);
3893 REJECT;
3894 }
3895YY_BREAK
3896case 12:
3897YY_RULE_SETUP
3898#line 933 "commentscan.l"
3899{
3900 BEGIN(HtmlComment);
3901}
3902YY_BREAK
3903case 13:
3904YY_RULE_SETUP
3905#line 936 "commentscan.l"
3906{
3907 warn(yyFileName,yyLineNr,
3908 "warning: found \\endinternal without matching \\internal"
3909 );
3910 }
3911YY_BREAK
3912case 14:
3913YY_RULE_SETUP
3914#line 941 "commentscan.l"
3915{ // potentially interesting command
3916 // the {B}* in the front was added for bug620924
3917 QCString cmdName = QCString(commentScanYYtext).stripWhiteSpace().data()+1;
3918 DocCmdMapper::Cmd *cmdPtr = DocCmdMapper::map(cmdName);
3919 if (cmdPtr) // special action is required
3920 {
3921 if (cmdPtr->endsBrief)
3922 {
3923 briefEndsAtDot=FALSE;
3924 // this command forces the end of brief description
3925 setOutput(OutputDoc);
3926 }
3927 if (cmdPtr->func && cmdPtr->func(cmdName))
3928 {
3929 // implicit split of the comment block into two
3930 // entries. Restart the next block at the start
3931 // of this command.
3932 parseMore=TRUE;
3933
3934 // yuk, this is probably not very portable across lex implementations,
3935 // but we need to know the position in the input buffer where this
3936 // rule matched.
3937 // for flex 2.5.33+ we should use YY_CURRENT_BUFFER_LVALUE
3938#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
3939 inputPosition=prevPosition + yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3940#else
3941 inputPosition=prevPosition + yy_bp - yy_current_buffer->yy_ch_buf;
3942#endif
3943 yyterminate();
3944 }
3945 else if (cmdPtr->func==0)
3946 {
3947 // command without handler, to be processed
3948 // later by parsedoc.cpp
3949 addOutput(commentScanYYtext);
3950 }
3951 }
3952 else // command not relevant
3953 {
3954 addOutput(commentScanYYtext);
3955 }
3956 }
3957YY_BREAK
3958case 15:
3959YY_RULE_SETUP
3960#line 983 "commentscan.l"
3961{ // escaped formula command
3962 addOutput(commentScanYYtext);
3963 }
3964YY_BREAK
3965case 16:
3966YY_RULE_SETUP
3967#line 986 "commentscan.l"
3968{ // language switch command
3969 QCString langId = QString(commentScanYYtext).stripWhiteSpace().data()+2;
3970 if (!langId.isEmpty() &&
3971 stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)!=0)
3972 { // enable language specific section
3973 BEGIN(SkipLang);
3974 }
3975 }
3976YY_BREAK
3977case 17:
3978YY_RULE_SETUP
3979#line 994 "commentscan.l"
3980{ // start of a formula with custom environment
3981 formulaText="\\begin";
3982 formulaEnv=QString(commentScanYYtext).stripWhiteSpace().data()+2;
3983 if (formulaEnv.at(formulaEnv.length()-1)=='{')
3984 {
3985 // remove trailing open brace
3986 formulaEnv=formulaEnv.left(formulaEnv.length()-1);
3987 }
3988 formulaText+=formulaEnv;
3989 formulaNewLines=0;
3990 BEGIN(ReadFormulaLong);
3991 }
3992YY_BREAK
3993case 18:
3994YY_RULE_SETUP
3995#line 1006 "commentscan.l"
3996{ // start of a inline formula
3997 formulaText="$";
3998 formulaNewLines=0;
3999 BEGIN(ReadFormulaShort);
4000 }
4001YY_BREAK
4002case 19:
4003YY_RULE_SETUP
4004#line 1011 "commentscan.l"
4005{ // start of a block formula
4006 formulaText="\\[";
4007 formulaNewLines=0;
4008 BEGIN(ReadFormulaLong);
4009 }
4010YY_BREAK
4011case 20:
4012YY_RULE_SETUP
4013#line 1016 "commentscan.l"
4014{ // begin of a group
4015 //langParser->handleGroupStartCommand(g_memberGroupHeader);
4016 openGroup(current,yyFileName,yyLineNr);
4017 }
4018YY_BREAK
4019case 21:
4020YY_RULE_SETUP
4021#line 1020 "commentscan.l"
4022{ // end of a group
4023 //langParser->handleGroupEndCommand();
4024 closeGroup(current,yyFileName,yyLineNr,TRUE);
4025 g_memberGroupHeader.resize(0);
4026 parseMore=TRUE;
4027 needNewEntry = TRUE;
4028#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
4029 inputPosition=prevPosition + yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + strlen(commentScanYYtext);
4030#else
4031 inputPosition=prevPosition + yy_bp - yy_current_buffer->yy_ch_buf + strlen(commentScanYYtext);
4032#endif
4033 yyterminate();
4034 }
4035YY_BREAK
4036case 22:
4037YY_RULE_SETUP
4038#line 1033 "commentscan.l"
4039{ // escaped character
4040 addOutput(commentScanYYtext);
4041 }
4042YY_BREAK
4043case 23:
4044YY_RULE_SETUP
4045#line 1036 "commentscan.l"
4046{ // normal word
4047 addOutput(commentScanYYtext);
4048 }
4049YY_BREAK
4050case 24:
4051/* rule 24 can match eol */
4052*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
4053(yy_c_buf_p) = yy_cp -= 1;
4054YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
4055YY_RULE_SETUP
4056#line 1039 "commentscan.l"
4057{ // explicit end autolist: e.g " ."
4058 addOutput(commentScanYYtext);
4059}
4060YY_BREAK
4061case 25:
4062YY_RULE_SETUP
4063#line 1042 "commentscan.l"
4064{ // start of autolist
4065 setOutput(OutputDoc);
4066 addOutput(commentScanYYtext);
4067 }
4068YY_BREAK
4069case 26:
4070YY_RULE_SETUP
4071#line 1046 "commentscan.l"
4072{ // . at start or in the middle of a word, or ellipsis
4073 addOutput(commentScanYYtext);
4074 }
4075YY_BREAK
4076case 27:
4077YY_RULE_SETUP
4078#line 1049 "commentscan.l"
4079{ // . with escaped space.
4080 addOutput(commentScanYYtext[0]);
4081 addOutput(commentScanYYtext[2]);
4082 }
4083YY_BREAK
4084case 28:
4085YY_RULE_SETUP
4086#line 1053 "commentscan.l"
4087{ // . with comma such as "e.g.,"
4088 addOutput(commentScanYYtext);
4089 }
4090YY_BREAK
4091case 29:
4092YY_RULE_SETUP
4093#line 1056 "commentscan.l"
4094{ // ellipsis with escaped space.
4095 addOutput("... ");
4096 }
4097YY_BREAK
4098case 30:
4099*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
4100(yy_c_buf_p) = yy_cp -= 1;
4101YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
4102YY_RULE_SETUP
4103#line 1059 "commentscan.l"
4104{ // internal ellipsis
4105 addOutput(commentScanYYtext);
4106 }
4107YY_BREAK
4108case 31:
4109/* rule 31 can match eol */
4110YY_RULE_SETUP
4111#line 1062 "commentscan.l"
4112{ // at least one blank line (or blank line command)
4113 if (inContext==OutputXRef)
4114 {
4115 // see bug 613024, we need to put the newlines after ending the XRef section.
4116 setOutput(OutputDoc);
4117 addOutput("\n\n");
4118 }
4119 else if (inContext!=OutputBrief)
4120 {
4121 addOutput("\n\n");
4122 setOutput(OutputDoc);
4123 }
4124 else // inContext==OutputBrief
4125 { // only go to the detailed description if we have
4126 // found some brief description and not just whitespace
4127 endBrief(FALSE);
4128 }
4129 lineCount();
4130 }
4131YY_BREAK
4132case 32:
4133YY_RULE_SETUP
4134#line 1081 "commentscan.l"
4135{ // potential end of a JavaDoc style comment
4136 addOutput(*commentScanYYtext);
4137 if (briefEndsAtDot)
4138 {
4139 setOutput(OutputDoc);
4140 briefEndsAtDot=FALSE;
4141 }
4142 }
4143YY_BREAK
4144case 33:
4145/* rule 33 can match eol */
4146YY_RULE_SETUP
4147#line 1089 "commentscan.l"
4148{ // newline
4149 addOutput(*commentScanYYtext);
4150 yyLineNr++;
4151 }
4152YY_BREAK
4153case 34:
4154YY_RULE_SETUP
4155#line 1093 "commentscan.l"
4156{ // catch-all for anything else
4157 addOutput(*commentScanYYtext);
4158 }
4159YY_BREAK
4160/* -------------- Rules for handling HTML comments ----------- */
4161case 35:
4162YY_RULE_SETUP
4163#line 1100 "commentscan.l"
4164{ BEGIN( Comment ); }
4165YY_BREAK
4166case 36:
4167/* rule 36 can match eol */
4168YY_RULE_SETUP
4169#line 1101 "commentscan.l"
4170{
4171 if (*commentScanYYtext=='\n') yyLineNr++;
4172 }
4173YY_BREAK
4174case 37:
4175YY_RULE_SETUP
4176#line 1104 "commentscan.l"
4177{ // ignore unimportant characters
4178 }
4179YY_BREAK
4180case 38:
4181YY_RULE_SETUP
4182#line 1106 "commentscan.l"
4183{ // ignore every else
4184 }
4185YY_BREAK
4186/* -------------- Rules for handling formulas ---------------- */
4187case 39:
4188YY_RULE_SETUP
4189#line 1111 "commentscan.l"
4190{ // end of inline formula
4191 formulaText+="$";
4192 addOutput(" "+addFormula());
4193 BEGIN(Comment);
4194 }
4195YY_BREAK
4196case 40:
4197YY_RULE_SETUP
4198#line 1116 "commentscan.l"
4199{ // end of block formula
4200 formulaText+="\\]";
4201 addOutput(" "+addFormula());
4202 BEGIN(Comment);
4203 }
4204YY_BREAK
4205case 41:
4206YY_RULE_SETUP
4207#line 1121 "commentscan.l"
4208{ // end of custom env formula
4209 formulaText+="\\end";
4210 formulaText+=formulaEnv;
4211 addOutput(" "+addFormula());
4212 BEGIN(Comment);
4213 }
4214YY_BREAK
4215case 42:
4216YY_RULE_SETUP
4217#line 1127 "commentscan.l"
4218{ // any non-special character
4219 formulaText+=commentScanYYtext;
4220 }
4221YY_BREAK
4222case 43:
4223/* rule 43 can match eol */
4224YY_RULE_SETUP
4225#line 1130 "commentscan.l"
4226{ // new line
4227 formulaNewLines++;
4228 formulaText+=*commentScanYYtext;
4229 yyLineNr++;
4230}
4231YY_BREAK
4232case 44:
4233YY_RULE_SETUP
4234#line 1135 "commentscan.l"
4235{ // any othe character
4236 formulaText+=*commentScanYYtext;
4237}
4238YY_BREAK
4239/* ------------ handle argument of enum command --------------- */
4240case 45:
4241/* rule 45 can match eol */
4242YY_RULE_SETUP
4243#line 1141 "commentscan.l"
4244{ // handle argument
4245 current->name = commentScanYYtext;
4246 BEGIN( Comment );
4247 }
4248YY_BREAK
4249case 46:
4250/* rule 46 can match eol */
4251YY_RULE_SETUP
4252#line 1145 "commentscan.l"
4253{ // line continuation
4254 yyLineNr++;
4255 addOutput('\n');
4256 }
4257YY_BREAK
4258case 47:
4259/* rule 47 can match eol */
4260YY_RULE_SETUP
4261#line 1149 "commentscan.l"
4262{ // missing argument
4263 warn(yyFileName,yyLineNr,
4264 "warning: missing argument after \\enum."
4265 );
4266 addOutput('\n');
4267 if (*commentScanYYtext=='\n') yyLineNr++;
4268 BEGIN( Comment );
4269 }
4270YY_BREAK
4271case 48:
4272YY_RULE_SETUP
4273#line 1157 "commentscan.l"
4274{ // ignore other stuff
4275 }
4276YY_BREAK
4277/* ------------ handle argument of namespace command --------------- */
4278case 49:
4279/* rule 49 can match eol */
4280YY_RULE_SETUP
4281#line 1162 "commentscan.l"
4282{ // handle argument
4283 current->name = substitute(commentScanYYtext,".","::");
4284 BEGIN( Comment );
4285 }
4286YY_BREAK
4287case 50:
4288/* rule 50 can match eol */
4289YY_RULE_SETUP
4290#line 1166 "commentscan.l"
4291{ // line continuation
4292 yyLineNr++;
4293 addOutput('\n');
4294 }
4295YY_BREAK
4296case 51:
4297/* rule 51 can match eol */
4298YY_RULE_SETUP
4299#line 1170 "commentscan.l"
4300{ // missing argument
4301 warn(yyFileName,yyLineNr,
4302 "warning: missing argument after "
4303 "\\namespace."
4304 );
4305 addOutput('\n');
4306 if (*commentScanYYtext=='\n') yyLineNr++;
4307 BEGIN( Comment );
4308 }
4309YY_BREAK
4310case 52:
4311YY_RULE_SETUP
4312#line 1179 "commentscan.l"
4313{ // ignore other stuff
4314 }
4315YY_BREAK
4316/* ------------ handle argument of package command --------------- */
4317case 53:
4318YY_RULE_SETUP
4319#line 1184 "commentscan.l"
4320{ // handle argument
4321 current->name = commentScanYYtext;
4322 BEGIN( Comment );
4323 }
4324YY_BREAK
4325case 54:
4326/* rule 54 can match eol */
4327YY_RULE_SETUP
4328#line 1188 "commentscan.l"
4329{ // line continuation
4330 yyLineNr++;
4331 addOutput('\n');
4332 }
4333YY_BREAK
4334case 55:
4335/* rule 55 can match eol */
4336YY_RULE_SETUP
4337#line 1192 "commentscan.l"
4338{ // missing argument
4339 warn(yyFileName,yyLineNr,
4340 "warning: missing argument after "
4341 "\\package."
4342 );
4343 addOutput('\n');
4344 if (*commentScanYYtext=='\n') yyLineNr++;
4345 BEGIN( Comment );
4346 }
4347YY_BREAK
4348case 56:
4349YY_RULE_SETUP
4350#line 1201 "commentscan.l"
4351{ // ignore other stuff
4352 }
4353YY_BREAK
4354/* ------ handle argument of class/struct/union command --------------- */
4355case 57:
4356/* rule 57 can match eol */
4357YY_RULE_SETUP
4358#line 1206 "commentscan.l"
4359{ // first argument
4360 current->name = substitute(commentScanYYtext,".","::");
4361 if (current->section==Entry::PROTOCOLDOC_SEC)
4362 {
4363 current->name+="-p";
4364 }
4365 // prepend outer scope name
4366 BEGIN( ClassDocArg2 );
4367}
4368YY_BREAK
4369case 58:
4370/* rule 58 can match eol */
4371YY_RULE_SETUP
4372#line 1215 "commentscan.l"
4373{
4374 current->name = substitute(commentScanYYtext,".","::");
4375 BEGIN( ClassDocArg2 );
4376 }
4377YY_BREAK
4378case 59:
4379/* rule 59 can match eol */
4380YY_RULE_SETUP
4381#line 1219 "commentscan.l"
4382{ // line continuation
4383 yyLineNr++;
4384 addOutput('\n');
4385 }
4386YY_BREAK
4387case 60:
4388/* rule 60 can match eol */
4389YY_RULE_SETUP
4390#line 1223 "commentscan.l"
4391{
4392 warn(yyFileName,yyLineNr,
4393 "warning: missing argument after "
4394 "\\%s.",YY_START==ClassDocArg1?"class":"category"
4395 );
4396 addOutput('\n');
4397 if (*commentScanYYtext=='\n') yyLineNr++;
4398 BEGIN( Comment );
4399 }
4400YY_BREAK
4401case 61:
4402YY_RULE_SETUP
4403#line 1232 "commentscan.l"
4404{ // ignore other stuff
4405 }
4406YY_BREAK
4407case 62:
4408YY_RULE_SETUP
4409#line 1235 "commentscan.l"
4410{ // second argument; include file
4411 current->includeFile = commentScanYYtext;
4412 BEGIN( ClassDocArg3 );
4413}
4414YY_BREAK
4415case 63:
4416/* rule 63 can match eol */
4417YY_RULE_SETUP
4418#line 1239 "commentscan.l"
4419{ // line continuation
4420 yyLineNr++;
4421 addOutput('\n');
4422 }
4423YY_BREAK
4424case 64:
4425/* rule 64 can match eol */
4426YY_RULE_SETUP
4427#line 1243 "commentscan.l"
4428{
4429 addOutput('\n');
4430 if (*commentScanYYtext=='\n') yyLineNr++;
4431 BEGIN( Comment );
4432}
4433YY_BREAK
4434case 65:
4435YY_RULE_SETUP
4436#line 1248 "commentscan.l"
4437{ // ignore other stuff
4438 }
4439YY_BREAK
4440case 66:
4441YY_RULE_SETUP
4442#line 1251 "commentscan.l"
4443{ // third argument; include file name
4444 current->includeName = commentScanYYtext;
4445 BEGIN( Comment );
4446}
4447YY_BREAK
4448case 67:
4449/* rule 67 can match eol */
4450YY_RULE_SETUP
4451#line 1255 "commentscan.l"
4452{ // line continuation
4453 yyLineNr++;
4454 addOutput('\n');
4455 }
4456YY_BREAK
4457case 68:
4458/* rule 68 can match eol */
4459YY_RULE_SETUP
4460#line 1259 "commentscan.l"
4461{
4462 if (*commentScanYYtext=='\n') yyLineNr++;
4463 BEGIN( Comment );
4464}
4465YY_BREAK
4466case 69:
4467YY_RULE_SETUP
4468#line 1263 "commentscan.l"
4469{ // ignore other stuff
4470 }
4471YY_BREAK
4472/* --------- handle arguments of {def,add,weak}group commands --------- */
4473case 70:
4474YY_RULE_SETUP
4475#line 1268 "commentscan.l"
4476{ // group name
4477 current->name = commentScanYYtext;
4478 //lastDefGroup.groupname = commentScanYYtext;
4479 //lastDefGroup.pri = current->groupingPri();
4480 // the .html stuff is for Qt compatibility
4481 if (current->name.right(5)==".html")
4482 {
4483 current->name=current->name.left(current->name.length()-5);
4484 }
4485 current->type.resize(0);
4486 BEGIN(GroupDocArg2);
4487 }
4488YY_BREAK
4489case 71:
4490/* rule 71 can match eol */
4491YY_RULE_SETUP
4492#line 1280 "commentscan.l"
4493{ // line continuation
4494 yyLineNr++;
4495 addOutput('\n');
4496 }
4497YY_BREAK
4498case 72:
4499/* rule 72 can match eol */
4500YY_RULE_SETUP
4501#line 1284 "commentscan.l"
4502{ // missing argument!
4503 warn(yyFileName,yyLineNr,
4504 "warning: missing group name after %s",
4505 current->groupDocCmd()
4506 );
4507 addOutput('\n');
4508 if (*commentScanYYtext=='\n') yyLineNr++;
4509 BEGIN( Comment );
4510 }
4511YY_BREAK
4512case 73:
4513/* rule 73 can match eol */
4514YY_RULE_SETUP
4515#line 1293 "commentscan.l"
4516{ // line continuation
4517 yyLineNr++;
4518 addOutput('\n');
4519 }
4520YY_BREAK
4521case 74:
4522YY_RULE_SETUP
4523#line 1297 "commentscan.l"
4524{ // title (stored in type)
4525 current->type += commentScanYYtext;
4526 current->type = current->type.stripWhiteSpace();
4527 }
4528YY_BREAK
4529case 75:
4530/* rule 75 can match eol */
4531YY_RULE_SETUP
4532#line 1301 "commentscan.l"
4533{
4534 if ( current->groupDocType==Entry::GROUPDOC_NORMAL &&
4535 current->type.isEmpty()
4536 ) // defgroup requires second argument
4537 {
4538 warn(yyFileName,yyLineNr,
4539 "warning: missing title after "
4540 "\\defgroup %s", current->name.data()
4541 );
4542 }
4543 if (*commentScanYYtext=='\n') yyLineNr++;
4544 addOutput('\n');
4545 BEGIN( Comment );
4546 }
4547YY_BREAK
4548/* --------- handle arguments of page/mainpage command ------------------- */
4549case 76:
4550YY_RULE_SETUP
4551#line 1318 "commentscan.l"
4552{ // first argument; page name
4553 current->name = stripQuotes(commentScanYYtext);
4554 BEGIN( PageDocArg2 );
4555}
4556YY_BREAK
4557case 77:
4558/* rule 77 can match eol */
4559YY_RULE_SETUP
4560#line 1322 "commentscan.l"
4561{ yyLineNr++;
4562 addOutput('\n');
4563 }
4564YY_BREAK
4565case 78:
4566/* rule 78 can match eol */
4567YY_RULE_SETUP
4568#line 1325 "commentscan.l"
4569{
4570 warn(yyFileName,yyLineNr,
4571 "warning: missing argument after "
4572 "\\page."
4573 );
4574 if (*commentScanYYtext=='\n') yyLineNr++;
4575 addOutput('\n');
4576 BEGIN( Comment );
4577 }
4578YY_BREAK
4579case 79:
4580YY_RULE_SETUP
4581#line 1334 "commentscan.l"
4582{ // ignore other stuff
4583 }
4584YY_BREAK
4585case 80:
4586/* rule 80 can match eol */
4587YY_RULE_SETUP
4588#line 1336 "commentscan.l"
4589{ // second argument; page title
4590 yyLineNr++;
4591 current->args = commentScanYYtext;
4592 addOutput('\n');
4593 BEGIN( Comment );
4594}
4595YY_BREAK
4596/* --------- handle arguments of the file/dir/example command ------------ */
4597case 81:
4598/* rule 81 can match eol */
4599YY_RULE_SETUP
4600#line 1345 "commentscan.l"
4601{ // no file name specfied
4602 if (*commentScanYYtext=='\n') yyLineNr++;
4603 addOutput('\n');
4604 BEGIN( Comment );
4605}
4606YY_BREAK
4607case 82:
4608YY_RULE_SETUP
4609#line 1350 "commentscan.l"
4610{ // first argument; name
4611 current->name = stripQuotes(commentScanYYtext);
4612 BEGIN( Comment );
4613 }
4614YY_BREAK
4615case 83:
4616/* rule 83 can match eol */
4617YY_RULE_SETUP
4618#line 1354 "commentscan.l"
4619{ yyLineNr++;
4620 addOutput('\n');
4621 }
4622YY_BREAK
4623case 84:
4624YY_RULE_SETUP
4625#line 1357 "commentscan.l"
4626{ // ignore other stuff
4627 }
4628YY_BREAK
4629/* --------- handle arguments of the xrefitem command ------------ */
4630case 85:
4631YY_RULE_SETUP
4632#line 1362 "commentscan.l"
4633{ // first argument
4634 newXRefItemKey=commentScanYYtext;
4635 setOutput(OutputXRef);
4636 BEGIN(XRefItemParam2);
4637}
4638YY_BREAK
4639case 86:
4640/* rule 86 can match eol */
4641YY_RULE_SETUP
4642#line 1367 "commentscan.l"
4643{ // line continuation
4644 yyLineNr++;
4645 addOutput('\n');
4646 }
4647YY_BREAK
4648case 87:
4649/* rule 87 can match eol */
4650YY_RULE_SETUP
4651#line 1371 "commentscan.l"
4652{ // missing arguments
4653 warn(yyFileName,yyLineNr,
4654 "warning: Missing first argument of \\xrefitem"
4655 );
4656 if (*commentScanYYtext=='\n') yyLineNr++;
4657 addOutput('\n');
4658 inContext = OutputDoc;
4659 BEGIN( Comment );
4660 }
4661YY_BREAK
4662case 88:
4663YY_RULE_SETUP
4664#line 1380 "commentscan.l"
4665{ // ignore other stuff
4666 }
4667YY_BREAK
4668case 89:
4669YY_RULE_SETUP
4670#line 1383 "commentscan.l"
4671{ // second argument
4672 xrefItemTitle = stripQuotes(commentScanYYtext);
4673 BEGIN(XRefItemParam3);
4674 }
4675YY_BREAK
4676case 90:
4677/* rule 90 can match eol */
4678YY_RULE_SETUP
4679#line 1387 "commentscan.l"
4680{ // line continuation
4681 yyLineNr++;
4682 addOutput('\n');
4683 }
4684YY_BREAK
4685case 91:
4686/* rule 91 can match eol */
4687YY_RULE_SETUP
4688#line 1391 "commentscan.l"
4689{ // missing argument
4690 warn(yyFileName,yyLineNr,
4691 "warning: Missing second argument of \\xrefitem"
4692 );
4693 if (*commentScanYYtext=='\n') yyLineNr++;
4694 addOutput('\n');
4695 inContext = OutputDoc;
4696 BEGIN( Comment );
4697 }
4698YY_BREAK
4699case 92:
4700YY_RULE_SETUP
4701#line 1400 "commentscan.l"
4702{ // ignore other stuff
4703 }
4704YY_BREAK
4705case 93:
4706YY_RULE_SETUP
4707#line 1403 "commentscan.l"
4708{ // third argument
4709 xrefListTitle = stripQuotes(commentScanYYtext);
4710 xrefKind = XRef_Item;
4711 BEGIN( Comment );
4712 }
4713YY_BREAK
4714case 94:
4715/* rule 94 can match eol */
4716YY_RULE_SETUP
4717#line 1408 "commentscan.l"
4718{ // line continuation
4719 yyLineNr++;
4720 addOutput('\n');
4721 }
4722YY_BREAK
4723case 95:
4724/* rule 95 can match eol */
4725YY_RULE_SETUP
4726#line 1412 "commentscan.l"
4727{ // missing argument
4728 warn(yyFileName,yyLineNr,
4729 "warning: Missing third argument of \\xrefitem"
4730 );
4731 if (*commentScanYYtext=='\n') yyLineNr++;
4732 addOutput('\n');
4733 inContext = OutputDoc;
4734 BEGIN( Comment );
4735 }
4736YY_BREAK
4737case 96:
4738YY_RULE_SETUP
4739#line 1421 "commentscan.l"
4740{ // ignore other stuff
4741 }
4742YY_BREAK
4743/* ----- handle arguments of the relates(also)/memberof command ------- */
4744case 97:
4745YY_RULE_SETUP
4746#line 1427 "commentscan.l"
4747{ // argument
4748 current->relates = commentScanYYtext;
4749 //if (current->mGrpId!=DOX_NOGROUP)
4750 //{
4751 // memberGroupRelates = commentScanYYtext;
4752 //}
4753 BEGIN( Comment );
4754}
4755YY_BREAK
4756case 98:
4757/* rule 98 can match eol */
4758YY_RULE_SETUP
4759#line 1435 "commentscan.l"
4760{ // line continuation
4761 yyLineNr++;
4762 addOutput('\n');
4763 }
4764YY_BREAK
4765case 99:
4766/* rule 99 can match eol */
4767YY_RULE_SETUP
4768#line 1439 "commentscan.l"
4769{ // missing argument
4770 warn(yyFileName,yyLineNr,
4771 "warning: Missing argument of \\relates or \\memberof command"
4772 );
4773 if (*commentScanYYtext=='\n') yyLineNr++;
4774 addOutput('\n');
4775 BEGIN( Comment );
4776 }
4777YY_BREAK
4778case 100:
4779YY_RULE_SETUP
4780#line 1447 "commentscan.l"
4781{ // ignore other stuff
4782 }
4783YY_BREAK
4784/* ----- handle arguments of the relates(also)/addindex commands ----- */
4785case 101:
4786/* rule 101 can match eol */
4787YY_RULE_SETUP
4788#line 1453 "commentscan.l"
4789{ // end of argument
4790 if (*commentScanYYtext=='\n') yyLineNr++;
4791 addOutput('\n');
4792 BEGIN( Comment );
4793 }
4794YY_BREAK
4795case 102:
4796/* rule 102 can match eol */
4797YY_RULE_SETUP
4798#line 1458 "commentscan.l"
4799{ // line continuation
4800 yyLineNr++;
4801 addOutput('\n');
4802 }
4803YY_BREAK
4804case 103:
4805YY_RULE_SETUP
4806#line 1462 "commentscan.l"
4807{ // ignore other stuff
4808 addOutput(*commentScanYYtext);
4809 }
4810YY_BREAK
4811/* ----- handle arguments of the section/subsection/.. commands ------- */
4812case 104:
4813YY_RULE_SETUP
4814#line 1468 "commentscan.l"
4815{ // first argyment
4816 sectionLabel=commentScanYYtext;
4817 addOutput(commentScanYYtext);
4818 sectionTitle.resize(0);
4819 BEGIN(SectionTitle);
4820 }
4821YY_BREAK
4822case 105:
4823/* rule 105 can match eol */
4824YY_RULE_SETUP
4825#line 1474 "commentscan.l"
4826{ // missing argument
4827 warn(yyFileName,yyLineNr,
4828 "warning: \\section command has no label"
4829 );
4830 if (*commentScanYYtext=='\n') yyLineNr++;
4831 addOutput('\n');
4832 BEGIN( Comment );
4833 }
4834YY_BREAK
4835case 106:
4836YY_RULE_SETUP
4837#line 1482 "commentscan.l"
4838{ // invalid character for section label
4839 warn(yyFileName,yyLineNr,
4840 "warning: Invalid or missing section label"
4841 );
4842 BEGIN(Comment);
4843 }
4844YY_BREAK
4845case 107:
4846/* rule 107 can match eol */
4847*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
4848(yy_c_buf_p) = yy_cp -= 1;
4849YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
4850YY_RULE_SETUP
4851#line 1489 "commentscan.l"
4852{ // end of section title
4853 addSection();
4854 addOutput(commentScanYYtext);
4855 BEGIN( Comment );
4856 }
4857YY_BREAK
4858case 108:
4859*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
4860(yy_c_buf_p) = yy_cp -= 8;
4861YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
4862YY_RULE_SETUP
4863#line 1494 "commentscan.l"
4864{ // end of section title
4865 addSection();
4866 addOutput(commentScanYYtext);
4867 BEGIN( Comment );
4868 }
4869YY_BREAK
4870case 109:
4871/* rule 109 can match eol */
4872YY_RULE_SETUP
4873#line 1499 "commentscan.l"
4874{ // line continuation
4875 yyLineNr++;
4876 addOutput('\n');
4877 }
4878YY_BREAK
4879case 110:
4880YY_RULE_SETUP
4881#line 1503 "commentscan.l"
4882{ // any character without special meaning
4883 sectionTitle+=commentScanYYtext;
4884 addOutput(commentScanYYtext);
4885 }
4886YY_BREAK
4887case 111:
4888YY_RULE_SETUP
4889#line 1507 "commentscan.l"
4890{ // unescape escaped command
4891 sectionTitle+=&commentScanYYtext[1];
4892 addOutput(commentScanYYtext);
4893 }
4894YY_BREAK
4895case 112:
4896YY_RULE_SETUP
4897#line 1511 "commentscan.l"
4898{ // unescape escaped character
4899 sectionTitle+=commentScanYYtext[1];
4900 addOutput(commentScanYYtext);
4901 }
4902YY_BREAK
4903case 113:
4904YY_RULE_SETUP
4905#line 1515 "commentscan.l"
4906{ // anything else
4907 sectionTitle+=commentScanYYtext;
4908 addOutput(*commentScanYYtext);
4909 }
4910YY_BREAK
4911/* ----- handle arguments of the subpage command ------- */
4912case 114:
4913YY_RULE_SETUP
4914#line 1522 "commentscan.l"
4915{ // first argument
4916 addOutput(commentScanYYtext);
4917 // we add subpage labels as a kind of "inheritance" relation to prevent
4918 // needing to add another list to the Entry class.
4919 current->extends->append(new BaseInfo(commentScanYYtext,Public,Normal));
4920 BEGIN(SubpageTitle);
4921 }
4922YY_BREAK
4923case 115:
4924/* rule 115 can match eol */
4925YY_RULE_SETUP
4926#line 1529 "commentscan.l"
4927{ // missing argument
4928 warn(yyFileName,yyLineNr,
4929 "warning: \\subpage command has no label"
4930 );
4931 if (*commentScanYYtext=='\n') yyLineNr++;
4932 addOutput('\n');
4933 BEGIN( Comment );
4934 }
4935YY_BREAK
4936case 116:
4937/* rule 116 can match eol */
4938YY_RULE_SETUP
4939#line 1537 "commentscan.l"
4940{ // no title, end command
4941 addOutput(commentScanYYtext);
4942 BEGIN( Comment );
4943 }
4944YY_BREAK
4945case 117:
4946YY_RULE_SETUP
4947#line 1541 "commentscan.l"
4948{ // add title, end of command
4949 addOutput(commentScanYYtext);
4950 BEGIN( Comment );
4951 }
4952YY_BREAK
4953case 118:
4954YY_RULE_SETUP
4955#line 1545 "commentscan.l"
4956{ // no title, end of command
4957 unput(*commentScanYYtext);
4958 BEGIN( Comment );
4959 }
4960YY_BREAK
4961/* ----- handle arguments of the anchor command ------- */
4962case 119:
4963YY_RULE_SETUP
4964#line 1552 "commentscan.l"
4965{ // found argument
4966 SectionInfo *si = new SectionInfo(yyFileName,commentScanYYtext,0,SectionInfo::Anchor);
4967 Doxygen::sectionDict.insert(commentScanYYtext,si);
4968 current->anchors->append(si);
4969 addOutput(commentScanYYtext);
4970 BEGIN( Comment );
4971 }
4972YY_BREAK
4973case 120:
4974/* rule 120 can match eol */
4975YY_RULE_SETUP
4976#line 1559 "commentscan.l"
4977{ // missing argument
4978 warn(yyFileName,yyLineNr,
4979 "warning: \\anchor command has no label"
4980 );
4981 if (*commentScanYYtext=='\n') yyLineNr++;
4982 addOutput('\n');
4983 BEGIN( Comment );
4984 }
4985YY_BREAK
4986case 121:
4987YY_RULE_SETUP
4988#line 1567 "commentscan.l"
4989{ // invalid character for anchor label
4990 warn(yyFileName,yyLineNr,
4991 "warning: Invalid or missing anchor label"
4992 );
4993 BEGIN(Comment);
4994 }
4995YY_BREAK
4996/* ----- handle arguments of the preformatted block commands ------- */
4997case 122:
4998/* rule 122 can match eol */
4999*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5000(yy_c_buf_p) = yy_cp -= 1;
5001YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5002YY_RULE_SETUP
5003#line 1577 "commentscan.l"
5004{ // possible ends
5005 addOutput(commentScanYYtext);
5006 if (&commentScanYYtext[4]==blockName) // found end of the block
5007 {
5008 BEGIN(Comment);
5009 }
5010 }
5011YY_BREAK
5012case 123:
5013YY_RULE_SETUP
5014#line 1584 "commentscan.l"
5015{ // some word
5016 addOutput(commentScanYYtext);
5017 }
5018YY_BREAK
5019case 124:
5020/* rule 124 can match eol */
5021YY_RULE_SETUP
5022#line 1587 "commentscan.l"
5023{ // new line
5024 if (*commentScanYYtext=='\n') yyLineNr++;
5025 addOutput('\n');
5026 }
5027YY_BREAK
5028case 125:
5029YY_RULE_SETUP
5030#line 1591 "commentscan.l"
5031{ // start of a C-comment
5032 g_commentCount++;
5033 addOutput(commentScanYYtext);
5034 }
5035YY_BREAK
5036case 126:
5037YY_RULE_SETUP
5038#line 1595 "commentscan.l"
5039{ // end of a C-comment
5040 addOutput(commentScanYYtext);
5041 g_commentCount--;
5042 if (g_commentCount<0 && blockName!="verbatim")
5043 {
5044 warn(yyFileName,yyLineNr,
5045 "warning: found */ without matching /* while inside a \\%s block! Perhaps a missing \\end%s?\n",blockName.data(),blockName.data());
5046 }
5047 }
5048YY_BREAK
5049case 127:
5050YY_RULE_SETUP
5051#line 1604 "commentscan.l"
5052{
5053 addOutput(*commentScanYYtext);
5054 }
5055YY_BREAK
5056case YY_STATE_EOF(FormatBlock):
5057#line 1607 "commentscan.l"
5058{
5059 warn(yyFileName,yyLineNr,
5060 "warning: reached end of comment while inside a @%s block; check for missing @end%s tag!",
5061 blockName.data(),blockName.data()
5062 );
5063 yyterminate();
5064 }
5065YY_BREAK
5066/* ----- handle arguments of if/ifnot commands ------- */
5067case 128:
5068YY_RULE_SETUP
5069#line 1617 "commentscan.l"
5070{ // parameter of if/ifnot guard
5071 bool sectionEnabled = Config_getList("ENABLED_SECTIONS").find(commentScanYYtext)!=-1;
5072 bool parentEnabled = TRUE;
5073 if (!guards.isEmpty()) parentEnabled = guards.top()->isEnabled();
5074 if (parentEnabled)
5075 {
5076 if (
5077(sectionEnabled && guardType==Guard_If) ||
5078(!sectionEnabled && guardType==Guard_IfNot)
5079 ) // section is visible
5080 {
5081 guards.push(new GuardedSection(TRUE,TRUE));
5082 enabledSectionFound=TRUE;
5083 BEGIN( GuardParamEnd );
5084 }
5085 else // section is invisible
5086 {
5087 if (guardType!=Guard_Skip)
5088 {
5089 guards.push(new GuardedSection(FALSE,TRUE));
5090 }
5091 BEGIN( SkipGuardedSection );
5092 }
5093 }
5094 else // invisible because of parent
5095 {
5096 guards.push(new GuardedSection(FALSE,FALSE));
5097 BEGIN( SkipGuardedSection );
5098 }
5099 }
5100YY_BREAK
5101case 129:
5102/* rule 129 can match eol */
5103YY_RULE_SETUP
5104#line 1647 "commentscan.l"
5105{ // end of argument
5106 if (*commentScanYYtext=='\n') yyLineNr++;
5107 //next line is commented out due to bug620924
5108 //addOutput('\n');
5109 BEGIN( Comment );
5110 }
5111YY_BREAK
5112case 130:
5113/* rule 130 can match eol */
5114YY_RULE_SETUP
5115#line 1653 "commentscan.l"
5116{ // line continuation
5117 yyLineNr++;
5118 addOutput('\n');
5119 }
5120YY_BREAK
5121case 131:
5122YY_RULE_SETUP
5123#line 1657 "commentscan.l"
5124{ // ignore other stuff
5125 addOutput(*commentScanYYtext);
5126 }
5127YY_BREAK
5128case 132:
5129/* rule 132 can match eol */
5130YY_RULE_SETUP
5131#line 1660 "commentscan.l"
5132{
5133 BEGIN(Comment);
5134 }
5135YY_BREAK
5136case 133:
5137YY_RULE_SETUP
5138#line 1663 "commentscan.l"
5139{
5140 BEGIN(Comment);
5141 }
5142YY_BREAK
5143case 134:
5144YY_RULE_SETUP
5145#line 1666 "commentscan.l"
5146{
5147 unput(*commentScanYYtext);
5148 BEGIN(Comment);
5149 }
5150YY_BREAK
5151/* ----- handle skipping of conditional sections ------- */
5152case 135:
5153/* rule 135 can match eol */
5154*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5155(yy_c_buf_p) = yy_cp -= 1;
5156YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5157YY_RULE_SETUP
5158#line 1673 "commentscan.l"
5159{
5160 guardType = Guard_IfNot;
5161 BEGIN( GuardParam );
5162 }
5163YY_BREAK
5164case 136:
5165/* rule 136 can match eol */
5166*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5167(yy_c_buf_p) = yy_cp -= 1;
5168YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5169YY_RULE_SETUP
5170#line 1677 "commentscan.l"
5171{
5172 guardType = Guard_If;
5173 BEGIN( GuardParam );
5174 }
5175YY_BREAK
5176case 137:
5177/* rule 137 can match eol */
5178*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5179(yy_c_buf_p) = yy_cp -= 1;
5180YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5181YY_RULE_SETUP
5182#line 1681 "commentscan.l"
5183{
5184 if (guards.isEmpty())
5185 {
5186 warn(yyFileName,yyLineNr,
5187"warning: found @endif without matching start command");
5188 }
5189 else
5190 {
5191 delete guards.pop();
5192 BEGIN( GuardParamEnd );
5193 }
5194 }
5195YY_BREAK
5196case 138:
5197/* rule 138 can match eol */
5198*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5199(yy_c_buf_p) = yy_cp -= 1;
5200YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5201YY_RULE_SETUP
5202#line 1693 "commentscan.l"
5203{
5204 if (guards.isEmpty())
5205 {
5206 warn(yyFileName,yyLineNr,
5207"warning: found @else without matching start command");
5208 }
5209 else
5210 {
5211 if (!enabledSectionFound && guards.top()->parentVisible())
5212 {
5213 delete guards.pop();
5214 guards.push(new GuardedSection(TRUE,TRUE));
5215 enabledSectionFound=TRUE;
5216 BEGIN( GuardParamEnd );
5217 }
5218 }
5219 }
5220YY_BREAK
5221case 139:
5222/* rule 139 can match eol */
5223*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5224(yy_c_buf_p) = yy_cp -= 1;
5225YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5226YY_RULE_SETUP
5227#line 1710 "commentscan.l"
5228{
5229 if (guards.isEmpty())
5230 {
5231 warn(yyFileName,yyLineNr,
5232"warning: found @elseif without matching start command");
5233 }
5234 else
5235 {
5236 if (!enabledSectionFound && guards.top()->parentVisible())
5237 {
5238 delete guards.pop();
5239 BEGIN( GuardParam );
5240 }
5241 }
5242 }
5243YY_BREAK
5244case 140:
5245/* rule 140 can match eol */
5246YY_RULE_SETUP
5247#line 1725 "commentscan.l"
5248{ // skip line
5249 if (*commentScanYYtext=='\n') yyLineNr++;
5250 //addOutput('\n');
5251 }
5252YY_BREAK
5253case 141:
5254YY_RULE_SETUP
5255#line 1729 "commentscan.l"
5256{ // skip non-special characters
5257 }
5258YY_BREAK
5259case 142:
5260YY_RULE_SETUP
5261#line 1731 "commentscan.l"
5262{ // any other character
5263 }
5264YY_BREAK
5265/* ----- handle skipping of internal section ------- */
5266case 143:
5267/* rule 143 can match eol */
5268YY_RULE_SETUP
5269#line 1737 "commentscan.l"
5270{ // skip line
5271 if (*commentScanYYtext=='\n') yyLineNr++;
5272 addOutput('\n');
5273 }
5274YY_BREAK
5275case 144:
5276*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5277(yy_c_buf_p) = yy_cp = yy_bp + 3;
5278YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5279YY_RULE_SETUP
5280#line 1741 "commentscan.l"
5281{
5282 g_condCount++;
5283 }
5284YY_BREAK
5285case 145:
5286*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5287(yy_c_buf_p) = yy_cp = yy_bp + 6;
5288YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5289YY_RULE_SETUP
5290#line 1744 "commentscan.l"
5291{
5292 g_condCount++;
5293 }
5294YY_BREAK
5295case 146:
5296*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5297(yy_c_buf_p) = yy_cp = yy_bp + 1;
5298YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5299YY_RULE_SETUP
5300#line 1747 "commentscan.l"
5301{
5302 g_condCount--;
5303 if (g_condCount<0) // handle conditional section around of \internal, see bug607743
5304 {
5305 unput('\\');
5306 BEGIN(Comment);
5307 }
5308 }
5309YY_BREAK
5310case 147:
5311*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5312(yy_c_buf_p) = yy_cp = yy_bp + 1;
5313YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5314YY_RULE_SETUP
5315#line 1755 "commentscan.l"
5316{
5317 if (g_sectionLevel>0)
5318 {
5319 unput('\\');
5320 BEGIN(Comment);
5321 }
5322 }
5323YY_BREAK
5324case 148:
5325*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5326(yy_c_buf_p) = yy_cp = yy_bp + 1;
5327YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5328YY_RULE_SETUP
5329#line 1762 "commentscan.l"
5330{
5331 if (g_sectionLevel>1)
5332 {
5333 unput('\\');
5334 BEGIN(Comment);
5335 }
5336 }
5337YY_BREAK
5338case 149:
5339*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5340(yy_c_buf_p) = yy_cp = yy_bp + 1;
5341YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5342YY_RULE_SETUP
5343#line 1769 "commentscan.l"
5344{
5345 if (g_sectionLevel>2)
5346 {
5347 unput('\\');
5348 BEGIN(Comment);
5349 }
5350 }
5351YY_BREAK
5352case 150:
5353*yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5354(yy_c_buf_p) = yy_cp = yy_bp + 1;
5355YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5356YY_RULE_SETUP
5357#line 1776 "commentscan.l"
5358{
5359 if (g_sectionLevel>3)
5360 {
5361 unput('\\');
5362 BEGIN(Comment);
5363 }
5364 }
5365YY_BREAK
5366case 151:
5367YY_RULE_SETUP
5368#line 1783 "commentscan.l"
5369{
5370 BEGIN(Comment);
5371}
5372YY_BREAK
5373case 152:
5374YY_RULE_SETUP
5375#line 1786 "commentscan.l"
5376{ // skip non-special characters
5377 }
5378YY_BREAK
5379case 153:
5380YY_RULE_SETUP
5381#line 1788 "commentscan.l"
5382{ // any other character
5383 }
5384YY_BREAK
5385/* ----- handle argument of name command ------- */
5386case 154:
5387/* rule 154 can match eol */
5388YY_RULE_SETUP
5389#line 1794 "commentscan.l"
5390{ // end of argument
5391 if (*commentScanYYtext=='\n') yyLineNr++;
5392 addOutput('\n');
5393 BEGIN( Comment );
5394 }
5395YY_BREAK
5396case 155:
5397/* rule 155 can match eol */
5398YY_RULE_SETUP
5399#line 1799 "commentscan.l"
5400{ // line continuation
5401 yyLineNr++;
5402 addOutput('\n');
5403 g_memberGroupHeader+=' ';
5404 }
5405YY_BREAK
5406case 156:
5407YY_RULE_SETUP
5408#line 1804 "commentscan.l"
5409{ // ignore other stuff
5410 g_memberGroupHeader+=*commentScanYYtext;
5411 current->name+=*commentScanYYtext;
5412 }
5413YY_BREAK
5414/* ----- handle argument of ingroup command ------- */
5415case 157:
5416YY_RULE_SETUP
5417#line 1811 "commentscan.l"
5418{ // group id
5419 current->groups->append(
5420 new Grouping(commentScanYYtext, Grouping::GROUPING_INGROUP)
5421 );
5422 inGroupParamFound=TRUE;
5423 }
5424YY_BREAK
5425case 158:
5426/* rule 158 can match eol */
5427YY_RULE_SETUP
5428#line 1817 "commentscan.l"
5429{ // missing argument
5430 if (!inGroupParamFound)
5431 {
5432 warn(yyFileName,yyLineNr,
5433 "warning: Missing group name for \\ingroup command"
5434 );
5435 }
5436 if (*commentScanYYtext=='\n') yyLineNr++;
5437 addOutput('\n');
5438 BEGIN( Comment );
5439 }
5440YY_BREAK
5441case 159:
5442/* rule 159 can match eol */
5443YY_RULE_SETUP
5444#line 1828 "commentscan.l"
5445{ // line continuation
5446 yyLineNr++;
5447 addOutput('\n');
5448 }
5449YY_BREAK
5450case 160:
5451YY_RULE_SETUP
5452#line 1832 "commentscan.l"
5453{ // ignore other stuff
5454 addOutput(*commentScanYYtext);
5455 }
5456YY_BREAK
5457/* ----- handle argument of fn command ------- */
5458case 161:
5459/* rule 161 can match eol */
5460YY_RULE_SETUP
5461#line 1838 "commentscan.l"
5462{ // end of argument
5463 if (braceCount==0)
5464 {
5465 if (*commentScanYYtext=='\n') yyLineNr++;
5466 addOutput('\n');
5467 langParser->parsePrototype(functionProto);
5468 BEGIN( Comment );
5469 }
5470 }
5471YY_BREAK
5472case 162:
5473/* rule 162 can match eol */
5474YY_RULE_SETUP
5475#line 1847 "commentscan.l"
5476{ // line continuation
5477 yyLineNr++;
5478 functionProto+=' ';
5479 }
5480YY_BREAK
5481case 163:
5482YY_RULE_SETUP
5483#line 1851 "commentscan.l"
5484{ // non-special characters
5485 functionProto+=commentScanYYtext;
5486 }
5487YY_BREAK
5488case 164:
5489YY_RULE_SETUP
5490#line 1854 "commentscan.l"
5491{
5492 functionProto+=commentScanYYtext;
5493 braceCount++;
5494}
5495YY_BREAK
5496case 165:
5497YY_RULE_SETUP
5498#line 1858 "commentscan.l"
5499{
5500 functionProto+=commentScanYYtext;
5501 braceCount--;
5502}
5503YY_BREAK
5504case 166:
5505YY_RULE_SETUP
5506#line 1862 "commentscan.l"
5507{ // add other stuff
5508 functionProto+=*commentScanYYtext;
5509 }
5510YY_BREAK
5511/* ----- handle argument of overload command ------- */
5512case 167:
5513/* rule 167 can match eol */
5514YY_RULE_SETUP
5515#line 1870 "commentscan.l"
5516{ // end of argument
5517 if (*commentScanYYtext=='\n') yyLineNr++;
5518 addOutput('\n');
5519 if (functionProto.stripWhiteSpace().isEmpty())
5520 { // plain overload command
5521 addOutput(getOverloadDocs());
5522 }
5523 else // overload declaration
5524 {
5525 makeStructuralIndicator(Entry::OVERLOADDOC_SEC);
5526 langParser->parsePrototype(functionProto);
5527 }
5528 BEGIN( Comment );
5529 }
5530YY_BREAK
5531case 168:
5532/* rule 168 can match eol */
5533YY_RULE_SETUP
5534#line 1884 "commentscan.l"
5535{ // line continuation
5536 yyLineNr++;
5537 functionProto+=' ';
5538 }
5539YY_BREAK
5540case 169:
5541YY_RULE_SETUP
5542#line 1888 "commentscan.l"
5543{ // add other stuff
5544 functionProto+=*commentScanYYtext;
5545 }
5546YY_BREAK
5547/* ----- handle argument of inherit command ------- */
5548case 170:
5549YY_RULE_SETUP
5550#line 1894 "commentscan.l"
5551{ // found argument
5552 current->extends->append(
5553 new BaseInfo(removeRedundantWhiteSpace(commentScanYYtext),Public,Normal)
5554 );
5555 BEGIN( Comment );
5556 }
5557YY_BREAK
5558case 171:
5559/* rule 171 can match eol */
5560YY_RULE_SETUP
5561#line 1900 "commentscan.l"
5562{ // missing argument
5563 warn(yyFileName,yyLineNr,
5564 "warning: \\inherit command has no argument"
5565 );
5566 if (*commentScanYYtext=='\n') yyLineNr++;
5567 addOutput('\n');
5568 BEGIN( Comment );
5569 }
5570YY_BREAK
5571case 172:
5572YY_RULE_SETUP
5573#line 1908 "commentscan.l"
5574{ // invalid character for anchor label
5575 warn(yyFileName,yyLineNr,
5576 "warning: Invalid or missing name for \\inherit command"
5577 );
5578 BEGIN(Comment);
5579 }
5580YY_BREAK
5581/* ----- handle argument of extends and implements commands ------- */
5582case 173:
5583YY_RULE_SETUP
5584#line 1917 "commentscan.l"
5585{ // found argument
5586 current->extends->append(
5587 new BaseInfo(removeRedundantWhiteSpace(commentScanYYtext),Public,Normal)
5588 );
5589 BEGIN( Comment );
5590 }
5591YY_BREAK
5592case 174:
5593/* rule 174 can match eol */
5594YY_RULE_SETUP
5595#line 1923 "commentscan.l"
5596{ // missing argument
5597 warn(yyFileName,yyLineNr,
5598 "warning: \\extends or \\implements command has no argument"
5599 );
5600 if (*commentScanYYtext=='\n') yyLineNr++;
5601 addOutput('\n');
5602 BEGIN( Comment );
5603 }
5604YY_BREAK
5605case 175:
5606YY_RULE_SETUP
5607#line 1931 "commentscan.l"
5608{ // ignore other stuff
5609 }
5610YY_BREAK
5611/* ----- handle language specific sections ------- */
5612case 176:
5613YY_RULE_SETUP
5614#line 1936 "commentscan.l"
5615{ /* language switch */
5616 QCString langId = &commentScanYYtext[2];
5617 if (langId.isEmpty() ||
5618 stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)==0)
5619 { // enable language specific section
5620 BEGIN(Comment);
5621 }
5622 }
5623YY_BREAK
5624case 177:
5625YY_RULE_SETUP
5626#line 1944 "commentscan.l"
5627{ /* any character not a *, @, backslash or new line */
5628 }
5629YY_BREAK
5630case 178:
5631/* rule 178 can match eol */
5632YY_RULE_SETUP
5633#line 1946 "commentscan.l"
5634{ /* new line in verbatim block */
5635 if (*commentScanYYtext=='\n') yyLineNr++;
5636 }
5637YY_BREAK
5638case 179:
5639YY_RULE_SETUP
5640#line 1949 "commentscan.l"
5641{ /* any other character */
5642 }
5643YY_BREAK
5644case 180:
5645YY_RULE_SETUP
5646#line 1953 "commentscan.l"
5647ECHO;
5648YY_BREAK
5649#line 5650 "<stdout>"
5650case YY_STATE_EOF(INITIAL):
5651case YY_STATE_EOF(Comment):
5652case YY_STATE_EOF(PageDocArg1):
5653case YY_STATE_EOF(PageDocArg2):
5654case YY_STATE_EOF(RelatesParam1):
5655case YY_STATE_EOF(ClassDocArg1):
5656case YY_STATE_EOF(ClassDocArg2):
5657case YY_STATE_EOF(ClassDocArg3):
5658case YY_STATE_EOF(CategoryDocArg1):
5659case YY_STATE_EOF(XRefItemParam1):
5660case YY_STATE_EOF(XRefItemParam2):
5661case YY_STATE_EOF(XRefItemParam3):
5662case YY_STATE_EOF(FileDocArg1):
5663case YY_STATE_EOF(EnumDocArg1):
5664case YY_STATE_EOF(NameSpaceDocArg1):
5665case YY_STATE_EOF(PackageDocArg1):
5666case YY_STATE_EOF(GroupDocArg1):
5667case YY_STATE_EOF(GroupDocArg2):
5668case YY_STATE_EOF(SectionLabel):
5669case YY_STATE_EOF(SectionTitle):
5670case YY_STATE_EOF(SubpageLabel):
5671case YY_STATE_EOF(SubpageTitle):
5672case YY_STATE_EOF(LineParam):
5673case YY_STATE_EOF(GuardParam):
5674case YY_STATE_EOF(GuardParamEnd):
5675case YY_STATE_EOF(SkipGuardedSection):
5676case YY_STATE_EOF(SkipInternal):
5677case YY_STATE_EOF(NameParam):
5678case YY_STATE_EOF(InGroupParam):
5679case YY_STATE_EOF(FnParam):
5680case YY_STATE_EOF(OverloadParam):
5681case YY_STATE_EOF(InheritParam):
5682case YY_STATE_EOF(ExtendsParam):
5683case YY_STATE_EOF(ReadFormulaShort):
5684case YY_STATE_EOF(ReadFormulaLong):
5685case YY_STATE_EOF(AnchorLabel):
5686case YY_STATE_EOF(HtmlComment):
5687case YY_STATE_EOF(SkipLang):
5688yyterminate();
5689
5690case YY_END_OF_BUFFER:
5691{
5692/* Amount of text matched not including the EOB char. */
5693int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
5694
5695/* Undo the effects of YY_DO_BEFORE_ACTION. */
5696*yy_cp = (yy_hold_char);
5697YY_RESTORE_YY_MORE_OFFSET
5698
5699if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
5700{
5701/* We're scanning a new file or input source. It's
5702 * possible that this happened because the user
5703 * just pointed commentScanYYin at a new source and called
5704 * commentScanYYlex(). If so, then we have to assure
5705 * consistency between YY_CURRENT_BUFFER and our
5706 * globals. Here is the right place to do so, because
5707 * this is the first action (other than possibly a
5708 * back-up) that will match for the new input source.
5709 */
5710(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5711YY_CURRENT_BUFFER_LVALUE->yy_input_file = commentScanYYin;
5712YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
5713}
5714
5715/* Note that here we test for yy_c_buf_p "<=" to the position
5716 * of the first EOB in the buffer, since yy_c_buf_p will
5717 * already have been incremented past the NUL character
5718 * (since all states make transitions on EOB to the
5719 * end-of-buffer state). Contrast this with the test
5720 * in input().
5721 */
5722if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5723{ /* This was really a NUL. */
5724yy_state_type yy_next_state;
5725
5726(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
5727
5728yy_current_state = yy_get_previous_state( );
5729
5730/* Okay, we're now positioned to make the NUL
5731 * transition. We couldn't have
5732 * yy_get_previous_state() go ahead and do it
5733 * for us because it doesn't know how to deal
5734 * with the possibility of jamming (and we don't
5735 * want to build jamming into it because then it
5736 * will run more slowly).
5737 */
5738
5739yy_next_state = yy_try_NUL_trans( yy_current_state );
5740
5741yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5742
5743if ( yy_next_state )
5744{
5745/* Consume the NUL. */
5746yy_cp = ++(yy_c_buf_p);
5747yy_current_state = yy_next_state;
5748goto yy_match;
5749}
5750
5751else
5752{
5753yy_cp = (yy_c_buf_p);
5754goto yy_find_action;
5755}
5756}
5757
5758else switch ( yy_get_next_buffer( ) )
5759{
5760case EOB_ACT_END_OF_FILE:
5761{
5762(yy_did_buffer_switch_on_eof) = 0;
5763
5764if ( commentScanYYwrap( ) )
5765{
5766/* Note: because we've taken care in
5767 * yy_get_next_buffer() to have set up
5768 * commentScanYYtext, we can now set up
5769 * yy_c_buf_p so that if some total
5770 * hoser (like flex itself) wants to
5771 * call the scanner after we return the
5772 * YY_NULL, it'll still work - another
5773 * YY_NULL will get returned.
5774 */
5775(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
5776
5777yy_act = YY_STATE_EOF(YY_START);
5778goto do_action;
5779}
5780
5781else
5782{
5783if ( ! (yy_did_buffer_switch_on_eof) )
5784YY_NEW_FILE;
5785}
5786break;
5787}
5788
5789case EOB_ACT_CONTINUE_SCAN:
5790(yy_c_buf_p) =
5791(yytext_ptr) + yy_amount_of_matched_text;
5792
5793yy_current_state = yy_get_previous_state( );
5794
5795yy_cp = (yy_c_buf_p);
5796yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5797goto yy_match;
5798
5799case EOB_ACT_LAST_MATCH:
5800(yy_c_buf_p) =
5801&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
5802
5803yy_current_state = yy_get_previous_state( );
5804
5805yy_cp = (yy_c_buf_p);
5806yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5807goto yy_find_action;
5808}
5809break;
5810}
5811
5812default:
5813YY_FATAL_ERROR(
5814"fatal flex scanner internal error--no action found" );
5815} /* end of action switch */
5816} /* end of scanning one token */
5817} /* end of commentScanYYlex */
5818
5819/* yy_get_next_buffer - try to read in a new buffer
5820 *
5821 * Returns a code representing an action:
5822 *EOB_ACT_LAST_MATCH -
5823 *EOB_ACT_CONTINUE_SCAN - continue scanning from current position
5824 *EOB_ACT_END_OF_FILE - end of file
5825 */
5826static int yy_get_next_buffer (void)
5827{
5828 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
5829register char *source = (yytext_ptr);
5830register int number_to_move, i;
5831int ret_val;
5832
5833if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
5834YY_FATAL_ERROR(
5835"fatal flex scanner internal error--end of buffer missed" );
5836
5837if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
5838{ /* Don't try to fill the buffer, so this is an EOF. */
5839if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
5840{
5841/* We matched a single character, the EOB, so
5842 * treat this as a final EOF.
5843 */
5844return EOB_ACT_END_OF_FILE;
5845}
5846
5847else
5848{
5849/* We matched some text prior to the EOB, first
5850 * process it.
5851 */
5852return EOB_ACT_LAST_MATCH;
5853}
5854}
5855
5856/* Try to read more data. */
5857
5858/* First move last chars to start of buffer. */
5859number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
5860
5861for ( i = 0; i < number_to_move; ++i )
5862*(dest++) = *(source++);
5863
5864if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
5865/* don't do the read, it's not guaranteed to return an EOF,
5866 * just force an EOF
5867 */
5868YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
5869
5870else
5871{
5872yy_size_t num_to_read =
5873YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
5874
5875while ( num_to_read <= 0 )
5876{ /* Not enough room in the buffer - grow it. */
5877
5878YY_FATAL_ERROR(
5879"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
5880
5881}
5882
5883if ( num_to_read > YY_READ_BUF_SIZE )
5884num_to_read = YY_READ_BUF_SIZE;
5885
5886/* Read in more data. */
5887YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
5888(yy_n_chars), num_to_read );
5889
5890YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5891}
5892
5893if ( (yy_n_chars) == 0 )
5894{
5895if ( number_to_move == YY_MORE_ADJ )
5896{
5897ret_val = EOB_ACT_END_OF_FILE;
5898commentScanYYrestart(commentScanYYin );
5899}
5900
5901else
5902{
5903ret_val = EOB_ACT_LAST_MATCH;
5904YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
5905YY_BUFFER_EOF_PENDING;
5906}
5907}
5908
5909else
5910ret_val = EOB_ACT_CONTINUE_SCAN;
5911
5912if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
5913/* Extend the array by 50%, plus the number we really need. */
5914yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
5915YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) commentScanYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
5916if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
5917YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
5918}
5919
5920(yy_n_chars) += number_to_move;
5921YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
5922YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
5923
5924(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
5925
5926return ret_val;
5927}
5928
5929/* yy_get_previous_state - get the state just before the EOB char was reached */
5930
5931 static yy_state_type yy_get_previous_state (void)
5932{
5933register yy_state_type yy_current_state;
5934register char *yy_cp;
5935
5936yy_current_state = (yy_start);
5937yy_current_state += YY_AT_BOL();
5938
5939(yy_state_ptr) = (yy_state_buf);
5940*(yy_state_ptr)++ = yy_current_state;
5941
5942for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
5943{
5944register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
5945while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5946{
5947yy_current_state = (int) yy_def[yy_current_state];
5948if ( yy_current_state >= 1054 )
5949yy_c = yy_meta[(unsigned int) yy_c];
5950}
5951yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5952*(yy_state_ptr)++ = yy_current_state;
5953}
5954
5955return yy_current_state;
5956}
5957
5958/* yy_try_NUL_trans - try to make a transition on the NUL character
5959 *
5960 * synopsis
5961 *next_state = yy_try_NUL_trans( current_state );
5962 */
5963 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
5964{
5965register int yy_is_jam;
5966
5967register YY_CHAR yy_c = 1;
5968while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5969{
5970yy_current_state = (int) yy_def[yy_current_state];
5971if ( yy_current_state >= 1054 )
5972yy_c = yy_meta[(unsigned int) yy_c];
5973}
5974yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5975yy_is_jam = (yy_current_state == 1053);
5976if ( ! yy_is_jam )
5977*(yy_state_ptr)++ = yy_current_state;
5978
5979return yy_is_jam ? 0 : yy_current_state;
5980}
5981
5982 static void yyunput (int c, register char * yy_bp )
5983{
5984register char *yy_cp;
5985
5986 yy_cp = (yy_c_buf_p);
5987
5988/* undo effects of setting up commentScanYYtext */
5989*yy_cp = (yy_hold_char);
5990
5991if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
5992{ /* need to shift things up to make room */
5993/* +2 for EOB chars. */
5994register yy_size_t number_to_move = (yy_n_chars) + 2;
5995register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
5996YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
5997register char *source =
5998&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
5999
6000while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6001*--dest = *--source;
6002
6003yy_cp += (int) (dest - source);
6004yy_bp += (int) (dest - source);
6005YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
6006(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
6007
6008if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6009YY_FATAL_ERROR( "flex scanner push-back overflow" );
6010}
6011
6012*--yy_cp = (char) c;
6013
6014(yytext_ptr) = yy_bp;
6015(yy_hold_char) = *yy_cp;
6016(yy_c_buf_p) = yy_cp;
6017}
6018
6019#ifndef YY_NO_INPUT
6020#ifdef __cplusplus
6021 static int yyinput (void)
6022#else
6023 static int input (void)
6024#endif
6025
6026{
6027int c;
6028
6029*(yy_c_buf_p) = (yy_hold_char);
6030
6031if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
6032{
6033/* yy_c_buf_p now points to the character we want to return.
6034 * If this occurs *before* the EOB characters, then it's a
6035 * valid NUL; if not, then we've hit the end of the buffer.
6036 */
6037if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6038/* This was really a NUL. */
6039*(yy_c_buf_p) = '\0';
6040
6041else
6042{ /* need more input */
6043yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
6044++(yy_c_buf_p);
6045
6046switch ( yy_get_next_buffer( ) )
6047{
6048case EOB_ACT_LAST_MATCH:
6049/* This happens because yy_g_n_b()
6050 * sees that we've accumulated a
6051 * token and flags that we need to
6052 * try matching the token before
6053 * proceeding. But for input(),
6054 * there's no matching to consider.
6055 * So convert the EOB_ACT_LAST_MATCH
6056 * to EOB_ACT_END_OF_FILE.
6057 */
6058
6059/* Reset buffer status. */
6060commentScanYYrestart(commentScanYYin );
6061
6062/*FALLTHROUGH*/
6063
6064case EOB_ACT_END_OF_FILE:
6065{
6066if ( commentScanYYwrap( ) )
6067return 0;
6068
6069if ( ! (yy_did_buffer_switch_on_eof) )
6070YY_NEW_FILE;
6071#ifdef __cplusplus
6072return yyinput();
6073#else
6074return input();
6075#endif
6076}
6077
6078case EOB_ACT_CONTINUE_SCAN:
6079(yy_c_buf_p) = (yytext_ptr) + offset;
6080break;
6081}
6082}
6083}
6084
6085c = *(unsigned char *) (yy_c_buf_p);/* cast for 8-bit char's */
6086*(yy_c_buf_p) = '\0';/* preserve commentScanYYtext */
6087(yy_hold_char) = *++(yy_c_buf_p);
6088
6089YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
6090
6091return c;
6092}
6093#endif/* ifndef YY_NO_INPUT */
6094
6095/** Immediately switch to a different input stream.
6096 * @param input_file A readable stream.
6097 *
6098 * @note This function does not reset the start condition to @c INITIAL .
6099 */
6100 void commentScanYYrestart (FILE * input_file )
6101{
6102
6103if ( ! YY_CURRENT_BUFFER ){
6104 commentScanYYensure_buffer_stack ();
6105YY_CURRENT_BUFFER_LVALUE =
6106 commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE );
6107}
6108
6109commentScanYY_init_buffer(YY_CURRENT_BUFFER,input_file );
6110commentScanYY_load_buffer_state( );
6111}
6112
6113/** Switch to a different input buffer.
6114 * @param new_buffer The new input buffer.
6115 *
6116 */
6117 void commentScanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer )
6118{
6119
6120/* TODO. We should be able to replace this entire function body
6121 * with
6122 *commentScanYYpop_buffer_state();
6123 *commentScanYYpush_buffer_state(new_buffer);
6124 */
6125commentScanYYensure_buffer_stack ();
6126if ( YY_CURRENT_BUFFER == new_buffer )
6127return;
6128
6129if ( YY_CURRENT_BUFFER )
6130{
6131/* Flush out information for old buffer. */
6132*(yy_c_buf_p) = (yy_hold_char);
6133YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6134YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6135}
6136
6137YY_CURRENT_BUFFER_LVALUE = new_buffer;
6138commentScanYY_load_buffer_state( );
6139
6140/* We don't actually know whether we did this switch during
6141 * EOF (commentScanYYwrap()) processing, but the only time this flag
6142 * is looked at is after commentScanYYwrap() is called, so it's safe
6143 * to go ahead and always set it.
6144 */
6145(yy_did_buffer_switch_on_eof) = 1;
6146}
6147
6148static void commentScanYY_load_buffer_state (void)
6149{
6150 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6151(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6152commentScanYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6153(yy_hold_char) = *(yy_c_buf_p);
6154}
6155
6156/** Allocate and initialize an input buffer state.
6157 * @param file A readable stream.
6158 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6159 *
6160 * @return the allocated buffer state.
6161 */
6162 YY_BUFFER_STATE commentScanYY_create_buffer (FILE * file, int size )
6163{
6164YY_BUFFER_STATE b;
6165
6166b = (YY_BUFFER_STATE) commentScanYYalloc(sizeof( struct yy_buffer_state ) );
6167if ( ! b )
6168YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_create_buffer()" );
6169
6170b->yy_buf_size = size;
6171
6172/* yy_ch_buf has to be 2 characters longer than the size given because
6173 * we need to put in 2 end-of-buffer characters.
6174 */
6175b->yy_ch_buf = (char *) commentScanYYalloc(b->yy_buf_size + 2 );
6176if ( ! b->yy_ch_buf )
6177YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_create_buffer()" );
6178
6179b->yy_is_our_buffer = 1;
6180
6181commentScanYY_init_buffer(b,file );
6182
6183return b;
6184}
6185
6186/** Destroy the buffer.
6187 * @param b a buffer created with commentScanYY_create_buffer()
6188 *
6189 */
6190 void commentScanYY_delete_buffer (YY_BUFFER_STATE b )
6191{
6192
6193if ( ! b )
6194return;
6195
6196if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6197YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6198
6199if ( b->yy_is_our_buffer )
6200commentScanYYfree((void *) b->yy_ch_buf );
6201
6202commentScanYYfree((void *) b );
6203}
6204
6205#ifndef __cplusplus
6206extern int isatty (int );
6207#endif /* __cplusplus */
6208
6209/* Initializes or reinitializes a buffer.
6210 * This function is sometimes called more than once on the same buffer,
6211 * such as during a commentScanYYrestart() or at EOF.
6212 */
6213 static void commentScanYY_init_buffer (YY_BUFFER_STATE b, FILE * file )
6214
6215{
6216int oerrno = errno;
6217
6218commentScanYY_flush_buffer(b );
6219
6220b->yy_input_file = file;
6221b->yy_fill_buffer = 1;
6222
6223 /* If b is the current buffer, then commentScanYY_init_buffer was _probably_
6224 * called from commentScanYYrestart() or through yy_get_next_buffer.
6225 * In that case, we don't want to reset the lineno or column.
6226 */
6227 if (b != YY_CURRENT_BUFFER){
6228 b->yy_bs_lineno = 1;
6229 b->yy_bs_column = 0;
6230 }
6231
6232 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6233
6234errno = oerrno;
6235}
6236
6237/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6238 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6239 *
6240 */
6241 void commentScanYY_flush_buffer (YY_BUFFER_STATE b )
6242{
6243 if ( ! b )
6244return;
6245
6246b->yy_n_chars = 0;
6247
6248/* We always need two end-of-buffer characters. The first causes
6249 * a transition to the end-of-buffer state. The second causes
6250 * a jam in that state.
6251 */
6252b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6253b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6254
6255b->yy_buf_pos = &b->yy_ch_buf[0];
6256
6257b->yy_at_bol = 1;
6258b->yy_buffer_status = YY_BUFFER_NEW;
6259
6260if ( b == YY_CURRENT_BUFFER )
6261commentScanYY_load_buffer_state( );
6262}
6263
6264/** Pushes the new state onto the stack. The new state becomes
6265 * the current state. This function will allocate the stack
6266 * if necessary.
6267 * @param new_buffer The new state.
6268 *
6269 */
6270void commentScanYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
6271{
6272 if (new_buffer == NULL)
6273return;
6274
6275commentScanYYensure_buffer_stack();
6276
6277/* This block is copied from commentScanYY_switch_to_buffer. */
6278if ( YY_CURRENT_BUFFER )
6279{
6280/* Flush out information for old buffer. */
6281*(yy_c_buf_p) = (yy_hold_char);
6282YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6283YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6284}
6285
6286/* Only push if top exists. Otherwise, replace top. */
6287if (YY_CURRENT_BUFFER)
6288(yy_buffer_stack_top)++;
6289YY_CURRENT_BUFFER_LVALUE = new_buffer;
6290
6291/* copied from commentScanYY_switch_to_buffer. */
6292commentScanYY_load_buffer_state( );
6293(yy_did_buffer_switch_on_eof) = 1;
6294}
6295
6296/** Removes and deletes the top of the stack, if present.
6297 * The next element becomes the new top.
6298 *
6299 */
6300void commentScanYYpop_buffer_state (void)
6301{
6302 if (!YY_CURRENT_BUFFER)
6303return;
6304
6305commentScanYY_delete_buffer(YY_CURRENT_BUFFER );
6306YY_CURRENT_BUFFER_LVALUE = NULL;
6307if ((yy_buffer_stack_top) > 0)
6308--(yy_buffer_stack_top);
6309
6310if (YY_CURRENT_BUFFER) {
6311commentScanYY_load_buffer_state( );
6312(yy_did_buffer_switch_on_eof) = 1;
6313}
6314}
6315
6316/* Allocates the stack if it does not exist.
6317 * Guarantees space for at least one push.
6318 */
6319static void commentScanYYensure_buffer_stack (void)
6320{
6321yy_size_t num_to_alloc;
6322
6323if (!(yy_buffer_stack)) {
6324
6325/* First allocation is just for 2 elements, since we don't know if this
6326 * scanner will even need a stack. We use 2 instead of 1 to avoid an
6327 * immediate realloc on the next call.
6328 */
6329num_to_alloc = 1;
6330(yy_buffer_stack) = (struct yy_buffer_state**)commentScanYYalloc
6331(num_to_alloc * sizeof(struct yy_buffer_state*)
6332);
6333if ( ! (yy_buffer_stack) )
6334YY_FATAL_ERROR( "out of dynamic memory in commentScanYYensure_buffer_stack()" );
6335
6336memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6337
6338(yy_buffer_stack_max) = num_to_alloc;
6339(yy_buffer_stack_top) = 0;
6340return;
6341}
6342
6343if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6344
6345/* Increase the buffer to prepare for a possible push. */
6346int grow_size = 8 /* arbitrary grow size */;
6347
6348num_to_alloc = (yy_buffer_stack_max) + grow_size;
6349(yy_buffer_stack) = (struct yy_buffer_state**)commentScanYYrealloc
6350((yy_buffer_stack),
6351num_to_alloc * sizeof(struct yy_buffer_state*)
6352);
6353if ( ! (yy_buffer_stack) )
6354YY_FATAL_ERROR( "out of dynamic memory in commentScanYYensure_buffer_stack()" );
6355
6356/* zero only the new slots.*/
6357memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6358(yy_buffer_stack_max) = num_to_alloc;
6359}
6360}
6361
6362/** Setup the input buffer state to scan directly from a user-specified character buffer.
6363 * @param base the character buffer
6364 * @param size the size in bytes of the character buffer
6365 *
6366 * @return the newly allocated buffer state object.
6367 */
6368YY_BUFFER_STATE commentScanYY_scan_buffer (char * base, yy_size_t size )
6369{
6370YY_BUFFER_STATE b;
6371
6372if ( size < 2 ||
6373 base[size-2] != YY_END_OF_BUFFER_CHAR ||
6374 base[size-1] != YY_END_OF_BUFFER_CHAR )
6375/* They forgot to leave room for the EOB's. */
6376return 0;
6377
6378b = (YY_BUFFER_STATE) commentScanYYalloc(sizeof( struct yy_buffer_state ) );
6379if ( ! b )
6380YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_scan_buffer()" );
6381
6382b->yy_buf_size = size - 2;/* "- 2" to take care of EOB's */
6383b->yy_buf_pos = b->yy_ch_buf = base;
6384b->yy_is_our_buffer = 0;
6385b->yy_input_file = 0;
6386b->yy_n_chars = b->yy_buf_size;
6387b->yy_is_interactive = 0;
6388b->yy_at_bol = 1;
6389b->yy_fill_buffer = 0;
6390b->yy_buffer_status = YY_BUFFER_NEW;
6391
6392commentScanYY_switch_to_buffer(b );
6393
6394return b;
6395}
6396
6397/** Setup the input buffer state to scan a string. The next call to commentScanYYlex() will
6398 * scan from a @e copy of @a str.
6399 * @param yystr a NUL-terminated string to scan
6400 *
6401 * @return the newly allocated buffer state object.
6402 * @note If you want to scan bytes that may contain NUL values, then use
6403 * commentScanYY_scan_bytes() instead.
6404 */
6405YY_BUFFER_STATE commentScanYY_scan_string (yyconst char * yystr )
6406{
6407
6408return commentScanYY_scan_bytes(yystr,strlen(yystr) );
6409}
6410
6411/** Setup the input buffer state to scan the given bytes. The next call to commentScanYYlex() will
6412 * scan from a @e copy of @a bytes.
6413 * @param bytes the byte buffer to scan
6414 * @param len the number of bytes in the buffer pointed to by @a bytes.
6415 *
6416 * @return the newly allocated buffer state object.
6417 */
6418YY_BUFFER_STATE commentScanYY_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
6419{
6420YY_BUFFER_STATE b;
6421char *buf;
6422yy_size_t n, i;
6423
6424/* Get memory for full buffer, including space for trailing EOB's. */
6425n = _yybytes_len + 2;
6426buf = (char *) commentScanYYalloc(n );
6427if ( ! buf )
6428YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_scan_bytes()" );
6429
6430for ( i = 0; i < _yybytes_len; ++i )
6431buf[i] = yybytes[i];
6432
6433buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
6434
6435b = commentScanYY_scan_buffer(buf,n );
6436if ( ! b )
6437YY_FATAL_ERROR( "bad buffer in commentScanYY_scan_bytes()" );
6438
6439/* It's okay to grow etc. this buffer, and we should throw it
6440 * away when we're done.
6441 */
6442b->yy_is_our_buffer = 1;
6443
6444return b;
6445}
6446
6447#ifndef YY_EXIT_FAILURE
6448#define YY_EXIT_FAILURE 2
6449#endif
6450
6451static void yy_fatal_error (yyconst char* msg )
6452{
6453 (void) fprintf( stderr, "%s\n", msg );
6454exit( YY_EXIT_FAILURE );
6455}
6456
6457/* Redefine yyless() so it works in section 3 code. */
6458
6459#undef yyless
6460#define yyless(n) \
6461do \
6462{ \
6463/* Undo effects of setting up commentScanYYtext. */ \
6464 int yyless_macro_arg = (n); \
6465 YY_LESS_LINENO(yyless_macro_arg);\
6466commentScanYYtext[commentScanYYleng] = (yy_hold_char); \
6467(yy_c_buf_p) = commentScanYYtext + yyless_macro_arg; \
6468(yy_hold_char) = *(yy_c_buf_p); \
6469*(yy_c_buf_p) = '\0'; \
6470commentScanYYleng = yyless_macro_arg; \
6471} \
6472while ( 0 )
6473
6474/* Accessor methods (get/set functions) to struct members. */
6475
6476/** Get the current line number.
6477 *
6478 */
6479int commentScanYYget_lineno (void)
6480{
6481
6482 return commentScanYYlineno;
6483}
6484
6485/** Get the input stream.
6486 *
6487 */
6488FILE *commentScanYYget_in (void)
6489{
6490 return commentScanYYin;
6491}
6492
6493/** Get the output stream.
6494 *
6495 */
6496FILE *commentScanYYget_out (void)
6497{
6498 return commentScanYYout;
6499}
6500
6501/** Get the length of the current token.
6502 *
6503 */
6504yy_size_t commentScanYYget_leng (void)
6505{
6506 return commentScanYYleng;
6507}
6508
6509/** Get the current token.
6510 *
6511 */
6512
6513char *commentScanYYget_text (void)
6514{
6515 return commentScanYYtext;
6516}
6517
6518/** Set the current line number.
6519 * @param line_number
6520 *
6521 */
6522void commentScanYYset_lineno (int line_number )
6523{
6524
6525 commentScanYYlineno = line_number;
6526}
6527
6528/** Set the input stream. This does not discard the current
6529 * input buffer.
6530 * @param in_str A readable stream.
6531 *
6532 * @see commentScanYY_switch_to_buffer
6533 */
6534void commentScanYYset_in (FILE * in_str )
6535{
6536 commentScanYYin = in_str ;
6537}
6538
6539void commentScanYYset_out (FILE * out_str )
6540{
6541 commentScanYYout = out_str ;
6542}
6543
6544int commentScanYYget_debug (void)
6545{
6546 return commentScanYY_flex_debug;
6547}
6548
6549void commentScanYYset_debug (int bdebug )
6550{
6551 commentScanYY_flex_debug = bdebug ;
6552}
6553
6554static int yy_init_globals (void)
6555{
6556 /* Initialization is the same as for the non-reentrant scanner.
6557 * This function is called from commentScanYYlex_destroy(), so don't allocate here.
6558 */
6559
6560 (yy_buffer_stack) = 0;
6561 (yy_buffer_stack_top) = 0;
6562 (yy_buffer_stack_max) = 0;
6563 (yy_c_buf_p) = (char *) 0;
6564 (yy_init) = 0;
6565 (yy_start) = 0;
6566
6567 (yy_state_buf) = 0;
6568 (yy_state_ptr) = 0;
6569 (yy_full_match) = 0;
6570 (yy_lp) = 0;
6571
6572/* Defined in main.c */
6573#ifdef YY_STDINIT
6574 commentScanYYin = stdin;
6575 commentScanYYout = stdout;
6576#else
6577 commentScanYYin = (FILE *) 0;
6578 commentScanYYout = (FILE *) 0;
6579#endif
6580
6581 /* For future reference: Set errno on error, since we are called by
6582 * commentScanYYlex_init()
6583 */
6584 return 0;
6585}
6586
6587/* commentScanYYlex_destroy is for both reentrant and non-reentrant scanners. */
6588int commentScanYYlex_destroy (void)
6589{
6590
6591 /* Pop the buffer stack, destroying each element. */
6592while(YY_CURRENT_BUFFER){
6593commentScanYY_delete_buffer(YY_CURRENT_BUFFER );
6594YY_CURRENT_BUFFER_LVALUE = NULL;
6595commentScanYYpop_buffer_state();
6596}
6597
6598/* Destroy the stack itself. */
6599commentScanYYfree((yy_buffer_stack) );
6600(yy_buffer_stack) = NULL;
6601
6602 commentScanYYfree ( (yy_state_buf) );
6603 (yy_state_buf) = NULL;
6604
6605 /* Reset the globals. This is important in a non-reentrant scanner so the next time
6606 * commentScanYYlex() is called, initialization will occur. */
6607 yy_init_globals( );
6608
6609 return 0;
6610}
6611
6612/*
6613 * Internal utility routines.
6614 */
6615
6616#ifndef yytext_ptr
6617static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
6618{
6619register int i;
6620for ( i = 0; i < n; ++i )
6621s1[i] = s2[i];
6622}
6623#endif
6624
6625#ifdef YY_NEED_STRLEN
6626static int yy_flex_strlen (yyconst char * s )
6627{
6628register int n;
6629for ( n = 0; s[n]; ++n )
6630;
6631
6632return n;
6633}
6634#endif
6635
6636void *commentScanYYalloc (yy_size_t size )
6637{
6638return (void *) malloc( size );
6639}
6640
6641void *commentScanYYrealloc (void * ptr, yy_size_t size )
6642{
6643/* The cast to (char *) in the following accommodates both
6644 * implementations that use char* generic pointers, and those
6645 * that use void* generic pointers. It works with the latter
6646 * because both ANSI C and C++ allow castless assignment from
6647 * any pointer type to void*, and deal with argument conversions
6648 * as though doing an assignment.
6649 */
6650return (void *) realloc( (char *) ptr, size );
6651}
6652
6653void commentScanYYfree (void * ptr )
6654{
6655free( (char *) ptr );/* see commentScanYYrealloc() for (char *) cast */
6656}
6657
6658#define YYTABLES_NAME "yytables"
6659
6660#line 1953 "commentscan.l"
6661
6662
6663
6664//----------------------------------------------------------------------------
6665
6666static bool handleBrief(const QCString &)
6667{
6668 //printf("handleBrief\n");
6669 setOutput(OutputBrief);
6670 return FALSE;
6671}
6672
6673static bool handleFn(const QCString &)
6674{
6675 bool stop=makeStructuralIndicator(Entry::MEMBERDOC_SEC);
6676 functionProto.resize(0);
6677 braceCount=0;
6678 BEGIN(FnParam);
6679 return stop;
6680}
6681
6682static bool handleDef(const QCString &)
6683{
6684 bool stop=makeStructuralIndicator(Entry::DEFINEDOC_SEC);
6685 functionProto.resize(0);
6686 BEGIN(FnParam);
6687 return stop;
6688}
6689
6690static bool handleOverload(const QCString &)
6691{
6692 functionProto.resize(0);
6693 BEGIN(OverloadParam);
6694 return FALSE;
6695}
6696
6697static bool handleEnum(const QCString &)
6698{
6699 bool stop=makeStructuralIndicator(Entry::ENUMDOC_SEC);
6700 BEGIN(EnumDocArg1);
6701 return stop;
6702}
6703
6704static bool handleDefGroup(const QCString &)
6705{
6706 bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC);
6707 current->groupDocType = Entry::GROUPDOC_NORMAL;
6708 BEGIN( GroupDocArg1 );
6709 return stop;
6710}
6711
6712static bool handleAddToGroup(const QCString &)
6713{
6714 bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC);
6715 current->groupDocType = Entry::GROUPDOC_ADD;
6716 BEGIN( GroupDocArg1 );
6717 return stop;
6718}
6719
6720static bool handleWeakGroup(const QCString &)
6721{
6722 bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC);
6723 current->groupDocType = Entry::GROUPDOC_WEAK;
6724 BEGIN( GroupDocArg1 );
6725 return stop;
6726}
6727
6728static bool handleNamespace(const QCString &)
6729{
6730 bool stop=makeStructuralIndicator(Entry::NAMESPACEDOC_SEC);
6731 BEGIN( NameSpaceDocArg1 );
6732 return stop;
6733}
6734
6735static bool handlePackage(const QCString &)
6736{
6737 bool stop=makeStructuralIndicator(Entry::PACKAGEDOC_SEC);
6738 BEGIN( PackageDocArg1 );
6739 return stop;
6740}
6741
6742static bool handleClass(const QCString &)
6743{
6744 bool stop=makeStructuralIndicator(Entry::CLASSDOC_SEC);
6745 BEGIN( ClassDocArg1 );
6746 return stop;
6747}
6748
6749static bool handleHeaderFile(const QCString &)
6750{
6751 BEGIN( ClassDocArg2 );
6752 return FALSE;
6753}
6754
6755static bool handleProtocol(const QCString &)
6756{ // Obj-C protocol
6757 bool stop=makeStructuralIndicator(Entry::PROTOCOLDOC_SEC);
6758 BEGIN( ClassDocArg1 );
6759 return stop;
6760}
6761
6762static bool handleCategory(const QCString &)
6763{ // Obj-C category
6764 bool stop=makeStructuralIndicator(Entry::CATEGORYDOC_SEC);
6765 BEGIN( CategoryDocArg1 );
6766 return stop;
6767}
6768
6769static bool handleUnion(const QCString &)
6770{
6771 bool stop=makeStructuralIndicator(Entry::UNIONDOC_SEC);
6772 BEGIN( ClassDocArg1 );
6773 return stop;
6774}
6775
6776static bool handleStruct(const QCString &)
6777{
6778 bool stop=makeStructuralIndicator(Entry::STRUCTDOC_SEC);
6779 BEGIN( ClassDocArg1 );
6780 return stop;
6781}
6782
6783static bool handleInterface(const QCString &)
6784{
6785 bool stop=makeStructuralIndicator(Entry::INTERFACEDOC_SEC);
6786 BEGIN( ClassDocArg1 );
6787 return stop;
6788}
6789
6790static bool handleIdlException(const QCString &)
6791{
6792 bool stop=makeStructuralIndicator(Entry::EXCEPTIONDOC_SEC);
6793 BEGIN( ClassDocArg1 );
6794 return stop;
6795}
6796
6797static bool handlePage(const QCString &)
6798{
6799 bool stop=makeStructuralIndicator(Entry::PAGEDOC_SEC);
6800 BEGIN( PageDocArg1 );
6801 return stop;
6802}
6803
6804static bool handleMainpage(const QCString &)
6805{
6806 bool stop=makeStructuralIndicator(Entry::MAINPAGEDOC_SEC);
6807 if (!stop)
6808 {
6809 current->name = "mainpage";
6810 }
6811 BEGIN( PageDocArg2 );
6812 return stop;
6813}
6814
6815static bool handleFile(const QCString &)
6816{
6817 bool stop=makeStructuralIndicator(Entry::FILEDOC_SEC);
6818 if (!stop)
6819 {
6820 current->name = yyFileName;
6821 }
6822 BEGIN( FileDocArg1 );
6823 return stop;
6824}
6825
6826static bool handleDir(const QCString &)
6827{
6828 bool stop=makeStructuralIndicator(Entry::DIRDOC_SEC);
6829 if (!stop) current->name = yyFileName;
6830 BEGIN( FileDocArg1 );
6831 return stop;
6832}
6833
6834static bool handleExample(const QCString &)
6835{
6836 bool stop=makeStructuralIndicator(Entry::EXAMPLE_SEC);
6837 if (!stop) current->name = yyFileName;
6838 BEGIN( FileDocArg1 );
6839 return stop;
6840}
6841
6842static bool handleDetails(const QCString &)
6843{
6844 if (inContext!=OutputBrief)
6845 {
6846 addOutput("\n\n"); // treat @details outside brief description
6847 // as a new paragraph
6848 }
6849 setOutput(OutputDoc);
6850 return FALSE;
6851}
6852
6853static bool handleName(const QCString &)
6854{
6855 bool stop=makeStructuralIndicator(Entry::MEMBERGRP_SEC);
6856 if (!stop)
6857 {
6858 g_memberGroupHeader.resize(0);
6859 BEGIN( NameParam );
6860 if (g_memberGroupId!=DOX_NOGROUP) // end of previous member group
6861 {
6862 closeGroup(current,yyFileName,yyLineNr,TRUE);
6863 }
6864 }
6865 return stop;
6866}
6867
6868static bool handleTodo(const QCString &)
6869{
6870 newXRefKind = XRef_Todo;
6871 setOutput(OutputXRef);
6872 xrefKind = XRef_Todo;
6873 return FALSE;
6874}
6875
6876static bool handleTest(const QCString &)
6877{
6878 newXRefKind = XRef_Test;
6879 setOutput(OutputXRef);
6880 xrefKind = XRef_Test;
6881 return FALSE;
6882}
6883
6884static bool handleBug(const QCString &)
6885{
6886 newXRefKind = XRef_Bug;
6887 setOutput(OutputXRef);
6888 xrefKind = XRef_Bug;
6889 return FALSE;
6890}
6891
6892static bool handleDeprecated(const QCString &)
6893{
6894 newXRefKind = XRef_Deprecated;
6895 setOutput(OutputXRef);
6896 xrefKind = XRef_Deprecated;
6897 return FALSE;
6898}
6899
6900static bool handleXRefItem(const QCString &)
6901{
6902 BEGIN(XRefItemParam1);
6903 return FALSE;
6904}
6905
6906static bool handleRelated(const QCString &)
6907{
6908 BEGIN(RelatesParam1);
6909 return FALSE;
6910}
6911
6912static bool handleRelatedAlso(const QCString &)
6913{
6914 current->relatesType = Duplicate;
6915 BEGIN(RelatesParam1);
6916 return FALSE;
6917}
6918
6919static bool handleMemberOf(const QCString &)
6920{
6921 current->relatesType = MemberOf;
6922 BEGIN(RelatesParam1);
6923 return FALSE;
6924}
6925
6926static bool handleRefItem(const QCString &)
6927{
6928 addOutput(" @refitem ");
6929 BEGIN(LineParam);
6930 return FALSE;
6931}
6932
6933static bool handleSection(const QCString &s)
6934{
6935 setOutput(OutputDoc);
6936 addOutput(" @"+s+" ");
6937 BEGIN(SectionLabel);
6938 if (s=="section") g_sectionLevel=1;
6939 else if (s=="subsection") g_sectionLevel=2;
6940 else if (s=="subsubsection") g_sectionLevel=3;
6941 else if (s=="paragraph") g_sectionLevel=4;
6942 return FALSE;
6943}
6944
6945static bool handleSubpage(const QCString &s)
6946{
6947 if (current->section!=Entry::EMPTY_SEC &&
6948 current->section!=Entry::PAGEDOC_SEC &&
6949 current->section!=Entry::MAINPAGEDOC_SEC
6950 )
6951 {
6952 warn(yyFileName,yyLineNr,
6953"warning: found \\subpage command in a comment block that is not marked as a page!");
6954 }
6955 addOutput(" @"+s+" ");
6956 BEGIN(SubpageLabel);
6957 return FALSE;
6958}
6959
6960static bool handleAnchor(const QCString &s)
6961{
6962 addOutput(" @"+s+" ");
6963 BEGIN(AnchorLabel);
6964 return FALSE;
6965}
6966
6967static bool handleFormatBlock(const QCString &s)
6968{
6969 addOutput(" @"+s+" ");
6970 //printf("handleFormatBlock(%s)\n",s.data());
6971 blockName=s;
6972 g_commentCount=0;
6973 BEGIN(FormatBlock);
6974 return FALSE;
6975}
6976
6977static bool handleAddIndex(const QCString &)
6978{
6979 addOutput(" @addindex ");
6980 BEGIN(LineParam);
6981 return FALSE;
6982}
6983
6984static bool handleIf(const QCString &)
6985{
6986 enabledSectionFound=FALSE;
6987 guardType = Guard_If;
6988 BEGIN(GuardParam);
6989 return FALSE;
6990}
6991
6992static bool handleIfNot(const QCString &)
6993{
6994 enabledSectionFound=FALSE;
6995 guardType = Guard_IfNot;
6996 BEGIN(GuardParam);
6997 return FALSE;
6998}
6999
7000static bool handleElseIf(const QCString &)
7001{
7002 if (guards.isEmpty())
7003 {
7004 warn(yyFileName,yyLineNr,
7005"warning: found \\else without matching start command");
7006 }
7007 else
7008 {
7009 guardType = enabledSectionFound ? Guard_Skip : Guard_If;
7010 BEGIN(GuardParam);
7011 }
7012 return FALSE;
7013}
7014
7015static bool handleElse(const QCString &)
7016{
7017 if (guards.isEmpty())
7018 {
7019 warn(yyFileName,yyLineNr,
7020"warning: found \\else without matching start command");
7021 }
7022 else
7023 {
7024 BEGIN( SkipGuardedSection );
7025 }
7026 return FALSE;
7027}
7028
7029static bool handleEndIf(const QCString &)
7030{
7031 if (guards.isEmpty())
7032 {
7033 warn(yyFileName,yyLineNr,
7034"warning: found \\endif without matching start command");
7035 }
7036 else
7037 {
7038 delete guards.pop();
7039 }
7040 enabledSectionFound=FALSE;
7041 BEGIN( GuardParamEnd );
7042 return FALSE;
7043}
7044
7045static bool handleIngroup(const QCString &)
7046{
7047 inGroupParamFound=FALSE;
7048 BEGIN( InGroupParam );
7049 return FALSE;
7050}
7051
7052static bool handleNoSubGrouping(const QCString &)
7053{
7054 current->subGrouping = FALSE;
7055 return FALSE;
7056}
7057
7058static bool handleShowInitializer(const QCString &)
7059{
7060 current->initLines = 100000; // ON
7061 return FALSE;
7062}
7063
7064static bool handleHideInitializer(const QCString &)
7065{
7066 current->initLines = 0; // OFF
7067 return FALSE;
7068}
7069
7070static bool handleCallgraph(const QCString &)
7071{
7072 current->callGraph = TRUE; // ON
7073 return FALSE;
7074}
7075
7076static bool handleCallergraph(const QCString &)
7077{
7078 current->callerGraph = TRUE; // ON
7079 return FALSE;
7080}
7081
7082static bool handleInternal(const QCString &)
7083{
7084 if (!Config_getBool("INTERNAL_DOCS"))
7085 {
7086 // make sure some whitespace before a \internal command
7087 // is not treated as "documentation"
7088 if (current->doc.stripWhiteSpace().isEmpty())
7089 {
7090 current->doc.resize(0);
7091 }
7092 g_condCount=0;
7093 BEGIN( SkipInternal );
7094 }
7095 else
7096 {
7097 // re-enabled for bug640828
7098 addOutput("\\internal ");
7099 }
7100 return FALSE;
7101}
7102
7103static bool handleLineBr(const QCString &)
7104{
7105 addOutput('\n');
7106 return FALSE;
7107}
7108
7109static bool handleStatic(const QCString &)
7110{
7111 endBrief();
7112 current->stat = TRUE;
7113 return FALSE;
7114}
7115
7116static bool handlePure(const QCString &)
7117{
7118 endBrief();
7119 current->virt = Pure;
7120 return FALSE;
7121}
7122
7123static bool handlePrivate(const QCString &)
7124{
7125 current->protection = Private;
7126 return FALSE;
7127}
7128
7129static bool handlePrivateSection(const QCString &)
7130{
7131 current->protection = protection = Private;
7132 return FALSE;
7133}
7134
7135static bool handleProtected(const QCString &)
7136{
7137 current->protection = Protected;
7138 return FALSE;
7139}
7140
7141static bool handleProtectedSection(const QCString &)
7142{
7143 current->protection = protection = Protected ;
7144 return FALSE;
7145}
7146
7147static bool handlePublic(const QCString &)
7148{
7149 current->protection = Public;
7150 return FALSE;
7151}
7152
7153static bool handlePublicSection(const QCString &)
7154{
7155 current->protection = protection = Public;
7156 return FALSE;
7157}
7158
7159static bool handleInherit(const QCString &)
7160{
7161 BEGIN(InheritParam);
7162 return FALSE;
7163}
7164
7165static bool handleExtends(const QCString &)
7166{
7167 BEGIN(ExtendsParam);
7168 return FALSE;
7169}
7170
7171//----------------------------------------------------------------------------
7172
7173static void checkFormula()
7174{
7175 if (YY_START==ReadFormulaShort || YY_START==ReadFormulaLong)
7176 {
7177 warn(yyFileName,yyLineNr,"warning: End of comment block while inside formula.");
7178 }
7179}
7180
7181//----------------------------------------------------------------------------
7182
7183bool parseCommentBlock(/* in */ ParserInterface *parser,
7184 /* in */ Entry *curEntry,
7185 /* in */ const QCString &comment,
7186 /* in */ const QCString &fileName,
7187 /* in,out */ int &lineNr,
7188 /* in */ bool isBrief,
7189 /* in */ bool isAutoBriefOn,
7190 /* in */ bool isInbody,
7191 /* in,out */ Protection &prot,
7192 /* in,out */ int &position,
7193 /* out */ bool &newEntryNeeded
7194 )
7195{
7196 //printf("parseCommentBlock() isBrief=%d isAutoBriefOn=%d lineNr=%d\n",
7197 // isBrief,isAutoBriefOn,lineNr);
7198
7199 initParser();
7200 guards.setAutoDelete(TRUE);
7201 guards.clear();
7202 langParser = parser;
7203 current = curEntry;
7204 if (comment.isEmpty()) return FALSE; // avoid empty strings
7205 inputString = comment;
7206 inputString.append(" ");
7207 inputPosition = position;
7208 yyLineNr = lineNr;
7209 yyFileName = fileName;
7210 protection = prot;
7211 needNewEntry = FALSE;
7212 xrefKind = XRef_None;
7213 xrefAppendFlag = FALSE;
7214 insidePre = FALSE;
7215 parseMore = FALSE;
7216 inBody = isInbody;
7217 outputXRef.resize(0);
7218 setOutput( isBrief || isAutoBriefOn ? OutputBrief : OutputDoc );
7219 briefEndsAtDot = isAutoBriefOn;
7220 g_condCount = 0;
7221 g_sectionLevel = 0;
7222
7223 if (!current->inbodyDocs.isEmpty() && isInbody) // separate in body fragments
7224 {
7225 current->inbodyDocs+="\n\n";
7226 }
7227
7228 Debug::print(Debug::CommentScan,0,"-----------\nCommentScanner: %s:%d\n"
7229 "input=[%s]\n",fileName.data(),lineNr,comment.data()
7230 );
7231
7232 commentScanYYrestart( commentScanYYin );
7233 BEGIN( Comment );
7234 commentScanYYlex();
7235 setOutput( OutputDoc );
7236
7237 if (YY_START==OverloadParam) // comment ended with \overload
7238 {
7239 addOutput(getOverloadDocs());
7240 }
7241
7242 if (!guards.isEmpty())
7243 {
7244 warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
7245 }
7246
7247 current->doc=stripLeadingAndTrailingEmptyLines(current->doc);
7248
7249 if (current->section==Entry::FILEDOC_SEC && current->doc.isEmpty())
7250 {
7251 // to allow a comment block with just a @file command.
7252 current->doc="\n\n";
7253 }
7254
7255 if (current->section==Entry::MEMBERGRP_SEC &&
7256 g_memberGroupId==DOX_NOGROUP) // @name section but no group started yet
7257 {
7258 openGroup(current,yyFileName,yyLineNr);
7259 }
7260
7261 Debug::print(Debug::CommentScan,0,
7262 "brief=[%s]\ndocs=[%s]\ninbody=[%s]\n===========\n",
7263 current->brief.data(),current->doc.data(),current->inbodyDocs.data()
7264 );
7265
7266 checkFormula();
7267 prot = protection;
7268
7269 groupAddDocs(curEntry,fileName);
7270
7271 newEntryNeeded = needNewEntry;
7272
7273 // if we did not proceed during this call, it does not make
7274 // sense to continue, since we get stuck. See bug 567346 for situations
7275 // were this happens
7276 if (parseMore && position==inputPosition) parseMore=FALSE;
7277
7278 if (parseMore) position=inputPosition; else position=0;
7279
7280 lineNr = yyLineNr;
7281 //printf("position=%d parseMore=%d\n",position,parseMore);
7282
7283 return parseMore;
7284}
7285
7286//---------------------------------------------------------------------------
7287
7288void groupEnterFile(const char *fileName,int)
7289{
7290 g_autoGroupStack.setAutoDelete(TRUE);
7291 g_autoGroupStack.clear();
7292 g_memberGroupId = DOX_NOGROUP;
7293 g_memberGroupDocs.resize(0);
7294 g_memberGroupRelates.resize(0);
7295 g_compoundName=fileName;
7296}
7297
7298void groupLeaveFile(const char *fileName,int line)
7299{
7300 //if (g_memberGroupId!=DOX_NOGROUP)
7301 //{
7302 // warn(fileName,line,"warning: end of file while inside a member group\n");
7303 //}
7304 g_memberGroupId=DOX_NOGROUP;
7305 g_memberGroupRelates.resize(0);
7306 g_memberGroupDocs.resize(0);
7307 if (!g_autoGroupStack.isEmpty())
7308 {
7309 warn(fileName,line,"warning: end of file while inside a group\n");
7310 }
7311}
7312
7313void groupEnterCompound(const char *fileName,int line,const char *name)
7314{
7315 if (g_memberGroupId!=DOX_NOGROUP)
7316 {
7317 warn(fileName,line,"warning: try to put compound %s inside a member group\n",name);
7318 }
7319 g_memberGroupId=DOX_NOGROUP;
7320 g_memberGroupRelates.resize(0);
7321 g_memberGroupDocs.resize(0);
7322 g_compoundName = name;
7323 int i = g_compoundName.find('(');
7324 if (i!=-1)
7325 {
7326 g_compoundName=g_compoundName.left(i); // strip category (Obj-C)
7327 }
7328 if (g_compoundName.isEmpty())
7329 {
7330 g_compoundName=fileName;
7331 }
7332 //printf("groupEnterCompound(%s)\n",name);
7333}
7334
7335void groupLeaveCompound(const char *,int,const char * /*name*/)
7336{
7337 //printf("groupLeaveCompound(%s)\n",name);
7338 //if (g_memberGroupId!=DOX_NOGROUP)
7339 //{
7340 // warn(fileName,line,"warning: end of compound %s while inside a member group\n",name);
7341 //}
7342 g_memberGroupId=DOX_NOGROUP;
7343 g_memberGroupRelates.resize(0);
7344 g_memberGroupDocs.resize(0);
7345 g_compoundName.resize(0);
7346}
7347
7348static int findExistingGroup(int &groupId,const MemberGroupInfo *info)
7349{
7350 //printf("findExistingGroup %s:%s\n",info->header.data(),info->compoundName.data());
7351 QIntDictIterator<MemberGroupInfo> di(Doxygen::memGrpInfoDict);
7352 MemberGroupInfo *mi;
7353 for (di.toFirst();(mi=di.current());++di)
7354 {
7355 if (g_compoundName==mi->compoundName && // same file or scope
7356!mi->header.isEmpty() && // not a nameless group
7357stricmp(mi->header,info->header)==0 // same header name
7358 )
7359 {
7360 //printf("Found it!\n");
7361 return di.currentKey(); // put the item in this group
7362 }
7363 }
7364 groupId++; // start new group
7365 return groupId;
7366}
7367
7368void openGroup(Entry *e,const char *,int)
7369{
7370 //printf("==> openGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
7371 // e->name.data(),e->section,g_autoGroupStack.count());
7372 if (e->section==Entry::GROUPDOC_SEC) // auto group
7373 {
7374 g_autoGroupStack.push(new Grouping(e->name,e->groupingPri()));
7375 }
7376 else // start of a member group
7377 {
7378 //printf(" membergroup id=%d %s\n",g_memberGroupId,g_memberGroupHeader.data());
7379 if (g_memberGroupId==DOX_NOGROUP) // no group started yet
7380 {
7381 static int curGroupId=0;
7382
7383 MemberGroupInfo *info = new MemberGroupInfo;
7384 info->header = g_memberGroupHeader.stripWhiteSpace();
7385 info->compoundName = g_compoundName;
7386 g_memberGroupId = findExistingGroup(curGroupId,info);
7387 //printf(" use membergroup %d\n",g_memberGroupId);
7388 Doxygen::memGrpInfoDict.insert(g_memberGroupId,info);
7389
7390 g_memberGroupRelates = e->relates;
7391 e->mGrpId = g_memberGroupId;
7392 }
7393 }
7394}
7395
7396void closeGroup(Entry *e,const char *fileName,int,bool foundInline)
7397{
7398 //printf("==> closeGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
7399 // e->name.data(),e->section,g_autoGroupStack.count());
7400 if (g_memberGroupId!=DOX_NOGROUP) // end of member group
7401 {
7402 MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId);
7403 if (info) // known group
7404 {
7405 info->doc = g_memberGroupDocs;
7406 info->docFile = fileName;
7407 }
7408 g_memberGroupId=DOX_NOGROUP;
7409 g_memberGroupRelates.resize(0);
7410 g_memberGroupDocs.resize(0);
7411 e->mGrpId=DOX_NOGROUP;
7412 //printf("new group id=%d\n",g_memberGroupId);
7413 }
7414 else if (!g_autoGroupStack.isEmpty()) // end of auto group
7415 {
7416 Grouping *grp = g_autoGroupStack.pop();
7417 // see bug577005: we should not remove the last group for e
7418 if (!foundInline) e->groups->removeLast();
7419 //printf("Removing %s e=%p\n",grp->groupname.data(),e);
7420 delete grp;
7421 if (!foundInline) initGroupInfo(e);
7422 }
7423}
7424
7425void initGroupInfo(Entry *e)
7426{
7427 //printf("==> initGroup(id=%d,related=%s,e=%p)\n",g_memberGroupId,
7428 // g_memberGroupRelates.data(),e);
7429 e->mGrpId = g_memberGroupId;
7430 e->relates = g_memberGroupRelates;
7431 if (!g_autoGroupStack.isEmpty())
7432 {
7433 //printf("Appending group %s to %s: count=%d entry=%p\n",
7434 //g_autoGroupStack.top()->groupname.data(),
7435 //e->name.data(),e->groups->count(),e);
7436 e->groups->append(new Grouping(*g_autoGroupStack.top()));
7437 }
7438}
7439
7440static void groupAddDocs(Entry *e,const char *fileName)
7441{
7442 if (e->section==Entry::MEMBERGRP_SEC)
7443 {
7444 g_memberGroupDocs=e->brief.stripWhiteSpace();
7445 e->doc = stripLeadingAndTrailingEmptyLines(e->doc);
7446 if (!g_memberGroupDocs.isEmpty() && !e->doc.isEmpty())
7447 {
7448 g_memberGroupDocs+="\n\n";
7449 }
7450 g_memberGroupDocs+=e->doc;
7451 MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId);
7452 if (info)
7453 {
7454 info->doc = g_memberGroupDocs;
7455 info->docFile = fileName;
7456 info->setRefItems(e->sli);
7457 }
7458 e->doc.resize(0);
7459 e->brief.resize(0);
7460 }
7461}
7462
7463
7464#if !defined(YY_FLEX_SUBMINOR_VERSION)
7465//----------------------------------------------------------------------------
7466extern "C" { // some bogus code to keep the compiler happy
7467 void commentScanYYdummy() { yy_flex_realloc(0,0); }
7468}
7469#endif
7470
7471
7472

Archive Download this file

Revision: 1322