# include "stdio.h"
# define U(x) x
# define NLSTATE yyprevious=YYNEWLINE
# define BEGIN yybgin = yysvec + 1 +
# define INITIAL 0
# define YYLERR yysvec
# define YYSTATE (yyestate-yysvec-1)
# define YYOPTIM 1
# define YYLMAX 200
# define output(c) putc(c,yyout)
# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
# define yymore() (yymorfg=1)
# define ECHO fprintf(yyout, "%s",yytext)
# define REJECT { nstr = yyreject(); goto yyfussy;}
int yyleng; extern char yytext[];
int yymorfg;
extern char *yysptr, yysbuf[];
int yytchar;
FILE *yyin = {stdin}, *yyout = {stdout};
extern int yylineno;
struct yysvf { 
	struct yywork *yystoff;
	struct yysvf *yyother;
	int *yystops;};
struct yysvf *yyestate;
extern struct yysvf yysvec[], *yybgin;
# define A 2
# define str 4
# define chc 6
# define sc 8
# define reg 10
# define comment 12
#include	"awk.h"
#include	"awk.def"
#undef	input	/* defeat lex */
extern int	yylval;
extern int	mustfld;

int	lineno	= 1;
#ifdef	DEBUG
#	define	RETURN(x)	{if (dbg) ptoken(x); return(x); }
#else
#	define	RETURN(x)	return(x)
#endif
#define	CADD	cbuff[clen++]=yytext[0]; if(clen>=CBUFLEN-1) {yyerror("string too long", cbuff); BEGIN A;}
#define	CBUFLEN	150
char	cbuff[CBUFLEN];
int	clen, cflag;
# define YYNEWLINE 10
yylex(){
int nstr; extern int yyprevious;
switch (yybgin-yysvec-1) {	/* witchcraft */
	case 0:
		BEGIN A;
		break;
	case sc:
		BEGIN A;
		RETURN('}');
	}
while((nstr = yylook()) >= 0)
yyfussy: switch(nstr){
case 0:
if(yywrap()) return(0); break;
case 1:
	lineno++;
break;
case 2:
lineno++;
break;
case 3:
	;
break;
case 4:
lineno++;
break;
case 5:
	RETURN(BOR);
break;
case 6:
RETURN(XBEGIN);
break;
case 7:
	RETURN(XEND);
break;
case 8:
RETURN(EOF);
break;
case 9:
	RETURN(AND);
break;
case 10:
	RETURN(NOT);
break;
case 11:
	{ yylval = NE; RETURN(RELOP); }
break;
case 12:
	{ yylval = MATCH; RETURN(MATCHOP); }
break;
case 13:
	{ yylval = NOTMATCH; RETURN(MATCHOP); }
break;
case 14:
	{ yylval = LT; RETURN(RELOP); }
break;
case 15:
	{ yylval = LE; RETURN(RELOP); }
break;
case 16:
	{ yylval = EQ; RETURN(RELOP); }
break;
case 17:
	{ yylval = GE; RETURN(RELOP); }
break;
case 18:
	{ yylval = GT; RETURN(RELOP); }
break;
case 19:
	{ yylval = APPEND; RETURN(RELOP); }
break;
case 20:
	{ yylval = INCR; RETURN(INCR); }
break;
case 21:
	{ yylval = DECR; RETURN(DECR); }
break;
case 22:
	{ yylval = ADDEQ; RETURN(ASGNOP); }
break;
case 23:
	{ yylval = SUBEQ; RETURN(ASGNOP); }
break;
case 24:
	{ yylval = MULTEQ; RETURN(ASGNOP); }
break;
case 25:
	{ yylval = DIVEQ; RETURN(ASGNOP); }
break;
case 26:
	{ yylval = MODEQ; RETURN(ASGNOP); }
break;
case 27:
	{ yylval = ASSIGN; RETURN(ASGNOP); }
break;
case 28:
{	if (atoi(yytext+1)==0) {
				yylval = (int)lookup("$record", symtab, 0);
				RETURN(STRING);
			} else {
				yylval = fieldadr(atoi(yytext+1));
				RETURN(FIELD);
			}
		}
break;
case 29:
{ RETURN(INDIRECT); }
break;
case 30:
	{ mustfld=1; yylval = (int)setsymtab(yytext, NULL, 0.0, NUM, symtab); RETURN(VAR); }
break;
case 31:
{
		yylval = (int)setsymtab(yytext, NULL, atof(yytext), CON|NUM, symtab); RETURN(NUMBER); }
break;
case 32:
{ BEGIN sc; lineno++; RETURN(';'); }
break;
case 33:
	{ BEGIN sc; RETURN(';'); }
break;
case 34:
	{ lineno++; RETURN(';'); }
break;
case 35:
	{ lineno++; RETURN(NL); }
break;
case 36:
RETURN(WHILE);
break;
case 37:
	RETURN(FOR);
break;
case 38:
	RETURN(IF);
break;
case 39:
	RETURN(ELSE);
break;
case 40:
	RETURN(NEXT);
break;
case 41:
	RETURN(EXIT);
break;
case 42:
RETURN(BREAK);
break;
case 43:
RETURN(CONTINUE);
break;
case 44:
{ yylval = PRINT; RETURN(PRINT); }
break;
case 45:
{ yylval = PRINTF; RETURN(PRINTF); }
break;
case 46:
{ yylval = SPRINTF; RETURN(SPRINTF); }
break;
case 47:
{ yylval = SPLIT; RETURN(SPLIT); }
break;
case 48:
RETURN(SUBSTR);
break;
case 49:
RETURN(INDEX);
break;
case 50:
	RETURN(IN);
break;
case 51:
RETURN(GETLINE);
break;
case 52:
{ yylval = FLENGTH; RETURN(FNCN); }
break;
case 53:
	{ yylval = FLOG; RETURN(FNCN); }
break;
case 54:
	{ yylval = FINT; RETURN(FNCN); }
break;
case 55:
	{ yylval = FEXP; RETURN(FNCN); }
break;
case 56:
	{ yylval = FSQRT; RETURN(FNCN); }
break;
case 57:
{ yylval = (int)setsymtab(yytext, tostring(""), 0.0, STR|NUM, symtab); RETURN(VAR); }
break;
case 58:
	{ BEGIN str; clen=0; }
break;
case 59:
	{ BEGIN comment; }
break;
case 60:
{ BEGIN A; lineno++; RETURN(NL); }
break;
case 61:
;
break;
case 62:
	{ yylval = yytext[0]; RETURN(yytext[0]); }
break;
case 63:
{ BEGIN chc; clen=0; cflag=0; }
break;
case 64:
{ BEGIN chc; clen=0; cflag=1; }
break;
case 65:
RETURN(QUEST);
break;
case 66:
RETURN(PLUS);
break;
case 67:
RETURN(STAR);
break;
case 68:
RETURN(OR);
break;
case 69:
RETURN(DOT);
break;
case 70:
RETURN('(');
break;
case 71:
RETURN(')');
break;
case 72:
RETURN('^');
break;
case 73:
RETURN('$');
break;
case 74:
{ sscanf(yytext+1, "%o", &yylval); RETURN(CHAR); }
break;
case 75:
{	if (yytext[1]=='n') yylval = '\n';
			else if (yytext[1] == 't') yylval = '\t';
			else yylval = yytext[1];
			RETURN(CHAR);
		}
break;
case 76:
{ BEGIN A; unput('/'); }
break;
case 77:
	{ yyerror("newline in regular expression"); lineno++; BEGIN A; }
break;
case 78:
	{ yylval = yytext[0]; RETURN(CHAR); }
break;
case 79:
	{ char *s; BEGIN A; cbuff[clen]=0; s = tostring(cbuff);
		cbuff[clen] = ' '; cbuff[++clen] = 0;
		yylval = (int)setsymtab(cbuff, s, 0.0, CON|STR, symtab); RETURN(STRING); }
break;
case 80:
	{ yyerror("newline in string"); lineno++; BEGIN A; }
break;
case 81:
{ cbuff[clen++]='"'; }
break;
case 82:
{ cbuff[clen++]='\n'; }
break;
case 83:
{ cbuff[clen++]='\t'; }
break;
case 84:
{ cbuff[clen++]='\\'; }
break;
case 85:
	{ CADD; }
break;
case 86:
{ cbuff[clen++]=']'; }
break;
case 87:
{ BEGIN reg; cbuff[clen]=0; yylval = (int)tostring(cbuff);
		if (cflag==0) { RETURN(CCL); }
		else { RETURN(NCCL); } }
break;
case 88:
	{ yyerror("newline in character class"); lineno++; BEGIN A; }
break;
case 89:
	{ CADD; }
break;
case -1:
break;
default:
fprintf(yyout,"bad switch yylook %d",nstr);
} return(0); }
/* end of yylex */

/* @(#)awk.lx.l	2.1		*/
input()
{
	register c;
	extern char *lexprog;

	if (yysptr > yysbuf)
		c = U(*--yysptr);
	else if (yyin == NULL)
		c = *lexprog++;
	else
		c = getc(yyin);
	if (c == '\n')
		yylineno++;
	else if (c == EOF)
		c = 0;
	return(c);
}

startreg()
{
	BEGIN reg;
}
int yyvstop[] = {
0,

62,
0,

3,
62,
0,

35,
0,

10,
62,
0,

58,
62,
0,

59,
62,
0,

29,
62,
0,

62,
0,

62,
0,

62,
0,

62,
0,

62,
0,

62,
0,

62,
0,

31,
62,
0,

62,
0,

14,
62,
0,

27,
62,
0,

18,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

57,
62,
0,

62,
0,

33,
62,
0,

12,
62,
0,

3,
62,
0,

1,
35,
0,

59,
62,
0,

85,
0,

80,
0,

79,
85,
0,

85,
0,

89,
0,

88,
0,

89,
0,

87,
89,
0,

78,
0,

77,
0,

73,
78,
0,

70,
78,
0,

71,
78,
0,

67,
78,
0,

66,
78,
0,

69,
78,
0,

76,
78,
0,

65,
78,
0,

63,
78,
0,

78,
0,

72,
78,
0,

68,
78,
0,

61,
0,

60,
0,

11,
0,

13,
0,

29,
0,

28,
0,

26,
0,

9,
0,

24,
0,

20,
0,

22,
0,

21,
0,

23,
0,

31,
0,

25,
0,

31,
0,

31,
0,

34,
0,

15,
0,

16,
0,

17,
0,

19,
0,

57,
0,

57,
0,

57,
0,

30,
57,
0,

57,
0,

4,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

38,
57,
0,

50,
57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

5,
0,

32,
0,

2,
0,

81,
0,

84,
0,

82,
0,

83,
0,

86,
0,

64,
0,

75,
0,

75,
0,

31,
0,

57,
0,

7,
57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

55,
57,
0,

37,
57,
0,

57,
0,

57,
0,

54,
57,
0,

57,
0,

53,
57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

57,
0,

39,
57,
0,

41,
57,
0,

57,
0,

57,
0,

57,
0,

40,
57,
0,

57,
0,

57,
0,

57,
0,

56,
57,
0,

57,
0,

57,
0,

74,
0,

6,
57,
0,

57,
0,

42,
57,
0,

57,
0,

57,
0,

49,
57,
0,

57,
0,

44,
57,
0,

47,
57,
0,

57,
0,

57,
0,

36,
57,
0,

57,
0,

57,
0,

57,
0,

52,
57,
0,

45,
57,
0,

57,
0,

48,
57,
0,

8,
57,
0,

57,
0,

51,
57,
0,

46,
57,
0,

43,
57,
0,
0};
# define YYTYPE int
struct yywork { YYTYPE verify, advance; } yycrank[] = {
0,0,	0,0,	3,15,	0,0,	
7,61,	0,0,	0,0,	5,57,	
0,0,	13,79,	3,16,	3,17,	
7,61,	7,62,	30,97,	5,57,	
5,58,	13,79,	13,80,	39,107,	
0,0,	0,0,	52,125,	52,126,	
0,0,	0,0,	0,0,	54,127,	
0,0,	0,0,	0,0,	0,0,	
83,83,	0,0,	3,18,	3,19,	
3,20,	3,21,	3,22,	3,23,	
5,59,	23,86,	0,0,	3,24,	
3,25,	52,125,	3,26,	3,27,	
3,28,	3,29,	54,127,	7,61,	
6,59,	54,128,	5,57,	83,83,	
13,79,	25,88,	26,90,	0,0,	
3,30,	3,31,	3,32,	3,33,	
18,81,	22,85,	3,34,	3,35,	
7,61,	24,87,	3,36,	5,57,	
28,93,	13,79,	26,91,	25,89,	
31,98,	32,99,	35,103,	3,37,	
36,104,	3,38,	27,92,	27,92,	
27,92,	27,92,	27,92,	27,92,	
27,92,	27,92,	27,92,	27,92,	
37,105,	3,39,	38,106,	7,63,	
7,64,	103,140,	5,60,	3,40,	
3,41,	104,141,	3,42,	3,43,	
3,44,	44,113,	3,45,	4,54,	
4,55,	3,46,	6,60,	3,47,	
41,109,	3,48,	8,63,	8,64,	
3,49,	33,100,	33,101,	40,108,	
3,50,	43,112,	47,118,	48,119,	
50,123,	3,51,	3,52,	3,53,	
51,124,	18,82,	42,110,	4,18,	
4,19,	4,56,	4,21,	4,22,	
4,23,	75,135,	45,114,	46,116,	
4,24,	4,25,	42,111,	4,26,	
4,27,	4,28,	45,115,	11,65,	
106,142,	46,117,	63,131,	63,134,	
92,96,	108,143,	109,144,	11,65,	
11,66,	4,30,	4,31,	4,32,	
4,33,	49,120,	49,121,	110,145,	
4,35,	112,148,	49,122,	4,36,	
63,132,	113,149,	111,146,	116,152,	
56,128,	117,153,	63,133,	115,150,	
4,37,	111,147,	4,38,	118,154,	
56,128,	56,129,	11,67,	119,155,	
92,96,	60,130,	11,68,	11,69,	
11,70,	11,71,	4,39,	115,151,	
11,72,	11,73,	11,65,	121,158,	
4,40,	4,41,	120,156,	4,42,	
4,43,	4,44,	122,159,	4,45,	
120,157,	123,160,	4,46,	140,162,	
4,47,	11,74,	4,48,	11,65,	
21,83,	4,49,	142,163,	143,164,	
144,165,	4,50,	145,166,	56,128,	
146,167,	12,67,	4,51,	4,52,	
4,53,	12,68,	12,69,	12,70,	
12,71,	149,168,	150,169,	12,72,	
12,73,	152,170,	154,171,	21,83,	
56,128,	11,75,	11,76,	155,172,	
11,77,	156,173,	157,174,	60,131,	
158,175,	159,176,	160,177,	162,179,	
12,74,	163,180,	164,181,	21,84,	
21,84,	21,84,	21,84,	21,84,	
21,84,	21,84,	21,84,	21,84,	
21,84,	60,132,	165,182,	76,136,	
168,183,	169,184,	170,185,	60,133,	
172,186,	173,187,	11,78,	76,136,	
76,107,	174,188,	176,189,	177,190,	
12,75,	12,76,	29,94,	12,77,	
29,95,	29,95,	29,95,	29,95,	
29,95,	29,95,	29,95,	29,95,	
29,95,	29,95,	84,84,	84,84,	
84,84,	84,84,	84,84,	84,84,	
84,84,	84,84,	84,84,	84,84,	
180,191,	29,96,	182,192,	183,193,	
185,194,	186,195,	188,196,	189,197,	
191,198,	12,78,	76,137,	192,199,	
193,200,	196,201,	199,202,	0,0,	
0,0,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	76,136,	
0,0,	0,0,	0,0,	0,0,	
0,0,	29,96,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
0,0,	0,0,	0,0,	0,0,	
34,102,	0,0,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
34,102,	34,102,	34,102,	34,102,	
94,94,	94,94,	94,94,	94,94,	
94,94,	94,94,	94,94,	94,94,	
94,94,	94,94,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	96,138,	0,0,	96,138,	
0,0,	94,96,	96,139,	96,139,	
96,139,	96,139,	96,139,	96,139,	
96,139,	96,139,	96,139,	96,139,	
137,161,	137,161,	137,161,	137,161,	
137,161,	137,161,	137,161,	137,161,	
137,161,	137,161,	138,139,	138,139,	
138,139,	138,139,	138,139,	138,139,	
138,139,	138,139,	138,139,	138,139,	
0,0,	94,96,	161,178,	161,178,	
161,178,	161,178,	161,178,	161,178,	
161,178,	161,178,	161,178,	161,178,	
0,0};
struct yysvf yysvec[] = {
0,	0,	0,
yycrank+0,	0,		0,	
yycrank+0,	0,		0,	
yycrank+-1,	0,		0,	
yycrank+-98,	yysvec+3,	0,	
yycrank+-6,	0,		0,	
yycrank+-18,	yysvec+5,	0,	
yycrank+-3,	0,		0,	
yycrank+-22,	yysvec+7,	0,	
yycrank+0,	0,		0,	
yycrank+0,	0,		0,	
yycrank+-146,	0,		0,	
yycrank+-185,	yysvec+11,	0,	
yycrank+-8,	0,		0,	
yycrank+0,	yysvec+13,	0,	
yycrank+0,	0,		yyvstop+1,
yycrank+0,	0,		yyvstop+3,
yycrank+0,	0,		yyvstop+6,
yycrank+3,	0,		yyvstop+8,
yycrank+0,	0,		yyvstop+11,
yycrank+0,	0,		yyvstop+14,
yycrank+203,	0,		yyvstop+17,
yycrank+4,	0,		yyvstop+20,
yycrank+3,	0,		yyvstop+22,
yycrank+8,	0,		yyvstop+24,
yycrank+14,	0,		yyvstop+26,
yycrank+13,	0,		yyvstop+28,
yycrank+34,	0,		yyvstop+30,
yycrank+11,	0,		yyvstop+32,
yycrank+232,	0,		yyvstop+34,
yycrank+4,	0,		yyvstop+37,
yycrank+15,	0,		yyvstop+39,
yycrank+16,	0,		yyvstop+42,
yycrank+56,	0,		yyvstop+45,
yycrank+269,	0,		yyvstop+48,
yycrank+9,	yysvec+34,	yyvstop+51,
yycrank+2,	yysvec+34,	yyvstop+54,
yycrank+22,	yysvec+34,	yyvstop+57,
yycrank+12,	yysvec+34,	yyvstop+60,
yycrank+9,	0,		yyvstop+63,
yycrank+5,	yysvec+34,	yyvstop+65,
yycrank+1,	yysvec+34,	yyvstop+68,
yycrank+22,	yysvec+34,	yyvstop+71,
yycrank+10,	yysvec+34,	yyvstop+74,
yycrank+4,	yysvec+34,	yyvstop+77,
yycrank+36,	yysvec+34,	yyvstop+80,
yycrank+38,	yysvec+34,	yyvstop+83,
yycrank+21,	yysvec+34,	yyvstop+86,
yycrank+9,	yysvec+34,	yyvstop+89,
yycrank+49,	yysvec+34,	yyvstop+92,
yycrank+20,	yysvec+34,	yyvstop+95,
yycrank+4,	0,		yyvstop+98,
yycrank+13,	0,		yyvstop+100,
yycrank+0,	0,		yyvstop+103,
yycrank+18,	0,		yyvstop+106,
yycrank+0,	0,		yyvstop+109,
yycrank+-171,	0,		yyvstop+112,
yycrank+0,	0,		yyvstop+115,
yycrank+0,	0,		yyvstop+117,
yycrank+0,	0,		yyvstop+119,
yycrank+151,	0,		yyvstop+122,
yycrank+0,	0,		yyvstop+124,
yycrank+0,	0,		yyvstop+126,
yycrank+58,	0,		yyvstop+128,
yycrank+0,	0,		yyvstop+130,
yycrank+0,	0,		yyvstop+133,
yycrank+0,	0,		yyvstop+135,
yycrank+0,	0,		yyvstop+137,
yycrank+0,	0,		yyvstop+140,
yycrank+0,	0,		yyvstop+143,
yycrank+0,	0,		yyvstop+146,
yycrank+0,	0,		yyvstop+149,
yycrank+0,	0,		yyvstop+152,
yycrank+0,	0,		yyvstop+155,
yycrank+0,	0,		yyvstop+158,
yycrank+43,	0,		yyvstop+161,
yycrank+-262,	0,		yyvstop+164,
yycrank+0,	0,		yyvstop+166,
yycrank+0,	0,		yyvstop+169,
yycrank+0,	0,		yyvstop+172,
yycrank+0,	0,		yyvstop+174,
yycrank+0,	0,		yyvstop+176,
yycrank+0,	0,		yyvstop+178,
yycrank+23,	0,		yyvstop+180,
yycrank+242,	0,		yyvstop+182,
yycrank+0,	0,		yyvstop+184,
yycrank+0,	0,		yyvstop+186,
yycrank+0,	0,		yyvstop+188,
yycrank+0,	0,		yyvstop+190,
yycrank+0,	0,		yyvstop+192,
yycrank+0,	0,		yyvstop+194,
yycrank+0,	0,		yyvstop+196,
yycrank+83,	yysvec+27,	yyvstop+198,
yycrank+0,	0,		yyvstop+200,
yycrank+344,	0,		yyvstop+202,
yycrank+0,	yysvec+29,	yyvstop+204,
yycrank+366,	0,		0,	
yycrank+0,	0,		yyvstop+206,
yycrank+0,	0,		yyvstop+208,
yycrank+0,	0,		yyvstop+210,
yycrank+0,	0,		yyvstop+212,
yycrank+0,	0,		yyvstop+214,
yycrank+0,	yysvec+34,	yyvstop+216,
yycrank+26,	yysvec+34,	yyvstop+218,
yycrank+33,	yysvec+34,	yyvstop+220,
yycrank+0,	yysvec+34,	yyvstop+222,
yycrank+69,	yysvec+34,	yyvstop+225,
yycrank+0,	0,		yyvstop+227,
yycrank+52,	yysvec+34,	yyvstop+229,
yycrank+44,	yysvec+34,	yyvstop+231,
yycrank+48,	yysvec+34,	yyvstop+233,
yycrank+65,	yysvec+34,	yyvstop+235,
yycrank+51,	yysvec+34,	yyvstop+237,
yycrank+53,	yysvec+34,	yyvstop+239,
yycrank+0,	yysvec+34,	yyvstop+241,
yycrank+75,	yysvec+34,	yyvstop+244,
yycrank+61,	yysvec+34,	yyvstop+247,
yycrank+70,	yysvec+34,	yyvstop+249,
yycrank+59,	yysvec+34,	yyvstop+251,
yycrank+78,	yysvec+34,	yyvstop+253,
yycrank+90,	yysvec+34,	yyvstop+255,
yycrank+81,	yysvec+34,	yyvstop+257,
yycrank+104,	yysvec+34,	yyvstop+259,
yycrank+100,	yysvec+34,	yyvstop+261,
yycrank+0,	0,		yyvstop+263,
yycrank+0,	yysvec+52,	0,	
yycrank+0,	0,		yyvstop+265,
yycrank+0,	yysvec+54,	0,	
yycrank+0,	yysvec+56,	0,	
yycrank+0,	0,		yyvstop+267,
yycrank+0,	0,		yyvstop+269,
yycrank+0,	0,		yyvstop+271,
yycrank+0,	0,		yyvstop+273,
yycrank+0,	0,		yyvstop+275,
yycrank+0,	0,		yyvstop+277,
yycrank+0,	0,		yyvstop+279,
yycrank+0,	0,		yyvstop+281,
yycrank+376,	0,		yyvstop+283,
yycrank+386,	0,		0,	
yycrank+0,	yysvec+138,	yyvstop+285,
yycrank+134,	yysvec+34,	yyvstop+287,
yycrank+0,	yysvec+34,	yyvstop+289,
yycrank+143,	yysvec+34,	yyvstop+292,
yycrank+118,	yysvec+34,	yyvstop+294,
yycrank+100,	yysvec+34,	yyvstop+296,
yycrank+117,	yysvec+34,	yyvstop+298,
yycrank+104,	yysvec+34,	yyvstop+300,
yycrank+0,	yysvec+34,	yyvstop+302,
yycrank+0,	yysvec+34,	yyvstop+305,
yycrank+121,	yysvec+34,	yyvstop+308,
yycrank+129,	yysvec+34,	yyvstop+310,
yycrank+0,	yysvec+34,	yyvstop+312,
yycrank+130,	yysvec+34,	yyvstop+315,
yycrank+0,	yysvec+34,	yyvstop+317,
yycrank+118,	yysvec+34,	yyvstop+320,
yycrank+129,	yysvec+34,	yyvstop+322,
yycrank+136,	yysvec+34,	yyvstop+324,
yycrank+137,	yysvec+34,	yyvstop+326,
yycrank+128,	yysvec+34,	yyvstop+328,
yycrank+130,	yysvec+34,	yyvstop+330,
yycrank+138,	yysvec+34,	yyvstop+332,
yycrank+398,	0,		0,	
yycrank+169,	yysvec+34,	yyvstop+334,
yycrank+180,	yysvec+34,	yyvstop+336,
yycrank+143,	yysvec+34,	yyvstop+338,
yycrank+157,	yysvec+34,	yyvstop+340,
yycrank+0,	yysvec+34,	yyvstop+342,
yycrank+0,	yysvec+34,	yyvstop+345,
yycrank+159,	yysvec+34,	yyvstop+348,
yycrank+145,	yysvec+34,	yyvstop+350,
yycrank+150,	yysvec+34,	yyvstop+352,
yycrank+0,	yysvec+34,	yyvstop+354,
yycrank+152,	yysvec+34,	yyvstop+357,
yycrank+153,	yysvec+34,	yyvstop+359,
yycrank+163,	yysvec+34,	yyvstop+361,
yycrank+0,	yysvec+34,	yyvstop+363,
yycrank+158,	yysvec+34,	yyvstop+366,
yycrank+174,	yysvec+34,	yyvstop+368,
yycrank+0,	0,		yyvstop+370,
yycrank+0,	yysvec+34,	yyvstop+372,
yycrank+222,	yysvec+34,	yyvstop+375,
yycrank+0,	yysvec+34,	yyvstop+377,
yycrank+192,	yysvec+34,	yyvstop+380,
yycrank+193,	yysvec+34,	yyvstop+382,
yycrank+0,	yysvec+34,	yyvstop+384,
yycrank+200,	yysvec+34,	yyvstop+387,
yycrank+203,	yysvec+34,	yyvstop+389,
yycrank+0,	yysvec+34,	yyvstop+392,
yycrank+190,	yysvec+34,	yyvstop+395,
yycrank+193,	yysvec+34,	yyvstop+397,
yycrank+0,	yysvec+34,	yyvstop+399,
yycrank+240,	yysvec+34,	yyvstop+402,
yycrank+194,	yysvec+34,	yyvstop+404,
yycrank+211,	yysvec+34,	yyvstop+406,
yycrank+0,	yysvec+34,	yyvstop+408,
yycrank+0,	yysvec+34,	yyvstop+411,
yycrank+211,	yysvec+34,	yyvstop+414,
yycrank+0,	yysvec+34,	yyvstop+416,
yycrank+0,	yysvec+34,	yyvstop+419,
yycrank+213,	yysvec+34,	yyvstop+422,
yycrank+0,	yysvec+34,	yyvstop+424,
yycrank+0,	yysvec+34,	yyvstop+427,
yycrank+0,	yysvec+34,	yyvstop+430,
0,	0,	0};
struct yywork *yytop = yycrank+455;
struct yysvf *yybgin = yysvec+1;
char yymatch[] = {
00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
'0' ,'0' ,01  ,01  ,01  ,01  ,01  ,01  ,
01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,'A' ,
01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,01  ,
0};
char yyextra[] = {
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0};
/*	@(#)ncform	1.2	*/
int yylineno =1;
# define YYU(x) x
# define NLSTATE yyprevious=YYNEWLINE
char yytext[YYLMAX];
struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
char yysbuf[YYLMAX];
char *yysptr = yysbuf;
int *yyfnd;
extern struct yysvf *yyestate;
int yyprevious = YYNEWLINE;
yylook(){
	register struct yysvf *yystate, **lsp;
	register struct yywork *yyt;
	struct yysvf *yyz;
	int yych, yyfirst;
	struct yywork *yyr;
# ifdef LEXDEBUG
	int debug;
# endif
	char *yylastch;
	/* start off machines */
# ifdef LEXDEBUG
	debug = 0;
# endif
	yyfirst=1;
	if (!yymorfg)
		yylastch = yytext;
	else {
		yymorfg=0;
		yylastch = yytext+yyleng;
		}
	for(;;){
		lsp = yylstate;
		yyestate = yystate = yybgin;
		if (yyprevious==YYNEWLINE) yystate++;
		for (;;){
# ifdef LEXDEBUG
			if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
# endif
			yyt = yystate->yystoff;
			if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
				yyz = yystate->yyother;
				if(yyz == 0)break;
				if(yyz->yystoff == yycrank)break;
				}
			*yylastch++ = yych = input();
			yyfirst=0;
		tryagain:
# ifdef LEXDEBUG
			if(debug){
				fprintf(yyout,"char ");
				allprint(yych);
				putchar('\n');
				}
# endif
			yyr = yyt;
			if ( (int)yyt > (int)yycrank){
				yyt = yyr + yych;
				if (yyt <= yytop && yyt->verify+yysvec == yystate){
					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
						{unput(*--yylastch);break;}
					*lsp++ = yystate = yyt->advance+yysvec;
					goto contin;
					}
				}
# ifdef YYOPTIM
			else if((int)yyt < (int)yycrank) {		/* r < yycrank */
				yyt = yyr = yycrank+(yycrank-yyt);
# ifdef LEXDEBUG
				if(debug)fprintf(yyout,"compressed state\n");
# endif
				yyt = yyt + yych;
				if(yyt <= yytop && yyt->verify+yysvec == yystate){
					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
						{unput(*--yylastch);break;}
					*lsp++ = yystate = yyt->advance+yysvec;
					goto contin;
					}
				yyt = yyr + YYU(yymatch[yych]);
# ifdef LEXDEBUG
				if(debug){
					fprintf(yyout,"try fall back character ");
					allprint(YYU(yymatch[yych]));
					putchar('\n');
					}
# endif
				if(yyt <= yytop && yyt->verify+yysvec == yystate){
					if(yyt->advance+yysvec == YYLERR)	/* error transition */
						{unput(*--yylastch);break;}
					*lsp++ = yystate = yyt->advance+yysvec;
					goto contin;
					}
				}
			if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
# ifdef LEXDEBUG
				if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
# endif
				goto tryagain;
				}
# endif
			else
				{unput(*--yylastch);break;}
		contin:
# ifdef LEXDEBUG
			if(debug){
				fprintf(yyout,"state %d char ",yystate-yysvec-1);
				allprint(yych);
				putchar('\n');
				}
# endif
			;
			}
# ifdef LEXDEBUG
		if(debug){
			fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
			allprint(yych);
			putchar('\n');
			}
# endif
		while (lsp-- > yylstate){
			*yylastch-- = 0;
			if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
				yyolsp = lsp;
				if(yyextra[*yyfnd]){		/* must backup */
					while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
						lsp--;
						unput(*yylastch--);
						}
					}
				yyprevious = YYU(*yylastch);
				yylsp = lsp;
				yyleng = yylastch-yytext+1;
				yytext[yyleng] = 0;
# ifdef LEXDEBUG
				if(debug){
					fprintf(yyout,"\nmatch ");
					sprint(yytext);
					fprintf(yyout," action %d\n",*yyfnd);
					}
# endif
				return(*yyfnd++);
				}
			unput(*yylastch);
			}
		if (yytext[0] == 0  /* && feof(yyin) */)
			{
			yysptr=yysbuf;
			return(0);
			}
		yyprevious = yytext[0] = input();
		if (yyprevious>0)
			output(yyprevious);
		yylastch=yytext;
# ifdef LEXDEBUG
		if(debug)putchar('\n');
# endif
		}
	}
yyback(p, m)
	int *p;
{
if (p==0) return(0);
while (*p)
	{
	if (*p++ == m)
		return(1);
	}
return(0);
}
	/* the following are only used in the lex library */
yyinput(){
	return(input());
	}
yyoutput(c)
  int c; {
	output(c);
	}
yyunput(c)
   int c; {
	unput(c);
	}
