modules/up/src/rpsl/rpsl/rpsl.l.cc
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
- YY_PROTO
- YY_PROTO
- YY_SC_TO_UI
- YY_STATE_EOF
- yyless
- unput
- yy_set_interactive
- yy_set_bol
- YY_AT_BOL
- yymore
- YYLESS
- YY_INPUT
- yyterminate
- YY_FATAL_ERROR
- yy_get_next_buffer
- yy_get_previous_state
- yy_try_NUL_trans
- yyunput
- yyinput
- yyrestart
- yy_switch_to_buffer
- yy_load_buffer_state
- yy_create_buffer
- yy_delete_buffer
- yy_init_buffer
- yy_flush_buffer
- yy_scan_buffer
- yy_scan_string
- yy_scan_bytes
- yy_push_state
- yy_pop_state
- yy_top_state
- yy_fatal_error
- yyless
- yy_flex_strncpy
- yy_flex_strlen
- yy_flex_alloc
- yy_flex_realloc
- yy_flex_free
- main
- handle_error
- handle_object_error
- rpslerror
- handle_warning
- yy_scan_object
- changeCurrentAttr
- validIPv6
- validIntForPhone
1 #define yy_create_buffer rpsl_create_buffer
2 #define yy_delete_buffer rpsl_delete_buffer
3 #define yy_scan_buffer rpsl_scan_buffer
4 #define yy_scan_string rpsl_scan_string
5 #define yy_scan_bytes rpsl_scan_bytes
6 #define yy_flex_debug rpsl_flex_debug
7 #define yy_init_buffer rpsl_init_buffer
8 #define yy_flush_buffer rpsl_flush_buffer
9 #define yy_load_buffer_state rpsl_load_buffer_state
10 #define yy_switch_to_buffer rpsl_switch_to_buffer
11 #define yyin rpslin
12 #define yyleng rpslleng
13 #define yylex rpsllex
14 #define yyout rpslout
15 #define yyrestart rpslrestart
16 #define yytext rpsltext
17 #define yywrap rpslwrap
18
19 /* A lexical scanner generated by flex */
20
21 /* Scanner skeleton version:
22 * $Header: /ncc/cvsroot/ncc/RIP/modules/up/src/rpsl/rpsl/rpsl.l.cc,v 1.1.1.1 2000/03/10 16:32:24 engin Exp $
23 */
24
25 #define FLEX_SCANNER
26 #define YY_FLEX_MAJOR_VERSION 2
27 #define YY_FLEX_MINOR_VERSION 5
28
29 #include <stdio.h>
30
31
32 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
33 #ifdef c_plusplus
34 #ifndef __cplusplus
35 #define __cplusplus
36 #endif
37 #endif
38
39
40 #ifdef __cplusplus
41
42 #include <stdlib.h>
43 #include <unistd.h>
44
45 /* Use prototypes in function declarations. */
46 #define YY_USE_PROTOS
47
48 /* The "const" storage-class-modifier is valid. */
49 #define YY_USE_CONST
50
51 #else /* ! __cplusplus */
52
53 #if __STDC__
54
55 #define YY_USE_PROTOS
56 #define YY_USE_CONST
57
58 #endif /* __STDC__ */
59 #endif /* ! __cplusplus */
60
61 #ifdef __TURBOC__
62 #pragma warn -rch
63 #pragma warn -use
64 #include <io.h>
65 #include <stdlib.h>
66 #define YY_USE_CONST
67 #define YY_USE_PROTOS
68 #endif
69
70 #ifdef YY_USE_CONST
71 #define yyconst const
72 #else
73 #define yyconst
74 #endif
75
76
77 #ifdef YY_USE_PROTOS
78 #define YY_PROTO(proto) proto
/* [<][>][^][v][top][bottom][index][help] */
79 #else
80 #define YY_PROTO(proto) ()
/* [<][>][^][v][top][bottom][index][help] */
81 #endif
82
83 /* Returned upon end-of-file. */
84 #define YY_NULL 0
85
86 /* Promotes a possibly negative, possibly signed char to an unsigned
87 * integer for use as an array index. If the signed char is negative,
88 * we want to instead treat it as an 8-bit unsigned char, hence the
89 * double cast.
90 */
91 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
/* [<][>][^][v][top][bottom][index][help] */
92
93 /* Enter a start condition. This macro really ought to take a parameter,
94 * but we do it the disgusting crufty way forced on us by the ()-less
95 * definition of BEGIN.
96 */
97 #define BEGIN yy_start = 1 + 2 *
98
99 /* Translate the current start state into a value that can be later handed
100 * to BEGIN to return to the state. The YYSTATE alias is for lex
101 * compatibility.
102 */
103 #define YY_START ((yy_start - 1) / 2)
104 #define YYSTATE YY_START
105
106 /* Action number for EOF rule of a given start state. */
107 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* [<][>][^][v][top][bottom][index][help] */
108
109 /* Special action meaning "start processing a new file". */
110 #define YY_NEW_FILE yyrestart( yyin )
111
112 #define YY_END_OF_BUFFER_CHAR 0
113
114 /* Size of default input buffer. */
115 #define YY_BUF_SIZE 16384
116
117 typedef struct yy_buffer_state *YY_BUFFER_STATE;
118
119 extern int yyleng;
120 extern FILE *yyin, *yyout;
121
122 #define EOB_ACT_CONTINUE_SCAN 0
123 #define EOB_ACT_END_OF_FILE 1
124 #define EOB_ACT_LAST_MATCH 2
125
126 /* The funky do-while in the following #define is used to turn the definition
127 * int a single C statement (which needs a semi-colon terminator). This
128 * avoids problems with code like:
129 *
130 * if ( condition_holds )
131 * yyless( 5 );
132 * else
133 * do_something_else();
134 *
135 * Prior to using the do-while the compiler would get upset at the
136 * "else" because it interpreted the "if" statement as being all
137 * done when it reached the ';' after the yyless() call.
138 */
139
140 /* Return all but the first 'n' matched characters back to the input stream. */
141
142 #define yyless(n) \
/* [<][>][^][v][top][bottom][index][help] */
143 do \
144 { \
145 /* Undo effects of setting up yytext. */ \
146 *yy_cp = yy_hold_char; \
147 YY_RESTORE_YY_MORE_OFFSET \
148 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
149 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
150 } \
151 while ( 0 )
152
153 #define unput(c) yyunput( c, yytext_ptr )
/* [<][>][^][v][top][bottom][index][help] */
154
155 /* The following is because we cannot portably get our hands on size_t
156 * (without autoconf's help, which isn't available because we want
157 * flex-generated scanners to compile on their own).
158 */
159 typedef unsigned int yy_size_t;
160
161
162 struct yy_buffer_state
163 {
164 FILE *yy_input_file;
165
166 char *yy_ch_buf; /* input buffer */
167 char *yy_buf_pos; /* current position in input buffer */
168
169 /* Size of input buffer in bytes, not including room for EOB
170 * characters.
171 */
172 yy_size_t yy_buf_size;
173
174 /* Number of characters read into yy_ch_buf, not including EOB
175 * characters.
176 */
177 int yy_n_chars;
178
179 /* Whether we "own" the buffer - i.e., we know we created it,
180 * and can realloc() it to grow it, and should free() it to
181 * delete it.
182 */
183 int yy_is_our_buffer;
184
185 /* Whether this is an "interactive" input source; if so, and
186 * if we're using stdio for input, then we want to use getc()
187 * instead of fread(), to make sure we stop fetching input after
188 * each newline.
189 */
190 int yy_is_interactive;
191
192 /* Whether we're considered to be at the beginning of a line.
193 * If so, '^' rules will be active on the next match, otherwise
194 * not.
195 */
196 int yy_at_bol;
197
198 /* Whether to try to fill the input buffer when we reach the
199 * end of it.
200 */
201 int yy_fill_buffer;
202
203 int yy_buffer_status;
204 #define YY_BUFFER_NEW 0
205 #define YY_BUFFER_NORMAL 1
206 /* When an EOF's been seen but there's still some text to process
207 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
208 * shouldn't try reading from the input source any more. We might
209 * still have a bunch of tokens to match, though, because of
210 * possible backing-up.
211 *
212 * When we actually see the EOF, we change the status to "new"
213 * (via yyrestart()), so that the user can continue scanning by
214 * just pointing yyin at a new input file.
215 */
216 #define YY_BUFFER_EOF_PENDING 2
217 };
218
219 static YY_BUFFER_STATE yy_current_buffer = 0;
220
221 /* We provide macros for accessing buffer states in case in the
222 * future we want to put the buffer states in a more general
223 * "scanner state".
224 */
225 #define YY_CURRENT_BUFFER yy_current_buffer
226
227
228 /* yy_hold_char holds the character lost when yytext is formed. */
229 static char yy_hold_char;
230
231 static int yy_n_chars; /* number of characters read into yy_ch_buf */
232
233
234 int yyleng;
235
236 /* Points to current character in buffer. */
237 static char *yy_c_buf_p = (char *) 0;
238 static int yy_init = 1; /* whether we need to initialize */
239 static int yy_start = 0; /* start state number */
240
241 /* Flag which is used to allow yywrap()'s to do buffer switches
242 * instead of setting up a fresh yyin. A bit of a hack ...
243 */
244 static int yy_did_buffer_switch_on_eof;
245
246 void yyrestart YY_PROTO(( FILE *input_file ));
247
248 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
249 void yy_load_buffer_state YY_PROTO(( void ));
250 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
251 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
252 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
253 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
254 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
255
256 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
257 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
258 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
259
260 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
261 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
262 static void yy_flex_free YY_PROTO(( void * ));
263
264 #define yy_new_buffer yy_create_buffer
265
266 #define yy_set_interactive(is_interactive) \
/* [<][>][^][v][top][bottom][index][help] */
267 { \
268 if ( ! yy_current_buffer ) \
269 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
270 yy_current_buffer->yy_is_interactive = is_interactive; \
271 }
272
273 #define yy_set_bol(at_bol) \
/* [<][>][^][v][top][bottom][index][help] */
274 { \
275 if ( ! yy_current_buffer ) \
276 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
277 yy_current_buffer->yy_at_bol = at_bol; \
278 }
279
280 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
/* [<][>][^][v][top][bottom][index][help] */
281
282
283 #define YY_USES_REJECT
284 typedef unsigned char YY_CHAR;
285 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
286 typedef int yy_state_type;
287 extern char *yytext;
288 #define yytext_ptr yytext
289
290 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
291 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
292 static int yy_get_next_buffer YY_PROTO(( void ));
293 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
294
295 /* Done after the current pattern has been matched and before the
296 * corresponding action - sets up yytext.
297 */
298 #define YY_DO_BEFORE_ACTION \
299 yytext_ptr = yy_bp; \
300 yyleng = (int) (yy_cp - yy_bp); \
301 yy_hold_char = *yy_cp; \
302 *yy_cp = '\0'; \
303 yy_c_buf_p = yy_cp;
304
305 #define YY_NUM_RULES 60
306 #define YY_END_OF_BUFFER 61
307 static yyconst short int yy_acclist[736] =
308 { 0,
309 61, 4, 60, 60, 3, 4, 60, 4, 60, 2,
310 60, 4, 60, 58, 59, 60, 49, 60, 48, 59,
311 60, 59, 60, 47, 60, 11, 47, 60, 10, 60,
312 47, 60, 12, 47, 60, 47, 60, 46, 47, 60,
313 46, 47, 60, 46, 47, 60, 47, 60, 13, 60,
314 11, 13, 60, 12, 13, 60, 14, 60, 11, 60,
315 12, 14, 60, 40, 60, 11, 40, 60, 10, 60,
316 20, 40, 60, 12, 40, 60, 40, 60, 40, 60,
317 40, 60, 40, 60, 40, 60, 17, 40, 60, 40,
318 60, 36, 40, 60, 36, 40, 60, 40, 60, 36,
319
320 40, 60, 36, 40, 60, 36, 40, 60, 36, 40,
321 60, 36, 40, 60, 7, 60, 6, 60, 7, 60,
322 5, 6, 60, 40, 60, 17, 40, 60, 40, 60,
323 3, 2, 1, 58, 57, 50, 51, 57, 51, 57,
324 55, 57, 56, 57, 52, 57, 54, 57, 53, 57,
325 11, 9, 9, 8, 46, 12, 13, 11, 13, 12,
326 13, 14, 12, 14, 9, 8, 12, 12, 12, 17,
327 17, 19, 17, 36, 26, 36, 26, 36, 36, 26,
328 36, 26, 36, 26, 36, 26, 36, 26, 36, 26,
329 36, 26, 36, 26, 36, 26, 36, 26, 36, 7,
330
331 7, 5, 17, 42, 41, 43, 50, 51, 51, 10,
332 12, 12, 12, 12, 19, 38, 19, 38, 19, 19,
333 38, 38, 17, 18, 36, 37, 38, 36, 36, 26,
334 26, 36, 26, 36, 26, 36, 26, 36, 26, 36,
335 26, 36, 26, 26, 27, 36, 26, 36, 26, 36,
336 26, 36, 26, 36, 26, 36, 26, 36, 26, 26,
337 36, 26, 36, 45, 17, 50, 51, 12, 12, 12,
338 12, 38, 19, 19, 19, 38, 38, 38, 17, 18,
339 23, 23, 38, 37, 38, 37, 38, 36, 36, 26,
340 36, 26, 36, 26, 36, 26, 36, 26, 36, 26,
341
342 36, 26, 36, 26, 36, 26, 36, 26, 36, 26,
343 36, 26, 28, 36, 26, 28, 36, 26, 27, 36,
344 26, 36, 26, 36, 26, 36, 26, 36, 26, 26,
345 36, 26, 29, 36, 26, 29, 36, 26, 36, 26,
346 33, 36, 17, 44, 39, 39, 12, 39, 12, 39,
347 19, 38, 19, 38, 19, 19, 19, 38, 38, 19,
348 38, 38, 19, 38, 17, 18, 23, 23, 23, 37,
349 38, 37, 38, 37, 38, 37, 38, 36, 26, 36,
350 26, 36, 26, 36, 26, 36, 26, 27, 36, 26,
351 26, 34, 36, 26, 26, 36, 36, 26, 36, 26,
352
353 26, 17, 12, 19, 19, 38, 38, 19, 38, 38,
354 19, 38, 17, 18, 37, 38, 37, 38, 36, 26,
355 36, 26, 36, 26, 36, 26, 36, 26, 27, 36,
356 26, 36, 26, 32, 36, 26, 32, 36, 26, 36,
357 36, 26, 36, 26, 31, 36, 26, 31, 36, 26,
358 30, 36, 26, 30, 36, 17, 39, 39, 39, 12,
359 39, 19, 19, 21, 38, 38, 38, 19, 38, 38,
360 19, 38, 17, 18, 37, 38, 37, 38, 36, 26,
361 36, 26, 36, 26, 36, 26, 36, 26, 27, 36,
362 36, 36, 26, 36, 17, 12, 19, 19, 21, 38,
363
364 38, 38, 19, 38, 38, 19, 38, 17, 37, 38,
365 37, 38, 36, 26, 36, 26, 36, 26, 36, 26,
366 36, 28, 26, 27, 36, 28, 29, 26, 36, 36,
367 26, 36, 29, 17, 39, 39, 12, 39, 19, 19,
368 38, 24, 21, 38, 38, 19, 38, 38, 19, 38,
369 17, 37, 38, 37, 38, 36, 26, 36, 26, 36,
370 26, 36, 28, 27, 36, 26, 36, 36, 26, 36,
371 29, 19, 19, 38, 24, 21, 38, 38, 19, 38,
372 38, 19, 38, 17, 37, 38, 37, 38, 36, 26,
373 36, 26, 36, 27, 36, 32, 31, 30, 26, 36,
374
375 32, 36, 26, 36, 31, 30, 39, 19, 19, 38,
376 24, 25, 25, 21, 38, 38, 19, 38, 38, 19,
377 38, 17, 37, 38, 37, 38, 36, 26, 36, 28,
378 27, 36, 36, 26, 36, 29, 19, 19, 38, 24,
379 21, 38, 38, 19, 38, 38, 19, 38, 17, 37,
380 38, 37, 38, 36, 26, 36, 27, 36, 35, 36,
381 26, 35, 36, 16, 16, 19, 16, 16, 19, 16,
382 16, 16, 16, 38, 16, 16, 24, 25, 16, 16,
383 21, 38, 16, 16, 38, 16, 16, 19, 38, 16,
384 38, 16, 19, 38, 16, 16, 17, 16, 16, 37,
385
386 38, 16, 37, 38, 16, 16, 36, 16, 26, 36,
387 16, 27, 36, 32, 32, 31, 31, 30, 30, 19,
388 24, 21, 38, 38, 19, 38, 17, 27, 36, 22,
389 22, 22, 22, 22, 15
390 } ;
391
392 static yyconst short int yy_accept[829] =
393 { 0,
394 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
395 1, 1, 1, 1, 1, 1, 1, 2, 4, 5,
396 8, 10, 12, 14, 17, 19, 22, 24, 26, 29,
397 31, 33, 36, 38, 41, 44, 47, 49, 51, 54,
398 57, 59, 61, 64, 66, 69, 71, 74, 77, 79,
399 81, 83, 85, 87, 90, 92, 95, 98, 100, 103,
400 106, 109, 112, 115, 117, 119, 121, 124, 126, 129,
401 131, 132, 132, 133, 133, 133, 134, 135, 136, 139,
402 141, 143, 145, 147, 149, 151, 152, 153, 154, 155,
403 156, 157, 157, 157, 158, 160, 162, 163, 165, 165,
404
405 165, 165, 166, 167, 167, 168, 169, 170, 170, 171,
406 171, 171, 172, 172, 173, 173, 173, 173, 174, 174,
407 174, 174, 174, 174, 174, 175, 175, 177, 179, 180,
408 180, 182, 184, 186, 188, 190, 192, 194, 196, 198,
409 200, 201, 202, 203, 203, 204, 205, 206, 207, 209,
410 210, 210, 211, 211, 211, 211, 211, 211, 212, 213,
411 214, 215, 216, 217, 219, 219, 219, 220, 220, 220,
412 220, 220, 222, 223, 223, 224, 224, 224, 225, 225,
413 225, 225, 225, 226, 228, 228, 229, 230, 231, 233,
414 235, 237, 239, 241, 243, 244, 247, 249, 251, 253,
415
416 255, 257, 259, 260, 262, 264, 265, 266, 266, 268,
417 268, 268, 268, 268, 268, 269, 270, 271, 272, 272,
418 273, 273, 273, 274, 274, 274, 274, 275, 275, 275,
419 275, 275, 277, 278, 279, 279, 279, 280, 280, 280,
420 281, 281, 281, 282, 283, 283, 283, 283, 284, 286,
421 288, 288, 289, 290, 292, 294, 296, 298, 300, 302,
422 304, 306, 308, 310, 312, 313, 315, 318, 321, 321,
423 323, 325, 327, 329, 330, 332, 333, 335, 338, 340,
424 343, 344, 345, 346, 347, 347, 347, 349, 351, 351,
425 352, 353, 355, 355, 356, 357, 357, 358, 358, 358,
426
427 358, 359, 360, 360, 362, 363, 363, 365, 365, 366,
428 366, 367, 367, 367, 368, 369, 370, 370, 370, 372,
429 374, 376, 378, 378, 379, 381, 383, 385, 387, 387,
430 387, 390, 390, 390, 390, 390, 391, 394, 395, 397,
431 398, 400, 401, 401, 401, 402, 403, 403, 403, 403,
432 404, 404, 405, 405, 406, 406, 406, 406, 406, 407,
433 408, 408, 408, 410, 411, 413, 413, 414, 414, 414,
434 415, 415, 415, 415, 415, 415, 415, 417, 419, 419,
435 420, 422, 424, 426, 428, 428, 428, 431, 431, 431,
436 431, 431, 431, 431, 433, 434, 436, 439, 441, 442,
437
438 444, 445, 447, 450, 450, 450, 450, 451, 453, 456,
439 457, 458, 459, 460, 462, 462, 463, 463, 464, 464,
440 464, 464, 466, 467, 467, 468, 468, 468, 470, 471,
441 473, 473, 474, 474, 475, 475, 475, 475, 475, 477,
442 479, 479, 480, 482, 484, 486, 488, 488, 488, 491,
443 491, 491, 491, 491, 491, 491, 491, 492, 492, 492,
444 493, 495, 495, 495, 495, 495, 495, 495, 495, 496,
445 496, 496, 497, 497, 498, 498, 499, 499, 499, 499,
446 499, 499, 501, 502, 502, 503, 503, 505, 506, 508,
447 508, 509, 509, 509, 509, 509, 509, 509, 509, 511,
448
449 513, 513, 514, 516, 518, 520, 522, 522, 523, 523,
450 526, 526, 527, 527, 527, 527, 527, 528, 528, 530,
451 530, 530, 530, 531, 533, 533, 533, 534, 534, 534,
452 534, 534, 534, 535, 536, 537, 539, 539, 540, 540,
453 541, 541, 541, 541, 542, 543, 543, 543, 545, 545,
454 546, 546, 548, 549, 551, 551, 551, 552, 552, 552,
455 552, 552, 552, 554, 556, 556, 557, 559, 561, 563,
456 563, 564, 564, 566, 566, 566, 566, 566, 568, 568,
457 568, 568, 569, 571, 571, 571, 571, 571, 571, 572,
458 572, 572, 572, 572, 572, 573, 573, 574, 574, 574,
459
460 574, 574, 575, 576, 576, 576, 578, 578, 579, 579,
461 581, 582, 584, 584, 584, 585, 585, 585, 585, 585,
462 585, 585, 585, 587, 589, 589, 590, 592, 594, 594,
463 596, 596, 597, 597, 597, 598, 598, 599, 601, 602,
464 602, 602, 603, 605, 606, 606, 606, 606, 607, 607,
465 607, 608, 608, 609, 609, 610, 610, 610, 610, 611,
466 611, 612, 613, 614, 614, 616, 616, 617, 617, 619,
467 620, 622, 622, 622, 623, 623, 623, 623, 623, 623,
468 625, 627, 627, 628, 630, 631, 633, 633, 633, 634,
469 636, 636, 636, 637, 637, 637, 637, 638, 638, 639,
470
471 639, 639, 639, 639, 640, 641, 641, 641, 643, 643,
472 644, 644, 646, 647, 649, 649, 649, 650, 650, 650,
473 650, 650, 650, 650, 650, 652, 654, 654, 655, 657,
474 659, 659, 659, 661, 664, 664, 664, 664, 664, 665,
475 667, 668, 670, 671, 672, 673, 675, 676, 678, 679,
476 680, 683, 684, 686, 687, 690, 692, 695, 695, 696,
477 698, 699, 699, 699, 699, 699, 702, 705, 706, 708,
478 711, 714, 714, 715, 716, 717, 717, 718, 719, 719,
479 720, 721, 722, 722, 724, 724, 725, 725, 727, 727,
480 727, 728, 728, 728, 728, 728, 728, 728, 730, 730,
481
482 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
483 730, 731, 732, 732, 732, 732, 733, 734, 735, 735,
484 735, 735, 735, 735, 735, 735, 736, 736
485 } ;
486
487 static yyconst int yy_ec[256] =
488 { 0,
489 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
490 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
492 1, 2, 5, 6, 7, 1, 1, 1, 1, 8,
493 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
494 19, 19, 19, 19, 19, 20, 21, 22, 12, 23,
495 24, 25, 1, 26, 35, 36, 37, 37, 38, 39,
496 40, 41, 41, 41, 41, 42, 41, 43, 44, 45,
497 41, 46, 47, 48, 49, 41, 41, 41, 41, 41,
498 29, 30, 31, 32, 33, 34, 35, 36, 37, 37,
499
500 38, 39, 40, 41, 41, 41, 41, 42, 41, 43,
501 44, 45, 41, 46, 47, 48, 49, 41, 41, 41,
502 41, 41, 1, 1, 1, 1, 1, 1, 1, 1,
503 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
504 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
505 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
506 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
507 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
508 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
509 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
510
511 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
512 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
513 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
514 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
515 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
516 1, 1, 1, 1, 1
517 } ;
518
519 static yyconst int yy_meta[50] =
520 { 0,
521 1, 2, 3, 4, 1, 5, 1, 6, 6, 1,
522 7, 6, 8, 9, 10, 11, 11, 11, 11, 11,
523 11, 12, 6, 1, 6, 13, 14, 15, 6, 5,
524 6, 1, 16, 1, 14, 14, 14, 17, 14, 15,
525 15, 15, 15, 15, 15, 15, 15, 15, 15
526 } ;
527
528 static yyconst short int yy_base[988] =
529 { 0,
530 0, 6, 8, 9, 54, 82, 14, 20, 28, 68,
531 111, 0, 1916, 2, 147, 166, 1889,11232,11232, 0,
532 78,11232, 7, 0,11232,11232, 183,11232, 24, 97,
533 1864, 0, 1878, 13, 1862, 49, 1829, 0, 96, 0,
534 0, 167, 168, 62, 171, 204, 0, 230,11232, 248,
535 274, 172, 323, 357, 1837, 406, 440, 229, 127, 67,
536 167, 130, 1812, 0,11232, 192,11232, 324, 452, 469,
537 0, 221,11232, 250, 326,11232, 0,11232, 475, 481,
538 11232,11232,11232,11232,11232, 208, 301,11232,11232,11232,
539 0, 1830, 1818, 0, 212, 0, 0, 233, 77, 1815,
540
541 502, 183, 214, 1832, 550, 580, 611, 645, 0, 549,
542 671, 0, 0, 719, 757, 791, 825, 874, 908, 934,
543 941, 1822, 980, 1014, 1063, 579, 1112, 1146, 1170, 708,
544 728, 1787, 1791, 1783, 1768, 1760, 1761, 1790, 1756, 1741,
545 0, 348,11232, 1773, 734, 244, 339, 260, 756, 790,
546 384,11232, 340, 1209, 920, 1772, 1758, 1257, 1288, 953,
547 1768, 1336, 982, 728, 0, 323, 1373, 1410, 1431, 1465,
548 1499, 1533, 1581, 783, 1619, 1655, 1662, 1686, 1158, 1757,
549 1182, 205, 1725, 1759, 1780, 1829, 1863, 1890, 1939, 1988,
550 2022, 0, 0, 2046, 2085, 1256, 1724, 1703, 1702, 1691,
551
552 1720, 1691, 2134, 1665, 1673, 0, 1325, 2173, 1347, 1362,
553 1696, 2194, 2228, 1379, 1387, 1682, 2262, 1399, 2310, 2347,
554 0, 666, 2367, 2404, 782, 1430, 816, 2425, 2459, 2493,
555 2527, 2575, 1466, 2612, 1498, 1006, 2633, 2669, 1666, 2676,
556 1665, 1570, 1587, 1593, 393, 0, 2715, 2764, 2798, 2832,
557 2866, 2915, 2949, 2983, 3032, 1674, 1698, 1725, 1759, 1779,
558 1793, 1875, 1889, 1664, 3081, 3118, 264, 1896, 1582, 3155,
559 238, 1672, 401, 3164, 1635, 3203, 3240, 396, 1631, 1618,
560 2034, 3276, 3302, 3336, 1601, 2058, 3370, 2194, 3406, 3419,
561 3445, 0, 0, 2299, 3493, 3530, 1005, 3551, 3585, 3619,
562
563 3653, 2318, 1582, 3701, 3738, 2326, 1347, 1457, 3759, 3795,
564 3802, 2336, 1572,11232, 2356, 1353, 459, 489, 3841, 0,
565 3875, 3909, 3943, 3992, 4026, 2373, 2379, 2393, 415, 479,
566 2424, 1546, 1550, 487, 249, 2460, 2492, 4075, 2564, 4124,
567 4158, 4197, 4234, 648, 4283, 2581, 2589, 0, 2601, 2688,
568 0, 4331, 4368, 1456, 4389, 4423, 4457, 4491, 2766, 2800,
569 2832, 2915, 4539, 4576, 1490, 1525, 4597, 2949, 4633, 3117,
570 1536, 1534, 1523, 556, 586, 0, 4655, 4689, 4723, 4772,
571 4806, 3125, 3176, 3239, 1481, 1488, 3247, 3302, 1476, 1482,
572 1468, 1494, 1459, 4855, 0, 4892, 563, 3482, 4926, 4950,
573
574 0, 4977, 653, 1449, 1455, 1430, 0, 5014, 747, 3499,
575 3507, 1429, 1425, 3519, 0, 5062, 5099, 1750, 5120, 5154,
576 5188, 5222, 3551, 317, 5258, 3586, 1421, 5278, 5315, 2219,
577 1751, 5336, 5372, 3618, 1402, 1388, 658, 741, 5394, 5428,
578 5462, 5511, 5545, 3690, 3707, 3713, 3814, 1323, 3841, 208,
579 3875, 1301, 1239, 1241, 451, 1223, 5568, 766, 777, 5602,
580 5626, 833, 698, 3727, 1230, 1254, 834, 768, 3909, 3994,
581 4170, 4234, 0, 5664, 5701, 2223, 5722, 5756, 5790, 5824,
582 4240, 5858, 5907, 451, 4320, 4339, 5940, 5977, 2450, 2451,
583 5998, 6046, 1240, 1218, 1212, 861, 882, 0, 6068, 6102,
584
585 6123, 6172, 6206, 0, 4345, 4357, 574, 4388, 1175, 4422,
586 689, 953, 1204, 1161, 1181, 746, 1182, 1167, 6229, 1125,
587 1129, 1132, 6263, 6287, 1122, 840, 4456, 1097, 786, 1094,
588 1099, 1076, 278, 4528, 1106, 4545, 0, 6325, 6362, 2484,
589 6383, 6417, 6451, 6485, 6506, 6538, 1086, 6559, 517, 4553,
590 4565, 6579, 6616, 2518, 378, 2519, 6637, 6673, 1094, 1072,
591 927, 967, 6695, 6729, 6737, 6786, 6820, 0, 4655, 821,
592 1326, 1053, 6869, 951, 1028, 1010, 1032, 6892, 4689, 1023,
593 1031, 6926, 6950, 4772, 1029, 996, 1002, 1059, 1400, 4891,
594 998, 980, 4899, 0, 6988, 7025, 2789, 7046, 7080, 7114,
595
596 7148, 7182, 4962, 7206, 4938, 4985, 5021, 5051, 5070, 7231,
597 7268, 2823, 5013, 2790, 7289, 7325, 1000, 989, 983, 1071,
598 1099, 0, 7347, 7381, 7402, 7451, 7485, 0, 950, 7534,
599 1180, 1440, 970, 1198, 1508, 1205, 1734, 7568, 5076, 942,
600 919, 7592, 7616, 5119, 887, 865, 856, 5153, 853, 835,
601 866, 0, 7654, 7691, 2857, 7712, 7746, 7780, 7814, 7848,
602 7869, 1411, 7889, 818, 7902, 546, 5088, 5187, 7922, 7959,
603 2940, 815, 2858, 7980, 8016, 811, 809, 1120, 1217, 8038,
604 8072, 8080, 8129, 8163, 778, 8212, 769, 743, 8246, 8270,
605 730, 721, 709, 661, 672, 0, 8308, 8345, 2974, 8366,
606
607 8400, 8434, 8468, 8502, 5268, 5288, 5294, 5395, 5304, 5430,
608 5513, 8535, 8572, 3297, 5581, 2941, 8593, 8629, 647, 582,
609 571, 1387, 1459, 0, 8651, 8685, 8706, 8755, 8789, 8838,
610 1251, 543, 8872, 0, 527, 1475, 480, 1509,11232, 553,
611 3327, 5614, 5638, 8899, 1426, 8920, 8954, 8976, 5654, 478,
612 8995, 686, 5672, 5678, 9015, 9052, 3331, 5690, 3577, 9073,
613 9109, 441, 413, 1540, 1601, 9131, 9165, 9173, 0, 0,
614 5721, 1551, 2058, 409, 390, 1637, 2174, 347, 1696, 2228,
615 1452, 0, 331, 0, 917, 5757, 5789, 0, 324, 5824,
616 0, 313, 307, 277, 1603, 1627, 0, 5907, 5929, 235,
617
618 239, 1712, 202, 5946, 159, 5952, 147, 1766, 95, 504,
619 5966, 6035, 79, 51, 3440,11232, 6068, 1368, 48, 45,
620 6102, 6122, 3, 6128, 6136,11232,11232, 9222, 9239, 9256,
621 9273, 9290, 9307, 9324, 9334, 9351, 9368, 9385, 9402, 9419,
622 9436, 9453, 9470, 9487, 9504, 9513, 9530, 9547, 9564, 9581,
623 9590, 9607, 9624, 9632, 9649, 9666, 9675, 9692, 9709, 9717,
624 9734, 9751, 9761, 9770, 9786, 9797, 9814, 9821, 9829, 9836,
625 9853, 9870, 9887, 9904, 9921, 9931, 9948, 9957, 9974, 9991,
626 9998,10006,10014,10031,10048,10058,10067,10084,10101,10108,
627 10115,10123,10130,10147,10164,10173,10190,10207,10214,10221,
628
629 10229,10237,10254,10271,10281,10291,10300,10317,10334,10351,
630 10358,10365,10373,10380,10397,10414,10424,10434,10443,10460,
631 10477,10494,10510,10511,10518,10526,10534,10551,10568,10578,
632 10588,10598,10607,10624,10641,10658,10675,10682,10689,10697,
633 10704,10721,10738,10747,10764,10781,10798,10805,10812,10820,
634 10828,10845,10862,10871,10888,10905,10922,10929,10936,10944,
635 10951,10968,10985,10995,11005,11015,11031,11047,11058,11075,
636 11082,11089,11097,11105,11122,11129,11136,11144,11151,11158,
637 11166,11174,11182,11190,11198,11206,11214
638 } ;
639
640 static yyconst short int yy_def[988] =
641 { 0,
642 828, 828, 829, 829, 830, 830, 831, 831, 832, 832,
643 827, 11, 833, 833, 11, 11, 827, 827, 827, 834,
644 827, 827, 835, 836, 827, 827, 837, 827, 827, 827,
645 827, 838, 827, 827, 827, 827, 827, 839, 839, 840,
646 841, 827, 842, 843, 827, 843, 844, 845, 827, 843,
647 827, 846, 847, 827, 827, 827, 56, 51, 56, 56,
648 57, 57, 57, 848, 827, 848, 827, 846, 54, 50,
649 834, 827, 827, 835, 835, 827, 836, 827, 827, 827,
650 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
651 838, 827, 827, 839, 839, 840, 841, 842, 843, 849,
652
653 827, 843, 843, 844, 845, 850, 827, 849, 50, 51,
654 827, 51, 851, 851, 852, 853, 827, 827, 827, 118,
655 120, 854, 855, 827, 827, 119, 827, 127, 125, 111,
656 128, 128, 127, 128, 128, 128, 128, 128, 128, 128,
657 856, 856, 827, 851, 118, 843, 843, 70, 827, 827,
658 827, 827, 849, 827, 101, 101, 827, 850, 827, 107,
659 107, 849, 111, 111, 857, 827, 857, 857, 858, 858,
660 859, 827, 172, 172, 827, 175, 176, 827, 178, 173,
661 827, 860, 855, 861, 173, 827, 186, 183, 827, 827,
662 190, 190, 191, 189, 827, 194, 191, 191, 191, 191,
663
664 191, 191, 827, 191, 191, 857, 175, 70, 827, 154,
665 154, 862, 862, 863, 159, 159, 827, 217, 162, 111,
666 864, 865, 864, 864, 865, 827, 224, 866, 866, 867,
667 827, 231, 231, 231, 231, 232, 827, 237, 238, 827,
668 868, 240, 827, 827, 869, 870, 827, 871, 872, 872,
669 827, 873, 873, 827, 827, 255, 255, 255, 255, 255,
670 255, 255, 255, 255, 827, 265, 265, 255, 827, 255,
671 270, 270, 270, 254, 270, 827, 276, 276, 270, 270,
672 237, 874, 875, 875, 876, 876, 827, 287, 877, 877,
673 827, 291, 878, 827, 878, 878, 296, 879, 879, 880,
674
675 827, 301, 301, 301, 301, 301, 305, 304, 827, 309,
676 827, 311, 881, 827, 827, 827, 882, 883, 871, 319,
677 884, 884, 827, 885, 827, 325, 325, 325, 266, 827,
678 325, 827, 827, 827, 827, 254, 325, 827, 325, 827,
679 254, 827, 276, 827, 827, 309, 284, 886, 886, 287,
680 887, 887, 887, 353, 888, 888, 889, 827, 358, 358,
681 358, 358, 358, 358, 364, 363, 827, 827, 367, 827,
682 827, 890, 891, 827, 892, 893, 894, 894, 827, 895,
683 827, 381, 381, 381, 827, 827, 381, 827, 827, 827,
684 827, 827, 827, 827, 338, 338, 338, 381, 340, 254,
685
686 342, 342, 342, 827, 827, 827, 345, 345, 345, 367,
687 284, 886, 349, 287, 896, 896, 896, 417, 897, 897,
688 898, 827, 422, 422, 422, 425, 425, 425, 425, 429,
689 428, 827, 432, 827, 899, 900, 901, 902, 903, 903,
690 827, 904, 827, 443, 443, 443, 827, 827, 443, 905,
691 827, 827, 827, 827, 906, 827, 394, 396, 827, 340,
692 254, 402, 827, 827, 827, 827, 408, 827, 432, 284,
693 349, 287, 907, 907, 907, 475, 908, 908, 909, 910,
694 478, 827, 910, 482, 483, 483, 483, 483, 488, 487,
695 827, 491, 827, 911, 912, 827, 913, 914, 915, 915,
696
697 483, 916, 827, 503, 503, 503, 917, 827, 827, 503,
698 905, 905, 827, 827, 827, 906, 906, 827, 457, 827,
699 827, 827, 340, 254, 827, 827, 827, 827, 918, 827,
700 827, 827, 491, 284, 471, 287, 919, 919, 919, 539,
701 920, 920, 921, 922, 542, 922, 545, 546, 548, 546,
702 546, 546, 546, 553, 923, 552, 827, 557, 924, 925,
703 926, 927, 928, 928, 546, 929, 827, 567, 567, 917,
704 917, 827, 827, 930, 827, 931, 932, 457, 827, 827,
705 827, 340, 254, 827, 827, 827, 827, 918, 918, 827,
706 827, 827, 471, 933, 933, 933, 596, 934, 934, 935,
707
708 936, 936, 599, 937, 599, 602, 602, 602, 602, 602,
709 602, 611, 827, 610, 827, 615, 827, 938, 939, 827,
710 940, 941, 942, 942, 602, 943, 827, 627, 827, 827,
711 930, 930, 827, 931, 931, 932, 932, 340, 827, 827,
712 827, 340, 254, 827, 827, 827, 827, 827, 827, 827,
713 593, 944, 944, 944, 654, 945, 945, 946, 947, 947,
714 657, 937, 937, 661, 660, 665, 660, 660, 660, 660,
715 670, 827, 669, 827, 674, 948, 949, 950, 951, 952,
716 952, 660, 953, 827, 827, 827, 827, 827, 340, 254,
717 827, 827, 827, 827, 827, 954, 954, 954, 698, 955,
718
719 955, 956, 957, 957, 701, 663, 701, 704, 704, 704,
720 704, 704, 704, 713, 827, 712, 827, 717, 827, 958,
721 959, 827, 960, 961, 962, 962, 704, 963, 827, 827,
722 964, 827, 340, 254, 827, 965, 827, 966, 827, 967,
723 968, 827, 663, 663, 969, 970, 970, 663, 663, 748,
724 747, 751, 747, 747, 747, 747, 756, 827, 755, 827,
725 760, 971, 972, 973, 974, 975, 975, 747, 733, 254,
726 733, 964, 964, 827, 827, 965, 965, 827, 966, 966,
727 967, 748, 748, 751, 751, 747, 747, 755, 827, 747,
728 760, 827, 976, 977, 827, 978, 979, 733, 827, 980,
729
730 981, 982, 983, 827, 827, 827, 984, 827, 985, 827,
731 827, 827, 986, 987, 827, 827, 827, 827, 827, 827,
732 827, 827, 827, 827, 827, 827, 0, 827, 827, 827,
733 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
734 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
735 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
736 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
737 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
738 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
739 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
740
741 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
742 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
743 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
744 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
745 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
746 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
747 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
748 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
749 827, 827, 827, 827, 827, 827, 827
750 } ;
751
752 static yyconst short int yy_nxt[11282] =
753 { 0,
754 827, 827, 19, 66, 67, 66, 20, 21, 22, 21,
755 25, 25, 20, 26, 26, 39, 30, 39, 827, 74,
756 40, 39, 30, 39, 824, 86, 40, 86, 76, 42,
757 30, 42, 23, 23, 43, 92, 90, 27, 27, 74,
758 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
759 23, 23, 23, 23, 23, 29, 30, 29, 31, 181,
760 32, 33, 806, 31, 31, 181, 31, 31, 31, 42,
761 30, 42, 90, 93, 43, 100, 34, 35, 36, 72,
762 73, 72, 37, 29, 30, 29, 31, 101, 32, 33,
763 100, 31, 31, 806, 31, 31, 31, 95, 87, 95,
764
765 87, 133, 101, 88, 34, 35, 36, 89, 134, 181,
766 37, 44, 45, 46, 45, 44, 47, 48, 49, 49,
767 44, 50, 49, 51, 52, 53, 54, 54, 54, 54,
768 54, 54, 55, 49, 44, 49, 44, 56, 57, 49,
769 49, 49, 44, 58, 44, 59, 56, 56, 56, 60,
770 57, 57, 57, 57, 57, 61, 62, 57, 63, 57,
771 68, 806, 69, 69, 69, 69, 69, 69, 86, 91,
772 86, 91, 86, 131, 86, 132, 138, 139, 70, 68,
773 794, 69, 69, 69, 69, 69, 69, 114, 114, 114,
774 114, 114, 114, 142, 143, 142, 100, 70, 79, 79,
775
776 79, 79, 80, 80, 135, 87, 136, 87, 101, 86,
777 102, 86, 137, 95, 103, 95, 181, 100, 81, 181,
778 511, 82, 72, 73, 72, 83, 246, 100, 84, 101,
779 85, 91, 99, 91, 91, 91, 91, 91, 91, 101,
780 511, 91, 130, 106, 110, 110, 110, 110, 110, 110,
781 188, 91, 91, 806, 91, 107, 794, 100, 91, 91,
782 91, 108, 74, 109, 109, 109, 109, 109, 109, 101,
783 99, 827, 208, 101, 99, 337, 99, 247, 99, 827,
784 99, 827, 74, 99, 99, 330, 110, 111, 99, 112,
785 112, 112, 112, 112, 112, 392, 393, 99, 122, 101,
786
787 110, 110, 151, 152, 151, 99, 110, 99, 110, 110,
788 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
789 110, 110, 110, 99, 166, 99, 166, 99, 794, 99,
790 473, 478, 99, 99, 721, 99, 115, 144, 74, 114,
791 114, 114, 114, 114, 114, 799, 99, 76, 101, 142,
792 143, 142, 100, 100, 99, 99, 99, 99, 74, 99,
793 222, 99, 153, 99, 101, 154, 99, 99, 468, 110,
794 117, 116, 118, 118, 118, 118, 118, 118, 119, 555,
795 99, 555, 101, 120, 121, 151, 152, 151, 99, 110,
796 99, 120, 120, 120, 120, 120, 121, 121, 121, 121,
797
798 121, 121, 121, 121, 121, 121, 99, 181, 99, 247,
799 99, 463, 99, 188, 246, 99, 99, 344, 123, 124,
800 116, 125, 125, 125, 125, 125, 125, 126, 130, 99,
801 459, 101, 127, 128, 794, 339, 827, 99, 123, 99,
802 127, 127, 127, 127, 127, 128, 128, 128, 128, 128,
803 128, 128, 128, 128, 128, 129, 129, 129, 129, 129,
804 129, 827, 721, 516, 537, 541, 128, 145, 145, 145,
805 145, 145, 145, 181, 128, 128, 128, 128, 128, 146,
806 246, 147, 100, 516, 148, 148, 148, 148, 148, 148,
807 149, 149, 149, 149, 150, 150, 150, 150, 150, 150,
808
809 150, 150, 99, 181, 99, 815, 99, 815, 99, 153,
810 376, 99, 99, 385, 155, 100, 99, 156, 156, 156,
811 156, 156, 156, 386, 390, 99, 778, 101, 155, 155,
812 594, 599, 391, 99, 155, 99, 155, 155, 155, 155,
813 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
814 155, 91, 99, 91, 166, 91, 166, 91, 91, 696,
815 701, 91, 130, 106, 110, 110, 110, 110, 110, 110,
816 181, 91, 91, 775, 91, 107, 247, 246, 91, 91,
817 91, 91, 153, 91, 459, 91, 570, 91, 91, 774,
818 222, 91, 122, 91, 179, 179, 179, 179, 179, 179,
819
820 181, 91, 91, 721, 91, 159, 570, 376, 91, 91,
821 91, 105, 91, 99, 91, 105, 91, 105, 91, 91,
822 105, 105, 91, 160, 106, 105, 161, 161, 161, 161,
823 161, 161, 91, 91, 105, 91, 107, 160, 160, 91,
824 91, 91, 105, 160, 105, 160, 160, 160, 160, 160,
825 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
826 162, 162, 162, 162, 162, 162, 247, 225, 619, 225,
827 154, 153, 181, 153, 463, 153, 226, 153, 226, 376,
828 153, 153, 404, 163, 738, 153, 164, 164, 164, 164,
829 164, 164, 405, 406, 153, 737, 154, 163, 163, 827,
830
831 153, 511, 153, 163, 153, 163, 163, 163, 163, 163,
832 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
833 166, 511, 166, 163, 163, 163, 163, 163, 163, 166,
834 344, 166, 525, 736, 167, 167, 167, 167, 167, 167,
835 195, 130, 526, 196, 196, 196, 196, 196, 196, 207,
836 207, 207, 207, 207, 207, 181, 168, 153, 516, 153,
837 247, 153, 498, 153, 735, 220, 153, 153, 468, 153,
838 165, 209, 209, 209, 209, 150, 150, 732, 516, 130,
839 153, 731, 154, 225, 827, 225, 827, 827, 153, 153,
840 153, 99, 226, 99, 226, 99, 221, 99, 588, 330,
841
842 99, 99, 530, 99, 170, 150, 150, 150, 150, 150,
843 150, 520, 531, 532, 99, 521, 101, 827, 588, 827,
844 233, 522, 99, 99, 99, 153, 827, 153, 827, 153,
845 721, 153, 619, 570, 153, 153, 715, 163, 165, 169,
846 172, 172, 172, 172, 172, 172, 130, 130, 153, 153,
847 154, 173, 173, 570, 827, 827, 153, 163, 153, 173,
848 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
849 173, 173, 173, 173, 99, 181, 99, 585, 99, 348,
850 99, 695, 376, 99, 99, 586, 110, 174, 171, 175,
851 175, 175, 175, 175, 175, 119, 181, 99, 694, 101,
852
853 176, 177, 693, 498, 692, 99, 110, 99, 176, 176,
854 176, 176, 176, 177, 177, 177, 177, 177, 177, 177,
855 177, 177, 177, 178, 178, 178, 178, 178, 178, 122,
856 827, 153, 691, 212, 179, 155, 155, 155, 155, 155,
857 155, 181, 179, 179, 179, 179, 179, 180, 498, 176,
858 176, 176, 176, 176, 176, 126, 177, 177, 177, 177,
859 177, 177, 827, 631, 688, 511, 217, 177, 160, 160,
860 160, 160, 160, 160, 330, 177, 177, 177, 177, 177,
861 99, 181, 99, 631, 99, 511, 99, 687, 622, 99,
862 99, 269, 123, 130, 99, 130, 685, 163, 163, 163,
863
864 163, 163, 163, 99, 122, 101, 827, 827, 827, 827,
865 619, 99, 123, 99, 153, 827, 153, 827, 153, 293,
866 153, 495, 634, 153, 153, 650, 163, 165, 169, 173,
867 173, 173, 173, 173, 173, 649, 647, 153, 646, 154,
868 184, 184, 634, 302, 636, 153, 163, 153, 184, 184,
869 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
870 184, 184, 184, 99, 636, 99, 645, 99, 641, 99,
871 640, 588, 99, 99, 633, 123, 185, 171, 186, 186,
872 186, 186, 186, 186, 126, 181, 99, 629, 101, 186,
873 187, 588, 498, 619, 99, 123, 99, 186, 186, 186,
874
875 186, 186, 187, 187, 187, 187, 187, 187, 187, 187,
876 187, 187, 99, 181, 99, 495, 99, 153, 99, 593,
877 622, 99, 99, 592, 188, 185, 171, 189, 189, 189,
878 189, 189, 189, 126, 181, 99, 591, 101, 190, 191,
879 590, 622, 587, 99, 188, 99, 192, 192, 192, 192,
880 192, 193, 193, 193, 193, 193, 193, 193, 193, 193,
881 193, 194, 194, 194, 194, 194, 194, 827, 584, 581,
882 580, 579, 191, 242, 242, 242, 242, 242, 242, 577,
883 193, 193, 193, 193, 193, 187, 187, 187, 187, 187,
884 187, 827, 631, 576, 516, 575, 187, 243, 244, 243,
885
886 243, 243, 243, 344, 187, 187, 187, 187, 187, 153,
887 634, 153, 631, 153, 516, 153, 574, 636, 153, 153,
888 572, 210, 100, 153, 211, 211, 211, 211, 211, 211,
889 634, 181, 153, 122, 154, 210, 210, 636, 724, 495,
890 153, 210, 153, 210, 210, 210, 210, 210, 210, 210,
891 210, 210, 210, 210, 210, 210, 210, 210, 91, 153,
892 91, 373, 91, 772, 91, 91, 529, 528, 91, 518,
893 106, 268, 268, 268, 268, 268, 268, 269, 91, 91,
894 515, 91, 159, 772, 514, 91, 91, 91, 158, 91,
895 153, 91, 158, 91, 158, 91, 91, 158, 158, 91,
896
897 215, 106, 158, 216, 216, 216, 216, 216, 216, 91,
898 91, 158, 91, 159, 215, 215, 91, 91, 91, 158,
899 215, 158, 215, 215, 215, 215, 215, 215, 215, 215,
900 215, 215, 215, 215, 215, 215, 215, 166, 570, 166,
901 281, 281, 281, 281, 281, 281, 513, 330, 827, 100,
902 827, 162, 162, 162, 162, 162, 162, 153, 570, 163,
903 509, 154, 150, 150, 150, 150, 150, 150, 314, 314,
904 314, 314, 314, 219, 166, 212, 166, 210, 210, 210,
905 210, 210, 210, 816, 816, 816, 816, 816, 223, 223,
906 223, 223, 223, 223, 286, 286, 286, 286, 286, 286,
907
908 217, 181, 215, 215, 215, 215, 215, 215, 622, 495,
909 224, 225, 588, 225, 288, 288, 288, 288, 288, 288,
910 226, 344, 226, 373, 100, 227, 227, 227, 227, 227,
911 227, 153, 588, 153, 473, 153, 154, 153, 471, 100,
912 153, 153, 348, 153, 228, 294, 294, 294, 294, 294,
913 294, 101, 631, 166, 153, 166, 154, 827, 827, 827,
914 827, 459, 153, 153, 153, 153, 827, 153, 827, 153,
915 351, 153, 631, 181, 153, 153, 466, 153, 221, 306,
916 724, 302, 302, 302, 302, 302, 302, 776, 153, 222,
917 154, 827, 465, 827, 360, 464, 153, 153, 153, 99,
918
919 153, 99, 163, 99, 456, 99, 455, 776, 99, 99,
920 454, 99, 228, 302, 302, 302, 302, 302, 302, 453,
921 634, 779, 99, 452, 101, 448, 827, 447, 827, 463,
922 99, 99, 99, 153, 166, 153, 166, 153, 415, 153,
923 634, 779, 153, 153, 122, 163, 231, 229, 232, 232,
924 232, 232, 232, 232, 181, 373, 153, 241, 154, 233,
925 233, 724, 423, 772, 153, 163, 153, 233, 233, 233,
926 234, 233, 233, 233, 233, 233, 233, 233, 233, 233,
927 233, 233, 827, 772, 827, 312, 312, 312, 312, 312,
928 312, 389, 388, 373, 235, 351, 233, 233, 233, 233,
929
930 233, 233, 314, 314, 314, 314, 314, 314, 315, 315,
931 316, 314, 314, 314, 348, 181, 332, 181, 233, 99,
932 333, 99, 797, 99, 724, 99, 334, 335, 99, 99,
933 188, 110, 236, 230, 237, 237, 237, 237, 237, 237,
934 119, 181, 99, 345, 101, 238, 239, 342, 797, 776,
935 99, 110, 99, 238, 238, 238, 238, 238, 239, 239,
936 239, 239, 239, 239, 239, 239, 239, 239, 235, 776,
937 238, 238, 238, 238, 238, 238, 126, 239, 239, 239,
938 239, 239, 239, 827, 338, 827, 122, 827, 239, 324,
939 324, 324, 324, 324, 324, 218, 239, 239, 239, 239,
940
941 239, 240, 240, 240, 240, 240, 240, 241, 779, 213,
942 280, 279, 242, 324, 324, 324, 324, 324, 324, 827,
943 242, 242, 242, 242, 242, 99, 181, 99, 779, 99,
944 275, 99, 274, 797, 99, 99, 273, 123, 247, 99,
945 327, 327, 327, 327, 327, 327, 636, 272, 99, 271,
946 101, 827, 827, 827, 827, 468, 99, 123, 99, 153,
947 827, 153, 827, 153, 473, 153, 636, 270, 153, 153,
948 221, 248, 235, 229, 328, 328, 328, 328, 328, 328,
949 181, 218, 153, 214, 154, 213, 206, 797, 483, 205,
950 153, 248, 153, 221, 328, 328, 328, 328, 328, 328,
951
952 827, 204, 203, 202, 201, 200, 250, 250, 328, 328,
953 328, 328, 328, 328, 250, 250, 250, 250, 250, 250,
954 250, 250, 250, 250, 250, 250, 250, 250, 250, 99,
955 199, 99, 198, 99, 197, 99, 181, 157, 99, 99,
956 154, 123, 251, 230, 252, 252, 252, 252, 252, 252,
957 126, 92, 99, 90, 101, 252, 253, 140, 122, 90,
958 99, 123, 99, 252, 252, 252, 252, 252, 253, 253,
959 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
960 253, 253, 253, 253, 827, 90, 90, 90, 827, 253,
961 328, 328, 328, 328, 328, 328, 827, 253, 253, 253,
962
963 253, 253, 188, 130, 327, 327, 327, 327, 327, 327,
964 827, 331, 331, 331, 331, 331, 331, 269, 65, 827,
965 827, 827, 188, 827, 254, 254, 254, 254, 254, 254,
966 254, 254, 254, 254, 254, 254, 254, 254, 254, 99,
967 827, 99, 827, 99, 827, 99, 827, 827, 99, 99,
968 827, 188, 251, 230, 255, 255, 255, 255, 255, 255,
969 126, 827, 99, 827, 101, 252, 253, 827, 827, 827,
970 99, 188, 99, 256, 256, 256, 256, 256, 257, 257,
971 257, 257, 257, 257, 257, 257, 257, 257, 99, 827,
972 99, 827, 99, 827, 99, 827, 827, 99, 99, 827,
973
974 188, 251, 230, 258, 258, 258, 258, 258, 258, 126,
975 827, 99, 827, 101, 259, 260, 827, 827, 827, 99,
976 188, 99, 261, 261, 261, 261, 261, 262, 262, 262,
977 262, 262, 262, 262, 262, 262, 262, 263, 263, 263,
978 263, 263, 263, 827, 827, 827, 827, 827, 260, 346,
979 346, 346, 346, 346, 346, 827, 262, 262, 262, 262,
980 262, 264, 264, 264, 264, 264, 264, 827, 827, 827,
981 772, 349, 253, 286, 286, 286, 286, 286, 286, 459,
982 257, 257, 257, 257, 257, 99, 827, 99, 827, 99,
983 772, 99, 827, 827, 99, 99, 827, 265, 130, 99,
984
985 266, 266, 266, 266, 266, 266, 827, 827, 99, 827,
986 101, 266, 266, 827, 827, 827, 99, 265, 99, 267,
987 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
988 267, 267, 267, 267, 99, 827, 99, 827, 99, 827,
989 99, 827, 827, 99, 99, 827, 276, 130, 99, 277,
990 277, 277, 277, 277, 277, 827, 827, 99, 827, 101,
991 277, 277, 827, 827, 827, 99, 276, 99, 278, 278,
992 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
993 278, 278, 278, 99, 827, 99, 776, 827, 282, 282,
994 282, 282, 282, 282, 153, 463, 153, 827, 153, 827,
995
996 153, 827, 827, 153, 153, 827, 776, 350, 153, 288,
997 288, 288, 288, 288, 288, 827, 827, 153, 827, 154,
998 827, 827, 827, 827, 827, 153, 827, 153, 153, 153,
999 153, 163, 153, 827, 153, 827, 827, 153, 153, 827,
1000 779, 827, 153, 284, 284, 284, 284, 284, 284, 468,
1001 827, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1002 779, 153, 158, 91, 153, 91, 158, 91, 158, 91,
1003 91, 158, 158, 91, 287, 91, 158, 287, 287, 287,
1004 287, 287, 287, 91, 91, 158, 91, 159, 287, 287,
1005 91, 91, 91, 158, 287, 158, 287, 287, 287, 287,
1006
1007 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1008 287, 225, 827, 225, 294, 294, 294, 294, 294, 294,
1009 289, 827, 289, 827, 827, 290, 290, 290, 290, 290,
1010 290, 361, 827, 360, 360, 360, 360, 360, 360, 351,
1011 827, 360, 360, 360, 360, 360, 360, 153, 225, 827,
1012 225, 371, 371, 371, 371, 371, 371, 289, 827, 291,
1013 130, 827, 292, 292, 292, 292, 292, 292, 166, 827,
1014 166, 314, 314, 314, 314, 314, 314, 827, 827, 827,
1015 827, 827, 295, 295, 295, 295, 295, 295, 380, 380,
1016 380, 380, 380, 380, 383, 383, 383, 383, 383, 383,
1017
1018 827, 827, 827, 827, 296, 225, 827, 225, 384, 384,
1019 384, 384, 384, 384, 226, 827, 226, 827, 827, 297,
1020 297, 297, 297, 297, 297, 153, 827, 153, 827, 153,
1021 827, 153, 827, 827, 153, 153, 827, 153, 293, 387,
1022 387, 387, 387, 387, 387, 269, 827, 827, 153, 827,
1023 154, 827, 827, 827, 827, 827, 153, 153, 153, 153,
1024 153, 153, 163, 153, 537, 153, 827, 827, 153, 153,
1025 827, 153, 299, 130, 827, 394, 394, 394, 394, 394,
1026 394, 827, 153, 827, 154, 827, 827, 827, 544, 827,
1027 153, 153, 153, 99, 827, 99, 827, 99, 827, 99,
1028
1029 827, 827, 99, 99, 827, 99, 299, 380, 380, 380,
1030 380, 380, 380, 827, 827, 827, 99, 827, 101, 827,
1031 827, 827, 827, 827, 99, 99, 99, 153, 153, 153,
1032 163, 153, 594, 153, 827, 827, 153, 153, 827, 163,
1033 293, 298, 301, 301, 301, 301, 301, 301, 827, 827,
1034 153, 827, 154, 302, 302, 827, 602, 827, 153, 163,
1035 153, 302, 302, 302, 302, 302, 302, 302, 302, 302,
1036 302, 302, 302, 302, 302, 302, 166, 827, 166, 380,
1037 380, 380, 380, 380, 380, 827, 827, 827, 303, 827,
1038 304, 304, 304, 304, 304, 304, 410, 410, 410, 410,
1039
1040 410, 410, 827, 827, 411, 411, 411, 411, 411, 411,
1041 398, 827, 305, 225, 827, 225, 413, 413, 413, 413,
1042 413, 413, 289, 827, 291, 306, 827, 307, 307, 307,
1043 307, 307, 307, 99, 827, 99, 827, 99, 827, 99,
1044 827, 827, 99, 99, 827, 110, 308, 300, 309, 309,
1045 309, 309, 309, 309, 119, 827, 99, 827, 101, 310,
1046 310, 827, 827, 827, 99, 110, 99, 310, 310, 310,
1047 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
1048 310, 310, 306, 827, 310, 310, 310, 310, 310, 310,
1049 126, 311, 311, 311, 311, 311, 311, 241, 827, 827,
1050
1051 827, 91, 312, 414, 414, 414, 414, 414, 414, 827,
1052 312, 312, 312, 312, 312, 153, 827, 153, 827, 153,
1053 827, 153, 827, 827, 153, 153, 827, 163, 827, 153,
1054 163, 163, 163, 163, 163, 163, 827, 827, 153, 827,
1055 154, 319, 319, 827, 827, 827, 153, 163, 153, 319,
1056 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1057 319, 319, 319, 319, 153, 827, 153, 827, 153, 827,
1058 153, 827, 827, 153, 153, 827, 248, 130, 153, 424,
1059 827, 425, 425, 425, 425, 425, 425, 153, 827, 154,
1060 827, 827, 827, 827, 827, 153, 248, 153, 153, 827,
1061
1062 153, 827, 153, 652, 153, 827, 827, 153, 153, 827,
1063 248, 306, 298, 426, 827, 423, 423, 423, 423, 423,
1064 423, 153, 827, 154, 827, 827, 827, 659, 827, 153,
1065 248, 153, 153, 153, 153, 163, 153, 827, 153, 827,
1066 827, 153, 153, 827, 248, 306, 298, 423, 423, 423,
1067 423, 423, 423, 827, 827, 153, 827, 154, 827, 827,
1068 827, 827, 827, 153, 248, 153, 153, 827, 153, 827,
1069 153, 696, 153, 827, 827, 153, 153, 827, 163, 293,
1070 298, 302, 302, 302, 302, 302, 302, 827, 827, 153,
1071 827, 154, 322, 322, 827, 704, 827, 153, 163, 153,
1072
1073 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
1074 322, 322, 322, 322, 322, 99, 827, 99, 827, 99,
1075 827, 99, 827, 827, 99, 99, 827, 123, 323, 300,
1076 425, 425, 425, 425, 425, 425, 126, 827, 99, 827,
1077 101, 827, 827, 827, 827, 827, 99, 123, 99, 99,
1078 153, 99, 163, 99, 739, 99, 827, 827, 99, 99,
1079 827, 123, 323, 300, 434, 434, 434, 434, 434, 434,
1080 827, 827, 99, 827, 101, 827, 827, 827, 746, 827,
1081 99, 123, 99, 99, 827, 99, 827, 99, 827, 99,
1082 827, 827, 99, 99, 827, 188, 247, 99, 183, 183,
1083
1084 183, 183, 183, 183, 827, 827, 99, 827, 101, 183,
1085 183, 827, 827, 827, 99, 188, 99, 254, 254, 254,
1086 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1087 254, 254, 99, 827, 99, 827, 99, 827, 99, 827,
1088 827, 99, 99, 827, 188, 323, 300, 325, 325, 325,
1089 325, 325, 325, 126, 827, 99, 827, 101, 324, 324,
1090 827, 827, 827, 99, 188, 99, 326, 326, 326, 326,
1091 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
1092 326, 99, 827, 99, 827, 99, 827, 99, 827, 827,
1093 99, 99, 827, 265, 130, 99, 266, 266, 266, 266,
1094
1095 266, 266, 827, 827, 99, 827, 101, 266, 266, 827,
1096 827, 827, 99, 265, 99, 267, 267, 267, 267, 267,
1097 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
1098 329, 247, 434, 434, 434, 434, 434, 434, 241, 330,
1099 442, 442, 442, 442, 442, 442, 827, 827, 827, 827,
1100 329, 827, 266, 266, 266, 266, 266, 266, 266, 266,
1101 266, 266, 266, 266, 266, 266, 266, 336, 827, 827,
1102 328, 328, 328, 328, 328, 328, 827, 130, 827, 340,
1103 340, 340, 340, 340, 340, 827, 827, 827, 827, 827,
1104 340, 445, 445, 445, 445, 445, 445, 827, 341, 341,
1105
1106 341, 341, 341, 99, 827, 99, 827, 99, 827, 99,
1107 827, 827, 99, 99, 827, 276, 130, 99, 277, 277,
1108 277, 277, 277, 277, 827, 827, 99, 827, 101, 277,
1109 277, 827, 827, 827, 99, 276, 99, 278, 278, 278,
1110 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
1111 278, 278, 343, 247, 446, 446, 446, 446, 446, 446,
1112 827, 344, 449, 449, 449, 449, 449, 449, 269, 827,
1113 827, 827, 343, 827, 277, 277, 277, 277, 277, 277,
1114 277, 277, 277, 277, 277, 277, 277, 277, 277, 100,
1115 827, 282, 282, 282, 282, 282, 282, 827, 827, 827,
1116
1117 827, 101, 153, 827, 153, 827, 153, 153, 153, 163,
1118 827, 153, 153, 827, 450, 212, 153, 451, 451, 451,
1119 451, 451, 451, 827, 827, 153, 827, 154, 225, 827,
1120 225, 827, 827, 153, 827, 153, 153, 226, 153, 226,
1121 153, 153, 153, 163, 827, 153, 153, 827, 827, 347,
1122 153, 284, 284, 284, 284, 284, 284, 827, 827, 153,
1123 827, 154, 827, 827, 827, 827, 827, 153, 827, 153,
1124 158, 91, 153, 91, 158, 91, 158, 91, 91, 158,
1125 158, 91, 287, 217, 158, 287, 287, 287, 287, 287,
1126 287, 91, 91, 158, 91, 159, 287, 287, 91, 91,
1127
1128 91, 158, 287, 158, 287, 287, 287, 287, 287, 287,
1129 287, 287, 287, 287, 287, 287, 287, 287, 287, 100,
1130 827, 290, 290, 290, 290, 290, 290, 827, 827, 827,
1131 827, 154, 100, 827, 290, 290, 290, 290, 290, 290,
1132 827, 815, 827, 815, 154, 153, 827, 153, 827, 153,
1133 821, 153, 821, 827, 153, 153, 827, 163, 130, 153,
1134 292, 292, 292, 292, 292, 292, 827, 827, 153, 827,
1135 154, 163, 163, 827, 827, 827, 153, 163, 153, 163,
1136 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
1137 163, 163, 163, 163, 166, 827, 166, 442, 442, 442,
1138
1139 442, 442, 442, 269, 827, 827, 827, 827, 352, 352,
1140 352, 352, 352, 352, 469, 469, 469, 469, 469, 469,
1141 470, 827, 411, 411, 411, 411, 411, 411, 827, 827,
1142 353, 225, 472, 225, 414, 414, 414, 414, 414, 414,
1143 226, 827, 226, 827, 827, 354, 354, 354, 354, 354,
1144 354, 153, 827, 153, 827, 153, 827, 153, 827, 827,
1145 153, 153, 827, 153, 355, 478, 483, 483, 483, 483,
1146 483, 483, 827, 827, 153, 827, 154, 827, 827, 827,
1147 827, 827, 153, 153, 153, 153, 827, 153, 827, 153,
1148 827, 153, 827, 827, 153, 153, 827, 153, 351, 473,
1149
1150 827, 483, 483, 483, 483, 483, 483, 827, 153, 827,
1151 154, 827, 827, 827, 163, 827, 153, 153, 153, 99,
1152 827, 99, 827, 99, 827, 99, 827, 827, 99, 99,
1153 827, 99, 355, 434, 434, 434, 434, 434, 434, 827,
1154 827, 827, 99, 827, 101, 827, 827, 827, 827, 827,
1155 99, 99, 99, 153, 827, 153, 827, 153, 827, 153,
1156 827, 827, 153, 153, 827, 163, 358, 356, 359, 359,
1157 359, 359, 359, 359, 827, 827, 153, 827, 154, 360,
1158 360, 827, 827, 827, 153, 163, 153, 360, 360, 360,
1159 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
1160
1161 360, 360, 166, 827, 166, 502, 502, 502, 502, 502,
1162 502, 827, 827, 827, 362, 827, 363, 363, 363, 363,
1163 363, 363, 505, 505, 505, 505, 505, 505, 506, 506,
1164 506, 506, 506, 506, 827, 827, 827, 827, 364, 225,
1165 827, 225, 527, 527, 527, 527, 527, 527, 289, 827,
1166 291, 361, 827, 365, 365, 365, 365, 365, 365, 99,
1167 827, 99, 827, 99, 827, 99, 827, 827, 99, 99,
1168 827, 110, 366, 357, 367, 367, 367, 367, 367, 367,
1169 368, 827, 99, 827, 101, 369, 369, 827, 827, 827,
1170 99, 110, 99, 369, 369, 369, 369, 369, 369, 369,
1171
1172 369, 369, 369, 369, 369, 369, 369, 369, 361, 827,
1173 369, 369, 369, 369, 369, 369, 827, 370, 370, 370,
1174 370, 370, 370, 241, 827, 827, 507, 827, 371, 508,
1175 508, 508, 508, 508, 508, 827, 371, 371, 371, 371,
1176 371, 153, 827, 153, 827, 153, 827, 153, 827, 827,
1177 153, 153, 827, 248, 130, 153, 510, 510, 510, 510,
1178 510, 510, 269, 827, 153, 827, 154, 827, 827, 827,
1179 827, 827, 153, 248, 153, 153, 827, 153, 827, 153,
1180 827, 153, 827, 827, 153, 153, 827, 248, 361, 356,
1181 451, 451, 451, 451, 451, 451, 269, 827, 153, 827,
1182
1183 154, 827, 827, 827, 827, 827, 153, 248, 153, 153,
1184 827, 153, 827, 153, 827, 153, 827, 827, 153, 153,
1185 827, 248, 361, 356, 533, 533, 533, 533, 533, 533,
1186 827, 827, 153, 827, 154, 827, 827, 827, 827, 827,
1187 153, 248, 153, 153, 827, 153, 827, 153, 827, 153,
1188 827, 827, 153, 153, 827, 163, 351, 356, 360, 360,
1189 360, 360, 360, 360, 827, 827, 153, 827, 154, 378,
1190 378, 827, 827, 827, 153, 163, 153, 378, 378, 378,
1191 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
1192 378, 378, 99, 827, 99, 827, 99, 827, 99, 827,
1193
1194 827, 99, 99, 827, 123, 379, 357, 827, 827, 534,
1195 534, 534, 534, 534, 534, 99, 827, 101, 827, 827,
1196 827, 827, 827, 99, 123, 99, 99, 827, 99, 827,
1197 99, 827, 99, 827, 827, 99, 99, 827, 188, 379,
1198 357, 381, 381, 381, 381, 381, 381, 827, 827, 99,
1199 827, 101, 380, 380, 827, 827, 827, 99, 188, 99,
1200 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
1201 382, 382, 382, 382, 382, 99, 827, 99, 827, 99,
1202 827, 99, 827, 827, 99, 99, 827, 395, 130, 99,
1203 396, 396, 396, 396, 396, 396, 827, 827, 99, 827,
1204
1205 101, 396, 396, 827, 827, 827, 99, 395, 99, 397,
1206 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
1207 397, 397, 397, 397, 99, 827, 99, 827, 99, 827,
1208 99, 827, 827, 99, 99, 827, 123, 247, 99, 399,
1209 399, 399, 399, 399, 399, 827, 827, 99, 827, 101,
1210 399, 183, 827, 827, 827, 99, 123, 99, 399, 399,
1211 399, 399, 399, 183, 183, 183, 183, 183, 183, 183,
1212 183, 183, 183, 399, 399, 399, 399, 399, 399, 827,
1213 827, 827, 827, 827, 399, 535, 535, 535, 535, 535,
1214 535, 827, 400, 400, 400, 400, 400, 99, 827, 99,
1215
1216 827, 99, 827, 99, 827, 827, 99, 99, 827, 401,
1217 130, 99, 402, 402, 402, 402, 402, 402, 827, 827,
1218 99, 827, 101, 402, 402, 827, 827, 827, 99, 401,
1219 99, 403, 403, 403, 403, 403, 403, 403, 403, 403,
1220 403, 403, 403, 403, 403, 403, 343, 91, 827, 536,
1221 536, 536, 536, 536, 536, 545, 545, 545, 545, 545,
1222 545, 827, 827, 827, 827, 827, 343, 827, 277, 277,
1223 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1224 277, 277, 277, 99, 827, 99, 827, 99, 827, 99,
1225 827, 827, 99, 99, 827, 407, 130, 99, 408, 408,
1226
1227 408, 408, 408, 408, 827, 827, 99, 827, 101, 408,
1228 408, 827, 827, 827, 99, 407, 99, 409, 409, 409,
1229 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
1230 409, 409, 166, 549, 166, 550, 550, 550, 550, 550,
1231 550, 827, 827, 827, 827, 827, 416, 416, 416, 416,
1232 416, 416, 537, 827, 550, 550, 550, 550, 550, 550,
1233 568, 568, 568, 568, 568, 568, 827, 827, 417, 225,
1234 827, 225, 569, 569, 569, 569, 569, 569, 226, 827,
1235 226, 827, 827, 418, 418, 418, 418, 418, 418, 153,
1236 827, 153, 827, 153, 827, 153, 827, 827, 153, 153,
1237
1238 827, 153, 415, 508, 508, 508, 508, 508, 508, 330,
1239 827, 827, 153, 827, 154, 827, 827, 827, 827, 827,
1240 153, 153, 153, 153, 827, 153, 827, 153, 827, 153,
1241 827, 827, 153, 153, 827, 153, 420, 573, 573, 573,
1242 573, 573, 573, 269, 827, 827, 153, 827, 154, 827,
1243 827, 827, 827, 827, 153, 153, 153, 99, 827, 99,
1244 827, 99, 827, 99, 827, 827, 99, 99, 827, 99,
1245 420, 527, 527, 527, 527, 527, 527, 344, 827, 827,
1246 99, 827, 101, 827, 827, 827, 827, 827, 99, 99,
1247 99, 153, 827, 153, 827, 153, 827, 153, 827, 827,
1248
1249 153, 153, 827, 163, 415, 419, 422, 422, 422, 422,
1250 422, 422, 827, 827, 153, 827, 154, 423, 423, 827,
1251 827, 827, 153, 163, 153, 423, 423, 423, 423, 423,
1252 423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
1253 166, 212, 166, 534, 534, 534, 534, 534, 534, 827,
1254 827, 827, 427, 827, 428, 428, 428, 428, 428, 428,
1255 536, 536, 536, 536, 536, 536, 607, 827, 608, 608,
1256 608, 608, 608, 608, 827, 827, 429, 225, 827, 225,
1257 608, 608, 608, 608, 608, 608, 289, 827, 291, 426,
1258 827, 430, 430, 430, 430, 430, 430, 99, 827, 99,
1259
1260 827, 99, 827, 99, 827, 827, 99, 99, 827, 110,
1261 431, 421, 432, 432, 432, 432, 432, 432, 368, 827,
1262 99, 827, 101, 433, 433, 827, 827, 827, 99, 110,
1263 99, 433, 433, 433, 433, 433, 433, 433, 433, 433,
1264 433, 433, 433, 433, 433, 433, 426, 827, 433, 433,
1265 433, 433, 433, 433, 827, 153, 827, 153, 827, 153,
1266 827, 153, 827, 827, 153, 153, 827, 248, 426, 419,
1267 628, 628, 628, 628, 628, 628, 827, 827, 153, 827,
1268 154, 827, 827, 827, 827, 827, 153, 248, 153, 153,
1269 827, 153, 827, 153, 827, 153, 827, 827, 153, 153,
1270
1271 827, 248, 426, 419, 639, 639, 639, 639, 639, 639,
1272 827, 827, 153, 827, 154, 827, 827, 827, 827, 827,
1273 153, 248, 153, 153, 827, 153, 827, 153, 827, 153,
1274 827, 827, 153, 153, 827, 163, 415, 419, 423, 423,
1275 423, 423, 423, 423, 827, 827, 153, 827, 154, 440,
1276 440, 827, 827, 827, 153, 163, 153, 440, 440, 440,
1277 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
1278 440, 440, 99, 827, 99, 827, 99, 827, 99, 827,
1279 827, 99, 99, 827, 123, 441, 421, 644, 644, 644,
1280 644, 644, 644, 827, 827, 99, 827, 101, 827, 827,
1281
1282 827, 827, 827, 99, 123, 99, 99, 827, 99, 827,
1283 99, 827, 99, 827, 827, 99, 99, 827, 188, 441,
1284 421, 443, 443, 443, 443, 443, 443, 827, 827, 99,
1285 827, 101, 442, 442, 827, 827, 827, 99, 188, 99,
1286 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
1287 444, 444, 444, 444, 444, 99, 827, 99, 827, 99,
1288 827, 99, 827, 827, 99, 99, 827, 123, 247, 99,
1289 183, 183, 183, 183, 183, 183, 827, 827, 99, 827,
1290 101, 457, 457, 827, 827, 827, 99, 123, 99, 457,
1291 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
1292
1293 457, 457, 457, 457, 458, 247, 648, 648, 648, 648,
1294 648, 648, 827, 459, 651, 651, 651, 651, 651, 651,
1295 827, 827, 827, 827, 458, 827, 396, 396, 396, 396,
1296 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1297 396, 460, 460, 460, 460, 460, 460, 827, 827, 827,
1298 827, 827, 460, 661, 661, 661, 661, 661, 661, 827,
1299 460, 460, 460, 460, 460, 460, 460, 460, 460, 460,
1300 460, 827, 827, 827, 827, 827, 460, 661, 661, 661,
1301 661, 661, 661, 827, 461, 461, 461, 461, 461, 462,
1302 247, 827, 827, 604, 827, 827, 827, 827, 463, 664,
1303
1304 665, 665, 665, 665, 665, 665, 827, 827, 827, 462,
1305 827, 402, 402, 402, 402, 402, 402, 402, 402, 402,
1306 402, 402, 402, 402, 402, 402, 467, 247, 672, 672,
1307 672, 672, 672, 672, 652, 468, 665, 665, 665, 665,
1308 665, 665, 827, 827, 827, 827, 467, 827, 408, 408,
1309 408, 408, 408, 408, 408, 408, 408, 408, 408, 408,
1310 408, 408, 408, 166, 666, 166, 667, 667, 667, 667,
1311 667, 667, 827, 827, 827, 827, 827, 474, 474, 474,
1312 474, 474, 474, 652, 827, 667, 667, 667, 667, 667,
1313 667, 639, 639, 639, 639, 639, 639, 459, 827, 475,
1314
1315 225, 709, 225, 710, 710, 710, 710, 710, 710, 226,
1316 827, 226, 827, 827, 476, 476, 476, 476, 476, 476,
1317 153, 827, 153, 827, 153, 827, 153, 827, 827, 153,
1318 153, 827, 153, 477, 644, 644, 644, 644, 644, 644,
1319 463, 827, 827, 153, 827, 154, 827, 827, 827, 827,
1320 827, 153, 153, 153, 153, 827, 153, 827, 153, 827,
1321 153, 827, 827, 153, 153, 827, 153, 473, 648, 648,
1322 648, 648, 648, 648, 468, 827, 827, 153, 827, 154,
1323 827, 827, 827, 827, 827, 153, 153, 153, 99, 827,
1324 99, 827, 99, 827, 99, 827, 827, 99, 99, 827,
1325
1326 99, 477, 710, 710, 710, 710, 710, 710, 827, 827,
1327 827, 99, 827, 101, 827, 827, 827, 827, 827, 99,
1328 99, 99, 153, 827, 153, 827, 153, 827, 153, 827,
1329 827, 153, 153, 827, 163, 480, 481, 482, 482, 482,
1330 482, 482, 482, 827, 827, 153, 827, 154, 483, 483,
1331 827, 827, 827, 153, 163, 153, 483, 483, 483, 483,
1332 483, 483, 483, 483, 483, 483, 483, 483, 483, 483,
1333 483, 484, 478, 485, 485, 485, 485, 485, 485, 166,
1334 827, 166, 827, 748, 748, 748, 748, 748, 748, 827,
1335 827, 486, 827, 487, 487, 487, 487, 487, 487, 604,
1336
1337 153, 827, 827, 749, 749, 749, 749, 749, 749, 748,
1338 748, 748, 748, 748, 748, 488, 225, 739, 225, 751,
1339 751, 751, 751, 751, 751, 289, 827, 291, 480, 827,
1340 489, 489, 489, 489, 489, 489, 99, 827, 99, 827,
1341 99, 827, 99, 827, 827, 99, 99, 827, 110, 490,
1342 479, 491, 491, 491, 491, 491, 491, 368, 827, 99,
1343 827, 101, 492, 492, 827, 827, 827, 99, 110, 99,
1344 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
1345 492, 492, 492, 492, 492, 480, 827, 492, 492, 492,
1346 492, 492, 492, 827, 153, 827, 153, 827, 153, 827,
1347
1348 153, 827, 827, 153, 153, 827, 248, 480, 478, 750,
1349 751, 751, 751, 751, 751, 751, 827, 153, 827, 154,
1350 827, 827, 827, 827, 827, 153, 248, 153, 153, 827,
1351 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1352 248, 480, 478, 752, 827, 753, 753, 753, 753, 753,
1353 753, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1354 248, 153, 153, 827, 153, 827, 153, 827, 153, 827,
1355 827, 153, 153, 827, 163, 473, 478, 483, 483, 483,
1356 483, 483, 483, 827, 827, 153, 827, 154, 500, 500,
1357 827, 827, 827, 153, 163, 153, 500, 500, 500, 500,
1358
1359 500, 500, 500, 500, 500, 500, 500, 500, 500, 500,
1360 500, 99, 827, 99, 827, 99, 827, 99, 827, 827,
1361 99, 99, 827, 123, 501, 479, 739, 827, 753, 753,
1362 753, 753, 753, 753, 99, 827, 101, 827, 827, 827,
1363 827, 827, 99, 123, 99, 99, 827, 99, 827, 99,
1364 827, 99, 827, 827, 99, 99, 827, 188, 501, 479,
1365 503, 503, 503, 503, 503, 503, 827, 827, 99, 827,
1366 101, 502, 502, 827, 827, 827, 99, 188, 99, 504,
1367 504, 504, 504, 504, 504, 504, 504, 504, 504, 504,
1368 504, 504, 504, 504, 519, 519, 758, 758, 758, 758,
1369
1370 758, 758, 519, 519, 519, 519, 519, 519, 519, 519,
1371 519, 519, 519, 519, 519, 519, 519, 523, 523, 523,
1372 523, 523, 523, 827, 827, 827, 827, 827, 523, 294,
1373 294, 294, 294, 294, 294, 827, 523, 523, 523, 523,
1374 523, 523, 523, 523, 523, 523, 523, 827, 827, 827,
1375 153, 827, 523, 153, 153, 153, 153, 153, 153, 827,
1376 524, 524, 524, 524, 524, 166, 153, 166, 827, 749,
1377 749, 749, 749, 749, 749, 827, 827, 827, 827, 538,
1378 538, 538, 538, 538, 538, 785, 827, 786, 786, 786,
1379 786, 786, 786, 786, 786, 786, 786, 786, 786, 827,
1380
1381 827, 539, 225, 827, 225, 789, 789, 789, 789, 789,
1382 789, 226, 827, 226, 827, 827, 540, 540, 540, 540,
1383 540, 540, 153, 827, 153, 827, 153, 827, 153, 827,
1384 827, 153, 153, 827, 153, 537, 798, 798, 798, 798,
1385 798, 798, 269, 827, 827, 153, 827, 154, 827, 827,
1386 827, 827, 827, 153, 153, 153, 153, 827, 153, 827,
1387 153, 827, 153, 827, 827, 153, 153, 827, 153, 542,
1388 785, 827, 786, 786, 786, 786, 786, 786, 827, 153,
1389 827, 154, 827, 827, 827, 827, 827, 153, 153, 153,
1390 99, 827, 99, 827, 99, 827, 99, 827, 827, 99,
1391
1392 99, 827, 99, 542, 786, 786, 786, 786, 786, 786,
1393 827, 827, 827, 99, 827, 101, 827, 827, 827, 827,
1394 827, 99, 99, 99, 153, 827, 153, 827, 153, 827,
1395 153, 827, 827, 153, 153, 827, 163, 537, 541, 788,
1396 788, 788, 788, 788, 788, 827, 827, 153, 827, 154,
1397 827, 827, 827, 827, 827, 153, 163, 153, 153, 827,
1398 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1399 163, 546, 547, 548, 548, 548, 548, 548, 548, 827,
1400 827, 153, 827, 154, 544, 544, 827, 827, 827, 153,
1401 163, 153, 544, 544, 544, 544, 544, 544, 544, 544,
1402
1403 544, 544, 544, 544, 544, 544, 544, 153, 827, 153,
1404 827, 153, 827, 153, 827, 827, 153, 153, 827, 163,
1405 546, 541, 798, 798, 798, 798, 798, 798, 269, 827,
1406 153, 827, 154, 827, 827, 827, 827, 827, 153, 163,
1407 153, 166, 827, 166, 804, 804, 804, 804, 804, 804,
1408 827, 827, 827, 551, 827, 552, 552, 552, 552, 552,
1409 552, 810, 810, 810, 810, 810, 810, 811, 812, 811,
1410 811, 811, 811, 827, 827, 827, 827, 553, 225, 827,
1411 225, 816, 816, 816, 816, 816, 816, 289, 827, 291,
1412 827, 827, 554, 554, 554, 554, 554, 554, 99, 555,
1413
1414 99, 555, 99, 827, 99, 827, 827, 99, 99, 827,
1415 110, 556, 543, 557, 557, 557, 557, 557, 557, 368,
1416 827, 99, 827, 101, 558, 558, 827, 827, 827, 99,
1417 110, 99, 558, 558, 558, 558, 558, 558, 558, 558,
1418 558, 558, 558, 558, 558, 558, 558, 827, 827, 827,
1419 817, 817, 818, 816, 816, 816, 827, 827, 827, 546,
1420 827, 558, 558, 558, 558, 558, 558, 827, 153, 827,
1421 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1422 248, 546, 541, 816, 816, 816, 816, 816, 816, 827,
1423 827, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1424
1425 248, 153, 153, 827, 153, 827, 153, 827, 153, 827,
1426 827, 153, 153, 827, 248, 546, 541, 822, 822, 822,
1427 822, 822, 822, 827, 827, 153, 827, 154, 827, 827,
1428 827, 827, 827, 153, 248, 153, 537, 823, 823, 823,
1429 823, 823, 823, 825, 825, 825, 825, 825, 825, 564,
1430 564, 826, 826, 826, 826, 826, 826, 564, 564, 564,
1431 564, 564, 564, 564, 564, 564, 564, 564, 564, 564,
1432 564, 564, 99, 827, 99, 827, 99, 827, 99, 827,
1433 827, 99, 99, 827, 123, 565, 543, 827, 827, 827,
1434 827, 827, 827, 827, 827, 99, 827, 101, 827, 827,
1435
1436 827, 827, 827, 99, 123, 99, 99, 827, 99, 827,
1437 99, 827, 99, 827, 827, 99, 99, 827, 188, 565,
1438 543, 566, 566, 566, 566, 566, 566, 827, 827, 99,
1439 827, 101, 566, 566, 827, 827, 827, 99, 188, 99,
1440 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
1441 567, 567, 567, 567, 567, 578, 578, 827, 827, 827,
1442 827, 827, 827, 578, 578, 578, 578, 578, 578, 578,
1443 578, 578, 578, 578, 578, 578, 578, 578, 582, 582,
1444 582, 582, 582, 582, 827, 827, 827, 827, 827, 582,
1445 827, 827, 827, 827, 827, 827, 827, 582, 582, 582,
1446
1447 582, 582, 582, 582, 582, 582, 582, 582, 827, 827,
1448 827, 827, 827, 582, 827, 827, 827, 827, 827, 827,
1449 827, 583, 583, 583, 583, 583, 166, 827, 166, 827,
1450 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1451 595, 595, 595, 595, 595, 595, 827, 827, 827, 827,
1452 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1453 827, 827, 596, 225, 827, 225, 827, 827, 827, 827,
1454 827, 827, 226, 827, 226, 827, 827, 597, 597, 597,
1455 597, 597, 597, 153, 827, 153, 827, 153, 827, 153,
1456 827, 827, 153, 153, 827, 153, 598, 827, 827, 827,
1457
1458 827, 827, 827, 827, 827, 827, 153, 827, 154, 827,
1459 827, 827, 827, 827, 153, 153, 153, 153, 827, 153,
1460 827, 153, 827, 153, 827, 827, 153, 153, 827, 153,
1461 594, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1462 153, 827, 154, 827, 827, 827, 827, 827, 153, 153,
1463 153, 99, 827, 99, 827, 99, 827, 99, 827, 827,
1464 99, 99, 827, 99, 598, 827, 827, 827, 827, 827,
1465 827, 827, 827, 827, 99, 827, 101, 827, 827, 827,
1466 827, 827, 99, 99, 99, 153, 827, 153, 827, 153,
1467 827, 153, 827, 827, 153, 153, 827, 163, 601, 599,
1468
1469 827, 827, 827, 827, 827, 827, 827, 827, 153, 827,
1470 154, 827, 827, 827, 827, 827, 153, 163, 153, 598,
1471 827, 603, 603, 603, 603, 603, 603, 827, 827, 827,
1472 827, 827, 827, 827, 827, 827, 827, 604, 153, 827,
1473 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1474 163, 594, 599, 827, 827, 827, 827, 827, 827, 827,
1475 827, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1476 163, 153, 601, 605, 606, 606, 606, 606, 606, 606,
1477 166, 827, 166, 827, 827, 827, 827, 827, 827, 827,
1478 827, 827, 609, 827, 610, 610, 610, 610, 610, 610,
1479
1480 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1481 827, 827, 827, 827, 827, 827, 611, 225, 827, 225,
1482 827, 827, 827, 827, 827, 827, 289, 827, 291, 601,
1483 827, 612, 612, 612, 612, 612, 612, 99, 827, 99,
1484 827, 99, 827, 99, 827, 827, 99, 99, 827, 110,
1485 614, 600, 615, 615, 615, 615, 615, 615, 368, 827,
1486 99, 827, 101, 616, 616, 827, 827, 827, 99, 110,
1487 99, 616, 616, 616, 616, 616, 616, 616, 616, 616,
1488 616, 616, 616, 616, 616, 616, 601, 827, 616, 616,
1489 616, 616, 616, 616, 827, 153, 827, 153, 827, 153,
1490
1491 827, 153, 827, 827, 153, 153, 827, 248, 601, 599,
1492 827, 827, 827, 827, 827, 827, 827, 827, 153, 827,
1493 154, 827, 827, 827, 827, 827, 153, 248, 153, 153,
1494 827, 153, 827, 153, 827, 153, 827, 827, 153, 153,
1495 827, 248, 601, 599, 827, 827, 827, 827, 827, 827,
1496 827, 827, 153, 827, 154, 827, 827, 827, 827, 827,
1497 153, 248, 153, 624, 624, 827, 827, 827, 827, 827,
1498 827, 624, 624, 624, 624, 624, 624, 624, 624, 624,
1499 624, 624, 624, 624, 624, 624, 99, 827, 99, 827,
1500 99, 827, 99, 827, 827, 99, 99, 827, 123, 625,
1501
1502 600, 827, 827, 827, 827, 827, 827, 827, 827, 99,
1503 827, 101, 827, 827, 827, 827, 827, 99, 123, 99,
1504 99, 827, 99, 827, 99, 827, 99, 827, 827, 99,
1505 99, 827, 188, 625, 600, 626, 626, 626, 626, 626,
1506 626, 827, 827, 99, 827, 101, 626, 626, 827, 827,
1507 827, 99, 188, 99, 627, 627, 627, 627, 627, 627,
1508 627, 627, 627, 627, 627, 627, 627, 627, 627, 99,
1509 827, 99, 827, 99, 827, 99, 827, 827, 99, 99,
1510 827, 123, 625, 600, 630, 630, 630, 630, 630, 630,
1511 269, 827, 99, 827, 101, 626, 626, 827, 827, 827,
1512
1513 99, 123, 99, 626, 626, 626, 626, 626, 626, 626,
1514 626, 626, 626, 626, 626, 626, 626, 626, 638, 638,
1515 827, 827, 827, 827, 827, 827, 638, 638, 638, 638,
1516 638, 638, 638, 638, 638, 638, 638, 638, 638, 638,
1517 638, 642, 642, 642, 642, 642, 642, 827, 827, 827,
1518 827, 827, 642, 827, 827, 827, 827, 827, 827, 827,
1519 642, 642, 642, 642, 642, 642, 642, 642, 642, 642,
1520 642, 827, 827, 827, 827, 827, 642, 827, 827, 827,
1521 827, 827, 827, 827, 643, 643, 643, 643, 643, 166,
1522 827, 166, 827, 827, 827, 827, 827, 827, 827, 827,
1523
1524 827, 827, 827, 653, 653, 653, 653, 653, 653, 827,
1525 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1526 827, 827, 827, 827, 827, 654, 225, 827, 225, 827,
1527 827, 827, 827, 827, 827, 226, 827, 226, 827, 827,
1528 655, 655, 655, 655, 655, 655, 153, 827, 153, 827,
1529 153, 827, 153, 827, 827, 153, 153, 827, 153, 652,
1530 827, 827, 827, 827, 827, 827, 827, 827, 827, 153,
1531 827, 154, 827, 827, 827, 827, 827, 153, 153, 153,
1532 153, 827, 153, 827, 153, 827, 153, 827, 827, 153,
1533 153, 827, 153, 657, 827, 827, 827, 827, 827, 827,
1534
1535 827, 827, 827, 153, 827, 154, 827, 827, 827, 827,
1536 827, 153, 153, 153, 99, 827, 99, 827, 99, 827,
1537 99, 827, 827, 99, 99, 827, 99, 657, 827, 827,
1538 827, 827, 827, 827, 827, 827, 827, 99, 827, 101,
1539 827, 827, 827, 827, 827, 99, 99, 99, 153, 827,
1540 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1541 163, 652, 656, 827, 827, 827, 827, 827, 827, 827,
1542 827, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1543 163, 153, 153, 827, 153, 827, 153, 827, 153, 827,
1544 827, 153, 153, 827, 163, 660, 656, 827, 827, 827,
1545
1546 827, 827, 827, 827, 827, 153, 827, 154, 827, 827,
1547 827, 827, 827, 153, 163, 153, 662, 827, 662, 100,
1548 827, 663, 663, 663, 663, 663, 663, 827, 827, 827,
1549 827, 154, 166, 827, 166, 827, 827, 827, 827, 827,
1550 827, 827, 827, 827, 668, 827, 669, 669, 669, 669,
1551 669, 669, 827, 827, 827, 827, 827, 827, 827, 827,
1552 827, 827, 827, 827, 827, 827, 827, 827, 670, 225,
1553 827, 225, 827, 827, 827, 827, 827, 827, 289, 827,
1554 291, 827, 827, 671, 671, 671, 671, 671, 671, 99,
1555 827, 99, 827, 99, 827, 99, 827, 827, 99, 99,
1556
1557 827, 110, 673, 658, 674, 674, 674, 674, 674, 674,
1558 368, 827, 99, 827, 101, 675, 675, 827, 827, 827,
1559 99, 110, 99, 675, 675, 675, 675, 675, 675, 675,
1560 675, 675, 675, 675, 675, 675, 675, 675, 660, 827,
1561 675, 675, 675, 675, 675, 675, 827, 153, 827, 153,
1562 827, 153, 827, 153, 827, 827, 153, 153, 827, 248,
1563 660, 656, 827, 827, 827, 827, 827, 827, 827, 827,
1564 153, 827, 154, 827, 827, 827, 827, 827, 153, 248,
1565 153, 153, 827, 153, 827, 153, 827, 153, 827, 827,
1566 153, 153, 827, 248, 660, 656, 827, 827, 827, 827,
1567
1568 827, 827, 827, 827, 153, 827, 154, 827, 827, 827,
1569 827, 827, 153, 248, 153, 652, 827, 827, 827, 827,
1570 827, 827, 827, 827, 827, 827, 827, 827, 681, 681,
1571 827, 827, 827, 827, 827, 827, 681, 681, 681, 681,
1572 681, 681, 681, 681, 681, 681, 681, 681, 681, 681,
1573 681, 99, 827, 99, 827, 99, 827, 99, 827, 827,
1574 99, 99, 827, 123, 682, 658, 827, 827, 827, 827,
1575 827, 827, 827, 827, 99, 827, 101, 827, 827, 827,
1576 827, 827, 99, 123, 99, 99, 827, 99, 827, 99,
1577 827, 99, 827, 827, 99, 99, 827, 188, 682, 658,
1578
1579 683, 683, 683, 683, 683, 683, 827, 827, 99, 827,
1580 101, 683, 683, 827, 827, 827, 99, 188, 99, 684,
1581 684, 684, 684, 684, 684, 684, 684, 684, 684, 684,
1582 684, 684, 684, 684, 99, 827, 99, 827, 99, 827,
1583 99, 827, 827, 99, 99, 827, 123, 682, 658, 686,
1584 686, 686, 686, 686, 686, 269, 827, 99, 827, 101,
1585 683, 683, 827, 827, 827, 99, 123, 99, 683, 683,
1586 683, 683, 683, 683, 683, 683, 683, 683, 683, 683,
1587 683, 683, 683, 183, 183, 183, 183, 183, 183, 827,
1588 827, 827, 827, 827, 183, 827, 827, 827, 827, 827,
1589
1590 827, 827, 183, 183, 183, 183, 183, 689, 689, 689,
1591 689, 689, 689, 827, 827, 827, 827, 827, 689, 827,
1592 827, 827, 827, 827, 827, 827, 689, 689, 689, 689,
1593 689, 689, 689, 689, 689, 689, 689, 827, 827, 827,
1594 827, 827, 689, 827, 827, 827, 827, 827, 827, 827,
1595 690, 690, 690, 690, 690, 166, 827, 166, 827, 827,
1596 827, 827, 827, 827, 827, 827, 827, 827, 827, 697,
1597 697, 697, 697, 697, 697, 827, 827, 827, 827, 827,
1598 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1599 827, 698, 225, 827, 225, 827, 827, 827, 827, 827,
1600
1601 827, 226, 827, 226, 827, 827, 699, 699, 699, 699,
1602 699, 699, 153, 827, 153, 827, 153, 827, 153, 827,
1603 827, 153, 153, 827, 153, 700, 827, 827, 827, 827,
1604 827, 827, 827, 827, 827, 153, 827, 154, 827, 827,
1605 827, 827, 827, 153, 153, 153, 153, 827, 153, 827,
1606 153, 827, 153, 827, 827, 153, 153, 827, 153, 696,
1607 827, 827, 827, 827, 827, 827, 827, 827, 827, 153,
1608 827, 154, 827, 827, 827, 827, 827, 153, 153, 153,
1609 99, 827, 99, 827, 99, 827, 99, 827, 827, 99,
1610 99, 827, 99, 700, 827, 827, 827, 827, 827, 827,
1611
1612 827, 827, 827, 99, 827, 101, 827, 827, 827, 827,
1613 827, 99, 99, 99, 153, 827, 153, 827, 153, 827,
1614 153, 827, 827, 153, 153, 827, 163, 703, 701, 827,
1615 827, 827, 827, 827, 827, 827, 827, 153, 827, 154,
1616 827, 827, 827, 827, 827, 153, 163, 153, 153, 827,
1617 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1618 163, 696, 701, 827, 827, 827, 827, 827, 827, 827,
1619 827, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1620 163, 153, 700, 827, 705, 705, 705, 705, 705, 705,
1621 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1622
1623 604, 706, 100, 827, 663, 663, 663, 663, 663, 663,
1624 827, 827, 827, 827, 154, 703, 707, 708, 708, 708,
1625 708, 708, 708, 166, 827, 166, 827, 827, 827, 827,
1626 827, 827, 827, 827, 827, 711, 827, 712, 712, 712,
1627 712, 712, 712, 827, 827, 827, 827, 827, 827, 827,
1628 827, 827, 827, 827, 827, 827, 827, 827, 827, 713,
1629 225, 827, 225, 827, 827, 827, 827, 827, 827, 289,
1630 827, 291, 703, 827, 714, 714, 714, 714, 714, 714,
1631 99, 827, 99, 827, 99, 827, 99, 827, 827, 99,
1632 99, 827, 110, 716, 702, 717, 717, 717, 717, 717,
1633
1634 717, 368, 827, 99, 827, 101, 718, 718, 827, 827,
1635 827, 99, 110, 99, 718, 718, 718, 718, 718, 718,
1636 718, 718, 718, 718, 718, 718, 718, 718, 718, 703,
1637 827, 718, 718, 718, 718, 718, 718, 827, 153, 827,
1638 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1639 248, 703, 701, 827, 827, 827, 827, 827, 827, 827,
1640 827, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1641 248, 153, 153, 827, 153, 827, 153, 827, 153, 827,
1642 827, 153, 153, 827, 248, 703, 701, 827, 827, 827,
1643 827, 827, 827, 827, 827, 153, 827, 154, 827, 827,
1644
1645 827, 827, 827, 153, 248, 153, 726, 726, 827, 827,
1646 827, 827, 827, 827, 726, 726, 726, 726, 726, 726,
1647 726, 726, 726, 726, 726, 726, 726, 726, 726, 99,
1648 827, 99, 827, 99, 827, 99, 827, 827, 99, 99,
1649 827, 123, 727, 702, 827, 827, 827, 827, 827, 827,
1650 827, 827, 99, 827, 101, 827, 827, 827, 827, 827,
1651 99, 123, 99, 99, 827, 99, 827, 99, 827, 99,
1652 827, 827, 99, 99, 827, 188, 727, 702, 728, 728,
1653 728, 728, 728, 728, 827, 827, 99, 827, 101, 728,
1654 728, 827, 827, 827, 99, 188, 99, 729, 729, 729,
1655
1656 729, 729, 729, 729, 729, 729, 729, 729, 729, 729,
1657 729, 729, 99, 827, 99, 827, 99, 827, 99, 827,
1658 827, 99, 99, 827, 123, 727, 702, 730, 730, 730,
1659 730, 730, 730, 269, 827, 99, 827, 101, 728, 728,
1660 827, 827, 827, 99, 123, 99, 728, 728, 728, 728,
1661 728, 728, 728, 728, 728, 728, 728, 728, 728, 728,
1662 728, 733, 733, 733, 733, 733, 733, 827, 827, 827,
1663 827, 827, 733, 827, 827, 827, 827, 827, 827, 827,
1664 733, 733, 733, 733, 733, 733, 733, 733, 733, 733,
1665 733, 827, 827, 827, 827, 827, 733, 827, 827, 827,
1666
1667 827, 827, 827, 827, 734, 734, 734, 734, 734, 166,
1668 827, 166, 827, 827, 827, 827, 827, 827, 827, 827,
1669 827, 827, 827, 740, 740, 740, 740, 740, 740, 827,
1670 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1671 827, 827, 827, 827, 827, 741, 225, 827, 225, 827,
1672 827, 827, 827, 827, 827, 226, 827, 226, 827, 827,
1673 742, 742, 742, 742, 742, 742, 153, 827, 153, 827,
1674 153, 827, 153, 827, 827, 153, 153, 827, 153, 739,
1675 827, 827, 827, 827, 827, 827, 827, 827, 827, 153,
1676 827, 154, 827, 827, 827, 827, 827, 153, 153, 153,
1677
1678 153, 827, 153, 827, 153, 827, 153, 827, 827, 153,
1679 153, 827, 153, 744, 827, 827, 827, 827, 827, 827,
1680 827, 827, 827, 153, 827, 154, 827, 827, 827, 827,
1681 827, 153, 153, 153, 99, 827, 99, 827, 99, 827,
1682 99, 827, 827, 99, 99, 827, 99, 744, 827, 827,
1683 827, 827, 827, 827, 827, 827, 827, 99, 827, 101,
1684 827, 827, 827, 827, 827, 99, 99, 99, 153, 827,
1685 153, 827, 153, 827, 153, 827, 827, 153, 153, 827,
1686 163, 739, 743, 827, 827, 827, 827, 827, 827, 827,
1687 827, 153, 827, 154, 827, 827, 827, 827, 827, 153,
1688
1689 163, 153, 153, 827, 153, 827, 153, 827, 153, 827,
1690 827, 153, 153, 827, 163, 747, 743, 827, 827, 827,
1691 827, 827, 827, 827, 827, 153, 827, 154, 827, 827,
1692 827, 827, 827, 153, 163, 153, 166, 827, 166, 827,
1693 827, 827, 827, 827, 827, 827, 827, 827, 754, 827,
1694 755, 755, 755, 755, 755, 755, 827, 827, 827, 827,
1695 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1696 827, 827, 756, 225, 827, 225, 827, 827, 827, 827,
1697 827, 827, 289, 827, 291, 827, 827, 757, 757, 757,
1698 757, 757, 757, 99, 827, 99, 827, 99, 827, 99,
1699
1700 827, 827, 99, 99, 827, 110, 759, 745, 760, 760,
1701 760, 760, 760, 760, 368, 827, 99, 827, 101, 761,
1702 761, 827, 827, 827, 99, 110, 99, 761, 761, 761,
1703 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
1704 761, 761, 747, 827, 761, 761, 761, 761, 761, 761,
1705 827, 153, 827, 153, 827, 153, 827, 153, 827, 827,
1706 153, 153, 827, 248, 747, 743, 827, 827, 827, 827,
1707 827, 827, 827, 827, 153, 827, 154, 827, 827, 827,
1708 827, 827, 153, 248, 153, 153, 827, 153, 827, 153,
1709 827, 153, 827, 827, 153, 153, 827, 248, 747, 743,
1710
1711 827, 827, 827, 827, 827, 827, 827, 827, 153, 827,
1712 154, 827, 827, 827, 827, 827, 153, 248, 153, 739,
1713 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1714 827, 827, 767, 767, 827, 827, 827, 827, 827, 827,
1715 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
1716 767, 767, 767, 767, 767, 99, 827, 99, 827, 99,
1717 827, 99, 827, 827, 99, 99, 827, 123, 768, 745,
1718 827, 827, 827, 827, 827, 827, 827, 827, 99, 827,
1719 101, 827, 827, 827, 827, 827, 99, 123, 99, 99,
1720 827, 99, 827, 99, 827, 99, 827, 827, 99, 99,
1721
1722 827, 188, 768, 745, 769, 769, 769, 769, 769, 769,
1723 827, 827, 99, 827, 101, 769, 769, 827, 827, 827,
1724 99, 188, 99, 770, 770, 770, 770, 770, 770, 770,
1725 770, 770, 770, 770, 770, 770, 770, 770, 99, 827,
1726 99, 827, 99, 827, 99, 827, 827, 99, 99, 827,
1727 123, 768, 745, 771, 771, 771, 771, 771, 771, 269,
1728 827, 99, 827, 101, 769, 769, 827, 827, 827, 99,
1729 123, 99, 769, 769, 769, 769, 769, 769, 769, 769,
1730 769, 769, 769, 769, 769, 769, 769, 183, 183, 183,
1731 183, 183, 183, 827, 827, 827, 827, 827, 183, 827,
1732
1733 827, 827, 827, 827, 827, 827, 183, 183, 183, 183,
1734 183, 153, 827, 827, 153, 153, 153, 153, 153, 153,
1735 153, 827, 153, 827, 153, 827, 153, 827, 827, 153,
1736 153, 827, 827, 130, 153, 827, 827, 827, 827, 827,
1737 827, 827, 827, 153, 827, 154, 827, 827, 827, 827,
1738 827, 153, 827, 153, 153, 827, 153, 827, 153, 827,
1739 153, 827, 827, 153, 153, 827, 827, 827, 153, 827,
1740 827, 827, 827, 827, 827, 827, 827, 153, 827, 154,
1741 827, 827, 827, 827, 827, 153, 827, 153, 153, 827,
1742 827, 782, 782, 782, 782, 782, 782, 827, 827, 827,
1743
1744 827, 827, 827, 827, 827, 827, 827, 604, 130, 783,
1745 784, 784, 784, 784, 784, 784, 166, 827, 166, 827,
1746 827, 827, 827, 827, 827, 827, 827, 827, 787, 827,
1747 788, 788, 788, 788, 788, 788, 827, 827, 827, 827,
1748 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1749 827, 827, 220, 225, 827, 225, 827, 827, 827, 827,
1750 827, 827, 289, 827, 291, 130, 827, 292, 292, 292,
1751 292, 292, 292, 99, 827, 99, 827, 99, 827, 99,
1752 827, 827, 99, 99, 827, 110, 790, 99, 791, 791,
1753 791, 791, 791, 791, 368, 827, 99, 827, 101, 110,
1754
1755 110, 827, 827, 827, 99, 110, 99, 110, 110, 110,
1756 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1757 110, 110, 130, 827, 110, 110, 110, 110, 110, 110,
1758 827, 153, 827, 153, 827, 153, 827, 153, 827, 827,
1759 153, 153, 827, 248, 130, 153, 827, 827, 827, 827,
1760 827, 827, 827, 827, 153, 827, 154, 827, 827, 827,
1761 827, 827, 153, 248, 153, 153, 827, 153, 827, 153,
1762 827, 153, 827, 827, 153, 153, 827, 248, 130, 153,
1763 827, 827, 827, 827, 827, 827, 827, 827, 153, 827,
1764 154, 827, 827, 827, 827, 827, 153, 248, 153, 319,
1765
1766 319, 827, 827, 827, 827, 827, 827, 319, 319, 319,
1767 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1768 319, 319, 18, 18, 18, 18, 18, 18, 18, 18,
1769 18, 18, 18, 18, 18, 18, 18, 18, 18, 24,
1770 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
1771 24, 24, 24, 24, 24, 24, 28, 28, 28, 28,
1772 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1773 28, 28, 28, 38, 38, 38, 38, 38, 38, 38,
1774 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
1775 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1776
1777 41, 41, 41, 41, 41, 41, 41, 64, 64, 64,
1778 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
1779 64, 64, 64, 64, 71, 71, 827, 71, 71, 71,
1780 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
1781 71, 75, 827, 827, 75, 75, 827, 75, 75, 75,
1782 75, 77, 77, 827, 77, 827, 77, 77, 77, 77,
1783 77, 77, 77, 77, 77, 77, 77, 77, 78, 78,
1784 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1785 78, 78, 78, 78, 78, 91, 91, 827, 91, 91,
1786 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
1787
1788 91, 91, 94, 94, 827, 94, 94, 94, 94, 94,
1789 94, 94, 94, 94, 94, 94, 94, 94, 94, 96,
1790 96, 827, 96, 96, 96, 96, 96, 96, 96, 96,
1791 96, 96, 96, 96, 96, 96, 97, 827, 827, 827,
1792 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1793 97, 97, 97, 98, 98, 827, 98, 98, 98, 98,
1794 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1795 99, 827, 99, 827, 827, 827, 99, 99, 99, 99,
1796 99, 827, 99, 99, 99, 99, 99, 104, 104, 827,
1797 827, 827, 104, 104, 104, 104, 104, 104, 104, 827,
1798
1799 104, 104, 104, 104, 105, 105, 105, 105, 105, 105,
1800 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1801 105, 113, 113, 113, 827, 827, 113, 113, 827, 113,
1802 116, 827, 116, 827, 827, 827, 116, 116, 116, 116,
1803 116, 827, 116, 116, 116, 116, 116, 141, 141, 827,
1804 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
1805 141, 141, 141, 141, 153, 827, 153, 827, 827, 827,
1806 153, 153, 827, 153, 153, 827, 153, 153, 153, 153,
1807 153, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1808 158, 158, 158, 158, 158, 158, 158, 158, 165, 165,
1809
1810 165, 827, 827, 165, 165, 827, 165, 169, 827, 169,
1811 827, 827, 827, 169, 169, 169, 169, 169, 827, 169,
1812 169, 169, 169, 169, 171, 827, 171, 827, 827, 827,
1813 171, 171, 171, 171, 171, 827, 171, 171, 171, 171,
1814 171, 182, 182, 827, 827, 182, 827, 827, 182, 183,
1815 827, 183, 827, 827, 827, 183, 183, 183, 183, 183,
1816 827, 183, 183, 183, 183, 183, 141, 141, 827, 141,
1817 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
1818 141, 141, 141, 221, 221, 221, 827, 827, 221, 221,
1819 827, 221, 229, 827, 229, 827, 827, 827, 229, 229,
1820
1821 229, 229, 229, 827, 229, 229, 229, 229, 229, 230,
1822 827, 230, 827, 827, 827, 230, 230, 230, 230, 230,
1823 827, 230, 230, 230, 230, 230, 245, 245, 245, 827,
1824 245, 827, 827, 245, 249, 827, 249, 827, 827, 827,
1825 249, 249, 249, 249, 249, 827, 249, 249, 249, 249,
1826 249, 283, 827, 283, 827, 827, 827, 283, 283, 827,
1827 283, 283, 827, 283, 283, 283, 283, 283, 285, 827,
1828 827, 285, 827, 827, 285, 285, 285, 285, 293, 293,
1829 293, 827, 827, 293, 293, 827, 293, 294, 827, 294,
1830 827, 827, 294, 294, 827, 827, 294, 298, 827, 298,
1831
1832 827, 827, 827, 298, 298, 298, 298, 298, 827, 298,
1833 298, 298, 298, 298, 300, 827, 300, 827, 827, 827,
1834 300, 300, 300, 300, 300, 827, 300, 300, 300, 300,
1835 300, 313, 313, 827, 313, 827, 827, 313, 317, 317,
1836 317, 827, 317, 827, 827, 317, 318, 827, 827, 318,
1837 827, 827, 318, 320, 827, 320, 827, 827, 827, 320,
1838 320, 320, 320, 320, 827, 320, 320, 320, 320, 320,
1839 321, 827, 321, 827, 827, 827, 321, 321, 321, 321,
1840 321, 827, 321, 321, 321, 321, 321, 324, 827, 324,
1841 827, 827, 827, 324, 324, 324, 324, 324, 324, 324,
1842
1843 324, 324, 324, 324, 99, 827, 99, 827, 827, 827,
1844 99, 99, 99, 99, 99, 827, 99, 99, 99, 99,
1845 99, 283, 827, 283, 827, 827, 827, 283, 283, 283,
1846 283, 283, 827, 283, 283, 283, 283, 283, 285, 285,
1847 827, 285, 827, 827, 285, 285, 285, 285, 153, 827,
1848 153, 827, 827, 827, 153, 153, 153, 153, 153, 827,
1849 153, 153, 153, 153, 153, 351, 351, 351, 827, 827,
1850 351, 351, 827, 351, 356, 827, 356, 827, 827, 827,
1851 356, 356, 356, 356, 356, 827, 356, 356, 356, 356,
1852 356, 357, 827, 357, 827, 827, 827, 357, 357, 357,
1853
1854 357, 357, 827, 357, 357, 357, 357, 357, 372, 372,
1855 827, 372, 827, 827, 372, 374, 374, 374, 827, 374,
1856 827, 827, 374, 375, 375, 375, 827, 375, 827, 827,
1857 375, 377, 827, 377, 827, 827, 827, 377, 377, 377,
1858 377, 377, 827, 377, 377, 377, 377, 377, 380, 827,
1859 380, 827, 827, 827, 380, 380, 380, 380, 380, 827,
1860 380, 380, 380, 380, 380, 412, 827, 827, 412, 827,
1861 827, 412, 412, 412, 412, 415, 415, 415, 827, 827,
1862 415, 415, 827, 415, 419, 827, 419, 827, 827, 827,
1863 419, 419, 419, 419, 419, 827, 419, 419, 419, 419,
1864
1865 419, 421, 827, 421, 827, 827, 827, 421, 421, 421,
1866 421, 421, 827, 421, 421, 421, 421, 421, 435, 435,
1867 827, 435, 827, 827, 435, 436, 436, 827, 436, 827,
1868 827, 436, 437, 437, 437, 827, 437, 827, 827, 437,
1869 438, 827, 827, 438, 827, 827, 438, 439, 827, 439,
1870 827, 827, 827, 439, 439, 439, 439, 439, 827, 439,
1871 439, 439, 439, 439, 442, 827, 442, 827, 827, 827,
1872 442, 442, 442, 442, 442, 827, 442, 442, 442, 442,
1873 442, 473, 473, 473, 827, 827, 473, 473, 827, 473,
1874 478, 827, 478, 827, 827, 827, 478, 478, 478, 478,
1875
1876 478, 827, 478, 478, 478, 478, 478, 479, 827, 479,
1877 827, 827, 827, 479, 479, 479, 479, 479, 827, 479,
1878 479, 479, 479, 479, 493, 493, 827, 493, 827, 827,
1879 493, 494, 494, 827, 494, 827, 827, 494, 496, 496,
1880 496, 827, 496, 827, 827, 496, 497, 497, 497, 827,
1881 497, 827, 827, 497, 499, 827, 499, 827, 827, 827,
1882 499, 499, 499, 499, 499, 827, 499, 499, 499, 499,
1883 499, 502, 827, 502, 827, 827, 827, 502, 502, 502,
1884 502, 502, 827, 502, 502, 502, 502, 502, 512, 827,
1885 827, 512, 827, 827, 512, 512, 512, 512, 517, 827,
1886
1887 827, 517, 827, 827, 517, 517, 517, 517, 537, 537,
1888 537, 827, 827, 537, 537, 827, 537, 541, 827, 541,
1889 827, 827, 827, 541, 541, 541, 541, 541, 827, 541,
1890 541, 541, 541, 541, 543, 827, 543, 827, 827, 827,
1891 543, 543, 543, 543, 543, 827, 543, 543, 543, 543,
1892 543, 544, 827, 544, 827, 827, 827, 544, 544, 544,
1893 544, 544, 827, 544, 544, 544, 544, 544, 559, 559,
1894 827, 559, 827, 827, 559, 560, 560, 827, 560, 827,
1895 827, 560, 561, 561, 561, 827, 561, 827, 827, 561,
1896 562, 827, 827, 562, 827, 827, 562, 563, 827, 563,
1897
1898 827, 827, 827, 563, 563, 563, 563, 563, 827, 563,
1899 563, 563, 563, 563, 566, 827, 566, 827, 827, 827,
1900 566, 566, 566, 566, 566, 827, 566, 566, 566, 566,
1901 566, 571, 827, 827, 571, 827, 827, 571, 571, 571,
1902 571, 589, 827, 827, 589, 827, 827, 589, 589, 589,
1903 589, 594, 594, 594, 827, 827, 594, 594, 827, 594,
1904 599, 827, 599, 827, 827, 827, 599, 599, 599, 599,
1905 599, 827, 599, 599, 599, 599, 599, 600, 827, 600,
1906 827, 827, 827, 600, 600, 600, 600, 600, 827, 600,
1907 600, 600, 600, 600, 602, 827, 602, 827, 827, 827,
1908
1909 602, 602, 602, 602, 602, 827, 602, 602, 602, 602,
1910 602, 613, 827, 613, 827, 827, 827, 827, 827, 827,
1911 613, 617, 617, 827, 617, 827, 827, 617, 618, 618,
1912 827, 618, 827, 827, 618, 620, 620, 620, 827, 620,
1913 827, 827, 620, 621, 621, 621, 827, 621, 827, 827,
1914 621, 623, 827, 623, 827, 827, 827, 623, 623, 623,
1915 623, 623, 827, 623, 623, 623, 623, 623, 626, 827,
1916 626, 827, 827, 827, 626, 626, 626, 626, 626, 827,
1917 626, 626, 626, 626, 626, 632, 827, 827, 632, 827,
1918 827, 632, 632, 632, 632, 635, 827, 827, 635, 827,
1919
1920 827, 635, 635, 635, 635, 637, 827, 827, 637, 827,
1921 827, 637, 637, 637, 637, 652, 652, 652, 827, 827,
1922 652, 652, 827, 652, 656, 827, 656, 827, 827, 827,
1923 656, 656, 656, 656, 656, 827, 656, 656, 656, 656,
1924 656, 658, 827, 658, 827, 827, 827, 658, 658, 658,
1925 658, 658, 827, 658, 658, 658, 658, 658, 659, 827,
1926 659, 827, 827, 827, 659, 659, 659, 659, 659, 827,
1927 659, 659, 659, 659, 659, 153, 827, 153, 827, 827,
1928 827, 153, 153, 153, 153, 153, 827, 153, 153, 153,
1929 153, 153, 676, 676, 827, 676, 827, 827, 676, 677,
1930
1931 677, 827, 677, 827, 827, 677, 678, 678, 678, 827,
1932 678, 827, 827, 678, 679, 827, 827, 679, 827, 827,
1933 679, 680, 827, 680, 827, 827, 827, 680, 680, 680,
1934 680, 680, 827, 680, 680, 680, 680, 680, 683, 827,
1935 683, 827, 827, 827, 683, 683, 683, 683, 683, 827,
1936 683, 683, 683, 683, 683, 696, 696, 696, 827, 827,
1937 696, 696, 827, 696, 701, 827, 701, 827, 827, 827,
1938 701, 701, 701, 701, 701, 827, 701, 701, 701, 701,
1939 701, 702, 827, 702, 827, 827, 827, 702, 702, 702,
1940 702, 702, 827, 702, 702, 702, 702, 702, 704, 827,
1941
1942 704, 827, 827, 827, 704, 704, 704, 704, 704, 827,
1943 704, 704, 704, 704, 704, 719, 719, 827, 719, 827,
1944 827, 719, 720, 720, 827, 720, 827, 827, 720, 722,
1945 722, 722, 827, 722, 827, 827, 722, 723, 723, 723,
1946 827, 723, 827, 827, 723, 725, 827, 725, 827, 827,
1947 827, 725, 725, 725, 725, 725, 827, 725, 725, 725,
1948 725, 725, 728, 827, 728, 827, 827, 827, 728, 728,
1949 728, 728, 728, 827, 728, 728, 728, 728, 728, 739,
1950 739, 739, 827, 827, 739, 739, 827, 739, 743, 827,
1951 743, 827, 827, 827, 743, 743, 743, 743, 743, 827,
1952
1953 743, 743, 743, 743, 743, 745, 827, 745, 827, 827,
1954 827, 745, 745, 745, 745, 745, 827, 745, 745, 745,
1955 745, 745, 746, 827, 746, 827, 827, 827, 746, 746,
1956 746, 746, 746, 827, 746, 746, 746, 746, 746, 762,
1957 762, 827, 762, 827, 827, 762, 763, 763, 827, 763,
1958 827, 827, 763, 764, 764, 764, 827, 764, 827, 827,
1959 764, 765, 827, 827, 765, 827, 827, 765, 766, 827,
1960 766, 827, 827, 827, 766, 766, 766, 766, 766, 827,
1961 766, 766, 766, 766, 766, 769, 827, 769, 827, 827,
1962 827, 769, 769, 769, 769, 769, 827, 769, 769, 769,
1963
1964 769, 769, 773, 827, 827, 773, 827, 827, 773, 773,
1965 773, 773, 777, 827, 827, 777, 827, 827, 777, 777,
1966 777, 777, 780, 827, 827, 780, 827, 827, 780, 780,
1967 780, 780, 781, 827, 781, 827, 827, 827, 827, 827,
1968 827, 781, 827, 827, 827, 827, 827, 781, 294, 827,
1969 294, 827, 827, 294, 294, 827, 827, 294, 99, 827,
1970 99, 827, 827, 827, 99, 99, 99, 99, 99, 827,
1971 99, 99, 99, 99, 99, 163, 827, 163, 827, 827,
1972 827, 163, 163, 163, 163, 163, 827, 163, 163, 163,
1973 163, 163, 792, 792, 827, 792, 827, 827, 792, 793,
1974
1975 793, 827, 793, 827, 827, 793, 795, 795, 795, 827,
1976 795, 827, 827, 795, 796, 796, 796, 827, 796, 827,
1977 827, 796, 320, 827, 320, 827, 827, 827, 320, 320,
1978 320, 320, 320, 827, 320, 320, 320, 320, 320, 800,
1979 800, 827, 800, 827, 827, 800, 801, 801, 827, 801,
1980 827, 827, 801, 802, 802, 802, 827, 802, 827, 827,
1981 802, 803, 827, 827, 803, 827, 827, 803, 805, 805,
1982 827, 805, 827, 827, 805, 807, 807, 827, 827, 807,
1983 827, 827, 807, 808, 808, 808, 827, 808, 827, 827,
1984 808, 809, 809, 827, 827, 809, 827, 827, 809, 813,
1985
1986 813, 827, 827, 813, 827, 827, 813, 814, 814, 827,
1987 827, 814, 827, 827, 814, 819, 819, 827, 827, 819,
1988 827, 827, 819, 820, 820, 827, 827, 820, 827, 827,
1989 820, 17, 827, 827, 827, 827, 827, 827, 827, 827,
1990 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1991 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1992 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1993 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1994 827
1995 } ;
1996
1997 static yyconst short int yy_chk[11282] =
1998 { 0,
1999 0, 0, 1, 14, 14, 14, 1, 2, 2, 2,
2000 3, 4, 2, 3, 4, 7, 7, 7, 0, 23,
2001 7, 8, 8, 8, 823, 29, 8, 29, 23, 9,
2002 9, 9, 2, 2, 9, 34, 34, 3, 4, 23,
2003 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2004 2, 2, 2, 2, 2, 5, 5, 5, 5, 820,
2005 5, 5, 819, 5, 5, 814, 5, 5, 5, 10,
2006 10, 10, 36, 36, 10, 44, 5, 5, 5, 21,
2007 21, 21, 5, 6, 6, 6, 6, 44, 6, 6,
2008 99, 6, 6, 813, 6, 6, 6, 39, 30, 39,
2009
2010 30, 60, 99, 30, 6, 6, 6, 30, 60, 809,
2011 6, 11, 11, 11, 11, 11, 11, 11, 11, 11,
2012 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
2013 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
2014 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
2015 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
2016 15, 807, 15, 15, 15, 15, 15, 15, 42, 43,
2017 42, 43, 45, 59, 45, 59, 62, 62, 15, 16,
2018 805, 16, 16, 16, 16, 16, 16, 52, 52, 52,
2019 52, 52, 52, 66, 66, 66, 102, 16, 27, 27,
2020
2021 27, 27, 27, 27, 61, 46, 61, 46, 102, 86,
2022 46, 86, 61, 95, 46, 95, 803, 46, 27, 182,
2023 450, 27, 72, 72, 72, 27, 182, 103, 27, 46,
2024 27, 48, 48, 48, 98, 48, 98, 48, 48, 103,
2025 450, 48, 58, 48, 58, 58, 58, 58, 58, 58,
2026 271, 48, 48, 801, 48, 48, 800, 146, 48, 48,
2027 48, 50, 74, 50, 50, 50, 50, 50, 50, 146,
2028 148, 74, 148, 50, 51, 271, 51, 267, 51, 533,
2029 51, 533, 74, 51, 51, 267, 51, 51, 51, 51,
2030 51, 51, 51, 51, 51, 335, 335, 51, 794, 51,
2031
2032 51, 51, 87, 87, 87, 51, 51, 51, 51, 51,
2033 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
2034 51, 51, 51, 53, 166, 53, 166, 53, 793, 53,
2035 424, 424, 53, 53, 792, 53, 53, 68, 75, 68,
2036 68, 68, 68, 68, 68, 789, 53, 75, 53, 142,
2037 142, 142, 147, 153, 53, 53, 53, 54, 75, 54,
2038 166, 54, 783, 54, 147, 153, 54, 54, 778, 54,
2039 54, 54, 54, 54, 54, 54, 54, 54, 54, 555,
2040 54, 555, 54, 54, 54, 151, 151, 151, 54, 54,
2041 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
2042
2043 54, 54, 54, 54, 54, 54, 56, 245, 56, 278,
2044 56, 775, 56, 273, 245, 56, 56, 278, 56, 56,
2045 56, 56, 56, 56, 56, 56, 56, 56, 329, 56,
2046 774, 56, 56, 56, 763, 273, 329, 56, 56, 56,
2047 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
2048 56, 56, 56, 56, 56, 57, 57, 57, 57, 57,
2049 57, 57, 762, 455, 484, 484, 57, 69, 69, 69,
2050 69, 69, 69, 317, 57, 57, 57, 57, 57, 70,
2051 317, 70, 70, 455, 70, 70, 70, 70, 70, 70,
2052 79, 79, 79, 79, 79, 79, 80, 80, 80, 80,
2053
2054 80, 80, 101, 318, 101, 810, 101, 810, 101, 750,
2055 318, 101, 101, 330, 101, 101, 101, 101, 101, 101,
2056 101, 101, 101, 330, 334, 101, 737, 101, 101, 101,
2057 549, 549, 334, 101, 101, 101, 101, 101, 101, 101,
2058 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
2059 101, 105, 105, 105, 740, 105, 740, 105, 105, 666,
2060 666, 105, 110, 105, 110, 110, 110, 110, 110, 110,
2061 374, 105, 105, 735, 105, 105, 397, 374, 105, 105,
2062 105, 106, 106, 106, 397, 106, 507, 106, 106, 732,
2063 740, 106, 721, 106, 126, 126, 126, 126, 126, 126,
2064
2065 375, 106, 106, 720, 106, 106, 507, 375, 106, 106,
2066 106, 107, 107, 107, 107, 107, 107, 107, 107, 107,
2067 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
2068 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
2069 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
2070 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
2071 108, 108, 108, 108, 108, 108, 403, 222, 719, 222,
2072 108, 111, 437, 111, 403, 111, 222, 111, 222, 437,
2073 111, 111, 344, 111, 695, 111, 111, 111, 111, 111,
2074 111, 111, 344, 344, 111, 694, 111, 111, 111, 752,
2075
2076 752, 511, 111, 111, 111, 111, 111, 111, 111, 111,
2077 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
2078 114, 511, 114, 130, 130, 130, 130, 130, 130, 164,
2079 693, 164, 463, 692, 114, 114, 114, 114, 114, 114,
2080 131, 164, 463, 131, 131, 131, 131, 131, 131, 145,
2081 145, 145, 145, 145, 145, 438, 114, 115, 516, 115,
2082 409, 115, 438, 115, 691, 164, 115, 115, 409, 115,
2083 115, 149, 149, 149, 149, 149, 149, 688, 516, 458,
2084 115, 687, 115, 225, 174, 225, 174, 458, 115, 115,
2085 115, 116, 225, 116, 225, 116, 174, 116, 529, 685,
2086
2087 116, 116, 468, 116, 116, 150, 150, 150, 150, 150,
2088 150, 459, 468, 468, 116, 459, 116, 227, 529, 227,
2089 174, 459, 116, 116, 116, 117, 227, 117, 227, 117,
2090 677, 117, 676, 570, 117, 117, 672, 117, 117, 117,
2091 117, 117, 117, 117, 117, 117, 462, 467, 117, 664,
2092 117, 117, 117, 570, 462, 467, 117, 117, 117, 117,
2093 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
2094 117, 117, 117, 117, 118, 496, 118, 526, 118, 651,
2095 118, 650, 496, 118, 118, 526, 118, 118, 118, 118,
2096 118, 118, 118, 118, 118, 118, 497, 118, 649, 118,
2097
2098 118, 118, 647, 497, 646, 118, 118, 118, 118, 118,
2099 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
2100 118, 118, 118, 119, 119, 119, 119, 119, 119, 119,
2101 785, 785, 645, 155, 119, 155, 155, 155, 155, 155,
2102 155, 561, 119, 119, 119, 119, 119, 120, 561, 120,
2103 120, 120, 120, 120, 120, 120, 121, 121, 121, 121,
2104 121, 121, 121, 574, 641, 512, 160, 121, 160, 160,
2105 160, 160, 160, 160, 512, 121, 121, 121, 121, 121,
2106 123, 562, 123, 574, 123, 512, 123, 640, 562, 123,
2107 123, 633, 123, 123, 123, 163, 629, 163, 163, 163,
2108
2109 163, 163, 163, 123, 619, 123, 297, 236, 297, 236,
2110 618, 123, 123, 123, 124, 297, 124, 297, 124, 236,
2111 124, 617, 576, 124, 124, 592, 124, 124, 124, 124,
2112 124, 124, 124, 124, 124, 591, 587, 124, 586, 124,
2113 124, 124, 576, 236, 577, 124, 124, 124, 124, 124,
2114 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
2115 124, 124, 124, 125, 577, 125, 585, 125, 581, 125,
2116 580, 588, 125, 125, 575, 125, 125, 125, 125, 125,
2117 125, 125, 125, 125, 125, 620, 125, 572, 125, 125,
2118 125, 588, 620, 560, 125, 125, 125, 125, 125, 125,
2119
2120 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
2121 125, 125, 127, 621, 127, 559, 127, 547, 127, 535,
2122 621, 127, 127, 532, 127, 127, 127, 127, 127, 127,
2123 127, 127, 127, 127, 678, 127, 531, 127, 127, 127,
2124 530, 678, 528, 127, 127, 127, 127, 127, 127, 127,
2125 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
2126 127, 128, 128, 128, 128, 128, 128, 128, 525, 522,
2127 521, 520, 128, 179, 179, 179, 179, 179, 179, 518,
2128 128, 128, 128, 128, 128, 129, 129, 129, 129, 129,
2129 129, 129, 631, 515, 517, 514, 129, 181, 181, 181,
2130
2131 181, 181, 181, 517, 129, 129, 129, 129, 129, 154,
2132 634, 154, 631, 154, 517, 154, 513, 636, 154, 154,
2133 509, 154, 154, 154, 154, 154, 154, 154, 154, 154,
2134 634, 679, 154, 495, 154, 154, 154, 636, 679, 494,
2135 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
2136 154, 154, 154, 154, 154, 154, 154, 154, 158, 158,
2137 158, 493, 158, 731, 158, 158, 466, 465, 158, 456,
2138 158, 196, 196, 196, 196, 196, 196, 196, 158, 158,
2139 454, 158, 158, 731, 453, 158, 158, 158, 159, 159,
2140 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
2141
2142 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
2143 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
2144 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
2145 159, 159, 159, 159, 159, 159, 159, 162, 571, 162,
2146 207, 207, 207, 207, 207, 207, 452, 571, 307, 162,
2147 307, 162, 162, 162, 162, 162, 162, 307, 571, 307,
2148 448, 162, 209, 209, 209, 209, 209, 209, 316, 316,
2149 316, 316, 316, 162, 167, 210, 167, 210, 210, 210,
2150 210, 210, 210, 818, 818, 818, 818, 818, 167, 167,
2151 167, 167, 167, 167, 214, 214, 214, 214, 214, 214,
2152
2153 215, 722, 215, 215, 215, 215, 215, 215, 722, 436,
2154 167, 168, 589, 168, 218, 218, 218, 218, 218, 218,
2155 168, 589, 168, 435, 662, 168, 168, 168, 168, 168,
2156 168, 169, 589, 169, 427, 169, 662, 169, 413, 745,
2157 169, 169, 412, 169, 169, 226, 226, 226, 226, 226,
2158 226, 745, 632, 781, 169, 781, 169, 354, 308, 354,
2159 308, 632, 169, 169, 169, 170, 354, 170, 354, 170,
2160 308, 170, 632, 723, 170, 170, 406, 170, 170, 233,
2161 723, 233, 233, 233, 233, 233, 233, 736, 170, 781,
2162 170, 365, 405, 365, 308, 404, 170, 170, 170, 171,
2163
2164 365, 171, 365, 171, 393, 171, 392, 736, 171, 171,
2165 391, 171, 171, 235, 235, 235, 235, 235, 235, 390,
2166 635, 738, 171, 389, 171, 386, 366, 385, 366, 635,
2167 171, 171, 171, 172, 172, 172, 172, 172, 366, 172,
2168 635, 738, 172, 172, 373, 172, 172, 172, 172, 172,
2169 172, 172, 172, 172, 764, 372, 172, 371, 172, 172,
2170 172, 764, 366, 772, 172, 172, 172, 172, 172, 172,
2171 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
2172 172, 172, 173, 772, 173, 242, 242, 242, 242, 242,
2173 242, 333, 332, 313, 173, 303, 173, 173, 173, 173,
2174
2175 173, 173, 243, 243, 243, 243, 243, 243, 244, 244,
2176 244, 244, 244, 244, 285, 765, 269, 795, 173, 175,
2177 269, 175, 765, 175, 795, 175, 269, 269, 175, 175,
2178 280, 175, 175, 175, 175, 175, 175, 175, 175, 175,
2179 175, 796, 175, 279, 175, 175, 175, 275, 796, 776,
2180 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
2181 175, 175, 175, 175, 175, 175, 175, 175, 176, 776,
2182 176, 176, 176, 176, 176, 176, 176, 177, 177, 177,
2183 177, 177, 177, 177, 272, 264, 241, 239, 177, 256,
2184 256, 256, 256, 256, 256, 216, 177, 177, 177, 177,
2185
2186 177, 178, 178, 178, 178, 178, 178, 178, 779, 211,
2187 205, 204, 178, 257, 257, 257, 257, 257, 257, 257,
2188 178, 178, 178, 178, 178, 183, 802, 183, 779, 183,
2189 202, 183, 201, 802, 183, 183, 200, 183, 183, 183,
2190 258, 258, 258, 258, 258, 258, 637, 199, 183, 198,
2191 183, 418, 431, 418, 431, 637, 183, 183, 183, 184,
2192 418, 184, 418, 184, 431, 184, 637, 197, 184, 184,
2193 180, 184, 184, 184, 259, 259, 259, 259, 259, 259,
2194 808, 161, 184, 157, 184, 156, 144, 808, 431, 140,
2195 184, 184, 184, 185, 260, 260, 260, 260, 260, 260,
2196
2197 260, 139, 138, 137, 136, 135, 185, 185, 261, 261,
2198 261, 261, 261, 261, 185, 185, 185, 185, 185, 185,
2199 185, 185, 185, 185, 185, 185, 185, 185, 185, 186,
2200 134, 186, 133, 186, 132, 186, 122, 104, 186, 186,
2201 100, 186, 186, 186, 186, 186, 186, 186, 186, 186,
2202 186, 93, 186, 92, 186, 186, 186, 63, 55, 37,
2203 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
2204 186, 186, 186, 186, 186, 186, 186, 186, 187, 187,
2205 187, 187, 187, 187, 187, 35, 33, 31, 17, 187,
2206 262, 262, 262, 262, 262, 262, 262, 187, 187, 187,
2207
2208 187, 187, 188, 188, 263, 263, 263, 263, 263, 263,
2209 263, 268, 268, 268, 268, 268, 268, 268, 13, 0,
2210 0, 0, 188, 0, 188, 188, 188, 188, 188, 188,
2211 188, 188, 188, 188, 188, 188, 188, 188, 188, 189,
2212 0, 189, 0, 189, 0, 189, 0, 0, 189, 189,
2213 0, 189, 189, 189, 189, 189, 189, 189, 189, 189,
2214 189, 0, 189, 0, 189, 189, 189, 0, 0, 0,
2215 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
2216 189, 189, 189, 189, 189, 189, 189, 189, 190, 0,
2217 190, 0, 190, 0, 190, 0, 0, 190, 190, 0,
2218
2219 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
2220 0, 190, 0, 190, 190, 190, 0, 0, 0, 190,
2221 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
2222 190, 190, 190, 190, 190, 190, 190, 191, 191, 191,
2223 191, 191, 191, 191, 0, 0, 0, 0, 191, 281,
2224 281, 281, 281, 281, 281, 0, 191, 191, 191, 191,
2225 191, 194, 194, 194, 194, 194, 194, 194, 0, 0,
2226 773, 286, 194, 286, 286, 286, 286, 286, 286, 773,
2227 194, 194, 194, 194, 194, 195, 0, 195, 0, 195,
2228 773, 195, 0, 0, 195, 195, 0, 195, 195, 195,
2229
2230 195, 195, 195, 195, 195, 195, 0, 0, 195, 0,
2231 195, 195, 195, 0, 0, 0, 195, 195, 195, 195,
2232 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2233 195, 195, 195, 195, 203, 0, 203, 0, 203, 0,
2234 203, 0, 0, 203, 203, 0, 203, 203, 203, 203,
2235 203, 203, 203, 203, 203, 0, 0, 203, 0, 203,
2236 203, 203, 0, 0, 0, 203, 203, 203, 203, 203,
2237 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
2238 203, 203, 203, 208, 0, 208, 777, 0, 208, 208,
2239 208, 208, 208, 208, 212, 777, 212, 0, 212, 0,
2240
2241 212, 0, 0, 212, 212, 0, 777, 288, 212, 288,
2242 288, 288, 288, 288, 288, 0, 0, 212, 0, 212,
2243 430, 0, 430, 0, 476, 212, 476, 212, 213, 430,
2244 213, 430, 213, 476, 213, 476, 0, 213, 213, 0,
2245 780, 0, 213, 213, 213, 213, 213, 213, 213, 780,
2246 0, 213, 0, 213, 0, 0, 0, 0, 0, 213,
2247 780, 213, 217, 217, 217, 217, 217, 217, 217, 217,
2248 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2249 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2250 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2251
2252 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2253 217, 219, 0, 219, 294, 294, 294, 294, 294, 294,
2254 219, 0, 219, 0, 0, 219, 219, 219, 219, 219,
2255 219, 302, 0, 302, 302, 302, 302, 302, 302, 306,
2256 0, 306, 306, 306, 306, 306, 306, 219, 220, 0,
2257 220, 312, 312, 312, 312, 312, 312, 220, 0, 220,
2258 220, 0, 220, 220, 220, 220, 220, 220, 223, 0,
2259 223, 315, 315, 315, 315, 315, 315, 0, 0, 0,
2260 0, 0, 223, 223, 223, 223, 223, 223, 326, 326,
2261 326, 326, 326, 326, 327, 327, 327, 327, 327, 327,
2262
2263 0, 0, 0, 0, 223, 224, 0, 224, 328, 328,
2264 328, 328, 328, 328, 224, 0, 224, 0, 0, 224,
2265 224, 224, 224, 224, 224, 228, 0, 228, 0, 228,
2266 0, 228, 0, 0, 228, 228, 0, 228, 228, 331,
2267 331, 331, 331, 331, 331, 331, 0, 0, 228, 0,
2268 228, 489, 490, 489, 490, 0, 228, 228, 228, 229,
2269 489, 229, 489, 229, 490, 229, 0, 0, 229, 229,
2270 0, 229, 229, 336, 0, 336, 336, 336, 336, 336,
2271 336, 0, 229, 0, 229, 540, 0, 540, 490, 0,
2272 229, 229, 229, 230, 540, 230, 540, 230, 0, 230,
2273
2274 0, 0, 230, 230, 0, 230, 230, 337, 337, 337,
2275 337, 337, 337, 0, 0, 0, 230, 0, 230, 554,
2276 556, 554, 556, 0, 230, 230, 230, 231, 554, 231,
2277 554, 231, 556, 231, 0, 0, 231, 231, 0, 231,
2278 231, 231, 231, 231, 231, 231, 231, 231, 0, 0,
2279 231, 0, 231, 231, 231, 0, 556, 0, 231, 231,
2280 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
2281 231, 231, 231, 231, 231, 231, 232, 0, 232, 339,
2282 339, 339, 339, 339, 339, 0, 0, 0, 232, 0,
2283 232, 232, 232, 232, 232, 232, 346, 346, 346, 346,
2284
2285 346, 346, 347, 0, 347, 347, 347, 347, 347, 347,
2286 339, 0, 232, 234, 0, 234, 349, 349, 349, 349,
2287 349, 349, 234, 0, 234, 234, 0, 234, 234, 234,
2288 234, 234, 234, 237, 0, 237, 0, 237, 0, 237,
2289 0, 0, 237, 237, 0, 237, 237, 237, 237, 237,
2290 237, 237, 237, 237, 237, 0, 237, 0, 237, 237,
2291 237, 0, 0, 0, 237, 237, 237, 237, 237, 237,
2292 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
2293 237, 237, 238, 0, 238, 238, 238, 238, 238, 238,
2294 238, 240, 240, 240, 240, 240, 240, 240, 0, 0,
2295
2296 0, 350, 240, 350, 350, 350, 350, 350, 350, 0,
2297 240, 240, 240, 240, 240, 247, 0, 247, 0, 247,
2298 0, 247, 0, 0, 247, 247, 0, 247, 0, 247,
2299 247, 247, 247, 247, 247, 247, 0, 0, 247, 0,
2300 247, 247, 247, 0, 0, 0, 247, 247, 247, 247,
2301 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
2302 247, 247, 247, 247, 248, 0, 248, 0, 248, 0,
2303 248, 0, 0, 248, 248, 0, 248, 248, 248, 359,
2304 0, 359, 359, 359, 359, 359, 359, 248, 0, 248,
2305 597, 614, 597, 614, 0, 248, 248, 248, 249, 597,
2306
2307 249, 597, 249, 614, 249, 0, 0, 249, 249, 0,
2308 249, 249, 249, 360, 0, 360, 360, 360, 360, 360,
2309 360, 249, 0, 249, 612, 0, 612, 614, 0, 249,
2310 249, 249, 250, 612, 250, 612, 250, 0, 250, 0,
2311 0, 250, 250, 0, 250, 250, 250, 361, 361, 361,
2312 361, 361, 361, 0, 0, 250, 0, 250, 655, 673,
2313 655, 673, 0, 250, 250, 250, 251, 655, 251, 655,
2314 251, 673, 251, 0, 0, 251, 251, 0, 251, 251,
2315 251, 251, 251, 251, 251, 251, 251, 0, 0, 251,
2316 0, 251, 251, 251, 0, 673, 0, 251, 251, 251,
2317
2318 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
2319 251, 251, 251, 251, 251, 252, 0, 252, 0, 252,
2320 0, 252, 0, 0, 252, 252, 0, 252, 252, 252,
2321 362, 362, 362, 362, 362, 362, 252, 0, 252, 0,
2322 252, 671, 716, 671, 716, 0, 252, 252, 252, 253,
2323 671, 253, 671, 253, 716, 253, 0, 0, 253, 253,
2324 0, 253, 253, 253, 368, 368, 368, 368, 368, 368,
2325 253, 0, 253, 0, 253, 699, 0, 699, 716, 0,
2326 253, 253, 253, 254, 699, 254, 699, 254, 0, 254,
2327 0, 0, 254, 254, 0, 254, 254, 254, 254, 254,
2328
2329 254, 254, 254, 254, 0, 0, 254, 0, 254, 254,
2330 254, 0, 0, 0, 254, 254, 254, 254, 254, 254,
2331 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
2332 254, 254, 255, 0, 255, 0, 255, 0, 255, 0,
2333 0, 255, 255, 0, 255, 255, 255, 255, 255, 255,
2334 255, 255, 255, 255, 0, 255, 0, 255, 255, 255,
2335 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
2336 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
2337 255, 265, 0, 265, 0, 265, 0, 265, 0, 0,
2338 265, 265, 0, 265, 265, 265, 265, 265, 265, 265,
2339
2340 265, 265, 0, 0, 265, 0, 265, 265, 265, 0,
2341 0, 0, 265, 265, 265, 265, 265, 265, 265, 265,
2342 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2343 266, 266, 370, 370, 370, 370, 370, 370, 370, 266,
2344 382, 382, 382, 382, 382, 382, 0, 0, 0, 0,
2345 266, 0, 266, 266, 266, 266, 266, 266, 266, 266,
2346 266, 266, 266, 266, 266, 266, 266, 270, 0, 0,
2347 270, 270, 270, 270, 270, 270, 270, 274, 0, 274,
2348 274, 274, 274, 274, 274, 0, 0, 0, 0, 0,
2349 274, 383, 383, 383, 383, 383, 383, 0, 274, 274,
2350
2351 274, 274, 274, 276, 0, 276, 0, 276, 0, 276,
2352 0, 0, 276, 276, 0, 276, 276, 276, 276, 276,
2353 276, 276, 276, 276, 0, 0, 276, 0, 276, 276,
2354 276, 0, 0, 0, 276, 276, 276, 276, 276, 276,
2355 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
2356 276, 276, 277, 277, 384, 384, 384, 384, 384, 384,
2357 0, 277, 387, 387, 387, 387, 387, 387, 387, 0,
2358 0, 0, 277, 0, 277, 277, 277, 277, 277, 277,
2359 277, 277, 277, 277, 277, 277, 277, 277, 277, 282,
2360 0, 282, 282, 282, 282, 282, 282, 0, 714, 0,
2361
2362 714, 282, 283, 0, 283, 0, 283, 714, 283, 714,
2363 0, 283, 283, 0, 388, 283, 283, 388, 388, 388,
2364 388, 388, 388, 0, 0, 283, 0, 283, 741, 0,
2365 741, 0, 757, 283, 757, 283, 284, 741, 284, 741,
2366 284, 757, 284, 757, 0, 284, 284, 0, 0, 284,
2367 284, 284, 284, 284, 284, 284, 284, 0, 0, 284,
2368 0, 284, 0, 0, 0, 0, 0, 284, 0, 284,
2369 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
2370 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
2371 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
2372
2373 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
2374 287, 287, 287, 287, 287, 287, 287, 287, 287, 289,
2375 0, 289, 289, 289, 289, 289, 289, 0, 0, 0,
2376 0, 289, 290, 0, 290, 290, 290, 290, 290, 290,
2377 0, 815, 0, 815, 290, 291, 0, 291, 0, 291,
2378 815, 291, 815, 0, 291, 291, 0, 291, 291, 291,
2379 291, 291, 291, 291, 291, 291, 0, 0, 291, 0,
2380 291, 291, 291, 0, 0, 0, 291, 291, 291, 291,
2381 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
2382 291, 291, 291, 291, 295, 0, 295, 398, 398, 398,
2383
2384 398, 398, 398, 398, 0, 0, 0, 0, 295, 295,
2385 295, 295, 295, 295, 410, 410, 410, 410, 410, 410,
2386 411, 0, 411, 411, 411, 411, 411, 411, 0, 0,
2387 295, 296, 414, 296, 414, 414, 414, 414, 414, 414,
2388 296, 0, 296, 0, 0, 296, 296, 296, 296, 296,
2389 296, 298, 0, 298, 0, 298, 0, 298, 0, 0,
2390 298, 298, 0, 298, 298, 423, 423, 423, 423, 423,
2391 423, 423, 0, 0, 298, 0, 298, 0, 759, 0,
2392 759, 0, 298, 298, 298, 299, 0, 299, 0, 299,
2393 759, 299, 0, 0, 299, 299, 0, 299, 299, 426,
2394
2395 0, 426, 426, 426, 426, 426, 426, 0, 299, 0,
2396 299, 0, 0, 0, 759, 0, 299, 299, 299, 300,
2397 0, 300, 0, 300, 0, 300, 0, 0, 300, 300,
2398 0, 300, 300, 434, 434, 434, 434, 434, 434, 0,
2399 0, 0, 300, 0, 300, 0, 0, 0, 0, 0,
2400 300, 300, 300, 301, 0, 301, 0, 301, 0, 301,
2401 0, 0, 301, 301, 0, 301, 301, 301, 301, 301,
2402 301, 301, 301, 301, 0, 0, 301, 0, 301, 301,
2403 301, 0, 0, 0, 301, 301, 301, 301, 301, 301,
2404 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
2405
2406 301, 301, 304, 0, 304, 444, 444, 444, 444, 444,
2407 444, 0, 0, 0, 304, 0, 304, 304, 304, 304,
2408 304, 304, 445, 445, 445, 445, 445, 445, 446, 446,
2409 446, 446, 446, 446, 0, 0, 0, 0, 304, 305,
2410 0, 305, 464, 464, 464, 464, 464, 464, 305, 0,
2411 305, 305, 0, 305, 305, 305, 305, 305, 305, 309,
2412 0, 309, 0, 309, 0, 309, 0, 0, 309, 309,
2413 0, 309, 309, 309, 309, 309, 309, 309, 309, 309,
2414 309, 0, 309, 0, 309, 309, 309, 0, 0, 0,
2415 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
2416
2417 309, 309, 309, 309, 309, 309, 309, 309, 310, 0,
2418 310, 310, 310, 310, 310, 310, 310, 311, 311, 311,
2419 311, 311, 311, 311, 0, 0, 447, 0, 311, 447,
2420 447, 447, 447, 447, 447, 0, 311, 311, 311, 311,
2421 311, 319, 0, 319, 0, 319, 0, 319, 0, 0,
2422 319, 319, 0, 319, 319, 319, 449, 449, 449, 449,
2423 449, 449, 449, 0, 319, 0, 319, 0, 0, 0,
2424 0, 0, 319, 319, 319, 321, 0, 321, 0, 321,
2425 0, 321, 0, 0, 321, 321, 0, 321, 321, 321,
2426 451, 451, 451, 451, 451, 451, 451, 0, 321, 0,
2427
2428 321, 0, 0, 0, 0, 0, 321, 321, 321, 322,
2429 0, 322, 0, 322, 0, 322, 0, 0, 322, 322,
2430 0, 322, 322, 322, 469, 469, 469, 469, 469, 469,
2431 0, 0, 322, 0, 322, 0, 0, 0, 0, 0,
2432 322, 322, 322, 323, 0, 323, 0, 323, 0, 323,
2433 0, 0, 323, 323, 0, 323, 323, 323, 323, 323,
2434 323, 323, 323, 323, 0, 0, 323, 0, 323, 323,
2435 323, 0, 0, 0, 323, 323, 323, 323, 323, 323,
2436 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
2437 323, 323, 324, 0, 324, 0, 324, 0, 324, 0,
2438
2439 0, 324, 324, 0, 324, 324, 324, 470, 0, 470,
2440 470, 470, 470, 470, 470, 324, 0, 324, 0, 0,
2441 0, 0, 0, 324, 324, 324, 325, 0, 325, 0,
2442 325, 0, 325, 0, 0, 325, 325, 0, 325, 325,
2443 325, 325, 325, 325, 325, 325, 325, 0, 0, 325,
2444 0, 325, 325, 325, 0, 0, 0, 325, 325, 325,
2445 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
2446 325, 325, 325, 325, 325, 338, 0, 338, 0, 338,
2447 0, 338, 0, 0, 338, 338, 0, 338, 338, 338,
2448 338, 338, 338, 338, 338, 338, 0, 0, 338, 0,
2449
2450 338, 338, 338, 0, 0, 0, 338, 338, 338, 338,
2451 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
2452 338, 338, 338, 338, 340, 0, 340, 0, 340, 0,
2453 340, 0, 0, 340, 340, 0, 340, 340, 340, 340,
2454 340, 340, 340, 340, 340, 0, 0, 340, 0, 340,
2455 340, 340, 0, 0, 0, 340, 340, 340, 340, 340,
2456 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
2457 340, 340, 340, 341, 341, 341, 341, 341, 341, 0,
2458 0, 0, 0, 0, 341, 471, 471, 471, 471, 471,
2459 471, 0, 341, 341, 341, 341, 341, 342, 0, 342,
2460
2461 0, 342, 0, 342, 0, 0, 342, 342, 0, 342,
2462 342, 342, 342, 342, 342, 342, 342, 342, 0, 0,
2463 342, 0, 342, 342, 342, 0, 0, 0, 342, 342,
2464 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
2465 342, 342, 342, 342, 342, 342, 343, 472, 0, 472,
2466 472, 472, 472, 472, 472, 481, 481, 481, 481, 481,
2467 481, 0, 0, 0, 0, 0, 343, 0, 343, 343,
2468 343, 343, 343, 343, 343, 343, 343, 343, 343, 343,
2469 343, 343, 343, 345, 0, 345, 0, 345, 0, 345,
2470 0, 0, 345, 345, 0, 345, 345, 345, 345, 345,
2471
2472 345, 345, 345, 345, 0, 0, 345, 0, 345, 345,
2473 345, 0, 0, 0, 345, 345, 345, 345, 345, 345,
2474 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
2475 345, 345, 352, 485, 352, 485, 485, 485, 485, 485,
2476 485, 0, 0, 0, 0, 0, 352, 352, 352, 352,
2477 352, 352, 486, 0, 486, 486, 486, 486, 486, 486,
2478 505, 505, 505, 505, 505, 505, 0, 0, 352, 353,
2479 0, 353, 506, 506, 506, 506, 506, 506, 353, 0,
2480 353, 0, 0, 353, 353, 353, 353, 353, 353, 355,
2481 0, 355, 0, 355, 0, 355, 0, 0, 355, 355,
2482
2483 0, 355, 355, 508, 508, 508, 508, 508, 508, 508,
2484 0, 0, 355, 0, 355, 0, 0, 0, 0, 0,
2485 355, 355, 355, 356, 0, 356, 0, 356, 0, 356,
2486 0, 0, 356, 356, 0, 356, 356, 510, 510, 510,
2487 510, 510, 510, 510, 0, 0, 356, 0, 356, 0,
2488 0, 0, 0, 0, 356, 356, 356, 357, 0, 357,
2489 0, 357, 0, 357, 0, 0, 357, 357, 0, 357,
2490 357, 527, 527, 527, 527, 527, 527, 527, 0, 0,
2491 357, 0, 357, 0, 0, 0, 0, 0, 357, 357,
2492 357, 358, 0, 358, 0, 358, 0, 358, 0, 0,
2493
2494 358, 358, 0, 358, 358, 358, 358, 358, 358, 358,
2495 358, 358, 0, 0, 358, 0, 358, 358, 358, 0,
2496 0, 0, 358, 358, 358, 358, 358, 358, 358, 358,
2497 358, 358, 358, 358, 358, 358, 358, 358, 358, 358,
2498 363, 534, 363, 534, 534, 534, 534, 534, 534, 0,
2499 0, 0, 363, 0, 363, 363, 363, 363, 363, 363,
2500 536, 536, 536, 536, 536, 536, 550, 0, 550, 550,
2501 550, 550, 550, 550, 0, 0, 363, 364, 0, 364,
2502 551, 551, 551, 551, 551, 551, 364, 0, 364, 364,
2503 0, 364, 364, 364, 364, 364, 364, 367, 0, 367,
2504
2505 0, 367, 0, 367, 0, 0, 367, 367, 0, 367,
2506 367, 367, 367, 367, 367, 367, 367, 367, 367, 0,
2507 367, 0, 367, 367, 367, 0, 0, 0, 367, 367,
2508 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
2509 367, 367, 367, 367, 367, 367, 369, 0, 369, 369,
2510 369, 369, 369, 369, 369, 377, 0, 377, 0, 377,
2511 0, 377, 0, 0, 377, 377, 0, 377, 377, 377,
2512 569, 569, 569, 569, 569, 569, 0, 0, 377, 0,
2513 377, 0, 0, 0, 0, 0, 377, 377, 377, 378,
2514 0, 378, 0, 378, 0, 378, 0, 0, 378, 378,
2515
2516 0, 378, 378, 378, 579, 579, 579, 579, 579, 579,
2517 0, 0, 378, 0, 378, 0, 0, 0, 0, 0,
2518 378, 378, 378, 379, 0, 379, 0, 379, 0, 379,
2519 0, 0, 379, 379, 0, 379, 379, 379, 379, 379,
2520 379, 379, 379, 379, 0, 0, 379, 0, 379, 379,
2521 379, 0, 0, 0, 379, 379, 379, 379, 379, 379,
2522 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
2523 379, 379, 380, 0, 380, 0, 380, 0, 380, 0,
2524 0, 380, 380, 0, 380, 380, 380, 584, 584, 584,
2525 584, 584, 584, 0, 0, 380, 0, 380, 0, 0,
2526
2527 0, 0, 0, 380, 380, 380, 381, 0, 381, 0,
2528 381, 0, 381, 0, 0, 381, 381, 0, 381, 381,
2529 381, 381, 381, 381, 381, 381, 381, 0, 0, 381,
2530 0, 381, 381, 381, 0, 0, 0, 381, 381, 381,
2531 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
2532 381, 381, 381, 381, 381, 394, 0, 394, 0, 394,
2533 0, 394, 0, 0, 394, 394, 0, 394, 394, 394,
2534 394, 394, 394, 394, 394, 394, 0, 0, 394, 0,
2535 394, 394, 394, 0, 0, 0, 394, 394, 394, 394,
2536 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
2537
2538 394, 394, 394, 394, 396, 396, 590, 590, 590, 590,
2539 590, 590, 0, 396, 593, 593, 593, 593, 593, 593,
2540 0, 0, 0, 0, 396, 0, 396, 396, 396, 396,
2541 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
2542 396, 399, 399, 399, 399, 399, 399, 0, 0, 0,
2543 0, 0, 399, 605, 605, 605, 605, 605, 605, 0,
2544 399, 399, 399, 399, 399, 400, 400, 400, 400, 400,
2545 400, 0, 0, 0, 0, 0, 400, 603, 603, 603,
2546 603, 603, 603, 0, 400, 400, 400, 400, 400, 402,
2547 402, 0, 0, 603, 0, 0, 0, 0, 402, 606,
2548
2549 606, 606, 606, 606, 606, 606, 0, 0, 0, 402,
2550 0, 402, 402, 402, 402, 402, 402, 402, 402, 402,
2551 402, 402, 402, 402, 402, 402, 408, 408, 613, 613,
2552 613, 613, 613, 613, 607, 408, 607, 607, 607, 607,
2553 607, 607, 0, 0, 0, 0, 408, 0, 408, 408,
2554 408, 408, 408, 408, 408, 408, 408, 408, 408, 408,
2555 408, 408, 408, 416, 608, 416, 608, 608, 608, 608,
2556 608, 608, 0, 0, 0, 0, 0, 416, 416, 416,
2557 416, 416, 416, 609, 0, 609, 609, 609, 609, 609,
2558 609, 639, 639, 639, 639, 639, 639, 639, 0, 416,
2559
2560 417, 667, 417, 667, 667, 667, 667, 667, 667, 417,
2561 0, 417, 0, 0, 417, 417, 417, 417, 417, 417,
2562 419, 0, 419, 0, 419, 0, 419, 0, 0, 419,
2563 419, 0, 419, 419, 644, 644, 644, 644, 644, 644,
2564 644, 0, 0, 419, 0, 419, 0, 0, 0, 0,
2565 0, 419, 419, 419, 420, 0, 420, 0, 420, 0,
2566 420, 0, 0, 420, 420, 0, 420, 420, 648, 648,
2567 648, 648, 648, 648, 648, 0, 0, 420, 0, 420,
2568 0, 0, 0, 0, 0, 420, 420, 420, 421, 0,
2569 421, 0, 421, 0, 421, 0, 0, 421, 421, 0,
2570
2571 421, 421, 668, 668, 668, 668, 668, 668, 0, 0,
2572 0, 421, 0, 421, 0, 0, 0, 0, 0, 421,
2573 421, 421, 422, 0, 422, 0, 422, 0, 422, 0,
2574 0, 422, 422, 0, 422, 422, 422, 422, 422, 422,
2575 422, 422, 422, 0, 0, 422, 0, 422, 422, 422,
2576 0, 0, 0, 422, 422, 422, 422, 422, 422, 422,
2577 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
2578 422, 425, 425, 425, 425, 425, 425, 425, 425, 428,
2579 0, 428, 0, 705, 705, 705, 705, 705, 705, 0,
2580 0, 428, 0, 428, 428, 428, 428, 428, 428, 705,
2581
2582 706, 0, 0, 706, 706, 706, 706, 706, 706, 707,
2583 707, 707, 707, 707, 707, 428, 429, 709, 429, 709,
2584 709, 709, 709, 709, 709, 429, 0, 429, 429, 0,
2585 429, 429, 429, 429, 429, 429, 432, 0, 432, 0,
2586 432, 0, 432, 0, 0, 432, 432, 0, 432, 432,
2587 432, 432, 432, 432, 432, 432, 432, 432, 0, 432,
2588 0, 432, 432, 432, 0, 0, 0, 432, 432, 432,
2589 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
2590 432, 432, 432, 432, 432, 433, 0, 433, 433, 433,
2591 433, 433, 433, 433, 439, 0, 439, 0, 439, 0,
2592
2593 439, 0, 0, 439, 439, 0, 439, 439, 439, 708,
2594 708, 708, 708, 708, 708, 708, 0, 439, 0, 439,
2595 0, 0, 0, 0, 0, 439, 439, 439, 440, 0,
2596 440, 0, 440, 0, 440, 0, 0, 440, 440, 0,
2597 440, 440, 440, 710, 0, 710, 710, 710, 710, 710,
2598 710, 440, 0, 440, 0, 0, 0, 0, 0, 440,
2599 440, 440, 441, 0, 441, 0, 441, 0, 441, 0,
2600 0, 441, 441, 0, 441, 441, 441, 441, 441, 441,
2601 441, 441, 441, 0, 0, 441, 0, 441, 441, 441,
2602 0, 0, 0, 441, 441, 441, 441, 441, 441, 441,
2603
2604 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
2605 441, 442, 0, 442, 0, 442, 0, 442, 0, 0,
2606 442, 442, 0, 442, 442, 442, 711, 0, 711, 711,
2607 711, 711, 711, 711, 442, 0, 442, 0, 0, 0,
2608 0, 0, 442, 442, 442, 443, 0, 443, 0, 443,
2609 0, 443, 0, 0, 443, 443, 0, 443, 443, 443,
2610 443, 443, 443, 443, 443, 443, 0, 0, 443, 0,
2611 443, 443, 443, 0, 0, 0, 443, 443, 443, 443,
2612 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
2613 443, 443, 443, 443, 457, 457, 715, 715, 715, 715,
2614
2615 715, 715, 457, 457, 457, 457, 457, 457, 457, 457,
2616 457, 457, 457, 457, 457, 457, 457, 460, 460, 460,
2617 460, 460, 460, 0, 0, 0, 0, 0, 460, 742,
2618 742, 742, 742, 742, 742, 0, 460, 460, 460, 460,
2619 460, 461, 461, 461, 461, 461, 461, 0, 0, 0,
2620 743, 0, 461, 743, 743, 743, 743, 743, 743, 0,
2621 461, 461, 461, 461, 461, 474, 749, 474, 0, 749,
2622 749, 749, 749, 749, 749, 0, 0, 0, 0, 474,
2623 474, 474, 474, 474, 474, 753, 0, 753, 753, 753,
2624 753, 753, 753, 754, 754, 754, 754, 754, 754, 0,
2625
2626 0, 474, 475, 0, 475, 758, 758, 758, 758, 758,
2627 758, 475, 0, 475, 0, 0, 475, 475, 475, 475,
2628 475, 475, 477, 0, 477, 0, 477, 0, 477, 0,
2629 0, 477, 477, 0, 477, 477, 771, 771, 771, 771,
2630 771, 771, 771, 0, 0, 477, 0, 477, 0, 0,
2631 0, 0, 0, 477, 477, 477, 478, 0, 478, 0,
2632 478, 0, 478, 0, 0, 478, 478, 0, 478, 478,
2633 786, 0, 786, 786, 786, 786, 786, 786, 0, 478,
2634 0, 478, 0, 0, 0, 0, 0, 478, 478, 478,
2635 479, 0, 479, 0, 479, 0, 479, 0, 0, 479,
2636
2637 479, 0, 479, 479, 787, 787, 787, 787, 787, 787,
2638 0, 0, 0, 479, 0, 479, 0, 0, 0, 0,
2639 0, 479, 479, 479, 480, 0, 480, 0, 480, 0,
2640 480, 0, 0, 480, 480, 0, 480, 480, 480, 790,
2641 790, 790, 790, 790, 790, 0, 0, 480, 0, 480,
2642 0, 0, 0, 0, 0, 480, 480, 480, 482, 0,
2643 482, 0, 482, 0, 482, 0, 0, 482, 482, 0,
2644 482, 482, 482, 482, 482, 482, 482, 482, 482, 0,
2645 0, 482, 0, 482, 482, 482, 0, 0, 0, 482,
2646 482, 482, 482, 482, 482, 482, 482, 482, 482, 482,
2647
2648 482, 482, 482, 482, 482, 482, 482, 483, 0, 483,
2649 0, 483, 0, 483, 0, 0, 483, 483, 0, 483,
2650 483, 483, 798, 798, 798, 798, 798, 798, 798, 0,
2651 483, 0, 483, 0, 0, 0, 0, 0, 483, 483,
2652 483, 487, 0, 487, 799, 799, 799, 799, 799, 799,
2653 0, 0, 0, 487, 0, 487, 487, 487, 487, 487,
2654 487, 804, 804, 804, 804, 804, 804, 806, 806, 806,
2655 806, 806, 806, 0, 0, 0, 0, 487, 488, 0,
2656 488, 811, 811, 811, 811, 811, 811, 488, 0, 488,
2657 0, 0, 488, 488, 488, 488, 488, 488, 491, 491,
2658
2659 491, 491, 491, 0, 491, 0, 0, 491, 491, 0,
2660 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
2661 0, 491, 0, 491, 491, 491, 0, 0, 0, 491,
2662 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
2663 491, 491, 491, 491, 491, 491, 491, 492, 0, 492,
2664 812, 812, 812, 812, 812, 812, 0, 0, 0, 492,
2665 0, 492, 492, 492, 492, 492, 492, 492, 499, 0,
2666 499, 0, 499, 0, 499, 0, 0, 499, 499, 0,
2667 499, 499, 499, 817, 817, 817, 817, 817, 817, 0,
2668 0, 499, 0, 499, 0, 0, 0, 0, 0, 499,
2669
2670 499, 499, 500, 0, 500, 0, 500, 0, 500, 0,
2671 0, 500, 500, 0, 500, 500, 500, 821, 821, 821,
2672 821, 821, 821, 0, 0, 500, 0, 500, 0, 0,
2673 0, 0, 0, 500, 500, 500, 501, 822, 822, 822,
2674 822, 822, 822, 824, 824, 824, 824, 824, 824, 501,
2675 501, 825, 825, 825, 825, 825, 825, 501, 501, 501,
2676 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
2677 501, 501, 502, 0, 502, 0, 502, 0, 502, 0,
2678 0, 502, 502, 0, 502, 502, 502, 0, 0, 0,
2679 0, 0, 0, 0, 0, 502, 0, 502, 0, 0,
2680
2681 0, 0, 0, 502, 502, 502, 503, 0, 503, 0,
2682 503, 0, 503, 0, 0, 503, 503, 0, 503, 503,
2683 503, 503, 503, 503, 503, 503, 503, 0, 0, 503,
2684 0, 503, 503, 503, 0, 0, 0, 503, 503, 503,
2685 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
2686 503, 503, 503, 503, 503, 519, 519, 0, 0, 0,
2687 0, 0, 0, 519, 519, 519, 519, 519, 519, 519,
2688 519, 519, 519, 519, 519, 519, 519, 519, 523, 523,
2689 523, 523, 523, 523, 0, 0, 0, 0, 0, 523,
2690 0, 0, 0, 0, 0, 0, 0, 523, 523, 523,
2691
2692 523, 523, 524, 524, 524, 524, 524, 524, 0, 0,
2693 0, 0, 0, 524, 0, 0, 0, 0, 0, 0,
2694 0, 524, 524, 524, 524, 524, 538, 0, 538, 0,
2695 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2696 538, 538, 538, 538, 538, 538, 0, 0, 0, 0,
2697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2698 0, 0, 538, 539, 0, 539, 0, 0, 0, 0,
2699 0, 0, 539, 0, 539, 0, 0, 539, 539, 539,
2700 539, 539, 539, 541, 0, 541, 0, 541, 0, 541,
2701 0, 0, 541, 541, 0, 541, 541, 0, 0, 0,
2702
2703 0, 0, 0, 0, 0, 0, 541, 0, 541, 0,
2704 0, 0, 0, 0, 541, 541, 541, 542, 0, 542,
2705 0, 542, 0, 542, 0, 0, 542, 542, 0, 542,
2706 542, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2707 542, 0, 542, 0, 0, 0, 0, 0, 542, 542,
2708 542, 543, 0, 543, 0, 543, 0, 543, 0, 0,
2709 543, 543, 0, 543, 543, 0, 0, 0, 0, 0,
2710 0, 0, 0, 0, 543, 0, 543, 0, 0, 0,
2711 0, 0, 543, 543, 543, 544, 0, 544, 0, 544,
2712 0, 544, 0, 0, 544, 544, 0, 544, 544, 544,
2713
2714 0, 0, 0, 0, 0, 0, 0, 0, 544, 0,
2715 544, 0, 0, 0, 0, 0, 544, 544, 544, 545,
2716 0, 545, 545, 545, 545, 545, 545, 0, 0, 0,
2717 0, 0, 0, 0, 0, 0, 0, 545, 546, 0,
2718 546, 0, 546, 0, 546, 0, 0, 546, 546, 0,
2719 546, 546, 546, 0, 0, 0, 0, 0, 0, 0,
2720 0, 546, 0, 546, 0, 0, 0, 0, 0, 546,
2721 546, 546, 548, 548, 548, 548, 548, 548, 548, 548,
2722 552, 0, 552, 0, 0, 0, 0, 0, 0, 0,
2723 0, 0, 552, 0, 552, 552, 552, 552, 552, 552,
2724
2725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2726 0, 0, 0, 0, 0, 0, 552, 553, 0, 553,
2727 0, 0, 0, 0, 0, 0, 553, 0, 553, 553,
2728 0, 553, 553, 553, 553, 553, 553, 557, 0, 557,
2729 0, 557, 0, 557, 0, 0, 557, 557, 0, 557,
2730 557, 557, 557, 557, 557, 557, 557, 557, 557, 0,
2731 557, 0, 557, 557, 557, 0, 0, 0, 557, 557,
2732 557, 557, 557, 557, 557, 557, 557, 557, 557, 557,
2733 557, 557, 557, 557, 557, 557, 558, 0, 558, 558,
2734 558, 558, 558, 558, 558, 563, 0, 563, 0, 563,
2735
2736 0, 563, 0, 0, 563, 563, 0, 563, 563, 563,
2737 0, 0, 0, 0, 0, 0, 0, 0, 563, 0,
2738 563, 0, 0, 0, 0, 0, 563, 563, 563, 564,
2739 0, 564, 0, 564, 0, 564, 0, 0, 564, 564,
2740 0, 564, 564, 564, 0, 0, 0, 0, 0, 0,
2741 0, 0, 564, 0, 564, 0, 0, 0, 0, 0,
2742 564, 564, 564, 565, 565, 0, 0, 0, 0, 0,
2743 0, 565, 565, 565, 565, 565, 565, 565, 565, 565,
2744 565, 565, 565, 565, 565, 565, 566, 0, 566, 0,
2745 566, 0, 566, 0, 0, 566, 566, 0, 566, 566,
2746
2747 566, 0, 0, 0, 0, 0, 0, 0, 0, 566,
2748 0, 566, 0, 0, 0, 0, 0, 566, 566, 566,
2749 567, 0, 567, 0, 567, 0, 567, 0, 0, 567,
2750 567, 0, 567, 567, 567, 567, 567, 567, 567, 567,
2751 567, 0, 0, 567, 0, 567, 567, 567, 0, 0,
2752 0, 567, 567, 567, 567, 567, 567, 567, 567, 567,
2753 567, 567, 567, 567, 567, 567, 567, 567, 567, 573,
2754 0, 573, 0, 573, 0, 573, 0, 0, 573, 573,
2755 0, 573, 573, 573, 573, 573, 573, 573, 573, 573,
2756 573, 0, 573, 0, 573, 573, 573, 0, 0, 0,
2757
2758 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
2759 573, 573, 573, 573, 573, 573, 573, 573, 578, 578,
2760 0, 0, 0, 0, 0, 0, 578, 578, 578, 578,
2761 578, 578, 578, 578, 578, 578, 578, 578, 578, 578,
2762 578, 582, 582, 582, 582, 582, 582, 0, 0, 0,
2763 0, 0, 582, 0, 0, 0, 0, 0, 0, 0,
2764 582, 582, 582, 582, 582, 583, 583, 583, 583, 583,
2765 583, 0, 0, 0, 0, 0, 583, 0, 0, 0,
2766 0, 0, 0, 0, 583, 583, 583, 583, 583, 595,
2767 0, 595, 0, 0, 0, 0, 0, 0, 0, 0,
2768
2769 0, 0, 0, 595, 595, 595, 595, 595, 595, 0,
2770 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2771 0, 0, 0, 0, 0, 595, 596, 0, 596, 0,
2772 0, 0, 0, 0, 0, 596, 0, 596, 0, 0,
2773 596, 596, 596, 596, 596, 596, 598, 0, 598, 0,
2774 598, 0, 598, 0, 0, 598, 598, 0, 598, 598,
2775 0, 0, 0, 0, 0, 0, 0, 0, 0, 598,
2776 0, 598, 0, 0, 0, 0, 0, 598, 598, 598,
2777 599, 0, 599, 0, 599, 0, 599, 0, 0, 599,
2778 599, 0, 599, 599, 0, 0, 0, 0, 0, 0,
2779
2780 0, 0, 0, 599, 0, 599, 0, 0, 0, 0,
2781 0, 599, 599, 599, 600, 0, 600, 0, 600, 0,
2782 600, 0, 0, 600, 600, 0, 600, 600, 0, 0,
2783 0, 0, 0, 0, 0, 0, 0, 600, 0, 600,
2784 0, 0, 0, 0, 0, 600, 600, 600, 601, 0,
2785 601, 0, 601, 0, 601, 0, 0, 601, 601, 0,
2786 601, 601, 601, 0, 0, 0, 0, 0, 0, 0,
2787 0, 601, 0, 601, 0, 0, 0, 0, 0, 601,
2788 601, 601, 602, 0, 602, 0, 602, 0, 602, 0,
2789 0, 602, 602, 0, 602, 602, 602, 0, 0, 0,
2790
2791 0, 0, 0, 0, 0, 602, 0, 602, 0, 0,
2792 0, 0, 0, 602, 602, 602, 604, 0, 604, 604,
2793 0, 604, 604, 604, 604, 604, 604, 0, 0, 0,
2794 0, 604, 610, 0, 610, 0, 0, 0, 0, 0,
2795 0, 0, 0, 0, 610, 0, 610, 610, 610, 610,
2796 610, 610, 0, 0, 0, 0, 0, 0, 0, 0,
2797 0, 0, 0, 0, 0, 0, 0, 0, 610, 611,
2798 0, 611, 0, 0, 0, 0, 0, 0, 611, 0,
2799 611, 0, 0, 611, 611, 611, 611, 611, 611, 615,
2800 0, 615, 0, 615, 0, 615, 0, 0, 615, 615,
2801
2802 0, 615, 615, 615, 615, 615, 615, 615, 615, 615,
2803 615, 0, 615, 0, 615, 615, 615, 0, 0, 0,
2804 615, 615, 615, 615, 615, 615, 615, 615, 615, 615,
2805 615, 615, 615, 615, 615, 615, 615, 615, 616, 0,
2806 616, 616, 616, 616, 616, 616, 616, 623, 0, 623,
2807 0, 623, 0, 623, 0, 0, 623, 623, 0, 623,
2808 623, 623, 0, 0, 0, 0, 0, 0, 0, 0,
2809 623, 0, 623, 0, 0, 0, 0, 0, 623, 623,
2810 623, 624, 0, 624, 0, 624, 0, 624, 0, 0,
2811 624, 624, 0, 624, 624, 624, 0, 0, 0, 0,
2812
2813 0, 0, 0, 0, 624, 0, 624, 0, 0, 0,
2814 0, 0, 624, 624, 624, 625, 0, 0, 0, 0,
2815 0, 0, 0, 0, 0, 0, 0, 0, 625, 625,
2816 0, 0, 0, 0, 0, 0, 625, 625, 625, 625,
2817 625, 625, 625, 625, 625, 625, 625, 625, 625, 625,
2818 625, 626, 0, 626, 0, 626, 0, 626, 0, 0,
2819 626, 626, 0, 626, 626, 626, 0, 0, 0, 0,
2820 0, 0, 0, 0, 626, 0, 626, 0, 0, 0,
2821 0, 0, 626, 626, 626, 627, 0, 627, 0, 627,
2822 0, 627, 0, 0, 627, 627, 0, 627, 627, 627,
2823
2824 627, 627, 627, 627, 627, 627, 0, 0, 627, 0,
2825 627, 627, 627, 0, 0, 0, 627, 627, 627, 627,
2826 627, 627, 627, 627, 627, 627, 627, 627, 627, 627,
2827 627, 627, 627, 627, 630, 0, 630, 0, 630, 0,
2828 630, 0, 0, 630, 630, 0, 630, 630, 630, 630,
2829 630, 630, 630, 630, 630, 630, 0, 630, 0, 630,
2830 630, 630, 0, 0, 0, 630, 630, 630, 630, 630,
2831 630, 630, 630, 630, 630, 630, 630, 630, 630, 630,
2832 630, 630, 630, 638, 638, 638, 638, 638, 638, 0,
2833 0, 0, 0, 0, 638, 0, 0, 0, 0, 0,
2834
2835 0, 0, 638, 638, 638, 638, 638, 642, 642, 642,
2836 642, 642, 642, 0, 0, 0, 0, 0, 642, 0,
2837 0, 0, 0, 0, 0, 0, 642, 642, 642, 642,
2838 642, 643, 643, 643, 643, 643, 643, 0, 0, 0,
2839 0, 0, 643, 0, 0, 0, 0, 0, 0, 0,
2840 643, 643, 643, 643, 643, 653, 0, 653, 0, 0,
2841 0, 0, 0, 0, 0, 0, 0, 0, 0, 653,
2842 653, 653, 653, 653, 653, 0, 0, 0, 0, 0,
2843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2844 0, 653, 654, 0, 654, 0, 0, 0, 0, 0,
2845
2846 0, 654, 0, 654, 0, 0, 654, 654, 654, 654,
2847 654, 654, 656, 0, 656, 0, 656, 0, 656, 0,
2848 0, 656, 656, 0, 656, 656, 0, 0, 0, 0,
2849 0, 0, 0, 0, 0, 656, 0, 656, 0, 0,
2850 0, 0, 0, 656, 656, 656, 657, 0, 657, 0,
2851 657, 0, 657, 0, 0, 657, 657, 0, 657, 657,
2852 0, 0, 0, 0, 0, 0, 0, 0, 0, 657,
2853 0, 657, 0, 0, 0, 0, 0, 657, 657, 657,
2854 658, 0, 658, 0, 658, 0, 658, 0, 0, 658,
2855 658, 0, 658, 658, 0, 0, 0, 0, 0, 0,
2856
2857 0, 0, 0, 658, 0, 658, 0, 0, 0, 0,
2858 0, 658, 658, 658, 659, 0, 659, 0, 659, 0,
2859 659, 0, 0, 659, 659, 0, 659, 659, 659, 0,
2860 0, 0, 0, 0, 0, 0, 0, 659, 0, 659,
2861 0, 0, 0, 0, 0, 659, 659, 659, 660, 0,
2862 660, 0, 660, 0, 660, 0, 0, 660, 660, 0,
2863 660, 660, 660, 0, 0, 0, 0, 0, 0, 0,
2864 0, 660, 0, 660, 0, 0, 0, 0, 0, 660,
2865 660, 660, 661, 0, 661, 661, 661, 661, 661, 661,
2866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2867
2868 661, 663, 663, 0, 663, 663, 663, 663, 663, 663,
2869 0, 0, 0, 0, 663, 665, 665, 665, 665, 665,
2870 665, 665, 665, 669, 0, 669, 0, 0, 0, 0,
2871 0, 0, 0, 0, 0, 669, 0, 669, 669, 669,
2872 669, 669, 669, 0, 0, 0, 0, 0, 0, 0,
2873 0, 0, 0, 0, 0, 0, 0, 0, 0, 669,
2874 670, 0, 670, 0, 0, 0, 0, 0, 0, 670,
2875 0, 670, 670, 0, 670, 670, 670, 670, 670, 670,
2876 674, 0, 674, 0, 674, 0, 674, 0, 0, 674,
2877 674, 0, 674, 674, 674, 674, 674, 674, 674, 674,
2878
2879 674, 674, 0, 674, 0, 674, 674, 674, 0, 0,
2880 0, 674, 674, 674, 674, 674, 674, 674, 674, 674,
2881 674, 674, 674, 674, 674, 674, 674, 674, 674, 675,
2882 0, 675, 675, 675, 675, 675, 675, 675, 680, 0,
2883 680, 0, 680, 0, 680, 0, 0, 680, 680, 0,
2884 680, 680, 680, 0, 0, 0, 0, 0, 0, 0,
2885 0, 680, 0, 680, 0, 0, 0, 0, 0, 680,
2886 680, 680, 681, 0, 681, 0, 681, 0, 681, 0,
2887 0, 681, 681, 0, 681, 681, 681, 0, 0, 0,
2888 0, 0, 0, 0, 0, 681, 0, 681, 0, 0,
2889
2890 0, 0, 0, 681, 681, 681, 682, 682, 0, 0,
2891 0, 0, 0, 0, 682, 682, 682, 682, 682, 682,
2892 682, 682, 682, 682, 682, 682, 682, 682, 682, 683,
2893 0, 683, 0, 683, 0, 683, 0, 0, 683, 683,
2894 0, 683, 683, 683, 0, 0, 0, 0, 0, 0,
2895 0, 0, 683, 0, 683, 0, 0, 0, 0, 0,
2896 683, 683, 683, 684, 0, 684, 0, 684, 0, 684,
2897 0, 0, 684, 684, 0, 684, 684, 684, 684, 684,
2898 684, 684, 684, 684, 0, 0, 684, 0, 684, 684,
2899 684, 0, 0, 0, 684, 684, 684, 684, 684, 684,
2900
2901 684, 684, 684, 684, 684, 684, 684, 684, 684, 684,
2902 684, 684, 686, 0, 686, 0, 686, 0, 686, 0,
2903 0, 686, 686, 0, 686, 686, 686, 686, 686, 686,
2904 686, 686, 686, 686, 0, 686, 0, 686, 686, 686,
2905 0, 0, 0, 686, 686, 686, 686, 686, 686, 686,
2906 686, 686, 686, 686, 686, 686, 686, 686, 686, 686,
2907 686, 689, 689, 689, 689, 689, 689, 0, 0, 0,
2908 0, 0, 689, 0, 0, 0, 0, 0, 0, 0,
2909 689, 689, 689, 689, 689, 690, 690, 690, 690, 690,
2910 690, 0, 0, 0, 0, 0, 690, 0, 0, 0,
2911
2912 0, 0, 0, 0, 690, 690, 690, 690, 690, 697,
2913 0, 697, 0, 0, 0, 0, 0, 0, 0, 0,
2914 0, 0, 0, 697, 697, 697, 697, 697, 697, 0,
2915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2916 0, 0, 0, 0, 0, 697, 698, 0, 698, 0,
2917 0, 0, 0, 0, 0, 698, 0, 698, 0, 0,
2918 698, 698, 698, 698, 698, 698, 700, 0, 700, 0,
2919 700, 0, 700, 0, 0, 700, 700, 0, 700, 700,
2920 0, 0, 0, 0, 0, 0, 0, 0, 0, 700,
2921 0, 700, 0, 0, 0, 0, 0, 700, 700, 700,
2922
2923 701, 0, 701, 0, 701, 0, 701, 0, 0, 701,
2924 701, 0, 701, 701, 0, 0, 0, 0, 0, 0,
2925 0, 0, 0, 701, 0, 701, 0, 0, 0, 0,
2926 0, 701, 701, 701, 702, 0, 702, 0, 702, 0,
2927 702, 0, 0, 702, 702, 0, 702, 702, 0, 0,
2928 0, 0, 0, 0, 0, 0, 0, 702, 0, 702,
2929 0, 0, 0, 0, 0, 702, 702, 702, 703, 0,
2930 703, 0, 703, 0, 703, 0, 0, 703, 703, 0,
2931 703, 703, 703, 0, 0, 0, 0, 0, 0, 0,
2932 0, 703, 0, 703, 0, 0, 0, 0, 0, 703,
2933
2934 703, 703, 704, 0, 704, 0, 704, 0, 704, 0,
2935 0, 704, 704, 0, 704, 704, 704, 0, 0, 0,
2936 0, 0, 0, 0, 0, 704, 0, 704, 0, 0,
2937 0, 0, 0, 704, 704, 704, 712, 0, 712, 0,
2938 0, 0, 0, 0, 0, 0, 0, 0, 712, 0,
2939 712, 712, 712, 712, 712, 712, 0, 0, 0, 0,
2940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2941 0, 0, 712, 713, 0, 713, 0, 0, 0, 0,
2942 0, 0, 713, 0, 713, 0, 0, 713, 713, 713,
2943 713, 713, 713, 717, 0, 717, 0, 717, 0, 717,
2944
2945 0, 0, 717, 717, 0, 717, 717, 717, 717, 717,
2946 717, 717, 717, 717, 717, 0, 717, 0, 717, 717,
2947 717, 0, 0, 0, 717, 717, 717, 717, 717, 717,
2948 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
2949 717, 717, 718, 0, 718, 718, 718, 718, 718, 718,
2950 718, 725, 0, 725, 0, 725, 0, 725, 0, 0,
2951 725, 725, 0, 725, 725, 725, 0, 0, 0, 0,
2952 0, 0, 0, 0, 725, 0, 725, 0, 0, 0,
2953 0, 0, 725, 725, 725, 726, 0, 726, 0, 726,
2954 0, 726, 0, 0, 726, 726, 0, 726, 726, 726,
2955
2956 0, 0, 0, 0, 0, 0, 0, 0, 726, 0,
2957 726, 0, 0, 0, 0, 0, 726, 726, 726, 727,
2958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2959 0, 0, 727, 727, 0, 0, 0, 0, 0, 0,
2960 727, 727, 727, 727, 727, 727, 727, 727, 727, 727,
2961 727, 727, 727, 727, 727, 728, 0, 728, 0, 728,
2962 0, 728, 0, 0, 728, 728, 0, 728, 728, 728,
2963 0, 0, 0, 0, 0, 0, 0, 0, 728, 0,
2964 728, 0, 0, 0, 0, 0, 728, 728, 728, 729,
2965 0, 729, 0, 729, 0, 729, 0, 0, 729, 729,
2966
2967 0, 729, 729, 729, 729, 729, 729, 729, 729, 729,
2968 0, 0, 729, 0, 729, 729, 729, 0, 0, 0,
2969 729, 729, 729, 729, 729, 729, 729, 729, 729, 729,
2970 729, 729, 729, 729, 729, 729, 729, 729, 730, 0,
2971 730, 0, 730, 0, 730, 0, 0, 730, 730, 0,
2972 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
2973 0, 730, 0, 730, 730, 730, 0, 0, 0, 730,
2974 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
2975 730, 730, 730, 730, 730, 730, 730, 733, 733, 733,
2976 733, 733, 733, 0, 0, 0, 0, 0, 733, 0,
2977
2978 0, 0, 0, 0, 0, 0, 733, 733, 733, 733,
2979 733, 744, 744, 0, 744, 744, 744, 744, 744, 744,
2980 746, 0, 746, 0, 746, 0, 746, 0, 0, 746,
2981 746, 0, 0, 746, 746, 0, 0, 0, 0, 0,
2982 0, 0, 0, 746, 0, 746, 0, 0, 0, 0,
2983 0, 746, 0, 746, 747, 0, 747, 0, 747, 0,
2984 747, 0, 0, 747, 747, 0, 0, 747, 747, 0,
2985 0, 0, 0, 0, 0, 0, 0, 747, 0, 747,
2986 0, 0, 0, 0, 0, 747, 0, 747, 748, 0,
2987 0, 748, 748, 748, 748, 748, 748, 0, 0, 0,
2988
2989 0, 0, 0, 0, 0, 0, 0, 748, 751, 751,
2990 751, 751, 751, 751, 751, 751, 755, 0, 755, 0,
2991 0, 0, 0, 0, 0, 0, 0, 0, 755, 0,
2992 755, 755, 755, 755, 755, 755, 0, 0, 0, 0,
2993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2994 0, 0, 755, 756, 0, 756, 0, 0, 0, 0,
2995 0, 0, 756, 0, 756, 756, 0, 756, 756, 756,
2996 756, 756, 756, 760, 0, 760, 0, 760, 0, 760,
2997 0, 0, 760, 760, 0, 760, 760, 760, 760, 760,
2998 760, 760, 760, 760, 760, 0, 760, 0, 760, 760,
2999
3000 760, 0, 0, 0, 760, 760, 760, 760, 760, 760,
3001 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
3002 760, 760, 761, 0, 761, 761, 761, 761, 761, 761,
3003 761, 766, 0, 766, 0, 766, 0, 766, 0, 0,
3004 766, 766, 0, 766, 766, 766, 0, 0, 0, 0,
3005 0, 0, 0, 0, 766, 0, 766, 0, 0, 0,
3006 0, 0, 766, 766, 766, 767, 0, 767, 0, 767,
3007 0, 767, 0, 0, 767, 767, 0, 767, 767, 767,
3008 0, 0, 0, 0, 0, 0, 0, 0, 767, 0,
3009 767, 0, 0, 0, 0, 0, 767, 767, 767, 768,
3010
3011 768, 0, 0, 0, 0, 0, 0, 768, 768, 768,
3012 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
3013 768, 768, 828, 828, 828, 828, 828, 828, 828, 828,
3014 828, 828, 828, 828, 828, 828, 828, 828, 828, 829,
3015 829, 829, 829, 829, 829, 829, 829, 829, 829, 829,
3016 829, 829, 829, 829, 829, 829, 830, 830, 830, 830,
3017 830, 830, 830, 830, 830, 830, 830, 830, 830, 830,
3018 830, 830, 830, 831, 831, 831, 831, 831, 831, 831,
3019 831, 831, 831, 831, 831, 831, 831, 831, 831, 831,
3020 832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
3021
3022 832, 832, 832, 832, 832, 832, 832, 833, 833, 833,
3023 833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
3024 833, 833, 833, 833, 834, 834, 0, 834, 834, 834,
3025 834, 834, 834, 834, 834, 834, 834, 834, 834, 834,
3026 834, 835, 0, 0, 835, 835, 0, 835, 835, 835,
3027 835, 836, 836, 0, 836, 0, 836, 836, 836, 836,
3028 836, 836, 836, 836, 836, 836, 836, 836, 837, 837,
3029 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
3030 837, 837, 837, 837, 837, 838, 838, 0, 838, 838,
3031 838, 838, 838, 838, 838, 838, 838, 838, 838, 838,
3032
3033 838, 838, 839, 839, 0, 839, 839, 839, 839, 839,
3034 839, 839, 839, 839, 839, 839, 839, 839, 839, 840,
3035 840, 0, 840, 840, 840, 840, 840, 840, 840, 840,
3036 840, 840, 840, 840, 840, 840, 841, 0, 0, 0,
3037 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
3038 841, 841, 841, 842, 842, 0, 842, 842, 842, 842,
3039 842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
3040 843, 0, 843, 0, 0, 0, 843, 843, 843, 843,
3041 843, 0, 843, 843, 843, 843, 843, 844, 844, 0,
3042 0, 0, 844, 844, 844, 844, 844, 844, 844, 0,
3043
3044 844, 844, 844, 844, 845, 845, 845, 845, 845, 845,
3045 845, 845, 845, 845, 845, 845, 845, 845, 845, 845,
3046 845, 846, 846, 846, 0, 0, 846, 846, 0, 846,
3047 847, 0, 847, 0, 0, 0, 847, 847, 847, 847,
3048 847, 0, 847, 847, 847, 847, 847, 848, 848, 0,
3049 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
3050 848, 848, 848, 848, 849, 0, 849, 0, 0, 0,
3051 849, 849, 0, 849, 849, 0, 849, 849, 849, 849,
3052 849, 850, 850, 850, 850, 850, 850, 850, 850, 850,
3053 850, 850, 850, 850, 850, 850, 850, 850, 851, 851,
3054
3055 851, 0, 0, 851, 851, 0, 851, 852, 0, 852,
3056 0, 0, 0, 852, 852, 852, 852, 852, 0, 852,
3057 852, 852, 852, 852, 853, 0, 853, 0, 0, 0,
3058 853, 853, 853, 853, 853, 0, 853, 853, 853, 853,
3059 853, 854, 854, 0, 0, 854, 0, 0, 854, 855,
3060 0, 855, 0, 0, 0, 855, 855, 855, 855, 855,
3061 0, 855, 855, 855, 855, 855, 856, 856, 0, 856,
3062 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
3063 856, 856, 856, 857, 857, 857, 0, 0, 857, 857,
3064 0, 857, 858, 0, 858, 0, 0, 0, 858, 858,
3065
3066 858, 858, 858, 0, 858, 858, 858, 858, 858, 859,
3067 0, 859, 0, 0, 0, 859, 859, 859, 859, 859,
3068 0, 859, 859, 859, 859, 859, 860, 860, 860, 0,
3069 860, 0, 0, 860, 861, 0, 861, 0, 0, 0,
3070 861, 861, 861, 861, 861, 0, 861, 861, 861, 861,
3071 861, 862, 0, 862, 0, 0, 0, 862, 862, 0,
3072 862, 862, 0, 862, 862, 862, 862, 862, 863, 0,
3073 0, 863, 0, 0, 863, 863, 863, 863, 864, 864,
3074 864, 0, 0, 864, 864, 0, 864, 865, 0, 865,
3075 0, 0, 865, 865, 0, 0, 865, 866, 0, 866,
3076
3077 0, 0, 0, 866, 866, 866, 866, 866, 0, 866,
3078 866, 866, 866, 866, 867, 0, 867, 0, 0, 0,
3079 867, 867, 867, 867, 867, 0, 867, 867, 867, 867,
3080 867, 868, 868, 0, 868, 0, 0, 868, 869, 869,
3081 869, 0, 869, 0, 0, 869, 870, 0, 0, 870,
3082 0, 0, 870, 871, 0, 871, 0, 0, 0, 871,
3083 871, 871, 871, 871, 0, 871, 871, 871, 871, 871,
3084 872, 0, 872, 0, 0, 0, 872, 872, 872, 872,
3085 872, 0, 872, 872, 872, 872, 872, 873, 0, 873,
3086 0, 0, 0, 873, 873, 873, 873, 873, 873, 873,
3087
3088 873, 873, 873, 873, 874, 0, 874, 0, 0, 0,
3089 874, 874, 874, 874, 874, 0, 874, 874, 874, 874,
3090 874, 875, 0, 875, 0, 0, 0, 875, 875, 875,
3091 875, 875, 0, 875, 875, 875, 875, 875, 876, 876,
3092 0, 876, 0, 0, 876, 876, 876, 876, 877, 0,
3093 877, 0, 0, 0, 877, 877, 877, 877, 877, 0,
3094 877, 877, 877, 877, 877, 878, 878, 878, 0, 0,
3095 878, 878, 0, 878, 879, 0, 879, 0, 0, 0,
3096 879, 879, 879, 879, 879, 0, 879, 879, 879, 879,
3097 879, 880, 0, 880, 0, 0, 0, 880, 880, 880,
3098
3099 880, 880, 0, 880, 880, 880, 880, 880, 881, 881,
3100 0, 881, 0, 0, 881, 882, 882, 882, 0, 882,
3101 0, 0, 882, 883, 883, 883, 0, 883, 0, 0,
3102 883, 884, 0, 884, 0, 0, 0, 884, 884, 884,
3103 884, 884, 0, 884, 884, 884, 884, 884, 885, 0,
3104 885, 0, 0, 0, 885, 885, 885, 885, 885, 0,
3105 885, 885, 885, 885, 885, 886, 0, 0, 886, 0,
3106 0, 886, 886, 886, 886, 887, 887, 887, 0, 0,
3107 887, 887, 0, 887, 888, 0, 888, 0, 0, 0,
3108 888, 888, 888, 888, 888, 0, 888, 888, 888, 888,
3109
3110 888, 889, 0, 889, 0, 0, 0, 889, 889, 889,
3111 889, 889, 0, 889, 889, 889, 889, 889, 890, 890,
3112 0, 890, 0, 0, 890, 891, 891, 0, 891, 0,
3113 0, 891, 892, 892, 892, 0, 892, 0, 0, 892,
3114 893, 0, 0, 893, 0, 0, 893, 894, 0, 894,
3115 0, 0, 0, 894, 894, 894, 894, 894, 0, 894,
3116 894, 894, 894, 894, 895, 0, 895, 0, 0, 0,
3117 895, 895, 895, 895, 895, 0, 895, 895, 895, 895,
3118 895, 896, 896, 896, 0, 0, 896, 896, 0, 896,
3119 897, 0, 897, 0, 0, 0, 897, 897, 897, 897,
3120
3121 897, 0, 897, 897, 897, 897, 897, 898, 0, 898,
3122 0, 0, 0, 898, 898, 898, 898, 898, 0, 898,
3123 898, 898, 898, 898, 899, 899, 0, 899, 0, 0,
3124 899, 900, 900, 0, 900, 0, 0, 900, 901, 901,
3125 901, 0, 901, 0, 0, 901, 902, 902, 902, 0,
3126 902, 0, 0, 902, 903, 0, 903, 0, 0, 0,
3127 903, 903, 903, 903, 903, 0, 903, 903, 903, 903,
3128 903, 904, 0, 904, 0, 0, 0, 904, 904, 904,
3129 904, 904, 0, 904, 904, 904, 904, 904, 905, 0,
3130 0, 905, 0, 0, 905, 905, 905, 905, 906, 0,
3131
3132 0, 906, 0, 0, 906, 906, 906, 906, 907, 907,
3133 907, 0, 0, 907, 907, 0, 907, 908, 0, 908,
3134 0, 0, 0, 908, 908, 908, 908, 908, 0, 908,
3135 908, 908, 908, 908, 909, 0, 909, 0, 0, 0,
3136 909, 909, 909, 909, 909, 0, 909, 909, 909, 909,
3137 909, 910, 0, 910, 0, 0, 0, 910, 910, 910,
3138 910, 910, 0, 910, 910, 910, 910, 910, 911, 911,
3139 0, 911, 0, 0, 911, 912, 912, 0, 912, 0,
3140 0, 912, 913, 913, 913, 0, 913, 0, 0, 913,
3141 914, 0, 0, 914, 0, 0, 914, 915, 0, 915,
3142
3143 0, 0, 0, 915, 915, 915, 915, 915, 0, 915,
3144 915, 915, 915, 915, 916, 0, 916, 0, 0, 0,
3145 916, 916, 916, 916, 916, 0, 916, 916, 916, 916,
3146 916, 917, 0, 0, 917, 0, 0, 917, 917, 917,
3147 917, 918, 0, 0, 918, 0, 0, 918, 918, 918,
3148 918, 919, 919, 919, 0, 0, 919, 919, 0, 919,
3149 920, 0, 920, 0, 0, 0, 920, 920, 920, 920,
3150 920, 0, 920, 920, 920, 920, 920, 921, 0, 921,
3151 0, 0, 0, 921, 921, 921, 921, 921, 0, 921,
3152 921, 921, 921, 921, 922, 0, 922, 0, 0, 0,
3153
3154 922, 922, 922, 922, 922, 0, 922, 922, 922, 922,
3155 922, 923, 0, 923, 0, 0, 0, 0, 0, 0,
3156 923, 924, 924, 0, 924, 0, 0, 924, 925, 925,
3157 0, 925, 0, 0, 925, 926, 926, 926, 0, 926,
3158 0, 0, 926, 927, 927, 927, 0, 927, 0, 0,
3159 927, 928, 0, 928, 0, 0, 0, 928, 928, 928,
3160 928, 928, 0, 928, 928, 928, 928, 928, 929, 0,
3161 929, 0, 0, 0, 929, 929, 929, 929, 929, 0,
3162 929, 929, 929, 929, 929, 930, 0, 0, 930, 0,
3163 0, 930, 930, 930, 930, 931, 0, 0, 931, 0,
3164
3165 0, 931, 931, 931, 931, 932, 0, 0, 932, 0,
3166 0, 932, 932, 932, 932, 933, 933, 933, 0, 0,
3167 933, 933, 0, 933, 934, 0, 934, 0, 0, 0,
3168 934, 934, 934, 934, 934, 0, 934, 934, 934, 934,
3169 934, 935, 0, 935, 0, 0, 0, 935, 935, 935,
3170 935, 935, 0, 935, 935, 935, 935, 935, 936, 0,
3171 936, 0, 0, 0, 936, 936, 936, 936, 936, 0,
3172 936, 936, 936, 936, 936, 937, 0, 937, 0, 0,
3173 0, 937, 937, 937, 937, 937, 0, 937, 937, 937,
3174 937, 937, 938, 938, 0, 938, 0, 0, 938, 939,
3175
3176 939, 0, 939, 0, 0, 939, 940, 940, 940, 0,
3177 940, 0, 0, 940, 941, 0, 0, 941, 0, 0,
3178 941, 942, 0, 942, 0, 0, 0, 942, 942, 942,
3179 942, 942, 0, 942, 942, 942, 942, 942, 943, 0,
3180 943, 0, 0, 0, 943, 943, 943, 943, 943, 0,
3181 943, 943, 943, 943, 943, 944, 944, 944, 0, 0,
3182 944, 944, 0, 944, 945, 0, 945, 0, 0, 0,
3183 945, 945, 945, 945, 945, 0, 945, 945, 945, 945,
3184 945, 946, 0, 946, 0, 0, 0, 946, 946, 946,
3185 946, 946, 0, 946, 946, 946, 946, 946, 947, 0,
3186
3187 947, 0, 0, 0, 947, 947, 947, 947, 947, 0,
3188 947, 947, 947, 947, 947, 948, 948, 0, 948, 0,
3189 0, 948, 949, 949, 0, 949, 0, 0, 949, 950,
3190 950, 950, 0, 950, 0, 0, 950, 951, 951, 951,
3191 0, 951, 0, 0, 951, 952, 0, 952, 0, 0,
3192 0, 952, 952, 952, 952, 952, 0, 952, 952, 952,
3193 952, 952, 953, 0, 953, 0, 0, 0, 953, 953,
3194 953, 953, 953, 0, 953, 953, 953, 953, 953, 954,
3195 954, 954, 0, 0, 954, 954, 0, 954, 955, 0,
3196 955, 0, 0, 0, 955, 955, 955, 955, 955, 0,
3197
3198 955, 955, 955, 955, 955, 956, 0, 956, 0, 0,
3199 0, 956, 956, 956, 956, 956, 0, 956, 956, 956,
3200 956, 956, 957, 0, 957, 0, 0, 0, 957, 957,
3201 957, 957, 957, 0, 957, 957, 957, 957, 957, 958,
3202 958, 0, 958, 0, 0, 958, 959, 959, 0, 959,
3203 0, 0, 959, 960, 960, 960, 0, 960, 0, 0,
3204 960, 961, 0, 0, 961, 0, 0, 961, 962, 0,
3205 962, 0, 0, 0, 962, 962, 962, 962, 962, 0,
3206 962, 962, 962, 962, 962, 963, 0, 963, 0, 0,
3207 0, 963, 963, 963, 963, 963, 0, 963, 963, 963,
3208
3209 963, 963, 964, 0, 0, 964, 0, 0, 964, 964,
3210 964, 964, 965, 0, 0, 965, 0, 0, 965, 965,
3211 965, 965, 966, 0, 0, 966, 0, 0, 966, 966,
3212 966, 966, 967, 0, 967, 0, 0, 0, 0, 0,
3213 0, 967, 0, 0, 0, 0, 0, 967, 968, 0,
3214 968, 0, 0, 968, 968, 0, 0, 968, 969, 0,
3215 969, 0, 0, 0, 969, 969, 969, 969, 969, 0,
3216 969, 969, 969, 969, 969, 970, 0, 970, 0, 0,
3217 0, 970, 970, 970, 970, 970, 0, 970, 970, 970,
3218 970, 970, 971, 971, 0, 971, 0, 0, 971, 972,
3219
3220 972, 0, 972, 0, 0, 972, 973, 973, 973, 0,
3221 973, 0, 0, 973, 974, 974, 974, 0, 974, 0,
3222 0, 974, 975, 0, 975, 0, 0, 0, 975, 975,
3223 975, 975, 975, 0, 975, 975, 975, 975, 975, 976,
3224 976, 0, 976, 0, 0, 976, 977, 977, 0, 977,
3225 0, 0, 977, 978, 978, 978, 0, 978, 0, 0,
3226 978, 979, 0, 0, 979, 0, 0, 979, 980, 980,
3227 0, 980, 0, 0, 980, 981, 981, 0, 0, 981,
3228 0, 0, 981, 982, 982, 982, 0, 982, 0, 0,
3229 982, 983, 983, 0, 0, 983, 0, 0, 983, 984,
3230
3231 984, 0, 0, 984, 0, 0, 984, 985, 985, 0,
3232 0, 985, 0, 0, 985, 986, 986, 0, 0, 986,
3233 0, 0, 986, 987, 987, 0, 0, 987, 0, 0,
3234 987, 827, 827, 827, 827, 827, 827, 827, 827, 827,
3235 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
3236 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
3237 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
3238 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
3239 827
3240 } ;
3241
3242 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
3243 static char *yy_full_match;
3244 static int yy_lp;
3245 #define REJECT \
3246 { \
3247 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
3248 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
3249 ++yy_lp; \
3250 goto find_rule; \
3251 }
3252 #define yymore() yymore_used_but_not_detected
/* [<][>][^][v][top][bottom][index][help] */
3253 #define YY_MORE_ADJ 0
3254 #define YY_RESTORE_YY_MORE_OFFSET
3255 char *yytext;
3256 #line 1 "rpsl.l"
3257 #define INITIAL 0
3258 /*
3259 // $Id: rpsl.l.cc,v 1.1.1.1 2000/03/10 16:32:24 engin Exp $
3260 //
3261 // Copyright (c) 1994 by the University of Southern California
3262 // All rights reserved.
3263 //
3264 // Permission to use, copy, modify, and distribute this software and its
3265 // documentation in source and binary forms for lawful non-commercial
3266 // purposes and without fee is hereby granted, provided that the above
3267 // copyright notice appear in all copies and that both the copyright
3268 // notice and this permission notice appear in supporting documentation,
3269 // and that any documentation, advertising materials, and other materials
3270 // related to such distribution and use acknowledge that the software was
3271 // developed by the University of Southern California, Information
3272 // Sciences Institute. The name of the USC may not be used to endorse or
3273 // promote products derived from this software without specific prior
3274 // written permission.
3275 //
3276 // THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY
3277 // REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY
3278 // PURPOSE. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
3279 // IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
3280 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
3281 // TITLE, AND NON-INFRINGEMENT.
3282 //
3283 // IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
3284 // SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT,
3285 // OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE
3286 // OR PERFORMANCE OF THIS SOFTWARE.
3287 //
3288 // Questions concerning this software should be directed to
3289 // ratoolset@isi.edu.
3290 //
3291 // Author(s): Cengiz Alaettinoglu <cengiz@ISI.EDU>
3292 */
3293 /* definitions */
3294 #define STRING 1
3295
3296 #define EXPECT_OPERATOR 2
3297
3298 #define FREETEXT 3
3299
3300 #define BLOBMODE 4
3301
3302 #define GENERICMODE 5
3303
3304 #define SKIP_OBJECT 6
3305
3306 #define POLICYMODE 7
3307
3308 /*%option nodefault /* */
3309 /*%option debug /* */
3310 #line 83 "rpsl.l"
3311 #include "config.h"
3312 #include <cstring>
3313 #include <cstdarg>
3314 #include <cstdio>
3315 #include <time.h>
3316
3317 #include "object.hh"
3318 #include "rpsl.y.hh"
3319 #include "schema.hh"
3320
3321 static int errorLine = 0;
3322 static int errorColon = 0;
3323 #define errorNewLine { errorLine++; errorColon = 0; }
3324
3325 static int scan_position = 0;
3326 static bool start_of_object = true;
3327 static bool genericMode = true;
3328 static int oldStart = 0;
3329
3330 Object *current_object;
3331 Attr *current_attribute;
3332 YY_BUFFER_STATE rpsl_buffer = (YY_BUFFER_STATE) NULL;
3333
3334 #define MAX_STR_CONST 1024
3335 #define LEXER_RETURN return
3336 #define YY_USER_ACTION { scan_position += yyleng; errorColon += yyleng; }
3337 #define YYLESS(n) {scan_position -= yyleng - n; errorColon -= yyleng - n; yyless(n); }
/* [<][>][^][v][top][bottom][index][help] */
3338 #define yylval rpsllval
3339 #define yy_scan_object rpsl_scan_object
3340 #define yyschema schema
3341
3342 extern void handle_error(char *, ...);
3343 extern void handle_warning(char *, ...);
3344 extern int validIPv6(const char *);
3345 extern int validIntForPhone(const char *);
3346
3347 extern "C" {
3348 extern void atollRA(...);
3349 }
3350 #line 3351 "lex.rpsl.c"
3351
3352 /* Macros after this point can all be overridden by user definitions in
3353 * section 1.
3354 */
3355
3356 #ifndef YY_SKIP_YYWRAP
3357 #ifdef __cplusplus
3358 extern "C" int yywrap YY_PROTO(( void ));
3359 #else
3360 extern int yywrap YY_PROTO(( void ));
3361 #endif
3362 #endif
3363
3364 #ifndef YY_NO_UNPUT
3365 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
3366 #endif
3367
3368 #ifndef yytext_ptr
3369 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
3370 #endif
3371
3372 #ifdef YY_NEED_STRLEN
3373 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
3374 #endif
3375
3376 #ifndef YY_NO_INPUT
3377 #ifdef __cplusplus
3378 static int yyinput YY_PROTO(( void ));
3379 #else
3380 static int input YY_PROTO(( void ));
3381 #endif
3382 #endif
3383
3384 #if YY_STACK_USED
3385 static int yy_start_stack_ptr = 0;
3386 static int yy_start_stack_depth = 0;
3387 static int *yy_start_stack = 0;
3388 #ifndef YY_NO_PUSH_STATE
3389 static void yy_push_state YY_PROTO(( int new_state ));
3390 #endif
3391 #ifndef YY_NO_POP_STATE
3392 static void yy_pop_state YY_PROTO(( void ));
3393 #endif
3394 #ifndef YY_NO_TOP_STATE
3395 static int yy_top_state YY_PROTO(( void ));
3396 #endif
3397
3398 #else
3399 #define YY_NO_PUSH_STATE 1
3400 #define YY_NO_POP_STATE 1
3401 #define YY_NO_TOP_STATE 1
3402 #endif
3403
3404 #ifdef YY_MALLOC_DECL
3405 YY_MALLOC_DECL
3406 #else
3407 #if __STDC__
3408 #ifndef __cplusplus
3409 #include <stdlib.h>
3410 #endif
3411 #else
3412 /* Just try to get by without declaring the routines. This will fail
3413 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
3414 * or sizeof(void*) != sizeof(int).
3415 */
3416 #endif
3417 #endif
3418
3419 /* Amount of stuff to slurp up with each read. */
3420 #ifndef YY_READ_BUF_SIZE
3421 #define YY_READ_BUF_SIZE 8192
3422 #endif
3423
3424 /* Copy whatever the last rule matched to the standard output. */
3425
3426 #ifndef ECHO
3427 /* This used to be an fputs(), but since the string might contain NUL's,
3428 * we now use fwrite().
3429 */
3430 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
3431 #endif
3432
3433 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3434 * is returned in "result".
3435 */
3436 #ifndef YY_INPUT
3437 #define YY_INPUT(buf,result,max_size) \
/* [<][>][^][v][top][bottom][index][help] */
3438 if ( yy_current_buffer->yy_is_interactive ) \
3439 { \
3440 int c = '*', n; \
3441 for ( n = 0; n < max_size && \
3442 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3443 buf[n] = (char) c; \
3444 if ( c == '\n' ) \
3445 buf[n++] = (char) c; \
3446 if ( c == EOF && ferror( yyin ) ) \
3447 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3448 result = n; \
3449 } \
3450 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
3451 && ferror( yyin ) ) \
3452 YY_FATAL_ERROR( "input in flex scanner failed" );
3453 #endif
3454
3455 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3456 * we don't want an extra ';' after the "return" because that will cause
3457 * some compilers to complain about unreachable statements.
3458 */
3459 #ifndef yyterminate
3460 #define yyterminate() return YY_NULL
/* [<][>][^][v][top][bottom][index][help] */
3461 #endif
3462
3463 /* Number of entries by which start-condition stack grows. */
3464 #ifndef YY_START_STACK_INCR
3465 #define YY_START_STACK_INCR 25
3466 #endif
3467
3468 /* Report a fatal error. */
3469 #ifndef YY_FATAL_ERROR
3470 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
/* [<][>][^][v][top][bottom][index][help] */
3471 #endif
3472
3473 /* Default declaration of generated scanner - a define so the user can
3474 * easily add parameters.
3475 */
3476 #ifndef YY_DECL
3477 #define YY_DECL int yylex YY_PROTO(( void ))
3478 #endif
3479
3480 /* Code executed at the beginning of each rule, after yytext and yyleng
3481 * have been set up.
3482 */
3483 #ifndef YY_USER_ACTION
3484 #define YY_USER_ACTION
3485 #endif
3486
3487 /* Code executed at the end of each rule. */
3488 #ifndef YY_BREAK
3489 #define YY_BREAK break;
3490 #endif
3491
3492 #define YY_RULE_SETUP \
3493 if ( yyleng > 0 ) \
3494 yy_current_buffer->yy_at_bol = \
3495 (yytext[yyleng - 1] == '\n'); \
3496 YY_USER_ACTION
3497
3498 YY_DECL
3499 {
3500 register yy_state_type yy_current_state;
3501 register char *yy_cp, *yy_bp;
3502 register int yy_act;
3503
3504 #line 124 "rpsl.l"
3505
3506
3507 /* this code is copied to beginning of yylex */
3508 static char string_buf[MAX_STR_CONST];
3509 char *string_buf_ptr;
3510
3511
3512 #line 3513 "lex.rpsl.c"
3513
3514 if ( yy_init )
3515 {
3516 yy_init = 0;
3517
3518 #ifdef YY_USER_INIT
3519 YY_USER_INIT;
3520 #endif
3521
3522 if ( ! yy_start )
3523 yy_start = 1; /* first start state */
3524
3525 if ( ! yyin )
3526 yyin = stdin;
3527
3528 if ( ! yyout )
3529 yyout = stdout;
3530
3531 if ( ! yy_current_buffer )
3532 yy_current_buffer =
3533 yy_create_buffer( yyin, YY_BUF_SIZE );
3534
3535 yy_load_buffer_state();
3536 }
3537
3538 while ( 1 ) /* loops until end-of-file is reached */
3539 {
3540 yy_cp = yy_c_buf_p;
3541
3542 /* Support of yytext. */
3543 *yy_cp = yy_hold_char;
3544
3545 /* yy_bp points to the position in yy_ch_buf of the start of
3546 * the current run.
3547 */
3548 yy_bp = yy_cp;
3549
3550 yy_current_state = yy_start;
3551 yy_current_state += YY_AT_BOL();
3552 yy_state_ptr = yy_state_buf;
3553 *yy_state_ptr++ = yy_current_state;
3554 yy_match:
3555 do
3556 {
3557 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3558 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3559 {
3560 yy_current_state = (int) yy_def[yy_current_state];
3561 if ( yy_current_state >= 828 )
3562 yy_c = yy_meta[(unsigned int) yy_c];
3563 }
3564 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3565 *yy_state_ptr++ = yy_current_state;
3566 ++yy_cp;
3567 }
3568 while ( yy_base[yy_current_state] != 11232 );
3569
3570 yy_find_action:
3571 yy_current_state = *--yy_state_ptr;
3572 yy_lp = yy_accept[yy_current_state];
3573 find_rule: /* we branch to this label when backing up */
3574 for ( ; ; ) /* until we find what rule we matched */
3575 {
3576 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
3577 {
3578 yy_act = yy_acclist[yy_lp];
3579 {
3580 yy_full_match = yy_cp;
3581 break;
3582 }
3583 }
3584 --yy_cp;
3585 yy_current_state = *--yy_state_ptr;
3586 yy_lp = yy_accept[yy_current_state];
3587 }
3588
3589 YY_DO_BEFORE_ACTION;
3590
3591
3592 do_action: /* This label is used only to access EOF actions. */
3593
3594
3595 switch ( yy_act )
3596 { /* beginning of action switch */
3597 case 1:
3598 YY_RULE_SETUP
3599 #line 131 "rpsl.l"
3600 { //
3601 errorLine = 0;
3602 errorColon = yyleng;
3603
3604 *(yytext + yyleng - 1) = 0; // remove ':'
3605
3606 yylval.attr = new Attr;
3607 yylval.attr->offset = scan_position - yyleng;
3608 current_attribute = yylval.attr;
3609
3610 if (start_of_object) {
3611 start_of_object = false;
3612 current_object->type = yyschema.searchClass(yytext);
3613 if (!current_object->type) {
3614 handle_error("Error: unknown class \"%s\"\n", yytext);
3615 yylval.attr->type = NULL;
3616 //(*current_object) += yylval.attr;
3617 BEGIN(SKIP_OBJECT);
3618 LEXER_RETURN(TKN_UNKNOWN_CLASS);
3619 }
3620 }
3621
3622 yylval.attr->type = current_object->type->searchAttr(yytext);
3623 yylval.attr->object = current_object;
3624
3625 // (*current_object) += yylval.attr;
3626
3627 if (! yylval.attr->type) {
3628 if (! schema.isForgiving())
3629 handle_error("Error: unknown attribute %s of class %s\n",
3630 yytext, current_object->type->name);
3631 BEGIN(FREETEXT);
3632 LEXER_RETURN(ATTR_FREETEXT);
3633 }
3634
3635 if (yylval.attr->type->isObsolete())
3636 handle_warning("Warning: attribute %s of class %s is now obsolete\n",
3637 yytext, current_object->type->name);
3638
3639 if (!yylval.attr->type->shouldParse()) { // may be free text?
3640 BEGIN(FREETEXT);
3641 LEXER_RETURN(ATTR_FREETEXT);
3642 } else {
3643 if (yylval.attr->type->syntax() == ATTR_GENERIC) {
3644 genericMode = true;
3645 BEGIN(GENERICMODE);
3646 } else if (yylval.attr->type->syntax() == ATTR_BLOBS) {
3647 genericMode = true;
3648 BEGIN(BLOBMODE);
3649 } else {
3650 genericMode = false;
3651 BEGIN(POLICYMODE);
3652 }
3653 LEXER_RETURN(yylval.attr->type->syntax());
3654 }
3655 }
3656 YY_BREAK
3657 case 2:
3658 YY_RULE_SETUP
3659 #line 188 "rpsl.l"
3660 {
3661 if (current_attribute)
3662 current_attribute->len = scan_position - current_attribute->offset;
3663 LEXER_RETURN(TKN_EOO);
3664 }
3665 YY_BREAK
3666 case YY_STATE_EOF(INITIAL):
3667 case YY_STATE_EOF(STRING):
3668 case YY_STATE_EOF(EXPECT_OPERATOR):
3669 case YY_STATE_EOF(FREETEXT):
3670 case YY_STATE_EOF(BLOBMODE):
3671 case YY_STATE_EOF(GENERICMODE):
3672 case YY_STATE_EOF(SKIP_OBJECT):
3673 case YY_STATE_EOF(POLICYMODE):
3674 #line 194 "rpsl.l"
3675 {
3676 yy_delete_buffer(rpsl_buffer);
3677 rpsl_buffer = (YY_BUFFER_STATE) NULL;
3678 if (current_attribute)
3679 current_attribute->len = scan_position - current_attribute->offset;
3680 BEGIN(INITIAL);
3681 yyterminate();
3682 }
3683 YY_BREAK
3684 case 3:
3685 YY_RULE_SETUP
3686 #line 203 "rpsl.l"
3687
3688 YY_BREAK
3689 case 4:
3690 YY_RULE_SETUP
3691 #line 205 "rpsl.l"
3692 { // not a valid line
3693 current_attribute = NULL;
3694 handle_error("Error: valid lines start with attribute names, spaces or #\n");
3695 BEGIN(FREETEXT);
3696 LEXER_RETURN(TKN_ERROR);
3697 }
3698 YY_BREAK
3699
3700 case 5:
3701 YY_RULE_SETUP
3702 #line 213 "rpsl.l"
3703 {
3704 BEGIN(INITIAL);
3705 if (current_attribute)
3706 current_attribute->len = scan_position - current_attribute->offset;
3707 LEXER_RETURN(TKN_EOO);
3708 }
3709 YY_BREAK
3710 case 6:
3711 YY_RULE_SETUP
3712 #line 219 "rpsl.l"
3713 errorNewLine;
3714 YY_BREAK
3715 case 7:
3716 YY_RULE_SETUP
3717 #line 220 "rpsl.l"
3718 ;
3719 YY_BREAK
3720
3721
3722 case 8:
3723 YY_RULE_SETUP
3724 #line 224 "rpsl.l"
3725 errorNewLine; errorColon++; // line continuation with +
3726 YY_BREAK
3727 case 9:
3728 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3729 yy_c_buf_p = yy_cp = yy_bp + 1;
3730 YY_DO_BEFORE_ACTION; /* set up yytext again */
3731 YY_RULE_SETUP
3732 #line 225 "rpsl.l"
3733 errorNewLine; // line continuation with space or comment
3734 YY_BREAK
3735 case 10:
3736 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3737 yy_c_buf_p = yy_cp = yy_bp + 1;
3738 YY_DO_BEFORE_ACTION; /* set up yytext again */
3739 YY_RULE_SETUP
3740 #line 226 "rpsl.l"
3741 { // end of attribute and may be end of object too
3742 BEGIN(INITIAL);
3743 if (current_attribute)
3744 current_attribute->len = scan_position - current_attribute->offset;
3745 LEXER_RETURN(TKN_EOA);
3746 }
3747 YY_BREAK
3748 case 11:
3749 YY_RULE_SETUP
3750 #line 232 "rpsl.l"
3751 ; // skip white space
3752 YY_BREAK
3753 case 12:
3754 YY_RULE_SETUP
3755 #line 233 "rpsl.l"
3756 ; // skip comment
3757 YY_BREAK
3758
3759 // dont parse anything, keep going till EOA
3760 case 13:
3761 YY_RULE_SETUP
3762 #line 237 "rpsl.l"
3763 ; // this rule needs to be after \n rules
3764 YY_BREAK
3765
3766
3767 case 14:
3768 YY_RULE_SETUP
3769 #line 241 "rpsl.l"
3770 {
3771 yylval.string = strdup(yytext);
3772 LEXER_RETURN(TKN_BLOB);
3773 }
3774 YY_BREAK
3775
3776
3777 case 15:
3778 YY_RULE_SETUP
3779 #line 248 "rpsl.l"
3780 {
3781 tm ts;
3782 bzero((char *) &ts, sizeof(ts));
3783
3784 int date, zone_hours, zone_mins;
3785 sscanf(yytext, "%d %d:%d:%d %d:%d",
3786 &date,
3787 &ts.tm_hour, &ts.tm_min, &ts.tm_sec,
3788 &zone_hours, &zone_mins);
3789
3790 ts.tm_mday = date % 100; date /= 100;
3791 ts.tm_mon = date % 100 - 1; date /= 100;
3792 ts.tm_year = date - 1900;
3793
3794 if (ts.tm_mday > 31) {
3795 handle_error("Error: Invalid day %d\n", ts.tm_mday);
3796 LEXER_RETURN(TKN_ERROR);
3797 }
3798 if (ts.tm_mon > 11) {
3799 handle_error("Error: Invalid month %d\n", ts.tm_mon);
3800 LEXER_RETURN(TKN_ERROR);
3801 }
3802 if (ts.tm_year < 70) {
3803 handle_error("Error: Invalid year %d\n", ts.tm_year);
3804 LEXER_RETURN(TKN_ERROR);
3805 }
3806 if (ts.tm_sec > 59) {
3807 handle_error("Error: Invalid sec %d\n", ts.tm_sec);
3808 LEXER_RETURN(TKN_ERROR);
3809 }
3810 if (ts.tm_min > 59) {
3811 handle_error("Error: Invalid min %d\n", ts.tm_min);
3812 LEXER_RETURN(TKN_ERROR);
3813 }
3814 if (ts.tm_hour > 23) {
3815 handle_error("Error: Invalid hour %d\n", ts.tm_hour);
3816 LEXER_RETURN(TKN_ERROR);
3817 }
3818 if (zone_mins > 59) {
3819 handle_error("Error: Invalid zone min %d\n", zone_mins);
3820 LEXER_RETURN(TKN_ERROR);
3821 }
3822 if (zone_hours > 23) {
3823 handle_error("Error: Invalid zone hour %d\n", zone_hours);
3824 LEXER_RETURN(TKN_ERROR);
3825 }
3826
3827 // this fiddling with TZ is necessary for mktime to use utc as timezone
3828 // it sucks, there's got to be a better way
3829 time_t result = mktime(&ts);
3830 result -= timezone;
3831 /*
3832 char *TZ=getenv("TZ");
3833 if (TZ)
3834 TZ = strdup(TZ);
3835 setenv("TZ", "", 1);
3836 time_t result = mktime(&ts);
3837 if (TZ) {
3838 setenv("TZ", TZ, 1);
3839 free(TZ);
3840 } else
3841 unsetenv("TZ");
3842 */
3843 if (zone_hours < 0)
3844 zone_mins *= -1;
3845
3846 result += zone_mins * 60 + zone_hours * 60 * 60;
3847
3848 yylval.time = result;
3849 LEXER_RETURN(TKN_TIMESTAMP);
3850 }
3851 YY_BREAK
3852
3853
3854 case 16:
3855 YY_RULE_SETUP
3856 #line 323 "rpsl.l"
3857 {
3858 if(current_attribute->type->syntax() == ATTR_AUTH){
3859 yylval.string = strdup(yytext);
3860 LEXER_RETURN(TKN_CRYPTEDPW);
3861 }else{
3862 scan_position -= yyleng; errorColon -= yyleng;
3863 REJECT;
3864 }
3865 }
3866 YY_BREAK
3867 case 17:
3868 YY_RULE_SETUP
3869 #line 333 "rpsl.l"
3870 {
3871 // The following code causes problem on Solaris since long long int
3872 // is not standardized yet
3873 // sscanf(yytext, "%Ld", &(yylval.i));
3874 if(current_attribute->type->syntax() == ATTR_PHONE){
3875 if(validIntForPhone(yytext)){
3876 atollRA(yytext, &yylval.i);
3877 LEXER_RETURN(TKN_INT);
3878 }else{
3879 scan_position -= yyleng; errorColon -= yyleng;
3880 REJECT;
3881 }
3882 }else{
3883 atollRA(yytext, &yylval.i);
3884 LEXER_RETURN(TKN_INT);
3885 }
3886 /* atollRA(yytext, &yylval.i);
3887 LEXER_RETURN(TKN_INT);*/
3888 }
3889 YY_BREAK
3890 case 18:
3891 YY_RULE_SETUP
3892 #line 353 "rpsl.l"
3893 {
3894 unsigned int ms, ls;
3895 char *colon = strchr(yytext, ':');
3896 *colon = 0;
3897 ms = atoi(yytext);
3898 ls = atoi(colon+1);
3899 if (ms > 65535 || ls > 65535)
3900 LEXER_RETURN(TKN_ERROR);
3901
3902 yylval.i = (ms << 16) + ls;
3903 LEXER_RETURN(TKN_INT);
3904 }
3905 YY_BREAK
3906 case 19:
3907 YY_RULE_SETUP
3908 #line 366 "rpsl.l"
3909 {
3910 yylval.real = atof(yytext);
3911 LEXER_RETURN(TKN_REAL);
3912 }
3913 YY_BREAK
3914 case 20:
3915 YY_RULE_SETUP
3916 #line 371 "rpsl.l"
3917 {
3918 string_buf_ptr = string_buf;
3919 oldStart = YY_START;
3920 BEGIN(STRING);
3921 }
3922 YY_BREAK
3923 case 21:
3924 YY_RULE_SETUP
3925 #line 377 "rpsl.l"
3926 {
3927 yylval.ip = new IPAddr(yytext);
3928 LEXER_RETURN(TKN_IPV4);
3929 }
3930 YY_BREAK
3931 case 22:
3932 YY_RULE_SETUP
3933 #line 382 "rpsl.l"
3934 {
3935 yylval.string = strdup(yytext);
3936 printf("debug: lexer: Returning TKN_PRFXV6\n");
3937 LEXER_RETURN(TKN_PRFXV6);
3938 }
3939 YY_BREAK
3940 case 23:
3941 YY_RULE_SETUP
3942 #line 388 "rpsl.l"
3943 {
3944 yylval.string = strdup(yytext);
3945 if(validIPv6(yylval.string)){
3946 printf("debug: lexer: Returning TKN_PRFXV6\n");
3947 LEXER_RETURN(TKN_PRFXV6);
3948 }else{
3949 handle_error("Error: Invalid IPv6 prefix\n");
3950 BEGIN(FREETEXT);
3951 LEXER_RETURN(TKN_ERROR);
3952 }
3953 }
3954 YY_BREAK
3955 case 24:
3956 YY_RULE_SETUP
3957 #line 400 "rpsl.l"
3958 {
3959 yylval.prfx = new Prefix(yytext);
3960 LEXER_RETURN(TKN_PRFXV4);
3961 }
3962 YY_BREAK
3963 case 25:
3964 YY_RULE_SETUP
3965 #line 405 "rpsl.l"
3966 {
3967 yylval.prfxrng = new PrefixRange(yytext);
3968 LEXER_RETURN(TKN_PRFXV4RNG);
3969 }
3970 YY_BREAK
3971 case 26:
3972 YY_RULE_SETUP
3973 #line 410 "rpsl.l"
3974 {
3975 /*printf("DEBUG: lexer: matched a nichdl candidate (%s)\n",yytext);*/
3976 if(current_attribute->type->syntax() != ATTR_NICHDL){
3977 /*printf("DEBUG: lexer: This is not a nichdl attribute, rejecting\n");*/
3978 scan_position -= yyleng; errorColon -= yyleng;
3979 REJECT;
3980 }else{
3981 yylval.string = strdup(yytext);
3982 LEXER_RETURN(TKN_NICHDL);
3983 }
3984 }
3985 YY_BREAK
3986 /* The order of these rules are important */
3987 case 27:
3988 YY_RULE_SETUP
3989 #line 424 "rpsl.l"
3990 {
3991 yylval.i = atoi(yytext+2);
3992 LEXER_RETURN(TKN_ASNO);
3993 }
3994 YY_BREAK
3995 case 28:
3996 YY_RULE_SETUP
3997 #line 429 "rpsl.l"
3998 {
3999 yylval.sid = symbols.symID(yytext);
4000 LEXER_RETURN(TKN_ASNAME);
4001 }
4002 YY_BREAK
4003 case 29:
4004 YY_RULE_SETUP
4005 #line 434 "rpsl.l"
4006 {
4007 yylval.sid = symbols.symID(yytext);
4008 LEXER_RETURN(TKN_RSNAME);
4009 }
4010 YY_BREAK
4011 case 30:
4012 YY_RULE_SETUP
4013 #line 439 "rpsl.l"
4014 {
4015 yylval.sid = symbols.symID(yytext);
4016 LEXER_RETURN(TKN_RTRSNAME);
4017 }
4018 YY_BREAK
4019 case 31:
4020 YY_RULE_SETUP
4021 #line 444 "rpsl.l"
4022 {
4023 yylval.sid = symbols.symID(yytext);
4024 LEXER_RETURN(TKN_PRNGNAME);
4025 }
4026 YY_BREAK
4027 case 32:
4028 YY_RULE_SETUP
4029 #line 449 "rpsl.l"
4030 {
4031 yylval.sid = symbols.symID(yytext);
4032 LEXER_RETURN(TKN_FLTRNAME);
4033 }
4034 YY_BREAK
4035 case 33:
4036 YY_RULE_SETUP
4037 #line 454 "rpsl.l"
4038 {
4039 yylval.i = 1;
4040 LEXER_RETURN(TKN_BOOLEAN);
4041 }
4042 YY_BREAK
4043 case 34:
4044 YY_RULE_SETUP
4045 #line 459 "rpsl.l"
4046 {
4047 yylval.i = 0;
4048 LEXER_RETURN(TKN_BOOLEAN);
4049 }
4050 YY_BREAK
4051 case 35:
4052 YY_RULE_SETUP
4053 #line 464 "rpsl.l"
4054 { /* keycert name */
4055 yylval.string = strdup(yytext);
4056 printf("debug: lexer: Returning TKN_KEYCRTNAME\n");
4057 LEXER_RETURN(TKN_KEYCRTNAME);
4058 }
4059 YY_BREAK
4060 case 36:
4061 YY_RULE_SETUP
4062 #line 471 "rpsl.l"
4063 { /* reserved word or rp-attribute, or arbitrary name */
4064 if (!genericMode) {
4065 oldStart = YY_START;
4066
4067 int index;
4068 if ((index = yyschema.searchKeyword(yytext)) >= 0) {
4069 if (index == KEYW_OPERATOR)
4070 BEGIN(EXPECT_OPERATOR);
4071 LEXER_RETURN(index);
4072 }
4073
4074 if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4075 BEGIN(EXPECT_OPERATOR);
4076 LEXER_RETURN(TKN_RP_ATTR);
4077 }
4078 }
4079
4080 yylval.string = strdup(yytext);
4081 LEXER_RETURN(TKN_WORD);
4082 }
4083 YY_BREAK
4084 case 37:
4085 YY_RULE_SETUP
4086 #line 492 "rpsl.l"
4087 { /* rp-attribute.method or DNS name */
4088 if (!genericMode) {
4089 char *p = strchr(yytext, '.');
4090 *p = 0;
4091
4092 if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4093 *p = '.';
4094 YYLESS((p - yytext));
4095 LEXER_RETURN(TKN_RP_ATTR);
4096 }
4097
4098 *p = '.';
4099 }
4100
4101 yylval.sid = symbols.symID(yytext);
4102 LEXER_RETURN(TKN_DNS);
4103 }
4104 YY_BREAK
4105 case 38:
4106 YY_RULE_SETUP
4107 #line 510 "rpsl.l"
4108 { /* DNS name */
4109 yylval.sid = symbols.symID(yytext);
4110 LEXER_RETURN(TKN_DNS);
4111 }
4112 YY_BREAK
4113 case 39:
4114 YY_RULE_SETUP
4115 #line 515 "rpsl.l"
4116 { /* email */
4117 yylval.string = strdup(yytext);
4118 LEXER_RETURN(TKN_EMAIL);
4119 }
4120 YY_BREAK
4121 case 40:
4122 YY_RULE_SETUP
4123 #line 522 "rpsl.l"
4124 {
4125 if (*yytext <= 0) {
4126 handle_error("Error: Non-ASCII character encountered\n");
4127 LEXER_RETURN(TKN_ERROR);
4128 } else
4129 LEXER_RETURN(*yytext);
4130 }
4131 YY_BREAK
4132
4133
4134 case 41:
4135 YY_RULE_SETUP
4136 #line 532 "rpsl.l"
4137 {
4138 yylval.moreSpecOp = new FilterMS(0);
4139 LEXER_RETURN(OP_MS);
4140 }
4141 YY_BREAK
4142 case 42:
4143 YY_RULE_SETUP
4144 #line 537 "rpsl.l"
4145 {
4146 yylval.moreSpecOp = new FilterMS(1);
4147 LEXER_RETURN(OP_MS);
4148 }
4149 YY_BREAK
4150 case 43:
4151 YY_RULE_SETUP
4152 #line 542 "rpsl.l"
4153 {
4154 int i;
4155 sscanf(yytext, "^%d", &i);
4156 yylval.moreSpecOp = new FilterMS(2, i, i);
4157 LEXER_RETURN(OP_MS);
4158 }
4159 YY_BREAK
4160 case 44:
4161 YY_RULE_SETUP
4162 #line 549 "rpsl.l"
4163 {
4164 int i, j;
4165 sscanf(yytext, "^%d-%d", &i, &j);
4166 yylval.moreSpecOp = new FilterMS(2, i, j);
4167 LEXER_RETURN(OP_MS);
4168 }
4169 YY_BREAK
4170 case 45:
4171 YY_RULE_SETUP
4172 #line 556 "rpsl.l"
4173 LEXER_RETURN(TKN_3DOTS);
4174 YY_BREAK
4175
4176
4177 case 46:
4178 YY_RULE_SETUP
4179 #line 560 "rpsl.l"
4180 {
4181 yylval.string = strdup(yytext);
4182 BEGIN(oldStart);
4183 LEXER_RETURN(TKN_OPERATOR);
4184 }
4185 YY_BREAK
4186 case 47:
4187 YY_RULE_SETUP
4188 #line 566 "rpsl.l"
4189 {
4190 YYLESS(0);
4191 BEGIN(oldStart);
4192 }
4193 YY_BREAK
4194
4195
4196 case 48:
4197 YY_RULE_SETUP
4198 #line 573 "rpsl.l"
4199 { /* saw closing quote - all done */
4200 BEGIN(oldStart);
4201 *string_buf_ptr = '\0';
4202 yylval.string = strdup(string_buf);
4203 LEXER_RETURN(TKN_STRING);
4204 }
4205 YY_BREAK
4206 case 49:
4207 YY_RULE_SETUP
4208 #line 580 "rpsl.l"
4209 {
4210 errorNewLine;
4211 handle_error("Error: unterminated string encountered\n");
4212 BEGIN(oldStart);
4213 if (current_attribute)
4214 current_attribute->len = scan_position - current_attribute->offset;
4215 LEXER_RETURN(TKN_EOA);
4216 }
4217 YY_BREAK
4218 case 50:
4219 YY_RULE_SETUP
4220 #line 589 "rpsl.l"
4221 {
4222 /* octal escape sequence */
4223 int result;
4224
4225 (void) sscanf( yytext + 1, "%o", &result );
4226
4227 if ( result > 0xff ) {
4228 handle_error("Error: octal escape sequence is out of bounds\n");
4229 BEGIN(oldStart);
4230 LEXER_RETURN(TKN_ERROR);
4231 }
4232
4233 *string_buf_ptr++ = result;
4234 }
4235 YY_BREAK
4236 case 51:
4237 YY_RULE_SETUP
4238 #line 604 "rpsl.l"
4239 { /* like '\48' or '\0777777' */
4240 handle_error("Error: bad octal escape sequence\n");
4241 BEGIN(oldStart);
4242 LEXER_RETURN(TKN_ERROR);
4243 }
4244 YY_BREAK
4245 case 52:
4246 YY_RULE_SETUP
4247 #line 610 "rpsl.l"
4248 *string_buf_ptr++ = '\n';
4249 YY_BREAK
4250 case 53:
4251 YY_RULE_SETUP
4252 #line 611 "rpsl.l"
4253 *string_buf_ptr++ = '\t';
4254 YY_BREAK
4255 case 54:
4256 YY_RULE_SETUP
4257 #line 612 "rpsl.l"
4258 *string_buf_ptr++ = '\r';
4259 YY_BREAK
4260 case 55:
4261 YY_RULE_SETUP
4262 #line 613 "rpsl.l"
4263 *string_buf_ptr++ = '\b';
4264 YY_BREAK
4265 case 56:
4266 YY_RULE_SETUP
4267 #line 614 "rpsl.l"
4268 *string_buf_ptr++ = '\f';
4269 YY_BREAK
4270 case 57:
4271 YY_RULE_SETUP
4272 #line 616 "rpsl.l"
4273 *string_buf_ptr++ = yytext[1];
4274 YY_BREAK
4275 case 58:
4276 YY_RULE_SETUP
4277 #line 618 "rpsl.l"
4278 {
4279 char *yptr = yytext;
4280 while ( *yptr )
4281 *string_buf_ptr++ = *yptr++;
4282 }
4283 YY_BREAK
4284 case 59:
4285 YY_RULE_SETUP
4286 #line 624 "rpsl.l"
4287 *string_buf_ptr++ = yytext[0];
4288 YY_BREAK
4289
4290 case 60:
4291 YY_RULE_SETUP
4292 #line 627 "rpsl.l"
4293 ECHO;
4294 YY_BREAK
4295 #line 4296 "lex.rpsl.c"
4296
4297 case YY_END_OF_BUFFER:
4298 {
4299 /* Amount of text matched not including the EOB char. */
4300 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
4301
4302 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4303 *yy_cp = yy_hold_char;
4304 YY_RESTORE_YY_MORE_OFFSET
4305
4306 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
4307 {
4308 /* We're scanning a new file or input source. It's
4309 * possible that this happened because the user
4310 * just pointed yyin at a new source and called
4311 * yylex(). If so, then we have to assure
4312 * consistency between yy_current_buffer and our
4313 * globals. Here is the right place to do so, because
4314 * this is the first action (other than possibly a
4315 * back-up) that will match for the new input source.
4316 */
4317 yy_n_chars = yy_current_buffer->yy_n_chars;
4318 yy_current_buffer->yy_input_file = yyin;
4319 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
4320 }
4321
4322 /* Note that here we test for yy_c_buf_p "<=" to the position
4323 * of the first EOB in the buffer, since yy_c_buf_p will
4324 * already have been incremented past the NUL character
4325 * (since all states make transitions on EOB to the
4326 * end-of-buffer state). Contrast this with the test
4327 * in input().
4328 */
4329 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4330 { /* This was really a NUL. */
4331 yy_state_type yy_next_state;
4332
4333 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
4334
4335 yy_current_state = yy_get_previous_state();
4336
4337 /* Okay, we're now positioned to make the NUL
4338 * transition. We couldn't have
4339 * yy_get_previous_state() go ahead and do it
4340 * for us because it doesn't know how to deal
4341 * with the possibility of jamming (and we don't
4342 * want to build jamming into it because then it
4343 * will run more slowly).
4344 */
4345
4346 yy_next_state = yy_try_NUL_trans( yy_current_state );
4347
4348 yy_bp = yytext_ptr + YY_MORE_ADJ;
4349
4350 if ( yy_next_state )
4351 {
4352 /* Consume the NUL. */
4353 yy_cp = ++yy_c_buf_p;
4354 yy_current_state = yy_next_state;
4355 goto yy_match;
4356 }
4357
4358 else
4359 {
4360 yy_cp = yy_c_buf_p;
4361 goto yy_find_action;
4362 }
4363 }
4364
4365 else switch ( yy_get_next_buffer() )
4366 {
4367 case EOB_ACT_END_OF_FILE:
4368 {
4369 yy_did_buffer_switch_on_eof = 0;
4370
4371 if ( yywrap() )
4372 {
4373 /* Note: because we've taken care in
4374 * yy_get_next_buffer() to have set up
4375 * yytext, we can now set up
4376 * yy_c_buf_p so that if some total
4377 * hoser (like flex itself) wants to
4378 * call the scanner after we return the
4379 * YY_NULL, it'll still work - another
4380 * YY_NULL will get returned.
4381 */
4382 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
4383
4384 yy_act = YY_STATE_EOF(YY_START);
4385 goto do_action;
4386 }
4387
4388 else
4389 {
4390 if ( ! yy_did_buffer_switch_on_eof )
4391 YY_NEW_FILE;
4392 }
4393 break;
4394 }
4395
4396 case EOB_ACT_CONTINUE_SCAN:
4397 yy_c_buf_p =
4398 yytext_ptr + yy_amount_of_matched_text;
4399
4400 yy_current_state = yy_get_previous_state();
4401
4402 yy_cp = yy_c_buf_p;
4403 yy_bp = yytext_ptr + YY_MORE_ADJ;
4404 goto yy_match;
4405
4406 case EOB_ACT_LAST_MATCH:
4407 yy_c_buf_p =
4408 &yy_current_buffer->yy_ch_buf[yy_n_chars];
4409
4410 yy_current_state = yy_get_previous_state();
4411
4412 yy_cp = yy_c_buf_p;
4413 yy_bp = yytext_ptr + YY_MORE_ADJ;
4414 goto yy_find_action;
4415 }
4416 break;
4417 }
4418
4419 default:
4420 YY_FATAL_ERROR(
4421 "fatal flex scanner internal error--no action found" );
4422 } /* end of action switch */
4423 } /* end of scanning one token */
4424 } /* end of yylex */
4425
4426
4427 /* yy_get_next_buffer - try to read in a new buffer
4428 *
4429 * Returns a code representing an action:
4430 * EOB_ACT_LAST_MATCH -
4431 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4432 * EOB_ACT_END_OF_FILE - end of file
4433 */
4434
4435 static int yy_get_next_buffer()
/* [<][>][^][v][top][bottom][index][help] */
4436 {
4437 register char *dest = yy_current_buffer->yy_ch_buf;
4438 register char *source = yytext_ptr;
4439 register int number_to_move, i;
4440 int ret_val;
4441
4442 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
4443 YY_FATAL_ERROR(
4444 "fatal flex scanner internal error--end of buffer missed" );
4445
4446 if ( yy_current_buffer->yy_fill_buffer == 0 )
4447 { /* Don't try to fill the buffer, so this is an EOF. */
4448 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
4449 {
4450 /* We matched a single character, the EOB, so
4451 * treat this as a final EOF.
4452 */
4453 return EOB_ACT_END_OF_FILE;
4454 }
4455
4456 else
4457 {
4458 /* We matched some text prior to the EOB, first
4459 * process it.
4460 */
4461 return EOB_ACT_LAST_MATCH;
4462 }
4463 }
4464
4465 /* Try to read more data. */
4466
4467 /* First move last chars to start of buffer. */
4468 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
4469
4470 for ( i = 0; i < number_to_move; ++i )
4471 *(dest++) = *(source++);
4472
4473 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4474 /* don't do the read, it's not guaranteed to return an EOF,
4475 * just force an EOF
4476 */
4477 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
4478
4479 else
4480 {
4481 int num_to_read =
4482 yy_current_buffer->yy_buf_size - number_to_move - 1;
4483
4484 while ( num_to_read <= 0 )
4485 { /* Not enough room in the buffer - grow it. */
4486 #ifdef YY_USES_REJECT
4487 YY_FATAL_ERROR(
4488 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
4489 #else
4490
4491 /* just a shorter name for the current buffer */
4492 YY_BUFFER_STATE b = yy_current_buffer;
4493
4494 int yy_c_buf_p_offset =
4495 (int) (yy_c_buf_p - b->yy_ch_buf);
4496
4497 if ( b->yy_is_our_buffer )
4498 {
4499 int new_size = b->yy_buf_size * 2;
4500
4501 if ( new_size <= 0 )
4502 b->yy_buf_size += b->yy_buf_size / 8;
4503 else
4504 b->yy_buf_size *= 2;
4505
4506 b->yy_ch_buf = (char *)
4507 /* Include room in for 2 EOB chars. */
4508 yy_flex_realloc( (void *) b->yy_ch_buf,
4509 b->yy_buf_size + 2 );
4510 }
4511 else
4512 /* Can't grow it, we don't own it. */
4513 b->yy_ch_buf = 0;
4514
4515 if ( ! b->yy_ch_buf )
4516 YY_FATAL_ERROR(
4517 "fatal error - scanner input buffer overflow" );
4518
4519 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4520
4521 num_to_read = yy_current_buffer->yy_buf_size -
4522 number_to_move - 1;
4523 #endif
4524 }
4525
4526 if ( num_to_read > YY_READ_BUF_SIZE )
4527 num_to_read = YY_READ_BUF_SIZE;
4528
4529 /* Read in more data. */
4530 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
4531 yy_n_chars, num_to_read );
4532
4533 yy_current_buffer->yy_n_chars = yy_n_chars;
4534 }
4535
4536 if ( yy_n_chars == 0 )
4537 {
4538 if ( number_to_move == YY_MORE_ADJ )
4539 {
4540 ret_val = EOB_ACT_END_OF_FILE;
4541 yyrestart( yyin );
4542 }
4543
4544 else
4545 {
4546 ret_val = EOB_ACT_LAST_MATCH;
4547 yy_current_buffer->yy_buffer_status =
4548 YY_BUFFER_EOF_PENDING;
4549 }
4550 }
4551
4552 else
4553 ret_val = EOB_ACT_CONTINUE_SCAN;
4554
4555 yy_n_chars += number_to_move;
4556 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4557 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4558
4559 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
4560
4561 return ret_val;
4562 }
4563
4564
4565 /* yy_get_previous_state - get the state just before the EOB char was reached */
4566
4567 static yy_state_type yy_get_previous_state()
/* [<][>][^][v][top][bottom][index][help] */
4568 {
4569 register yy_state_type yy_current_state;
4570 register char *yy_cp;
4571
4572 yy_current_state = yy_start;
4573 yy_current_state += YY_AT_BOL();
4574 yy_state_ptr = yy_state_buf;
4575 *yy_state_ptr++ = yy_current_state;
4576
4577 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
4578 {
4579 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4580 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4581 {
4582 yy_current_state = (int) yy_def[yy_current_state];
4583 if ( yy_current_state >= 828 )
4584 yy_c = yy_meta[(unsigned int) yy_c];
4585 }
4586 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4587 *yy_state_ptr++ = yy_current_state;
4588 }
4589
4590 return yy_current_state;
4591 }
4592
4593
4594 /* yy_try_NUL_trans - try to make a transition on the NUL character
4595 *
4596 * synopsis
4597 * next_state = yy_try_NUL_trans( current_state );
4598 */
4599
4600 #ifdef YY_USE_PROTOS
4601 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
/* [<][>][^][v][top][bottom][index][help] */
4602 #else
4603 static yy_state_type yy_try_NUL_trans( yy_current_state )
4604 yy_state_type yy_current_state;
4605 #endif
4606 {
4607 register int yy_is_jam;
4608
4609 register YY_CHAR yy_c = 1;
4610 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4611 {
4612 yy_current_state = (int) yy_def[yy_current_state];
4613 if ( yy_current_state >= 828 )
4614 yy_c = yy_meta[(unsigned int) yy_c];
4615 }
4616 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4617 yy_is_jam = (yy_current_state == 827);
4618 if ( ! yy_is_jam )
4619 *yy_state_ptr++ = yy_current_state;
4620
4621 return yy_is_jam ? 0 : yy_current_state;
4622 }
4623
4624
4625 #ifndef YY_NO_UNPUT
4626 #ifdef YY_USE_PROTOS
4627 static void yyunput( int c, register char *yy_bp )
/* [<][>][^][v][top][bottom][index][help] */
4628 #else
4629 static void yyunput( c, yy_bp )
4630 int c;
4631 register char *yy_bp;
4632 #endif
4633 {
4634 register char *yy_cp = yy_c_buf_p;
4635
4636 /* undo effects of setting up yytext */
4637 *yy_cp = yy_hold_char;
4638
4639 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4640 { /* need to shift things up to make room */
4641 /* +2 for EOB chars. */
4642 register int number_to_move = yy_n_chars + 2;
4643 register char *dest = &yy_current_buffer->yy_ch_buf[
4644 yy_current_buffer->yy_buf_size + 2];
4645 register char *source =
4646 &yy_current_buffer->yy_ch_buf[number_to_move];
4647
4648 while ( source > yy_current_buffer->yy_ch_buf )
4649 *--dest = *--source;
4650
4651 yy_cp += (int) (dest - source);
4652 yy_bp += (int) (dest - source);
4653 yy_current_buffer->yy_n_chars =
4654 yy_n_chars = yy_current_buffer->yy_buf_size;
4655
4656 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4657 YY_FATAL_ERROR( "flex scanner push-back overflow" );
4658 }
4659
4660 *--yy_cp = (char) c;
4661
4662
4663 yytext_ptr = yy_bp;
4664 yy_hold_char = *yy_cp;
4665 yy_c_buf_p = yy_cp;
4666 }
4667 #endif /* ifndef YY_NO_UNPUT */
4668
4669
4670 #ifdef __cplusplus
4671 static int yyinput()
/* [<][>][^][v][top][bottom][index][help] */
4672 #else
4673 static int input()
4674 #endif
4675 {
4676 int c;
4677
4678 *yy_c_buf_p = yy_hold_char;
4679
4680 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4681 {
4682 /* yy_c_buf_p now points to the character we want to return.
4683 * If this occurs *before* the EOB characters, then it's a
4684 * valid NUL; if not, then we've hit the end of the buffer.
4685 */
4686 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4687 /* This was really a NUL. */
4688 *yy_c_buf_p = '\0';
4689
4690 else
4691 { /* need more input */
4692 int offset = yy_c_buf_p - yytext_ptr;
4693 ++yy_c_buf_p;
4694
4695 switch ( yy_get_next_buffer() )
4696 {
4697 case EOB_ACT_LAST_MATCH:
4698 /* This happens because yy_g_n_b()
4699 * sees that we've accumulated a
4700 * token and flags that we need to
4701 * try matching the token before
4702 * proceeding. But for input(),
4703 * there's no matching to consider.
4704 * So convert the EOB_ACT_LAST_MATCH
4705 * to EOB_ACT_END_OF_FILE.
4706 */
4707
4708 /* Reset buffer status. */
4709 yyrestart( yyin );
4710
4711 /* fall through */
4712
4713 case EOB_ACT_END_OF_FILE:
4714 {
4715 if ( yywrap() )
4716 return EOF;
4717
4718 if ( ! yy_did_buffer_switch_on_eof )
4719 YY_NEW_FILE;
4720 #ifdef __cplusplus
4721 return yyinput();
4722 #else
4723 return input();
4724 #endif
4725 }
4726
4727 case EOB_ACT_CONTINUE_SCAN:
4728 yy_c_buf_p = yytext_ptr + offset;
4729 break;
4730 }
4731 }
4732 }
4733
4734 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
4735 *yy_c_buf_p = '\0'; /* preserve yytext */
4736 yy_hold_char = *++yy_c_buf_p;
4737
4738 yy_current_buffer->yy_at_bol = (c == '\n');
4739
4740 return c;
4741 }
4742
4743
4744 #ifdef YY_USE_PROTOS
4745 void yyrestart( FILE *input_file )
/* [<][>][^][v][top][bottom][index][help] */
4746 #else
4747 void yyrestart( input_file )
4748 FILE *input_file;
4749 #endif
4750 {
4751 if ( ! yy_current_buffer )
4752 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
4753
4754 yy_init_buffer( yy_current_buffer, input_file );
4755 yy_load_buffer_state();
4756 }
4757
4758
4759 #ifdef YY_USE_PROTOS
4760 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
/* [<][>][^][v][top][bottom][index][help] */
4761 #else
4762 void yy_switch_to_buffer( new_buffer )
4763 YY_BUFFER_STATE new_buffer;
4764 #endif
4765 {
4766 if ( yy_current_buffer == new_buffer )
4767 return;
4768
4769 if ( yy_current_buffer )
4770 {
4771 /* Flush out information for old buffer. */
4772 *yy_c_buf_p = yy_hold_char;
4773 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
4774 yy_current_buffer->yy_n_chars = yy_n_chars;
4775 }
4776
4777 yy_current_buffer = new_buffer;
4778 yy_load_buffer_state();
4779
4780 /* We don't actually know whether we did this switch during
4781 * EOF (yywrap()) processing, but the only time this flag
4782 * is looked at is after yywrap() is called, so it's safe
4783 * to go ahead and always set it.
4784 */
4785 yy_did_buffer_switch_on_eof = 1;
4786 }
4787
4788
4789 #ifdef YY_USE_PROTOS
4790 void yy_load_buffer_state( void )
/* [<][>][^][v][top][bottom][index][help] */
4791 #else
4792 void yy_load_buffer_state()
4793 #endif
4794 {
4795 yy_n_chars = yy_current_buffer->yy_n_chars;
4796 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
4797 yyin = yy_current_buffer->yy_input_file;
4798 yy_hold_char = *yy_c_buf_p;
4799 }
4800
4801
4802 #ifdef YY_USE_PROTOS
4803 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
/* [<][>][^][v][top][bottom][index][help] */
4804 #else
4805 YY_BUFFER_STATE yy_create_buffer( file, size )
4806 FILE *file;
4807 int size;
4808 #endif
4809 {
4810 YY_BUFFER_STATE b;
4811
4812 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4813 if ( ! b )
4814 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4815
4816 b->yy_buf_size = size;
4817
4818 /* yy_ch_buf has to be 2 characters longer than the size given because
4819 * we need to put in 2 end-of-buffer characters.
4820 */
4821 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
4822 if ( ! b->yy_ch_buf )
4823 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4824
4825 b->yy_is_our_buffer = 1;
4826
4827 yy_init_buffer( b, file );
4828
4829 return b;
4830 }
4831
4832
4833 #ifdef YY_USE_PROTOS
4834 void yy_delete_buffer( YY_BUFFER_STATE b )
/* [<][>][^][v][top][bottom][index][help] */
4835 #else
4836 void yy_delete_buffer( b )
4837 YY_BUFFER_STATE b;
4838 #endif
4839 {
4840 if ( ! b )
4841 return;
4842
4843 if ( b == yy_current_buffer )
4844 yy_current_buffer = (YY_BUFFER_STATE) 0;
4845
4846 if ( b->yy_is_our_buffer )
4847 yy_flex_free( (void *) b->yy_ch_buf );
4848
4849 yy_flex_free( (void *) b );
4850 }
4851
4852
4853 #ifndef YY_ALWAYS_INTERACTIVE
4854 #ifndef YY_NEVER_INTERACTIVE
4855 extern int isatty YY_PROTO(( int ));
4856 #endif
4857 #endif
4858
4859 #ifdef YY_USE_PROTOS
4860 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
/* [<][>][^][v][top][bottom][index][help] */
4861 #else
4862 void yy_init_buffer( b, file )
4863 YY_BUFFER_STATE b;
4864 FILE *file;
4865 #endif
4866
4867
4868 {
4869 yy_flush_buffer( b );
4870
4871 b->yy_input_file = file;
4872 b->yy_fill_buffer = 1;
4873
4874 #if YY_ALWAYS_INTERACTIVE
4875 b->yy_is_interactive = 1;
4876 #else
4877 #if YY_NEVER_INTERACTIVE
4878 b->yy_is_interactive = 0;
4879 #else
4880 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4881 #endif
4882 #endif
4883 }
4884
4885
4886 #ifdef YY_USE_PROTOS
4887 void yy_flush_buffer( YY_BUFFER_STATE b )
/* [<][>][^][v][top][bottom][index][help] */
4888 #else
4889 void yy_flush_buffer( b )
4890 YY_BUFFER_STATE b;
4891 #endif
4892
4893 {
4894 if ( ! b )
4895 return;
4896
4897 b->yy_n_chars = 0;
4898
4899 /* We always need two end-of-buffer characters. The first causes
4900 * a transition to the end-of-buffer state. The second causes
4901 * a jam in that state.
4902 */
4903 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4904 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4905
4906 b->yy_buf_pos = &b->yy_ch_buf[0];
4907
4908 b->yy_at_bol = 1;
4909 b->yy_buffer_status = YY_BUFFER_NEW;
4910
4911 if ( b == yy_current_buffer )
4912 yy_load_buffer_state();
4913 }
4914
4915
4916 #ifndef YY_NO_SCAN_BUFFER
4917 #ifdef YY_USE_PROTOS
4918 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
/* [<][>][^][v][top][bottom][index][help] */
4919 #else
4920 YY_BUFFER_STATE yy_scan_buffer( base, size )
4921 char *base;
4922 yy_size_t size;
4923 #endif
4924 {
4925 YY_BUFFER_STATE b;
4926
4927 if ( size < 2 ||
4928 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4929 base[size-1] != YY_END_OF_BUFFER_CHAR )
4930 /* They forgot to leave room for the EOB's. */
4931 return 0;
4932
4933 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4934 if ( ! b )
4935 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4936
4937 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4938 b->yy_buf_pos = b->yy_ch_buf = base;
4939 b->yy_is_our_buffer = 0;
4940 b->yy_input_file = 0;
4941 b->yy_n_chars = b->yy_buf_size;
4942 b->yy_is_interactive = 0;
4943 b->yy_at_bol = 1;
4944 b->yy_fill_buffer = 0;
4945 b->yy_buffer_status = YY_BUFFER_NEW;
4946
4947 yy_switch_to_buffer( b );
4948
4949 return b;
4950 }
4951 #endif
4952
4953
4954 #ifndef YY_NO_SCAN_STRING
4955 #ifdef YY_USE_PROTOS
4956 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
/* [<][>][^][v][top][bottom][index][help] */
4957 #else
4958 YY_BUFFER_STATE yy_scan_string( yy_str )
4959 yyconst char *yy_str;
4960 #endif
4961 {
4962 int len;
4963 for ( len = 0; yy_str[len]; ++len )
4964 ;
4965
4966 return yy_scan_bytes( yy_str, len );
4967 }
4968 #endif
4969
4970
4971 #ifndef YY_NO_SCAN_BYTES
4972 #ifdef YY_USE_PROTOS
4973 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
/* [<][>][^][v][top][bottom][index][help] */
4974 #else
4975 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
4976 yyconst char *bytes;
4977 int len;
4978 #endif
4979 {
4980 YY_BUFFER_STATE b;
4981 char *buf;
4982 yy_size_t n;
4983 int i;
4984
4985 /* Get memory for full buffer, including space for trailing EOB's. */
4986 n = len + 2;
4987 buf = (char *) yy_flex_alloc( n );
4988 if ( ! buf )
4989 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4990
4991 for ( i = 0; i < len; ++i )
4992 buf[i] = bytes[i];
4993
4994 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
4995
4996 b = yy_scan_buffer( buf, n );
4997 if ( ! b )
4998 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4999
5000 /* It's okay to grow etc. this buffer, and we should throw it
5001 * away when we're done.
5002 */
5003 b->yy_is_our_buffer = 1;
5004
5005 return b;
5006 }
5007 #endif
5008
5009
5010 #ifndef YY_NO_PUSH_STATE
5011 #ifdef YY_USE_PROTOS
5012 static void yy_push_state( int new_state )
/* [<][>][^][v][top][bottom][index][help] */
5013 #else
5014 static void yy_push_state( new_state )
5015 int new_state;
5016 #endif
5017 {
5018 if ( yy_start_stack_ptr >= yy_start_stack_depth )
5019 {
5020 yy_size_t new_size;
5021
5022 yy_start_stack_depth += YY_START_STACK_INCR;
5023 new_size = yy_start_stack_depth * sizeof( int );
5024
5025 if ( ! yy_start_stack )
5026 yy_start_stack = (int *) yy_flex_alloc( new_size );
5027
5028 else
5029 yy_start_stack = (int *) yy_flex_realloc(
5030 (void *) yy_start_stack, new_size );
5031
5032 if ( ! yy_start_stack )
5033 YY_FATAL_ERROR(
5034 "out of memory expanding start-condition stack" );
5035 }
5036
5037 yy_start_stack[yy_start_stack_ptr++] = YY_START;
5038
5039 BEGIN(new_state);
5040 }
5041 #endif
5042
5043
5044 #ifndef YY_NO_POP_STATE
5045 static void yy_pop_state()
/* [<][>][^][v][top][bottom][index][help] */
5046 {
5047 if ( --yy_start_stack_ptr < 0 )
5048 YY_FATAL_ERROR( "start-condition stack underflow" );
5049
5050 BEGIN(yy_start_stack[yy_start_stack_ptr]);
5051 }
5052 #endif
5053
5054
5055 #ifndef YY_NO_TOP_STATE
5056 static int yy_top_state()
/* [<][>][^][v][top][bottom][index][help] */
5057 {
5058 return yy_start_stack[yy_start_stack_ptr - 1];
5059 }
5060 #endif
5061
5062 #ifndef YY_EXIT_FAILURE
5063 #define YY_EXIT_FAILURE 2
5064 #endif
5065
5066 #ifdef YY_USE_PROTOS
5067 static void yy_fatal_error( yyconst char msg[] )
/* [<][>][^][v][top][bottom][index][help] */
5068 #else
5069 static void yy_fatal_error( msg )
5070 char msg[];
5071 #endif
5072 {
5073 (void) fprintf( stderr, "%s\n", msg );
5074 exit( YY_EXIT_FAILURE );
5075 }
5076
5077
5078
5079 /* Redefine yyless() so it works in section 3 code. */
5080
5081 #undef yyless
5082 #define yyless(n) \
/* [<][>][^][v][top][bottom][index][help] */
5083 do \
5084 { \
5085 /* Undo effects of setting up yytext. */ \
5086 yytext[yyleng] = yy_hold_char; \
5087 yy_c_buf_p = yytext + n; \
5088 yy_hold_char = *yy_c_buf_p; \
5089 *yy_c_buf_p = '\0'; \
5090 yyleng = n; \
5091 } \
5092 while ( 0 )
5093
5094
5095 /* Internal utility routines. */
5096
5097 #ifndef yytext_ptr
5098 #ifdef YY_USE_PROTOS
5099 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
/* [<][>][^][v][top][bottom][index][help] */
5100 #else
5101 static void yy_flex_strncpy( s1, s2, n )
5102 char *s1;
5103 yyconst char *s2;
5104 int n;
5105 #endif
5106 {
5107 register int i;
5108 for ( i = 0; i < n; ++i )
5109 s1[i] = s2[i];
5110 }
5111 #endif
5112
5113 #ifdef YY_NEED_STRLEN
5114 #ifdef YY_USE_PROTOS
5115 static int yy_flex_strlen( yyconst char *s )
/* [<][>][^][v][top][bottom][index][help] */
5116 #else
5117 static int yy_flex_strlen( s )
5118 yyconst char *s;
5119 #endif
5120 {
5121 register int n;
5122 for ( n = 0; s[n]; ++n )
5123 ;
5124
5125 return n;
5126 }
5127 #endif
5128
5129
5130 #ifdef YY_USE_PROTOS
5131 static void *yy_flex_alloc( yy_size_t size )
/* [<][>][^][v][top][bottom][index][help] */
5132 #else
5133 static void *yy_flex_alloc( size )
5134 yy_size_t size;
5135 #endif
5136 {
5137 return (void *) malloc( size );
5138 }
5139
5140 #ifdef YY_USE_PROTOS
5141 static void *yy_flex_realloc( void *ptr, yy_size_t size )
/* [<][>][^][v][top][bottom][index][help] */
5142 #else
5143 static void *yy_flex_realloc( ptr, size )
5144 void *ptr;
5145 yy_size_t size;
5146 #endif
5147 {
5148 /* The cast to (char *) in the following accommodates both
5149 * implementations that use char* generic pointers, and those
5150 * that use void* generic pointers. It works with the latter
5151 * because both ANSI C and C++ allow castless assignment from
5152 * any pointer type to void*, and deal with argument conversions
5153 * as though doing an assignment.
5154 */
5155 return (void *) realloc( (char *) ptr, size );
5156 }
5157
5158 #ifdef YY_USE_PROTOS
5159 static void yy_flex_free( void *ptr )
/* [<][>][^][v][top][bottom][index][help] */
5160 #else
5161 static void yy_flex_free( ptr )
5162 void *ptr;
5163 #endif
5164 {
5165 free( ptr );
5166 }
5167
5168 #if YY_MAIN
5169 int main()
/* [<][>][^][v][top][bottom][index][help] */
5170 {
5171 yylex();
5172 return 0;
5173 }
5174 #endif
5175 #line 627 "rpsl.l"
5176
5177 extern "C" {
5178 int yywrap () {
5179 return 1;
5180 }
5181 }
5182
5183 void handle_error(char *s, ...) {
/* [<][>][^][v][top][bottom][index][help] */
5184 current_object->has_error = true;
5185
5186 char buffer[1024] = "***";
5187 va_list ap;
5188 va_start(ap, s);
5189 vsprintf(buffer+3, s, ap);
5190 va_end(ap);
5191
5192 if (current_attribute)
5193 current_attribute->errors += buffer;
5194 else
5195 current_object->errors += buffer;
5196 }
5197
5198 void handle_object_error(char *s, ...) {
/* [<][>][^][v][top][bottom][index][help] */
5199 current_object->has_error = true;
5200
5201 char buffer[1024] = "***";
5202 va_list ap;
5203 va_start(ap, s);
5204 vsprintf(buffer+3, s, ap);
5205 va_end(ap);
5206
5207 current_object->errors += buffer;
5208 }
5209
5210 void rpslerror(char *, ...) {
/* [<][>][^][v][top][bottom][index][help] */
5211 if (current_attribute) {
5212 current_attribute->errorLine = errorLine;
5213 current_attribute->errorColon = errorColon - yyleng;
5214 current_attribute->errorLeng = yyleng;
5215 }
5216 }
5217
5218 void handle_warning(char *s, ...) {
/* [<][>][^][v][top][bottom][index][help] */
5219 current_object->has_warning = true;
5220
5221 char buffer[1024];
5222 va_list ap;
5223 va_start(ap, s);
5224 vsprintf(buffer, s, ap);
5225 va_end(ap);
5226
5227 if (current_attribute)
5228 current_attribute->errors += buffer;
5229 else
5230 current_object->errors += buffer;
5231 }
5232
5233 void yy_scan_object(Object *o) {
/* [<][>][^][v][top][bottom][index][help] */
5234 errorLine = 0;
5235 errorColon = 0;
5236 current_object = o;
5237 current_attribute = NULL;
5238 start_of_object = true;
5239 scan_position = 0;
5240 genericMode = true;
5241
5242 if (rpsl_buffer)
5243 yy_delete_buffer(rpsl_buffer);
5244 rpsl_buffer = yy_scan_bytes(o->contents, o->size);
5245 BEGIN(INITIAL);
5246 }
5247
5248 Attr *changeCurrentAttr(Attr *b) {
/* [<][>][^][v][top][bottom][index][help] */
5249 if (current_attribute) {
5250 b->object = current_attribute->object;
5251 b->type = current_attribute->type;
5252 b->offset = current_attribute->offset;;
5253 b->len = current_attribute->len;
5254 b->errors = current_attribute->errors;
5255 b->errorLine = current_attribute->errorLine;
5256 b->errorColon = current_attribute->errorColon;
5257 b->errorLeng = current_attribute->errorLeng;
5258 delete current_attribute;
5259 }
5260 current_attribute = b;
5261 return b;
5262 }
5263
5264 int validIPv6(const char *s){
/* [<][>][^][v][top][bottom][index][help] */
5265 char *string, *sleft, *sright, *pos;
5266 int countleft = 0, countright = 0;
5267 string = strdup(s);
5268 pos = strstr(string,"/");
5269 pos[0] = '\0';
5270 sleft = strdup(string);
5271 pos = strstr(sleft,"::");
5272 pos[0] = '\0';
5273 sright = pos + 2;
5274 // count the ':'s on the left
5275 for(int i=0;i<strlen(sleft);i++){
5276 if(sleft[i] == ':'){ countleft++;}
5277 }
5278 // count the ':'s on the right
5279 for(int i=0;i<strlen(sright);i++){
5280 if(sright[i] == ':'){ countright++;}
5281 }
5282 printf("The two parts are: %s and %s\nCounts are %i and %i\n",
5283 sleft, sright, countleft, countright);
5284
5285 // now, if the total # of quads is > 8, than there
5286 // is a problem with the syntax of the ipv6 address.
5287 if((countleft + 1 + countright + 1) <= 8 ){
5288 return 1;
5289 }else{
5290 return 0;
5291 }
5292 }
5293
5294 int validIntForPhone(const char * arg){
/* [<][>][^][v][top][bottom][index][help] */
5295 /* Checks if the integer is valid as a phone no (should not contain '+' or '-')*/
5296 if((strchr(arg,'+') == NULL) && (strchr(arg,'-') == NULL)){
5297 return 1;
5298 }
5299 return 0;
5300 }
5301