Mercurial > ~dholland > hg > ag > index.cgi
diff tests/agcl/contrib/good/bug-I158.c @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/agcl/contrib/good/bug-I158.c Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,3989 @@ +/* + YABASIC --- a tiny integrated Basic Compiler/Interpreter + + BISON - part + + this Program is subject to the GNU General Public License; + see the file yabasic.c for details. +*/ + + +#undef WINDOWS +#include "yabasic.h" /* definitions of yabasic */ +#include <malloc.h> + +#if HAVE_ALLOCA_H +#include <alloca.h> +#endif + +void __yy_bcopy(char *,char *,int); /* prototype missing */ + +int yylineno=1; +int yylex(void); + + +/* + * AnaGram, A System for Syntax Directed Programming + * File generated by: ... + * + * AnaGram Parsing Engine + * Copyright 1993-2002 Parsifal Software. All Rights Reserved. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef BUG-I158_H +#include "bug-I158.h" +#endif + +#ifndef BUG-I158_H +#error Mismatched header file +#endif + +#include <ctype.h> +#include <stdio.h> + +#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx])) +#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx]) +#define CONTEXT ((PCB).cs[(PCB).ssx]) + + + +bug-I158_pcb_type bug-I158_pcb; +#define PCB bug-I158_pcb +#define CHANGE_REDUCTION(x) bug-I158_change_reduction(bug-I158_##x##_token) +int bug-I158_change_reduction(bug-I158_token_type); + + +#ifndef CONVERT_CASE +#define CONVERT_CASE(c) (c) +#endif +#ifndef TAB_SPACING +#define TAB_SPACING 8 +#endif + +#define ag_rp_1(x, e) (x*pow(10,e)) + +#define ag_rp_2(x, e) (x*pow(10,-e)) + +#define ag_rp_3(i, f) (i+f) + +#define ag_rp_4(f) (f) + +#define ag_rp_5(d) (d-'0') + +#define ag_rp_6(x, d) (10*x + d-'0') + +#define ag_rp_7(d) ((d-'0')/10.) + +#define ag_rp_8(d, f) ((d-'0' + f)/10.) + +#define ag_rp_9(d) (d-'0') + +#define ag_rp_10(x, d) (10*x + d-'0') + +#define ag_rp_11(c) (pushChar(c), 1) + +#define ag_rp_12(k, c) (pushChar(c), k+1) + +#define ag_rp_13(k) (strdup(popString(k))) + +#define ag_rp_14(k) (pushChar('$'), strdup(popString(k+1))) + +#define ag_rp_15(k) (strdup(popString(k))) + +#define ag_rp_16(d) (pushChar(d), 1) + +#define ag_rp_17(k, d) (pushChar(d), k+1) + +#define ag_rp_18(k) (strdup(popString(k))) + +#define ag_rp_19(k) (strdup(popString(k))) + +static void ag_rp_20(void) { +/* Line -, bug-I158.syn */ +if (errorlevel<=ERROR) {YYABORT;} +} + +static void ag_rp_21(void) { +/* Line -, bug-I158.syn */ +yylineno+=$3; +} + +static void ag_rp_22(void) { +/* Line -, bug-I158.syn */ +create_goto($2); +} + +static void ag_rp_23(void) { +/* Line -, bug-I158.syn */ +create_gosub($2); +} + +static void ag_rp_24(void) { +/* Line -, bug-I158.syn */ +create_exception(TRUE); +} + +static void ag_rp_25(void) { +/* Line -, bug-I158.syn */ +create_exception(FALSE); +} + +static void ag_rp_26(void) { +/* Line -, bug-I158.syn */ +create_skipper(); +} + +static void ag_rp_27(void) { +/* Line -, bug-I158.syn */ +create_nop(); +} + +static void ag_rp_28(void) { +/* Line -, bug-I158.syn */ +create_skipper(); +} + +static void ag_rp_29(void) { +/* Line -, bug-I158.syn */ +create_nop(); +} + +static void ag_rp_30(void) { +/* Line -, bug-I158.syn */ +create_label($2); +} + +static void ag_rp_31(void) { +/* Line -, bug-I158.syn */ +create_myopen($2,'+'); +} + +static void ag_rp_32(void) { +/* Line -, bug-I158.syn */ +create_myopen($2,'-'); +} + +static void ag_rp_33(void) { +/* Line -, bug-I158.syn */ +create_myclose($2); +} + +static void ag_rp_34(void) { +/* Line -, bug-I158.syn */ +create_revert(FALSE); +} + +static void ag_rp_35(void) { +/* Line -, bug-I158.syn */ +lastinput->args=0; +} + +static void ag_rp_36(void) { +/* Line -, bug-I158.syn */ +create_restore(""); +} + +static void ag_rp_37(void) { +/* Line -, bug-I158.syn */ +create_restore($2); +} + +static void ag_rp_38(void) { +/* Line -, bug-I158.syn */ +create_return(); +} + +static void ag_rp_39(void) { +/* Line -, bug-I158.syn */ +create_openwin(FALSE); +} + +static void ag_rp_40(void) { +/* Line -, bug-I158.syn */ +create_openwin(TRUE); +} + +static void ag_rp_41(void) { +/* Line -, bug-I158.syn */ +create_dot(); +} + +static void ag_rp_42(void) { +/* Line -, bug-I158.syn */ +create_line('l'); +} + +static void ag_rp_43(void) { +/* Line -, bug-I158.syn */ +create_circle() +} + +static void ag_rp_44(void) { +/* Line -, bug-I158.syn */ +create_text(TRUE); +} + +static void ag_rp_45(void) { +/* Line -, bug-I158.syn */ +create_text(FALSE); +} + +static void ag_rp_46(void) { +/* Line -, bug-I158.syn */ +create_makemap(); +} + +static void ag_rp_47(void) { +/* Line -, bug-I158.syn */ +create_line('a'); +} + +static void ag_rp_48(void) { +/* Line -, bug-I158.syn */ +create_tick(1); +} + +static void ag_rp_49(void) { +/* Line -, bug-I158.syn */ +create_tick(3); +} + +static void ag_rp_50(void) { +/* Line -, bug-I158.syn */ +create_tick(0); +} + +static void ag_rp_51(void) { +/* Line -, bug-I158.syn */ +create_tick(2); +} + +static void ag_rp_52(void) { +/* Line -, bug-I158.syn */ +create_closewin(); +} + +static void ag_rp_53(void) { +/* Line -, bug-I158.syn */ +create_clearwin(); +} + +static void ag_rp_54(void) { +/* Line -, bug-I158.syn */ +create_clearscreen(); +} + +static void ag_rp_55(void) { +/* Line -, bug-I158.syn */ +create_openprinter(0); +} + +static void ag_rp_56(void) { +/* Line -, bug-I158.syn */ +create_openprinter(1); +} + +static void ag_rp_57(void) { +/* Line -, bug-I158.syn */ +create_closeprinter(); +} + +static void ag_rp_58(void) { +/* Line -, bug-I158.syn */ +create_mywait(); +} + +static void ag_rp_59(void) { +/* Line -, bug-I158.syn */ +create_bell(); +} + +static void ag_rp_60(void) { +/* Line -, bug-I158.syn */ +create_function(MYINKEY); create_popstrsym(NULL); +} + +static void ag_rp_61(void) { +/* Line -, bug-I158.syn */ +create_function(MYSYSTEM2); + create_popdblsym(NULL); +} + +static void ag_rp_62(void) { +/* Line -, bug-I158.syn */ +create_poke('s'); +} + +static void ag_rp_63(void) { +/* Line -, bug-I158.syn */ +create_poke('d'); +} + +static void ag_rp_64(void) { +/* Line -, bug-I158.syn */ +create_myend(); +} + +static void ag_rp_65(void) { +/* Line -, bug-I158.syn */ +create_popstrsym($1); +} + +static void ag_rp_66(void) { +/* Line -, bug-I158.syn */ +create_pushstrptr($3); +} + +static void ag_rp_67(void) { +/* Line -, bug-I158.syn */ +create_changestring(MYMID); +} + +static void ag_rp_68(void) { +/* Line -, bug-I158.syn */ +create_pushstrptr($3); +} + +static void ag_rp_69(void) { +/* Line -, bug-I158.syn */ +create_changestring(MYLEFT); +} + +static void ag_rp_70(void) { +/* Line -, bug-I158.syn */ +create_pushstrptr($3); +} + +static void ag_rp_71(void) { +/* Line -, bug-I158.syn */ +create_changestring(MYRIGHT); +} + +static void ag_rp_72(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_73(void) { +/* Line -, bug-I158.syn */ +create_doarray($1,ASSIGNSTRINGARRAY); +} + +static void ag_rp_74(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_75(void) { +/* Line -, bug-I158.syn */ +create_doarray($3,GETSTRINGPOINTER); +} + +static void ag_rp_76(void) { +/* Line -, bug-I158.syn */ +create_changestring(MYMID); +} + +static void ag_rp_77(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_78(void) { +/* Line -, bug-I158.syn */ +create_doarray($3,GETSTRINGPOINTER); +} + +static void ag_rp_79(void) { +/* Line -, bug-I158.syn */ +create_changestring(MYLEFT); +} + +static void ag_rp_80(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_81(void) { +/* Line -, bug-I158.syn */ +create_doarray($3,GETSTRINGPOINTER); +} + +static void ag_rp_82(void) { +/* Line -, bug-I158.syn */ +create_changestring(MYRIGHT); +} + +static void ag_rp_83(void) { +/* Line -, bug-I158.syn */ +create_pushstrsym($1); +} + +static void ag_rp_84(void) { +/* Line -, bug-I158.syn */ +if ($1==NULL) {error(ERROR,"String not terminated");create_pushstr("");} else {create_pushstr($1);} +} + +static void ag_rp_85(void) { +/* Line -, bug-I158.syn */ +create_concat(); +} + +static void ag_rp_86(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_87(void) { +/* Line -, bug-I158.syn */ +create_doarray($1,CALLSTRINGARRAY); +} + +static void ag_rp_88(void) { +/* Line -, bug-I158.syn */ +create_function(MYLEFT); +} + +static void ag_rp_89(void) { +/* Line -, bug-I158.syn */ +create_function(MYRIGHT); +} + +static void ag_rp_90(void) { +/* Line -, bug-I158.syn */ +create_function(MYMID); +} + +static void ag_rp_91(void) { +/* Line -, bug-I158.syn */ +create_function(MYSTR); +} + +static void ag_rp_92(void) { +/* Line -, bug-I158.syn */ +create_function(MYSTR2); +} + +static void ag_rp_93(void) { +/* Line -, bug-I158.syn */ +create_function(MYINKEY); +} + +static void ag_rp_94(void) { +/* Line -, bug-I158.syn */ +create_function(MYCHR); +} + +static void ag_rp_95(void) { +/* Line -, bug-I158.syn */ +create_function(MYUPPER); +} + +static void ag_rp_96(void) { +/* Line -, bug-I158.syn */ +create_function(MYLOWER); +} + +static void ag_rp_97(void) { +/* Line -, bug-I158.syn */ +create_function(MYLTRIM); +} + +static void ag_rp_98(void) { +/* Line -, bug-I158.syn */ +create_function(MYRTRIM); +} + +static void ag_rp_99(void) { +/* Line -, bug-I158.syn */ +create_function(MYTRIM); +} + +static void ag_rp_100(void) { +/* Line -, bug-I158.syn */ +create_function(MYSYSTEM); +} + +static void ag_rp_101(void) { +/* Line -, bug-I158.syn */ +create_function(MYDATE); +} + +static void ag_rp_102(void) { +/* Line -, bug-I158.syn */ +create_function(MYTIME); +} + +static void ag_rp_103(void) { +/* Line -, bug-I158.syn */ +create_function(MYPEEK2); +} + +static void ag_rp_104(void) { +/* Line -, bug-I158.syn */ +create_popdblsym($1); +} + +static void ag_rp_105(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_106(void) { +/* Line -, bug-I158.syn */ +create_doarray($1,ASSIGNARRAY); +} + +static void ag_rp_107(void) { +/* Line -, bug-I158.syn */ +create_pushdbl($1); +} + +static void ag_rp_108(void) { +/* Line -, bug-I158.syn */ +create_pushdblsym($1); +} + +static void ag_rp_109(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_110(void) { +/* Line -, bug-I158.syn */ +create_doarray($1,CALLARRAY); +} + +static void ag_rp_111(void) { +/* Line -, bug-I158.syn */ +create_dblbin('+'); +} + +static void ag_rp_112(void) { +/* Line -, bug-I158.syn */ +create_dblbin('-'); +} + +static void ag_rp_113(void) { +/* Line -, bug-I158.syn */ +create_dblbin('*'); +} + +static void ag_rp_114(void) { +/* Line -, bug-I158.syn */ +create_dblbin('/'); +} + +static void ag_rp_115(void) { +/* Line -, bug-I158.syn */ +create_dblbin('^'); +} + +static void ag_rp_116(void) { +/* Line -, bug-I158.syn */ +create_negate(); +} + +static void ag_rp_117(void) { +/* Line -, bug-I158.syn */ +create_map(); +} + +static void ag_rp_118(void) { +/* Line -, bug-I158.syn */ +create_function(MYSIN); +} + +static void ag_rp_119(void) { +/* Line -, bug-I158.syn */ +create_function(MYASIN); +} + +static void ag_rp_120(void) { +/* Line -, bug-I158.syn */ +create_function(MYCOS); +} + +static void ag_rp_121(void) { +/* Line -, bug-I158.syn */ +create_function(MYACOS); +} + +static void ag_rp_122(void) { +/* Line -, bug-I158.syn */ +create_function(MYTAN); +} + +static void ag_rp_123(void) { +/* Line -, bug-I158.syn */ +create_function(MYATAN); +} + +static void ag_rp_124(void) { +/* Line -, bug-I158.syn */ +create_function(MYATAN2); +} + +static void ag_rp_125(void) { +/* Line -, bug-I158.syn */ +create_function(MYEXP); +} + +static void ag_rp_126(void) { +/* Line -, bug-I158.syn */ +create_function(MYLOG); +} + +static void ag_rp_127(void) { +/* Line -, bug-I158.syn */ +create_function(MYSQRT); +} + +static void ag_rp_128(void) { +/* Line -, bug-I158.syn */ +create_function(MYINT); +} + +static void ag_rp_129(void) { +/* Line -, bug-I158.syn */ +create_function(MYFRAC); +} + +static void ag_rp_130(void) { +/* Line -, bug-I158.syn */ +create_function(MYMOD); +} + +static void ag_rp_131(void) { +/* Line -, bug-I158.syn */ +create_function(MYRAN); +} + +static void ag_rp_132(void) { +/* Line -, bug-I158.syn */ +create_function(MYRAN2); +} + +static void ag_rp_133(void) { +/* Line -, bug-I158.syn */ +create_function(MYMIN); +} + +static void ag_rp_134(void) { +/* Line -, bug-I158.syn */ +create_function(MYMAX); +} + +static void ag_rp_135(void) { +/* Line -, bug-I158.syn */ +create_function(MYXMAP); +} + +static void ag_rp_136(void) { +/* Line -, bug-I158.syn */ +create_function(MYYMAP); +} + +static void ag_rp_137(void) { +/* Line -, bug-I158.syn */ +create_function(MYLEN); +} + +static void ag_rp_138(void) { +/* Line -, bug-I158.syn */ +create_function(MYVAL); +} + +static void ag_rp_139(void) { +/* Line -, bug-I158.syn */ +create_function(MYASC); +} + +static void ag_rp_140(void) { +/* Line -, bug-I158.syn */ +create_function(MYINSTR); +} + +static void ag_rp_141(void) { +/* Line -, bug-I158.syn */ +create_function(MYSYSTEM2); +} + +static void ag_rp_142(void) { +/* Line -, bug-I158.syn */ +create_function(MYPEEK); +} + +static double ag_rp_143(void) { +/* Line -, bug-I158.syn */ +$$=$1; +} + +static double ag_rp_144(void) { +/* Line -, bug-I158.syn */ +$$=$2; +} + +static double ag_rp_145(void) { +/* Line -, bug-I158.syn */ +$$=-$2; +} + +static double ag_rp_146(void) { +/* Line -, bug-I158.syn */ +$$=$1; +} + +static double ag_rp_147(void) { +/* Line -, bug-I158.syn */ +$$=atoi($1); +} + +static int ag_rp_148(void) { +/* Line -, bug-I158.syn */ +$$=atoi($1); +} + +static char * ag_rp_149(void) { +/* Line -, bug-I158.syn */ +$$=$1; +} + +static char * ag_rp_150(void) { +/* Line -, bug-I158.syn */ +$$=$1; +} + +static void ag_rp_151(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_152(void) { +/* Line -, bug-I158.syn */ +create_dim($1,'d'); +} + +static void ag_rp_153(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_154(void) { +/* Line -, bug-I158.syn */ +create_dim($3,'d'); +} + +static void ag_rp_155(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_156(void) { +/* Line -, bug-I158.syn */ +create_dim($1,'s'); +} + +static void ag_rp_157(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_158(void) { +/* Line -, bug-I158.syn */ +create_dim($3,'s'); +} + +static void ag_rp_159(void) { +/* Line -, bug-I158.syn */ +inccounter(); +} + +static void ag_rp_160(void) { +/* Line -, bug-I158.syn */ +inccounter(); +} + +static void ag_rp_161(void) { +/* Line -, bug-I158.syn */ +pushname($2);create_popdblsym($2);pushgoto(); + create_pushdblsym($2); +} + +static void ag_rp_162(void) { +/* Line -, bug-I158.syn */ + create_dblrelop(($8>0)?'{':'}'); + create_decide(); + pushlabel(); +} + +static void ag_rp_163(void) { +/* Line -, bug-I158.syn */ +yylineno+=$10; +} + +static void ag_rp_164(void) { +/* Line -, bug-I158.syn */ + create_pushdbl($8); + create_pushdblsym($2); + create_dblbin('+'); + create_popdblsym($2); + swap();popgoto();poplabel(); +} + +static void ag_rp_165(void) { +/* Line -, bug-I158.syn */ +end_of_file=TRUE; + error(ERROR,"'next'-statement is missing"); YYABORT; +} + +static double ag_rp_166(void) { +/* Line -, bug-I158.syn */ +$$=1.0; +} + +static double ag_rp_167(void) { +/* Line -, bug-I158.syn */ +$$=$2; +} + +static void ag_rp_168(void) { +/* Line -, bug-I158.syn */ +pop(); +} + +static void ag_rp_169(void) { +/* Line -, bug-I158.syn */ +if (strcmp(pop()->pointer,$1)) + {error(ERROR,"'for' and 'next' do not match"); YYABORT;} + +} + +static void ag_rp_170(void) { +/* Line -, bug-I158.syn */ +create_decide();pushlabel(); +} + +static void ag_rp_171(void) { +/* Line -, bug-I158.syn */ +pushlabel();swap();poplabel(); +} + +static void ag_rp_172(void) { +/* Line -, bug-I158.syn */ +poplabel(); +} + +static void ag_rp_173(void) { +/* Line -, bug-I158.syn */ +end_of_file=TRUE; + error(ERROR,"'endif'-statement is missing"); YYABORT; +} + +static void ag_rp_174(void) { +/* Line -, bug-I158.syn */ +create_boole('|'); +} + +static void ag_rp_175(void) { +/* Line -, bug-I158.syn */ +create_boole('&'); +} + +static void ag_rp_176(void) { +/* Line -, bug-I158.syn */ +create_boole('!'); +} + +static void ag_rp_177(void) { +/* Line -, bug-I158.syn */ +create_strrelop('='); +} + +static void ag_rp_178(void) { +/* Line -, bug-I158.syn */ +create_strrelop('!'); +} + +static void ag_rp_179(void) { +/* Line -, bug-I158.syn */ +create_strrelop('<'); +} + +static void ag_rp_180(void) { +/* Line -, bug-I158.syn */ +create_strrelop('{'); +} + +static void ag_rp_181(void) { +/* Line -, bug-I158.syn */ +create_strrelop('>'); +} + +static void ag_rp_182(void) { +/* Line -, bug-I158.syn */ +create_strrelop('}'); +} + +static void ag_rp_183(void) { +/* Line -, bug-I158.syn */ +create_dblrelop('='); +} + +static void ag_rp_184(void) { +/* Line -, bug-I158.syn */ +create_dblrelop('!'); +} + +static void ag_rp_185(void) { +/* Line -, bug-I158.syn */ +create_dblrelop('<'); +} + +static void ag_rp_186(void) { +/* Line -, bug-I158.syn */ +create_dblrelop('{'); +} + +static void ag_rp_187(void) { +/* Line -, bug-I158.syn */ +create_dblrelop('>'); +} + +static void ag_rp_188(void) { +/* Line -, bug-I158.syn */ +create_dblrelop('}'); +} + +static void ag_rp_189(void) { +/* Line -, bug-I158.syn */ +create_testeof($3); +} + +static void ag_rp_190(void) { +/* Line -, bug-I158.syn */ +create_myread('d');create_popdblsym($1); +} + +static void ag_rp_191(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_192(void) { +/* Line -, bug-I158.syn */ +create_myread('d');create_doarray($1,ASSIGNARRAY); +} + +static void ag_rp_193(void) { +/* Line -, bug-I158.syn */ +create_myread('s');create_popstrsym($1); +} + +static void ag_rp_194(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_195(void) { +/* Line -, bug-I158.syn */ +create_myread('s');create_doarray($1,ASSIGNSTRINGARRAY); +} + +static void ag_rp_196(void) { +/* Line -, bug-I158.syn */ +create_readdata('d');create_popdblsym($1); +} + +static void ag_rp_197(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_198(void) { +/* Line -, bug-I158.syn */ +create_readdata('d');create_doarray($1,ASSIGNARRAY); +} + +static void ag_rp_199(void) { +/* Line -, bug-I158.syn */ +create_readdata('s');create_popstrsym($1); +} + +static void ag_rp_200(void) { +/* Line -, bug-I158.syn */ +pushcounter(); +} + +static void ag_rp_201(void) { +/* Line -, bug-I158.syn */ +create_readdata('s');create_doarray($1,ASSIGNSTRINGARRAY); +} + +static void ag_rp_202(void) { +/* Line -, bug-I158.syn */ +create_strdata($1); +} + +static void ag_rp_203(void) { +/* Line -, bug-I158.syn */ +create_dbldata($1); +} + +static void ag_rp_204(void) { +/* Line -, bug-I158.syn */ +create_strdata($3); +} + +static void ag_rp_205(void) { +/* Line -, bug-I158.syn */ +create_dbldata($3); +} + +static void ag_rp_206(void) { +/* Line -, bug-I158.syn */ +create_print('d'); +} + +static void ag_rp_207(void) { +/* Line -, bug-I158.syn */ +create_print('d'); +} + +static void ag_rp_208(void) { +/* Line -, bug-I158.syn */ +create_print('s'); +} + +static void ag_rp_209(void) { +/* Line -, bug-I158.syn */ +create_print('s'); +} + +static void ag_rp_210(void) { +/* Line -, bug-I158.syn */ +create_myswitch(0);create_readline(NULL); +} + +static void ag_rp_211(void) { +/* Line -, bug-I158.syn */ +create_myswitch(0);create_readline(NULL); +} + +static void ag_rp_212(void) { +/* Line -, bug-I158.syn */ +create_myswitch(0); +} + +static void ag_rp_213(void) { +/* Line -, bug-I158.syn */ +create_myswitch(0); +} + +static void ag_rp_214(void) { +/* Line -, bug-I158.syn */ +create_myswitch(0); +} + +static void ag_rp_215(void) { +/* Line -, bug-I158.syn */ +create_revert(TRUE);create_myswitch(0); +} + +static void ag_rp_216(void) { +/* Line -, bug-I158.syn */ +create_myswitch(0); +} + +static void ag_rp_217(void) { +/* Line -, bug-I158.syn */ +create_revert(TRUE);create_myswitch(0); +} + +static void ag_rp_218(void) { +/* Line -, bug-I158.syn */ +create_readline($1); +} + +static void ag_rp_219(void) { +/* Line -, bug-I158.syn */ +create_mymove(); +} + +static void ag_rp_220(void) { +/* Line -, bug-I158.syn */ +create_myswitch($2); +} + +static int ag_rp_221(void) { +/* Line -, bug-I158.syn */ +$$=$2; +} + +static int ag_rp_222(void) { +/* Line -, bug-I158.syn */ +$$=$1; +} + +static void ag_rp_223(void) { +/* Line -, bug-I158.syn */ +create_print('n'); +} + +static void ag_rp_224(void) { +/* Line -, bug-I158.syn */ +create_goto($1);create_findnop(); +} + +static void ag_rp_225(void) { +/* Line -, bug-I158.syn */ +create_goto($3);create_findnop(); +} + +static void ag_rp_226(void) { +/* Line -, bug-I158.syn */ +create_gosub($1);create_findnop(); +} + +static void ag_rp_227(void) { +/* Line -, bug-I158.syn */ +create_gosub($3);create_findnop(); +} + + +#define READ_COUNTS +#define WRITE_COUNTS +#undef V +#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i])) +#undef VS +#define VS(i) (PCB).vs[(PCB).ssx + i] + +#ifndef GET_CONTEXT +#define GET_CONTEXT CONTEXT = (PCB).input_context +#endif + +typedef enum { + ag_action_1, + ag_action_2, + ag_action_3, + ag_action_4, + ag_action_5, + ag_action_6, + ag_action_7, + ag_action_8, + ag_action_9, + ag_action_10, + ag_action_11, + ag_action_12 +} ag_parser_action; + + +#ifndef NULL_VALUE_INITIALIZER +#define NULL_VALUE_INITIALIZER = { 0 } +#endif + +static bug-I158_vs_type const ag_null_value NULL_VALUE_INITIALIZER; + +static const unsigned char ag_rpx[] = { + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, + 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 35, 0, + 0, 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 0, 84, 85, 86, + 87, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103, + 104,105,106,107, 0,108,109,110, 0,111,112,113,114,115,116, 0,117,118, + 119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136, + 137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154, + 155,156,157,158,159,160,161,162,163,164, 0, 0,165,166,167,168,169,170, + 171,172, 0, 0,173, 0,174,175,176,177,178,179,180,181,182,183,184,185, + 186,187,188,189, 0, 0, 0, 0,190,191,192,193,194,195, 0, 0,196,197, + 198,199,200,201,202,203,204,205, 0,206,207,208,209,210, 0,211,212, 0, + 213, 0,214, 0,215,216,217,218,219,220,221,222,223, 0,224,225,226,227 +}; + +static const unsigned char ag_key_itt[] = { + 0 +}; + +static const unsigned short ag_key_pt[] = { +0 +}; + +static const unsigned char ag_key_ch[] = { + 0, 83, 84,255, 79,255, 70, 71,255, 83, 84,255, 79,255, 71, 83, 84,255, + 84,255, 83, 84,255, 79,255, 71,255, 83,255, 78,255 +}; + +static const unsigned char ag_key_act[] = { + 0,3,3,4,2,4,3,2,4,3,3,4,2,4,2,3,3,4,3,4,3,3,4,2,4,2,4,3,4,3,4 +}; + +static const unsigned char ag_key_parm[] = { + 0,135,134, 0, 0, 0,176, 0, 0,135,134, 0, 0, 0, 0,184,153, 0, + 153, 0,135,134, 0, 0, 0, 0, 0,184, 0,183, 0 +}; + +static const unsigned char ag_key_jmp[] = { + 0, 3, 6, 0, 1, 0, 0, 4, 0, 8, 11, 0, 9, 0, 12, 13, 17, 0, + 19, 0, 21, 24, 0, 20, 0, 23, 0, 26, 0, 30, 0 +}; + +static const unsigned char ag_key_index[] = { + 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 14, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const unsigned char ag_key_ends[] = { +79,82,0, 85,66,0, 79,0, 85,66,0, 79,0, 84,69,80,0, 79,0, +79,0, 85,66,0, 79,0, 84,69,80,0, 69,88,84,0, +}; +#define AG_TCV(x) (((int)(x) >= -1 && (int)(x) <= 255) ? ag_tcv[(x) + 1] : 0) + +static const unsigned char ag_tcv[] = { + 125,125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 202, 26, 0, 0, 0,154,155,118, 12,141, 15, 17,119, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 0,203, 0, 0, 0, 0, 0,204,204,204,204, 11,204, + 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, + 204,204, 0, 0, 0,120, 0, 0,204,204,204,204, 11,204,204,204,204,204, + 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 +}; + +#ifndef SYNTAX_ERROR +#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \ + (PCB).error_message, (PCB).line, (PCB).column) +#endif + +#ifndef FIRST_LINE +#define FIRST_LINE 1 +#endif + +#ifndef FIRST_COLUMN +#define FIRST_COLUMN 1 +#endif + +#ifndef PARSER_STACK_OVERFLOW +#define PARSER_STACK_OVERFLOW {fprintf(stderr, \ + "\nParser stack overflow, line %d, column %d\n",\ + (PCB).line, (PCB).column);} +#endif + +#ifndef REDUCTION_TOKEN_ERROR +#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \ + "\nReduction token error, line %d, column %d\n", \ + (PCB).line, (PCB).column);} +#endif + + +typedef enum + {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key, + ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words; + +#ifndef GET_INPUT +#define GET_INPUT ((PCB).input_code = getchar()) +#endif + + +static int ag_look_ahead(void) { + if ((PCB).rx < (PCB).fx) { + return CONVERT_CASE((PCB).lab[(PCB).rx++]); + } + GET_INPUT; + (PCB).fx++; + return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code); +} + +static void ag_get_key_word(int ag_k) { + int save_index = (PCB).rx; + const unsigned char *sp; + int ag_ch; + while (1) { + switch (ag_key_act[ag_k]) { + case ag_cf_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail; + (PCB).rx--; + (PCB).token_number = (bug-I158_token_type) ag_key_pt[ag_k1 + 1]; + return; + } + } while (ag_look_ahead() == ag_ch); + goto ag_fail; + case ag_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + (PCB).token_number = (bug-I158_token_type) ag_key_parm[ag_k]; + return; + } + } while (ag_look_ahead() == ag_ch); + case ag_no_match_key: +ag_fail: + (PCB).rx = save_index; + return; + case ag_cf_set_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + ag_k = ag_key_jmp[ag_k]; + if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break; + save_index = --(PCB).rx; + (PCB).token_number = (bug-I158_token_type) ag_key_pt[ag_k1+1]; + break; + } + case ag_set_key: + save_index = (PCB).rx; + (PCB).token_number = (bug-I158_token_type) ag_key_parm[ag_k]; + case ag_jmp_key: + ag_k = ag_key_jmp[ag_k]; + ag_ch = ag_look_ahead(); + break; + case ag_accept_key: + (PCB).token_number = (bug-I158_token_type) ag_key_parm[ag_k]; + return; + case ag_cf_accept_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index; + else { + (PCB).rx--; + (PCB).token_number = (bug-I158_token_type) ag_key_pt[ag_k1+1]; + } + return; + } + default: + /* not reachable; here to suppress compiler warnings */ + goto ag_fail; + } + if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) { + (PCB).rx = save_index; + return; + } + } +} + + +#ifndef AG_NEWLINE +#define AG_NEWLINE 10 +#endif + +#ifndef AG_RETURN +#define AG_RETURN 13 +#endif + +#ifndef AG_FORMFEED +#define AG_FORMFEED 12 +#endif + +#ifndef AG_TABCHAR +#define AG_TABCHAR 9 +#endif + +static void ag_track(void) { + int ag_k = 0; + while (ag_k < (PCB).rx) { + int ag_ch = (PCB).lab[ag_k++]; + switch (ag_ch) { + case AG_NEWLINE: + (PCB).column = 1, (PCB).line++; + case AG_RETURN: + case AG_FORMFEED: + break; + case AG_TABCHAR: + (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING); + break; + default: + (PCB).column++; + } + } + ag_k = 0; + while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++]; + (PCB).fx = ag_k; + (PCB).rx = 0; +} + + +static void ag_prot(void) { + int ag_k; + ag_k = 128 - ++(PCB).btsx; + if (ag_k <= (PCB).ssx) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + return; + } + (PCB).bts[(PCB).btsx] = (PCB).sn; + (PCB).bts[ag_k] = (PCB).ssx; + (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx]; + (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx]; +} + +static void ag_undo(void) { + if ((PCB).drt == -1) return; + while ((PCB).btsx) { + int ag_k = 128 - (PCB).btsx; + (PCB).sn = (PCB).bts[(PCB).btsx--]; + (PCB).ssx = (PCB).bts[ag_k]; + (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k]; + (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k]; + } + (PCB).token_number = (bug-I158_token_type) (PCB).drt; + (PCB).ssx = (PCB).dssx; + (PCB).sn = (PCB).dsn; + (PCB).drt = -1; +} + + +static const unsigned char ag_tstt[] = { +126,125,0,123,124, +7,0,127, +125,0, +7,0, +204,176,135,134,125,115,112,102,98,97,96,79,78,77,74,73,72,70,69,68,67,65, + 64,63,62,61,48,47,46,45,44,43,39,35,34,11,0,128, +204,176,135,134,125,115,112,102,98,97,96,79,78,77,74,73,72,70,69,68,67,65, + 64,63,62,61,48,47,46,45,44,43,39,35,34,11,0,21,24,25,129,130,131,132, + 133, +204,26,20,11,0, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30, + 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185, +204,11,0,21,24, +154,60,0, +154,0, +154,0, +154,0, +154,60,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +154,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +66,50,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,74,30,20, + 17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,152,167,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,11,0,21,24,25,151, +204,20,11,0,5,21,24,27,28, +30,20,17,15,12,0,2,3,9,10,16,27,28,29,150, +204,11,0,21,24,25,149,194, +204,202,49,30,11,0,147,197,198,199, +204,203,202,154,141,125,117,116,114,113,112,111,110,109,108,107,106,105,104, + 103,102,101,100,99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81, + 80,76,75,51,49,30,20,17,15,11,0,143,197,198, +202,71,66,20,0,4,6,27,28, +202,71,66,20,0,4,6,27,28, +204,20,11,0,5,21,24,27,28, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,36,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,20,11,0,5,21,24,27,28, +204,20,11,0,5,21,24,27,28, +203,184,155,153,141,135,134,125,120,119,118,60,59,58,57,56,55,53,52,40,20, + 17,15,12,11,7,0, +20,0,18, +203,184,155,153,141,135,134,125,120,119,118,60,59,58,57,56,55,53,52,40,20, + 17,15,12,11,7,0,19, +20,0, +11,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +31,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +154,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +154,0, +154,0, +154,0, +120,119,118,60,59,58,57,56,55,15,12,0, +60,59,58,57,56,55,12,0, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30, + 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30, + 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185, +53,52,40,0,186, +204,20,11,0, +60,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,169, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,11,0,21,25, +204,11,0,21,25, +204,11,0,21,25, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,159, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,26,20,11,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +141,12,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +120,119,118,15,12,0, +154,0, +141,120,119,118,15,12,0, +141,0, +141,0, +153,0, +141,120,119,118,15,12,0, +141,0, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17, + 15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170, +141,12,0, +141,0, +153,0, +154,0, +154,0, +141,0, +20,17,0,3,9,10,16,27,28, +20,17,0,3,9,10,16,27,28, +141,0, +154,0, +154,0, +141,0, +154,0, +20,0,4,27,28, +30,0,29,200, +204,30,11,0,201, +204,11,0,21,24,25,148,191, +49,0,198, +204,203,154,141,125,117,116,114,113,112,111,110,109,108,107,106,105,104,103, + 102,101,100,99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76, + 75,30,20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,144,167,170, +20,0,4,27,28, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +141,0, +135,134,120,119,118,15,12,0, +38,37,0, +20,0,18, +20,0,18, +20,15,12,0,13, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,155,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82, + 81,80,76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +32,30,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +120,119,118,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,171, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,168, +202,20,0,4,6,27,28, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +0, +155,53,52,0, +155,120,119,118,60,59,58,57,56,55,15,12,0, +155,60,59,58,57,56,55,12,0, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30, + 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30, + 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185, +40,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +120,119,118,15,12,0, +154,141,0,158, +154,141,0,157, +154,141,0,156, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +12,0, +155,12,0, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17, + 15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170, +155,12,0, +155,120,119,118,15,12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,174, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,172, +204,11,0,21,24,25, +30,20,17,15,12,0,2,3,9,10,16,27,28,29, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,196, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,195, +204,11,0,21,24,25,194, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +30,0,29,200, +154,0, +154,0, +141,0, +12,0, +120,119,118,15,12,0, +203,141,125,0,145, +12,0, +141,120,119,118,15,12,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,20,11,0,139, +204,20,11,0,137, +20,0,14, +20,0,14, +155,12,0, +155,12,0, +141,12,0, +155,12,0, +155,12,0, +155,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +141,120,119,118,15,12,0, +141,120,119,118,15,12,0, +155,120,119,118,15,12,0, +141,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,141,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,12,0, +155,12,0, +155,12,0, +155,12,0, +155,12,0, +155,12,0, +155,12,0, +155,120,119,118,15,12,0, +155,141,120,119,118,15,12,0, +141,12,0, +141,12,0, +141,12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +155,0, +120,119,118,15,12,0, +120,119,118,15,12,0, +120,119,118,15,12,0, +120,119,118,15,12,0, +120,119,118,15,12,0, +120,119,118,15,12,0, +0, +120,0, +120,0, +120,119,118,0, +120,119,118,0, +12,0, +12,0, +12,0, +12,0, +12,0, +12,0, +0, +0, +52,0, +126,0, +153,120,119,118,15,12,0,177, +120,119,118,15,12,0, +155,141,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,165, +141,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,163, +141,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,161, +141,0, +155,141,0, +120,119,118,15,12,0, +12,0, +141,120,119,118,15,12,0, +120,119,118,15,12,0, +12,0, +12,0, +141,120,119,118,15,12,0, +12,0, +120,119,118,15,12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +154,0, +154,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +141,120,119,118,15,12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,193, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,192, +204,11,0,21,24,25,148,191, +204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100, + 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17, + 15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170, +203,125,0,146, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +141,12,0, +204,20,11,0,5,21,24,27,28,140, +204,20,11,0,5,21,24,27,28,138, +20,0, +20,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +155,141,0, +155,141,0, +42,41,8,0,187, +153,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +60,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +60,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +155,141,0, +155,141,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,175, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,173, +155,141,0, +155,141,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +12,0, +120,119,118,15,12,0, +141,120,119,118,15,12,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +141,0, +141,0, +155,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,12,0, +141,120,119,118,15,12,0, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +42,41,8,0,188, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +120,119,118,15,12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +155,141,0, +155,120,119,118,15,12,0, +155,141,0, +155,120,119,118,15,12,0, +155,141,0, +141,120,119,118,15,12,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +155,120,119,118,15,12,0, +141,120,119,118,15,12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170, +155,120,119,118,15,12,0, +155,141,0, +155,141,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +12,0, +204,20,11,0,5,21,24,27,28, +204,20,11,0,5,21,24,27,28, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +126,0, +42,8,0,189, +184,120,119,118,15,12,7,0,1, +120,119,118,15,12,0, +141,0,166, +60,0, +141,0,164, +60,0, +141,0,162, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +155,141,0, +155,141,0, +12,0, +155,120,119,118,15,12,0, +42,8,0,190, +20,17,15,12,0,2,3,9,10,16,27,28, +7,0,178, +141,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +141,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +141,0, +155,120,119,118,15,12,0, +153,120,119,118,15,12,0, +7,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +60,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +126,0,179, +155,120,119,118,15,12,0, +155,120,119,118,15,12,0, +141,120,119,118,15,12,0, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +141,120,119,118,15,12,0, +126,0, +60,0, +60,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +183,8,0,180, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +155,120,119,118,15,12,0, +141,120,119,118,15,12,0, +183,8,0,181, +12,0, +12,0, +60,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +204,125,11,0,21,24,182, +204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21, + 25,29,142,167, +141,120,119,118,15,12,0, +12,0, +204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80, + 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170, +120,119,118,15,12,0, + +}; + + +static unsigned const char ag_astt[7483] = { + 1,8,7,0,1,4,7,1,3,7,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,7,1,2,1,1,1,5,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, + 1,1,2,1,2,1,1,1,1,1,1,2,7,1,1,1,3,3,3,3,3,10,2,10,10,4,2,1,2,2,1,1,1,1,1,1, + 1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,2,7,1,1,1,1,7,1,7,1,7,1,7,1,1,7,2,1,2,2, + 1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,2,7,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1, + 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1, + 1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7, + 2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1, + 1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1, + 1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,7,2,2,1,1,1,1,2,1,1,2,1,2,2,7,1,1,1,1,2,2,2,4,2,1,2,2,1,1,1,1,1,1,7,2,2, + 2,1,1,2,1,2,1,2,2,7,1,1,1,1,1,4,1,1,4,4,7,1,1,1,1,4,4,1,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4, + 4,4,7,1,1,2,1,2,2,2,7,2,2,2,1,1,1,1,2,7,2,1,2,1,2,2,2,7,2,1,2,2,1,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1, + 2,2,2,7,2,1,2,2,1,2,2,2,7,2,1,2,2,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,7,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,10,1,5,5,5,5, + 7,3,10,4,1,5,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1, + 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7, + 1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1, + 1,1,1,2,1,1,1,1,4,1,4,1,7,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,7,2,1,2,2, + 1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1, + 1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1, + 1,1,1,2,1,2,1,1,1,1,1,1,1,4,7,1,10,10,10,4,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,2,7,1,1,2,2,7,1,1,2,2,7,1,1,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,1,2,2,1,1,1,1, + 1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,10,2,10,10,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1, + 1,1,1,1,2,7,1,1,2,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2, + 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1, + 1,2,1,1,1,1,1,1,1,1,4,1,7,1,1,1,1,1,1,7,1,4,1,4,1,7,1,1,1,1,1,1,7,1,7,2,1, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,7,1,7,1,7,1,7,1,7,1,5,1,1,7, + 2,2,1,1,2,1,1,1,7,2,2,1,1,2,1,1,5,1,4,1,4,1,5,1,7,2,7,2,2,1,1,7,2,3,4,4,4, + 7,1,2,2,7,1,1,1,2,1,1,4,2,2,5,1,8,5,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1, + 1,1,1,2,7,2,2,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,4,1,1,2,1,1,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1, + 7,1,1,1,1,1,1,1,7,2,2,7,1,4,2,1,5,2,8,1,1,7,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1, + 1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2, + 1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2, + 1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1, + 2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1, + 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1, + 2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1, + 1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7, + 2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1, + 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2, + 1,1,1,2,2,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1, + 1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1, + 2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1, + 1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1, + 1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1, + 1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1, + 1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1, + 2,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7, + 1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,2,7,2,1, + 2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1, + 1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2, + 1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1, + 2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1, + 1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2, + 1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2, + 1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1, + 2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,4,3,1,1,7,3,1,1,1,1,1,1, + 1,1,1,1,1,7,3,1,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1, + 1,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,7,2,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1, + 1,1,1,1,1,1,1,4,1,4,7,1,1,4,7,1,1,4,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,3,1,7,2,1,2,2,1,1,1,1, + 1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,2,1,7,3,1,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1, + 1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1, + 2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 7,2,2,1,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1, + 2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1, + 1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,7,2,2,1,1,1,1,2,1,1,2,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,7,1,2,2,7,1,1,1,1,1,1,1,1,7,2,2,2,1,1,2,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,7,1,2,2,7,1,1,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,7,2,3,1,4,1,4,1,5,1,4,1,1,1, + 1,1,4,4,1,4,7,1,1,4,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7, + 1,1,2,1,1,4,4,4,7,1,4,4,4,7,1,2,7,1,2,7,1,2,1,7,2,1,7,1,1,7,2,1,7,2,1,7,2, + 1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1,7, + 1,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1, + 1,1,1,1,7,2,1,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1, + 1,1,1,7,2,1,1,1,1,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,1,1,1, + 1,7,2,1,1,1,1,1,1,7,1,1,7,1,1,7,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,7,1,1,1,1,1,4,1,1, + 1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,4,1,4,1,4,1,1,1,4, + 1,1,1,4,1,4,1,4,1,4,1,4,1,4,1,4,4,4,1,4,1,7,4,1,1,1,1,1,7,1,1,1,1,1,1,4,1, + 1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,7,1,1,1,1,1,4,1, + 4,1,1,1,1,1,1,7,1,1,1,1,1,5,1,4,1,4,1,1,1,1,1,1,7,1,4,1,1,1,1,1,4,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1, + 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2, + 1,1,1,1,1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, + 7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,7,1,2,2,7,1,1,1,3,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1, + 2,1,1,1,1,3,4,7,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,2,2,2,7,2,1,2,2,1,1,2,2,2,7,2,1,2,2,1,1,10,4, + 10,4,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1, + 1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2, + 1,7,2,1,7,4,4,4,7,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1, + 1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1, + 1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2, + 2,1,1,1,1,2,1,1,1,2,1,7,2,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,7,1,2,1,7,2,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,1,4,2,1, + 2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,4,1,4,2,1,7,2,1,1,1,1,1,7, + 2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1, + 7,2,1,1,1,1,1,7,5,1,5,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1, + 7,1,1,1,1,1,1,7,1,1,7,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2, + 7,1,1,2,1,1,2,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,7,2,1, + 7,2,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,4,2,2,2,7,2,1, + 2,2,1,2,2,2,7,2,1,2,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,3,7,4,4,7,1,1,1,1,1,1,1,4,7,1,1,1,1,1,1,4,4, + 7,1,1,7,4,7,1,1,7,4,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,7,2,1,7,1,4,2,1,1,1,1,1,7,3,2, + 7,3,1,1,1,1,7,2,2,2,1,1,2,1,4,7,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1, + 2,7,1,1,2,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,7,1, + 1,1,1,1,1,7,1,1,1,1,1,1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,7,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,4,7,1,1, + 1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1, + 1,2,7,1,1,2,1,1,1,1,1,1,1,1,7,1,7,1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,4,4,7,1,2,1,2,2, + 1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1, + 1,1,2,7,1,1,2,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,2,7,1,1,4,1,4,1,7,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2, + 4,2,7,1,2,3,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,1,1,1,1,1, + 7,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1, + 1,1,2,1,1,1,1,1,1,1,1,4 +}; + + +static const unsigned short ag_pstt[] = { +1,2,0,0,2, +30,1,3, +28,2, +4,3, +31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,4,5, +17,8,36,37,33,14,15,80,12,10,11,18,19,20,21,79,16,17,22,23,25,32,33,27,28, + 29,84,26,57,24,30,31,7,35,34,17,5,6,9,13,32,32,32,32,32, +18,20,18,18,19, +17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,7, + 129,171,42,40,6,80,81,172,41,105,83,84,84,83,87, +17,17,8,88,89, +90,91,9, +92,10, +93,11, +94,12, +95,96,13, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,14,97,81,105,99, + 99, +100,15, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,16,129,171,42,40,88,80,172,41,102,102, +73,74,17, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,18,129,171,42,40,88,80,172,41,104,105,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,19,129,171,42,40,88,80,172,41,104,106,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,20,129,171,42,40,88,80,172,41,104,107,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,21,129,171,42,40,88,80,172,41,108,108, +17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,103,66,38,39,79,17,22, + 129,171,42,40,6,80,81,172,41,105,104,111,109,111,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,23,129,171,42,40,88,80,172,41,104,112,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,24,129,171,42,40,88,80,172,41,104,113,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,25,129,171,42,40,88,80,172,41,104,61,104, +17,17,26,6,115,114,116, +17,22,17,55,56,88,175,174,41, +66,38,39,117,118,28,239,168,171,42,40,172,41,238,119, +17,17,29,6,121,120,122,122, +247,124,123,250,247,30,127,127,126,125, +254,254,124,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, + 254,254,254,254,254,254,254,128,123,254,254,254,254,254,31,129,129,257, +130,77,72,22,32,263,49,173,41, +130,131,132,22,33,263,133,173,41, +17,22,17,34,46,88,175,174,41, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 135,38,39,79,17,35,129,171,42,40,88,80,172,41,134,134, +17,22,17,36,39,88,175,174,41, +17,22,17,37,38,88,175,174,41, +11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,38, +136,39,10, +7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,12,137,7,7,7,7,40,9, +23,21, +138,1, +139,43, +140,44, +141,45, +142,46, +143,47, +144,48, +145,49, +146,50, +147,51, +148,52, +149,53, +150,54, +151,55, +152,56, +153,57, +154,58, +155,59, +156,60, +157,61, +158,62, +159,63, +160,64, +161,65, +162,66, +163,67, +164,68, +165,69, +166,70, +167,71, +168,72, +169,73, +170,74, +171,75, +172,76, +173,77, +174,78, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,79,129,171,42,40,88,80,172,41,175,175, +176,131, +177,103, +178,82, +185,186,187,184,180,182,179,181,183,188,189,83, +195,191,193,190,192,194,196,84, +17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,85, + 129,171,42,40,6,80,81,172,41,105,83,84,84,83,197, +17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,86, + 129,171,42,40,6,80,81,172,41,105,199,200,200,199,198, +202,201,197,87,203, +18,18,18,19, +204,89, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,90,205, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,91,129,171,42,40,88,80,172,41,206,206, +17,17,92,97,207, +17,17,93,97,208, +17,17,94,97,209, +92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, + 92,92,92,92,95,210, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,96,97,81,105, + 211,211, +18,20,18,18,97, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,98,97,81,105, + 212,212, +213,196,99, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,100,97,81,105, + 214,214, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,101,129,171,42,40,88,80,172,41,215,215, +185,186,187,188,189,78, +216,103, +217,185,186,187,188,189,104, +218,71, +219,70, +220,107, +221,185,186,187,188,189,108, +222,109, +17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,110,129, + 171,42,40,6,80,81,172,41,105,215,212,212,215, +223,196,111, +224,112, +225,113, +226,114, +227,115, +228,58, +38,39,117,170,171,42,40,172,41, +38,39,118,169,171,42,40,172,41, +229,54, +230,235, +231,232, +232,53, +233,123, +22,124,261,173,41, +66,125,259,251, +249,252,249,126,234, +17,17,127,6,236,235,52,237, +123,256,258, +17,242,110,240,242,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52, + 76,77,78,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79, + 17,129,129,171,42,40,6,80,81,172,41,105,239,238,240,238,239, +22,130,262,173,41, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,75,97,81,105, + 241,241, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,132,129,171,42,40,88,80,172,41,242,242, +243,133, +244,245,185,186,187,188,189,134, +41,40,135, +136,13,14, +136,8,6, +247,246,247,138,247, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,139,97,81,105, + 248,248, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,140,97,81,105, + 249,249, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,141,97,81,105, + 250,250, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,142,97,81,105, + 251,251, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,143,97,81,105, + 252,252, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,144,97,81,105, + 253,253, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,145,129,171,42,40,88,80,172,41,254,254, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,146,129,171,42,40,88,80,172,41,255,255, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,147,129,171,42,40,88,80,172,41,256,256, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,148,129,171,42,40,88,80,172,41,257,257, +17,157,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65, + 49,50,38,39,79,17,149,129,171,42,40,88,80,172,41,258,258, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,150,129,171,42,40,88,80,172,41,259,259, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,151,129,171,42,40,88,80,172,41,260,260, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,152,129,171,42,40,88,80,172,41,261,261, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,153,129,171,42,40,88,80,172,41,262,262, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,154,129,171,42,40,88,80,172,41,263,263, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,155,129,171,42,40,88,80,172,41,264,264, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,156,129,171,42,40,88,80,172,41,265,265, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,157,129,171,42,40,88,80,172,41,266,266, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,158,129,171,42,40,88,80,172,41,267,267, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,159,129,171,42,40,88,80,172,41,268,268, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,160,129,171,42,40,88,80,172,41,269,269, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,161,129,171,42,40,88,80,172,41,270,270, +25,24,162, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,163,97,81,105, + 271,271, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,164,97,81,105, + 272,272, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,165,97,81,105, + 273,273, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,166,97,81,105, + 274,274, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,167,97,81,105, + 275,275, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,168,97,81,105, + 276,276, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,169,97,81,105, + 277,277, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,170,129,171,42,40,88,80,172,41,278,278, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,171,129,171,42,40,88,80,172,41,279,279, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,172,97,81,105, + 280,280, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,173,97,81,105, + 281,281, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,174,97,81,105, + 282,282, +185,186,187,140, +132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, + 132,132,132,132,132,132,132,132,132,132,176,283, +107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, + 107,107,107,107,107,107,107,107,107,107,177,284, +130,22,178,263,285,173,41, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,179,129,171,42,40,88,80,172,41,286,286, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,180,129,171,42,40,88,80,172,41,287,287, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,181,129,171,42,40,88,80,172,41,288,288, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,182,129,171,42,40,88,80,172,41,289,289, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,183,129,171,42,40,88,80,172,41,290,290, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,184,129,171,42,40,88,80,172,41,291,291, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,185,129,171,42,40,88,80,172,41,292,292, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,186,129,171,42,40,88,80,172,41,293,293, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,187,129,171,42,40,88,80,172,41,294,294, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,188,129,171,42,40,88,80,172,41,295,295, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,189,129,171,42,40,88,80,172,41,296,296, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,190,97,81,105, + 297,297, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,191,97,81,105, + 298,298, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,192,97,81,105, + 299,299, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,193,97,81,105, + 300,300, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,194,97,81,105, + 301,301, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,195,97,81,105, + 302,302, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,196,97,81,105, + 303,303, +206, +203,202,201,198, +134,185,186,187,184,180,182,179,181,183,188,189,199, +109,195,191,193,190,192,194,196,200, +17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17, + 201,129,171,42,40,6,80,81,172,41,105,83,84,84,83,304, +17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17, + 202,129,171,42,40,6,80,81,172,41,105,83,84,84,83,305, +306,203, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,204,129,171,42,40,88,80,172,41,307,307, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,205,129,171,42,40,88,80,172,41,308,309,308, +185,186,187,188,189,126, +310,90,207,311, +312,88,208,313, +314,86,209,315, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,210,129,171,42,40,88,80,172,41,308,316,308, +196,85, +109,196,212, +17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,213,129, + 171,42,40,6,80,81,172,41,105,317,318,318,317, +81,196,214, +134,185,186,187,188,189,215, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,216,129,171,42,40,88,80,172,41,319,319, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,217,129,171,42,40,88,80,172,41,320,320, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,218,97,81,105, + 321,321, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,219,97,81,105, + 322,322, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,220,129,171,42,40,88,80,172,41,104,67,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,221,129,171,42,40,88,80,172,41,323,323, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,222,97,81,105, + 324,324, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,223,129,171,42,40,88,80,172,41,104,64,104, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,224,129,171,42,40,88,80,172,41,325,325, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 103,38,39,79,17,225,129,171,42,40,88,80,172,41,104,62,104, +180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, + 180,180,180,180,180,180,180,180,180,180,226,326, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, + 176,176,176,176,176,176,176,176,176,176,227,327, +17,17,228,6,329,328, +66,38,39,117,118,229,241,168,171,42,40,172,41,240, +236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, + 236,236,236,236,236,236,236,236,236,236,230,330, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, + 233,233,233,233,233,233,233,233,233,233,231,331, +17,17,232,6,121,120,231, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,233,129,171,42,40,88,80,172,41,332,332, +66,234,259,253, +333,227, +334,224, +335,222, +196,245, +185,186,187,188,189,243, +50,336,50,240,337, +196,76, +338,185,186,187,188,189,242, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,243,97,81,105, + 339,339, +44,44,44,244,340, +42,42,42,245,341, +15,246,342, +15,247,343, +167,196,248, +166,196,249, +344,196,250, +164,196,251, +163,196,252, +162,196,253, +161,185,186,187,188,189,254, +160,185,186,187,188,189,255, +345,185,186,187,188,189,256, +346,185,186,187,188,189,257, +156,185,186,187,188,189,258, +347,185,186,187,188,189,259, +154,185,186,187,188,189,260, +153,185,186,187,188,189,261, +152,185,186,187,188,189,262, +151,185,186,187,188,189,263, +150,185,186,187,188,189,264, +148,348,185,186,187,188,189,265, +147,185,186,187,188,189,266, +146,185,186,187,188,189,267, +145,185,186,187,188,189,268, +144,185,186,187,188,189,269, +143,185,186,187,188,189,270, +125,196,271, +122,196,272, +121,196,273, +120,196,274, +119,196,275, +118,196,276, +117,196,277, +116,185,186,187,188,189,278, +113,349,185,186,187,188,189,279, +350,196,280, +351,196,281, +352,196,282, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,283,129,171,42,40,88,80,172,41,308,353,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,284,129,171,42,40,88,80,172,41,308,354,308, +219,285, +185,186,187,188,189,218, +185,186,187,188,189,217, +185,186,187,188,189,216, +185,186,187,188,189,215, +185,186,187,188,189,214, +185,186,187,188,189,213, +139, +185,138, +185,137, +185,186,187,136, +185,186,187,135, +196,212, +196,211, +196,210, +196,209, +196,208, +196,207, +106, +205, +201,204, +355,306, +186,185,186,187,188,189,307,356, +185,186,187,188,189,184, +358,357,309, +100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,310,359, +360,311, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, + 97,97,97,97,312,361, +362,313, +94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94, + 94,94,94,94,314,363, +364,315, +365,357,316, +185,186,187,188,189,83, +196,82, +366,185,186,187,188,189,319, +185,186,187,188,189,141, +196,69, +196,68, +367,185,186,187,188,189,323, +196,65, +185,186,187,188,189,63, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,326,129,171,42,40,88,80,172,41,308,368,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,327,129,171,42,40,88,80,172,41,308,369,308, +370,328, +371,329, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,330,129,171,42,40,88,80,172,41,308,372,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,331,129,171,42,40,88,80,172,41,308,373,308, +374,185,186,187,188,189,332, +228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, + 228,228,228,228,228,228,228,228,228,228,333,375, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, + 225,225,225,225,225,225,225,225,225,225,334,376, +17,17,335,6,236,235,223,237, +17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47, + 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,336,129, + 171,42,40,6,80,81,172,41,105,378,377,377,378, +51,264,337,51, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,338,129,171,42,40,88,80,172,41,379,379, +380,196,48, +17,22,17,340,268,88,175,174,41,381, +17,22,17,341,266,88,175,174,41,382, +16,5, +16,4, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,344,97,81,105, + 383,383, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,345,129,171,42,40,88,80,172,41,384,384, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,346,129,171,42,40,88,80,172,41,385,385, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,347,129,171,42,40,88,80,172,41,386,386, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,348,129,171,42,40,88,80,172,41,387,387, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,349,97,81,105, + 388,388, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,350,129,171,42,40,88,80,172,41,389,389, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,351,129,171,42,40,88,80,172,41,390,390, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,352,129,171,42,40,88,80,172,41,391,391, +133,357,353, +108,357,354, +198,198,198,355,392, +393,356, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,357,129,171,42,40,88,80,172,41,394,394, +395,358, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,359,129,171,42,40,88,80,172,41,308,396,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,360,129,171,42,40,88,80,172,41,397,397, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,361,129,171,42,40,88,80,172,41,308,398,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,362,129,171,42,40,88,80,172,41,399,399, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,363,129,171,42,40,88,80,172,41,308,400,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,364,129,171,42,40,88,80,172,41,401,401, +402,365, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,366,129,171,42,40,88,80,172,41,403,403, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,367,129,171,42,40,88,80,172,41,404,404, +181,357,368, +177,357,369, +182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, + 182,182,182,182,182,182,182,182,182,182,370,405, +178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178, + 178,178,178,178,178,178,178,178,178,178,371,406, +237,357,372, +234,357,373, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,374,129,171,42,40,88,80,172,41,407,407, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,375,129,171,42,40,88,80,172,41,308,408,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,376,129,171,42,40,88,80,172,41,308,409,308, +196,246, +185,186,187,188,189,244, +410,185,186,187,188,189,59, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,380,97,81,105, + 411,411, +412,45, +413,43, +165,196,383, +159,185,186,187,188,189,384, +158,185,186,187,188,189,385, +155,185,186,187,188,189,386, +149,185,186,187,188,189,387, +114,196,388, +414,185,186,187,188,189,389, +111,185,186,187,188,189,390, +110,185,186,187,188,189,391, +220,415,220,392,416, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,393,129,171,42,40,88,80,172,41,417,417, +185,186,187,188,189,185, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,395,129,171,42,40,88,80,172,41,418,418, +419,357,396, +420,185,186,187,188,189,397, +421,357,398, +422,185,186,187,188,189,399, +423,357,400, +424,185,186,187,188,189,401, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,402,97,81,105, + 425,425, +142,185,186,187,188,189,403, +426,185,186,187,188,189,404, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,405,129,171,42,40,88,80,172,41,308,427,308, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,406,129,171,42,40,88,80,172,41,308,428,308, +260,185,186,187,188,189,407, +229,357,408, +226,357,409, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,410,97,81,105, + 429,429, +196,47, +17,22,17,412,269,88,175,174,41, +17,22,17,413,267,88,175,174,41, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,414,129,171,42,40,88,80,172,41,430,430, +221,415, +199,199,416,431, +432,185,186,187,188,189,193,417,433, +185,186,187,188,189,128, +101,419,434, +435,420, +98,421,436, +437,422, +95,423,438, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,424,129,171,42,40,88,80,172,41,439,439, +196,93, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,426,129,171,42,40,88,80,172,41,440,440, +183,357,427, +179,357,428, +196,60, +112,185,186,187,188,189,430, +200,202,431,200, +38,39,117,118,432,194,168,171,42,40,172,41, +187,433,441, +442,434, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,435,97,81,105, + 443,443, +444,436, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,437,97,81,105, + 445,445, +446,438, +447,185,186,187,188,189,439, +448,185,186,187,188,189,440, +449,441, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,442,129,171,42,40,88,80,172,41,450,450, +196,91, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,444,129,171,42,40,88,80,172,41,451,451, +196,89, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,446,129,171,42,40,88,80,172,41,452,452, +453,447, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,448,129,171,42,40,88,80,172,41,454,454, +188,449,455, +456,185,186,187,188,189,450, +457,185,186,187,188,189,451, +458,185,186,187,188,189,452, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,453,97,81,105, + 459,459, +460,185,186,187,188,189,454, +461,455, +462,456, +463,457, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,458,129,171,42,40,88,80,172,41,464,464, +196,87, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,460,129,171,42,40,88,80,172,41,465,465, +189,189,461,466, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,462,97,81,105, + 467,467, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,463,97,81,105, + 468,468, +469,185,186,187,188,189,464, +470,185,186,187,188,189,465, +471,192,466,471, +196,102, +196,99, +472,469, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,470,129,171,42,40,88,80,172,41,473,473, +17,195,17,471,88,196,190, +17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,472,97,81,105, + 474,474, +475,185,186,187,188,189,473, +196,96, +17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50, + 38,39,79,17,475,129,171,42,40,88,80,172,41,476,476, +185,186,187,188,189,66, + +}; + + +static const unsigned short ag_sbt[] = { + 0, 5, 8, 10, 12, 50, 95, 100, 163, 168, 171, 173, 175, 177, + 180, 205, 207, 247, 250, 292, 334, 376, 416, 478, 520, 562, 604, 611, + 620, 635, 643, 653, 708, 717, 726, 735, 776, 785, 794, 821, 824, 852, + 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, + 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, + 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 968, 970, 972, 974, + 986, 994,1057,1120,1125,1129,1131,1162,1202,1207,1212,1217,1248,1273, + 1278,1303,1306,1331,1371,1377,1379,1386,1388,1390,1392,1399,1401,1461, + 1464,1466,1468,1470,1472,1474,1483,1492,1494,1496,1498,1500,1502,1507, + 1511,1516,1524,1527,1591,1596,1621,1661,1663,1671,1674,1677,1680,1685, + 1710,1735,1760,1785,1810,1835,1875,1915,1955,1995,2036,2076,2116,2156, + 2196,2236,2276,2316,2356,2396,2436,2476,2516,2519,2544,2569,2594,2619, + 2644,2669,2694,2734,2774,2799,2824,2849,2853,2884,2915,2922,2962,3002, + 3042,3082,3122,3162,3202,3242,3282,3322,3362,3387,3412,3437,3462,3487, + 3512,3537,3538,3542,3555,3564,3627,3690,3692,3732,3773,3779,3783,3787, + 3791,3832,3834,3837,3897,3900,3907,3947,3987,4012,4037,4079,4119,4144, + 4186,4226,4268,4299,4330,4336,4350,4381,4412,4419,4459,4463,4465,4467, + 4469,4471,4477,4482,4484,4491,4516,4521,4526,4529,4532,4535,4538,4541, + 4544,4547,4550,4557,4564,4571,4578,4585,4592,4599,4606,4613,4620,4627, + 4635,4642,4649,4656,4663,4670,4673,4676,4679,4682,4685,4688,4691,4698, + 4706,4709,4712,4715,4756,4797,4799,4805,4811,4817,4823,4829,4835,4836, + 4838,4840,4844,4848,4850,4852,4854,4856,4858,4860,4861,4862,4864,4866, + 4874,4880,4883,4914,4916,4947,4949,4980,4982,4985,4991,4993,5000,5006, + 5008,5010,5017,5019,5025,5066,5107,5109,5111,5152,5193,5200,5231,5262, + 5270,5330,5334,5374,5377,5387,5397,5399,5401,5426,5466,5506,5546,5586, + 5611,5651,5691,5731,5734,5737,5742,5744,5784,5786,5827,5867,5908,5948, + 5989,6029,6031,6071,6111,6114,6117,6148,6179,6182,6185,6225,6266,6307, + 6309,6315,6322,6347,6349,6351,6354,6361,6368,6375,6382,6385,6392,6399, + 6406,6411,6451,6457,6497,6500,6507,6510,6517,6520,6527,6552,6559,6566, + 6607,6648,6655,6658,6661,6686,6688,6697,6706,6746,6748,6752,6761,6767, + 6770,6772,6775,6777,6780,6820,6822,6862,6865,6868,6870,6877,6881,6893, + 6896,6898,6923,6925,6950,6952,6959,6966,6968,7008,7010,7050,7052,7092, + 7094,7134,7137,7144,7151,7158,7183,7190,7192,7194,7196,7236,7238,7278, + 7282,7307,7332,7339,7346,7350,7352,7354,7356,7396,7403,7428,7435,7437, + 7477,7483 +}; + + +static const unsigned short ag_sbe[] = { + 2, 6, 9, 11, 48, 86, 99, 147, 165, 170, 172, 174, 176, 179, + 199, 206, 236, 249, 280, 322, 364, 405, 462, 508, 550, 592, 606, 614, + 625, 637, 648, 704, 712, 721, 729, 765, 779, 788, 820, 822, 850, 853, + 855, 857, 859, 861, 863, 865, 867, 869, 871, 873, 875, 877, 879, 881, + 883, 885, 887, 889, 891, 893, 895, 897, 899, 901, 903, 905, 907, 909, + 911, 913, 915, 917, 919, 921, 923, 925, 927, 957, 969, 971, 973, 985, + 993,1041,1104,1123,1128,1130,1160,1191,1204,1209,1214,1246,1267,1277, + 1297,1305,1325,1360,1376,1378,1385,1387,1389,1391,1398,1400,1446,1463, + 1465,1467,1469,1471,1473,1476,1485,1493,1495,1497,1499,1501,1503,1508, + 1514,1518,1525,1575,1592,1615,1650,1662,1670,1673,1675,1678,1683,1704, + 1729,1754,1779,1804,1829,1864,1904,1944,1984,2025,2065,2105,2145,2185, + 2225,2265,2305,2345,2385,2425,2465,2505,2518,2538,2563,2588,2613,2638, + 2663,2688,2723,2763,2793,2818,2843,2852,2882,2913,2917,2951,2991,3031, + 3071,3111,3151,3191,3231,3271,3311,3351,3381,3406,3431,3456,3481,3506, + 3531,3537,3541,3554,3563,3611,3674,3691,3721,3761,3778,3781,3785,3789, + 3820,3833,3836,3882,3899,3906,3936,3976,4006,4031,4067,4108,4138,4174, + 4215,4256,4297,4328,4332,4341,4379,4410,4414,4448,4460,4464,4466,4468, + 4470,4476,4480,4483,4490,4510,4519,4524,4527,4530,4534,4537,4540,4543, + 4546,4549,4556,4563,4570,4577,4584,4591,4598,4605,4612,4619,4626,4634, + 4641,4648,4655,4662,4669,4672,4675,4678,4681,4684,4687,4690,4697,4705, + 4708,4711,4714,4744,4785,4798,4804,4810,4816,4822,4828,4834,4835,4837, + 4839,4843,4847,4849,4851,4853,4855,4857,4859,4860,4861,4863,4865,4872, + 4879,4882,4912,4915,4945,4948,4978,4981,4984,4990,4992,4999,5005,5007, + 5009,5016,5018,5024,5054,5095,5108,5110,5140,5181,5199,5229,5260,5264, + 5315,5332,5363,5376,5380,5390,5398,5400,5420,5455,5495,5535,5575,5605, + 5640,5680,5720,5733,5736,5740,5743,5773,5785,5815,5856,5896,5937,5977, + 6018,6030,6060,6100,6113,6116,6146,6177,6181,6184,6214,6254,6295,6308, + 6314,6321,6341,6348,6350,6353,6360,6367,6374,6381,6384,6391,6398,6405, + 6409,6440,6456,6486,6499,6506,6509,6516,6519,6526,6546,6558,6565,6595, + 6636,6654,6657,6660,6680,6687,6691,6700,6735,6747,6750,6759,6766,6768, + 6771,6773,6776,6778,6809,6821,6851,6864,6867,6869,6876,6879,6885,6894, + 6897,6917,6924,6944,6951,6958,6965,6967,6997,7009,7039,7051,7081,7093, + 7123,7135,7143,7150,7157,7177,7189,7191,7193,7195,7225,7237,7267,7280, + 7301,7326,7338,7345,7348,7351,7353,7355,7385,7399,7422,7434,7436,7466, + 7482,7483 +}; + + +static const unsigned char ag_fl[] = { + 1,1,0,1,4,4,3,0,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,3,3,1,2,2,0,0,0,5,0,1, + 1,1,1,2,2,3,3,0,5,0,5,2,6,4,2,0,5,3,2,2,1,2,1,2,5,7,2,4,4,4,4,16,4,4,4, + 2,2,2,2,2,2,3,2,2,1,1,4,4,4,1,3,0,11,0,9,0,9,0,7,0,0,15,0,0,13,0,0,13, + 1,1,1,3,0,5,3,6,6,8,4,6,1,4,4,4,4,4,4,4,1,1,4,3,0,7,1,1,1,0,5,3,3,3,3, + 3,3,2,3,6,4,4,4,4,4,4,6,4,4,4,4,4,6,4,3,6,6,4,4,4,4,4,6,4,4,1,2,2,1,1, + 1,1,1,0,5,0,7,0,5,0,7,1,3,0,0,0,0,15,1,1,0,2,0,1,0,0,0,9,1,1,3,3,3,2,3, + 3,3,3,3,3,3,3,3,3,3,3,4,0,2,1,3,1,0,5,1,0,5,1,3,1,0,5,1,0,5,1,1,3,3,0, + 1,3,1,3,0,1,1,0,2,0,3,0,1,1,1,2,1,6,2,2,1,0,1,1,3,1,3 +}; + +static const unsigned char ag_ptt[] = { + 0, 9, 13, 13, 9, 9, 10, 19, 19, 10, 10, 16, 16, 18, 18, 14, 14, 21, + 21, 24, 25, 27, 28, 28, 29, 29,122,122,123,124,127,128,124,129,129,129, + 129,129,129,129,129,129,137,129,139,129,129,129,129,129,145,129,129,129, + 129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, + 129,129,129,129,129,129,129,129,129,129,129,129,129,130,156,130,157,130, + 158,130,159,130,161,162,130,163,164,130,165,166,130,142,142,142,142,168, + 142,142,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167, + 131,169,131,136,136,136,171,136,136,136,136,136,136,136,136,152,152,170, + 170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170, + 170,170,170,170,170,170, 2, 2, 2, 3, 3, 4, 5, 5,172,151,173,151, + 174,151,175,151,160,160,177,178,179,180,132,181,181, 1, 1,182,182,186, + 187,189,133,190,190,185,185,185,185,185,185,185,185,185,185,185,185,185, + 185,185,185,185,188,188,148,148,191,192,191,191,193,191,149,149,194,195, + 194,194,196,194,150,150,150,150,144,144,144,144,144,147,147,147,199,147, + 201,147,143,143,143,143,143,200,198,197, 6, 6,146,146,138,138,140,140 +}; + +static const unsigned char *ag_valid(int ag_k) { + const unsigned char *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]]; + while (*--ag_tp != (unsigned char) ag_k) if (*ag_tp == 0) return NULL; + return ag_tp; +} + +int bug-I158_change_reduction(bug-I158_token_type ag_k) { + if (!ag_valid(ag_k)) return 0; + (PCB).reduction_token = ag_k; + return 1; +} + +static void ag_default(const int *ag_tp) { + (PCB).ag_dsn = (PCB).sn; + (PCB).ag_dtl = ag_tp; + while (!ag_valid((bug-I158_token_type) *ag_tp)) ag_tp++; + (PCB).reduction_token = (bug-I158_token_type) *ag_tp; +} + + + +static void ag_ra(void) +{ + switch(ag_rpx[(PCB).ag_ap]) { + case 1: ag_rp_1(V(0,(void *)), V(3,(int *))); break; + case 2: ag_rp_2(V(0,(void *)), V(3,(int *))); break; + case 3: ag_rp_3(V(0,(void *)), V(2,(void *))); break; + case 4: ag_rp_4(V(1,(void *))); break; + case 5: ag_rp_5(V(0,(int *))); break; + case 6: ag_rp_6(V(0,(void *)), V(1,(int *))); break; + case 7: ag_rp_7(V(0,(int *))); break; + case 8: ag_rp_8(V(0,(int *)), V(1,(void *))); break; + case 9: V(0,(int *)) = ag_rp_9(V(0,(int *))); break; + case 10: V(0,(int *)) = ag_rp_10(V(0,(int *)), V(1,(int *))); break; + case 11: V(0,(int *)) = ag_rp_11(V(0,(int *))); break; + case 12: V(0,(int *)) = ag_rp_12(V(0,(int *)), V(1,(int *))); break; + case 13: V(0,(char * *)) = ag_rp_13(V(0,(int *))); break; + case 14: V(0,(char * *)) = ag_rp_14(V(0,(int *))); break; + case 15: V(0,(char * *)) = ag_rp_15(V(0,(int *))); break; + case 16: V(0,(int *)) = ag_rp_16(V(0,(int *))); break; + case 17: V(0,(int *)) = ag_rp_17(V(0,(int *)), V(1,(int *))); break; + case 18: V(0,(char * *)) = ag_rp_18(V(1,(int *))); break; + case 19: V(0,(char * *)) = ag_rp_19(V(1,(int *))); break; + case 20: ag_rp_20(); break; + case 21: ag_rp_21(); break; + case 22: ag_rp_22(); break; + case 23: ag_rp_23(); break; + case 24: ag_rp_24(); break; + case 25: ag_rp_25(); break; + case 26: ag_rp_26(); break; + case 27: ag_rp_27(); break; + case 28: ag_rp_28(); break; + case 29: ag_rp_29(); break; + case 30: ag_rp_30(); break; + case 31: ag_rp_31(); break; + case 32: ag_rp_32(); break; + case 33: ag_rp_33(); break; + case 34: ag_rp_34(); break; + case 35: ag_rp_35(); break; + case 36: ag_rp_36(); break; + case 37: ag_rp_37(); break; + case 38: ag_rp_38(); break; + case 39: ag_rp_39(); break; + case 40: ag_rp_40(); break; + case 41: ag_rp_41(); break; + case 42: ag_rp_42(); break; + case 43: ag_rp_43(); break; + case 44: ag_rp_44(); break; + case 45: ag_rp_45(); break; + case 46: ag_rp_46(); break; + case 47: ag_rp_47(); break; + case 48: ag_rp_48(); break; + case 49: ag_rp_49(); break; + case 50: ag_rp_50(); break; + case 51: ag_rp_51(); break; + case 52: ag_rp_52(); break; + case 53: ag_rp_53(); break; + case 54: ag_rp_54(); break; + case 55: ag_rp_55(); break; + case 56: ag_rp_56(); break; + case 57: ag_rp_57(); break; + case 58: ag_rp_58(); break; + case 59: ag_rp_59(); break; + case 60: ag_rp_60(); break; + case 61: ag_rp_61(); break; + case 62: ag_rp_62(); break; + case 63: ag_rp_63(); break; + case 64: ag_rp_64(); break; + case 65: ag_rp_65(); break; + case 66: ag_rp_66(); break; + case 67: ag_rp_67(); break; + case 68: ag_rp_68(); break; + case 69: ag_rp_69(); break; + case 70: ag_rp_70(); break; + case 71: ag_rp_71(); break; + case 72: ag_rp_72(); break; + case 73: ag_rp_73(); break; + case 74: ag_rp_74(); break; + case 75: ag_rp_75(); break; + case 76: ag_rp_76(); break; + case 77: ag_rp_77(); break; + case 78: ag_rp_78(); break; + case 79: ag_rp_79(); break; + case 80: ag_rp_80(); break; + case 81: ag_rp_81(); break; + case 82: ag_rp_82(); break; + case 83: ag_rp_83(); break; + case 84: ag_rp_84(); break; + case 85: ag_rp_85(); break; + case 86: ag_rp_86(); break; + case 87: ag_rp_87(); break; + case 88: ag_rp_88(); break; + case 89: ag_rp_89(); break; + case 90: ag_rp_90(); break; + case 91: ag_rp_91(); break; + case 92: ag_rp_92(); break; + case 93: ag_rp_93(); break; + case 94: ag_rp_94(); break; + case 95: ag_rp_95(); break; + case 96: ag_rp_96(); break; + case 97: ag_rp_97(); break; + case 98: ag_rp_98(); break; + case 99: ag_rp_99(); break; + case 100: ag_rp_100(); break; + case 101: ag_rp_101(); break; + case 102: ag_rp_102(); break; + case 103: ag_rp_103(); break; + case 104: ag_rp_104(); break; + case 105: ag_rp_105(); break; + case 106: ag_rp_106(); break; + case 107: ag_rp_107(); break; + case 108: ag_rp_108(); break; + case 109: ag_rp_109(); break; + case 110: ag_rp_110(); break; + case 111: ag_rp_111(); break; + case 112: ag_rp_112(); break; + case 113: ag_rp_113(); break; + case 114: ag_rp_114(); break; + case 115: ag_rp_115(); break; + case 116: ag_rp_116(); break; + case 117: ag_rp_117(); break; + case 118: ag_rp_118(); break; + case 119: ag_rp_119(); break; + case 120: ag_rp_120(); break; + case 121: ag_rp_121(); break; + case 122: ag_rp_122(); break; + case 123: ag_rp_123(); break; + case 124: ag_rp_124(); break; + case 125: ag_rp_125(); break; + case 126: ag_rp_126(); break; + case 127: ag_rp_127(); break; + case 128: ag_rp_128(); break; + case 129: ag_rp_129(); break; + case 130: ag_rp_130(); break; + case 131: ag_rp_131(); break; + case 132: ag_rp_132(); break; + case 133: ag_rp_133(); break; + case 134: ag_rp_134(); break; + case 135: ag_rp_135(); break; + case 136: ag_rp_136(); break; + case 137: ag_rp_137(); break; + case 138: ag_rp_138(); break; + case 139: ag_rp_139(); break; + case 140: ag_rp_140(); break; + case 141: ag_rp_141(); break; + case 142: ag_rp_142(); break; + case 143: V(0,(double *)) = ag_rp_143(); break; + case 144: V(0,(double *)) = ag_rp_144(); break; + case 145: V(0,(double *)) = ag_rp_145(); break; + case 146: V(0,(double *)) = ag_rp_146(); break; + case 147: V(0,(double *)) = ag_rp_147(); break; + case 148: V(0,(int *)) = ag_rp_148(); break; + case 149: V(0,(char * *)) = ag_rp_149(); break; + case 150: V(0,(char * *)) = ag_rp_150(); break; + case 151: ag_rp_151(); break; + case 152: ag_rp_152(); break; + case 153: ag_rp_153(); break; + case 154: ag_rp_154(); break; + case 155: ag_rp_155(); break; + case 156: ag_rp_156(); break; + case 157: ag_rp_157(); break; + case 158: ag_rp_158(); break; + case 159: ag_rp_159(); break; + case 160: ag_rp_160(); break; + case 161: ag_rp_161(); break; + case 162: ag_rp_162(); break; + case 163: ag_rp_163(); break; + case 164: ag_rp_164(); break; + case 165: ag_rp_165(); break; + case 166: V(0,(double *)) = ag_rp_166(); break; + case 167: V(0,(double *)) = ag_rp_167(); break; + case 168: ag_rp_168(); break; + case 169: ag_rp_169(); break; + case 170: ag_rp_170(); break; + case 171: ag_rp_171(); break; + case 172: ag_rp_172(); break; + case 173: ag_rp_173(); break; + case 174: ag_rp_174(); break; + case 175: ag_rp_175(); break; + case 176: ag_rp_176(); break; + case 177: ag_rp_177(); break; + case 178: ag_rp_178(); break; + case 179: ag_rp_179(); break; + case 180: ag_rp_180(); break; + case 181: ag_rp_181(); break; + case 182: ag_rp_182(); break; + case 183: ag_rp_183(); break; + case 184: ag_rp_184(); break; + case 185: ag_rp_185(); break; + case 186: ag_rp_186(); break; + case 187: ag_rp_187(); break; + case 188: ag_rp_188(); break; + case 189: ag_rp_189(); break; + case 190: ag_rp_190(); break; + case 191: ag_rp_191(); break; + case 192: ag_rp_192(); break; + case 193: ag_rp_193(); break; + case 194: ag_rp_194(); break; + case 195: ag_rp_195(); break; + case 196: ag_rp_196(); break; + case 197: ag_rp_197(); break; + case 198: ag_rp_198(); break; + case 199: ag_rp_199(); break; + case 200: ag_rp_200(); break; + case 201: ag_rp_201(); break; + case 202: ag_rp_202(); break; + case 203: ag_rp_203(); break; + case 204: ag_rp_204(); break; + case 205: ag_rp_205(); break; + case 206: ag_rp_206(); break; + case 207: ag_rp_207(); break; + case 208: ag_rp_208(); break; + case 209: ag_rp_209(); break; + case 210: ag_rp_210(); break; + case 211: ag_rp_211(); break; + case 212: ag_rp_212(); break; + case 213: ag_rp_213(); break; + case 214: ag_rp_214(); break; + case 215: ag_rp_215(); break; + case 216: ag_rp_216(); break; + case 217: ag_rp_217(); break; + case 218: ag_rp_218(); break; + case 219: ag_rp_219(); break; + case 220: ag_rp_220(); break; + case 221: V(0,(int *)) = ag_rp_221(); break; + case 222: V(0,(int *)) = ag_rp_222(); break; + case 223: ag_rp_223(); break; + case 224: ag_rp_224(); break; + case 225: ag_rp_225(); break; + case 226: ag_rp_226(); break; + case 227: ag_rp_227(); break; + } +} + +#define TOKEN_NAMES bug-I158_token_names +const char *const bug-I158_token_names[205] = { + "program", + "step_part", + "const", + "number", + "intnum", + "symbol_or_lineno", + "hashed_number", + "SEP", + "EOFILE", + "FNUM", + "simple real", + "", + "'+'", + "", + "exponent", + "'-'", + "integer part", + "'.'", + "fraction part", + "", + "digit", + "name", + "letter", + "", + "SYMBOL", + "STRSYM", + "'$'", + "DIGITS", + "digit string", + "STRING", + "'\\\"'", + "string text", + "'\\n'", + "GOSUB", + "LABEL", + "ON", + "INTERRUPT", + "BREAK", + "CONTINUE", + "IF", + "THEN", + "ELSE", + "ENDIF", + "PRINT", + "INPUT", + "LINE", + "RETURN", + "DIM", + "END", + "AT", + "SCREEN", + "REVERSE", + "AND", + "OR", + "NOT", + "NE", + "LE", + "GE", + "LT", + "GT", + "EQ", + "READ", + "DATA", + "RESTORE", + "OPEN", + "CLOSE", + "WINDOW", + "DOT", + "CIRCLE", + "TEXT", + "CLEAR", + "PRINTER", + "WAIT", + "BELL", + "MAP", + "XMAP", + "YMAP", + "ARROW", + "XTICK", + "YTICK", + "SIN", + "ASIN", + "COS", + "ACOS", + "TAN", + "ATAN", + "EXP", + "LOG", + "SQRT", + "MYEOF", + "INT", + "FRAC", + "MOD", + "RAN", + "LEN", + "VAL", + "LEFT", + "RIGHT", + "MID", + "MIN", + "MAX", + "STR", + "INKEY", + "CHR", + "ASC", + "UPPER", + "LOWER", + "TRIM", + "LTRIM", + "RTRIM", + "INSTR", + "SYSTEM", + "SYSTEM2", + "PEEK", + "PEEK2", + "POKE", + "DATE", + "TIME", + "'*'", + "'/'", + "'^'", + "UMINUS", + "NAME", + "program", + "statement list", + "eof", + "statement_list", + "", + "", + "statement", + "string_assignment", + "assignment", + "for_loop", + "if_clause", + "\"GOTO\"", + "\"GOSUB\"", + "expression", + "", + "goto_list", + "", + "gosub_list", + "','", + "string_expression", + "printintro", + "printlist", + "", + "semicolon", + "inputintro", + "inputlist", + "readlist", + "datalist", + "dimlist", + "mapping", + "\"TO\"", + "'('", + "')'", + "", + "", + "", + "", + "indexlist", + "", + "", + "", + "", + "", + "", + "string_function", + "", + "", + "function", + "", + "", + "", + "", + "", + "\"FOR\"", + "", + "", + "", + "", + "next_or_eofile", + "next_symbol", + "\"NEXT\"", + "\"STEP\"", + "condition", + "", + "", + "else_part", + "", + "endif_or_eof", + "input", + "", + "", + "readitem", + "", + "", + "stream", + "position", + "", + "prompt", + "", + "'#'", + "';'", + "", + +}; + +#ifndef MISSING_FORMAT +#define MISSING_FORMAT "Missing %s" +#endif +#ifndef UNEXPECTED_FORMAT +#define UNEXPECTED_FORMAT "Unexpected %s" +#endif +#ifndef UNNAMED_TOKEN +#define UNNAMED_TOKEN "input" +#endif + + +static void ag_diagnose(void) { + int ag_snd = (PCB).sn; + int ag_k = ag_sbt[ag_snd]; + + if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8 + && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1 + && *TOKEN_NAMES[ag_tstt[ag_k]]) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) { + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]); + } + else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') { + char buf[20]; + sprintf(buf, "\'%c\'", (char) (*(PCB).lab)); + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf); + } + else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN); + (PCB).error_message = (PCB).ag_msg; + + +} +static int ag_action_1_r_proc(void); +static int ag_action_2_r_proc(void); +static int ag_action_3_r_proc(void); +static int ag_action_4_r_proc(void); +static int ag_action_1_s_proc(void); +static int ag_action_3_s_proc(void); +static int ag_action_1_proc(void); +static int ag_action_2_proc(void); +static int ag_action_3_proc(void); +static int ag_action_4_proc(void); +static int ag_action_5_proc(void); +static int ag_action_6_proc(void); +static int ag_action_7_proc(void); +static int ag_action_8_proc(void); +static int ag_action_9_proc(void); +static int ag_action_10_proc(void); +static int ag_action_11_proc(void); +static int ag_action_8_proc(void); + + +static int (*const ag_r_procs_scan[])(void) = { + ag_action_1_r_proc, + ag_action_2_r_proc, + ag_action_3_r_proc, + ag_action_4_r_proc +}; + +static int (*const ag_s_procs_scan[])(void) = { + ag_action_1_s_proc, + ag_action_2_r_proc, + ag_action_3_s_proc, + ag_action_4_r_proc +}; + +static int (*const ag_gt_procs_scan[])(void) = { + ag_action_1_proc, + ag_action_2_proc, + ag_action_3_proc, + ag_action_4_proc, + ag_action_5_proc, + ag_action_6_proc, + ag_action_7_proc, + ag_action_8_proc, + ag_action_9_proc, + ag_action_10_proc, + ag_action_11_proc, + ag_action_8_proc +}; + + +static int ag_action_10_proc(void) { + int ag_t = (PCB).token_number; + (PCB).btsx = 0, (PCB).drt = -1; + do { + ag_track(); + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } while ((PCB).token_number == (bug-I158_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_11_proc(void) { + int ag_t = (PCB).token_number; + + (PCB).btsx = 0, (PCB).drt = -1; + do { + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + (PCB).ssx--; + ag_track(); + ag_ra(); + if ((PCB).exit_flag != AG_RUNNING_CODE) return 0; + (PCB).ssx++; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } + while ((PCB).token_number == (bug-I158_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_3_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_3_s_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_4_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap]; + return 1; +} + +static int ag_action_2_proc(void) { + (PCB).btsx = 0, (PCB).drt = -1; + if ((PCB).ssx >= 128) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + } + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + ag_track(); + return 0; +} + +static int ag_action_9_proc(void) { + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + (PCB).rx = 0; + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_2_r_proc(void) { + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + return 0; +} + +static int ag_action_7_proc(void) { + --(PCB).ssx; + (PCB).rx = 0; + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_proc(void) { + ag_track(); + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_r_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_s_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_4_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (PCB).reduction_token) { + (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; + REDUCTION_TOKEN_ERROR; break;} + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_3_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).btsx = 0, (PCB).drt = -1; + (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (PCB).reduction_token) { + (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; + REDUCTION_TOKEN_ERROR; break;} + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_8_proc(void) { + ag_undo(); + (PCB).rx = 0; + (PCB).exit_flag = AG_SYNTAX_ERROR_CODE; + ag_diagnose(); + SYNTAX_ERROR; + {(PCB).rx = 1; ag_track();} + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_5_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else { + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (PCB).reduction_token) { + (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; + REDUCTION_TOKEN_ERROR; break;} + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_6_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap]; + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + if (ag_sd) { + (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + } + else { + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (PCB).reduction_token) { + (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; + REDUCTION_TOKEN_ERROR; break;} + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + + +void init_bug-I158(void) { + (PCB).rx = (PCB).fx = 0; + (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0; + (PCB).exit_flag = AG_RUNNING_CODE; + (PCB).line = FIRST_LINE; + (PCB).column = FIRST_COLUMN; + (PCB).btsx = 0, (PCB).drt = -1; +} + +void bug-I158(void) { + init_bug-I158(); + (PCB).exit_flag = AG_RUNNING_CODE; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbt[(PCB).sn]; + if (ag_tstt[ag_t1]) { + unsigned ag_t2 = ag_sbe[(PCB).sn] - 1; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] > (unsigned char)(PCB).token_number) + ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (unsigned char)(PCB).token_number) + ag_t1 = ag_sbe[(PCB).sn]; + } + (PCB).ag_ap = ag_pstt[ag_t1]; + (ag_gt_procs_scan[ag_astt[ag_t1]])(); + } +} + +