1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <inttypes.h> 4 # define U(x) x 5 # define NLSTATE yyprevious=YYNEWLINE 6 # define BEGIN yybgin = yysvec + 1 + 7 # define INITIAL 0 8 # define YYLERR yysvec 9 # define YYSTATE (yyestate-yysvec-1) 10 # define YYOPTIM 1 11 # ifndef YYLMAX 12 # define YYLMAX BUFSIZ 13 # endif 14 #ifndef __cplusplus 15 # define output(c) (void)putc(c,yyout) 16 #else 17 # define lex_output(c) (void)putc(c,yyout) 18 #endif 19 20 #if defined(__cplusplus) || defined(__STDC__) 21 22 #if defined(__cplusplus) && defined(__EXTERN_C__) 23 extern "C" { 24 #endif 25 int yyback(int *, int); 26 int yyinput(void); 27 int yylook(void); 28 void yyoutput(int); 29 int yyracc(int); 30 int yyreject(void); 31 void yyunput(int); 32 int yylex(void); 33 #ifdef YYLEX_E 34 void yywoutput(wchar_t); 35 wchar_t yywinput(void); 36 void yywunput(wchar_t); 37 #endif 38 #ifndef yyless 39 int yyless(int); 40 #endif 41 #ifndef yywrap 42 int yywrap(void); 43 #endif 44 #ifdef LEXDEBUG 45 void allprint(char); 46 void sprint(char *); 47 #endif 48 #if defined(__cplusplus) && defined(__EXTERN_C__) 49 } 50 #endif 51 52 #ifdef __cplusplus 53 extern "C" { 54 #endif 55 void exit(int); 56 #ifdef __cplusplus 57 } 58 #endif 59 60 #endif 61 # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} 62 # define yymore() (yymorfg=1) 63 #ifndef __cplusplus 64 # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) 65 #else 66 # define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) 67 #endif 68 #define ECHO fprintf(yyout, "%s",yytext) 69 # define REJECT { nstr = yyreject(); goto yyfussy;} 70 int yyleng; 71 char yy_tbuf[YYLMAX]; 72 char * yytext = yy_tbuf; 73 int yytextsz = YYLMAX; 74 #ifndef YYTEXTSZINC 75 #define YYTEXTSZINC 100 76 #endif 77 int yymorfg; 78 extern char *yysptr, yysbuf[]; 79 int yytchar; 80 FILE *yyin = {stdin}, *yyout = {stdout}; 81 extern int yylineno; 82 struct yysvf { 83 struct yywork *yystoff; 84 struct yysvf *yyother; 85 int *yystops;}; 86 struct yysvf *yyestate; 87 extern struct yysvf yysvec[], *yybgin; 88 89 # line 5 "../../../common/mdb/mdb_lex.l" 90 /* 91 * CDDL HEADER START 92 * 93 * The contents of this file are subject to the terms of the 94 * Common Development and Distribution License (the "License"). 95 * You may not use this file except in compliance with the License. 96 * 97 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 98 * or http://www.opensolaris.org/os/licensing. 99 * See the License for the specific language governing permissions 100 * and limitations under the License. 101 * 102 * When distributing Covered Code, include this CDDL HEADER in each 103 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 104 * If applicable, add the following below this CDDL HEADER, with the 105 * fields enclosed by brackets "[]" replaced with your own identifying 106 * information: Portions Copyright [yyyy] [name of copyright owner] 107 * 108 * CDDL HEADER END 109 * 110 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 111 * Use is subject to license terms. 112 */ 113 114 115 # line 29 "../../../common/mdb/mdb_lex.l" 116 /* 117 * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 118 */ 119 120 #include <sys/types.h> 121 #include <sys/isa_defs.h> 122 123 #include <strings.h> 124 #include <stdarg.h> 125 #include <stdlib.h> 126 #include <stdio.h> 127 #include <errno.h> 128 129 #include <mdb/mdb_types.h> 130 #include <mdb/mdb_debug.h> 131 #include <mdb/mdb_nv.h> 132 #include <mdb/mdb_lex.h> 133 #include <mdb/mdb_frame.h> 134 #include <mdb/mdb_string.h> 135 #include <mdb/mdb_stdlib.h> 136 #include <mdb/mdb_err.h> 137 #include <mdb/mdb.h> 138 139 #include "mdb_grammar.h" 140 141 142 # line 54 "../../../common/mdb/mdb_lex.l" 143 /* 144 * lex hardcodes yyin and yyout to stdin and stdout, respectively, before we get 145 * control. We've redirected printf and fprintf (see mdb_lex.h) to yyprintf and 146 * yyfprintf, which ignore the FILE * provided by yyout. __iob-based stdin and 147 * stdout are useless in kmdb, since we don't have stdio. We define __iob here 148 * to shut the linker up. 149 */ 150 #ifdef _KMDB 151 FILE __iob[_NFILE]; 152 #endif 153 154 155 # line 65 "../../../common/mdb/mdb_lex.l" 156 /* 157 * We need to undefine lex's input, unput, and output macros so that references 158 * to these call the functions we provide at the end of this source file, 159 * instead of the default versions based on libc's stdio. 160 */ 161 #ifdef input 162 #undef input 163 #endif 164 165 #ifdef unput 166 #undef unput 167 #endif 168 169 #ifdef output 170 #undef output 171 #endif 172 173 static int input(void); 174 static void unput(int); 175 static void output(int); 176 177 static void string_unquote(char *); 178 179 extern int yydebug; 180 181 182 # line 90 "../../../common/mdb/mdb_lex.l" 183 /* 184 * This will prevent lex from trying to malloc() and resize our yytext variable, 185 * instead it will just print out an error message and exit(), which seems 186 * a lesser of two evils. 187 */ 188 #define YYISARRAY 189 190 # define S_SHELLCMD 2 191 # define S_INITIAL 4 192 # define S_FMTLIST 6 193 # define S_ARGLIST 8 194 # define S_EXPR 10 195 # define YYNEWLINE 10 196 int yylex(){ 197 int nstr; extern int yyprevious; 198 #ifdef __cplusplus 199 /* to avoid CC and lint complaining yyfussy not being used ...*/ 200 static int __lex_hack = 0; 201 if (__lex_hack) goto yyfussy; 202 #endif 203 while((nstr = yylook()) >= 0) 204 yyfussy: switch(nstr){ 205 case 0: 206 if(yywrap()) return(0); break; 207 case 1: 208 209 # line 116 "../../../common/mdb/mdb_lex.l" 210 case 2: 211 212 # line 117 "../../../common/mdb/mdb_lex.l" 213 case 3: 214 215 # line 118 "../../../common/mdb/mdb_lex.l" 216 { 217 /* 218 * Comments are legal in these three states -- if we see one 219 * eat the line and return the newline character. 220 */ 221 BEGIN(S_INITIAL); 222 return ('\n'); 223 } 224 break; 225 case 4: 226 227 # line 127 "../../../common/mdb/mdb_lex.l" 228 case 5: 229 230 # line 128 "../../../common/mdb/mdb_lex.l" 231 return (MDB_TOK_EQUAL); 232 break; 233 case 6: 234 235 # line 130 "../../../common/mdb/mdb_lex.l" 236 case 7: 237 238 # line 131 "../../../common/mdb/mdb_lex.l" 239 return (MDB_TOK_NOTEQUAL); 240 break; 241 case 8: 242 243 # line 133 "../../../common/mdb/mdb_lex.l" 244 case 9: 245 246 # line 134 "../../../common/mdb/mdb_lex.l" 247 case 10: 248 249 # line 135 "../../../common/mdb/mdb_lex.l" 250 { 251 /* 252 * Shell escapes are legal in all of these states -- switch to 253 * the shell command state and return the ! character. 254 */ 255 BEGIN(S_SHELLCMD); 256 return (yytext[0]); 257 } 258 break; 259 case 11: 260 261 # line 144 "../../../common/mdb/mdb_lex.l" 262 case 12: 263 264 # line 145 "../../../common/mdb/mdb_lex.l" 265 { 266 /* 267 * Pipelines can appear in any of these states -- switch to 268 * the initial state and return the | character. 269 */ 270 BEGIN(S_INITIAL); 271 return (yytext[0]); 272 } 273 break; 274 case 13: 275 276 # line 154 "../../../common/mdb/mdb_lex.l" 277 { 278 /* 279 * Once in the shell-command state, we return all remaining 280 * characters up to a newline or ';' delimiter as a single 281 * string which will be passed to $SHELL -c. 282 */ 283 yylval.l_string = strdup(yytext); 284 BEGIN(S_INITIAL); 285 return (MDB_TOK_STRING); 286 } 287 break; 288 case 14: 289 290 # line 165 "../../../common/mdb/mdb_lex.l" 291 { 292 /* 293 * Verb ::command-name -- lookup the correspond dcmd and 294 * switch to the argument list state. 295 */ 296 if ((yylval.l_dcmd = mdb_dcmd_lookup(yytext + 2)) == NULL) 297 yyperror("invalid command '%s'", yytext); 298 299 BEGIN(S_ARGLIST); 300 return (MDB_TOK_DCMD); 301 } 302 break; 303 case 15: 304 305 # line 177 "../../../common/mdb/mdb_lex.l" 306 case 16: 307 308 # line 178 "../../../common/mdb/mdb_lex.l" 309 { 310 /* 311 * Old-style :c or $c command -- lookup the corresponding dcmd 312 * and switch to the argument list state. 313 */ 314 if ((yylval.l_dcmd = mdb_dcmd_lookup(yytext)) == NULL) 315 yyperror("invalid command '%s'", yytext); 316 317 BEGIN(S_ARGLIST); 318 return (MDB_TOK_DCMD); 319 } 320 break; 321 case 17: 322 323 # line 190 "../../../common/mdb/mdb_lex.l" 324 { 325 /* 326 * Variable assignment with size cast -- append the cast letter 327 * to the argument list, and switch to the argument list state. 328 */ 329 mdb_arg_t arg; 330 331 arg.a_un.a_char = yytext[2]; 332 arg.a_type = MDB_TYPE_CHAR; 333 334 mdb_argvec_append(&mdb.m_frame->f_argvec, &arg); 335 yylval.l_dcmd = mdb_dcmd_lookup(">"); 336 337 BEGIN(S_ARGLIST); 338 return (MDB_TOK_DCMD); 339 } 340 break; 341 case 18: 342 343 # line 207 "../../../common/mdb/mdb_lex.l" 344 { 345 /* 346 * Variable assignment -- switch to the argument list state. 347 */ 348 yylval.l_dcmd = mdb_dcmd_lookup(yytext); 349 BEGIN(S_ARGLIST); 350 return (MDB_TOK_DCMD); 351 } 352 break; 353 case 19: 354 355 # line 216 "../../../common/mdb/mdb_lex.l" 356 { 357 /* 358 * Format verb followed by write or match signifier -- switch 359 * to the value list state and return the verb character. We 360 * also append the actual format character to the arg list. 361 */ 362 mdb_arg_t arg; 363 364 arg.a_un.a_char = yytext[yyleng - 1]; 365 arg.a_type = MDB_TYPE_CHAR; 366 367 mdb_argvec_append(&mdb.m_frame->f_argvec, &arg); 368 369 BEGIN(S_ARGLIST); 370 return yytext[0]; 371 } 372 break; 373 case 20: 374 375 # line 233 "../../../common/mdb/mdb_lex.l" 376 { 377 /* 378 * Format verb -- switch to the format list state and return 379 * the actual verb character verbatim. 380 */ 381 BEGIN(S_FMTLIST); 382 return (yytext[0]); 383 } 384 break; 385 case 21: 386 387 # line 242 "../../../common/mdb/mdb_lex.l" 388 case 22: 389 390 # line 243 "../../../common/mdb/mdb_lex.l" 391 yyerror("syntax error: ' unmatched"); 392 break; 393 case 23: 394 395 # line 245 "../../../common/mdb/mdb_lex.l" 396 case 24: 397 398 # line 246 "../../../common/mdb/mdb_lex.l" 399 { 400 char *s, *p, *q; 401 size_t nbytes; 402 403 /* 404 * If the character sequence is zero-length, return 0. 405 */ 406 if (yyleng == 2) { 407 yylval.l_immediate = 0; 408 return (MDB_TOK_IMMEDIATE); 409 } 410 411 s = yytext + 1; /* Skip past initial quote */ 412 yytext[yyleng - 1] = '\0'; /* Overwrite final quote */ 413 nbytes = stresc2chr(s); /* Convert escapes */ 414 yylval.l_immediate = 0; /* Initialize token value */ 415 416 if (nbytes > sizeof (uintmax_t)) { 417 yyerror("character constant may not exceed %lu bytes\n", 418 (ulong_t)sizeof (uintmax_t)); 419 } 420 421 #ifdef _LITTLE_ENDIAN 422 p = ((char*)&yylval.l_immediate) + nbytes - 1; 423 424 for (q = s; nbytes != 0; nbytes--) 425 *p-- = *q++; 426 #else 427 bcopy(s, ((char *)&yylval.l_immediate) + 428 sizeof (uintmax_t) - nbytes, nbytes); 429 #endif 430 return (MDB_TOK_IMMEDIATE); 431 } 432 break; 433 case 25: 434 435 # line 280 "../../../common/mdb/mdb_lex.l" 436 yyerror("syntax error: \" unmatched"); 437 break; 438 case 26: 439 440 # line 282 "../../../common/mdb/mdb_lex.l" 441 { 442 /* 443 * Quoted string -- convert C escape sequences and return the 444 * string as a token. 445 */ 446 yylval.l_string = strndup(yytext + 1, yyleng - 2); 447 (void) stresc2chr(yylval.l_string); 448 return (MDB_TOK_STRING); 449 } 450 break; 451 case 27: 452 453 # line 292 "../../../common/mdb/mdb_lex.l" 454 case 28: 455 456 # line 293 "../../../common/mdb/mdb_lex.l" 457 { 458 /* 459 * Start of expression -- begin expression state and save the 460 * current state so we can return at the end of the expression. 461 */ 462 mdb.m_frame->f_oldstate = YYSTATE; 463 BEGIN(S_EXPR); 464 return (MDB_TOK_LEXPR); 465 } 466 break; 467 case 29: 468 469 # line 303 "../../../common/mdb/mdb_lex.l" 470 { 471 /* 472 * String token -- create a copy of the string and return it. 473 * We need to handle embedded single and double-quote pairs, 474 * which overcomplicates this slightly. 475 */ 476 yylval.l_string = strdup(yytext); 477 string_unquote(yylval.l_string); 478 return (MDB_TOK_STRING); 479 } 480 break; 481 case 30: 482 483 # line 314 "../../../common/mdb/mdb_lex.l" 484 { 485 /* 486 * Immediate value -- in the format list, all immediates 487 * are assumed to be in decimal. 488 */ 489 yylval.l_immediate = strtonum(yytext, 10); 490 return (MDB_TOK_IMMEDIATE); 491 } 492 break; 493 case 31: 494 495 # line 323 "../../../common/mdb/mdb_lex.l" 496 { 497 /* 498 * Non-meta character -- in the format list, we return each 499 * character as a separate token to be added as an argument. 500 */ 501 yylval.l_char = yytext[0]; 502 return (MDB_TOK_CHAR); 503 } 504 break; 505 case 32: 506 507 # line 332 "../../../common/mdb/mdb_lex.l" 508 { 509 /* 510 * In the expression state only, we cannot see a command 511 * delimiter or shell escape before we end the expression. 512 */ 513 yyerror("syntax error: $[ unmatched"); 514 } 515 break; 516 case 33: 517 518 # line 340 "../../../common/mdb/mdb_lex.l" 519 { 520 /* 521 * End of expression state. Restore the state we were in 522 * before the "$[" which started this expression. 523 */ 524 BEGIN(mdb.m_frame->f_oldstate); 525 return (MDB_TOK_REXPR); 526 } 527 break; 528 case 34: 529 530 # line 349 "../../../common/mdb/mdb_lex.l" 531 case 35: 532 533 # line 350 "../../../common/mdb/mdb_lex.l" 534 case 36: 535 536 # line 351 "../../../common/mdb/mdb_lex.l" 537 case 37: 538 539 # line 352 "../../../common/mdb/mdb_lex.l" 540 { 541 /* 542 * Variable reference -- lookup the variable and return a 543 * pointer to it. Referencing undefined variables is an error. 544 */ 545 yylval.l_var = mdb_nv_lookup(&mdb.m_nv, &yytext[1]); 546 547 if (yylval.l_var == NULL) 548 yyerror("variable '%s' is not defined", &yytext[1]); 549 550 return (MDB_TOK_VAR_REF); 551 } 552 break; 553 case 38: 554 555 # line 365 "../../../common/mdb/mdb_lex.l" 556 case 39: 557 558 # line 366 "../../../common/mdb/mdb_lex.l" 559 return (MDB_TOK_LSHIFT); 560 break; 561 case 40: 562 563 # line 368 "../../../common/mdb/mdb_lex.l" 564 case 41: 565 566 # line 369 "../../../common/mdb/mdb_lex.l" 567 return (MDB_TOK_RSHIFT); 568 break; 569 case 42: 570 571 # line 371 "../../../common/mdb/mdb_lex.l" 572 case 43: 573 574 # line 372 "../../../common/mdb/mdb_lex.l" 575 { 576 switch (yytext[2]) { 577 case 'c': case '1': 578 return (MDB_TOK_COR1_DEREF); 579 case 's': case '2': 580 return (MDB_TOK_COR2_DEREF); 581 case 'i': case '4': 582 #ifdef _ILP32 583 case 'l': 584 #endif 585 return (MDB_TOK_COR4_DEREF); 586 #ifdef _LP64 587 case 'l': 588 #endif 589 case '8': 590 return (MDB_TOK_COR8_DEREF); 591 } 592 yyerror("invalid cast -- %s\n", yytext); 593 } 594 break; 595 case 44: 596 597 # line 392 "../../../common/mdb/mdb_lex.l" 598 case 45: 599 600 # line 393 "../../../common/mdb/mdb_lex.l" 601 { 602 switch (yytext[2]) { 603 case 'c': case '1': 604 return (MDB_TOK_OBJ1_DEREF); 605 case 's': case '2': 606 return (MDB_TOK_OBJ2_DEREF); 607 case 'i': case '4': 608 #ifdef _ILP32 609 case 'l': 610 #endif 611 return (MDB_TOK_OBJ4_DEREF); 612 #ifdef _LP64 613 case 'l': 614 #endif 615 case '8': 616 return (MDB_TOK_OBJ8_DEREF); 617 } 618 yyerror("invalid cast -- %s\n", yytext); 619 } 620 break; 621 case 46: 622 623 # line 413 "../../../common/mdb/mdb_lex.l" 624 case 47: 625 626 # line 414 "../../../common/mdb/mdb_lex.l" 627 { 628 /* 629 * Binary immediate value. 630 */ 631 yylval.l_immediate = strtonum(yytext + 2, 2); 632 return (MDB_TOK_IMMEDIATE); 633 } 634 break; 635 case 48: 636 637 # line 422 "../../../common/mdb/mdb_lex.l" 638 case 49: 639 640 # line 423 "../../../common/mdb/mdb_lex.l" 641 { 642 /* 643 * Octal immediate value. 644 */ 645 yylval.l_immediate = strtonum(yytext + 2, 8); 646 return (MDB_TOK_IMMEDIATE); 647 } 648 break; 649 case 50: 650 651 # line 431 "../../../common/mdb/mdb_lex.l" 652 case 51: 653 654 # line 432 "../../../common/mdb/mdb_lex.l" 655 { 656 #ifdef _KMDB 657 yyerror("floating point not supported\n"); 658 #else 659 /* 660 * Decimal floating point value. 661 */ 662 char *p, c; 663 double d; 664 int i; 665 666 if ((p = strsplit(yytext, '.')) == NULL) 667 yyerror("internal scanning error -- expected '.'\n"); 668 669 d = (double)strtonum(yytext + 2, 10); 670 671 for (i = 0; (c = *p++) != '\0'; i++) 672 d = d * 10 + c - '0'; 673 674 while (i-- != 0) 675 d /= 10; 676 677 yylval.l_immediate = *((uintmax_t *)&d); 678 return (MDB_TOK_IMMEDIATE); 679 #endif 680 } 681 break; 682 case 52: 683 684 # line 459 "../../../common/mdb/mdb_lex.l" 685 case 53: 686 687 # line 460 "../../../common/mdb/mdb_lex.l" 688 { 689 /* 690 * Decimal immediate value. 691 */ 692 yylval.l_immediate = strtonum(yytext + 2, 10); 693 return (MDB_TOK_IMMEDIATE); 694 } 695 break; 696 case 54: 697 698 # line 468 "../../../common/mdb/mdb_lex.l" 699 case 55: 700 701 # line 469 "../../../common/mdb/mdb_lex.l" 702 { 703 /* 704 * Hexadecimal value. 705 */ 706 yylval.l_immediate = strtonum(yytext + 2, 16); 707 return (MDB_TOK_IMMEDIATE); 708 } 709 break; 710 case 56: 711 712 # line 477 "../../../common/mdb/mdb_lex.l" 713 case 57: 714 715 # line 478 "../../../common/mdb/mdb_lex.l" 716 { 717 GElf_Sym sym; 718 /* 719 * Immediate values without an explicit base are converted 720 * using the default radix (user configurable). However, if 721 * the token does *not* begin with a digit, it is also a 722 * potential symbol (e.g. "f") so we have to check that first. 723 */ 724 if (strchr("0123456789", yytext[0]) == NULL && 725 mdb_tgt_lookup_by_name(mdb.m_target, 726 MDB_TGT_OBJ_EVERY, yytext, &sym, NULL) == 0) 727 yylval.l_immediate = (uintmax_t)sym.st_value; 728 else 729 yylval.l_immediate = strtonum(yytext, mdb.m_radix); 730 return (MDB_TOK_IMMEDIATE); 731 } 732 break; 733 case 58: 734 735 # line 495 "../../../common/mdb/mdb_lex.l" 736 case 59: 737 738 # line 496 "../../../common/mdb/mdb_lex.l" 739 { 740 /* 741 * Symbol -- parser will look up in symbol table. 742 */ 743 yylval.l_string = strdup(yytext); 744 return (MDB_TOK_SYMBOL); 745 } 746 break; 747 case 60: 748 749 # line 504 "../../../common/mdb/mdb_lex.l" 750 { 751 /* 752 * End of command -- return to start state and return literal. 753 */ 754 BEGIN(S_INITIAL); 755 return (yytext[0]); 756 } 757 break; 758 case 61: 759 760 # line 512 "../../../common/mdb/mdb_lex.l" 761 ; 762 break; 763 case 62: 764 765 # line 514 "../../../common/mdb/mdb_lex.l" 766 return (yytext[0]); 767 break; 768 case -1: 769 break; 770 default: 771 (void)fprintf(yyout,"bad switch yylook %d",nstr); 772 } return(0); } 773 /* end of yylex */ 774 775 # line 517 "../../../common/mdb/mdb_lex.l" 776 777 void 778 mdb_lex_debug(int i) 779 { 780 yydebug = i; 781 } 782 783 void 784 mdb_lex_reset(void) 785 { 786 BEGIN(S_INITIAL); 787 } 788 789 void 790 yydiscard(void) 791 { 792 int c; 793 794 /* 795 * If stdin is a string, pipeline, or tty, throw away all our buffered 796 * data. Otherwise discard characters up to the next likely delimiter. 797 */ 798 if (mdb_iob_isastr(mdb.m_in) || mdb_iob_isatty(mdb.m_in) || 799 mdb_iob_isapipe(mdb.m_in)) 800 mdb_iob_discard(mdb.m_in); 801 else { 802 while ((c = mdb_iob_getc(mdb.m_in)) != (int)EOF) { 803 if (c == ';' || c == '\n') 804 break; 805 } 806 } 807 808 BEGIN(S_INITIAL); 809 } 810 811 static void 812 yyerror_reset(void) 813 { 814 yydiscard(); 815 mdb_argvec_reset(&mdb.m_frame->f_argvec); 816 longjmp(mdb.m_frame->f_pcb, MDB_ERR_PARSE); 817 } 818 819 void 820 yyerror(const char *format, ...) 821 { 822 va_list alist; 823 char *s; 824 825 mdb_iob_printf(mdb.m_err, "%s: ", mdb.m_pname); 826 va_start(alist, format); 827 mdb_iob_vprintf(mdb.m_err, format, alist); 828 va_end(alist); 829 830 if (strchr(format, '\n') == NULL) { 831 if (!mdb_iob_isatty(mdb.m_in)) { 832 mdb_iob_printf(mdb.m_err, " on line %d of %s", 833 yylineno, mdb_iob_name(mdb.m_in)); 834 } 835 836 s = strchr2esc(yytext, strlen(yytext)); 837 mdb_iob_printf(mdb.m_err, " near \"%s\"\n", s); 838 strfree(s); 839 } 840 841 yyerror_reset(); 842 } 843 844 void 845 yyperror(const char *format, ...) 846 { 847 va_list alist; 848 849 va_start(alist, format); 850 vwarn(format, alist); 851 va_end(alist); 852 853 yyerror_reset(); 854 } 855 856 int 857 yywrap(void) 858 { 859 mdb_dprintf(MDB_DBG_PARSER, "yywrap at line %d\n", yylineno); 860 return (1); /* indicate that lex should return a zero token for EOF */ 861 } 862 863 /*PRINTFLIKE2*/ 864 /*ARGSUSED*/ 865 int 866 yyfprintf(FILE *stream, const char *format, ...) 867 { 868 va_list alist; 869 870 va_start(alist, format); 871 mdb_iob_vprintf(mdb.m_err, format, alist); 872 va_end(alist); 873 return (0); 874 } 875 876 /*PRINTFLIKE1*/ 877 int 878 yyprintf(const char *format, ...) 879 { 880 va_list alist; 881 882 va_start(alist, format); 883 mdb_iob_vprintf(mdb.m_err, format, alist); 884 va_end(alist); 885 return (0); 886 } 887 888 static int 889 input(void) 890 { 891 int c = mdb_iob_getc(mdb.m_in); 892 893 if (c == '\n') 894 yylineno++; 895 896 return (c == EOF ? 0 : c); 897 } 898 899 static void 900 unput(int c) 901 { 902 if (c == '\n') 903 yylineno--; 904 905 (void) mdb_iob_ungetc(mdb.m_in, c == 0 ? EOF : c); 906 } 907 908 static void 909 output(int c) 910 { 911 char ch = c; 912 mdb_iob_nputs(mdb.m_out, &ch, sizeof (ch)); 913 } 914 915 static char * 916 string_nextquote(char *s, char q1, char q2) 917 { 918 char c = 0; 919 920 do { 921 if (c != '\\' && (*s == q1 || *s == q2)) 922 return (s); 923 } while ((c = *s++) != '\0'); 924 925 return (NULL); 926 } 927 928 static void 929 string_unquote(char *s) 930 { 931 char *o, *p, *q, c; 932 933 for (o = p = s; (p = string_nextquote(p, '\'', '"')) != NULL; o = p) { 934 /* 935 * If the quote wasn't the first character, advance 936 * the destination buffer past what we skipped. 937 */ 938 if (p > o) { 939 /* Using memmove to prevent possible overlap. */ 940 (void) memmove(s, o, p - o); 941 s += p - o; 942 } 943 944 c = *p; /* Save the current quote */ 945 946 /* 947 * Look ahead and find the matching quote. If none is 948 * found, use yyerror to longjmp out of the lexer. 949 */ 950 if (c == '"') 951 q = string_nextquote(p + 1, c, c); 952 else 953 q = strchr(p + 1, c); 954 955 if (q == NULL) 956 yyerror("syntax error: %c unmatched", c); 957 958 /* 959 * If the string is non-empty, copy it to the destination 960 * and convert escape sequences if *p is double-quote. 961 */ 962 if (q > p + 1) { 963 (void) memmove(s, p + 1, q - p - 1); 964 if (c == '"') { 965 s[q - p - 1] = '\0'; 966 s += stresc2chr(s); 967 } else 968 s += q - p - 1; 969 } 970 971 p = q + 1; /* Advance p past matching quote */ 972 } 973 974 (void) memmove(s, o, strlen(o) + 1); 975 } 976 977 /* 978 * Unfortunately, lex and yacc produces code that is inherently global. They do 979 * not provide routines to save and restore state, instead relying on global 980 * variables. There is one single lex state, so that if a frame switch then 981 * tries to perform any evaluation, the old values are corrupted. This 982 * structure and corresponding function provide a means of preserving lex state 983 * across frame switches. Note that this is tied to the lex implementation, so 984 * if the lex compiler is changed or upgraded to a different format, then this 985 * may need to be altered. This is unavoidable due to the implementation of lex 986 * and yacc. This is essentially a collection of all the global variables 987 * defined by the lex code, excluding those that do not change through the 988 * course of yylex() and yyparse(). 989 */ 990 extern struct yysvf *yylstate[], **yylsp, **yyolsp; extern int yyprevious; 991 extern int *yyfnd; 992 993 extern YYSTYPE *yypv; 994 extern int *yyps; 995 extern int yytmp; 996 extern int yystate; 997 extern int yynerrs; 998 extern int yyerrflag; 999 extern int yychar; 1000 extern YYSTYPE yylval; 1001 extern YYSTYPE yyval; 1002 extern int *yys; 1003 extern YYSTYPE *yyv; 1004 1005 typedef struct mdb_lex_state { 1006 /* Variables needed by yylex */ 1007 int yyleng; 1008 char yytext[YYLMAX]; 1009 int yymorfg; 1010 int yylineno; 1011 void *yyestate; 1012 void *yylstate[BUFSIZ]; 1013 void *yylsp; 1014 void *yyolsp; 1015 int *yyfnd; 1016 int yyprevious; 1017 void *yybgin; 1018 /* Variables needed by yyparse */ 1019 void *yypv; 1020 int *yyps; 1021 int yytmp; 1022 int yystate; 1023 int yynerrs; 1024 int yyerrflag; 1025 int yychar; 1026 YYSTYPE yylval; 1027 YYSTYPE yyval; 1028 int yys[YYMAXDEPTH]; 1029 YYSTYPE yyv[YYMAXDEPTH]; 1030 } mdb_lex_state_t; 1031 1032 void 1033 mdb_lex_state_save(mdb_lex_state_t *s) 1034 { 1035 ASSERT(s != NULL); 1036 1037 s->yyleng = yyleng; 1038 s->yymorfg = yymorfg; 1039 s->yylineno = yylineno; 1040 s->yyestate = yyestate; 1041 bcopy(yylstate, s->yylstate, YYLMAX * sizeof (void *)); 1042 s->yylsp = yylsp; 1043 s->yyolsp = yyolsp; 1044 s->yyfnd = yyfnd; 1045 s->yyprevious = yyprevious; 1046 s->yybgin = yybgin; 1047 1048 s->yypv = yypv; 1049 s->yyps = yyps; 1050 s->yystate = yystate; 1051 s->yytmp = yytmp; 1052 s->yynerrs = yynerrs; 1053 s->yyerrflag = yyerrflag; 1054 s->yychar = yychar; 1055 s->yylval = yylval; 1056 s->yyval = yyval; 1057 } 1058 1059 void 1060 mdb_lex_state_restore(mdb_lex_state_t *s) 1061 { 1062 ASSERT(s != NULL); 1063 1064 yyleng = s->yyleng; 1065 yytext = s->yytext; 1066 yymorfg = s->yymorfg; 1067 yylineno = s->yylineno; 1068 yyestate = s->yyestate; 1069 bcopy(s->yylstate, yylstate, YYLMAX * sizeof (void *)); 1070 yylsp = s->yylsp; 1071 yyolsp = s->yyolsp; 1072 yyfnd = s->yyfnd; 1073 yyprevious = s->yyprevious; 1074 yybgin = s->yybgin; 1075 1076 yypv = s->yypv; 1077 yyps = s->yyps; 1078 yystate = s->yystate; 1079 yytmp = s->yytmp; 1080 yynerrs = s->yynerrs; 1081 yyerrflag = s->yyerrflag; 1082 yychar = s->yychar; 1083 yylval = s->yylval; 1084 yyval = s->yyval; 1085 yys = s->yys; 1086 yyv = s->yyv; 1087 } 1088 1089 /* 1090 * Create and initialize the lex/yacc-specific state associated with a frame 1091 * structure. We set all fields to known safe values so that 1092 * mdb_lex_state_restore() can be used safely before mdb_lex_state_save(). 1093 */ 1094 void 1095 mdb_lex_state_create(mdb_frame_t *f) 1096 { 1097 f->f_lstate = mdb_alloc(sizeof (mdb_lex_state_t), UM_SLEEP); 1098 1099 yyleng = 0; 1100 yymorfg = 0; 1101 /* yytext is fine with garbage in it */ 1102 yytext = f->f_lstate->yytext; 1103 yylineno = 1; 1104 yyestate = NULL; 1105 bzero(yylstate, YYLMAX * sizeof (void *)); 1106 yylsp = NULL; 1107 yyolsp = NULL; 1108 yyfnd = 0; 1109 yyprevious = YYNEWLINE; 1110 yys = f->f_lstate->yys; 1111 yyv = f->f_lstate->yyv; 1112 mdb_argvec_create(&f->f_argvec); 1113 f->f_oldstate = 0; 1114 mdb_lex_reset(); /* Responsible for setting yybgin */ 1115 } 1116 1117 void 1118 mdb_lex_state_destroy(mdb_frame_t *f) 1119 { 1120 mdb_free(f->f_lstate, sizeof (mdb_lex_state_t)); 1121 f->f_lstate = NULL; 1122 mdb_argvec_destroy(&f->f_argvec); 1123 } 1124 int yyvstop[] = { 1125 0, 1126 1127 29, 1128 0, 1129 1130 29, 1131 0, 1132 1133 29, 1134 0, 1135 1136 29, 1137 0, 1138 1139 29, 1140 0, 1141 1142 29, 1143 0, 1144 1145 29, 1146 0, 1147 1148 29, 1149 0, 1150 1151 29, 1152 0, 1153 1154 29, 1155 0, 1156 1157 29, 1158 0, 1159 1160 29, 1161 0, 1162 1163 62, 1164 0, 1165 1166 61, 1167 62, 1168 0, 1169 1170 60, 1171 0, 1172 1173 62, 1174 -25, 1175 0, 1176 1177 60, 1178 62, 1179 0, 1180 1181 13, 1182 62, 1183 0, 1184 1185 13, 1186 61, 1187 62, 1188 0, 1189 1190 13, 1191 62, 1192 -25, 1193 0, 1194 1195 8, 1196 62, 1197 0, 1198 1199 62, 1200 0, 1201 1202 62, 1203 0, 1204 1205 62, 1206 -21, 1207 0, 1208 1209 62, 1210 0, 1211 1212 58, 1213 62, 1214 0, 1215 1216 20, 1217 62, 1218 0, 1219 1220 56, 1221 62, 1222 0, 1223 1224 56, 1225 62, 1226 0, 1227 1228 62, 1229 0, 1230 1231 62, 1232 0, 1233 1234 20, 1235 62, 1236 0, 1237 1238 18, 1239 62, 1240 0, 1241 1242 20, 1243 62, 1244 0, 1245 1246 20, 1247 62, 1248 0, 1249 1250 56, 1251 58, 1252 62, 1253 0, 1254 1255 31, 1256 62, 1257 0, 1258 1259 9, 1260 62, 1261 0, 1262 1263 62, 1264 0, 1265 1266 31, 1267 62, 1268 0, 1269 1270 30, 1271 31, 1272 62, 1273 0, 1274 1275 11, 1276 62, 1277 0, 1278 1279 29, 1280 62, 1281 0, 1282 1283 10, 1284 62, 1285 0, 1286 1287 62, 1288 -25, 1289 0, 1290 1291 62, 1292 0, 1293 1294 62, 1295 0, 1296 1297 29, 1298 62, 1299 0, 1300 1301 12, 1302 62, 1303 0, 1304 1305 32, 1306 60, 1307 0, 1308 1309 32, 1310 62, 1311 0, 1312 1313 62, 1314 0, 1315 1316 62, 1317 -22, 1318 0, 1319 1320 62, 1321 0, 1322 1323 59, 1324 62, 1325 0, 1326 1327 57, 1328 62, 1329 0, 1330 1331 57, 1332 62, 1333 0, 1334 1335 32, 1336 60, 1337 62, 1338 0, 1339 1340 62, 1341 0, 1342 1343 62, 1344 0, 1345 1346 62, 1347 0, 1348 1349 57, 1350 59, 1351 62, 1352 0, 1353 1354 33, 1355 62, 1356 0, 1357 1358 -25, 1359 0, 1360 1361 25, 1362 0, 1363 1364 26, 1365 0, 1366 1367 13, 1368 0, 1369 1370 13, 1371 -25, 1372 0, 1373 1374 13, 1375 26, 1376 0, 1377 1378 13, 1379 0, 1380 1381 6, 1382 0, 1383 1384 16, 1385 0, 1386 1387 15, 1388 0, 1389 1390 15, 1391 0, 1392 1393 -21, 1394 0, 1395 1396 21, 1397 0, 1398 1399 23, 1400 0, 1401 1402 -21, 1403 0, 1404 1405 58, 1406 0, 1407 1408 19, 1409 0, 1410 1411 56, 1412 0, 1413 1414 34, 1415 0, 1416 1417 35, 1418 0, 1419 1420 38, 1421 0, 1422 1423 4, 1424 0, 1425 1426 40, 1427 0, 1428 1429 56, 1430 58, 1431 0, 1432 1433 28, 1434 0, 1435 1436 30, 1437 0, 1438 1439 29, 1440 0, 1441 1442 -25, 1443 0, 1444 1445 26, 1446 29, 1447 0, 1448 1449 27, 1450 0, 1451 1452 29, 1453 0, 1454 1455 29, 1456 0, 1457 1458 7, 1459 0, 1460 1461 -22, 1462 0, 1463 1464 22, 1465 0, 1466 1467 24, 1468 0, 1469 1470 -22, 1471 0, 1472 1473 59, 1474 0, 1475 1476 57, 1477 0, 1478 1479 36, 1480 0, 1481 1482 37, 1483 0, 1484 1485 39, 1486 0, 1487 1488 5, 1489 0, 1490 1491 41, 1492 0, 1493 1494 57, 1495 59, 1496 0, 1497 1498 23, 1499 -21, 1500 0, 1501 1502 1, 1503 0, 1504 1505 46, 1506 0, 1507 1508 48, 1509 0, 1510 1511 52, 1512 0, 1513 1514 54, 1515 0, 1516 1517 14, 1518 0, 1519 1520 2, 1521 0, 1522 1523 29, 1524 0, 1525 1526 3, 1527 0, 1528 1529 24, 1530 -22, 1531 0, 1532 1533 47, 1534 0, 1535 1536 49, 1537 0, 1538 1539 53, 1540 0, 1541 1542 55, 1543 0, 1544 1545 44, 1546 0, 1547 1548 42, 1549 0, 1550 1551 17, 1552 0, 1553 1554 29, 1555 0, 1556 1557 29, 1558 0, 1559 1560 45, 1561 0, 1562 1563 43, 1564 0, 1565 1566 50, 1567 0, 1568 1569 29, 1570 0, 1571 1572 29, 1573 0, 1574 1575 51, 1576 0, 1577 1578 29, 1579 0, 1580 1581 29, 1582 0, 1583 1584 29, 1585 0, 1586 1587 29, 1588 0, 1589 1590 29, 1591 0, 1592 1593 29, 1594 0, 1595 1596 29, 1597 0, 1598 1599 29, 1600 0, 1601 1602 29, 1603 0, 1604 1605 29, 1606 0, 1607 0}; 1608 # define YYTYPE unsigned char 1609 struct yywork { YYTYPE verify, advance; } yycrank[] = { 1610 0,0, 0,0, 1,13, 0,0, 1611 0,0, 0,0, 0,0, 0,0, 1612 0,0, 0,0, 1,14, 1,15, 1613 0,0, 0,0, 0,0, 0,0, 1614 0,0, 104,0, 0,0, 19,0, 1615 0,0, 0,0, 0,0, 110,0, 1616 0,0, 0,0, 67,0, 0,0, 1617 0,0, 0,0, 68,0, 0,0, 1618 70,0, 0,0, 1,13, 1,16, 1619 0,0, 1,13, 1,13, 0,0, 1620 1,13, 0,0, 0,0, 0,0, 1621 0,0, 0,0, 80,132, 1,13, 1622 1,13, 1,13, 67,64, 1,13, 1623 110,143, 117,149, 23,76, 25,81, 1624 33,96, 1,13, 40,100, 1,13, 1625 1,17, 52,113, 1,13, 54,118, 1626 1,13, 1,13, 1,13, 3,18, 1627 19,0, 21,72, 32,95, 33,97, 1628 1,13, 51,112, 1,13, 3,19, 1629 60,128, 1,13, 61,129, 68,0, 1630 1,13, 70,0, 74,75, 48,0, 1631 48,0, 1,13, 87,135, 87,135, 1632 131,155, 1,13, 133,156, 6,25, 1633 137,157, 1,13, 121,151, 121,151, 1634 1,13, 1,13, 6,29, 3,18, 1635 3,20, 39,99, 3,18, 3,18, 1636 46,108, 3,18, 48,0, 48,0, 1637 67,64, 6,31, 48,0, 6,33, 1638 3,18, 3,18, 3,18, 140,158, 1639 3,18, 142,0, 148,164, 150,165, 1640 153,166, 48,111, 3,18, 0,0, 1641 3,18, 102,0, 102,0, 3,18, 1642 174,0, 3,18, 3,18, 3,18, 1643 4,18, 48,0, 0,0, 0,0, 1644 0,0, 3,18, 0,0, 3,18, 1645 4,19, 142,103, 3,18, 6,13, 1646 0,0, 3,18, 0,0, 0,0, 1647 102,0, 102,0, 3,18, 0,0, 1648 102,0, 0,0, 3,18, 0,0, 1649 0,0, 174,173, 3,18, 169,0, 1650 0,0, 3,18, 3,18, 0,0, 1651 4,18, 4,20, 0,0, 4,18, 1652 4,18, 0,0, 4,18, 0,0, 1653 0,0, 6,13, 0,0, 102,0, 1654 0,0, 4,18, 4,18, 4,18, 1655 0,0, 4,18, 0,0, 169,159, 1656 0,0, 0,0, 0,0, 4,18, 1657 169,173, 4,18, 0,0, 0,0, 1658 4,18, 0,0, 4,18, 4,18, 1659 4,18, 5,13, 48,0, 142,103, 1660 0,0, 0,0, 4,18, 0,0, 1661 4,18, 5,14, 5,15, 4,18, 1662 0,0, 0,0, 4,18, 0,0, 1663 0,0, 0,0, 0,0, 4,18, 1664 0,0, 0,0, 0,0, 4,18, 1665 0,0, 0,0, 0,0, 4,18, 1666 0,0, 0,0, 4,18, 4,18, 1667 0,0, 5,21, 5,16, 0,0, 1668 5,22, 5,23, 0,0, 5,24, 1669 0,0, 0,0, 5,25, 0,0, 1670 102,0, 169,174, 5,26, 5,27, 1671 5,28, 5,29, 5,29, 0,0, 1672 0,0, 0,0, 0,0, 7,37, 1673 5,29, 0,0, 5,30, 5,17, 1674 5,31, 5,32, 5,33, 5,34, 1675 5,35, 5,36, 0,0, 0,0, 1676 0,0, 0,0, 0,0, 5,26, 1677 0,0, 5,26, 0,0, 0,0, 1678 5,26, 0,0, 0,0, 5,26, 1679 0,0, 0,0, 0,0, 0,0, 1680 5,26, 0,0, 0,0, 7,38, 1681 5,26, 0,0, 7,39, 7,37, 1682 5,34, 0,0, 5,13, 5,26, 1683 5,13, 0,0, 0,0, 0,0, 1684 7,37, 7,40, 7,41, 0,0, 1685 7,41, 0,0, 0,0, 0,0, 1686 0,0, 8,37, 7,41, 0,0, 1687 7,37, 0,0, 0,0, 7,37, 1688 0,0, 7,37, 7,37, 7,37, 1689 0,0, 0,0, 0,0, 0,0, 1690 5,13, 7,37, 0,0, 7,37, 1691 0,0, 0,0, 7,37, 0,0, 1692 0,0, 7,37, 0,0, 0,0, 1693 0,0, 0,0, 7,37, 0,0, 1694 0,0, 8,38, 7,37, 0,0, 1695 8,39, 8,37, 7,37, 0,0, 1696 0,0, 7,37, 7,37, 0,0, 1697 0,0, 0,0, 8,37, 8,40, 1698 8,41, 0,0, 8,41, 0,0, 1699 0,0, 0,0, 0,0, 0,0, 1700 8,41, 0,0, 8,37, 0,0, 1701 0,0, 8,37, 0,0, 8,37, 1702 8,37, 8,37, 9,43, 0,0, 1703 0,0, 0,0, 7,42, 8,37, 1704 0,0, 8,37, 0,0, 0,0, 1705 8,37, 0,0, 0,0, 8,37, 1706 0,0, 0,0, 0,0, 0,0, 1707 8,37, 0,0, 0,0, 0,0, 1708 8,37, 0,0, 0,0, 0,0, 1709 8,37, 0,0, 0,0, 8,37, 1710 8,37, 0,0, 9,44, 9,45, 1711 0,0, 9,46, 9,43, 0,0, 1712 9,47, 0,0, 0,0, 0,0, 1713 0,0, 0,0, 0,0, 9,43, 1714 9,48, 9,43, 0,0, 9,43, 1715 0,0, 0,0, 0,0, 0,0, 1716 0,0, 9,43, 0,0, 9,43, 1717 8,42, 0,0, 9,43, 0,0, 1718 9,43, 9,43, 9,43, 10,43, 1719 0,0, 0,0, 0,0, 0,0, 1720 9,43, 0,0, 9,43, 0,0, 1721 0,0, 9,43, 0,0, 0,0, 1722 9,43, 0,0, 0,0, 0,0, 1723 0,0, 9,43, 0,0, 0,0, 1724 0,0, 9,43, 0,0, 0,0, 1725 0,0, 9,43, 0,0, 0,0, 1726 9,43, 9,43, 0,0, 10,44, 1727 10,45, 0,0, 10,46, 10,43, 1728 0,0, 10,47, 0,0, 0,0, 1729 0,0, 0,0, 0,0, 0,0, 1730 10,43, 10,48, 10,43, 0,0, 1731 10,43, 11,50, 0,0, 0,0, 1732 0,0, 0,0, 10,43, 0,0, 1733 10,43, 9,49, 0,0, 10,43, 1734 0,0, 10,43, 10,43, 10,43, 1735 0,0, 0,0, 0,0, 0,0, 1736 0,0, 10,43, 0,0, 10,43, 1737 11,51, 0,0, 10,43, 0,0, 1738 11,52, 10,43, 11,53, 0,0, 1739 0,0, 11,54, 10,43, 0,0, 1740 0,0, 11,55, 10,43, 11,56, 1741 11,57, 11,57, 10,43, 0,0, 1742 0,0, 10,43, 10,43, 11,57, 1743 0,0, 0,0, 11,58, 11,59, 1744 11,60, 11,61, 0,0, 0,0, 1745 11,62, 0,0, 0,0, 0,0, 1746 0,0, 0,0, 11,55, 0,0, 1747 11,55, 0,0, 0,0, 11,55, 1748 12,50, 0,0, 11,55, 0,0, 1749 0,0, 0,0, 10,49, 11,55, 1750 0,0, 0,0, 0,0, 11,55, 1751 0,0, 0,0, 0,0, 0,0, 1752 11,63, 11,13, 11,55, 0,0, 1753 0,0, 0,0, 0,0, 12,51, 1754 0,0, 0,0, 0,0, 12,52, 1755 0,0, 12,53, 0,0, 0,0, 1756 12,54, 0,0, 27,83, 0,0, 1757 12,55, 0,0, 12,56, 12,57, 1758 12,57, 0,0, 0,0, 0,0, 1759 0,0, 0,0, 12,57, 11,13, 1760 0,0, 12,58, 12,59, 12,60, 1761 12,61, 0,0, 0,0, 12,62, 1762 0,0, 27,83, 0,0, 0,0, 1763 0,0, 12,55, 16,64, 12,55, 1764 0,0, 0,0, 12,55, 0,0, 1765 0,0, 12,55, 16,64, 16,65, 1766 27,84, 0,0, 12,55, 0,0, 1767 0,0, 0,0, 12,55, 0,0, 1768 0,0, 0,0, 0,0, 12,63, 1769 12,13, 12,55, 88,136, 88,136, 1770 88,136, 88,136, 88,136, 88,136, 1771 88,136, 88,136, 16,64, 16,66, 1772 0,0, 16,64, 16,64, 0,0, 1773 16,64, 27,85, 27,85, 0,0, 1774 0,0, 0,0, 0,0, 16,64, 1775 16,64, 16,64, 0,0, 16,64, 1776 27,85, 0,0, 12,13, 27,85, 1777 0,0, 16,64, 0,0, 16,64, 1778 16,64, 0,0, 16,64, 0,0, 1779 16,64, 16,64, 16,64, 18,68, 1780 0,0, 0,0, 0,0, 0,0, 1781 16,64, 27,85, 16,64, 18,68, 1782 18,0, 16,64, 0,0, 0,0, 1783 16,64, 0,0, 0,0, 27,85, 1784 27,85, 16,64, 0,0, 0,0, 1785 0,0, 16,64, 0,0, 0,0, 1786 0,0, 16,67, 0,0, 0,0, 1787 16,64, 16,64, 0,0, 18,68, 1788 18,68, 0,0, 18,68, 18,68, 1789 0,0, 18,68, 0,0, 0,0, 1790 0,0, 0,0, 0,0, 0,0, 1791 18,68, 18,68, 18,68, 0,0, 1792 18,68, 0,0, 0,0, 0,0, 1793 0,0, 0,0, 18,68, 0,0, 1794 18,68, 18,0, 0,0, 18,68, 1795 0,0, 18,68, 18,68, 18,68, 1796 20,69, 0,0, 0,0, 0,0, 1797 0,0, 18,68, 0,0, 18,68, 1798 20,69, 0,0, 18,68, 0,0, 1799 0,0, 18,68, 0,0, 0,0, 1800 0,0, 0,0, 18,68, 0,0, 1801 0,0, 0,0, 18,68, 0,0, 1802 0,0, 0,0, 18,68, 0,0, 1803 0,0, 18,68, 18,68, 0,0, 1804 20,69, 20,70, 0,0, 20,69, 1805 20,69, 0,0, 20,69, 0,0, 1806 0,0, 0,0, 0,0, 0,0, 1807 0,0, 20,69, 20,69, 20,69, 1808 0,0, 20,69, 0,0, 0,0, 1809 0,0, 0,0, 0,0, 20,69, 1810 0,0, 20,69, 0,0, 0,0, 1811 20,69, 0,0, 20,69, 20,69, 1812 20,69, 0,0, 0,0, 0,0, 1813 0,0, 0,0, 20,69, 0,0, 1814 20,69, 22,73, 0,0, 20,69, 1815 0,0, 0,0, 20,69, 0,0, 1816 0,0, 0,0, 0,0, 20,69, 1817 0,0, 0,0, 0,0, 20,69, 1818 0,0, 0,0, 0,0, 20,71, 1819 0,0, 0,0, 20,69, 20,69, 1820 22,74, 0,0, 22,75, 22,73, 1821 22,73, 22,73, 22,73, 22,73, 1822 22,73, 22,73, 22,73, 22,73, 1823 22,73, 22,73, 22,73, 22,73, 1824 22,73, 22,73, 22,73, 22,73, 1825 22,73, 22,73, 22,73, 22,73, 1826 22,73, 22,73, 22,73, 22,73, 1827 22,73, 22,73, 22,73, 0,0, 1828 0,0, 0,0, 22,73, 22,73, 1829 22,73, 22,73, 22,73, 22,73, 1830 22,73, 22,73, 22,73, 22,73, 1831 22,73, 22,73, 22,73, 22,73, 1832 22,73, 22,73, 22,73, 22,73, 1833 22,73, 22,73, 22,73, 22,73, 1834 22,73, 22,73, 22,73, 22,73, 1835 22,73, 22,73, 22,73, 24,77, 1836 0,0, 0,0, 0,0, 0,0, 1837 0,0, 0,0, 0,0, 24,77, 1838 24,78, 41,101, 41,101, 41,101, 1839 41,101, 41,101, 41,101, 41,101, 1840 41,101, 41,101, 41,101, 89,137, 1841 89,137, 89,137, 89,137, 89,137, 1842 89,137, 89,137, 89,137, 89,137, 1843 89,137, 0,0, 0,0, 24,77, 1844 24,77, 0,0, 24,77, 24,77, 1845 0,0, 24,79, 0,0, 0,0, 1846 0,0, 0,0, 0,0, 0,0, 1847 24,77, 24,77, 24,77, 0,0, 1848 24,77, 0,0, 0,0, 0,0, 1849 0,0, 0,0, 24,77, 0,0, 1850 24,77, 24,77, 0,0, 24,77, 1851 0,0, 24,77, 24,77, 24,77, 1852 0,0, 0,0, 0,0, 0,0, 1853 0,0, 24,77, 0,0, 24,77, 1854 0,0, 0,0, 24,77, 0,0, 1855 0,0, 24,77, 0,0, 0,0, 1856 0,0, 0,0, 24,77, 0,0, 1857 0,0, 0,0, 24,77, 0,0, 1858 0,0, 0,0, 24,80, 0,0, 1859 0,0, 24,77, 24,77, 26,82, 1860 0,0, 26,82, 26,82, 26,82, 1861 26,82, 26,82, 26,82, 26,82, 1862 26,82, 26,82, 26,82, 0,0, 1863 0,0, 0,0, 0,0, 0,0, 1864 0,0, 0,0, 26,82, 26,82, 1865 26,82, 26,82, 26,82, 26,82, 1866 26,82, 26,82, 26,82, 26,82, 1867 26,82, 26,82, 26,82, 26,82, 1868 26,82, 26,82, 26,82, 26,82, 1869 26,82, 26,82, 26,82, 26,82, 1870 26,82, 26,82, 26,82, 26,82, 1871 0,0, 0,0, 0,0, 0,0, 1872 26,82, 26,82, 26,82, 26,82, 1873 26,82, 26,82, 26,82, 26,82, 1874 26,82, 26,82, 26,82, 26,82, 1875 26,82, 26,82, 26,82, 26,82, 1876 26,82, 26,82, 26,82, 26,82, 1877 26,82, 26,82, 26,82, 26,82, 1878 26,82, 26,82, 26,82, 26,82, 1879 28,86, 28,86, 28,86, 28,86, 1880 28,86, 28,86, 28,86, 28,86, 1881 28,86, 28,86, 0,0, 0,0, 1882 0,0, 0,0, 0,0, 0,0, 1883 0,0, 28,86, 28,86, 28,86, 1884 28,86, 28,86, 28,86, 0,0, 1885 0,0, 28,87, 0,0, 0,0, 1886 0,0, 0,0, 0,0, 28,88, 1887 0,0, 0,0, 0,0, 0,0, 1888 28,89, 0,0, 0,0, 0,0, 1889 28,90, 122,152, 122,152, 122,152, 1890 122,152, 122,152, 122,152, 122,152, 1891 122,152, 28,86, 28,86, 28,86, 1892 28,86, 28,86, 28,86, 0,0, 1893 0,0, 28,87, 0,0, 0,0, 1894 0,0, 0,0, 0,0, 28,88, 1895 0,0, 0,0, 0,0, 0,0, 1896 28,89, 0,0, 0,0, 0,0, 1897 28,90, 29,86, 29,86, 29,86, 1898 29,86, 29,86, 29,86, 29,86, 1899 29,86, 29,86, 29,86, 0,0, 1900 0,0, 0,0, 0,0, 0,0, 1901 0,0, 0,0, 29,86, 29,86, 1902 29,86, 29,86, 29,86, 29,86, 1903 123,153, 123,153, 123,153, 123,153, 1904 123,153, 123,153, 123,153, 123,153, 1905 123,153, 123,153, 0,0, 30,73, 1906 157,167, 157,167, 157,167, 157,167, 1907 157,167, 157,167, 157,167, 157,167, 1908 157,167, 157,167, 0,0, 0,0, 1909 0,0, 0,0, 29,86, 29,86, 1910 29,86, 29,86, 29,86, 29,86, 1911 30,91, 0,0, 0,0, 0,0, 1912 0,0, 30,73, 30,73, 30,73, 1913 30,73, 30,73, 30,73, 30,73, 1914 30,73, 30,73, 30,73, 30,73, 1915 30,73, 30,73, 30,73, 30,73, 1916 30,73, 30,73, 30,73, 30,73, 1917 30,73, 30,73, 30,73, 30,73, 1918 30,73, 30,73, 30,73, 30,73, 1919 30,73, 0,0, 0,0, 0,0, 1920 30,73, 30,73, 30,73, 30,73, 1921 30,73, 30,73, 30,73, 30,73, 1922 30,73, 30,73, 30,73, 30,73, 1923 30,73, 30,73, 30,73, 30,73, 1924 30,73, 30,73, 30,73, 30,73, 1925 30,73, 30,73, 30,73, 30,73, 1926 30,73, 30,73, 30,73, 30,73, 1927 30,73, 31,92, 0,0, 31,93, 1928 31,93, 31,93, 31,93, 31,93, 1929 31,93, 31,93, 31,93, 31,93, 1930 31,93, 0,0, 0,0, 31,94, 1931 0,0, 0,0, 0,0, 0,0, 1932 31,92, 31,92, 31,92, 31,92, 1933 31,92, 31,92, 31,92, 31,92, 1934 31,92, 31,92, 31,92, 31,92, 1935 31,92, 31,92, 31,92, 31,92, 1936 31,92, 31,92, 31,92, 31,92, 1937 31,92, 31,92, 31,92, 31,92, 1938 31,92, 31,92, 0,0, 0,0, 1939 0,0, 0,0, 31,92, 0,0, 1940 31,92, 31,92, 31,92, 31,92, 1941 31,92, 31,92, 31,92, 31,92, 1942 31,92, 31,92, 31,92, 31,92, 1943 31,92, 31,92, 31,92, 31,92, 1944 31,92, 31,92, 31,92, 31,92, 1945 31,92, 31,92, 31,92, 31,92, 1946 31,92, 31,92, 34,83, 0,0, 1947 0,0, 0,0, 0,0, 0,0, 1948 0,0, 36,98, 36,98, 36,98, 1949 36,98, 36,98, 36,98, 36,98, 1950 36,98, 36,98, 36,98, 0,0, 1951 0,0, 0,0, 0,0, 0,0, 1952 0,0, 34,83, 36,98, 36,98, 1953 36,98, 36,98, 36,98, 36,98, 1954 0,0, 0,0, 0,0, 57,120, 1955 57,120, 57,120, 57,120, 57,120, 1956 57,120, 57,120, 57,120, 57,120, 1957 57,120, 0,0, 0,0, 0,0, 1958 0,0, 0,0, 0,0, 0,0, 1959 57,120, 57,120, 57,120, 57,120, 1960 57,120, 57,120, 36,98, 36,98, 1961 36,98, 36,98, 36,98, 36,98, 1962 0,0, 0,0, 0,0, 0,0, 1963 0,0, 34,85, 34,85, 0,0, 1964 0,0, 0,0, 0,0, 0,0, 1965 0,0, 0,0, 0,0, 0,0, 1966 34,85, 0,0, 43,102, 34,85, 1967 57,120, 57,120, 57,120, 57,120, 1968 57,120, 57,120, 43,0, 43,0, 1969 0,0, 0,0, 0,0, 0,0, 1970 0,0, 0,0, 0,0, 0,0, 1971 0,0, 34,85, 0,0, 0,0, 1972 0,0, 0,0, 0,0, 0,0, 1973 0,0, 0,0, 0,0, 34,85, 1974 34,85, 43,0, 43,0, 43,103, 1975 0,0, 43,0, 43,102, 0,0, 1976 43,104, 0,0, 0,0, 0,0, 1977 0,0, 0,0, 0,0, 43,102, 1978 43,102, 43,102, 0,0, 43,102, 1979 0,0, 0,0, 0,0, 0,0, 1980 0,0, 43,102, 0,0, 43,102, 1981 43,0, 0,0, 43,102, 0,0, 1982 43,102, 43,102, 43,102, 0,0, 1983 0,0, 0,0, 0,0, 45,105, 1984 43,102, 0,0, 43,102, 0,0, 1985 0,0, 43,102, 0,0, 45,105, 1986 43,102, 0,0, 0,0, 0,0, 1987 0,0, 43,102, 0,0, 0,0, 1988 0,0, 43,102, 0,0, 0,0, 1989 0,0, 43,102, 0,0, 0,0, 1990 43,102, 43,102, 0,0, 0,0, 1991 0,0, 0,0, 0,0, 45,105, 1992 45,106, 0,0, 45,105, 45,105, 1993 0,0, 45,105, 0,0, 0,0, 1994 0,0, 0,0, 0,0, 0,0, 1995 45,105, 45,105, 45,105, 0,0, 1996 45,105, 0,0, 0,0, 0,0, 1997 0,0, 43,0, 45,105, 0,0, 1998 45,105, 45,105, 0,0, 45,105, 1999 0,0, 45,105, 45,105, 45,105, 2000 47,104, 0,0, 0,0, 0,0, 2001 0,0, 45,105, 0,0, 45,105, 2002 47,104, 47,0, 45,105, 0,0, 2003 0,0, 45,105, 0,0, 0,0, 2004 0,0, 0,0, 45,105, 0,0, 2005 0,0, 0,0, 45,105, 0,0, 2006 0,0, 0,0, 45,107, 0,0, 2007 0,0, 45,105, 45,105, 0,0, 2008 47,104, 47,104, 0,0, 47,104, 2009 47,104, 0,0, 47,109, 0,0, 2010 0,0, 0,0, 0,0, 0,0, 2011 0,0, 47,104, 47,104, 47,104, 2012 0,0, 47,104, 0,0, 0,0, 2013 0,0, 0,0, 0,0, 47,104, 2014 0,0, 47,104, 47,104, 0,0, 2015 47,104, 0,0, 47,104, 47,104, 2016 47,104, 53,114, 0,0, 0,0, 2017 0,0, 0,0, 47,104, 0,0, 2018 47,104, 53,114, 53,115, 47,104, 2019 0,0, 0,0, 47,104, 0,0, 2020 0,0, 0,0, 0,0, 47,104, 2021 0,0, 0,0, 0,0, 47,104, 2022 0,0, 0,0, 0,0, 47,110, 2023 0,0, 0,0, 47,104, 47,104, 2024 0,0, 53,114, 53,114, 0,0, 2025 53,114, 53,114, 0,0, 53,116, 2026 0,0, 0,0, 0,0, 0,0, 2027 0,0, 0,0, 53,114, 53,114, 2028 53,114, 0,0, 53,114, 0,0, 2029 0,0, 0,0, 0,0, 0,0, 2030 53,114, 0,0, 53,114, 53,114, 2031 0,0, 53,114, 0,0, 53,114, 2032 53,114, 53,114, 0,0, 0,0, 2033 0,0, 0,0, 0,0, 53,114, 2034 0,0, 53,114, 0,0, 0,0, 2035 53,114, 0,0, 0,0, 53,114, 2036 0,0, 0,0, 0,0, 0,0, 2037 53,114, 0,0, 0,0, 0,0, 2038 53,114, 0,0, 0,0, 0,0, 2039 53,117, 0,0, 0,0, 53,114, 2040 53,114, 55,119, 0,0, 55,119, 2041 55,119, 55,119, 55,119, 55,119, 2042 55,119, 55,119, 55,119, 55,119, 2043 55,119, 0,0, 0,0, 0,0, 2044 0,0, 0,0, 0,0, 0,0, 2045 55,119, 55,119, 55,119, 55,119, 2046 55,119, 55,119, 55,119, 55,119, 2047 55,119, 55,119, 55,119, 55,119, 2048 55,119, 55,119, 55,119, 55,119, 2049 55,119, 55,119, 55,119, 55,119, 2050 55,119, 55,119, 55,119, 55,119, 2051 55,119, 55,119, 0,0, 0,0, 2052 0,0, 0,0, 55,119, 55,119, 2053 55,119, 55,119, 55,119, 55,119, 2054 55,119, 55,119, 55,119, 55,119, 2055 55,119, 55,119, 55,119, 55,119, 2056 55,119, 55,119, 55,119, 55,119, 2057 55,119, 55,119, 55,119, 55,119, 2058 55,119, 55,119, 55,119, 55,119, 2059 55,119, 55,119, 56,120, 56,120, 2060 56,120, 56,120, 56,120, 56,120, 2061 56,120, 56,120, 56,120, 56,120, 2062 0,0, 0,0, 0,0, 0,0, 2063 0,0, 0,0, 0,0, 56,120, 2064 56,120, 56,120, 56,120, 56,120, 2065 56,120, 0,0, 0,0, 56,121, 2066 0,0, 0,0, 0,0, 0,0, 2067 0,0, 56,122, 0,0, 0,0, 2068 0,0, 0,0, 56,123, 0,0, 2069 0,0, 0,0, 56,124, 0,0, 2070 0,0, 0,0, 0,0, 0,0, 2071 0,0, 0,0, 0,0, 56,120, 2072 56,120, 56,120, 56,120, 56,120, 2073 56,120, 0,0, 0,0, 56,121, 2074 0,0, 0,0, 0,0, 0,0, 2075 0,0, 56,122, 0,0, 0,0, 2076 0,0, 0,0, 56,123, 0,0, 2077 0,0, 59,125, 56,124, 59,126, 2078 59,126, 59,126, 59,126, 59,126, 2079 59,126, 59,126, 59,126, 59,126, 2080 59,126, 0,0, 0,0, 59,127, 2081 0,0, 0,0, 0,0, 0,0, 2082 59,125, 59,125, 59,125, 59,125, 2083 59,125, 59,125, 59,125, 59,125, 2084 59,125, 59,125, 59,125, 59,125, 2085 59,125, 59,125, 59,125, 59,125, 2086 59,125, 59,125, 59,125, 59,125, 2087 59,125, 59,125, 59,125, 59,125, 2088 59,125, 59,125, 0,0, 0,0, 2089 0,0, 0,0, 59,125, 0,0, 2090 59,125, 59,125, 59,125, 59,125, 2091 59,125, 59,125, 59,125, 59,125, 2092 59,125, 59,125, 59,125, 59,125, 2093 59,125, 59,125, 59,125, 59,125, 2094 59,125, 59,125, 59,125, 59,125, 2095 59,125, 59,125, 59,125, 59,125, 2096 59,125, 59,125, 62,130, 62,130, 2097 62,130, 62,130, 62,130, 62,130, 2098 62,130, 62,130, 62,130, 62,130, 2099 0,0, 0,0, 0,0, 0,0, 2100 0,0, 0,0, 0,0, 62,130, 2101 62,130, 62,130, 62,130, 62,130, 2102 62,130, 69,69, 0,0, 0,0, 2103 0,0, 0,0, 0,0, 0,0, 2104 0,0, 69,69, 0,0, 139,139, 2105 139,139, 139,139, 139,139, 139,139, 2106 139,139, 139,139, 139,139, 139,139, 2107 139,139, 0,0, 0,0, 0,0, 2108 0,0, 0,0, 0,0, 62,130, 2109 62,130, 62,130, 62,130, 62,130, 2110 62,130, 69,69, 69,70, 0,0, 2111 69,69, 69,69, 0,0, 69,69, 2112 0,0, 0,0, 0,0, 0,0, 2113 0,0, 0,0, 69,69, 69,69, 2114 69,69, 0,0, 69,69, 0,0, 2115 0,0, 0,0, 0,0, 0,0, 2116 69,69, 0,0, 69,69, 139,139, 2117 0,0, 69,69, 0,0, 69,69, 2118 69,69, 69,69, 71,69, 0,0, 2119 0,0, 0,0, 0,0, 69,69, 2120 0,0, 69,69, 71,69, 71,0, 2121 69,69, 0,0, 0,0, 69,69, 2122 0,0, 0,0, 0,0, 0,0, 2123 69,69, 0,0, 0,0, 0,0, 2124 69,69, 0,0, 0,0, 0,0, 2125 69,71, 0,0, 0,0, 69,69, 2126 69,69, 0,0, 71,69, 71,69, 2127 0,0, 71,69, 71,69, 0,0, 2128 71,69, 0,0, 0,0, 0,0, 2129 0,0, 0,0, 0,0, 71,69, 2130 71,69, 71,69, 0,0, 71,69, 2131 0,0, 0,0, 0,0, 0,0, 2132 0,0, 71,69, 0,0, 71,69, 2133 0,0, 0,0, 71,69, 0,0, 2134 71,69, 71,69, 71,69, 0,0, 2135 0,0, 0,0, 0,0, 0,0, 2136 71,69, 0,0, 71,69, 0,0, 2137 0,0, 71,69, 0,0, 0,0, 2138 71,69, 0,0, 0,0, 0,0, 2139 0,0, 71,69, 0,0, 0,0, 2140 0,0, 71,69, 0,0, 0,0, 2141 0,0, 71,69, 0,0, 0,0, 2142 71,69, 71,69, 76,131, 76,131, 2143 76,131, 76,131, 76,131, 76,131, 2144 76,131, 76,131, 76,131, 76,131, 2145 0,0, 0,0, 0,0, 0,0, 2146 0,0, 0,0, 0,0, 76,131, 2147 76,131, 76,131, 76,131, 76,131, 2148 76,131, 76,131, 76,131, 76,131, 2149 76,131, 76,131, 76,131, 76,131, 2150 76,131, 76,131, 76,131, 76,131, 2151 76,131, 76,131, 76,131, 76,131, 2152 76,131, 76,131, 76,131, 76,131, 2153 76,131, 0,0, 0,0, 0,0, 2154 0,0, 0,0, 0,0, 76,131, 2155 76,131, 76,131, 76,131, 76,131, 2156 76,131, 76,131, 76,131, 76,131, 2157 76,131, 76,131, 76,131, 76,131, 2158 76,131, 76,131, 76,131, 76,131, 2159 76,131, 76,131, 76,131, 76,131, 2160 76,131, 76,131, 76,131, 76,131, 2161 76,131, 81,133, 81,133, 81,133, 2162 81,133, 81,133, 81,133, 81,133, 2163 81,133, 81,133, 81,133, 0,0, 2164 0,0, 0,0, 0,0, 0,0, 2165 0,0, 0,0, 81,133, 81,133, 2166 81,133, 81,133, 81,133, 81,133, 2167 81,133, 81,133, 81,133, 81,133, 2168 81,133, 81,133, 81,133, 81,133, 2169 81,133, 81,133, 81,133, 81,133, 2170 81,133, 81,133, 81,133, 81,133, 2171 81,133, 81,133, 81,133, 81,133, 2172 0,0, 0,0, 0,0, 0,0, 2173 0,0, 0,0, 81,133, 81,133, 2174 81,133, 81,133, 81,133, 81,133, 2175 81,133, 81,133, 81,133, 81,133, 2176 81,133, 81,133, 81,133, 81,133, 2177 81,133, 81,133, 81,133, 81,133, 2178 81,133, 81,133, 81,133, 81,133, 2179 81,133, 81,133, 81,133, 81,133, 2180 84,84, 0,0, 0,0, 0,0, 2181 0,0, 0,0, 0,0, 0,0, 2182 84,84, 84,134, 166,171, 166,171, 2183 166,171, 166,171, 166,171, 166,171, 2184 166,171, 166,171, 166,171, 166,171, 2185 0,0, 0,0, 0,0, 0,0, 2186 0,0, 0,0, 0,0, 0,0, 2187 0,0, 0,0, 0,0, 0,0, 2188 84,84, 84,84, 0,0, 84,84, 2189 84,84, 0,0, 84,84, 0,0, 2190 0,0, 0,0, 0,0, 0,0, 2191 0,0, 84,84, 84,84, 84,84, 2192 0,0, 84,84, 0,0, 0,0, 2193 0,0, 0,0, 0,0, 84,84, 2194 0,0, 84,84, 84,84, 0,0, 2195 84,84, 0,0, 84,84, 84,84, 2196 84,84, 0,0, 0,0, 0,0, 2197 0,0, 0,0, 84,84, 0,0, 2198 84,84, 0,0, 0,0, 84,84, 2199 0,0, 0,0, 84,84, 0,0, 2200 0,0, 0,0, 0,0, 84,84, 2201 0,0, 0,0, 0,0, 84,84, 2202 0,0, 0,0, 0,0, 84,84, 2203 0,0, 0,0, 84,84, 84,84, 2204 90,138, 90,138, 90,138, 90,138, 2205 90,138, 90,138, 90,138, 90,138, 2206 90,138, 90,138, 0,0, 0,0, 2207 0,0, 0,0, 0,0, 0,0, 2208 0,0, 90,138, 90,138, 90,138, 2209 90,138, 90,138, 90,138, 0,0, 2210 0,0, 0,0, 0,0, 0,0, 2211 0,0, 0,0, 0,0, 0,0, 2212 0,0, 0,0, 0,0, 0,0, 2213 91,139, 0,0, 0,0, 0,0, 2214 0,0, 0,0, 0,0, 0,0, 2215 0,0, 0,0, 0,0, 0,0, 2216 0,0, 90,138, 90,138, 90,138, 2217 90,138, 90,138, 90,138, 91,139, 2218 91,139, 91,139, 91,139, 91,139, 2219 91,139, 91,139, 91,139, 91,139, 2220 91,139, 91,139, 91,139, 91,139, 2221 91,139, 91,139, 91,139, 91,139, 2222 91,139, 91,139, 91,139, 91,139, 2223 91,139, 91,139, 91,139, 91,139, 2224 91,139, 0,0, 0,0, 0,0, 2225 0,0, 91,139, 0,0, 91,139, 2226 91,139, 91,139, 91,139, 91,139, 2227 91,139, 91,139, 91,139, 91,139, 2228 91,139, 91,139, 91,139, 91,139, 2229 91,139, 91,139, 91,139, 91,139, 2230 91,139, 91,139, 91,139, 91,139, 2231 91,139, 91,139, 91,139, 91,139, 2232 91,139, 92,92, 0,0, 92,92, 2233 92,92, 92,92, 92,92, 92,92, 2234 92,92, 92,92, 92,92, 92,92, 2235 92,92, 0,0, 0,0, 0,0, 2236 0,0, 0,0, 0,0, 0,0, 2237 92,92, 92,92, 92,92, 92,92, 2238 92,92, 92,92, 92,92, 92,92, 2239 92,92, 92,92, 92,92, 92,92, 2240 92,92, 92,92, 92,92, 92,92, 2241 92,92, 92,92, 92,92, 92,92, 2242 92,92, 92,92, 92,92, 92,92, 2243 92,92, 92,92, 0,0, 0,0, 2244 0,0, 0,0, 92,92, 92,92, 2245 92,92, 92,92, 92,92, 92,92, 2246 92,92, 92,92, 92,92, 92,92, 2247 92,92, 92,92, 92,92, 92,92, 2248 92,92, 92,92, 92,92, 92,92, 2249 92,92, 92,92, 92,92, 92,92, 2250 92,92, 92,92, 92,92, 92,92, 2251 92,92, 92,92, 96,140, 96,140, 2252 96,140, 96,140, 96,140, 96,140, 2253 96,140, 96,140, 96,140, 96,140, 2254 0,0, 0,0, 0,0, 0,0, 2255 0,0, 0,0, 0,0, 96,140, 2256 96,140, 96,140, 96,140, 96,140, 2257 96,140, 96,140, 96,140, 96,140, 2258 96,140, 96,140, 96,140, 96,140, 2259 96,140, 96,140, 96,140, 96,140, 2260 96,140, 96,140, 96,140, 96,140, 2261 96,140, 96,140, 96,140, 96,140, 2262 96,140, 0,0, 0,0, 0,0, 2263 0,0, 0,0, 0,0, 96,140, 2264 96,140, 96,140, 96,140, 96,140, 2265 96,140, 96,140, 96,140, 96,140, 2266 96,140, 96,140, 96,140, 96,140, 2267 96,140, 96,140, 96,140, 96,140, 2268 96,140, 96,140, 96,140, 96,140, 2269 96,140, 96,140, 96,140, 96,140, 2270 96,140, 98,98, 98,98, 98,98, 2271 98,98, 98,98, 98,98, 98,98, 2272 98,98, 98,98, 98,98, 0,0, 2273 0,0, 0,0, 0,0, 0,0, 2274 0,0, 0,0, 98,98, 98,98, 2275 98,98, 98,98, 98,98, 98,98, 2276 100,100, 0,0, 0,0, 0,0, 2277 0,0, 0,0, 0,0, 0,0, 2278 100,100, 100,141, 0,0, 0,0, 2279 0,0, 0,0, 0,0, 0,0, 2280 0,0, 0,0, 0,0, 0,0, 2281 0,0, 0,0, 0,0, 0,0, 2282 0,0, 0,0, 98,98, 98,98, 2283 98,98, 98,98, 98,98, 98,98, 2284 100,100, 100,100, 0,0, 100,100, 2285 100,100, 0,0, 100,100, 0,0, 2286 0,0, 0,0, 0,0, 0,0, 2287 0,0, 100,100, 100,100, 100,100, 2288 0,0, 100,100, 0,0, 0,0, 2289 0,0, 0,0, 0,0, 100,100, 2290 0,0, 100,100, 100,100, 0,0, 2291 100,100, 0,0, 100,100, 100,100, 2292 100,100, 103,103, 0,0, 0,0, 2293 0,0, 0,0, 100,100, 0,0, 2294 100,100, 103,103, 103,0, 100,100, 2295 0,0, 0,0, 100,100, 0,0, 2296 0,0, 0,0, 0,0, 100,100, 2297 0,0, 0,0, 0,0, 100,100, 2298 0,0, 0,0, 0,0, 100,100, 2299 0,0, 0,0, 100,100, 100,100, 2300 0,0, 103,103, 103,109, 0,0, 2301 103,103, 103,103, 0,0, 103,103, 2302 0,0, 0,0, 0,0, 0,0, 2303 0,0, 0,0, 103,103, 103,103, 2304 103,103, 0,0, 103,103, 0,0, 2305 0,0, 0,0, 0,0, 0,0, 2306 103,103, 0,0, 103,103, 103,103, 2307 0,0, 103,103, 0,0, 103,103, 2308 103,103, 103,103, 105,105, 0,0, 2309 0,0, 0,0, 0,0, 103,103, 2310 0,0, 103,103, 105,105, 0,0, 2311 103,103, 0,0, 0,0, 103,103, 2312 0,0, 0,0, 0,0, 0,0, 2313 103,103, 0,0, 0,0, 0,0, 2314 103,103, 0,0, 0,0, 0,0, 2315 103,142, 0,0, 0,0, 103,103, 2316 103,103, 0,0, 105,105, 105,106, 2317 0,0, 105,105, 105,105, 0,0, 2318 105,105, 0,0, 0,0, 0,0, 2319 0,0, 0,0, 0,0, 105,105, 2320 105,105, 105,105, 0,0, 105,105, 2321 0,0, 0,0, 0,0, 0,0, 2322 0,0, 105,105, 0,0, 105,105, 2323 105,105, 0,0, 105,105, 0,0, 2324 105,105, 105,105, 105,105, 106,109, 2325 0,0, 0,0, 0,0, 0,0, 2326 105,105, 0,0, 105,105, 106,0, 2327 106,0, 105,105, 0,0, 0,0, 2328 105,105, 0,0, 0,0, 0,0, 2329 0,0, 105,105, 0,0, 0,0, 2330 0,0, 105,105, 0,0, 0,0, 2331 0,0, 105,107, 0,0, 0,0, 2332 105,105, 105,105, 106,0, 106,0, 2333 0,0, 0,0, 106,0, 106,109, 2334 0,0, 0,0, 0,0, 0,0, 2335 0,0, 0,0, 0,0, 0,0, 2336 106,109, 106,109, 106,109, 0,0, 2337 106,109, 0,0, 0,0, 0,0, 2338 0,0, 0,0, 106,109, 0,0, 2339 106,109, 106,0, 0,0, 106,109, 2340 0,0, 106,109, 106,109, 106,109, 2341 0,0, 0,0, 0,0, 0,0, 2342 0,0, 106,109, 107,105, 106,109, 2343 0,0, 0,0, 106,109, 0,0, 2344 0,0, 106,109, 107,105, 107,0, 2345 0,0, 0,0, 106,109, 0,0, 2346 0,0, 0,0, 106,109, 0,0, 2347 0,0, 0,0, 106,109, 0,0, 2348 0,0, 106,109, 106,109, 0,0, 2349 0,0, 0,0, 0,0, 0,0, 2350 0,0, 0,0, 107,105, 107,105, 2351 0,0, 107,105, 107,105, 0,0, 2352 107,105, 0,0, 0,0, 0,0, 2353 0,0, 0,0, 0,0, 107,105, 2354 107,105, 107,105, 0,0, 107,105, 2355 0,0, 0,0, 106,0, 0,0, 2356 0,0, 107,105, 0,0, 107,105, 2357 107,105, 0,0, 107,105, 0,0, 2358 107,105, 107,105, 107,105, 109,109, 2359 0,0, 0,0, 0,0, 0,0, 2360 107,105, 0,0, 107,105, 109,0, 2361 109,0, 107,105, 0,0, 0,0, 2362 107,105, 0,0, 0,0, 0,0, 2363 0,0, 107,105, 0,0, 0,0, 2364 0,0, 107,105, 0,0, 0,0, 2365 0,0, 107,105, 0,0, 0,0, 2366 107,105, 107,105, 109,0, 109,0, 2367 0,0, 0,0, 109,0, 109,109, 2368 0,0, 0,0, 0,0, 0,0, 2369 0,0, 0,0, 0,0, 0,0, 2370 109,109, 109,109, 109,109, 0,0, 2371 109,109, 0,0, 0,0, 0,0, 2372 0,0, 0,0, 109,109, 0,0, 2373 109,109, 109,0, 0,0, 109,109, 2374 0,0, 109,109, 109,109, 109,109, 2375 0,0, 0,0, 0,0, 0,0, 2376 0,0, 109,109, 111,111, 109,109, 2377 0,0, 0,0, 109,109, 0,0, 2378 0,0, 109,109, 111,144, 111,145, 2379 0,0, 0,0, 109,109, 0,0, 2380 0,0, 0,0, 109,109, 0,0, 2381 0,0, 0,0, 109,109, 0,0, 2382 0,0, 109,109, 109,109, 0,0, 2383 0,0, 0,0, 0,0, 0,0, 2384 0,0, 0,0, 111,144, 111,146, 2385 0,0, 111,144, 111,111, 0,0, 2386 111,147, 0,0, 0,0, 0,0, 2387 0,0, 0,0, 0,0, 111,111, 2388 111,111, 111,111, 0,0, 111,111, 2389 0,0, 0,0, 109,0, 0,0, 2390 0,0, 111,111, 0,0, 111,111, 2391 111,144, 0,0, 111,111, 0,0, 2392 111,111, 111,111, 111,111, 0,0, 2393 0,0, 0,0, 0,0, 0,0, 2394 111,111, 0,0, 111,111, 0,0, 2395 0,0, 111,111, 0,0, 0,0, 2396 111,111, 0,0, 0,0, 0,0, 2397 0,0, 111,111, 0,0, 0,0, 2398 0,0, 111,111, 0,0, 0,0, 2399 0,0, 111,111, 0,0, 0,0, 2400 111,111, 111,111, 113,148, 113,148, 2401 113,148, 113,148, 113,148, 113,148, 2402 113,148, 113,148, 113,148, 113,148, 2403 0,0, 0,0, 0,0, 0,0, 2404 0,0, 0,0, 0,0, 113,148, 2405 113,148, 113,148, 113,148, 113,148, 2406 113,148, 113,148, 113,148, 113,148, 2407 113,148, 113,148, 113,148, 113,148, 2408 113,148, 113,148, 113,148, 113,148, 2409 113,148, 113,148, 113,148, 113,148, 2410 113,148, 113,148, 113,148, 113,148, 2411 113,148, 0,0, 0,0, 0,0, 2412 0,0, 0,0, 0,0, 113,148, 2413 113,148, 113,148, 113,148, 113,148, 2414 113,148, 113,148, 113,148, 113,148, 2415 113,148, 113,148, 113,148, 113,148, 2416 113,148, 113,148, 113,148, 113,148, 2417 113,148, 113,148, 113,148, 113,148, 2418 113,148, 113,148, 113,148, 113,148, 2419 113,148, 118,150, 118,150, 118,150, 2420 118,150, 118,150, 118,150, 118,150, 2421 118,150, 118,150, 118,150, 0,0, 2422 0,0, 0,0, 0,0, 0,0, 2423 0,0, 0,0, 118,150, 118,150, 2424 118,150, 118,150, 118,150, 118,150, 2425 118,150, 118,150, 118,150, 118,150, 2426 118,150, 118,150, 118,150, 118,150, 2427 118,150, 118,150, 118,150, 118,150, 2428 118,150, 118,150, 118,150, 118,150, 2429 118,150, 118,150, 118,150, 118,150, 2430 0,0, 0,0, 0,0, 0,0, 2431 0,0, 0,0, 118,150, 118,150, 2432 118,150, 118,150, 118,150, 118,150, 2433 118,150, 118,150, 118,150, 118,150, 2434 118,150, 118,150, 118,150, 118,150, 2435 118,150, 118,150, 118,150, 118,150, 2436 118,150, 118,150, 118,150, 118,150, 2437 118,150, 118,150, 118,150, 118,150, 2438 124,154, 124,154, 124,154, 124,154, 2439 124,154, 124,154, 124,154, 124,154, 2440 124,154, 124,154, 0,0, 0,0, 2441 0,0, 0,0, 0,0, 0,0, 2442 0,0, 124,154, 124,154, 124,154, 2443 124,154, 124,154, 124,154, 0,0, 2444 0,0, 0,0, 0,0, 0,0, 2445 0,0, 0,0, 0,0, 0,0, 2446 0,0, 0,0, 0,0, 0,0, 2447 125,125, 0,0, 125,125, 125,125, 2448 125,125, 125,125, 125,125, 125,125, 2449 125,125, 125,125, 125,125, 125,125, 2450 0,0, 124,154, 124,154, 124,154, 2451 124,154, 124,154, 124,154, 125,125, 2452 125,125, 125,125, 125,125, 125,125, 2453 125,125, 125,125, 125,125, 125,125, 2454 125,125, 125,125, 125,125, 125,125, 2455 125,125, 125,125, 125,125, 125,125, 2456 125,125, 125,125, 125,125, 125,125, 2457 125,125, 125,125, 125,125, 125,125, 2458 125,125, 0,0, 0,0, 0,0, 2459 0,0, 125,125, 125,125, 125,125, 2460 125,125, 125,125, 125,125, 125,125, 2461 125,125, 125,125, 125,125, 125,125, 2462 125,125, 125,125, 125,125, 125,125, 2463 125,125, 125,125, 125,125, 125,125, 2464 125,125, 125,125, 125,125, 125,125, 2465 125,125, 125,125, 125,125, 125,125, 2466 125,125, 130,130, 130,130, 130,130, 2467 130,130, 130,130, 130,130, 130,130, 2468 130,130, 130,130, 130,130, 0,0, 2469 0,0, 0,0, 0,0, 0,0, 2470 0,0, 0,0, 130,130, 130,130, 2471 130,130, 130,130, 130,130, 130,130, 2472 143,143, 0,0, 0,0, 0,0, 2473 0,0, 0,0, 0,0, 0,0, 2474 0,0, 143,0, 0,0, 0,0, 2475 0,0, 0,0, 0,0, 0,0, 2476 0,0, 0,0, 0,0, 0,0, 2477 0,0, 0,0, 0,0, 0,0, 2478 0,0, 0,0, 130,130, 130,130, 2479 130,130, 130,130, 130,130, 130,130, 2480 0,0, 143,159, 0,0, 0,0, 2481 143,143, 0,0, 143,143, 0,0, 2482 0,0, 0,0, 0,0, 144,144, 2483 0,0, 143,143, 143,143, 143,143, 2484 0,0, 143,143, 0,0, 0,0, 2485 0,0, 0,0, 0,0, 143,143, 2486 0,0, 143,143, 0,0, 0,0, 2487 143,143, 0,0, 143,143, 143,143, 2488 143,143, 0,0, 0,0, 0,0, 2489 0,0, 0,0, 143,143, 0,0, 2490 143,143, 0,0, 0,0, 143,143, 2491 144,144, 0,0, 143,143, 144,144, 2492 0,0, 144,144, 0,0, 143,143, 2493 0,0, 0,0, 0,0, 143,143, 2494 144,144, 144,144, 144,144, 143,160, 2495 144,144, 0,0, 143,143, 143,143, 2496 0,0, 0,0, 144,144, 0,0, 2497 144,144, 0,0, 0,0, 144,144, 2498 0,0, 144,144, 144,144, 144,144, 2499 146,146, 0,0, 0,0, 0,0, 2500 0,0, 144,144, 0,0, 144,144, 2501 146,146, 0,0, 144,144, 0,0, 2502 0,0, 144,144, 0,0, 0,0, 2503 0,0, 0,0, 144,144, 0,0, 2504 0,0, 0,0, 144,144, 0,0, 2505 0,0, 0,0, 144,144, 0,0, 2506 0,0, 144,144, 144,144, 0,0, 2507 146,146, 146,161, 0,0, 146,146, 2508 146,146, 0,0, 146,146, 0,0, 2509 0,0, 0,0, 0,0, 0,0, 2510 0,0, 146,146, 146,146, 146,146, 2511 0,0, 146,146, 0,0, 0,0, 2512 0,0, 0,0, 0,0, 146,146, 2513 0,0, 146,146, 146,146, 0,0, 2514 146,146, 0,0, 146,146, 146,146, 2515 146,146, 147,147, 0,0, 0,0, 2516 0,0, 0,0, 146,146, 0,0, 2517 146,146, 147,147, 0,0, 146,146, 2518 0,0, 0,0, 146,146, 0,0, 2519 0,0, 0,0, 0,0, 146,146, 2520 0,0, 0,0, 0,0, 146,146, 2521 0,0, 0,0, 0,0, 146,162, 2522 0,0, 0,0, 146,146, 146,146, 2523 0,0, 147,147, 147,147, 0,0, 2524 147,147, 147,147, 0,0, 147,161, 2525 0,0, 0,0, 0,0, 0,0, 2526 0,0, 0,0, 147,147, 147,147, 2527 147,147, 0,0, 147,147, 0,0, 2528 0,0, 0,0, 0,0, 0,0, 2529 147,147, 0,0, 147,147, 147,147, 2530 0,0, 147,147, 0,0, 147,147, 2531 147,147, 147,147, 159,159, 0,0, 2532 0,0, 0,0, 0,0, 147,147, 2533 0,0, 147,147, 159,159, 159,0, 2534 147,147, 0,0, 0,0, 147,147, 2535 0,0, 0,0, 0,0, 0,0, 2536 147,147, 0,0, 0,0, 0,0, 2537 147,147, 0,0, 0,0, 0,0, 2538 147,163, 0,0, 0,0, 147,147, 2539 147,147, 0,0, 159,159, 159,143, 2540 0,0, 159,159, 159,159, 0,0, 2541 159,168, 0,0, 0,0, 0,0, 2542 0,0, 160,143, 0,0, 159,159, 2543 159,159, 159,159, 0,0, 159,159, 2544 0,0, 0,0, 160,0, 0,0, 2545 0,0, 159,159, 0,0, 159,159, 2546 159,159, 0,0, 159,159, 0,0, 2547 159,159, 159,159, 159,159, 0,0, 2548 0,0, 0,0, 0,0, 0,0, 2549 159,159, 0,0, 159,159, 0,0, 2550 0,0, 159,159, 160,159, 0,0, 2551 159,159, 160,143, 0,0, 160,143, 2552 0,0, 159,159, 0,0, 0,0, 2553 161,161, 159,159, 160,143, 160,143, 2554 160,143, 159,169, 160,143, 0,0, 2555 159,159, 159,159, 0,0, 0,0, 2556 160,143, 0,0, 160,143, 0,0, 2557 0,0, 160,143, 0,0, 160,143, 2558 160,143, 160,143, 0,0, 0,0, 2559 0,0, 0,0, 0,0, 160,143, 2560 0,0, 160,143, 0,0, 0,0, 2561 160,143, 0,0, 0,0, 160,143, 2562 161,161, 0,0, 0,0, 0,0, 2563 160,143, 0,0, 0,0, 0,0, 2564 160,143, 161,161, 161,161, 161,161, 2565 160,160, 161,161, 0,0, 160,143, 2566 160,143, 0,0, 0,0, 161,161, 2567 0,0, 161,161, 0,0, 0,0, 2568 161,161, 162,146, 161,161, 161,161, 2569 161,161, 0,0, 0,0, 0,0, 2570 0,0, 162,146, 161,161, 0,0, 2571 161,161, 0,0, 0,0, 161,161, 2572 0,0, 0,0, 161,161, 0,0, 2573 0,0, 0,0, 0,0, 161,161, 2574 0,0, 0,0, 0,0, 161,161, 2575 0,0, 0,0, 0,0, 161,161, 2576 0,0, 162,146, 161,161, 161,161, 2577 162,146, 162,146, 0,0, 162,146, 2578 0,0, 0,0, 0,0, 0,0, 2579 0,0, 0,0, 162,146, 162,146, 2580 162,146, 0,0, 162,146, 0,0, 2581 0,0, 0,0, 0,0, 0,0, 2582 162,146, 0,0, 162,146, 162,146, 2583 0,0, 162,146, 0,0, 162,146, 2584 162,146, 162,146, 163,147, 0,0, 2585 0,0, 0,0, 0,0, 162,146, 2586 0,0, 162,146, 163,147, 0,0, 2587 162,146, 0,0, 0,0, 162,146, 2588 0,0, 0,0, 0,0, 0,0, 2589 162,146, 0,0, 0,0, 0,0, 2590 162,146, 0,0, 0,0, 0,0, 2591 162,146, 0,0, 0,0, 162,146, 2592 162,146, 0,0, 163,147, 163,147, 2593 0,0, 163,147, 163,147, 0,0, 2594 163,170, 0,0, 0,0, 0,0, 2595 0,0, 168,168, 0,0, 163,147, 2596 163,147, 163,147, 0,0, 163,147, 2597 0,0, 0,0, 168,0, 0,0, 2598 0,0, 163,147, 0,0, 163,147, 2599 163,147, 0,0, 163,147, 0,0, 2600 163,147, 163,147, 163,147, 0,0, 2601 0,0, 0,0, 0,0, 0,0, 2602 163,147, 0,0, 163,147, 0,0, 2603 0,0, 163,147, 168,168, 0,0, 2604 163,147, 168,168, 0,0, 168,159, 2605 0,0, 163,147, 0,0, 0,0, 2606 0,0, 163,147, 168,168, 168,168, 2607 168,168, 163,163, 168,168, 0,0, 2608 163,147, 163,147, 0,0, 0,0, 2609 168,168, 0,0, 168,168, 0,0, 2610 0,0, 168,168, 0,0, 168,168, 2611 168,168, 168,168, 170,170, 0,0, 2612 0,0, 0,0, 0,0, 168,168, 2613 0,0, 168,168, 170,147, 0,0, 2614 168,168, 0,0, 0,0, 168,168, 2615 0,0, 0,0, 0,0, 0,0, 2616 168,168, 0,0, 0,0, 0,0, 2617 168,168, 0,0, 0,0, 0,0, 2618 168,172, 0,0, 0,0, 168,168, 2619 168,168, 0,0, 170,147, 170,175, 2620 0,0, 170,147, 170,170, 0,0, 2621 170,170, 0,0, 0,0, 0,0, 2622 0,0, 172,168, 0,0, 170,170, 2623 170,170, 170,170, 0,0, 170,170, 2624 0,0, 0,0, 172,0, 0,0, 2625 0,0, 170,170, 0,0, 170,170, 2626 170,147, 0,0, 170,170, 0,0, 2627 170,170, 170,170, 170,170, 0,0, 2628 0,0, 0,0, 0,0, 0,0, 2629 170,170, 0,0, 170,170, 0,0, 2630 0,0, 170,170, 172,103, 0,0, 2631 170,170, 172,168, 0,0, 172,159, 2632 0,0, 170,170, 0,0, 0,0, 2633 0,0, 170,170, 172,168, 172,168, 2634 172,168, 170,176, 172,168, 0,0, 2635 170,170, 170,170, 0,0, 0,0, 2636 172,168, 0,0, 172,168, 0,0, 2637 0,0, 172,168, 0,0, 172,168, 2638 172,168, 172,168, 173,173, 0,0, 2639 0,0, 0,0, 0,0, 172,168, 2640 0,0, 172,168, 0,0, 173,0, 2641 172,168, 0,0, 0,0, 172,168, 2642 0,0, 0,0, 0,0, 0,0, 2643 172,168, 0,0, 0,0, 0,0, 2644 172,168, 0,0, 0,0, 0,0, 2645 172,168, 0,0, 0,0, 172,168, 2646 172,168, 0,0, 0,0, 173,173, 2647 0,0, 0,0, 173,173, 0,0, 2648 173,173, 0,0, 0,0, 0,0, 2649 0,0, 0,0, 0,0, 173,173, 2650 173,173, 173,173, 0,0, 173,173, 2651 0,0, 0,0, 0,0, 0,0, 2652 0,0, 173,173, 0,0, 173,173, 2653 0,0, 0,0, 173,173, 0,0, 2654 173,173, 173,173, 173,173, 175,175, 2655 0,0, 0,0, 0,0, 0,0, 2656 173,173, 0,0, 173,173, 175,175, 2657 0,0, 173,173, 0,0, 0,0, 2658 173,173, 0,0, 0,0, 0,0, 2659 0,0, 173,173, 0,0, 0,0, 2660 0,0, 173,173, 0,0, 0,0, 2661 0,0, 173,177, 0,0, 0,0, 2662 173,173, 173,173, 0,0, 175,175, 2663 175,170, 0,0, 175,175, 175,175, 2664 0,0, 175,178, 0,0, 0,0, 2665 0,0, 0,0, 0,0, 0,0, 2666 175,175, 175,175, 175,175, 0,0, 2667 175,175, 0,0, 0,0, 0,0, 2668 0,0, 0,0, 175,175, 0,0, 2669 175,175, 175,175, 0,0, 175,175, 2670 0,0, 175,175, 175,175, 175,175, 2671 176,170, 0,0, 0,0, 0,0, 2672 0,0, 175,175, 0,0, 175,175, 2673 176,147, 0,0, 175,175, 0,0, 2674 0,0, 175,175, 0,0, 0,0, 2675 0,0, 0,0, 175,175, 0,0, 2676 0,0, 0,0, 175,175, 0,0, 2677 0,0, 0,0, 175,179, 0,0, 2678 0,0, 175,175, 175,175, 0,0, 2679 176,147, 176,175, 0,0, 176,147, 2680 176,170, 0,0, 176,170, 0,0, 2681 0,0, 0,0, 0,0, 177,173, 2682 0,0, 176,170, 176,170, 176,170, 2683 0,0, 176,170, 0,0, 0,0, 2684 177,0, 0,0, 0,0, 176,170, 2685 0,0, 176,170, 176,147, 0,0, 2686 176,170, 0,0, 176,170, 176,170, 2687 176,170, 0,0, 0,0, 0,0, 2688 0,0, 0,0, 176,170, 0,0, 2689 176,170, 0,0, 0,0, 176,170, 2690 177,159, 0,0, 176,170, 177,173, 2691 0,0, 177,173, 0,0, 176,170, 2692 0,0, 0,0, 0,0, 176,170, 2693 177,173, 177,173, 177,173, 176,176, 2694 177,173, 0,0, 176,170, 176,170, 2695 0,0, 0,0, 177,173, 0,0, 2696 177,173, 0,0, 0,0, 177,173, 2697 0,0, 177,173, 177,173, 177,173, 2698 178,178, 0,0, 0,0, 0,0, 2699 0,0, 177,173, 0,0, 177,173, 2700 178,146, 0,0, 177,173, 0,0, 2701 0,0, 177,173, 0,0, 0,0, 2702 0,0, 0,0, 177,173, 0,0, 2703 0,0, 0,0, 177,173, 0,0, 2704 0,0, 0,0, 177,180, 0,0, 2705 0,0, 177,173, 177,173, 0,0, 2706 178,146, 178,178, 0,0, 178,146, 2707 178,178, 0,0, 178,175, 0,0, 2708 0,0, 0,0, 0,0, 0,0, 2709 0,0, 178,178, 178,178, 178,178, 2710 0,0, 178,178, 0,0, 0,0, 2711 0,0, 0,0, 0,0, 178,178, 2712 0,0, 178,178, 178,146, 0,0, 2713 178,178, 0,0, 178,178, 178,178, 2714 178,178, 179,175, 0,0, 0,0, 2715 0,0, 0,0, 178,178, 0,0, 2716 178,178, 179,175, 0,0, 178,178, 2717 0,0, 0,0, 178,178, 0,0, 2718 0,0, 0,0, 0,0, 178,178, 2719 0,0, 0,0, 0,0, 178,178, 2720 0,0, 0,0, 0,0, 178,181, 2721 0,0, 0,0, 178,178, 178,178, 2722 0,0, 179,175, 179,175, 0,0, 2723 179,175, 179,175, 0,0, 179,182, 2724 0,0, 0,0, 0,0, 0,0, 2725 180,173, 0,0, 179,175, 179,175, 2726 179,175, 0,0, 179,175, 0,0, 2727 0,0, 180,0, 0,0, 0,0, 2728 179,175, 0,0, 179,175, 179,175, 2729 0,0, 179,175, 0,0, 179,175, 2730 179,175, 179,175, 0,0, 0,0, 2731 0,0, 0,0, 0,0, 179,175, 2732 0,0, 179,175, 0,0, 0,0, 2733 179,175, 180,173, 0,0, 179,175, 2734 180,173, 0,0, 180,173, 0,0, 2735 179,175, 0,0, 0,0, 0,0, 2736 179,175, 180,173, 180,173, 180,173, 2737 179,183, 180,173, 0,0, 179,175, 2738 179,175, 0,0, 0,0, 180,173, 2739 0,0, 180,173, 0,0, 0,0, 2740 180,173, 181,178, 180,173, 180,173, 2741 180,173, 0,0, 0,0, 0,0, 2742 0,0, 181,146, 180,173, 0,0, 2743 180,173, 0,0, 0,0, 180,173, 2744 0,0, 0,0, 180,173, 0,0, 2745 0,0, 0,0, 0,0, 180,173, 2746 0,0, 0,0, 0,0, 180,173, 2747 0,0, 0,0, 0,0, 180,177, 2748 0,0, 181,146, 180,173, 180,173, 2749 181,146, 181,178, 0,0, 181,175, 2750 0,0, 0,0, 0,0, 0,0, 2751 0,0, 0,0, 181,178, 181,178, 2752 181,178, 0,0, 181,178, 0,0, 2753 0,0, 0,0, 0,0, 0,0, 2754 181,178, 0,0, 181,178, 181,146, 2755 0,0, 181,178, 0,0, 181,178, 2756 181,178, 181,178, 182,182, 0,0, 2757 0,0, 0,0, 0,0, 181,178, 2758 0,0, 181,178, 182,175, 0,0, 2759 181,178, 0,0, 0,0, 181,178, 2760 0,0, 0,0, 0,0, 0,0, 2761 181,178, 0,0, 0,0, 0,0, 2762 181,178, 0,0, 0,0, 0,0, 2763 181,178, 0,0, 0,0, 181,178, 2764 181,178, 0,0, 182,175, 182,182, 2765 0,0, 182,175, 182,182, 0,0, 2766 182,182, 0,0, 0,0, 0,0, 2767 0,0, 0,0, 0,0, 182,182, 2768 182,182, 182,182, 0,0, 182,182, 2769 0,0, 0,0, 0,0, 0,0, 2770 0,0, 182,182, 0,0, 182,182, 2771 182,175, 0,0, 182,182, 0,0, 2772 182,182, 182,182, 182,182, 183,175, 2773 0,0, 0,0, 0,0, 0,0, 2774 182,182, 0,0, 182,182, 183,175, 2775 0,0, 182,182, 0,0, 0,0, 2776 182,182, 0,0, 0,0, 0,0, 2777 0,0, 182,182, 0,0, 0,0, 2778 0,0, 182,182, 0,0, 0,0, 2779 0,0, 182,184, 0,0, 0,0, 2780 182,182, 182,182, 0,0, 183,175, 2781 183,170, 0,0, 183,175, 183,175, 2782 0,0, 183,182, 0,0, 0,0, 2783 0,0, 0,0, 0,0, 0,0, 2784 183,175, 183,175, 183,175, 0,0, 2785 183,175, 0,0, 0,0, 0,0, 2786 0,0, 0,0, 183,175, 0,0, 2787 183,175, 183,175, 0,0, 183,175, 2788 0,0, 183,175, 183,175, 183,175, 2789 184,182, 0,0, 0,0, 0,0, 2790 0,0, 183,175, 0,0, 183,175, 2791 184,175, 0,0, 183,175, 0,0, 2792 0,0, 183,175, 0,0, 0,0, 2793 0,0, 0,0, 183,175, 0,0, 2794 0,0, 0,0, 183,175, 0,0, 2795 0,0, 0,0, 183,179, 0,0, 2796 0,0, 183,175, 183,175, 0,0, 2797 184,175, 184,175, 0,0, 184,175, 2798 184,182, 0,0, 184,182, 0,0, 2799 0,0, 0,0, 0,0, 0,0, 2800 0,0, 184,182, 184,182, 184,182, 2801 0,0, 184,182, 0,0, 0,0, 2802 0,0, 0,0, 0,0, 184,182, 2803 0,0, 184,182, 184,175, 0,0, 2804 184,182, 0,0, 184,182, 184,182, 2805 184,182, 185,182, 0,0, 0,0, 2806 0,0, 0,0, 184,182, 0,0, 2807 184,182, 185,175, 0,0, 184,182, 2808 0,0, 0,0, 184,182, 0,0, 2809 0,0, 0,0, 0,0, 184,182, 2810 0,0, 0,0, 0,0, 184,182, 2811 0,0, 0,0, 0,0, 184,185, 2812 0,0, 0,0, 184,182, 184,182, 2813 0,0, 185,175, 185,182, 0,0, 2814 185,175, 185,182, 0,0, 185,182, 2815 0,0, 0,0, 0,0, 0,0, 2816 0,0, 0,0, 185,182, 185,182, 2817 185,182, 0,0, 185,182, 0,0, 2818 0,0, 0,0, 0,0, 0,0, 2819 185,182, 0,0, 185,182, 185,175, 2820 0,0, 185,182, 0,0, 185,182, 2821 185,182, 185,182, 0,0, 0,0, 2822 0,0, 0,0, 0,0, 185,182, 2823 0,0, 185,182, 0,0, 0,0, 2824 185,182, 0,0, 0,0, 185,182, 2825 0,0, 0,0, 0,0, 0,0, 2826 185,182, 0,0, 0,0, 0,0, 2827 185,182, 0,0, 0,0, 0,0, 2828 185,184, 0,0, 0,0, 185,182, 2829 185,182, 0,0, 0,0, 0,0, 2830 0,0}; 2831 struct yysvf yysvec[] = { 2832 0, 0, 0, 2833 yycrank+-1, 0, yyvstop+1, 2834 yycrank+0, yysvec+1, yyvstop+3, 2835 yycrank+-66, yysvec+1, yyvstop+5, 2836 yycrank+-131, yysvec+1, yyvstop+7, 2837 yycrank+-196, 0, yyvstop+9, 2838 yycrank+-49, yysvec+5, yyvstop+11, 2839 yycrank+-250, yysvec+1, yyvstop+13, 2840 yycrank+-304, yysvec+1, yyvstop+15, 2841 yycrank+-369, yysvec+1, yyvstop+17, 2842 yycrank+-434, yysvec+1, yyvstop+19, 2843 yycrank+-475, yysvec+1, yyvstop+21, 2844 yycrank+-542, yysvec+1, yyvstop+23, 2845 yycrank+0, 0, yyvstop+25, 2846 yycrank+0, 0, yyvstop+27, 2847 yycrank+0, 0, yyvstop+30, 2848 yycrank+-613, 0, yyvstop+32, 2849 yycrank+0, 0, yyvstop+35, 2850 yycrank+-678, 0, yyvstop+38, 2851 yycrank+-9, yysvec+18, yyvstop+41, 2852 yycrank+-743, yysvec+16, yyvstop+45, 2853 yycrank+8, 0, yyvstop+49, 2854 yycrank+780, 0, yyvstop+52, 2855 yycrank+7, 0, yyvstop+54, 2856 yycrank+-902, 0, yyvstop+56, 2857 yycrank+8, 0, yyvstop+59, 2858 yycrank+953, 0, yyvstop+61, 2859 yycrank+577, 0, yyvstop+64, 2860 yycrank+1028, 0, yyvstop+67, 2861 yycrank+1101, 0, yyvstop+70, 2862 yycrank+1146, 0, yyvstop+73, 2863 yycrank+1223, 0, yyvstop+75, 2864 yycrank+9, 0, yyvstop+77, 2865 yycrank+9, 0, yyvstop+80, 2866 yycrank+1337, 0, yyvstop+83, 2867 yycrank+0, 0, yyvstop+86, 2868 yycrank+1305, yysvec+26, yyvstop+89, 2869 yycrank+0, 0, yyvstop+93, 2870 yycrank+0, 0, yyvstop+96, 2871 yycrank+10, 0, yyvstop+99, 2872 yycrank+11, 0, yyvstop+101, 2873 yycrank+865, 0, yyvstop+104, 2874 yycrank+0, 0, yyvstop+108, 2875 yycrank+-1425, 0, yyvstop+111, 2876 yycrank+0, 0, yyvstop+114, 2877 yycrank+-1494, yysvec+16, yyvstop+117, 2878 yycrank+13, 0, yyvstop+120, 2879 yycrank+-1559, 0, yyvstop+122, 2880 yycrank+-74, yysvec+43, yyvstop+124, 2881 yycrank+0, 0, yyvstop+127, 2882 yycrank+0, 0, yyvstop+130, 2883 yycrank+12, 0, yyvstop+133, 2884 yycrank+14, 0, yyvstop+136, 2885 yycrank+-1624, 0, yyvstop+138, 2886 yycrank+16, 0, yyvstop+141, 2887 yycrank+1675, 0, yyvstop+143, 2888 yycrank+1750, 0, yyvstop+146, 2889 yycrank+1331, 0, yyvstop+149, 2890 yycrank+0, 0, yyvstop+152, 2891 yycrank+1823, 0, yyvstop+156, 2892 yycrank+15, 0, yyvstop+158, 2893 yycrank+16, 0, yyvstop+160, 2894 yycrank+1898, yysvec+55, yyvstop+162, 2895 yycrank+0, 0, yyvstop+166, 2896 yycrank+0, yysvec+16, yyvstop+169, 2897 yycrank+0, 0, yyvstop+171, 2898 yycrank+0, 0, yyvstop+173, 2899 yycrank+-16, yysvec+16, 0, 2900 yycrank+-20, yysvec+18, yyvstop+175, 2901 yycrank+-1968, yysvec+16, yyvstop+177, 2902 yycrank+-22, yysvec+18, yyvstop+180, 2903 yycrank+-2033, yysvec+16, yyvstop+183, 2904 yycrank+0, 0, yyvstop+185, 2905 yycrank+0, 0, yyvstop+187, 2906 yycrank+22, 0, yyvstop+189, 2907 yycrank+0, 0, yyvstop+191, 2908 yycrank+2082, 0, 0, 2909 yycrank+0, yysvec+24, yyvstop+193, 2910 yycrank+0, 0, yyvstop+195, 2911 yycrank+0, 0, yyvstop+197, 2912 yycrank+-7, yysvec+24, yyvstop+199, 2913 yycrank+2157, 0, 0, 2914 yycrank+0, yysvec+26, yyvstop+201, 2915 yycrank+0, yysvec+34, 0, 2916 yycrank+-2279, 0, 0, 2917 yycrank+0, 0, yyvstop+203, 2918 yycrank+0, yysvec+29, yyvstop+205, 2919 yycrank+38, 0, 0, 2920 yycrank+590, 0, 0, 2921 yycrank+875, 0, 0, 2922 yycrank+2328, 0, 0, 2923 yycrank+2366, 0, 0, 2924 yycrank+2443, 0, yyvstop+207, 2925 yycrank+0, 0, yyvstop+209, 2926 yycrank+0, 0, yyvstop+211, 2927 yycrank+0, 0, yyvstop+213, 2928 yycrank+2518, 0, 0, 2929 yycrank+0, 0, yyvstop+215, 2930 yycrank+2593, yysvec+26, yyvstop+217, 2931 yycrank+0, 0, yyvstop+220, 2932 yycrank+-2663, 0, 0, 2933 yycrank+0, yysvec+41, yyvstop+222, 2934 yycrank+-116, yysvec+43, yyvstop+224, 2935 yycrank+-2728, 0, 0, 2936 yycrank+-7, yysvec+47, 0, 2937 yycrank+-2793, yysvec+16, yyvstop+226, 2938 yycrank+-2858, yysvec+43, yyvstop+228, 2939 yycrank+-2929, 0, 0, 2940 yycrank+0, 0, yyvstop+231, 2941 yycrank+-2994, yysvec+43, yyvstop+233, 2942 yycrank+-13, yysvec+47, 0, 2943 yycrank+-3065, 0, yyvstop+235, 2944 yycrank+0, 0, yyvstop+237, 2945 yycrank+3114, 0, 0, 2946 yycrank+0, yysvec+53, yyvstop+239, 2947 yycrank+0, 0, yyvstop+241, 2948 yycrank+0, 0, yyvstop+243, 2949 yycrank+-14, yysvec+53, yyvstop+245, 2950 yycrank+3189, 0, 0, 2951 yycrank+0, yysvec+55, yyvstop+247, 2952 yycrank+0, yysvec+57, yyvstop+249, 2953 yycrank+46, 0, 0, 2954 yycrank+1069, 0, 0, 2955 yycrank+1124, 0, 0, 2956 yycrank+3264, 0, 0, 2957 yycrank+3302, 0, yyvstop+251, 2958 yycrank+0, 0, yyvstop+253, 2959 yycrank+0, 0, yyvstop+255, 2960 yycrank+0, 0, yyvstop+257, 2961 yycrank+0, 0, yyvstop+259, 2962 yycrank+3377, yysvec+55, yyvstop+261, 2963 yycrank+41, 0, 0, 2964 yycrank+0, yysvec+24, yyvstop+264, 2965 yycrank+43, 0, 0, 2966 yycrank+0, 0, yyvstop+267, 2967 yycrank+0, yysvec+87, yyvstop+269, 2968 yycrank+0, yysvec+88, yyvstop+271, 2969 yycrank+46, yysvec+89, yyvstop+273, 2970 yycrank+0, yysvec+90, yyvstop+275, 2971 yycrank+1931, yysvec+91, yyvstop+277, 2972 yycrank+68, 0, 0, 2973 yycrank+0, 0, yyvstop+279, 2974 yycrank+-107, yysvec+103, 0, 2975 yycrank+-3447, yysvec+47, yyvstop+281, 2976 yycrank+-3490, yysvec+111, 0, 2977 yycrank+0, 0, yyvstop+283, 2978 yycrank+-3555, yysvec+111, 0, 2979 yycrank+-3620, yysvec+111, 0, 2980 yycrank+71, 0, 0, 2981 yycrank+0, yysvec+53, yyvstop+285, 2982 yycrank+72, 0, 0, 2983 yycrank+0, yysvec+121, yyvstop+288, 2984 yycrank+0, yysvec+122, yyvstop+290, 2985 yycrank+74, yysvec+123, yyvstop+292, 2986 yycrank+0, yysvec+124, yyvstop+294, 2987 yycrank+0, 0, yyvstop+296, 2988 yycrank+0, 0, yyvstop+298, 2989 yycrank+1136, 0, 0, 2990 yycrank+0, 0, yyvstop+300, 2991 yycrank+-3685, 0, 0, 2992 yycrank+-3728, yysvec+47, yyvstop+302, 2993 yycrank+-3771, yysvec+111, yyvstop+304, 2994 yycrank+-3832, yysvec+111, 0, 2995 yycrank+-3897, yysvec+111, 0, 2996 yycrank+0, 0, yyvstop+306, 2997 yycrank+0, 0, yyvstop+308, 2998 yycrank+2242, 0, 0, 2999 yycrank+0, yysvec+157, yyvstop+310, 3000 yycrank+-3940, yysvec+103, yyvstop+312, 3001 yycrank+-149, yysvec+159, 0, 3002 yycrank+-4005, yysvec+111, yyvstop+314, 3003 yycrank+0, yysvec+166, yyvstop+316, 3004 yycrank+-4048, yysvec+103, yyvstop+318, 3005 yycrank+-4113, yysvec+159, yyvstop+320, 3006 yycrank+-118, yysvec+159, 0, 3007 yycrank+-4178, yysvec+111, 0, 3008 yycrank+-4243, yysvec+111, yyvstop+322, 3009 yycrank+-4286, yysvec+159, yyvstop+324, 3010 yycrank+-4351, yysvec+111, yyvstop+326, 3011 yycrank+-4416, yysvec+111, 0, 3012 yycrank+-4459, yysvec+159, yyvstop+328, 3013 yycrank+-4520, yysvec+111, yyvstop+330, 3014 yycrank+-4585, yysvec+111, yyvstop+332, 3015 yycrank+-4650, yysvec+111, 0, 3016 yycrank+-4715, yysvec+111, yyvstop+334, 3017 yycrank+-4780, yysvec+111, yyvstop+336, 3018 0, 0, 0}; 3019 struct yywork *yytop = yycrank+4876; 3020 struct yysvf *yybgin = yysvec+1; 3021 char yymatch[] = { 3022 0, 1, 1, 1, 1, 1, 1, 1, 3023 1, 9, 10, 1, 1, 1, 1, 1, 3024 1, 1, 1, 1, 1, 1, 1, 1, 3025 1, 1, 1, 1, 1, 1, 1, 1, 3026 9, 33, 34, 1, 36, 37, 1, 39, 3027 1, 1, 1, 1, 1, 1, 46, 47, 3028 48, 48, 50, 50, 50, 50, 50, 50, 3029 56, 56, 58, 59, 1, 61, 1, 63, 3030 64, 65, 65, 65, 65, 65, 65, 71, 3031 71, 73, 71, 71, 76, 76, 71, 79, 3032 71, 71, 71, 71, 84, 71, 71, 76, 3033 88, 71, 76, 1, 92, 1, 37, 95, 3034 96, 65, 65, 65, 65, 65, 65, 71, 3035 71, 73, 71, 71, 76, 71, 71, 79, 3036 71, 71, 71, 71, 84, 71, 76, 76, 3037 88, 71, 71, 1, 33, 1, 1, 1, 3038 1, 1, 1, 1, 1, 1, 1, 1, 3039 1, 1, 1, 1, 1, 1, 1, 1, 3040 1, 1, 1, 1, 1, 1, 1, 1, 3041 1, 1, 1, 1, 1, 1, 1, 1, 3042 1, 1, 1, 1, 1, 1, 1, 1, 3043 1, 1, 1, 1, 1, 1, 1, 1, 3044 1, 1, 1, 1, 1, 1, 1, 1, 3045 1, 1, 1, 1, 1, 1, 1, 1, 3046 1, 1, 1, 1, 1, 1, 1, 1, 3047 1, 1, 1, 1, 1, 1, 1, 1, 3048 1, 1, 1, 1, 1, 1, 1, 1, 3049 1, 1, 1, 1, 1, 1, 1, 1, 3050 1, 1, 1, 1, 1, 1, 1, 1, 3051 1, 1, 1, 1, 1, 1, 1, 1, 3052 1, 1, 1, 1, 1, 1, 1, 1, 3053 1, 1, 1, 1, 1, 1, 1, 1, 3054 0}; 3055 char yyextra[] = { 3056 0,0,0,0,0,0,0,0, 3057 0,0,0,0,0,0,0,0, 3058 0,0,0,0,0,1,1,0, 3059 0,1,0,0,0,0,0,0, 3060 0,0,0,0,0,0,0,0, 3061 0,0,0,0,0,0,0,0, 3062 0,0,0,0,0,0,0,0, 3063 0,0,0,0,0,0,0,0, 3064 0}; 3065 /* 3066 * CDDL HEADER START 3067 * 3068 * The contents of this file are subject to the terms of the 3069 * Common Development and Distribution License, Version 1.0 only 3070 * (the "License"). You may not use this file except in compliance 3071 * with the License. 3072 * 3073 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 3074 * or http://www.opensolaris.org/os/licensing. 3075 * See the License for the specific language governing permissions 3076 * and limitations under the License. 3077 * 3078 * When distributing Covered Code, include this CDDL HEADER in each 3079 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 3080 * If applicable, add the following below this CDDL HEADER, with the 3081 * fields enclosed by brackets "[]" replaced with your own identifying 3082 * information: Portions Copyright [yyyy] [name of copyright owner] 3083 * 3084 * CDDL HEADER END 3085 */ 3086 3087 /* Copyright (c) 1989 AT&T */ 3088 /* All Rights Reserved */ 3089 3090 #pragma ident "%Z%%M% %I% %E% SMI" 3091 3092 int yylineno =1; 3093 # define YYU(x) x 3094 # define NLSTATE yyprevious=YYNEWLINE 3095 struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; 3096 char yysbuf[YYLMAX]; 3097 char *yysptr = yysbuf; 3098 int *yyfnd; 3099 extern struct yysvf *yyestate; 3100 int yyprevious = YYNEWLINE; 3101 #if defined(__cplusplus) || defined(__STDC__) 3102 int yylook(void) 3103 #else 3104 yylook() 3105 #endif 3106 { 3107 register struct yysvf *yystate, **lsp; 3108 register struct yywork *yyt; 3109 struct yysvf *yyz; 3110 int yych, yyfirst; 3111 struct yywork *yyr; 3112 # ifdef LEXDEBUG 3113 int debug; 3114 # endif 3115 char *yylastch; 3116 /* start off machines */ 3117 # ifdef LEXDEBUG 3118 debug = 0; 3119 # endif 3120 yyfirst=1; 3121 if (!yymorfg) 3122 yylastch = yytext; 3123 else { 3124 yymorfg=0; 3125 yylastch = yytext+yyleng; 3126 } 3127 for(;;){ 3128 lsp = yylstate; 3129 yyestate = yystate = yybgin; 3130 if (yyprevious==YYNEWLINE) yystate++; 3131 for (;;){ 3132 # ifdef LEXDEBUG 3133 if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); 3134 # endif 3135 yyt = yystate->yystoff; 3136 if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ 3137 yyz = yystate->yyother; 3138 if(yyz == 0)break; 3139 if(yyz->yystoff == yycrank)break; 3140 } 3141 #ifndef __cplusplus 3142 *yylastch++ = yych = input(); 3143 #else 3144 *yylastch++ = yych = lex_input(); 3145 #endif 3146 #ifdef YYISARRAY 3147 if(yylastch > &yytext[YYLMAX]) { 3148 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 3149 exit(1); 3150 } 3151 #else 3152 if (yylastch >= &yytext[ yytextsz ]) { 3153 int x = yylastch - yytext; 3154 3155 yytextsz += YYTEXTSZINC; 3156 if (yytext == yy_tbuf) { 3157 yytext = (char *) malloc(yytextsz); 3158 memcpy(yytext, yy_tbuf, sizeof (yy_tbuf)); 3159 } 3160 else 3161 yytext = (char *) realloc(yytext, yytextsz); 3162 if (!yytext) { 3163 fprintf(yyout, 3164 "Cannot realloc yytext\n"); 3165 exit(1); 3166 } 3167 yylastch = yytext + x; 3168 } 3169 #endif 3170 yyfirst=0; 3171 tryagain: 3172 # ifdef LEXDEBUG 3173 if(debug){ 3174 fprintf(yyout,"char "); 3175 allprint(yych); 3176 putchar('\n'); 3177 } 3178 # endif 3179 yyr = yyt; 3180 if ( (uintptr_t)yyt > (uintptr_t)yycrank){ 3181 yyt = yyr + yych; 3182 if (yyt <= yytop && yyt->verify+yysvec == yystate){ 3183 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 3184 {unput(*--yylastch);break;} 3185 *lsp++ = yystate = yyt->advance+yysvec; 3186 if(lsp > &yylstate[YYLMAX]) { 3187 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 3188 exit(1); 3189 } 3190 goto contin; 3191 } 3192 } 3193 # ifdef YYOPTIM 3194 else if((uintptr_t)yyt < (uintptr_t)yycrank) { /* r < yycrank */ 3195 yyt = yyr = yycrank+(yycrank-yyt); 3196 # ifdef LEXDEBUG 3197 if(debug)fprintf(yyout,"compressed state\n"); 3198 # endif 3199 yyt = yyt + yych; 3200 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 3201 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 3202 {unput(*--yylastch);break;} 3203 *lsp++ = yystate = yyt->advance+yysvec; 3204 if(lsp > &yylstate[YYLMAX]) { 3205 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 3206 exit(1); 3207 } 3208 goto contin; 3209 } 3210 yyt = yyr + YYU(yymatch[yych]); 3211 # ifdef LEXDEBUG 3212 if(debug){ 3213 fprintf(yyout,"try fall back character "); 3214 allprint(YYU(yymatch[yych])); 3215 putchar('\n'); 3216 } 3217 # endif 3218 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 3219 if(yyt->advance+yysvec == YYLERR) /* error transition */ 3220 {unput(*--yylastch);break;} 3221 *lsp++ = yystate = yyt->advance+yysvec; 3222 if(lsp > &yylstate[YYLMAX]) { 3223 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 3224 exit(1); 3225 } 3226 goto contin; 3227 } 3228 } 3229 if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ 3230 # ifdef LEXDEBUG 3231 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); 3232 # endif 3233 goto tryagain; 3234 } 3235 # endif 3236 else 3237 {unput(*--yylastch);break;} 3238 contin: 3239 # ifdef LEXDEBUG 3240 if(debug){ 3241 fprintf(yyout,"state %d char ",yystate-yysvec-1); 3242 allprint(yych); 3243 putchar('\n'); 3244 } 3245 # endif 3246 ; 3247 } 3248 # ifdef LEXDEBUG 3249 if(debug){ 3250 fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); 3251 allprint(yych); 3252 putchar('\n'); 3253 } 3254 # endif 3255 while (lsp-- > yylstate){ 3256 *yylastch-- = 0; 3257 if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ 3258 yyolsp = lsp; 3259 if(yyextra[*yyfnd]){ /* must backup */ 3260 while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ 3261 lsp--; 3262 unput(*yylastch--); 3263 } 3264 } 3265 yyprevious = YYU(*yylastch); 3266 yylsp = lsp; 3267 yyleng = yylastch-yytext+1; 3268 yytext[yyleng] = 0; 3269 # ifdef LEXDEBUG 3270 if(debug){ 3271 fprintf(yyout,"\nmatch "); 3272 sprint(yytext); 3273 fprintf(yyout," action %d\n",*yyfnd); 3274 } 3275 # endif 3276 return(*yyfnd++); 3277 } 3278 unput(*yylastch); 3279 } 3280 if (yytext[0] == 0 /* && feof(yyin) */) 3281 { 3282 yysptr=yysbuf; 3283 return(0); 3284 } 3285 #ifndef __cplusplus 3286 yyprevious = yytext[0] = input(); 3287 if (yyprevious>0) 3288 output(yyprevious); 3289 #else 3290 yyprevious = yytext[0] = lex_input(); 3291 if (yyprevious>0) 3292 lex_output(yyprevious); 3293 #endif 3294 yylastch=yytext; 3295 # ifdef LEXDEBUG 3296 if(debug)putchar('\n'); 3297 # endif 3298 } 3299 } 3300 #if defined(__cplusplus) || defined(__STDC__) 3301 int yyback(int *p, int m) 3302 #else 3303 yyback(p, m) 3304 int *p; 3305 #endif 3306 { 3307 if (p==0) return(0); 3308 while (*p) { 3309 if (*p++ == m) 3310 return(1); 3311 } 3312 return(0); 3313 } 3314 /* the following are only used in the lex library */ 3315 #if defined(__cplusplus) || defined(__STDC__) 3316 int yyinput(void) 3317 #else 3318 yyinput() 3319 #endif 3320 { 3321 #ifndef __cplusplus 3322 return(input()); 3323 #else 3324 return(lex_input()); 3325 #endif 3326 } 3327 #if defined(__cplusplus) || defined(__STDC__) 3328 void yyoutput(int c) 3329 #else 3330 yyoutput(c) 3331 int c; 3332 #endif 3333 { 3334 #ifndef __cplusplus 3335 output(c); 3336 #else 3337 lex_output(c); 3338 #endif 3339 } 3340 #if defined(__cplusplus) || defined(__STDC__) 3341 void yyunput(int c) 3342 #else 3343 yyunput(c) 3344 int c; 3345 #endif 3346 { 3347 unput(c); 3348 } 3349