1 2#define YY_INT_ALIGNED short int 3 4/* A lexical scanner generated by flex */ 5 6#define FLEX_SCANNER 7#define YY_FLEX_MAJOR_VERSION 2 8#define YY_FLEX_MINOR_VERSION 6 9#define YY_FLEX_SUBMINOR_VERSION 4 10#if YY_FLEX_SUBMINOR_VERSION > 0 11#define FLEX_BETA 12#endif 13 14/* First, we deal with platform-specific or compiler-specific issues. */ 15 16/* begin standard C headers. */ 17#include <stdio.h> 18#include <string.h> 19#include <errno.h> 20#include <stdlib.h> 21 22/* end standard C headers. */ 23 24/* flex integer type definitions */ 25 26#ifndef FLEXINT_H 27#define FLEXINT_H 28 29/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 30 31#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 32 33/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 34 * if you want the limit (max/min) macros for int types. 35 */ 36#ifndef __STDC_LIMIT_MACROS 37#define __STDC_LIMIT_MACROS 1 38#endif 39 40#include <inttypes.h> 41typedef int8_t flex_int8_t; 42typedef uint8_t flex_uint8_t; 43typedef int16_t flex_int16_t; 44typedef uint16_t flex_uint16_t; 45typedef int32_t flex_int32_t; 46typedef uint32_t flex_uint32_t; 47#else 48typedef signed char flex_int8_t; 49typedef short int flex_int16_t; 50typedef int flex_int32_t; 51typedef unsigned char flex_uint8_t; 52typedef unsigned short int flex_uint16_t; 53typedef unsigned int flex_uint32_t; 54 55/* Limits of integral types. */ 56#ifndef INT8_MIN 57#define INT8_MIN (-128) 58#endif 59#ifndef INT16_MIN 60#define INT16_MIN (-32767-1) 61#endif 62#ifndef INT32_MIN 63#define INT32_MIN (-2147483647-1) 64#endif 65#ifndef INT8_MAX 66#define INT8_MAX (127) 67#endif 68#ifndef INT16_MAX 69#define INT16_MAX (32767) 70#endif 71#ifndef INT32_MAX 72#define INT32_MAX (2147483647) 73#endif 74#ifndef UINT8_MAX 75#define UINT8_MAX (255U) 76#endif 77#ifndef UINT16_MAX 78#define UINT16_MAX (65535U) 79#endif 80#ifndef UINT32_MAX 81#define UINT32_MAX (4294967295U) 82#endif 83 84#ifndef SIZE_MAX 85#define SIZE_MAX (~(size_t)0) 86#endif 87 88#endif /* ! C99 */ 89 90#endif /* ! FLEXINT_H */ 91 92/* begin standard C++ headers. */ 93 94/* TODO: this is always defined, so inline it */ 95#define yyconst const 96 97#if defined(__GNUC__) && __GNUC__ >= 3 98#define yynoreturn __attribute__((__noreturn__)) 99#else 100#define yynoreturn 101#endif 102 103/* Returned upon end-of-file. */ 104#define YY_NULL 0 105 106/* Promotes a possibly negative, possibly signed char to an 107 * integer in range [0..255] for use as an array index. 108 */ 109#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) 110 111/* Enter a start condition. This macro really ought to take a parameter, 112 * but we do it the disgusting crufty way forced on us by the ()-less 113 * definition of BEGIN. 114 */ 115#define BEGIN (yy_start) = 1 + 2 * 116/* Translate the current start state into a value that can be later handed 117 * to BEGIN to return to the state. The YYSTATE alias is for lex 118 * compatibility. 119 */ 120#define YY_START (((yy_start) - 1) / 2) 121#define YYSTATE YY_START 122/* Action number for EOF rule of a given start state. */ 123#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 124/* Special action meaning "start processing a new file". */ 125#define YY_NEW_FILE yyrestart( yyin ) 126#define YY_END_OF_BUFFER_CHAR 0 127 128/* Size of default input buffer. */ 129#ifndef YY_BUF_SIZE 130#ifdef __ia64__ 131/* On IA-64, the buffer size is 16k, not 8k. 132 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. 133 * Ditto for the __ia64__ case accordingly. 134 */ 135#define YY_BUF_SIZE 32768 136#else 137#define YY_BUF_SIZE 16384 138#endif /* __ia64__ */ 139#endif 140 141/* The state buf must be large enough to hold one state per character in the main buffer. 142 */ 143#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 144 145#ifndef YY_TYPEDEF_YY_BUFFER_STATE 146#define YY_TYPEDEF_YY_BUFFER_STATE 147typedef struct yy_buffer_state *YY_BUFFER_STATE; 148#endif 149 150#ifndef YY_TYPEDEF_YY_SIZE_T 151#define YY_TYPEDEF_YY_SIZE_T 152typedef size_t yy_size_t; 153#endif 154 155extern int yyleng; 156 157extern FILE *yyin, *yyout; 158 159#define EOB_ACT_CONTINUE_SCAN 0 160#define EOB_ACT_END_OF_FILE 1 161#define EOB_ACT_LAST_MATCH 2 162 163 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires 164 * access to the local variable yy_act. Since yyless() is a macro, it would break 165 * existing scanners that call yyless() from OUTSIDE yylex. 166 * One obvious solution it to make yy_act a global. I tried that, and saw 167 * a 5% performance hit in a non-yylineno scanner, because yy_act is 168 * normally declared as a register variable-- so it is not worth it. 169 */ 170 #define YY_LESS_LINENO(n) \ 171 do { \ 172 int yyl;\ 173 for ( yyl = n; yyl < yyleng; ++yyl )\ 174 if ( yytext[yyl] == '\n' )\ 175 --yylineno;\ 176 }while(0) 177 #define YY_LINENO_REWIND_TO(dst) \ 178 do {\ 179 const char *p;\ 180 for ( p = yy_cp-1; p >= (dst); --p)\ 181 if ( *p == '\n' )\ 182 --yylineno;\ 183 }while(0) 184 185/* Return all but the first "n" matched characters back to the input stream. */ 186#define yyless(n) \ 187 do \ 188 { \ 189 /* Undo effects of setting up yytext. */ \ 190 int yyless_macro_arg = (n); \ 191 YY_LESS_LINENO(yyless_macro_arg);\ 192 *yy_cp = (yy_hold_char); \ 193 YY_RESTORE_YY_MORE_OFFSET \ 194 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 195 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 196 } \ 197 while ( 0 ) 198#define unput(c) yyunput( c, (yytext_ptr) ) 199 200#ifndef YY_STRUCT_YY_BUFFER_STATE 201#define YY_STRUCT_YY_BUFFER_STATE 202struct yy_buffer_state 203 { 204 FILE *yy_input_file; 205 206 char *yy_ch_buf; /* input buffer */ 207 char *yy_buf_pos; /* current position in input buffer */ 208 209 /* Size of input buffer in bytes, not including room for EOB 210 * characters. 211 */ 212 int yy_buf_size; 213 214 /* Number of characters read into yy_ch_buf, not including EOB 215 * characters. 216 */ 217 int yy_n_chars; 218 219 /* Whether we "own" the buffer - i.e., we know we created it, 220 * and can realloc() it to grow it, and should free() it to 221 * delete it. 222 */ 223 int yy_is_our_buffer; 224 225 /* Whether this is an "interactive" input source; if so, and 226 * if we're using stdio for input, then we want to use getc() 227 * instead of fread(), to make sure we stop fetching input after 228 * each newline. 229 */ 230 int yy_is_interactive; 231 232 /* Whether we're considered to be at the beginning of a line. 233 * If so, '^' rules will be active on the next match, otherwise 234 * not. 235 */ 236 int yy_at_bol; 237 238 int yy_bs_lineno; /**< The line count. */ 239 int yy_bs_column; /**< The column count. */ 240 241 /* Whether to try to fill the input buffer when we reach the 242 * end of it. 243 */ 244 int yy_fill_buffer; 245 246 int yy_buffer_status; 247 248#define YY_BUFFER_NEW 0 249#define YY_BUFFER_NORMAL 1 250 /* When an EOF's been seen but there's still some text to process 251 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 252 * shouldn't try reading from the input source any more. We might 253 * still have a bunch of tokens to match, though, because of 254 * possible backing-up. 255 * 256 * When we actually see the EOF, we change the status to "new" 257 * (via yyrestart()), so that the user can continue scanning by 258 * just pointing yyin at a new input file. 259 */ 260#define YY_BUFFER_EOF_PENDING 2 261 262 }; 263#endif /* !YY_STRUCT_YY_BUFFER_STATE */ 264 265/* Stack of input buffers. */ 266static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ 267static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ 268static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ 269 270/* We provide macros for accessing buffer states in case in the 271 * future we want to put the buffer states in a more general 272 * "scanner state". 273 * 274 * Returns the top of the stack, or NULL. 275 */ 276#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ 277 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ 278 : NULL) 279/* Same as previous macro, but useful when we know that the buffer stack is not 280 * NULL or when we need an lvalue. For internal use only. 281 */ 282#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] 283 284/* yy_hold_char holds the character lost when yytext is formed. */ 285static char yy_hold_char; 286static int yy_n_chars; /* number of characters read into yy_ch_buf */ 287int yyleng; 288 289/* Points to current character in buffer. */ 290static char *yy_c_buf_p = NULL; 291static int yy_init = 0; /* whether we need to initialize */ 292static int yy_start = 0; /* start state number */ 293 294/* Flag which is used to allow yywrap()'s to do buffer switches 295 * instead of setting up a fresh yyin. A bit of a hack ... 296 */ 297static int yy_did_buffer_switch_on_eof; 298 299void yyrestart ( FILE *input_file ); 300void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); 301YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); 302void yy_delete_buffer ( YY_BUFFER_STATE b ); 303void yy_flush_buffer ( YY_BUFFER_STATE b ); 304void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); 305void yypop_buffer_state ( void ); 306 307static void yyensure_buffer_stack ( void ); 308static void yy_load_buffer_state ( void ); 309static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); 310#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) 311 312YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); 313YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); 314YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); 315 316void *yyalloc ( yy_size_t ); 317void *yyrealloc ( void *, yy_size_t ); 318void yyfree ( void * ); 319 320#define yy_new_buffer yy_create_buffer 321#define yy_set_interactive(is_interactive) \ 322 { \ 323 if ( ! YY_CURRENT_BUFFER ){ \ 324 yyensure_buffer_stack (); \ 325 YY_CURRENT_BUFFER_LVALUE = \ 326 yy_create_buffer( yyin, YY_BUF_SIZE ); \ 327 } \ 328 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 329 } 330#define yy_set_bol(at_bol) \ 331 { \ 332 if ( ! YY_CURRENT_BUFFER ){\ 333 yyensure_buffer_stack (); \ 334 YY_CURRENT_BUFFER_LVALUE = \ 335 yy_create_buffer( yyin, YY_BUF_SIZE ); \ 336 } \ 337 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 338 } 339#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 340 341/* Begin user sect3 */ 342 343#define yywrap() (/*CONSTCOND*/1) 344#define YY_SKIP_YYWRAP 345typedef flex_uint8_t YY_CHAR; 346 347FILE *yyin = NULL, *yyout = NULL; 348 349typedef int yy_state_type; 350 351extern int yylineno; 352int yylineno = 1; 353 354extern char *yytext; 355#ifdef yytext_ptr 356#undef yytext_ptr 357#endif 358#define yytext_ptr yytext 359 360static const flex_int16_t yy_nxt[][42] = 361 { 362 { 363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367 0, 0 368 }, 369 370 { 371 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, 372 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, 373 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, 374 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, 375 21, 40 376 377 }, 378 379 { 380 9, 10, 11, 12, 13, 14, 15, 16, 17, 14, 381 18, 19, 20, 21, 22, 23, 24, 25, 26, 21, 382 21, 27, 28, 29, 30, 21, 21, 31, 32, 21, 383 33, 21, 34, 35, 36, 37, 38, 21, 39, 21, 384 21, 40 385 }, 386 387 { 388 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, 389 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 390 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 391 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 392 41, 41 393 394 }, 395 396 { 397 9, 41, 42, 43, 41, 41, 41, 41, 41, 41, 398 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 399 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 400 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 401 41, 41 402 }, 403 404 { 405 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, 406 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 407 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 408 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 409 44, 44 410 411 }, 412 413 { 414 9, 44, 45, 46, 44, 44, 44, 44, 44, 44, 415 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 416 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 417 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 418 44, 44 419 }, 420 421 { 422 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, 423 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, 424 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 425 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 426 47, 47 427 428 }, 429 430 { 431 9, 47, 47, 48, 47, 49, 47, 50, 47, 49, 432 47, 47, 47, 47, 47, 47, 47, 47, 51, 47, 433 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 434 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 435 47, 47 436 }, 437 438 { 439 -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 440 -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 441 -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 442 -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 443 -9, -9 444 445 }, 446 447 { 448 9, -10, -10, -10, -10, -10, -10, -10, -10, -10, 449 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, 450 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, 451 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, 452 -10, -10 453 }, 454 455 { 456 9, -11, 52, -11, -11, -11, -11, -11, -11, -11, 457 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 458 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 459 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 460 -11, -11 461 462 }, 463 464 { 465 9, -12, -12, -12, -12, -12, -12, -12, -12, -12, 466 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 467 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 468 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 469 -12, -12 470 }, 471 472 { 473 9, -13, -13, -13, -13, -13, -13, -13, -13, -13, 474 -13, -13, -13, -13, -13, -13, 53, -13, -13, -13, 475 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 476 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 477 -13, -13 478 479 }, 480 481 { 482 9, -14, -14, -14, -14, -14, -14, -14, -14, -14, 483 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 484 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 485 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 486 -14, -14 487 }, 488 489 { 490 9, 54, 54, -15, 54, 54, 54, 54, 54, 54, 491 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 492 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 493 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 494 54, 54 495 496 }, 497 498 { 499 9, -16, -16, -16, -16, -16, -16, 55, -16, -16, 500 -16, -16, -16, 55, -16, -16, -16, -16, -16, 55, 501 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 502 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 503 55, -16 504 }, 505 506 { 507 9, -17, -17, -17, -17, -17, -17, -17, 56, -17, 508 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 509 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 510 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 511 -17, -17 512 513 }, 514 515 { 516 9, -18, -18, -18, -18, -18, -18, -18, -18, -18, 517 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 518 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 519 -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 520 -18, -18 521 }, 522 523 { 524 9, -19, -19, -19, -19, -19, -19, -19, -19, -19, 525 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 526 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 527 -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 528 -19, -19 529 530 }, 531 532 { 533 9, -20, -20, -20, -20, -20, -20, -20, -20, -20, 534 -20, -20, -20, -20, -20, -20, 57, -20, -20, -20, 535 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, 536 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, 537 -20, -20 538 }, 539 540 { 541 9, -21, -21, -21, -21, -21, -21, 55, -21, -21, 542 -21, -21, -21, 58, -21, -21, -21, -21, -21, 58, 543 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 544 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 545 58, -21 546 547 }, 548 549 { 550 9, -22, -22, -22, -22, -22, -22, -22, -22, -22, 551 -22, -22, -22, -22, -22, -22, 59, -22, -22, -22, 552 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 553 -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 554 -22, -22 555 }, 556 557 { 558 9, -23, -23, -23, -23, -23, -23, -23, -23, -23, 559 -23, -23, -23, -23, -23, -23, 60, -23, -23, -23, 560 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 561 -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 562 -23, -23 563 564 }, 565 566 { 567 9, -24, -24, -24, -24, -24, -24, -24, -24, -24, 568 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, 569 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, 570 -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, 571 -24, -24 572 }, 573 574 { 575 9, -25, -25, -25, -25, -25, -25, -25, -25, -25, 576 -25, -25, -25, -25, -25, -25, 61, -25, -25, -25, 577 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 578 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 579 -25, -25 580 581 }, 582 583 { 584 9, -26, -26, 62, -26, -26, -26, -26, -26, -26, 585 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 586 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 587 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, 588 -26, -26 589 }, 590 591 { 592 9, -27, -27, -27, -27, -27, -27, 55, -27, -27, 593 -27, -27, -27, 58, -27, -27, -27, -27, -27, 58, 594 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 595 58, 58, 63, 58, 58, 58, 58, 58, 58, 58, 596 58, -27 597 598 }, 599 600 { 601 9, -28, -28, -28, -28, -28, -28, 55, -28, -28, 602 -28, -28, -28, 58, -28, -28, -28, -28, -28, 58, 603 58, 58, 58, 58, 58, 58, 58, 64, 58, 58, 604 58, 58, 65, 58, 58, 58, 58, 58, 58, 58, 605 58, -28 606 }, 607 608 { 609 9, -29, -29, -29, -29, -29, -29, 55, -29, -29, 610 -29, -29, -29, 58, -29, -29, -29, -29, -29, 58, 611 58, 58, 58, 58, 66, 58, 58, 58, 58, 58, 612 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 613 58, -29 614 615 }, 616 617 { 618 9, -30, -30, -30, -30, -30, -30, 55, -30, -30, 619 -30, -30, -30, 58, -30, -30, -30, -30, -30, 58, 620 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 621 58, 67, 58, 58, 58, 58, 58, 58, 58, 58, 622 58, -30 623 }, 624 625 { 626 9, -31, -31, -31, -31, -31, -31, 55, -31, -31, 627 -31, -31, -31, 58, -31, -31, -31, -31, -31, 58, 628 58, 58, 58, 58, 68, 58, 58, 58, 58, 58, 629 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 630 58, -31 631 632 }, 633 634 { 635 9, -32, -32, -32, -32, -32, -32, 55, -32, -32, 636 -32, -32, -32, 58, -32, -32, -32, -32, -32, 58, 637 58, 58, 58, 58, 58, 69, 58, 58, 58, 58, 638 70, 71, 58, 58, 58, 58, 58, 58, 58, 58, 639 58, -32 640 }, 641 642 { 643 9, -33, -33, -33, -33, -33, -33, 55, -33, -33, 644 -33, -33, -33, 58, -33, -33, -33, -33, -33, 58, 645 72, 58, 58, 58, 73, 58, 58, 58, 58, 58, 646 58, 58, 74, 58, 58, 58, 58, 58, 58, 58, 647 58, -33 648 649 }, 650 651 { 652 9, -34, -34, -34, -34, -34, -34, 55, -34, -34, 653 -34, -34, -34, 58, -34, -34, -34, -34, -34, 58, 654 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 655 58, 75, 58, 76, 58, 58, 58, 58, 58, 58, 656 58, -34 657 }, 658 659 { 660 9, -35, -35, -35, -35, -35, -35, 55, -35, -35, 661 -35, -35, -35, 58, -35, -35, -35, -35, -35, 58, 662 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 663 58, 58, 58, 58, 77, 58, 58, 58, 58, 58, 664 58, -35 665 666 }, 667 668 { 669 9, -36, -36, -36, -36, -36, -36, 55, -36, -36, 670 -36, -36, -36, 58, -36, -36, -36, -36, -36, 58, 671 78, 58, 58, 58, 58, 58, 58, 58, 58, 58, 672 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 673 58, -36 674 }, 675 676 { 677 9, -37, -37, -37, -37, -37, -37, 55, -37, -37, 678 -37, -37, -37, 58, -37, -37, -37, -37, -37, 58, 679 58, 58, 58, 58, 79, 58, 58, 58, 58, 58, 680 58, 58, 80, 58, 58, 58, 81, 58, 58, 58, 681 58, -37 682 683 }, 684 685 { 686 9, -38, -38, -38, -38, -38, -38, 55, -38, -38, 687 -38, -38, -38, 58, -38, -38, -38, -38, -38, 58, 688 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 689 58, 58, 58, 58, 82, 58, 58, 58, 58, 58, 690 58, -38 691 }, 692 693 { 694 9, -39, -39, -39, -39, -39, -39, 55, -39, -39, 695 -39, -39, -39, 58, -39, -39, -39, -39, -39, 58, 696 58, 58, 58, 58, 58, 58, 58, 58, 83, 58, 697 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 698 58, -39 699 700 }, 701 702 { 703 9, -40, -40, -40, -40, -40, -40, -40, -40, -40, 704 -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, 705 -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, 706 -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, 707 -40, 84 708 }, 709 710 { 711 9, 85, 86, -41, 85, 85, 85, 85, 85, 85, 712 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 713 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 714 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 715 85, 85 716 717 }, 718 719 { 720 9, -42, -42, -42, -42, -42, -42, -42, -42, -42, 721 -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 722 -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 723 -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 724 -42, -42 725 }, 726 727 { 728 9, -43, -43, -43, -43, -43, -43, -43, -43, -43, 729 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 730 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 731 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 732 -43, -43 733 734 }, 735 736 { 737 9, 87, 87, -44, 87, 87, 87, 87, 87, 87, 738 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 739 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 740 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 741 87, 87 742 }, 743 744 { 745 9, -45, 88, 89, -45, -45, -45, -45, -45, -45, 746 -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, 747 -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, 748 -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, 749 -45, -45 750 751 }, 752 753 { 754 9, 90, -46, -46, 90, 90, 90, 90, 90, 90, 755 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 756 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 757 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 758 90, 90 759 }, 760 761 { 762 9, 91, 91, -47, 91, -47, 91, -47, 91, -47, 763 91, 91, 91, 91, 91, 91, 91, 91, -47, 91, 764 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 765 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 766 91, 91 767 768 }, 769 770 { 771 9, -48, -48, -48, -48, -48, -48, -48, -48, -48, 772 -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, 773 -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, 774 -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, 775 -48, -48 776 }, 777 778 { 779 9, -49, -49, -49, -49, -49, -49, -49, -49, -49, 780 -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, 781 -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, 782 -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, 783 -49, -49 784 785 }, 786 787 { 788 9, 92, 92, -50, 92, 92, 92, 92, 92, 92, 789 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 790 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 791 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 792 92, 92 793 }, 794 795 { 796 9, 93, 93, -51, 93, 93, 93, 93, 93, 93, 797 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 798 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 799 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 800 93, 93 801 802 }, 803 804 { 805 9, -52, 52, -52, -52, -52, -52, -52, -52, -52, 806 -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 807 -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 808 -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 809 -52, -52 810 }, 811 812 { 813 9, -53, -53, -53, -53, -53, -53, -53, -53, -53, 814 -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, 815 -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, 816 -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, 817 -53, -53 818 819 }, 820 821 { 822 9, 54, 54, -54, 54, 54, 54, 54, 54, 54, 823 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 824 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 825 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 826 54, 54 827 }, 828 829 { 830 9, -55, -55, -55, -55, -55, -55, 55, -55, -55, 831 -55, -55, -55, 55, -55, -55, -55, -55, -55, 55, 832 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 833 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 834 55, -55 835 836 }, 837 838 { 839 9, -56, -56, -56, -56, -56, -56, -56, -56, -56, 840 -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, 841 -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, 842 -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, 843 -56, -56 844 }, 845 846 { 847 9, -57, -57, -57, -57, -57, -57, -57, -57, -57, 848 -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, 849 -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, 850 -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, 851 -57, -57 852 853 }, 854 855 { 856 9, -58, -58, -58, -58, -58, -58, 55, -58, -58, 857 -58, -58, -58, 58, -58, -58, -58, -58, -58, 58, 858 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 859 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 860 58, -58 861 }, 862 863 { 864 9, -59, -59, -59, -59, -59, -59, -59, -59, -59, 865 -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, 866 -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, 867 -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, 868 -59, -59 869 870 }, 871 872 { 873 9, -60, -60, -60, -60, -60, -60, -60, -60, -60, 874 -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, 875 -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, 876 -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, 877 -60, -60 878 }, 879 880 { 881 9, -61, -61, -61, -61, -61, -61, -61, -61, -61, 882 -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, 883 -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, 884 -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, 885 -61, -61 886 887 }, 888 889 { 890 9, -62, -62, -62, -62, -62, -62, -62, -62, -62, 891 -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, 892 -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, 893 -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, 894 -62, -62 895 }, 896 897 { 898 9, -63, -63, -63, -63, -63, -63, 55, -63, -63, 899 -63, -63, -63, 58, -63, -63, -63, -63, -63, 58, 900 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 901 58, 58, 94, 58, 58, 58, 58, 58, 58, 58, 902 58, -63 903 904 }, 905 906 { 907 9, -64, -64, -64, -64, -64, -64, 55, -64, -64, 908 -64, -64, -64, 58, -64, -64, -64, -64, -64, 58, 909 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 910 58, 58, 95, 58, 58, 58, 58, 58, 58, 58, 911 58, -64 912 }, 913 914 { 915 9, -65, -65, -65, -65, -65, -65, 55, -65, -65, 916 -65, -65, -65, 58, -65, -65, -65, -65, -65, 58, 917 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 918 96, 97, 58, 58, 58, 58, 58, 58, 58, 58, 919 58, -65 920 921 }, 922 923 { 924 9, -66, -66, -66, -66, -66, -66, 55, -66, -66, 925 -66, -66, -66, 58, -66, -66, -66, -66, -66, 58, 926 58, 58, 58, 58, 58, 98, 58, 58, 58, 58, 927 58, 58, 58, 99, 58, 58, 58, 58, 58, 58, 928 58, -66 929 }, 930 931 { 932 9, -67, -67, -67, -67, -67, -67, 55, -67, -67, 933 -67, -67, -67, 58, -67, -67, -67, -67, -67, 58, 934 58, 58, 58, 100, 58, 58, 58, 58, 58, 58, 935 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 936 58, -67 937 938 }, 939 940 { 941 9, -68, -68, -68, -68, -68, -68, 55, -68, -68, 942 -68, -68, -68, 58, -68, -68, -68, -68, -68, 58, 943 58, 58, 58, 58, 58, 58, 58, 58, 58, 101, 944 58, 58, 58, 58, 58, 58, 58, 58, 58, 102, 945 58, -68 946 }, 947 948 { 949 9, -69, -69, -69, -69, -69, -69, 55, -69, -69, 950 -69, -69, -69, 58, -69, -69, -69, -69, -69, 58, 951 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 952 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 953 58, -69 954 955 }, 956 957 { 958 9, -70, -70, -70, -70, -70, -70, 55, -70, -70, 959 -70, -70, -70, 58, -70, -70, -70, -70, -70, 58, 960 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 961 58, 58, 58, 103, 58, 58, 58, 58, 58, 58, 962 58, -70 963 }, 964 965 { 966 9, -71, -71, -71, -71, -71, -71, 55, -71, -71, 967 -71, -71, -71, 58, -71, -71, -71, -71, -71, 58, 968 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 969 58, 58, 58, 58, 58, 58, 104, 58, 58, 58, 970 58, -71 971 972 }, 973 974 { 975 9, -72, -72, -72, -72, -72, -72, 55, -72, -72, 976 -72, -72, -72, 58, -72, -72, -72, -72, -72, 58, 977 58, 58, 58, 58, 58, 58, 58, 58, 105, 58, 978 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 979 58, -72 980 }, 981 982 { 983 9, -73, -73, -73, -73, -73, -73, 55, -73, -73, 984 -73, -73, -73, 58, -73, -73, -73, -73, -73, 58, 985 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 986 58, 106, 58, 58, 58, 58, 58, 58, 58, 58, 987 58, -73 988 989 }, 990 991 { 992 9, -74, -74, -74, -74, -74, -74, 55, -74, -74, 993 -74, -74, -74, 58, -74, -74, -74, -74, -74, 58, 994 58, 58, 58, 107, 58, 58, 58, 58, 58, 58, 995 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 996 58, -74 997 }, 998 999 { 1000 9, -75, -75, -75, -75, -75, -75, 55, -75, -75, 1001 -75, -75, -75, 58, -75, -75, -75, -75, -75, 58, 1002 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1003 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1004 58, -75 1005 1006 }, 1007 1008 { 1009 9, -76, -76, -76, -76, -76, -76, 55, -76, -76, 1010 -76, -76, -76, 58, -76, -76, -76, -76, -76, 58, 1011 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1012 58, 58, 58, 58, 58, 58, 108, 58, 58, 58, 1013 58, -76 1014 }, 1015 1016 { 1017 9, -77, -77, -77, -77, -77, -77, 55, -77, -77, 1018 -77, -77, -77, 58, -77, -77, -77, -77, -77, 58, 1019 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1020 58, 58, 109, 58, 58, 58, 58, 58, 58, 58, 1021 58, -77 1022 1023 }, 1024 1025 { 1026 9, -78, -78, -78, -78, -78, -78, 55, -78, -78, 1027 -78, -78, -78, 58, -78, -78, -78, -78, -78, 58, 1028 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1029 58, 110, 58, 58, 58, 58, 58, 58, 58, 58, 1030 58, -78 1031 }, 1032 1033 { 1034 9, -79, -79, -79, -79, -79, -79, 55, -79, -79, 1035 -79, -79, -79, 58, -79, -79, -79, -79, -79, 58, 1036 58, 58, 58, 58, 58, 58, 58, 58, 58, 111, 1037 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1038 58, -79 1039 1040 }, 1041 1042 { 1043 9, -80, -80, -80, -80, -80, -80, 55, -80, -80, 1044 -80, -80, -80, 58, -80, -80, -80, -80, -80, 58, 1045 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1046 58, 58, 58, 58, 58, 58, 58, 112, 58, 58, 1047 58, -80 1048 }, 1049 1050 { 1051 9, -81, -81, -81, -81, -81, -81, 55, -81, -81, 1052 -81, -81, -81, 58, -81, -81, -81, -81, -81, 58, 1053 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1054 58, 58, 58, 58, 113, 58, 58, 58, 58, 58, 1055 58, -81 1056 1057 }, 1058 1059 { 1060 9, -82, -82, -82, -82, -82, -82, 55, -82, -82, 1061 -82, -82, -82, 58, -82, -82, -82, -82, -82, 58, 1062 58, 58, 58, 58, 58, 58, 58, 58, 114, 58, 1063 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1064 58, -82 1065 }, 1066 1067 { 1068 9, -83, -83, -83, -83, -83, -83, 55, -83, -83, 1069 -83, -83, -83, 58, -83, -83, -83, -83, -83, 58, 1070 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1071 58, 58, 58, 58, 58, 115, 58, 58, 58, 58, 1072 58, -83 1073 1074 }, 1075 1076 { 1077 9, -84, -84, -84, -84, -84, -84, -84, -84, -84, 1078 -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, 1079 -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, 1080 -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, 1081 -84, -84 1082 }, 1083 1084 { 1085 9, 85, 86, -85, 85, 85, 85, 85, 85, 85, 1086 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 1087 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 1088 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 1089 85, 85 1090 1091 }, 1092 1093 { 1094 9, 86, 86, -86, 86, 86, 86, 86, 86, 86, 1095 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1096 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1097 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1098 86, 86 1099 }, 1100 1101 { 1102 9, 87, 87, -87, 87, 87, 87, 87, 87, 87, 1103 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 1104 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 1105 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 1106 87, 87 1107 1108 }, 1109 1110 { 1111 9, -88, 88, 89, -88, -88, -88, -88, -88, -88, 1112 -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, 1113 -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, 1114 -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, 1115 -88, -88 1116 }, 1117 1118 { 1119 9, 90, -89, -89, 90, 90, 90, 90, 90, 90, 1120 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1121 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1122 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1123 90, 90 1124 1125 }, 1126 1127 { 1128 9, -90, -90, -90, -90, -90, -90, -90, -90, -90, 1129 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, 1130 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, 1131 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, 1132 -90, -90 1133 }, 1134 1135 { 1136 9, 91, 91, -91, 91, -91, 91, -91, 91, -91, 1137 91, 91, 91, 91, 91, 91, 91, 91, -91, 91, 1138 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1139 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1140 91, 91 1141 1142 }, 1143 1144 { 1145 9, 92, 92, -92, 92, 92, 92, 92, 92, 92, 1146 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 1147 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 1148 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 1149 92, 92 1150 }, 1151 1152 { 1153 9, -93, -93, -93, -93, -93, -93, -93, -93, -93, 1154 -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, 1155 -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, 1156 -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, 1157 -93, -93 1158 1159 }, 1160 1161 { 1162 9, -94, -94, -94, -94, -94, -94, 55, -94, -94, 1163 -94, -94, -94, 58, -94, -94, -94, -94, -94, 58, 1164 58, 58, 58, 58, 58, 58, 58, 58, 58, 116, 1165 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1166 58, -94 1167 }, 1168 1169 { 1170 9, -95, -95, -95, -95, -95, -95, 55, -95, -95, 1171 -95, -95, -95, 58, -95, -95, -95, -95, -95, 58, 1172 58, 58, 58, 58, 58, 58, 58, 58, 117, 58, 1173 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1174 58, -95 1175 1176 }, 1177 1178 { 1179 9, -96, -96, -96, -96, -96, -96, 55, -96, -96, 1180 -96, -96, -96, 58, -96, -96, -96, -96, -96, 58, 1181 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1182 118, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1183 58, -96 1184 }, 1185 1186 { 1187 9, -97, -97, -97, -97, -97, -97, 55, -97, -97, 1188 -97, -97, -97, 58, -97, -97, -97, -97, -97, 58, 1189 58, 58, 58, 58, 58, 119, 58, 58, 58, 58, 1190 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1191 58, -97 1192 1193 }, 1194 1195 { 1196 9, -98, -98, -98, -98, -98, -98, 55, -98, -98, 1197 -98, -98, -98, 58, -98, -98, -98, -98, -98, 120, 1198 121, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1199 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1200 58, -98 1201 }, 1202 1203 { 1204 9, -99, -99, -99, -99, -99, -99, 55, -99, -99, 1205 -99, -99, -99, 58, -99, -99, -99, -99, -99, 58, 1206 58, 58, 58, 58, 122, 58, 58, 58, 58, 58, 1207 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1208 58, -99 1209 1210 }, 1211 1212 { 1213 9, -100, -100, -100, -100, -100, -100, 55, -100, -100, 1214 -100, -100, -100, 58, -100, -100, -100, -100, -100, 58, 1215 58, 58, 123, 58, 58, 58, 58, 58, 124, 58, 1216 125, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1217 58, -100 1218 }, 1219 1220 { 1221 9, -101, -101, -101, -101, -101, -101, 55, -101, -101, 1222 -101, -101, -101, 58, -101, -101, -101, -101, -101, 58, 1223 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1224 58, 58, 58, 126, 58, 58, 58, 58, 58, 58, 1225 58, -101 1226 1227 }, 1228 1229 { 1230 9, -102, -102, -102, -102, -102, -102, 55, -102, -102, 1231 -102, -102, -102, 58, -102, -102, -102, -102, -102, 58, 1232 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1233 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1234 58, -102 1235 }, 1236 1237 { 1238 9, -103, -103, -103, -103, -103, -103, 55, -103, -103, 1239 -103, -103, -103, 58, -103, -103, -103, -103, -103, 58, 1240 58, 58, 58, 58, 58, 58, 58, 58, 58, 127, 1241 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1242 58, -103 1243 1244 }, 1245 1246 { 1247 9, -104, -104, -104, -104, -104, -104, 55, -104, -104, 1248 -104, -104, -104, 58, -104, -104, -104, -104, -104, 58, 1249 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1250 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1251 58, -104 1252 }, 1253 1254 { 1255 9, -105, -105, -105, -105, -105, -105, 55, -105, -105, 1256 -105, -105, -105, 58, -105, -105, -105, -105, -105, 58, 1257 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1258 58, 128, 58, 58, 58, 58, 58, 58, 58, 58, 1259 58, -105 1260 1261 }, 1262 1263 { 1264 9, -106, -106, -106, -106, -106, -106, 55, -106, -106, 1265 -106, -106, -106, 58, -106, -106, -106, -106, -106, 58, 1266 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1267 58, 58, 58, 58, 58, 58, 58, 129, 58, 58, 1268 58, -106 1269 }, 1270 1271 { 1272 9, -107, -107, -107, -107, -107, -107, 55, -107, -107, 1273 -107, -107, -107, 58, -107, -107, -107, -107, -107, 58, 1274 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1275 58, 58, 58, 58, 58, 58, 58, 130, 58, 58, 1276 58, -107 1277 1278 }, 1279 1280 { 1281 9, -108, -108, -108, -108, -108, -108, 55, -108, -108, 1282 -108, -108, -108, 58, -108, -108, -108, -108, -108, 58, 1283 58, 58, 58, 58, 58, 58, 58, 58, 131, 58, 1284 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1285 58, -108 1286 }, 1287 1288 { 1289 9, -109, -109, -109, -109, -109, -109, 55, -109, -109, 1290 -109, -109, -109, 58, -109, -109, -109, -109, -109, 58, 1291 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1292 132, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1293 58, -109 1294 1295 }, 1296 1297 { 1298 9, -110, -110, -110, -110, -110, -110, 55, -110, -110, 1299 -110, -110, -110, 58, -110, -110, -110, -110, -110, 58, 1300 58, 58, 58, 58, 58, 58, 133, 58, 58, 58, 1301 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1302 58, -110 1303 }, 1304 1305 { 1306 9, -111, -111, -111, -111, -111, -111, 55, -111, -111, 1307 -111, -111, -111, 58, -111, -111, -111, -111, -111, 58, 1308 58, 58, 58, 58, 134, 58, 58, 58, 58, 58, 1309 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1310 58, -111 1311 1312 }, 1313 1314 { 1315 9, -112, -112, -112, -112, -112, -112, 55, -112, -112, 1316 -112, -112, -112, 58, -112, -112, -112, -112, -112, 58, 1317 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1318 58, 58, 58, 58, 135, 58, 58, 58, 58, 58, 1319 58, -112 1320 }, 1321 1322 { 1323 9, -113, -113, -113, -113, -113, -113, 55, -113, -113, 1324 -113, -113, -113, 58, -113, -113, -113, -113, -113, 58, 1325 58, 58, 58, 58, 58, 58, 58, 58, 136, 58, 1326 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1327 58, -113 1328 1329 }, 1330 1331 { 1332 9, -114, -114, -114, -114, -114, -114, 55, -114, -114, 1333 -114, -114, -114, 58, -114, -114, -114, -114, -114, 58, 1334 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1335 58, 58, 58, 58, 58, 137, 58, 58, 58, 58, 1336 58, -114 1337 }, 1338 1339 { 1340 9, -115, -115, -115, -115, -115, -115, 55, -115, -115, 1341 -115, -115, -115, 58, -115, -115, -115, -115, -115, 58, 1342 58, 58, 58, 58, 58, 58, 58, 58, 138, 58, 1343 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1344 58, -115 1345 1346 }, 1347 1348 { 1349 9, -116, -116, -116, -116, -116, -116, 55, -116, -116, 1350 -116, -116, -116, 58, -116, -116, -116, -116, -116, 58, 1351 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1352 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1353 58, -116 1354 }, 1355 1356 { 1357 9, -117, -117, -117, -117, -117, -117, 55, -117, -117, 1358 -117, -117, -117, 58, -117, -117, -117, -117, -117, 58, 1359 58, 58, 139, 58, 58, 58, 58, 58, 58, 58, 1360 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1361 58, -117 1362 1363 }, 1364 1365 { 1366 9, -118, -118, -118, -118, -118, -118, 55, -118, -118, 1367 -118, -118, -118, 58, -118, -118, -118, -118, -118, 58, 1368 58, 58, 58, 58, 140, 58, 58, 58, 58, 58, 1369 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1370 58, -118 1371 }, 1372 1373 { 1374 9, -119, -119, -119, -119, -119, -119, 55, -119, -119, 1375 -119, -119, -119, 58, -119, -119, -119, -119, -119, 58, 1376 58, 58, 58, 58, 58, 58, 58, 58, 141, 58, 1377 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1378 58, -119 1379 1380 }, 1381 1382 { 1383 9, -120, -120, -120, -120, -120, -120, 55, -120, -120, 1384 -120, -120, -120, 58, -120, -120, -120, -120, -120, 58, 1385 58, 142, 58, 58, 58, 58, 58, 58, 58, 58, 1386 58, 58, 58, 58, 58, 58, 143, 58, 58, 58, 1387 58, -120 1388 }, 1389 1390 { 1391 9, -121, -121, -121, -121, -121, -121, 55, -121, -121, 1392 -121, -121, -121, 58, -121, -121, -121, -121, -121, 58, 1393 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1394 58, 58, 58, 58, 58, 58, 58, 144, 58, 58, 1395 58, -121 1396 1397 }, 1398 1399 { 1400 9, -122, -122, -122, -122, -122, -122, 55, -122, -122, 1401 -122, -122, -122, 58, -122, -122, -122, -122, -122, 58, 1402 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1403 58, 145, 58, 58, 58, 58, 58, 58, 58, 58, 1404 58, -122 1405 }, 1406 1407 { 1408 9, -123, -123, -123, -123, -123, -123, 55, -123, -123, 1409 -123, -123, -123, 58, -123, -123, -123, -123, -123, 58, 1410 58, 58, 58, 58, 58, 58, 58, 146, 58, 58, 1411 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1412 58, -123 1413 1414 }, 1415 1416 { 1417 9, -124, -124, -124, -124, -124, -124, 55, -124, -124, 1418 -124, -124, -124, 58, -124, -124, -124, -124, -124, 58, 1419 58, 58, 58, 58, 58, 147, 58, 58, 58, 58, 1420 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1421 58, -124 1422 }, 1423 1424 { 1425 9, -125, -125, -125, -125, -125, -125, 55, -125, -125, 1426 -125, -125, -125, 58, -125, -125, -125, -125, -125, 58, 1427 58, 58, 58, 58, 148, 58, 58, 58, 58, 58, 1428 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1429 58, -125 1430 1431 }, 1432 1433 { 1434 9, -126, -126, -126, -126, -126, -126, 55, -126, -126, 1435 -126, -126, -126, 58, -126, -126, -126, -126, -126, 58, 1436 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1437 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1438 58, -126 1439 }, 1440 1441 { 1442 9, -127, -127, -127, -127, -127, -127, 55, -127, -127, 1443 -127, -127, -127, 58, -127, -127, -127, -127, -127, 58, 1444 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1445 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1446 149, -127 1447 1448 }, 1449 1450 { 1451 9, -128, -128, -128, -128, -128, -128, 55, -128, -128, 1452 -128, -128, -128, 58, -128, -128, -128, -128, -128, 58, 1453 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1454 150, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1455 58, -128 1456 }, 1457 1458 { 1459 9, -129, -129, -129, -129, -129, -129, 55, -129, -129, 1460 -129, -129, -129, 58, -129, -129, -129, -129, -129, 58, 1461 58, 58, 151, 58, 58, 58, 58, 58, 58, 58, 1462 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1463 58, -129 1464 1465 }, 1466 1467 { 1468 9, -130, -130, -130, -130, -130, -130, 55, -130, -130, 1469 -130, -130, -130, 58, -130, -130, -130, -130, -130, 58, 1470 58, 58, 58, 58, 58, 58, 58, 58, 58, 152, 1471 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1472 58, -130 1473 }, 1474 1475 { 1476 9, -131, -131, -131, -131, -131, -131, 55, -131, -131, 1477 -131, -131, -131, 58, -131, -131, -131, -131, -131, 58, 1478 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1479 58, 58, 153, 58, 58, 58, 58, 58, 58, 58, 1480 58, -131 1481 1482 }, 1483 1484 { 1485 9, -132, -132, -132, -132, -132, -132, 55, -132, -132, 1486 -132, -132, -132, 58, -132, -132, -132, -132, -132, 58, 1487 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1488 58, 58, 58, 154, 58, 58, 58, 58, 58, 58, 1489 58, -132 1490 }, 1491 1492 { 1493 9, -133, -133, -133, -133, -133, -133, 55, -133, -133, 1494 -133, -133, -133, 58, -133, -133, -133, -133, -133, 58, 1495 58, 58, 58, 58, 155, 58, 58, 58, 58, 58, 1496 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1497 58, -133 1498 1499 }, 1500 1501 { 1502 9, -134, -134, -134, -134, -134, -134, 55, -134, -134, 1503 -134, -134, -134, 58, -134, -134, -134, -134, -134, 58, 1504 58, 58, 156, 58, 58, 58, 58, 58, 58, 58, 1505 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1506 58, -134 1507 }, 1508 1509 { 1510 9, -135, -135, -135, -135, -135, -135, 55, -135, -135, 1511 -135, -135, -135, 58, -135, -135, -135, -135, -135, 58, 1512 58, 58, 157, 58, 58, 58, 58, 58, 58, 58, 1513 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1514 58, -135 1515 1516 }, 1517 1518 { 1519 9, -136, -136, -136, -136, -136, -136, 55, -136, -136, 1520 -136, -136, -136, 58, -136, -136, -136, -136, -136, 58, 1521 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1522 58, 158, 58, 58, 58, 58, 58, 58, 58, 58, 1523 58, -136 1524 }, 1525 1526 { 1527 9, -137, -137, -137, -137, -137, -137, 55, -137, -137, 1528 -137, -137, -137, 58, -137, -137, -137, -137, -137, 58, 1529 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1530 58, 58, 58, 58, 58, 58, 159, 58, 58, 58, 1531 58, -137 1532 1533 }, 1534 1535 { 1536 9, -138, -138, -138, -138, -138, -138, 55, -138, -138, 1537 -138, -138, -138, 58, -138, -138, -138, -138, -138, 58, 1538 58, 160, 58, 58, 58, 58, 58, 58, 58, 58, 1539 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1540 58, -138 1541 }, 1542 1543 { 1544 9, -139, -139, -139, -139, -139, -139, 55, -139, -139, 1545 -139, -139, -139, 58, -139, -139, -139, -139, -139, 58, 1546 58, 58, 58, 58, 161, 58, 58, 58, 58, 58, 1547 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1548 58, -139 1549 1550 }, 1551 1552 { 1553 9, -140, -140, -140, -140, -140, -140, 55, -140, -140, 1554 -140, -140, -140, 58, -140, -140, -140, -140, -140, 58, 1555 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1556 58, 162, 58, 58, 58, 58, 58, 58, 58, 58, 1557 58, -140 1558 }, 1559 1560 { 1561 9, -141, -141, -141, -141, -141, -141, 55, -141, -141, 1562 -141, -141, -141, 58, -141, -141, -141, -141, -141, 58, 1563 58, 58, 58, 58, 58, 58, 163, 58, 58, 58, 1564 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1565 58, -141 1566 1567 }, 1568 1569 { 1570 9, -142, -142, -142, -142, -142, -142, 55, -142, -142, 1571 -142, -142, -142, 58, -142, -142, -142, -142, -142, 58, 1572 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1573 58, 58, 164, 58, 58, 58, 58, 58, 58, 58, 1574 58, -142 1575 }, 1576 1577 { 1578 9, -143, -143, -143, -143, -143, -143, 55, -143, -143, 1579 -143, -143, -143, 58, -143, -143, -143, -143, -143, 58, 1580 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1581 58, 58, 58, 58, 165, 58, 58, 58, 58, 58, 1582 58, -143 1583 1584 }, 1585 1586 { 1587 9, -144, -144, -144, -144, -144, -144, 55, -144, -144, 1588 -144, -144, -144, 58, -144, -144, -144, -144, -144, 58, 1589 58, 58, 58, 58, 58, 58, 58, 58, 58, 166, 1590 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1591 58, -144 1592 }, 1593 1594 { 1595 9, -145, -145, -145, -145, -145, -145, 55, -145, -145, 1596 -145, -145, -145, 58, -145, -145, -145, -145, -145, 58, 1597 58, 58, 58, 167, 58, 58, 58, 58, 58, 58, 1598 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1599 58, -145 1600 1601 }, 1602 1603 { 1604 9, -146, -146, -146, -146, -146, -146, 55, -146, -146, 1605 -146, -146, -146, 58, -146, -146, -146, -146, -146, 58, 1606 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1607 58, 58, 168, 58, 58, 58, 58, 58, 58, 58, 1608 58, -146 1609 }, 1610 1611 { 1612 9, -147, -147, -147, -147, -147, -147, 55, -147, -147, 1613 -147, -147, -147, 58, -147, -147, -147, -147, -147, 58, 1614 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1615 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1616 58, -147 1617 1618 }, 1619 1620 { 1621 9, -148, -148, -148, -148, -148, -148, 55, -148, -148, 1622 -148, -148, -148, 58, -148, -148, -148, -148, -148, 58, 1623 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1624 58, 169, 58, 58, 58, 58, 58, 58, 58, 58, 1625 58, -148 1626 }, 1627 1628 { 1629 9, -149, -149, -149, -149, -149, -149, 55, -149, -149, 1630 -149, -149, -149, 58, -149, -149, -149, -149, -149, 58, 1631 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1632 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1633 58, -149 1634 1635 }, 1636 1637 { 1638 9, -150, -150, -150, -150, -150, -150, 55, -150, -150, 1639 -150, -150, -150, 58, -150, -150, -150, -150, -150, 58, 1640 58, 58, 58, 58, 170, 58, 58, 58, 58, 58, 1641 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1642 58, -150 1643 }, 1644 1645 { 1646 9, -151, -151, -151, -151, -151, -151, 55, -151, -151, 1647 -151, -151, -151, 58, -151, -151, -151, -151, -151, 58, 1648 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1649 58, 58, 171, 58, 58, 58, 58, 58, 58, 58, 1650 58, -151 1651 1652 }, 1653 1654 { 1655 9, -152, -152, -152, -152, -152, -152, 55, -152, -152, 1656 -152, -152, -152, 58, -152, -152, -152, -152, -152, 58, 1657 58, 58, 58, 58, 172, 58, 58, 58, 58, 58, 1658 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1659 58, -152 1660 }, 1661 1662 { 1663 9, -153, -153, -153, -153, -153, -153, 55, -153, -153, 1664 -153, -153, -153, 58, -153, -153, -153, -153, -153, 58, 1665 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1666 58, 173, 58, 58, 58, 58, 58, 58, 58, 58, 1667 58, -153 1668 1669 }, 1670 1671 { 1672 9, -154, -154, -154, -154, -154, -154, 55, -154, -154, 1673 -154, -154, -154, 58, -154, -154, -154, -154, -154, 58, 1674 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1675 58, 58, 58, 58, 58, 58, 174, 58, 58, 58, 1676 58, -154 1677 }, 1678 1679 { 1680 9, -155, -155, -155, -155, -155, -155, 55, -155, -155, 1681 -155, -155, -155, 58, -155, -155, -155, -155, -155, 58, 1682 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1683 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1684 58, -155 1685 1686 }, 1687 1688 { 1689 9, -156, -156, -156, -156, -156, -156, 55, -156, -156, 1690 -156, -156, -156, 58, -156, -156, -156, -156, -156, 58, 1691 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1692 58, 58, 58, 58, 58, 58, 175, 58, 58, 58, 1693 58, -156 1694 }, 1695 1696 { 1697 9, -157, -157, -157, -157, -157, -157, 55, -157, -157, 1698 -157, -157, -157, 58, -157, -157, -157, -157, -157, 58, 1699 58, 58, 58, 58, 176, 58, 58, 58, 58, 58, 1700 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1701 58, -157 1702 1703 }, 1704 1705 { 1706 9, -158, -158, -158, -158, -158, -158, 55, -158, -158, 1707 -158, -158, -158, 58, -158, -158, -158, -158, -158, 58, 1708 58, 58, 58, 58, 58, 58, 177, 58, 58, 58, 1709 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1710 58, -158 1711 }, 1712 1713 { 1714 9, -159, -159, -159, -159, -159, -159, 55, -159, -159, 1715 -159, -159, -159, 58, -159, -159, -159, -159, -159, 58, 1716 178, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1717 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1718 58, -159 1719 1720 }, 1721 1722 { 1723 9, -160, -160, -160, -160, -160, -160, 55, -160, -160, 1724 -160, -160, -160, 58, -160, -160, -160, -160, -160, 58, 1725 58, 58, 58, 58, 58, 58, 58, 58, 58, 179, 1726 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1727 58, -160 1728 }, 1729 1730 { 1731 9, -161, -161, -161, -161, -161, -161, 55, -161, -161, 1732 -161, -161, -161, 58, -161, -161, -161, -161, -161, 58, 1733 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1734 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1735 58, -161 1736 1737 }, 1738 1739 { 1740 9, -162, -162, -162, -162, -162, -162, 55, -162, -162, 1741 -162, -162, -162, 58, -162, -162, -162, -162, -162, 58, 1742 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1743 58, 58, 58, 58, 58, 58, 180, 58, 58, 58, 1744 58, -162 1745 }, 1746 1747 { 1748 9, -163, -163, -163, -163, -163, -163, 55, -163, -163, 1749 -163, -163, -163, 58, -163, -163, -163, -163, -163, 58, 1750 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1751 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1752 58, -163 1753 1754 }, 1755 1756 { 1757 9, -164, -164, -164, -164, -164, -164, 55, -164, -164, 1758 -164, -164, -164, 58, -164, -164, -164, -164, -164, 58, 1759 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1760 58, 58, 181, 58, 58, 58, 58, 58, 58, 58, 1761 58, -164 1762 }, 1763 1764 { 1765 9, -165, -165, -165, -165, -165, -165, 55, -165, -165, 1766 -165, -165, -165, 58, -165, -165, -165, -165, -165, 58, 1767 58, 58, 58, 58, 58, 58, 58, 58, 182, 58, 1768 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1769 58, -165 1770 1771 }, 1772 1773 { 1774 9, -166, -166, -166, -166, -166, -166, 55, -166, -166, 1775 -166, -166, -166, 58, -166, -166, -166, -166, -166, 58, 1776 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1777 58, 58, 58, 58, 58, 58, 183, 58, 58, 58, 1778 58, -166 1779 }, 1780 1781 { 1782 9, -167, -167, -167, -167, -167, -167, 55, -167, -167, 1783 -167, -167, -167, 58, -167, -167, -167, -167, -167, 58, 1784 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1785 58, 58, 58, 58, 58, 184, 58, 58, 58, 58, 1786 58, -167 1787 1788 }, 1789 1790 { 1791 9, -168, -168, -168, -168, -168, -168, 55, -168, -168, 1792 -168, -168, -168, 58, -168, -168, -168, -168, -168, 58, 1793 58, 58, 58, 58, 58, 58, 58, 58, 185, 58, 1794 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1795 58, -168 1796 }, 1797 1798 { 1799 9, -169, -169, -169, -169, -169, -169, 55, -169, -169, 1800 -169, -169, -169, 58, -169, -169, -169, -169, -169, 58, 1801 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1802 58, 58, 58, 58, 58, 58, 58, 186, 58, 58, 1803 58, -169 1804 1805 }, 1806 1807 { 1808 9, -170, -170, -170, -170, -170, -170, 55, -170, -170, 1809 -170, -170, -170, 58, -170, -170, -170, -170, -170, 58, 1810 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1811 58, 187, 58, 58, 58, 58, 58, 58, 58, 58, 1812 58, -170 1813 }, 1814 1815 { 1816 9, -171, -171, -171, -171, -171, -171, 55, -171, -171, 1817 -171, -171, -171, 58, -171, -171, -171, -171, -171, 58, 1818 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1819 58, 188, 58, 58, 58, 58, 58, 58, 58, 58, 1820 58, -171 1821 1822 }, 1823 1824 { 1825 9, -172, -172, -172, -172, -172, -172, 55, -172, -172, 1826 -172, -172, -172, 58, -172, -172, -172, -172, -172, 58, 1827 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1828 58, 58, 58, 58, 58, 189, 58, 58, 58, 58, 1829 58, -172 1830 }, 1831 1832 { 1833 9, -173, -173, -173, -173, -173, -173, 55, -173, -173, 1834 -173, -173, -173, 58, -173, -173, -173, -173, -173, 58, 1835 190, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1836 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1837 58, -173 1838 1839 }, 1840 1841 { 1842 9, -174, -174, -174, -174, -174, -174, 55, -174, -174, 1843 -174, -174, -174, 58, -174, -174, -174, -174, -174, 58, 1844 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1845 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1846 58, -174 1847 }, 1848 1849 { 1850 9, -175, -175, -175, -175, -175, -175, 55, -175, -175, 1851 -175, -175, -175, 58, -175, -175, -175, -175, -175, 58, 1852 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1853 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1854 58, -175 1855 1856 }, 1857 1858 { 1859 9, -176, -176, -176, -176, -176, -176, 55, -176, -176, 1860 -176, -176, -176, 58, -176, -176, -176, -176, -176, 58, 1861 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1862 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1863 58, -176 1864 }, 1865 1866 { 1867 9, -177, -177, -177, -177, -177, -177, 55, -177, -177, 1868 -177, -177, -177, 58, -177, -177, -177, -177, -177, 58, 1869 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1870 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1871 58, -177 1872 1873 }, 1874 1875 { 1876 9, -178, -178, -178, -178, -178, -178, 55, -178, -178, 1877 -178, -178, -178, 58, -178, -178, -178, -178, -178, 58, 1878 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1879 58, 58, 58, 58, 58, 58, 191, 58, 58, 58, 1880 58, -178 1881 }, 1882 1883 { 1884 9, -179, -179, -179, -179, -179, -179, 55, -179, -179, 1885 -179, -179, -179, 58, -179, -179, -179, -179, -179, 58, 1886 58, 58, 58, 58, 192, 58, 58, 58, 58, 58, 1887 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1888 58, -179 1889 1890 }, 1891 1892 { 1893 9, -180, -180, -180, -180, -180, -180, 55, -180, -180, 1894 -180, -180, -180, 58, -180, -180, -180, -180, -180, 58, 1895 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1896 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1897 58, -180 1898 }, 1899 1900 { 1901 9, -181, -181, -181, -181, -181, -181, 55, -181, -181, 1902 -181, -181, -181, 58, -181, -181, -181, -181, -181, 58, 1903 58, 58, 58, 58, 58, 58, 58, 58, 58, 193, 1904 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1905 58, -181 1906 1907 }, 1908 1909 { 1910 9, -182, -182, -182, -182, -182, -182, 55, -182, -182, 1911 -182, -182, -182, 58, -182, -182, -182, -182, -182, 58, 1912 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1913 58, 58, 58, 58, 58, 194, 58, 58, 58, 58, 1914 58, -182 1915 }, 1916 1917 { 1918 9, -183, -183, -183, -183, -183, -183, 55, -183, -183, 1919 -183, -183, -183, 58, -183, -183, -183, -183, -183, 58, 1920 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1921 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1922 58, -183 1923 1924 }, 1925 1926 { 1927 9, -184, -184, -184, -184, -184, -184, 55, -184, -184, 1928 -184, -184, -184, 58, -184, -184, -184, -184, -184, 58, 1929 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1930 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1931 58, -184 1932 }, 1933 1934 { 1935 9, -185, -185, -185, -185, -185, -185, 55, -185, -185, 1936 -185, -185, -185, 58, -185, -185, -185, -185, -185, 58, 1937 58, 58, 195, 58, 58, 58, 58, 58, 58, 58, 1938 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1939 58, -185 1940 1941 }, 1942 1943 { 1944 9, -186, -186, -186, -186, -186, -186, 55, -186, -186, 1945 -186, -186, -186, 58, -186, -186, -186, -186, -186, 58, 1946 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1947 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1948 58, -186 1949 }, 1950 1951 { 1952 9, -187, -187, -187, -187, -187, -187, 55, -187, -187, 1953 -187, -187, -187, 58, -187, -187, -187, -187, -187, 58, 1954 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1955 58, 58, 58, 58, 58, 58, 58, 196, 58, 58, 1956 58, -187 1957 1958 }, 1959 1960 { 1961 9, -188, -188, -188, -188, -188, -188, 55, -188, -188, 1962 -188, -188, -188, 58, -188, -188, -188, -188, -188, 58, 1963 58, 58, 58, 58, 58, 197, 58, 58, 58, 58, 1964 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1965 58, -188 1966 }, 1967 1968 { 1969 9, -189, -189, -189, -189, -189, -189, 55, -189, -189, 1970 -189, -189, -189, 58, -189, -189, -189, -189, -189, 58, 1971 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1972 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1973 58, -189 1974 1975 }, 1976 1977 { 1978 9, -190, -190, -190, -190, -190, -190, 55, -190, -190, 1979 -190, -190, -190, 58, -190, -190, -190, -190, -190, 58, 1980 58, 58, 58, 58, 58, 58, 58, 58, 58, 198, 1981 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1982 58, -190 1983 }, 1984 1985 { 1986 9, -191, -191, -191, -191, -191, -191, 55, -191, -191, 1987 -191, -191, -191, 58, -191, -191, -191, -191, -191, 58, 1988 58, 58, 58, 58, 199, 58, 58, 58, 58, 58, 1989 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1990 58, -191 1991 1992 }, 1993 1994 { 1995 9, -192, -192, -192, -192, -192, -192, 55, -192, -192, 1996 -192, -192, -192, 58, -192, -192, -192, -192, -192, 58, 1997 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1998 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1999 58, -192 2000 }, 2001 2002 { 2003 9, -193, -193, -193, -193, -193, -193, 55, -193, -193, 2004 -193, -193, -193, 58, -193, -193, -193, -193, -193, 58, 2005 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2006 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2007 58, -193 2008 2009 }, 2010 2011 { 2012 9, -194, -194, -194, -194, -194, -194, 55, -194, -194, 2013 -194, -194, -194, 58, -194, -194, -194, -194, -194, 58, 2014 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2015 58, 58, 58, 58, 58, 58, 200, 58, 58, 58, 2016 58, -194 2017 }, 2018 2019 { 2020 9, -195, -195, -195, -195, -195, -195, 55, -195, -195, 2021 -195, -195, -195, 58, -195, -195, -195, -195, -195, 58, 2022 58, 58, 58, 58, 201, 58, 58, 58, 58, 58, 2023 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2024 58, -195 2025 2026 }, 2027 2028 { 2029 9, -196, -196, -196, -196, -196, -196, 55, -196, -196, 2030 -196, -196, -196, 58, -196, -196, -196, -196, -196, 58, 2031 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2032 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2033 58, -196 2034 }, 2035 2036 { 2037 9, -197, -197, -197, -197, -197, -197, 55, -197, -197, 2038 -197, -197, -197, 58, -197, -197, -197, -197, -197, 58, 2039 58, 58, 58, 58, 58, 58, 58, 58, 202, 58, 2040 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2041 58, -197 2042 2043 }, 2044 2045 { 2046 9, -198, -198, -198, -198, -198, -198, 55, -198, -198, 2047 -198, -198, -198, 58, -198, -198, -198, -198, -198, 58, 2048 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2049 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2050 58, -198 2051 }, 2052 2053 { 2054 9, -199, -199, -199, -199, -199, -199, 55, -199, -199, 2055 -199, -199, -199, 58, -199, -199, -199, -199, -199, 58, 2056 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2057 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2058 58, -199 2059 2060 }, 2061 2062 { 2063 9, -200, -200, -200, -200, -200, -200, 55, -200, -200, 2064 -200, -200, -200, 58, -200, -200, -200, -200, -200, 58, 2065 203, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2066 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2067 58, -200 2068 }, 2069 2070 { 2071 9, -201, -201, -201, -201, -201, -201, 55, -201, -201, 2072 -201, -201, -201, 58, -201, -201, -201, -201, -201, 58, 2073 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2074 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2075 58, -201 2076 2077 }, 2078 2079 { 2080 9, -202, -202, -202, -202, -202, -202, 55, -202, -202, 2081 -202, -202, -202, 58, -202, -202, -202, -202, -202, 58, 2082 58, 58, 58, 58, 58, 58, 204, 58, 58, 58, 2083 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2084 58, -202 2085 }, 2086 2087 { 2088 9, -203, -203, -203, -203, -203, -203, 55, -203, -203, 2089 -203, -203, -203, 58, -203, -203, -203, -203, -203, 58, 2090 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2091 58, 58, 58, 58, 58, 58, 205, 58, 58, 58, 2092 58, -203 2093 2094 }, 2095 2096 { 2097 9, -204, -204, -204, -204, -204, -204, 55, -204, -204, 2098 -204, -204, -204, 58, -204, -204, -204, -204, -204, 58, 2099 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2100 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2101 58, -204 2102 }, 2103 2104 { 2105 9, -205, -205, -205, -205, -205, -205, 55, -205, -205, 2106 -205, -205, -205, 58, -205, -205, -205, -205, -205, 58, 2107 58, 58, 58, 58, 206, 58, 58, 58, 58, 58, 2108 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2109 58, -205 2110 2111 }, 2112 2113 { 2114 9, -206, -206, -206, -206, -206, -206, 55, -206, -206, 2115 -206, -206, -206, 58, -206, -206, -206, -206, -206, 58, 2116 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2117 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2118 58, -206 2119 }, 2120 2121 } ; 2122 2123static yy_state_type yy_get_previous_state ( void ); 2124static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); 2125static int yy_get_next_buffer ( void ); 2126static void yynoreturn yy_fatal_error ( const char* msg ); 2127 2128/* Done after the current pattern has been matched and before the 2129 * corresponding action - sets up yytext. 2130 */ 2131#define YY_DO_BEFORE_ACTION \ 2132 (yytext_ptr) = yy_bp; \ 2133 yyleng = (int) (yy_cp - yy_bp); \ 2134 (yy_hold_char) = *yy_cp; \ 2135 *yy_cp = '\0'; \ 2136 (yy_c_buf_p) = yy_cp; 2137#define YY_NUM_RULES 63 2138#define YY_END_OF_BUFFER 64 2139/* This struct is not used in this scanner, 2140 but its presence is necessary. */ 2141struct yy_trans_info 2142 { 2143 flex_int32_t yy_verify; 2144 flex_int32_t yy_nxt; 2145 }; 2146static const flex_int16_t yy_accept[207] = 2147 { 0, 2148 2, 2, 0, 0, 0, 0, 0, 0, 64, 50, 2149 2, 4, 42, 47, 1, 49, 50, 43, 44, 50, 2150 48, 50, 38, 36, 40, 50, 48, 48, 48, 48, 2151 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 2152 51, 53, 52, 62, 59, 61, 55, 58, 57, 54, 2153 56, 2, 37, 1, 49, 35, 46, 48, 45, 39, 2154 41, 3, 48, 48, 48, 48, 48, 48, 18, 48, 2155 48, 48, 48, 48, 25, 48, 48, 48, 48, 48, 2156 48, 48, 48, 34, 51, 51, 62, 59, 61, 60, 2157 55, 54, 56, 48, 48, 48, 48, 48, 48, 48, 2158 2159 48, 17, 48, 20, 48, 48, 48, 48, 48, 48, 2160 48, 48, 48, 48, 48, 5, 48, 48, 48, 48, 2161 48, 48, 48, 48, 48, 16, 48, 48, 22, 48, 2162 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 2163 48, 48, 48, 48, 48, 48, 14, 48, 19, 48, 2164 48, 48, 48, 48, 28, 48, 48, 48, 48, 48, 2165 6, 48, 8, 48, 48, 48, 48, 48, 48, 48, 2166 48, 48, 48, 27, 29, 30, 31, 48, 48, 7, 2167 48, 48, 11, 12, 48, 15, 48, 48, 24, 48, 2168 48, 33, 9, 48, 48, 21, 48, 26, 32, 48, 2169 2170 13, 48, 48, 23, 48, 10 2171 } ; 2172 2173static const YY_CHAR yy_ec[256] = 2174 { 0, 2175 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2176 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2177 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2178 1, 2, 4, 5, 6, 7, 1, 8, 9, 10, 2179 11, 1, 12, 1, 13, 1, 1, 13, 13, 13, 2180 13, 13, 13, 13, 13, 13, 13, 14, 1, 15, 2181 16, 17, 1, 1, 13, 13, 13, 13, 13, 13, 2182 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2183 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2184 1, 18, 1, 1, 19, 1, 20, 21, 22, 23, 2185 2186 24, 25, 26, 27, 28, 13, 13, 29, 30, 31, 2187 32, 33, 13, 34, 35, 36, 37, 38, 13, 39, 2188 40, 13, 1, 41, 1, 1, 1, 1, 1, 1, 2189 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2190 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2191 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2192 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2193 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2194 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2195 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2196 2197 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2198 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2199 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2200 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2201 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2202 1, 1, 1, 1, 1 2203 } ; 2204 2205/* Table of booleans, true if rule could match eol. */ 2206static const flex_int32_t yy_rule_can_match_eol[64] = 2207 { 0, 22080, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2211 1, 1, 0, 0, }; 2212 2213extern int yy_flex_debug; 2214int yy_flex_debug = 0; 2215 2216/* The intent behind this definition is that it'll catch 2217 * any uses of REJECT which flex missed. 2218 */ 2219#define REJECT reject_used_but_not_detected 2220#define yymore() yymore_used_but_not_detected 2221#define YY_MORE_ADJ 0 2222#define YY_RESTORE_YY_MORE_OFFSET 2223char *yytext; 2224/* SPDX-License-Identifier: GPL-2.0-only */ 2225/* 2226 * Copyright (C) 2002 Roman Zippel <[email protected]> 2227 */ 2228 2229#include <assert.h> 2230#include <glob.h> 2231#include <limits.h> 2232#include <stdio.h> 2233#include <stdlib.h> 2234#include <string.h> 2235 2236#include "lkc.h" 2237#include "parser.tab.h" 2238 2239#define YY_DECL static int yylex1(void) 2240 2241#define START_STRSIZE 16 2242 2243static struct { 2244 struct file *file; 2245 int lineno; 2246} current_pos; 2247 2248static int prev_prev_token = T_EOL; 2249static int prev_token = T_EOL; 2250static char *text; 2251static int text_size, text_asize; 2252 2253struct buffer { 2254 struct buffer *parent; 2255 YY_BUFFER_STATE state; 2256}; 2257 2258static struct buffer *current_buf; 2259 2260static int last_ts, first_ts; 2261 2262static char *expand_token(const char *in, size_t n); 2263static void append_expanded_string(const char *in); 2264static void zconf_endhelp(void); 2265static void zconf_endfile(void); 2266 2267static void new_string(void) 2268{ 2269 text = xmalloc(START_STRSIZE); 2270 text_asize = START_STRSIZE; 2271 text_size = 0; 2272 *text = 0; 2273} 2274 2275static void append_string(const char *str, int size) 2276{ 2277 int new_size = text_size + size + 1; 2278 if (new_size > text_asize) { 2279 new_size += START_STRSIZE - 1; 2280 new_size &= -START_STRSIZE; 2281 text = xrealloc(text, new_size); 2282 text_asize = new_size; 2283 } 2284 memcpy(text + text_size, str, size); 2285 text_size += size; 2286 text[text_size] = 0; 2287} 2288 2289static void alloc_string(const char *str, int size) 2290{ 2291 text = xmalloc(size + 1); 2292 memcpy(text, str, size); 2293 text[size] = 0; 2294} 2295 2296static void warn_ignored_character(char chr) 2297{ 2298 fprintf(stderr, 2299 "%s:%d:warning: ignoring unsupported character '%c'\n", 2300 current_file->name, yylineno, chr); 2301} 2302 2303#define INITIAL 0 2304#define ASSIGN_VAL 1 2305#define HELP 2 2306#define STRING 3 2307 2308#ifndef YY_NO_UNISTD_H 2309/* Special case for "unistd.h", since it is non-ANSI. We include it way 2310 * down here because we want the user's section 1 to have been scanned first. 2311 * The user has a chance to override it with an option. 2312 */ 2313#include <unistd.h> 2314#endif 2315 2316#ifndef YY_EXTRA_TYPE 2317#define YY_EXTRA_TYPE void * 2318#endif 2319 2320static int yy_init_globals ( void ); 2321 2322/* Accessor methods to globals. 2323 These are made visible to non-reentrant scanners for convenience. */ 2324 2325int yylex_destroy ( void ); 2326 2327int yyget_debug ( void ); 2328 2329void yyset_debug ( int debug_flag ); 2330 2331YY_EXTRA_TYPE yyget_extra ( void ); 2332 2333void yyset_extra ( YY_EXTRA_TYPE user_defined ); 2334 2335FILE *yyget_in ( void ); 2336 2337void yyset_in ( FILE * _in_str ); 2338 2339FILE *yyget_out ( void ); 2340 2341void yyset_out ( FILE * _out_str ); 2342 2343 int yyget_leng ( void ); 2344 2345char *yyget_text ( void ); 2346 2347int yyget_lineno ( void ); 2348 2349void yyset_lineno ( int _line_number ); 2350 2351/* Macros after this point can all be overridden by user definitions in 2352 * section 1. 2353 */ 2354 2355#ifndef YY_SKIP_YYWRAP 2356#ifdef __cplusplus 2357extern "C" int yywrap ( void ); 2358#else 2359extern int yywrap ( void ); 2360#endif 2361#endif 2362 2363#ifndef YY_NO_UNPUT 2364 2365 static void yyunput ( int c, char *buf_ptr ); 2366 2367#endif 2368 2369#ifndef yytext_ptr 2370static void yy_flex_strncpy ( char *, const char *, int ); 2371#endif 2372 2373#ifdef YY_NEED_STRLEN 2374static int yy_flex_strlen ( const char * ); 2375#endif 2376 2377#ifndef YY_NO_INPUT 2378#ifdef __cplusplus 2379static int yyinput ( void ); 2380#else 2381static int input ( void ); 2382#endif 2383 2384#endif 2385 2386/* Amount of stuff to slurp up with each read. */ 2387#ifndef YY_READ_BUF_SIZE 2388#ifdef __ia64__ 2389/* On IA-64, the buffer size is 16k, not 8k */ 2390#define YY_READ_BUF_SIZE 16384 2391#else 2392#define YY_READ_BUF_SIZE 8192 2393#endif /* __ia64__ */ 2394#endif 2395 2396/* Copy whatever the last rule matched to the standard output. */ 2397#ifndef ECHO 2398/* This used to be an fputs(), but since the string might contain NUL's, 2399 * we now use fwrite(). 2400 */ 2401#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) 2402#endif 2403 2404/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 2405 * is returned in "result". 2406 */ 2407#ifndef YY_INPUT 2408#define YY_INPUT(buf,result,max_size) \ 2409 errno=0; \ 2410 while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \ 2411 { \ 2412 if( errno != EINTR) \ 2413 { \ 2414 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 2415 break; \ 2416 } \ 2417 errno=0; \ 2418 clearerr(yyin); \ 2419 }\ 2420\ 2421 2422#endif 2423 2424/* No semi-colon after return; correct usage is to write "yyterminate();" - 2425 * we don't want an extra ';' after the "return" because that will cause 2426 * some compilers to complain about unreachable statements. 2427 */ 2428#ifndef yyterminate 2429#define yyterminate() return YY_NULL 2430#endif 2431 2432/* Number of entries by which start-condition stack grows. */ 2433#ifndef YY_START_STACK_INCR 2434#define YY_START_STACK_INCR 25 2435#endif 2436 2437/* Report a fatal error. */ 2438#ifndef YY_FATAL_ERROR 2439#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 2440#endif 2441 2442/* end tables serialization structures and prototypes */ 2443 2444/* Default declaration of generated scanner - a define so the user can 2445 * easily add parameters. 2446 */ 2447#ifndef YY_DECL 2448#define YY_DECL_IS_OURS 1 2449 2450extern int yylex (void); 2451 2452#define YY_DECL int yylex (void) 2453#endif /* !YY_DECL */ 2454 2455/* Code executed at the beginning of each rule, after yytext and yyleng 2456 * have been set up. 2457 */ 2458#ifndef YY_USER_ACTION 2459#define YY_USER_ACTION 2460#endif 2461 2462/* Code executed at the end of each rule. */ 2463#ifndef YY_BREAK 2464#define YY_BREAK /*LINTED*/break; 2465#endif 2466 2467#define YY_RULE_SETUP \ 2468 YY_USER_ACTION 2469 2470/** The main scanner function which does all the work. 2471 */ 2472YY_DECL 2473{ 2474 yy_state_type yy_current_state; 2475 char *yy_cp, *yy_bp; 2476 int yy_act; 2477 2478 if ( !(yy_init) ) 2479 { 2480 (yy_init) = 1; 2481 2482#ifdef YY_USER_INIT 2483 YY_USER_INIT; 2484#endif 2485 2486 if ( ! (yy_start) ) 2487 (yy_start) = 1; /* first start state */ 2488 2489 if ( ! yyin ) 2490 yyin = stdin; 2491 2492 if ( ! yyout ) 2493 yyout = stdout; 2494 2495 if ( ! YY_CURRENT_BUFFER ) { 2496 yyensure_buffer_stack (); 2497 YY_CURRENT_BUFFER_LVALUE = 2498 yy_create_buffer( yyin, YY_BUF_SIZE ); 2499 } 2500 2501 yy_load_buffer_state( ); 2502 } 2503 2504 { 2505 2506 int str = 0; 2507 int ts, i; 2508 2509 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ 2510 { 2511 yy_cp = (yy_c_buf_p); 2512 2513 /* Support of yytext. */ 2514 *yy_cp = (yy_hold_char); 2515 2516 /* yy_bp points to the position in yy_ch_buf of the start of 2517 * the current run. 2518 */ 2519 yy_bp = yy_cp; 2520 2521 yy_current_state = (yy_start); 2522yy_match: 2523 while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) 2524 ++yy_cp; 2525 2526 yy_current_state = -yy_current_state; 2527 2528yy_find_action: 2529 yy_act = yy_accept[yy_current_state]; 2530 2531 YY_DO_BEFORE_ACTION; 2532 2533 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) 2534 { 2535 int yyl; 2536 for ( yyl = 0; yyl < yyleng; ++yyl ) 2537 if ( yytext[yyl] == '\n' ) 2538 2539 yylineno++; 2540; 2541 } 2542 2543do_action: /* This label is used only to access EOF actions. */ 2544 2545 switch ( yy_act ) 2546 { /* beginning of action switch */ 2547case 1: 2548YY_RULE_SETUP 2549/* ignore comment */ 2550 YY_BREAK 2551case 2: 2552YY_RULE_SETUP 2553/* whitespaces */ 2554 YY_BREAK 2555case 3: 2556/* rule 3 can match eol */ 2557YY_RULE_SETUP 2558/* escaped new line */ 2559 YY_BREAK 2560case 4: 2561/* rule 4 can match eol */ 2562YY_RULE_SETUP 2563return T_EOL; 2564 YY_BREAK 2565case 5: 2566YY_RULE_SETUP 2567return T_BOOL; 2568 YY_BREAK 2569case 6: 2570YY_RULE_SETUP 2571return T_CHOICE; 2572 YY_BREAK 2573case 7: 2574YY_RULE_SETUP 2575return T_COMMENT; 2576 YY_BREAK 2577case 8: 2578YY_RULE_SETUP 2579return T_CONFIG; 2580 YY_BREAK 2581case 9: 2582YY_RULE_SETUP 2583return T_DEF_BOOL; 2584 YY_BREAK 2585case 10: 2586YY_RULE_SETUP 2587return T_DEF_TRISTATE; 2588 YY_BREAK 2589case 11: 2590YY_RULE_SETUP 2591return T_DEFAULT; 2592 YY_BREAK 2593case 12: 2594YY_RULE_SETUP 2595return T_DEPENDS; 2596 YY_BREAK 2597case 13: 2598YY_RULE_SETUP 2599return T_ENDCHOICE; 2600 YY_BREAK 2601case 14: 2602YY_RULE_SETUP 2603return T_ENDIF; 2604 YY_BREAK 2605case 15: 2606YY_RULE_SETUP 2607return T_ENDMENU; 2608 YY_BREAK 2609case 16: 2610YY_RULE_SETUP 2611return T_HELP; 2612 YY_BREAK 2613case 17: 2614YY_RULE_SETUP 2615return T_HEX; 2616 YY_BREAK 2617case 18: 2618YY_RULE_SETUP 2619return T_IF; 2620 YY_BREAK 2621case 19: 2622YY_RULE_SETUP 2623return T_IMPLY; 2624 YY_BREAK 2625case 20: 2626YY_RULE_SETUP 2627return T_INT; 2628 YY_BREAK 2629case 21: 2630YY_RULE_SETUP 2631return T_MAINMENU; 2632 YY_BREAK 2633case 22: 2634YY_RULE_SETUP 2635return T_MENU; 2636 YY_BREAK 2637case 23: 2638YY_RULE_SETUP 2639return T_MENUCONFIG; 2640 YY_BREAK 2641case 24: 2642YY_RULE_SETUP 2643return T_MODULES; 2644 YY_BREAK 2645case 25: 2646YY_RULE_SETUP 2647return T_ON; 2648 YY_BREAK 2649case 26: 2650YY_RULE_SETUP 2651return T_OPTIONAL; 2652 YY_BREAK 2653case 27: 2654YY_RULE_SETUP 2655return T_PROMPT; 2656 YY_BREAK 2657case 28: 2658YY_RULE_SETUP 2659return T_RANGE; 2660 YY_BREAK 2661case 29: 2662YY_RULE_SETUP 2663return T_SELECT; 2664 YY_BREAK 2665case 30: 2666YY_RULE_SETUP 2667return T_SOURCE; 2668 YY_BREAK 2669case 31: 2670YY_RULE_SETUP 2671return T_STRING; 2672 YY_BREAK 2673case 32: 2674YY_RULE_SETUP 2675return T_TRISTATE; 2676 YY_BREAK 2677case 33: 2678YY_RULE_SETUP 2679return T_VISIBLE; 2680 YY_BREAK 2681case 34: 2682YY_RULE_SETUP 2683return T_OR; 2684 YY_BREAK 2685case 35: 2686YY_RULE_SETUP 2687return T_AND; 2688 YY_BREAK 2689case 36: 2690YY_RULE_SETUP 2691return T_EQUAL; 2692 YY_BREAK 2693case 37: 2694YY_RULE_SETUP 2695return T_UNEQUAL; 2696 YY_BREAK 2697case 38: 2698YY_RULE_SETUP 2699return T_LESS; 2700 YY_BREAK 2701case 39: 2702YY_RULE_SETUP 2703return T_LESS_EQUAL; 2704 YY_BREAK 2705case 40: 2706YY_RULE_SETUP 2707return T_GREATER; 2708 YY_BREAK 2709case 41: 2710YY_RULE_SETUP 2711return T_GREATER_EQUAL; 2712 YY_BREAK 2713case 42: 2714YY_RULE_SETUP 2715return T_NOT; 2716 YY_BREAK 2717case 43: 2718YY_RULE_SETUP 2719return T_OPEN_PAREN; 2720 YY_BREAK 2721case 44: 2722YY_RULE_SETUP 2723return T_CLOSE_PAREN; 2724 YY_BREAK 2725case 45: 2726YY_RULE_SETUP 2727return T_COLON_EQUAL; 2728 YY_BREAK 2729case 46: 2730YY_RULE_SETUP 2731return T_PLUS_EQUAL; 2732 YY_BREAK 2733case 47: 2734YY_RULE_SETUP 2735{ 2736 str = yytext[0]; 2737 new_string(); 2738 BEGIN(STRING); 2739 } 2740 YY_BREAK 2741case 48: 2742YY_RULE_SETUP 2743{ 2744 alloc_string(yytext, yyleng); 2745 yylval.string = text; 2746 return T_WORD; 2747 } 2748 YY_BREAK 2749case 49: 2750YY_RULE_SETUP 2751{ 2752 /* this token includes at least one '$' */ 2753 yylval.string = expand_token(yytext, yyleng); 2754 if (strlen(yylval.string)) 2755 return T_WORD; 2756 free(yylval.string); 2757 } 2758 YY_BREAK 2759case 50: 2760YY_RULE_SETUP 2761warn_ignored_character(*yytext); 2762 YY_BREAK 2763 2764case 51: 2765YY_RULE_SETUP 2766{ 2767 alloc_string(yytext, yyleng); 2768 yylval.string = text; 2769 return T_ASSIGN_VAL; 2770 } 2771 YY_BREAK 2772case 52: 2773/* rule 52 can match eol */ 2774YY_RULE_SETUP 2775{ BEGIN(INITIAL); return T_EOL; } 2776 YY_BREAK 2777case 53: 2778YY_RULE_SETUP 2779 2780 YY_BREAK 2781 2782case 54: 2783YY_RULE_SETUP 2784append_expanded_string(yytext); 2785 YY_BREAK 2786case 55: 2787YY_RULE_SETUP 2788{ 2789 append_string(yytext, yyleng); 2790 } 2791 YY_BREAK 2792case 56: 2793YY_RULE_SETUP 2794{ 2795 append_string(yytext + 1, yyleng - 1); 2796 } 2797 YY_BREAK 2798case 57: 2799YY_RULE_SETUP 2800{ 2801 if (str == yytext[0]) { 2802 BEGIN(INITIAL); 2803 yylval.string = text; 2804 return T_WORD_QUOTE; 2805 } else 2806 append_string(yytext, 1); 2807 } 2808 YY_BREAK 2809case 58: 2810/* rule 58 can match eol */ 2811YY_RULE_SETUP 2812{ 2813 fprintf(stderr, 2814 "%s:%d:warning: multi-line strings not supported\n", 2815 zconf_curname(), zconf_lineno()); 2816 unput('\n'); 2817 BEGIN(INITIAL); 2818 yylval.string = text; 2819 return T_WORD_QUOTE; 2820 } 2821 YY_BREAK 2822case YY_STATE_EOF(STRING): 2823{ 2824 BEGIN(INITIAL); 2825 yylval.string = text; 2826 return T_WORD_QUOTE; 2827 } 2828 YY_BREAK 2829 2830case 59: 2831YY_RULE_SETUP 2832{ 2833 ts = 0; 2834 for (i = 0; i < yyleng; i++) { 2835 if (yytext[i] == '\t') 2836 ts = (ts & ~7) + 8; 2837 else 2838 ts++; 2839 } 2840 last_ts = ts; 2841 if (first_ts) { 2842 if (ts < first_ts) { 2843 zconf_endhelp(); 2844 return T_HELPTEXT; 2845 } 2846 ts -= first_ts; 2847 while (ts > 8) { 2848 append_string(" ", 8); 2849 ts -= 8; 2850 } 2851 append_string(" ", ts); 2852 } 2853 } 2854 YY_BREAK 2855case 60: 2856/* rule 60 can match eol */ 2857*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ 2858YY_LINENO_REWIND_TO(yy_cp - 1); 2859(yy_c_buf_p) = yy_cp -= 1; 2860YY_DO_BEFORE_ACTION; /* set up yytext again */ 2861YY_RULE_SETUP 2862{ 2863 zconf_endhelp(); 2864 return T_HELPTEXT; 2865 } 2866 YY_BREAK 2867case 61: 2868/* rule 61 can match eol */ 2869YY_RULE_SETUP 2870{ 2871 append_string("\n", 1); 2872 } 2873 YY_BREAK 2874case 62: 2875YY_RULE_SETUP 2876{ 2877 while (yyleng) { 2878 if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) 2879 break; 2880 yyleng--; 2881 } 2882 append_string(yytext, yyleng); 2883 if (!first_ts) 2884 first_ts = last_ts; 2885 } 2886 YY_BREAK 2887case YY_STATE_EOF(HELP): 2888{ 2889 zconf_endhelp(); 2890 return T_HELPTEXT; 2891 } 2892 YY_BREAK 2893 2894case YY_STATE_EOF(INITIAL): 2895case YY_STATE_EOF(ASSIGN_VAL): 2896{ 2897 BEGIN(INITIAL); 2898 2899 if (prev_token != T_EOL && prev_token != T_HELPTEXT) 2900 fprintf(stderr, "%s:%d:warning: no new line at end of file\n", 2901 current_file->name, yylineno); 2902 2903 if (current_file) { 2904 zconf_endfile(); 2905 return T_EOL; 2906 } 2907 fclose(yyin); 2908 yyterminate(); 2909} 2910 YY_BREAK 2911case 63: 2912YY_RULE_SETUP 2913YY_FATAL_ERROR( "flex scanner jammed" ); 2914 YY_BREAK 2915 2916 case YY_END_OF_BUFFER: 2917 { 2918 /* Amount of text matched not including the EOB char. */ 2919 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 2920 2921 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 2922 *yy_cp = (yy_hold_char); 2923 YY_RESTORE_YY_MORE_OFFSET 2924 2925 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 2926 { 2927 /* We're scanning a new file or input source. It's 2928 * possible that this happened because the user 2929 * just pointed yyin at a new source and called 2930 * yylex(). If so, then we have to assure 2931 * consistency between YY_CURRENT_BUFFER and our 2932 * globals. Here is the right place to do so, because 2933 * this is the first action (other than possibly a 2934 * back-up) that will match for the new input source. 2935 */ 2936 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 2937 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 2938 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 2939 } 2940 2941 /* Note that here we test for yy_c_buf_p "<=" to the position 2942 * of the first EOB in the buffer, since yy_c_buf_p will 2943 * already have been incremented past the NUL character 2944 * (since all states make transitions on EOB to the 2945 * end-of-buffer state). Contrast this with the test 2946 * in input(). 2947 */ 2948 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 2949 { /* This was really a NUL. */ 2950 yy_state_type yy_next_state; 2951 2952 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 2953 2954 yy_current_state = yy_get_previous_state( ); 2955 2956 /* Okay, we're now positioned to make the NUL 2957 * transition. We couldn't have 2958 * yy_get_previous_state() go ahead and do it 2959 * for us because it doesn't know how to deal 2960 * with the possibility of jamming (and we don't 2961 * want to build jamming into it because then it 2962 * will run more slowly). 2963 */ 2964 2965 yy_next_state = yy_try_NUL_trans( yy_current_state ); 2966 2967 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 2968 2969 if ( yy_next_state ) 2970 { 2971 /* Consume the NUL. */ 2972 yy_cp = ++(yy_c_buf_p); 2973 yy_current_state = yy_next_state; 2974 goto yy_match; 2975 } 2976 2977 else 2978 { 2979 yy_cp = (yy_c_buf_p); 2980 goto yy_find_action; 2981 } 2982 } 2983 2984 else switch ( yy_get_next_buffer( ) ) 2985 { 2986 case EOB_ACT_END_OF_FILE: 2987 { 2988 (yy_did_buffer_switch_on_eof) = 0; 2989 2990 if ( yywrap( ) ) 2991 { 2992 /* Note: because we've taken care in 2993 * yy_get_next_buffer() to have set up 2994 * yytext, we can now set up 2995 * yy_c_buf_p so that if some total 2996 * hoser (like flex itself) wants to 2997 * call the scanner after we return the 2998 * YY_NULL, it'll still work - another 2999 * YY_NULL will get returned. 3000 */ 3001 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 3002 3003 yy_act = YY_STATE_EOF(YY_START); 3004 goto do_action; 3005 } 3006 3007 else 3008 { 3009 if ( ! (yy_did_buffer_switch_on_eof) ) 3010 YY_NEW_FILE; 3011 } 3012 break; 3013 } 3014 3015 case EOB_ACT_CONTINUE_SCAN: 3016 (yy_c_buf_p) = 3017 (yytext_ptr) + yy_amount_of_matched_text; 3018 3019 yy_current_state = yy_get_previous_state( ); 3020 3021 yy_cp = (yy_c_buf_p); 3022 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 3023 goto yy_match; 3024 3025 case EOB_ACT_LAST_MATCH: 3026 (yy_c_buf_p) = 3027 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 3028 3029 yy_current_state = yy_get_previous_state( ); 3030 3031 yy_cp = (yy_c_buf_p); 3032 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 3033 goto yy_find_action; 3034 } 3035 break; 3036 } 3037 3038 default: 3039 YY_FATAL_ERROR( 3040 "fatal flex scanner internal error--no action found" ); 3041 } /* end of action switch */ 3042 } /* end of scanning one token */ 3043 } /* end of user's declarations */ 3044} /* end of yylex */ 3045 3046/* yy_get_next_buffer - try to read in a new buffer 3047 * 3048 * Returns a code representing an action: 3049 * EOB_ACT_LAST_MATCH - 3050 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 3051 * EOB_ACT_END_OF_FILE - end of file 3052 */ 3053static int yy_get_next_buffer (void) 3054{ 3055 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 3056 char *source = (yytext_ptr); 3057 int number_to_move, i; 3058 int ret_val; 3059 3060 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 3061 YY_FATAL_ERROR( 3062 "fatal flex scanner internal error--end of buffer missed" ); 3063 3064 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 3065 { /* Don't try to fill the buffer, so this is an EOF. */ 3066 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 3067 { 3068 /* We matched a single character, the EOB, so 3069 * treat this as a final EOF. 3070 */ 3071 return EOB_ACT_END_OF_FILE; 3072 } 3073 3074 else 3075 { 3076 /* We matched some text prior to the EOB, first 3077 * process it. 3078 */ 3079 return EOB_ACT_LAST_MATCH; 3080 } 3081 } 3082 3083 /* Try to read more data. */ 3084 3085 /* First move last chars to start of buffer. */ 3086 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); 3087 3088 for ( i = 0; i < number_to_move; ++i ) 3089 *(dest++) = *(source++); 3090 3091 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 3092 /* don't do the read, it's not guaranteed to return an EOF, 3093 * just force an EOF 3094 */ 3095 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 3096 3097 else 3098 { 3099 int num_to_read = 3100 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 3101 3102 while ( num_to_read <= 0 ) 3103 { /* Not enough room in the buffer - grow it. */ 3104 3105 /* just a shorter name for the current buffer */ 3106 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; 3107 3108 int yy_c_buf_p_offset = 3109 (int) ((yy_c_buf_p) - b->yy_ch_buf); 3110 3111 if ( b->yy_is_our_buffer ) 3112 { 3113 int new_size = b->yy_buf_size * 2; 3114 3115 if ( new_size <= 0 ) 3116 b->yy_buf_size += b->yy_buf_size / 8; 3117 else 3118 b->yy_buf_size *= 2; 3119 3120 b->yy_ch_buf = (char *) 3121 /* Include room in for 2 EOB chars. */ 3122 yyrealloc( (void *) b->yy_ch_buf, 3123 (yy_size_t) (b->yy_buf_size + 2) ); 3124 } 3125 else 3126 /* Can't grow it, we don't own it. */ 3127 b->yy_ch_buf = NULL; 3128 3129 if ( ! b->yy_ch_buf ) 3130 YY_FATAL_ERROR( 3131 "fatal error - scanner input buffer overflow" ); 3132 3133 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 3134 3135 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 3136 number_to_move - 1; 3137 3138 } 3139 3140 if ( num_to_read > YY_READ_BUF_SIZE ) 3141 num_to_read = YY_READ_BUF_SIZE; 3142 3143 /* Read in more data. */ 3144 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 3145 (yy_n_chars), num_to_read ); 3146 3147 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 3148 } 3149 3150 if ( (yy_n_chars) == 0 ) 3151 { 3152 if ( number_to_move == YY_MORE_ADJ ) 3153 { 3154 ret_val = EOB_ACT_END_OF_FILE; 3155 yyrestart( yyin ); 3156 } 3157 3158 else 3159 { 3160 ret_val = EOB_ACT_LAST_MATCH; 3161 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 3162 YY_BUFFER_EOF_PENDING; 3163 } 3164 } 3165 3166 else 3167 ret_val = EOB_ACT_CONTINUE_SCAN; 3168 3169 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 3170 /* Extend the array by 50%, plus the number we really need. */ 3171 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); 3172 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( 3173 (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); 3174 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 3175 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 3176 /* "- 2" to take care of EOB's */ 3177 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); 3178 } 3179 3180 (yy_n_chars) += number_to_move; 3181 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 3182 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 3183 3184 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 3185 3186 return ret_val; 3187} 3188 3189/* yy_get_previous_state - get the state just before the EOB char was reached */ 3190 3191 static yy_state_type yy_get_previous_state (void) 3192{ 3193 yy_state_type yy_current_state; 3194 char *yy_cp; 3195 3196 yy_current_state = (yy_start); 3197 3198 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 3199 { 3200 yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 3201 } 3202 3203 return yy_current_state; 3204} 3205 3206/* yy_try_NUL_trans - try to make a transition on the NUL character 3207 * 3208 * synopsis 3209 * next_state = yy_try_NUL_trans( current_state ); 3210 */ 3211 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 3212{ 3213 int yy_is_jam; 3214 3215 yy_current_state = yy_nxt[yy_current_state][1]; 3216 yy_is_jam = (yy_current_state <= 0); 3217 3218 return yy_is_jam ? 0 : yy_current_state; 3219} 3220 3221#ifndef YY_NO_UNPUT 3222 3223 static void yyunput (int c, char * yy_bp ) 3224{ 3225 char *yy_cp; 3226 3227 yy_cp = (yy_c_buf_p); 3228 3229 /* undo effects of setting up yytext */ 3230 *yy_cp = (yy_hold_char); 3231 3232 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 3233 { /* need to shift things up to make room */ 3234 /* +2 for EOB chars. */ 3235 int number_to_move = (yy_n_chars) + 2; 3236 char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 3237 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 3238 char *source = 3239 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 3240 3241 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 3242 *--dest = *--source; 3243 3244 yy_cp += (int) (dest - source); 3245 yy_bp += (int) (dest - source); 3246 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 3247 (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 3248 3249 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 3250 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 3251 } 3252 3253 *--yy_cp = (char) c; 3254 3255 if ( c == '\n' ){ 3256 --yylineno; 3257 } 3258 3259 (yytext_ptr) = yy_bp; 3260 (yy_hold_char) = *yy_cp; 3261 (yy_c_buf_p) = yy_cp; 3262} 3263 3264#endif 3265 3266#ifndef YY_NO_INPUT 3267#ifdef __cplusplus 3268 static int yyinput (void) 3269#else 3270 static int input (void) 3271#endif 3272 3273{ 3274 int c; 3275 3276 *(yy_c_buf_p) = (yy_hold_char); 3277 3278 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 3279 { 3280 /* yy_c_buf_p now points to the character we want to return. 3281 * If this occurs *before* the EOB characters, then it's a 3282 * valid NUL; if not, then we've hit the end of the buffer. 3283 */ 3284 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 3285 /* This was really a NUL. */ 3286 *(yy_c_buf_p) = '\0'; 3287 3288 else 3289 { /* need more input */ 3290 int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); 3291 ++(yy_c_buf_p); 3292 3293 switch ( yy_get_next_buffer( ) ) 3294 { 3295 case EOB_ACT_LAST_MATCH: 3296 /* This happens because yy_g_n_b() 3297 * sees that we've accumulated a 3298 * token and flags that we need to 3299 * try matching the token before 3300 * proceeding. But for input(), 3301 * there's no matching to consider. 3302 * So convert the EOB_ACT_LAST_MATCH 3303 * to EOB_ACT_END_OF_FILE. 3304 */ 3305 3306 /* Reset buffer status. */ 3307 yyrestart( yyin ); 3308 3309 /*FALLTHROUGH*/ 3310 3311 case EOB_ACT_END_OF_FILE: 3312 { 3313 if ( yywrap( ) ) 3314 return 0; 3315 3316 if ( ! (yy_did_buffer_switch_on_eof) ) 3317 YY_NEW_FILE; 3318#ifdef __cplusplus 3319 return yyinput(); 3320#else 3321 return input(); 3322#endif 3323 } 3324 3325 case EOB_ACT_CONTINUE_SCAN: 3326 (yy_c_buf_p) = (yytext_ptr) + offset; 3327 break; 3328 } 3329 } 3330 } 3331 3332 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 3333 *(yy_c_buf_p) = '\0'; /* preserve yytext */ 3334 (yy_hold_char) = *++(yy_c_buf_p); 3335 3336 if ( c == '\n' ) 3337 3338 yylineno++; 3339; 3340 3341 return c; 3342} 3343#endif /* ifndef YY_NO_INPUT */ 3344 3345/** Immediately switch to a different input stream. 3346 * @param input_file A readable stream. 3347 * 3348 * @note This function does not reset the start condition to @c INITIAL . 3349 */ 3350 void yyrestart (FILE * input_file ) 3351{ 3352 3353 if ( ! YY_CURRENT_BUFFER ){ 3354 yyensure_buffer_stack (); 3355 YY_CURRENT_BUFFER_LVALUE = 3356 yy_create_buffer( yyin, YY_BUF_SIZE ); 3357 } 3358 3359 yy_init_buffer( YY_CURRENT_BUFFER, input_file ); 3360 yy_load_buffer_state( ); 3361} 3362 3363/** Switch to a different input buffer. 3364 * @param new_buffer The new input buffer. 3365 * 3366 */ 3367 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 3368{ 3369 3370 /* TODO. We should be able to replace this entire function body 3371 * with 3372 * yypop_buffer_state(); 3373 * yypush_buffer_state(new_buffer); 3374 */ 3375 yyensure_buffer_stack (); 3376 if ( YY_CURRENT_BUFFER == new_buffer ) 3377 return; 3378 3379 if ( YY_CURRENT_BUFFER ) 3380 { 3381 /* Flush out information for old buffer. */ 3382 *(yy_c_buf_p) = (yy_hold_char); 3383 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 3384 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 3385 } 3386 3387 YY_CURRENT_BUFFER_LVALUE = new_buffer; 3388 yy_load_buffer_state( ); 3389 3390 /* We don't actually know whether we did this switch during 3391 * EOF (yywrap()) processing, but the only time this flag 3392 * is looked at is after yywrap() is called, so it's safe 3393 * to go ahead and always set it. 3394 */ 3395 (yy_did_buffer_switch_on_eof) = 1; 3396} 3397 3398static void yy_load_buffer_state (void) 3399{ 3400 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 3401 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 3402 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 3403 (yy_hold_char) = *(yy_c_buf_p); 3404} 3405 3406/** Allocate and initialize an input buffer state. 3407 * @param file A readable stream. 3408 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. 3409 * 3410 * @return the allocated buffer state. 3411 */ 3412 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) 3413{ 3414 YY_BUFFER_STATE b; 3415 3416 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); 3417 if ( ! b ) 3418 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3419 3420 b->yy_buf_size = size; 3421 3422 /* yy_ch_buf has to be 2 characters longer than the size given because 3423 * we need to put in 2 end-of-buffer characters. 3424 */ 3425 b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); 3426 if ( ! b->yy_ch_buf ) 3427 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3428 3429 b->yy_is_our_buffer = 1; 3430 3431 yy_init_buffer( b, file ); 3432 3433 return b; 3434} 3435 3436/** Destroy the buffer. 3437 * @param b a buffer created with yy_create_buffer() 3438 * 3439 */ 3440 void yy_delete_buffer (YY_BUFFER_STATE b ) 3441{ 3442 3443 if ( ! b ) 3444 return; 3445 3446 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 3447 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 3448 3449 if ( b->yy_is_our_buffer ) 3450 yyfree( (void *) b->yy_ch_buf ); 3451 3452 yyfree( (void *) b ); 3453} 3454 3455/* Initializes or reinitializes a buffer. 3456 * This function is sometimes called more than once on the same buffer, 3457 * such as during a yyrestart() or at EOF. 3458 */ 3459 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) 3460 3461{ 3462 int oerrno = errno; 3463 3464 yy_flush_buffer( b ); 3465 3466 b->yy_input_file = file; 3467 b->yy_fill_buffer = 1; 3468 3469 /* If b is the current buffer, then yy_init_buffer was _probably_ 3470 * called from yyrestart() or through yy_get_next_buffer. 3471 * In that case, we don't want to reset the lineno or column. 3472 */ 3473 if (b != YY_CURRENT_BUFFER){ 3474 b->yy_bs_lineno = 1; 3475 b->yy_bs_column = 0; 3476 } 3477 3478 b->yy_is_interactive = 0; 3479 3480 errno = oerrno; 3481} 3482 3483/** Discard all buffered characters. On the next scan, YY_INPUT will be called. 3484 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. 3485 * 3486 */ 3487 void yy_flush_buffer (YY_BUFFER_STATE b ) 3488{ 3489 if ( ! b ) 3490 return; 3491 3492 b->yy_n_chars = 0; 3493 3494 /* We always need two end-of-buffer characters. The first causes 3495 * a transition to the end-of-buffer state. The second causes 3496 * a jam in that state. 3497 */ 3498 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 3499 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 3500 3501 b->yy_buf_pos = &b->yy_ch_buf[0]; 3502 3503 b->yy_at_bol = 1; 3504 b->yy_buffer_status = YY_BUFFER_NEW; 3505 3506 if ( b == YY_CURRENT_BUFFER ) 3507 yy_load_buffer_state( ); 3508} 3509 3510/** Pushes the new state onto the stack. The new state becomes 3511 * the current state. This function will allocate the stack 3512 * if necessary. 3513 * @param new_buffer The new state. 3514 * 3515 */ 3516void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) 3517{ 3518 if (new_buffer == NULL) 3519 return; 3520 3521 yyensure_buffer_stack(); 3522 3523 /* This block is copied from yy_switch_to_buffer. */ 3524 if ( YY_CURRENT_BUFFER ) 3525 { 3526 /* Flush out information for old buffer. */ 3527 *(yy_c_buf_p) = (yy_hold_char); 3528 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 3529 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 3530 } 3531 3532 /* Only push if top exists. Otherwise, replace top. */ 3533 if (YY_CURRENT_BUFFER) 3534 (yy_buffer_stack_top)++; 3535 YY_CURRENT_BUFFER_LVALUE = new_buffer; 3536 3537 /* copied from yy_switch_to_buffer. */ 3538 yy_load_buffer_state( ); 3539 (yy_did_buffer_switch_on_eof) = 1; 3540} 3541 3542/** Removes and deletes the top of the stack, if present. 3543 * The next element becomes the new top. 3544 * 3545 */ 3546void yypop_buffer_state (void) 3547{ 3548 if (!YY_CURRENT_BUFFER) 3549 return; 3550 3551 yy_delete_buffer(YY_CURRENT_BUFFER ); 3552 YY_CURRENT_BUFFER_LVALUE = NULL; 3553 if ((yy_buffer_stack_top) > 0) 3554 --(yy_buffer_stack_top); 3555 3556 if (YY_CURRENT_BUFFER) { 3557 yy_load_buffer_state( ); 3558 (yy_did_buffer_switch_on_eof) = 1; 3559 } 3560} 3561 3562/* Allocates the stack if it does not exist. 3563 * Guarantees space for at least one push. 3564 */ 3565static void yyensure_buffer_stack (void) 3566{ 3567 yy_size_t num_to_alloc; 3568 3569 if (!(yy_buffer_stack)) { 3570 3571 /* First allocation is just for 2 elements, since we don't know if this 3572 * scanner will even need a stack. We use 2 instead of 1 to avoid an 3573 * immediate realloc on the next call. 3574 */ 3575 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ 3576 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc 3577 (num_to_alloc * sizeof(struct yy_buffer_state*) 3578 ); 3579 if ( ! (yy_buffer_stack) ) 3580 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 3581 3582 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 3583 3584 (yy_buffer_stack_max) = num_to_alloc; 3585 (yy_buffer_stack_top) = 0; 3586 return; 3587 } 3588 3589 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 3590 3591 /* Increase the buffer to prepare for a possible push. */ 3592 yy_size_t grow_size = 8 /* arbitrary grow size */; 3593 3594 num_to_alloc = (yy_buffer_stack_max) + grow_size; 3595 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc 3596 ((yy_buffer_stack), 3597 num_to_alloc * sizeof(struct yy_buffer_state*) 3598 ); 3599 if ( ! (yy_buffer_stack) ) 3600 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 3601 3602 /* zero only the new slots.*/ 3603 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 3604 (yy_buffer_stack_max) = num_to_alloc; 3605 } 3606} 3607 3608/** Setup the input buffer state to scan directly from a user-specified character buffer. 3609 * @param base the character buffer 3610 * @param size the size in bytes of the character buffer 3611 * 3612 * @return the newly allocated buffer state object. 3613 */ 3614YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) 3615{ 3616 YY_BUFFER_STATE b; 3617 3618 if ( size < 2 || 3619 base[size-2] != YY_END_OF_BUFFER_CHAR || 3620 base[size-1] != YY_END_OF_BUFFER_CHAR ) 3621 /* They forgot to leave room for the EOB's. */ 3622 return NULL; 3623 3624 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); 3625 if ( ! b ) 3626 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 3627 3628 b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ 3629 b->yy_buf_pos = b->yy_ch_buf = base; 3630 b->yy_is_our_buffer = 0; 3631 b->yy_input_file = NULL; 3632 b->yy_n_chars = b->yy_buf_size; 3633 b->yy_is_interactive = 0; 3634 b->yy_at_bol = 1; 3635 b->yy_fill_buffer = 0; 3636 b->yy_buffer_status = YY_BUFFER_NEW; 3637 3638 yy_switch_to_buffer( b ); 3639 3640 return b; 3641} 3642 3643/** Setup the input buffer state to scan a string. The next call to yylex() will 3644 * scan from a @e copy of @a str. 3645 * @param yystr a NUL-terminated string to scan 3646 * 3647 * @return the newly allocated buffer state object. 3648 * @note If you want to scan bytes that may contain NUL values, then use 3649 * yy_scan_bytes() instead. 3650 */ 3651YY_BUFFER_STATE yy_scan_string (const char * yystr ) 3652{ 3653 3654 return yy_scan_bytes( yystr, (int) strlen(yystr) ); 3655} 3656 3657/** Setup the input buffer state to scan the given bytes. The next call to yylex() will 3658 * scan from a @e copy of @a bytes. 3659 * @param yybytes the byte buffer to scan 3660 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. 3661 * 3662 * @return the newly allocated buffer state object. 3663 */ 3664YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) 3665{ 3666 YY_BUFFER_STATE b; 3667 char *buf; 3668 yy_size_t n; 3669 int i; 3670 3671 /* Get memory for full buffer, including space for trailing EOB's. */ 3672 n = (yy_size_t) (_yybytes_len + 2); 3673 buf = (char *) yyalloc( n ); 3674 if ( ! buf ) 3675 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 3676 3677 for ( i = 0; i < _yybytes_len; ++i ) 3678 buf[i] = yybytes[i]; 3679 3680 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 3681 3682 b = yy_scan_buffer( buf, n ); 3683 if ( ! b ) 3684 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 3685 3686 /* It's okay to grow etc. this buffer, and we should throw it 3687 * away when we're done. 3688 */ 3689 b->yy_is_our_buffer = 1; 3690 3691 return b; 3692} 3693 3694#ifndef YY_EXIT_FAILURE 3695#define YY_EXIT_FAILURE 2 3696#endif 3697 3698static void yynoreturn yy_fatal_error (const char* msg ) 3699{ 3700 fprintf( stderr, "%s\n", msg ); 3701 exit( YY_EXIT_FAILURE ); 3702} 3703 3704/* Redefine yyless() so it works in section 3 code. */ 3705 3706#undef yyless 3707#define yyless(n) \ 3708 do \ 3709 { \ 3710 /* Undo effects of setting up yytext. */ \ 3711 int yyless_macro_arg = (n); \ 3712 YY_LESS_LINENO(yyless_macro_arg);\ 3713 yytext[yyleng] = (yy_hold_char); \ 3714 (yy_c_buf_p) = yytext + yyless_macro_arg; \ 3715 (yy_hold_char) = *(yy_c_buf_p); \ 3716 *(yy_c_buf_p) = '\0'; \ 3717 yyleng = yyless_macro_arg; \ 3718 } \ 3719 while ( 0 ) 3720 3721/* Accessor methods (get/set functions) to struct members. */ 3722 3723/** Get the current line number. 3724 * 3725 */ 3726int yyget_lineno (void) 3727{ 3728 3729 return yylineno; 3730} 3731 3732/** Get the input stream. 3733 * 3734 */ 3735FILE *yyget_in (void) 3736{ 3737 return yyin; 3738} 3739 3740/** Get the output stream. 3741 * 3742 */ 3743FILE *yyget_out (void) 3744{ 3745 return yyout; 3746} 3747 3748/** Get the length of the current token. 3749 * 3750 */ 3751int yyget_leng (void) 3752{ 3753 return yyleng; 3754} 3755 3756/** Get the current token. 3757 * 3758 */ 3759 3760char *yyget_text (void) 3761{ 3762 return yytext; 3763} 3764 3765/** Set the current line number. 3766 * @param _line_number line number 3767 * 3768 */ 3769void yyset_lineno (int _line_number ) 3770{ 3771 3772 yylineno = _line_number; 3773} 3774 3775/** Set the input stream. This does not discard the current 3776 * input buffer. 3777 * @param _in_str A readable stream. 3778 * 3779 * @see yy_switch_to_buffer 3780 */ 3781void yyset_in (FILE * _in_str ) 3782{ 3783 yyin = _in_str ; 3784} 3785 3786void yyset_out (FILE * _out_str ) 3787{ 3788 yyout = _out_str ; 3789} 3790 3791int yyget_debug (void) 3792{ 3793 return yy_flex_debug; 3794} 3795 3796void yyset_debug (int _bdebug ) 3797{ 3798 yy_flex_debug = _bdebug ; 3799} 3800 3801static int yy_init_globals (void) 3802{ 3803 /* Initialization is the same as for the non-reentrant scanner. 3804 * This function is called from yylex_destroy(), so don't allocate here. 3805 */ 3806 3807 /* We do not touch yylineno unless the option is enabled. */ 3808 yylineno = 1; 3809 3810 (yy_buffer_stack) = NULL; 3811 (yy_buffer_stack_top) = 0; 3812 (yy_buffer_stack_max) = 0; 3813 (yy_c_buf_p) = NULL; 3814 (yy_init) = 0; 3815 (yy_start) = 0; 3816 3817/* Defined in main.c */ 3818#ifdef YY_STDINIT 3819 yyin = stdin; 3820 yyout = stdout; 3821#else 3822 yyin = NULL; 3823 yyout = NULL; 3824#endif 3825 3826 /* For future reference: Set errno on error, since we are called by 3827 * yylex_init() 3828 */ 3829 return 0; 3830} 3831 3832/* yylex_destroy is for both reentrant and non-reentrant scanners. */ 3833int yylex_destroy (void) 3834{ 3835 3836 /* Pop the buffer stack, destroying each element. */ 3837 while(YY_CURRENT_BUFFER){ 3838 yy_delete_buffer( YY_CURRENT_BUFFER ); 3839 YY_CURRENT_BUFFER_LVALUE = NULL; 3840 yypop_buffer_state(); 3841 } 3842 3843 /* Destroy the stack itself. */ 3844 yyfree((yy_buffer_stack) ); 3845 (yy_buffer_stack) = NULL; 3846 3847 /* Reset the globals. This is important in a non-reentrant scanner so the next time 3848 * yylex() is called, initialization will occur. */ 3849 yy_init_globals( ); 3850 3851 return 0; 3852} 3853 3854/* 3855 * Internal utility routines. 3856 */ 3857 3858#ifndef yytext_ptr 3859static void yy_flex_strncpy (char* s1, const char * s2, int n ) 3860{ 3861 3862 int i; 3863 for ( i = 0; i < n; ++i ) 3864 s1[i] = s2[i]; 3865} 3866#endif 3867 3868#ifdef YY_NEED_STRLEN 3869static int yy_flex_strlen (const char * s ) 3870{ 3871 int n; 3872 for ( n = 0; s[n]; ++n ) 3873 ; 3874 3875 return n; 3876} 3877#endif 3878 3879void *yyalloc (yy_size_t size ) 3880{ 3881 return malloc(size); 3882} 3883 3884void *yyrealloc (void * ptr, yy_size_t size ) 3885{ 3886 3887 /* The cast to (char *) in the following accommodates both 3888 * implementations that use char* generic pointers, and those 3889 * that use void* generic pointers. It works with the latter 3890 * because both ANSI C and C++ allow castless assignment from 3891 * any pointer type to void*, and deal with argument conversions 3892 * as though doing an assignment. 3893 */ 3894 return realloc(ptr, size); 3895} 3896 3897void yyfree (void * ptr ) 3898{ 3899 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ 3900} 3901 3902#define YYTABLES_NAME "yytables" 3903 3904/* second stage lexer */ 3905int yylex(void) 3906{ 3907 int token; 3908 3909repeat: 3910 token = yylex1(); 3911 3912 if (prev_token == T_EOL || prev_token == T_HELPTEXT) { 3913 if (token == T_EOL) { 3914 /* Do not pass unneeded T_EOL to the parser. */ 3915 goto repeat; 3916 } else { 3917 /* 3918 * For the parser, update file/lineno at the first token 3919 * of each statement. Generally, \n is a statement 3920 * terminator in Kconfig, but it is not always true 3921 * because \n could be escaped by a backslash. 3922 */ 3923 current_pos.file = current_file; 3924 current_pos.lineno = yylineno; 3925 } 3926 } 3927 3928 if (prev_prev_token == T_EOL && prev_token == T_WORD && 3929 (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL)) 3930 BEGIN(ASSIGN_VAL); 3931 3932 prev_prev_token = prev_token; 3933 prev_token = token; 3934 3935 return token; 3936} 3937 3938static char *expand_token(const char *in, size_t n) 3939{ 3940 char *out; 3941 int c; 3942 char c2; 3943 const char *rest, *end; 3944 3945 new_string(); 3946 append_string(in, n); 3947 3948 /* get the whole line because we do not know the end of token. */ 3949 while ((c = input()) != EOF) { 3950 if (c == '\n') { 3951 unput(c); 3952 break; 3953 } 3954 c2 = c; 3955 append_string(&c2, 1); 3956 } 3957 3958 rest = text; 3959 out = expand_one_token(&rest); 3960 3961 /* push back unused characters to the input stream */ 3962 end = rest + strlen(rest); 3963 while (end > rest) 3964 unput(*--end); 3965 3966 free(text); 3967 3968 return out; 3969} 3970 3971static void append_expanded_string(const char *str) 3972{ 3973 const char *end; 3974 char *res; 3975 3976 str++; 3977 3978 res = expand_dollar(&str); 3979 3980 /* push back unused characters to the input stream */ 3981 end = str + strlen(str); 3982 while (end > str) 3983 unput(*--end); 3984 3985 append_string(res, strlen(res)); 3986 3987 free(res); 3988} 3989 3990void zconf_starthelp(void) 3991{ 3992 new_string(); 3993 last_ts = first_ts = 0; 3994 BEGIN(HELP); 3995} 3996 3997static void zconf_endhelp(void) 3998{ 3999 yylval.string = text; 4000 BEGIN(INITIAL); 4001} 4002 4003/* 4004 * Try to open specified file with following names: 4005 * ./name 4006 * $(srctree)/name 4007 * The latter is used when srctree is separate from objtree 4008 * when compiling the kernel. 4009 * Return NULL if file is not found. 4010 */ 4011FILE *zconf_fopen(const char *name) 4012{ 4013 char *env, fullname[PATH_MAX+1]; 4014 FILE *f; 4015 4016 f = fopen(name, "r"); 4017 if (!f && name != NULL && name[0] != '/') { 4018 env = getenv(SRCTREE); 4019 if (env) { 4020 snprintf(fullname, sizeof(fullname), 4021 "%s/%s", env, name); 4022 f = fopen(fullname, "r"); 4023 } 4024 } 4025 return f; 4026} 4027 4028void zconf_initscan(const char *name) 4029{ 4030 yyin = zconf_fopen(name); 4031 if (!yyin) { 4032 fprintf(stderr, "can't find file %s\n", name); 4033 exit(1); 4034 } 4035 4036 current_buf = xmalloc(sizeof(*current_buf)); 4037 memset(current_buf, 0, sizeof(*current_buf)); 4038 4039 current_file = file_lookup(name); 4040 yylineno = 1; 4041} 4042 4043void zconf_nextfile(const char *name) 4044{ 4045 struct file *iter; 4046 struct file *file = file_lookup(name); 4047 struct buffer *buf = xmalloc(sizeof(*buf)); 4048 memset(buf, 0, sizeof(*buf)); 4049 4050 current_buf->state = YY_CURRENT_BUFFER; 4051 yyin = zconf_fopen(file->name); 4052 if (!yyin) { 4053 fprintf(stderr, "%s:%d: can't open file \"%s\"\n", 4054 zconf_curname(), zconf_lineno(), file->name); 4055 exit(1); 4056 } 4057 yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); 4058 buf->parent = current_buf; 4059 current_buf = buf; 4060 4061 current_file->lineno = yylineno; 4062 file->parent = current_file; 4063 4064 for (iter = current_file; iter; iter = iter->parent) { 4065 if (!strcmp(iter->name, file->name)) { 4066 fprintf(stderr, 4067 "Recursive inclusion detected.\n" 4068 "Inclusion path:\n" 4069 " current file : %s\n", file->name); 4070 iter = file; 4071 do { 4072 iter = iter->parent; 4073 fprintf(stderr, " included from: %s:%d\n", 4074 iter->name, iter->lineno - 1); 4075 } while (strcmp(iter->name, file->name)); 4076 exit(1); 4077 } 4078 } 4079 4080 yylineno = 1; 4081 current_file = file; 4082} 4083 4084void zconf_nextfiles(const char *wildcard) 4085{ 4086 glob_t g; 4087 char **w; 4088 int i; 4089 4090 if (glob(wildcard, 0, NULL, &g) != 0) { 4091 return; 4092 } 4093 if (g.gl_pathv == NULL) { 4094 globfree(&g); 4095 return; 4096 } 4097 4098 /* working through files backwards, since 4099 * we're first pushing them on a stack 4100 * before actually handling them. 4101 */ 4102 for (i = g.gl_pathc; i > 0; i--) { 4103 w = &g.gl_pathv[i - 1]; 4104 zconf_nextfile(*w); 4105 } 4106 4107 globfree(&g); 4108} 4109 4110static void zconf_endfile(void) 4111{ 4112 struct buffer *parent; 4113 4114 current_file = current_file->parent; 4115 if (current_file) 4116 yylineno = current_file->lineno; 4117 4118 parent = current_buf->parent; 4119 if (parent) { 4120 fclose(yyin); 4121 yy_delete_buffer(YY_CURRENT_BUFFER); 4122 yy_switch_to_buffer(parent->state); 4123 } 4124 free(current_buf); 4125 current_buf = parent; 4126} 4127 4128int zconf_lineno(void) 4129{ 4130 return current_pos.lineno; 4131} 4132 4133const char *zconf_curname(void) 4134{ 4135 return current_pos.file ? current_pos.file->name : "<none>"; 4136} 4137 4138