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