diff options
| author | vvvv <[email protected]> | 2023-07-31 18:21:04 +0300 | 
|---|---|---|
| committer | vvvv <[email protected]> | 2023-07-31 18:21:04 +0300 | 
| commit | dec41c40e51aa407edef81a3c566a5a15780fc49 (patch) | |
| tree | 4f197b596b32f35eca368121f0dff913419da9af /contrib/tools/ragel5/redfsm/xmlparse.cpp | |
| parent | 3ca8b54c96e09eb2b65be7f09675623438d559c7 (diff) | |
YQL-16239 Move purecalc to public
Diffstat (limited to 'contrib/tools/ragel5/redfsm/xmlparse.cpp')
| -rw-r--r-- | contrib/tools/ragel5/redfsm/xmlparse.cpp | 3549 | 
1 files changed, 3549 insertions, 0 deletions
diff --git a/contrib/tools/ragel5/redfsm/xmlparse.cpp b/contrib/tools/ragel5/redfsm/xmlparse.cpp new file mode 100644 index 00000000000..6da8c50e91f --- /dev/null +++ b/contrib/tools/ragel5/redfsm/xmlparse.cpp @@ -0,0 +1,3549 @@ +/* Automatically generated by Kelbt from "xmlparse.kl". + * + * Parts of this file are copied from Kelbt source covered by the GNU + * GPL. As a special exception, you may use the parts of this file copied + * from Kelbt source without restriction. The remainder is derived from + * "xmlparse.kl" and inherits the copyright status of that file. + */ + +#line 1 "xmlparse.kl" +/* + *  Copyright 2001-2007 Adrian Thurston <[email protected]> + */ + +/*  This file is part of Ragel. + * + *  Ragel is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + *  + *  Ragel is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + *  + *  You should have received a copy of the GNU General Public License + *  along with Ragel; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  + */ + +#include "xmlparse.h" +#include "common.h" +#include "gendata.h" +#include <iostream> + +#include <stdlib.h> +//#include <malloc.h> + +using std::cout; +using std::ostream; +using std::istream; +using std::cerr; +using std::endl; + +Key readKey( char *td, char **end ); +long readOffsetPtr( char *td, char **end ); +unsigned long readLength( char *td ); + +#line 117 "xmlparse.kh" +#line 120 "xmlparse.kh" +#line 163 "xmlparse.kh" +#line 846 "xmlparse.kl" + + +#line 54 "xmlparse.cpp" +struct Parser_Lel_inline_item_type +{ +#line 499 "xmlparse.kl" + +	InlineItem *inlineItem; + + +#line 61 "xmlparse.cpp" +}; + +struct Parser_Lel_inline_list +{ +#line 480 "xmlparse.kl" + +	InlineList *inlineList; + + +#line 71 "xmlparse.cpp" +}; + +struct Parser_Lel_lm_action_list +{ +#line 716 "xmlparse.kl" + +	InlineList *inlineList; + + +#line 81 "xmlparse.cpp" +}; + +struct Parser_Lel_tag_arg +{ +#line 256 "xmlparse.kl" + +	char *option; + + +#line 91 "xmlparse.cpp" +}; + +struct Parser_Lel_tag_write_head +{ +#line 220 "xmlparse.kl" + +	InputLoc loc; + + +#line 101 "xmlparse.cpp" +}; + +union Parser_UserData +{ +	struct Parser_Lel_inline_item_type inline_item_type; +	struct Parser_Lel_inline_list inline_list; +	struct Parser_Lel_lm_action_list lm_action_list; +	struct Parser_Lel_tag_arg tag_arg; +	struct Parser_Lel_tag_write_head tag_write_head; +	struct Token token; +}; + +struct Parser_LangEl +{ +	char *file; +	int line; +	int type; +	int reduction; +	int state; +	union Parser_UserData user; +	unsigned int retry; +	struct Parser_LangEl *next, *child; +}; + +#line 127 "xmlparse.cpp" +unsigned int Parser_startState = 0; + +short Parser_indicies[] = { +	142, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	140, 139, 0, 1, 283, 144, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	144, 144, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 144, -1, -1, -1, -1, -1,  +	-1, -1, -1, 2, 146, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 151,  +	146, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 146, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 3, 143, -1, -1, -1,  +	4, 5, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 6, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 169, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 145, 147, 148, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 7, 153, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 153, -1, -1, -1, -1,  +	-1, -1, 153, -1, 153, -1, -1, -1,  +	-1, -1, -1, -1, 153, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	153, 153, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 8,  +	141, 9, 171, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 171, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 10, 11, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 174, -1, -1,  +	-1, -1, -1, -1, 12, -1, 13, -1,  +	-1, -1, -1, -1, -1, -1, 16, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 15, 14, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 152, 154, 155, 156, 157, 158,  +	159, -1, -1, -1, -1, -1, -1, 17,  +	149, 18, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 19, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 170, 150, 20, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 217, -1, -1, -1, -1,  +	-1, -1, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, -1, 217, 217, 217, 217,  +	217, 217, 217, -1, -1, -1, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 21, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 217, -1, -1, -1, -1,  +	-1, -1, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, -1, 217, 217, 217, 217,  +	217, 217, 217, -1, -1, -1, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 24, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 217, -1, -1, -1, -1,  +	-1, -1, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, -1, 217, 217, 217, 217,  +	217, 217, 217, -1, -1, -1, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 23, 162, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 162, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 22, 176, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 176, -1, -1, -1, -1, 176, 176,  +	176, 176, -1, -1, -1, -1, -1, -1,  +	176, -1, 176, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	25, 168, 26, 164, 27, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 52, -1, -1, -1, -1, -1, -1,  +	28, 29, 30, 31, 32, 33, 34, 35,  +	37, 38, 39, 40, 41, 42, 43, 44,  +	45, -1, 53, 47, 51, 50, 48, 46,  +	49, -1, -1, -1, 36, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 216, -1, 218, 219,  +	220, 221, 222, 223, 224, 225, 226, 227,  +	228, 229, 230, 231, 232, 233, 234, 235,  +	236, 237, 238, 239, 240, 241, 242, 243,  +	54, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 55, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 161, 56,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 52, -1, -1, -1,  +	-1, -1, -1, 28, 29, 30, 31, 32,  +	33, 34, 35, 37, 38, 39, 40, 41,  +	42, 43, 44, 45, -1, 53, 47, 51,  +	50, 48, 46, 49, -1, -1, -1, 36,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 216,  +	-1, 218, 219, 220, 221, 222, 223, 224,  +	225, 226, 227, 228, 229, 230, 231, 232,  +	233, 234, 235, 236, 237, 238, 239, 240,  +	241, 242, 243, 57, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	52, -1, -1, -1, -1, -1, -1, 28,  +	29, 30, 31, 32, 33, 34, 35, 37,  +	38, 39, 40, 41, 42, 43, 44, 45,  +	-1, 53, 47, 51, 50, 48, 46, 49,  +	-1, -1, -1, 36, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 216, -1, 218, 219, 220,  +	221, 222, 223, 224, 225, 226, 227, 228,  +	229, 230, 231, 232, 233, 234, 235, 236,  +	237, 238, 239, 240, 241, 242, 243, 58,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 191, -1, -1, -1,  +	-1, 59, 60, 212, 274, -1, -1, -1,  +	-1, -1, -1, 61, -1, 279, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 175, 177, 178, 179,  +	180, 181, 182, 183, -1, -1, 62, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 63, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 64, -1, -1,  +	65, 172, 165, 67, 68, 69, 70, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 217, -1, -1, -1,  +	-1, -1, -1, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, -1, 217, 217, 217,  +	217, 217, 217, 217, -1, -1, -1, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 71, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 217, -1, -1, -1,  +	-1, -1, -1, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, -1, 217, 217, 217,  +	217, 217, 217, 217, -1, -1, -1, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 72, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 217, -1, -1, -1,  +	-1, -1, -1, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, -1, 217, 217, 217,  +	217, 217, 217, 217, -1, -1, -1, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 73, 74,  +	91, 75, 76, 77, 217, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 217, -1, -1, -1, -1, -1, -1,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, -1, 217, 217, 217, 217, 217, 217,  +	217, -1, -1, -1, 217, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 78, 79, 217, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 217, -1, -1, -1, -1, -1,  +	-1, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, -1, 217, 217, 217, 217, 217,  +	217, 217, -1, -1, -1, 217, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 80, 81, 82, 83,  +	89, 85, 88, 90, 87, 86, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 217, -1, -1, -1, -1,  +	-1, -1, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, -1, 217, 217, 217, 217,  +	217, 217, 217, -1, -1, -1, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 66, 271, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 271, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 84, 160, 92, 167, 166, 173,  +	93, 94, 188, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 188, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 95,  +	193, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 193, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	96, 214, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 214,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 97,  +	276, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 276,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 98,  +	100, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 99, 281, 101, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 52, -1, -1, -1, -1, -1,  +	-1, 28, 29, 30, 31, 32, 33, 34,  +	35, 37, 38, 39, 40, 41, 42, 43,  +	44, 45, -1, 53, 47, 51, 50, 48,  +	46, 49, -1, -1, -1, 36, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 216, -1, 218,  +	219, 220, 221, 222, 223, 224, 225, 226,  +	227, 228, 229, 230, 231, 232, 233, 234,  +	235, 236, 237, 238, 239, 240, 241, 242,  +	243, 244, 245, 246, 247, 102, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 52, -1, -1, -1, -1, -1,  +	-1, 28, 29, 30, 31, 32, 33, 34,  +	35, 37, 38, 39, 40, 41, 42, 43,  +	44, 45, -1, 53, 47, 51, 50, 48,  +	46, 49, -1, -1, -1, 36, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 216, -1, 218,  +	219, 220, 221, 222, 223, 224, 225, 226,  +	227, 228, 229, 230, 231, 232, 233, 234,  +	235, 236, 237, 238, 239, 240, 241, 242,  +	243, 103, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 52, -1,  +	-1, -1, -1, -1, -1, 28, 29, 30,  +	31, 32, 33, 34, 35, 37, 38, 39,  +	40, 41, 42, 43, 44, 45, -1, 53,  +	47, 51, 50, 48, 46, 49, -1, -1,  +	-1, 36, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 216, -1, 218, 219, 220, 221, 222,  +	223, 224, 225, 226, 227, 228, 229, 230,  +	231, 232, 233, 234, 235, 236, 237, 238,  +	239, 240, 241, 242, 243, 104, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 52, -1, -1, -1, -1, -1,  +	-1, 28, 29, 30, 31, 32, 33, 34,  +	35, 37, 38, 39, 40, 41, 42, 43,  +	44, 45, -1, 53, 47, 51, 50, 48,  +	46, 49, -1, -1, -1, 36, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 216, -1, 218,  +	219, 220, 221, 222, 223, 224, 225, 226,  +	227, 228, 229, 230, 231, 232, 233, 234,  +	235, 236, 237, 238, 239, 240, 241, 242,  +	243, 251, 253, 254, 255, 105, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 52, -1, -1, -1, -1, -1,  +	-1, 28, 29, 30, 31, 32, 33, 34,  +	35, 37, 38, 39, 40, 41, 42, 43,  +	44, 45, -1, 53, 47, 51, 50, 48,  +	46, 49, -1, -1, -1, 36, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 216, -1, 218,  +	219, 220, 221, 222, 223, 224, 225, 226,  +	227, 228, 229, 230, 231, 232, 233, 234,  +	235, 236, 237, 238, 239, 240, 241, 242,  +	243, 257, 106, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 52,  +	-1, -1, -1, -1, -1, -1, 28, 29,  +	30, 31, 32, 33, 34, 35, 37, 38,  +	39, 40, 41, 42, 43, 44, 45, -1,  +	53, 47, 51, 50, 48, 46, 49, -1,  +	-1, -1, 36, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 216, -1, 218, 219, 220, 221,  +	222, 223, 224, 225, 226, 227, 228, 229,  +	230, 231, 232, 233, 234, 235, 236, 237,  +	238, 239, 240, 241, 242, 243, 259, 260,  +	261, 107, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 108, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 270, 263,  +	267, 266, 264, 262, 265, 252, 163, 184,  +	185, 109, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 110, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 187,  +	111, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 112, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 192, 113, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	114, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 213, 115, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 116, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 275, 118, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 100, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 280, 117,  +	268, 248, 249, 250, 256, 258, 269, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 217, -1, -1, -1,  +	-1, -1, -1, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, -1, 217, 217, 217,  +	217, 217, 217, 217, -1, -1, -1, 217,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 119, 186,  +	120, 190, 196, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, 196, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 196, -1, -1,  +	-1, -1, 196, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, 121, 211, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 217, -1, -1, -1, -1,  +	-1, -1, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, 217, 217, 217, 217, 217,  +	217, 217, 217, -1, 217, 217, 217, 217,  +	217, 217, 217, -1, -1, -1, 217, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, 122, 273, 123,  +	282, 278, 124, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 52,  +	-1, -1, -1, -1, -1, -1, 28, 29,  +	30, 31, 32, 33, 34, 35, 37, 38,  +	39, 40, 41, 42, 43, 44, 45, -1,  +	53, 47, 51, 50, 48, 46, 49, -1,  +	-1, -1, 36, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 216, -1, 218, 219, 220, 221,  +	222, 223, 224, 225, 226, 227, 228, 229,  +	230, 231, 232, 233, 234, 235, 236, 237,  +	238, 239, 240, 241, 242, 243, 189, 125,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 207, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 126, -1, -1, -1, -1, 202,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 195, 197, 198, 199, 127, -1,  +	-1, 128, 129, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 52,  +	-1, -1, -1, -1, -1, -1, 28, 29,  +	30, 31, 32, 33, 34, 35, 37, 38,  +	39, 40, 41, 42, 43, 44, 45, -1,  +	53, 47, 51, 50, 48, 46, 49, -1,  +	-1, -1, 36, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 216, -1, 218, 219, 220, 221,  +	222, 223, 224, 225, 226, 227, 228, 229,  +	230, 231, 232, 233, 234, 235, 236, 237,  +	238, 239, 240, 241, 242, 243, 277, 272,  +	194, 130, 204, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 204, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 131, 209, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 209, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, 132, 215,  +	200, 133, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 134, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, 203, 135, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, 136, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, -1,  +	-1, -1, -1, -1, -1, -1, -1, 208,  +	201, 137, 206, 138, 205, 210,  +}; + +unsigned short Parser_keys[] = { +	129, 188, 185, 185, 47, 189, 47, 195,  +	47, 207, 47, 196, 129, 129, 47, 47,  +	47, 208, 47, 210, 131, 131, 47, 209,  +	130, 130, 47, 47, 47, 206, 47, 206,  +	47, 206, 47, 204, 47, 211, 180, 180,  +	47, 47, 143, 143, 47, 266, 47, 205,  +	47, 266, 47, 266, 47, 272, 184, 184,  +	145, 145, 47, 47, 47, 47, 47, 47,  +	47, 47, 47, 206, 47, 206, 47, 206,  +	47, 47, 47, 47, 47, 47, 47, 47,  +	47, 47, 47, 206, 47, 47, 47, 206,  +	47, 47, 47, 47, 47, 47, 47, 47,  +	47, 47, 47, 47, 47, 47, 47, 47,  +	47, 47, 47, 206, 47, 267, 153, 153,  +	47, 47, 181, 181, 182, 182, 136, 136,  +	47, 47, 47, 47, 47, 220, 47, 223,  +	47, 237, 47, 270, 150, 274, 47, 266,  +	155, 155, 156, 156, 157, 157, 158, 158,  +	47, 266, 47, 266, 47, 266, 162, 162,  +	163, 163, 164, 164, 165, 165, 47, 266,  +	167, 167, 47, 266, 169, 169, 170, 170,  +	171, 171, 47, 268, 174, 174, 175, 175,  +	176, 176, 177, 177, 178, 178, 179, 179,  +	183, 183, 154, 154, 137, 137, 138, 138,  +	47, 221, 47, 224, 47, 238, 47, 271,  +	47, 274, 47, 47, 148, 148, 159, 159,  +	160, 160, 161, 161, 166, 166, 168, 168,  +	173, 173, 47, 206, 147, 147, 47, 47,  +	132, 132, 47, 225, 139, 139, 47, 206,  +	140, 140, 47, 47, 150, 150, 149, 149,  +	47, 266, 171, 171, 47, 233, 47, 266,  +	142, 142, 148, 148, 133, 133, 47, 47,  +	47, 231, 47, 234, 141, 141, 146, 146,  +	47, 232, 47, 235, 151, 151, 47, 47,  +	134, 134, 47, 47, 152, 152, 135, 135,  +	0, 0 +}; + +unsigned int Parser_offsets[] = { +	0, 60, 61, 204, 353, 514, 664, 665,  +	666, 828, 992, 993, 1156, 1157, 1158, 1318,  +	1478, 1638, 1796, 1961, 1962, 1963, 1964, 2184,  +	2343, 2563, 2783, 3009, 3010, 3011, 3012, 3013,  +	3014, 3015, 3175, 3335, 3495, 3496, 3497, 3498,  +	3499, 3500, 3660, 3661, 3821, 3822, 3823, 3824,  +	3825, 3826, 3827, 3828, 3829, 3830, 3990, 4211,  +	4212, 4213, 4214, 4215, 4216, 4217, 4218, 4392,  +	4569, 4760, 4984, 5109, 5329, 5330, 5331, 5332,  +	5333, 5553, 5773, 5993, 5994, 5995, 5996, 5997,  +	6217, 6218, 6438, 6439, 6440, 6441, 6663, 6664,  +	6665, 6666, 6667, 6668, 6669, 6670, 6671, 6672,  +	6673, 6848, 7026, 7218, 7443, 7671, 7672, 7673,  +	7674, 7675, 7676, 7677, 7678, 7679, 7839, 7840,  +	7841, 7842, 8021, 8022, 8182, 8183, 8184, 8185,  +	8186, 8406, 8407, 8594, 8814, 8815, 8816, 8817,  +	8818, 9003, 9191, 9192, 9193, 9379, 9568, 9569,  +	9570, 9571, 9572, 9573, 9574 +}; + +unsigned short Parser_targs[] = { +	1, 2, 3, 4, 5, 6, 7, 8,  +	9, 10, 11, 12, 13, 14, 15, 16,  +	17, 18, 19, 20, 21, 22, 23, 24,  +	25, 26, 27, 28, 29, 30, 31, 32,  +	33, 34, 35, 36, 37, 38, 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, 84, 85, 86, 87, 88,  +	89, 90, 91, 92, 93, 94, 95, 96,  +	97, 98, 99, 100, 101, 102, 103, 104,  +	105, 106, 107, 108, 109, 110, 111, 112,  +	113, 114, 115, 116, 117, 118, 119, 120,  +	121, 122, 123, 124, 125, 126, 127, 128,  +	129, 130, 131, 132, 133, 134, 135, 136,  +	137, 138, 139, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140, 140, 140, 140, 140,  +	140, 140, 140, 140 +}; + +unsigned int Parser_actInds[] = { +	0, 2, 4, 6, 8, 10, 12, 14,  +	16, 18, 20, 22, 24, 26, 28, 30,  +	32, 34, 36, 38, 40, 42, 44, 46,  +	48, 50, 52, 54, 56, 58, 60, 62,  +	64, 66, 68, 70, 72, 74, 76, 78,  +	80, 82, 84, 86, 88, 90, 92, 94,  +	96, 98, 100, 102, 104, 106, 108, 110,  +	112, 114, 116, 118, 120, 122, 124, 126,  +	128, 130, 132, 134, 136, 138, 140, 142,  +	144, 146, 148, 150, 152, 154, 156, 158,  +	160, 162, 164, 166, 168, 170, 172, 174,  +	176, 178, 180, 182, 184, 186, 188, 190,  +	192, 194, 196, 198, 200, 202, 204, 206,  +	208, 210, 212, 214, 216, 218, 220, 222,  +	224, 226, 228, 230, 232, 234, 236, 238,  +	240, 242, 244, 246, 248, 250, 252, 254,  +	256, 258, 260, 262, 264, 266, 268, 270,  +	272, 274, 276, 278, 280, 282, 284, 286,  +	288, 290, 292, 294, 296, 298, 300, 302,  +	304, 306, 308, 310, 312, 314, 316, 318,  +	320, 322, 324, 326, 328, 330, 332, 334,  +	336, 338, 340, 342, 344, 346, 348, 350,  +	352, 354, 356, 358, 360, 362, 364, 366,  +	368, 370, 372, 374, 376, 378, 380, 382,  +	384, 386, 388, 390, 392, 394, 396, 398,  +	400, 402, 404, 406, 408, 410, 412, 414,  +	416, 418, 420, 422, 424, 426, 428, 430,  +	432, 434, 436, 438, 440, 442, 444, 446,  +	448, 450, 452, 454, 456, 458, 460, 462,  +	464, 466, 468, 470, 472, 474, 476, 478,  +	480, 482, 484, 486, 488, 490, 492, 494,  +	496, 498, 500, 502, 504, 506, 508, 510,  +	512, 514, 516, 518, 520, 522, 524, 526,  +	528, 530, 532, 534, 536, 538, 540, 542,  +	544, 546, 548, 550, 552, 554, 556, 558,  +	560, 562, 564, 566 +}; + +unsigned int Parser_actions[] = { +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 1, 0,  +	1, 0, 1, 0, 1, 0, 3, 0,  +	6, 0, 11, 0, 15, 0, 19, 0,  +	22, 0, 27, 0, 30, 0, 35, 0,  +	39, 0, 43, 0, 47, 0, 51, 0,  +	55, 0, 58, 0, 63, 0, 67, 0,  +	71, 0, 75, 0, 79, 0, 83, 0,  +	87, 0, 91, 0, 94, 0, 99, 0,  +	103, 0, 107, 0, 111, 0, 115, 0,  +	119, 0, 123, 0, 127, 0, 130, 0,  +	135, 0, 139, 0, 143, 0, 147, 0,  +	150, 0, 155, 0, 159, 0, 163, 0,  +	167, 0, 171, 0, 175, 0, 179, 0,  +	183, 0, 187, 0, 191, 0, 195, 0,  +	198, 0, 203, 0, 207, 0, 211, 0,  +	215, 0, 218, 0, 223, 0, 227, 0,  +	230, 0, 235, 0, 239, 0, 243, 0,  +	247, 0, 251, 0, 255, 0, 259, 0,  +	262, 0, 267, 0, 271, 0, 275, 0,  +	279, 0, 282, 0, 287, 0, 291, 0,  +	295, 0, 299, 0, 302, 0, 307, 0,  +	311, 0, 314, 0, 319, 0, 323, 0,  +	327, 0, 331, 0, 335, 0, 339, 0,  +	343, 0, 347, 0, 351, 0, 355, 0,  +	359, 0, 363, 0, 367, 0, 371, 0,  +	375, 0, 379, 0, 383, 0, 387, 0,  +	391, 0, 395, 0, 399, 0, 403, 0,  +	407, 0, 411, 0, 415, 0, 419, 0,  +	423, 0, 427, 0, 431, 0, 435, 0,  +	439, 0, 443, 0, 447, 0, 451, 0,  +	455, 0, 459, 0, 463, 0, 467, 0,  +	471, 0, 475, 0, 479, 0, 483, 0,  +	487, 0, 491, 0, 495, 0, 499, 0,  +	503, 0, 507, 0, 511, 0, 515, 0,  +	519, 0, 523, 0, 527, 0, 530, 0,  +	535, 0, 539, 0, 543, 0, 547, 0,  +	550, 0, 555, 0, 559, 0, 563, 0,  +	567, 0, 571, 0, 575, 0, 1, 0 +}; + +int Parser_commitLen[] = { +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 0, 0, 0, 0, 0,  +	0, 0, 0, 2 +}; + +unsigned int Parser_fssProdIdIndex[] = { +	0, 1, 2, 3, 4, 5, 6, 7,  +	8, 9, 10, 11, 12, 13, 14, 15,  +	16, 17, 18, 19, 20, 21, 22, 23,  +	24, 25, 26, 27, 28, 29, 30, 31,  +	32, 33, 34, 35, 36, 37, 38, 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, 84, 85, 86, 87,  +	88, 89, 90, 91, 92, 93, 94, 95,  +	96, 97, 98, 99, 100, 101, 102, 103,  +	104, 105, 106, 107, 108, 109, 110, 111,  +	112, 113, 114, 115, 116, 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 +}; + +char Parser_fssProdLengths[] = { +	1, 0, 5, 1, 2, 0, 2, 0,  +	1, 1, 3, 4, 1, 2, 0, 1,  +	1, 1, 1, 1, 1, 4, 2, 0,  +	3, 3, 4, 4, 4, 4, 1, 2,  +	0, 3, 4, 1, 2, 0, 1, 1,  +	1, 1, 1, 1, 1, 3, 3, 4,  +	2, 0, 3, 4, 1, 2, 0, 4,  +	2, 0, 1, 1, 1, 3, 4, 1,  +	2, 0, 3, 4, 1, 2, 0, 3,  +	4, 1, 2, 0, 4, 2, 0, 1,  +	1, 1, 1, 1, 1, 1, 1, 1,  +	1, 1, 1, 1, 1, 1, 1, 1,  +	1, 1, 1, 1, 1, 1, 1, 1,  +	1, 3, 3, 3, 3, 4, 4, 4,  +	3, 3, 3, 3, 3, 4, 3, 4,  +	3, 3, 3, 3, 3, 3, 3, 3,  +	3, 4, 4, 2, 0, 4, 4, 1,  +	2, 0, 3, 4, 1, 2, 1, 3,  +	1 +}; + +unsigned short Parser_prodLhsIds[] = { +	187, 187, 186, 188, 189, 189, 190, 190,  +	192, 192, 193, 191, 195, 196, 196, 197,  +	197, 197, 197, 197, 197, 202, 204, 204,  +	205, 198, 199, 200, 201, 194, 207, 208,  +	208, 209, 203, 210, 211, 211, 212, 212,  +	212, 212, 212, 212, 212, 213, 214, 215,  +	220, 220, 221, 216, 222, 223, 223, 224,  +	225, 225, 226, 226, 226, 227, 228, 230,  +	231, 231, 232, 229, 233, 234, 234, 235,  +	217, 236, 237, 237, 238, 206, 206, 239,  +	239, 239, 239, 239, 239, 239, 239, 239,  +	239, 239, 239, 239, 239, 239, 239, 239,  +	239, 239, 239, 239, 239, 239, 239, 239,  +	239, 241, 242, 243, 244, 245, 246, 247,  +	248, 249, 250, 251, 252, 253, 254, 255,  +	256, 257, 258, 259, 260, 261, 262, 263,  +	264, 265, 266, 267, 267, 268, 218, 269,  +	270, 270, 271, 219, 272, 273, 273, 274,  +	275 +}; + +const char *Parser_prodNames[] = { +	"start-1", +	"start-2", +	"tag_ragel-1", +	"tag_ragel_head-1", +	"ragel_def_list-1", +	"ragel_def_list-2", +	"host_or_write_list-1", +	"host_or_write_list-2", +	"host_or_write-1", +	"host_or_write-2", +	"tag_host-1", +	"ragel_def-1", +	"tag_ragel_def_head-1", +	"ragel_def_item_list-1", +	"ragel_def_item_list-2", +	"ragel_def_item-1", +	"ragel_def_item-2", +	"ragel_def_item-3", +	"ragel_def_item-4", +	"ragel_def_item-5", +	"ragel_def_item-6", +	"tag_export_list-1", +	"export_list-1", +	"export_list-2", +	"tag_export-1", +	"tag_alph_type-1", +	"tag_getkey_expr-1", +	"tag_access_expr-1", +	"tag_curstate_expr-1", +	"tag_write-1", +	"tag_write_head-1", +	"write_option_list-1", +	"write_option_list-2", +	"tag_arg-1", +	"tag_machine-1", +	"tag_machine_head-1", +	"machine_item_list-1", +	"machine_item_list-2", +	"machine_item-1", +	"machine_item-2", +	"machine_item-3", +	"machine_item-4", +	"machine_item-5", +	"machine_item-6", +	"machine_item-7", +	"tag_start_state-1", +	"tag_error_state-1", +	"tag_entry_points-1", +	"entry_point_list-1", +	"entry_point_list-2", +	"tag_entry-1", +	"tag_state_list-1", +	"tag_state_list_head-1", +	"state_list-1", +	"state_list-2", +	"tag_state-1", +	"state_item_list-1", +	"state_item_list-2", +	"state_item-1", +	"state_item-2", +	"state_item-3", +	"tag_state_actions-1", +	"tag_state_cond_list-1", +	"tag_state_cond_list_head-1", +	"state_cond_list-1", +	"state_cond_list-2", +	"state_cond-1", +	"tag_trans_list-1", +	"tag_trans_list_head-1", +	"trans_list-1", +	"trans_list-2", +	"tag_trans-1", +	"tag_action_list-1", +	"tag_action_list_head-1", +	"action_list-1", +	"action_list-2", +	"tag_action-1", +	"inline_list-1", +	"inline_list-2", +	"inline_item-1", +	"inline_item-2", +	"inline_item-3", +	"inline_item-4", +	"inline_item-5", +	"inline_item-6", +	"inline_item-7", +	"inline_item-8", +	"inline_item-9", +	"inline_item-10", +	"inline_item-11", +	"inline_item-12", +	"inline_item-13", +	"inline_item-14", +	"inline_item-15", +	"inline_item-16", +	"inline_item-17", +	"inline_item-18", +	"inline_item-19", +	"inline_item-20", +	"inline_item-21", +	"inline_item-22", +	"inline_item-23", +	"inline_item-24", +	"inline_item-25", +	"inline_item-26", +	"tag_text-1", +	"tag_goto-1", +	"tag_call-1", +	"tag_next-1", +	"tag_goto_expr-1", +	"tag_call_expr-1", +	"tag_next_expr-1", +	"tag_ret-1", +	"tag_break-1", +	"tag_pchar-1", +	"tag_char-1", +	"tag_hold-1", +	"tag_exec-1", +	"tag_holdte-1", +	"tag_execte-1", +	"tag_curs-1", +	"tag_targs-1", +	"tag_il_entry-1", +	"tag_init_tokstart-1", +	"tag_init_act-1", +	"tag_get_tokend-1", +	"tag_set_tokstart-1", +	"tag_set_tokend-1", +	"tag_set_act-1", +	"tag_sub_action-1", +	"tag_lm_switch-1", +	"lm_action_list-1", +	"lm_action_list-2", +	"tag_inline_action-1", +	"tag_action_table_list-1", +	"tag_action_table_list_head-1", +	"action_table_list-1", +	"action_table_list-2", +	"tag_action_table-1", +	"tag_cond_space_list-1", +	"tag_cond_space_list_head-1", +	"cond_space_list-1", +	"cond_space_list-2", +	"tag_cond_space-1", +	"_start-1" +}; + +const char *Parser_lelNames[] = { +	"D-0", +	"D-1", +	"D-2", +	"D-3", +	"D-4", +	"D-5", +	"D-6", +	"D-7", +	"D-8", +	"D-9", +	"D-10", +	"D-11", +	"D-12", +	"D-13", +	"D-14", +	"D-15", +	"D-16", +	"D-17", +	"D-18", +	"D-19", +	"D-20", +	"D-21", +	"D-22", +	"D-23", +	"D-24", +	"D-25", +	"D-26", +	"D-27", +	"D-28", +	"D-29", +	"D-30", +	"D-31", +	"D-32", +	"!", +	"\"", +	"#", +	"$", +	"%", +	"&", +	"'", +	"(", +	")", +	"*", +	"+", +	",", +	"-", +	".", +	"/", +	"0", +	"1", +	"2", +	"3", +	"4", +	"5", +	"6", +	"7", +	"8", +	"9", +	":", +	";", +	"<", +	"=", +	">", +	"?", +	"@", +	"A", +	"B", +	"C", +	"D", +	"E", +	"F", +	"G", +	"H", +	"I", +	"J", +	"K", +	"L", +	"M", +	"N", +	"O", +	"P", +	"Q", +	"R", +	"S", +	"T", +	"U", +	"V", +	"W", +	"X", +	"Y", +	"Z", +	"[", +	"\\", +	"]", +	"^", +	"_", +	"`", +	"a", +	"b", +	"c", +	"d", +	"e", +	"f", +	"g", +	"h", +	"i", +	"j", +	"k", +	"l", +	"m", +	"n", +	"o", +	"p", +	"q", +	"r", +	"s", +	"t", +	"u", +	"v", +	"w", +	"x", +	"y", +	"z", +	"{", +	"|", +	"}", +	"~", +	"D-127", +	"TAG_unknown", +	"TAG_ragel", +	"TAG_ragel_def", +	"TAG_host", +	"TAG_state_list", +	"TAG_state", +	"TAG_trans_list", +	"TAG_t", +	"TAG_machine", +	"TAG_start_state", +	"TAG_error_state", +	"TAG_action_list", +	"TAG_action_table_list", +	"TAG_action", +	"TAG_action_table", +	"TAG_alphtype", +	"TAG_element", +	"TAG_getkey", +	"TAG_state_actions", +	"TAG_entry_points", +	"TAG_sub_action", +	"TAG_cond_space_list", +	"TAG_cond_space", +	"TAG_cond_list", +	"TAG_c", +	"TAG_exports", +	"TAG_ex", +	"TAG_text", +	"TAG_goto", +	"TAG_call", +	"TAG_next", +	"TAG_goto_expr", +	"TAG_call_expr", +	"TAG_next_expr", +	"TAG_ret", +	"TAG_pchar", +	"TAG_char", +	"TAG_hold", +	"TAG_exec", +	"TAG_holdte", +	"TAG_execte", +	"TAG_curs", +	"TAG_targs", +	"TAG_entry", +	"TAG_data", +	"TAG_lm_switch", +	"TAG_init_act", +	"TAG_set_act", +	"TAG_set_tokend", +	"TAG_get_tokend", +	"TAG_init_tokstart", +	"TAG_set_tokstart", +	"TAG_write", +	"TAG_curstate", +	"TAG_access", +	"TAG_break", +	"TAG_arg", +	"_eof", +	"tag_ragel", +	"start", +	"tag_ragel_head", +	"ragel_def_list", +	"host_or_write_list", +	"ragel_def", +	"host_or_write", +	"tag_host", +	"tag_write", +	"tag_ragel_def_head", +	"ragel_def_item_list", +	"ragel_def_item", +	"tag_alph_type", +	"tag_getkey_expr", +	"tag_access_expr", +	"tag_curstate_expr", +	"tag_export_list", +	"tag_machine", +	"export_list", +	"tag_export", +	"inline_list", +	"tag_write_head", +	"write_option_list", +	"tag_arg", +	"tag_machine_head", +	"machine_item_list", +	"machine_item", +	"tag_start_state", +	"tag_error_state", +	"tag_entry_points", +	"tag_state_list", +	"tag_action_list", +	"tag_action_table_list", +	"tag_cond_space_list", +	"entry_point_list", +	"tag_entry", +	"tag_state_list_head", +	"state_list", +	"tag_state", +	"state_item_list", +	"state_item", +	"tag_state_actions", +	"tag_state_cond_list", +	"tag_trans_list", +	"tag_state_cond_list_head", +	"state_cond_list", +	"state_cond", +	"tag_trans_list_head", +	"trans_list", +	"tag_trans", +	"tag_action_list_head", +	"action_list", +	"tag_action", +	"inline_item", +	"inline_item_type", +	"tag_text", +	"tag_goto", +	"tag_call", +	"tag_next", +	"tag_goto_expr", +	"tag_call_expr", +	"tag_next_expr", +	"tag_ret", +	"tag_break", +	"tag_pchar", +	"tag_char", +	"tag_hold", +	"tag_exec", +	"tag_holdte", +	"tag_execte", +	"tag_curs", +	"tag_targs", +	"tag_il_entry", +	"tag_init_tokstart", +	"tag_init_act", +	"tag_get_tokend", +	"tag_set_tokstart", +	"tag_set_tokend", +	"tag_set_act", +	"tag_sub_action", +	"tag_lm_switch", +	"lm_action_list", +	"tag_inline_action", +	"tag_action_table_list_head", +	"action_table_list", +	"tag_action_table", +	"tag_cond_space_list_head", +	"cond_space_list", +	"tag_cond_space", +	"_start" +}; + +#line 851 "xmlparse.kl" + + +void Parser::init() +{ +	#line 2079 "xmlparse.cpp" +	curs = Parser_startState; +	pool = 0; +	freshEl = (struct Parser_LangEl*) malloc( sizeof(struct Parser_LangEl)*8128); +	#ifdef LOG_ACTIONS +	cerr << "allocating 8128 LangEls" << endl; +	#endif +	stackTop = freshEl; +	stackTop->type = 0; +	stackTop->state = -1; +	stackTop->next = 0; +	stackTop->child = 0; +	freshPos = 1; +	lastFinal = stackTop; +	numRetry = 0; +	numNodes = 0; +	errCount = 0; +#line 856 "xmlparse.kl" +} + +int Parser::parseLangEl( int type, const Token *token ) +{ +	#line 2101 "xmlparse.cpp" +#define reject() induceReject = 1 + +	int pos, targState; +	unsigned int *action; +	int rhsLen; +	struct Parser_LangEl *rhs[32]; +	struct Parser_LangEl *lel; +	struct Parser_LangEl *input; +	char induceReject; + +	if ( curs < 0 ) +		return 0; + +	if ( pool == 0 ) { +		if ( freshPos == 8128 ) { +			freshEl = (struct Parser_LangEl*) malloc( +					sizeof(struct Parser_LangEl)*8128); +			#ifdef LOG_ACTIONS +			cerr << "allocating 8128 LangEls" << endl; +			#endif +			freshPos = 0; +		} +		input = freshEl + freshPos++; +	} +	else { +		input = pool; +		pool = pool->next; +	} +	numNodes += 1; +	input->type = type; +	input->user.token = *token; +	input->next = 0; +	input->retry = 0; +	input->child = 0; + +again: +	if ( input == 0 ) +		goto _out; + +	lel = input; +	if ( lel->type < Parser_keys[curs<<1] || lel->type > Parser_keys[(curs<<1)+1] ) +		goto parseError; + +	pos = Parser_indicies[Parser_offsets[curs] + (lel->type - Parser_keys[curs<<1])]; +	if ( pos < 0 ) +		goto parseError; + +	induceReject = 0; +	targState = Parser_targs[pos]; +	action = Parser_actions + Parser_actInds[pos]; +	if ( lel->retry & 0x0000ffff ) +		action += (lel->retry & 0x0000ffff); + +	if ( *action & 0x1 ) { +		#ifdef LOG_ACTIONS +		cerr << "shifted: " << Parser_lelNames[lel->type]; +		#endif +		input = input->next; +		lel->state = curs; +		lel->next = stackTop; +		stackTop = lel; + +		if ( action[1] == 0 ) +			lel->retry &= 0xffff0000; +		else { +			lel->retry += 1; +			numRetry += 1; +			#ifdef LOG_ACTIONS +			cerr << " retry: " << stackTop; +			#endif +		} +		#ifdef LOG_ACTIONS +		cerr << endl; +		#endif +	} + +	if ( Parser_commitLen[pos] != 0 ) { +		struct Parser_LangEl *commitHead = stackTop; +		int absCommitLen = Parser_commitLen[pos]; + +		#ifdef LOG_ACTIONS +		cerr << "running commit of length: " << Parser_commitLen[pos] << endl; +		#endif + +		if ( absCommitLen < 0 ) { +			commitHead = commitHead->next; +			absCommitLen = -1 * absCommitLen; +		} +		{ +			struct Parser_LangEl *lel = commitHead; +			struct Parser_LangEl **cmStack = (struct Parser_LangEl**) malloc( sizeof(struct Parser_LangEl) * numNodes); +			int n = absCommitLen, depth = 0, sp = 0; + +commit_head: +			if ( lel->retry > 0 ) { +				if ( lel->retry & 0x0000ffff ) +					numRetry -= 1; +				if ( lel->retry & 0xffff0000 ) +					numRetry -= 1; +				lel->retry = 0; +			} + +			/* If depth is > 0 then move over lel freely, otherwise, make +			 * sure that we have not already done n steps down the line. */ +			if ( lel->next != 0 && ( depth > 0 || n > 1 ) ) { +				cmStack[sp++] = lel; +				lel = lel->next; + +				/* If we are at the top level count the steps down the line. */ +				if ( depth == 0 ) +					n -= 1; +				goto commit_head; +			} + +commit_reverse: +			if ( lel->child != 0 ) { +				cmStack[sp++] = lel; +				lel = lel->child; + +				/* When we move down we need to increment the depth. */ +				depth += 1; +				goto commit_head; +			} + +commit_upwards: +			if ( sp > 0 ) { +				/* Figure out which place to return to. */ +				if ( cmStack[sp-1]->next == lel ) { +					lel = cmStack[--sp]; +					goto commit_reverse; +				} +				else { +					/* Going back up, adjust the depth. */ +					lel = cmStack[--sp]; +					depth -= 1; +					goto commit_upwards; +				} +			} +			free( cmStack ); +		} +		if ( numRetry == 0 ) { +			#ifdef LOG_ACTIONS +			cerr << "number of retries is zero, " +				"executing final actions" << endl; +			#endif +			{ +				struct Parser_LangEl *lel = commitHead; +				struct Parser_LangEl **cmStack = (struct Parser_LangEl**) malloc( sizeof( struct Parser_LangEl) * numNodes); +				int sp = 0; +				char doExec = 0; + +final_head: +				if ( lel == lastFinal ) { +					doExec = 1; +					goto hit_final; +				} + +				if ( lel->next != 0 ) { +					cmStack[sp++] = lel; +					lel = lel->next; +					goto final_head; +				} + +final_reverse: + +				if ( lel->child != 0 ) { +					cmStack[sp++] = lel; +					lel = lel->child; +					goto final_head; +				} + +final_upwards: + +				if ( doExec ) { +{ +	if ( lel->type < 186 ) { +	} +	else { +		struct Parser_LangEl *redLel = lel; +		if ( redLel->child != 0 ) { +			int r = Parser_fssProdLengths[redLel->reduction] - 1; +			struct Parser_LangEl *rhsEl = redLel->child; +			while ( rhsEl != 0 ) { +				rhs[r--] = rhsEl; +				rhsEl = rhsEl->next; +			} +		} +switch ( lel->reduction ) { +case 1: { +#line 46 "xmlparse.kl" + +		/* If we get no input the assumption is that the frontend died and +		 * emitted an error. */  +		errCount += 1; +	 + +#line 2297 "xmlparse.cpp" +} break; +case 3: { +#line 55 "xmlparse.kl" + +		Attribute *fileNameAttr = (&rhs[0]->user.token)->tag->findAttr( "filename" ); +		if ( fileNameAttr == 0 ) { +			error((&rhs[0]->user.token)->loc) << "tag <ragel> requires a filename attribute" << endl; +			exit(1); +		} +		else { +			sourceFileName = fileNameAttr->value; + +			Attribute *langAttr = (&rhs[0]->user.token)->tag->findAttr( "lang" ); +			if ( langAttr == 0 ) +				error((&rhs[0]->user.token)->loc) << "tag <ragel> requires a lang attribute" << endl; +			else { +				if ( strcmp( langAttr->value, "C" ) == 0 ) { +					hostLangType = CCode; +					hostLang = &hostLangC; +				} +				else if ( strcmp( langAttr->value, "D" ) == 0 ) { +					hostLangType = DCode; +					hostLang = &hostLangD; +				} +				else if ( strcmp( langAttr->value, "Java" ) == 0 ) { +					hostLangType = JavaCode; +					hostLang = &hostLangJava; +				} +				else if ( strcmp( langAttr->value, "Ruby" ) == 0 ) { +					hostLangType = RubyCode; +					hostLang = &hostLangRuby; +				} +				else { +					error((&rhs[0]->user.token)->loc) << "expecting lang attribute to be " +							"one of C, D, Java or Ruby" << endl; +				} + +				outStream = openOutput( sourceFileName ); +			} +		} +	 + +#line 2340 "xmlparse.cpp" +} break; +case 10: { +#line 105 "xmlparse.kl" + +		Attribute *lineAttr = (&rhs[0]->user.token)->tag->findAttr( "line" ); +		if ( lineAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <host> requires a line attribute" << endl; +		else { +			int line = atoi( lineAttr->value ); +			if ( outputActive ) +				lineDirective( *outStream, sourceFileName, line ); +		} + +		if ( outputActive ) +			*outStream << (&rhs[2]->user.token)->tag->content; +	 + +#line 2358 "xmlparse.cpp" +} break; +case 11: { +#line 121 "xmlparse.kl" + +		/* Do this before distributing transitions out to singles and defaults +		 * makes life easier. */ +		cgd->redFsm->maxKey = cgd->findMaxKey(); + +		cgd->redFsm->assignActionLocs(); + +		/* Find the first final state (The final state with the lowest id). */ +		cgd->redFsm->findFirstFinState(); + +		/* Call the user's callback. */ +		cgd->finishRagelDef(); +	 + +#line 2376 "xmlparse.cpp" +} break; +case 12: { +#line 136 "xmlparse.kl" + +		char *fsmName = 0; +		Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); +		if ( nameAttr != 0 ) { +			fsmName = nameAttr->value; + +			CodeGenMapEl *mapEl = codeGenMap.find( fsmName ); +			if ( mapEl != 0 ) +				cgd = mapEl->value; +			else { +				cgd = makeCodeGen( sourceFileName, fsmName, *outStream, wantComplete ); +				codeGenMap.insert( fsmName, cgd ); +			} +		} +		else { +			cgd = makeCodeGen( sourceFileName, fsmName,  +					*outStream, wantComplete ); +		} + +		::keyOps = &cgd->thisKeyOps; +	 + +#line 2402 "xmlparse.cpp" +} break; +case 24: { +#line 174 "xmlparse.kl" + +		Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); +		if ( nameAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <ex> requires a name attribute" << endl; +		else { +			char *td = (&rhs[2]->user.token)->tag->content; +			Key exportKey = readKey( td, &td ); +			cgd->exportList.append( new Export( nameAttr->value, exportKey ) ); +		} +	 + +#line 2417 "xmlparse.cpp" +} break; +case 25: { +#line 186 "xmlparse.kl" + +		if ( ! cgd->setAlphType( (&rhs[2]->user.token)->tag->content ) ) +			error((&rhs[0]->user.token)->loc) << "tag <alphtype> specifies unknown alphabet type" << endl; +	 + +#line 2426 "xmlparse.cpp" +} break; +case 26: { +#line 192 "xmlparse.kl" + +		cgd->getKeyExpr = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 2434 "xmlparse.cpp" +} break; +case 27: { +#line 197 "xmlparse.kl" + +		cgd->accessExpr = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 2442 "xmlparse.cpp" +} break; +case 28: { +#line 202 "xmlparse.kl" + +		cgd->curStateExpr = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 2450 "xmlparse.cpp" +} break; +case 29: { +#line 207 "xmlparse.kl" + +		/* Terminate the options list and call the write statement handler. */ +		writeOptions.append(0); +		cgd->writeStatement( (&rhs[0]->user.tag_write_head)->loc, writeOptions.length()-1, writeOptions.data ); + +		/* CodeGenData may have issued an error. */ +		errCount += cgd->codeGenErrCount; + +		/* Clear the options in prep for the next write statement. */ +		writeOptions.empty(); +	 + +#line 2466 "xmlparse.cpp" +} break; +case 30: { +#line 225 "xmlparse.kl" + +		Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "def_name" ); +		Attribute *lineAttr = (&rhs[0]->user.token)->tag->findAttr( "line" ); +		Attribute *colAttr = (&rhs[0]->user.token)->tag->findAttr( "col" ); + +		if ( nameAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <write> requires a def_name attribute" << endl; +		if ( lineAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <write> requires a line attribute" << endl; +		if ( colAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <write> requires a col attribute" << endl; + +		if ( nameAttr != 0 && lineAttr != 0 && colAttr != 0 ) { +			CodeGenMapEl *mapEl = codeGenMap.find( nameAttr->value ); +			if ( mapEl == 0 ) +				error((&rhs[0]->user.token)->loc) << "internal error: cannot find codeGen" << endl; +			else { +				cgd = mapEl->value; +				::keyOps = &cgd->thisKeyOps; +			} + +			(&redLel->user.tag_write_head)->loc.line = atoi(lineAttr->value); +			(&redLel->user.tag_write_head)->loc.col = atoi(colAttr->value); +		} +	 + +#line 2496 "xmlparse.cpp" +} break; +case 33: { +#line 261 "xmlparse.kl" + +		writeOptions.append( (&rhs[2]->user.token)->tag->content ); +	 + +#line 2504 "xmlparse.cpp" +} break; +case 34: { +#line 266 "xmlparse.kl" + +		cgd->closeMachine(); +	 + +#line 2512 "xmlparse.cpp" +} break; +case 35: { +#line 271 "xmlparse.kl" + +		cgd->createMachine(); +	 + +#line 2520 "xmlparse.cpp" +} break; +case 45: { +#line 291 "xmlparse.kl" + +		unsigned long startState = strtoul( (&rhs[2]->user.token)->tag->content, 0, 10 ); +		cgd->setStartState( startState ); +	 + +#line 2529 "xmlparse.cpp" +} break; +case 46: { +#line 297 "xmlparse.kl" + +		unsigned long errorState = strtoul( (&rhs[2]->user.token)->tag->content, 0, 10 ); +		cgd->setErrorState( errorState ); +	 + +#line 2538 "xmlparse.cpp" +} break; +case 47: { +#line 303 "xmlparse.kl" + +		Attribute *errorAttr = (&rhs[0]->user.token)->tag->findAttr( "error" ); +		if ( errorAttr != 0 ) +			cgd->setForcedErrorState(); +	 + +#line 2548 "xmlparse.cpp" +} break; +case 50: { +#line 313 "xmlparse.kl" + +		Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); +		if ( nameAttr == 0 ) { +			error((&rhs[0]->user.token)->loc) << "tag <entry_points>::<entry> " +					"requires a name attribute" << endl; +		} +		else { +			char *data = (&rhs[2]->user.token)->tag->content; +			unsigned long entry = strtoul( data, &data, 10 ); +			cgd->addEntryPoint( nameAttr->value, entry ); +		} +	 + +#line 2565 "xmlparse.cpp" +} break; +case 52: { +#line 329 "xmlparse.kl" + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		if ( lengthAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <state_list> requires a length attribute" << endl; +	 	else { +			unsigned long length = strtoul( lengthAttr->value, 0, 10 ); +			cgd->initStateList( length ); +			curState = 0; +		} +	 + +#line 2580 "xmlparse.cpp" +} break; +case 55: { +#line 344 "xmlparse.kl" + +		Attribute *idAttr = (&rhs[0]->user.token)->tag->findAttr( "id" ); +		if ( idAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <state> requires an id attribute" << endl; +		else { +			int id = atoi( idAttr->value ); +			cgd->setId( curState, id ); +		} + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "final" ); +		if ( lengthAttr != 0 ) +			cgd->setFinal( curState ); +		curState += 1; +	 + +#line 2599 "xmlparse.cpp" +} break; +case 61: { +#line 367 "xmlparse.kl" + +		char *ad = (&rhs[2]->user.token)->tag->content; + +		long toStateAction = readOffsetPtr( ad, &ad ); +		long fromStateAction = readOffsetPtr( ad, &ad ); +		long eofAction = readOffsetPtr( ad, &ad ); + +		cgd->setStateActions( curState, toStateAction, +				fromStateAction, eofAction ); +	 + +#line 2614 "xmlparse.cpp" +} break; +case 63: { +#line 381 "xmlparse.kl" + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		if ( lengthAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <cond_list> requires a length attribute" << endl; +	 	else { +			ulong length = readLength( lengthAttr->value ); +			cgd->initStateCondList( curState, length ); +			curStateCond = 0; +		} +	 + +#line 2629 "xmlparse.cpp" +} break; +case 66: { +#line 396 "xmlparse.kl" + +		char *td = (&rhs[2]->user.token)->tag->content; +		Key lowKey = readKey( td, &td ); +		Key highKey = readKey( td, &td ); +		long condId = readOffsetPtr( td, &td ); +		cgd->addStateCond( curState, lowKey, highKey, condId ); +	 + +#line 2641 "xmlparse.cpp" +} break; +case 67: { +#line 405 "xmlparse.kl" + +		cgd->finishTransList( curState ); +	 + +#line 2649 "xmlparse.cpp" +} break; +case 68: { +#line 410 "xmlparse.kl" + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		if ( lengthAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <trans_list> requires a length attribute" << endl; +	 	else { +			unsigned long length = strtoul( lengthAttr->value, 0, 10 ); +			cgd->initTransList( curState, length ); +			curTrans = 0; +		} +	 + +#line 2664 "xmlparse.cpp" +} break; +case 71: { +#line 425 "xmlparse.kl" + +		char *td = (&rhs[2]->user.token)->tag->content; +		Key lowKey = readKey( td, &td ); +		Key highKey = readKey( td, &td ); +		long targ = readOffsetPtr( td, &td ); +		long action = readOffsetPtr( td, &td ); + +		cgd->newTrans( curState, curTrans++, lowKey, highKey, targ, action ); +	 + +#line 2678 "xmlparse.cpp" +} break; +case 73: { +#line 442 "xmlparse.kl" + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		if ( lengthAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <action_list> requires a length attribute" << endl; +	 	else { +			unsigned long length = strtoul( lengthAttr->value, 0, 10 ); +			cgd->initActionList( length ); +			curAction = 0; +		} +	 + +#line 2693 "xmlparse.cpp" +} break; +case 76: { +#line 461 "xmlparse.kl" + +		Attribute *lineAttr = (&rhs[0]->user.token)->tag->findAttr( "line" ); +		Attribute *colAttr = (&rhs[0]->user.token)->tag->findAttr( "col" ); +		Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); +		if ( lineAttr == 0 || colAttr == 0) +			error((&rhs[0]->user.token)->loc) << "tag <action> requires a line and col attributes" << endl; +	 	else { +			unsigned long line = strtoul( lineAttr->value, 0, 10 ); +			unsigned long col = strtoul( colAttr->value, 0, 10 ); + +			char *name = 0; +			if ( nameAttr != 0 ) +				name = nameAttr->value; + +			cgd->newAction( curAction++, name, line, col, (&rhs[1]->user.inline_list)->inlineList ); +		} +	 + +#line 2715 "xmlparse.cpp" +} break; +case 77: { +#line 486 "xmlparse.kl" + +		/* Append the item to the list, return the list. */ +		(&rhs[0]->user.inline_list)->inlineList->append( (&rhs[1]->user.inline_item_type)->inlineItem ); +		(&redLel->user.inline_list)->inlineList = (&rhs[0]->user.inline_list)->inlineList; +	 + +#line 2725 "xmlparse.cpp" +} break; +case 78: { +#line 493 "xmlparse.kl" + +		/* Start with empty list. */ +		(&redLel->user.inline_list)->inlineList = new InlineList; +	 + +#line 2734 "xmlparse.cpp" +} break; +case 79: { +#line 505 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2740 "xmlparse.cpp" +} break; +case 80: { +#line 506 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2746 "xmlparse.cpp" +} break; +case 81: { +#line 507 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2752 "xmlparse.cpp" +} break; +case 82: { +#line 508 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2758 "xmlparse.cpp" +} break; +case 83: { +#line 509 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2764 "xmlparse.cpp" +} break; +case 84: { +#line 510 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2770 "xmlparse.cpp" +} break; +case 85: { +#line 511 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2776 "xmlparse.cpp" +} break; +case 86: { +#line 512 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2782 "xmlparse.cpp" +} break; +case 87: { +#line 513 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2788 "xmlparse.cpp" +} break; +case 88: { +#line 514 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2794 "xmlparse.cpp" +} break; +case 89: { +#line 515 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2800 "xmlparse.cpp" +} break; +case 90: { +#line 516 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2806 "xmlparse.cpp" +} break; +case 91: { +#line 517 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2812 "xmlparse.cpp" +} break; +case 92: { +#line 518 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2818 "xmlparse.cpp" +} break; +case 93: { +#line 519 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2824 "xmlparse.cpp" +} break; +case 94: { +#line 520 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2830 "xmlparse.cpp" +} break; +case 95: { +#line 521 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2836 "xmlparse.cpp" +} break; +case 96: { +#line 522 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2842 "xmlparse.cpp" +} break; +case 97: { +#line 523 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2848 "xmlparse.cpp" +} break; +case 98: { +#line 524 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2854 "xmlparse.cpp" +} break; +case 99: { +#line 525 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2860 "xmlparse.cpp" +} break; +case 100: { +#line 526 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2866 "xmlparse.cpp" +} break; +case 101: { +#line 527 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2872 "xmlparse.cpp" +} break; +case 102: { +#line 528 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2878 "xmlparse.cpp" +} break; +case 103: { +#line 529 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2884 "xmlparse.cpp" +} break; +case 104: { +#line 530 "xmlparse.kl" + (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem;  + +#line 2890 "xmlparse.cpp" +} break; +case 105: { +#line 560 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Text ); +		(&redLel->user.inline_item_type)->inlineItem->data = (&rhs[2]->user.token)->tag->content; +	 + +#line 2899 "xmlparse.cpp" +} break; +case 106: { +#line 566 "xmlparse.kl" + +		int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Goto ); +		(&redLel->user.inline_item_type)->inlineItem->targId = targ; +	 + +#line 2909 "xmlparse.cpp" +} break; +case 107: { +#line 573 "xmlparse.kl" + +		int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Call ); +		(&redLel->user.inline_item_type)->inlineItem->targId = targ; +	 + +#line 2919 "xmlparse.cpp" +} break; +case 108: { +#line 580 "xmlparse.kl" + +		int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Next ); +		(&redLel->user.inline_item_type)->inlineItem->targId = targ; +	 + +#line 2929 "xmlparse.cpp" +} break; +case 109: { +#line 587 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::GotoExpr ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 2938 "xmlparse.cpp" +} break; +case 110: { +#line 593 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::CallExpr ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 2947 "xmlparse.cpp" +} break; +case 111: { +#line 599 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::NextExpr ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 2956 "xmlparse.cpp" +} break; +case 112: { +#line 605 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Ret ); +	 + +#line 2964 "xmlparse.cpp" +} break; +case 113: { +#line 610 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Break ); +	 + +#line 2972 "xmlparse.cpp" +} break; +case 114: { +#line 615 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::PChar ); +	 + +#line 2980 "xmlparse.cpp" +} break; +case 115: { +#line 620 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Char ); +	 + +#line 2988 "xmlparse.cpp" +} break; +case 116: { +#line 625 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Hold ); +	 + +#line 2996 "xmlparse.cpp" +} break; +case 117: { +#line 630 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Exec ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 3005 "xmlparse.cpp" +} break; +case 118: { +#line 636 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::HoldTE ); +	 + +#line 3013 "xmlparse.cpp" +} break; +case 119: { +#line 641 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::ExecTE ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 3022 "xmlparse.cpp" +} break; +case 120: { +#line 647 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Curs ); +	 + +#line 3030 "xmlparse.cpp" +} break; +case 121: { +#line 652 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Targs ); +	 + +#line 3038 "xmlparse.cpp" +} break; +case 122: { +#line 657 "xmlparse.kl" + +		int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Entry ); +		(&redLel->user.inline_item_type)->inlineItem->targId = targ; +	 + +#line 3048 "xmlparse.cpp" +} break; +case 123: { +#line 664 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmInitTokStart ); +	 + +#line 3056 "xmlparse.cpp" +} break; +case 124: { +#line 669 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmInitAct ); +	 + +#line 3064 "xmlparse.cpp" +} break; +case 125: { +#line 674 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmGetTokEnd ); +	 + +#line 3072 "xmlparse.cpp" +} break; +case 126: { +#line 679 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSetTokStart ); +		cgd->hasLongestMatch = true; +	 + +#line 3081 "xmlparse.cpp" +} break; +case 127: { +#line 685 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSetTokEnd ); +		(&redLel->user.inline_item_type)->inlineItem->offset = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); +	 + +#line 3090 "xmlparse.cpp" +} break; +case 128: { +#line 691 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSetActId ); +		(&redLel->user.inline_item_type)->inlineItem->lmId = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); +	 + +#line 3099 "xmlparse.cpp" +} break; +case 129: { +#line 697 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::SubAction ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; +	 + +#line 3108 "xmlparse.cpp" +} break; +case 130: { +#line 704 "xmlparse.kl" + +		bool handlesError = false; +		Attribute *handlesErrorAttr = (&rhs[0]->user.token)->tag->findAttr( "handles_error" ); +		if ( handlesErrorAttr != 0 ) +			handlesError = true; + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSwitch ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.lm_action_list)->inlineList; +		(&redLel->user.inline_item_type)->inlineItem->handlesError = handlesError; +	 + +#line 3123 "xmlparse.cpp" +} break; +case 131: { +#line 721 "xmlparse.kl" + +		(&redLel->user.lm_action_list)->inlineList = (&rhs[0]->user.lm_action_list)->inlineList; +		(&redLel->user.lm_action_list)->inlineList->append( (&rhs[1]->user.inline_item_type)->inlineItem ); +	 + +#line 3132 "xmlparse.cpp" +} break; +case 132: { +#line 726 "xmlparse.kl" + +		(&redLel->user.lm_action_list)->inlineList = new InlineList; +	 + +#line 3140 "xmlparse.cpp" +} break; +case 133: { +#line 733 "xmlparse.kl" + +		(&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::SubAction ); +		(&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; + +		Attribute *idAttr = (&rhs[0]->user.token)->tag->findAttr( "id" ); +		if ( idAttr != 0 ) { +			unsigned long id = strtoul( idAttr->value, 0, 10 ); +			(&redLel->user.inline_item_type)->inlineItem->lmId = id; +		} +	 + +#line 3155 "xmlparse.cpp" +} break; +case 135: { +#line 752 "xmlparse.kl" + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		if ( lengthAttr == 0 ) { +			error((&rhs[0]->user.token)->loc) << "tag <action_table_list> requires " +					"a length attribute" << endl; +		} +	 	else { +			unsigned long length = strtoul( lengthAttr->value, 0, 10 ); +			cgd->initActionTableList( length ); +			curActionTable = 0; +		} +	 + +#line 3172 "xmlparse.cpp" +} break; +case 138: { +#line 769 "xmlparse.kl" + +		/* Find the length of the action table. */ +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		if ( lengthAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <at> requires a length attribute" << endl; +	 	else { +			unsigned long length = strtoul( lengthAttr->value, 0, 10 ); + +			/* Collect the action table. */ +			RedAction *redAct = cgd->allActionTables + curActionTable; +			redAct->actListId = curActionTable; +			redAct->key.setAsNew( length ); +			char *ptr = (&rhs[2]->user.token)->tag->content; +			int pos = 0; +			while ( *ptr != 0 ) { +				unsigned long actionId = strtoul( ptr, &ptr, 10 ); +				redAct->key[pos].key = 0; +				redAct->key[pos].value = cgd->allActions+actionId; +				pos += 1; +			} + +			/* Insert into the action table map. */ +			cgd->redFsm->actionMap.insert( redAct ); +		} + +		curActionTable += 1; +	 + +#line 3204 "xmlparse.cpp" +} break; +case 140: { +#line 804 "xmlparse.kl" + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		if ( lengthAttr == 0 ) { +			error((&rhs[0]->user.token)->loc) << "tag <cond_space_list> " +					"requires a length attribute" << endl; +		} +	 	else { +			ulong length = readLength( lengthAttr->value ); +			cgd->initCondSpaceList( length ); +			curCondSpace = 0; +		} +	 + +#line 3221 "xmlparse.cpp" +} break; +case 143: { +#line 821 "xmlparse.kl" + +		Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); +		Attribute *idAttr = (&rhs[0]->user.token)->tag->findAttr( "id" ); +		if ( lengthAttr == 0 ) +			error((&rhs[0]->user.token)->loc) << "tag <cond_space> requires a length attribute" << endl; +	 	else { +			if ( lengthAttr == 0 ) +				error((&rhs[0]->user.token)->loc) << "tag <cond_space> requires an id attribute" << endl; +		 	else { +				unsigned long condSpaceId = strtoul( idAttr->value, 0, 10 ); +				ulong length = readLength( lengthAttr->value ); + +				char *td = (&rhs[2]->user.token)->tag->content; +				Key baseKey = readKey( td, &td ); + +				cgd->newCondSpace( curCondSpace, condSpaceId, baseKey ); +				for ( ulong a = 0; a < length; a++ ) { +					long actionOffset = readOffsetPtr( td, &td ); +					cgd->condSpaceItem( curCondSpace, actionOffset ); +				} +				curCondSpace += 1; +			} +		} +	 + +#line 3250 "xmlparse.cpp" +} break; +} +	} +} + +					if ( lel->child != 0 ) { +						struct Parser_LangEl *first = lel->child; +						struct Parser_LangEl *child = lel->child; +						numNodes -= 1; +						lel->child = 0; +						while ( child->next != 0 ) { +							child = child->next; +							numNodes -= 1; +						} +						child->next = pool; +						pool = first; +					} +				} + +hit_final: +				if ( sp > 0 ) { +					/* Figure out which place to return to. */ +					if ( cmStack[sp-1]->next == lel ) { +						lel = cmStack[--sp]; +						goto final_reverse; +					} +					else { +						lel = cmStack[--sp]; +						goto final_upwards; +					} +				} + +				lastFinal = lel; +				free( cmStack ); +			} +		} +	} + +	if ( *action & 0x2 ) { +		int fssRed = *action >> 2; +		int reduction = Parser_fssProdIdIndex[fssRed]; +		struct Parser_LangEl *redLel; +		if ( pool == 0 ) { +			if ( freshPos == 8128 ) { +				freshEl = (struct Parser_LangEl*) malloc( +						sizeof(struct Parser_LangEl)*8128); +				#ifdef LOG_ACTIONS +				cerr << "allocating 8128 LangEls" << endl; +				#endif +				freshPos = 0; +			} +			redLel = freshEl + freshPos++; +		} +		else { +			redLel = pool; +			pool = pool->next; +		} +		numNodes += 1; +		redLel->type = Parser_prodLhsIds[reduction]; +		redLel->reduction = reduction; +		redLel->child = 0; +		redLel->next = 0; +		redLel->retry = (lel->retry << 16); +		lel->retry &= 0xffff0000; + +		rhsLen = Parser_fssProdLengths[fssRed]; +		if ( rhsLen > 0 ) { +			int r; +			for ( r = rhsLen-1; r > 0; r-- ) { +				rhs[r] = stackTop; +				stackTop = stackTop->next; +			} +			rhs[0] = stackTop; +			stackTop = stackTop->next; +			rhs[0]->next = 0; +		} +		#ifdef LOG_ACTIONS +		cerr << "reduced: " +				<< Parser_prodNames[reduction] +				<< " rhsLen: " << rhsLen; +		#endif +		if ( action[1] == 0 ) +			redLel->retry = 0; +		else { +			redLel->retry += 0x10000; +			numRetry += 1; +			#ifdef LOG_ACTIONS +			cerr << " retry: " << redLel; +			#endif +		} + +		#ifdef LOG_ACTIONS +		cerr << endl; +		#endif + +		if ( rhsLen == 0 ) { +			redLel->file = lel->file; +			redLel->line = lel->line; +			targState = curs; +		} +		else { +			redLel->child = rhs[rhsLen-1]; +			redLel->file = rhs[0]->file; +			redLel->line = rhs[0]->line; +			targState = rhs[0]->state; +		} + +		if ( induceReject ) { +			#ifdef LOG_ACTIONS +			cerr << "error induced during reduction of " << +					Parser_lelNames[redLel->type] << endl; +			#endif +			redLel->state = curs; +			redLel->next = stackTop; +			stackTop = redLel; +			curs = targState; +			goto parseError; +		} +		else { +			redLel->next = input; +			input = redLel; +		} +	} + + +	curs = targState; +	goto again; + +parseError: +	#ifdef LOG_BACKTRACK +	cerr << "hit error" << endl; +	#endif +	if ( numRetry > 0 ) { +		while ( 1 ) { +			struct Parser_LangEl *redLel = stackTop; +			if ( stackTop->type < 186 ) { +				#ifdef LOG_BACKTRACK +				cerr << "backing up over terminal: " << +						Parser_lelNames[stackTop->type] << endl; +				#endif +				stackTop = stackTop->next; +				redLel->next = input; +				input = redLel; +			} +			else { +				#ifdef LOG_BACKTRACK +				cerr << "backing up over non-terminal: " << +						Parser_lelNames[stackTop->type] << endl; +				#endif +				stackTop = stackTop->next; +				struct Parser_LangEl *first = redLel->child; +				if ( first == 0 ) +					rhsLen = 0; +				else { +					rhsLen = 1; +					while ( first->next != 0 ) { +						first = first->next; +						rhsLen += 1; +					} +					first->next = stackTop; +					stackTop = redLel->child; + +					struct Parser_LangEl *rhsEl = stackTop; +					int p = rhsLen; +					while ( p > 0 ) { +						rhs[--p] = rhsEl; +						rhsEl = rhsEl->next; +					} +				} +				redLel->next = pool; +				pool = redLel; +				numNodes -= 1; +			} + +			if ( redLel->retry > 0 ) { +				#ifdef LOG_BACKTRACK +				cerr << "found retry targ: " << redLel << endl; +				#endif +				numRetry -= 1; +				#ifdef LOG_BACKTRACK +				cerr << "found retry: " << redLel << endl; +				#endif +				if ( redLel->retry & 0x0000ffff ) +					curs = input->state; +				else { +					input->retry = redLel->retry >> 16; +					if ( stackTop->state < 0 ) +						curs = Parser_startState; +					else { +						curs = Parser_targs[(int)Parser_indicies[Parser_offsets[stackTop->state] + (stackTop->type - Parser_keys[stackTop->state<<1])]]; +					} +				} +				goto again; +			} +		} +	} +	curs = -1; +	errCount += 1; +_out: {} +#line 861 "xmlparse.kl" +	return errCount == 0 ? 0 : -1; +} + + +unsigned long readLength( char *td ) +{ +	return strtoul( td, 0, 10 ); +} + +Key readKey( char *td, char **end ) +{ +	if ( keyOps->isSigned ) +		return Key( strtol( td, end, 10 ) ); +	else +		return Key( strtoul( td, end, 10 ) ); +} + +long readOffsetPtr( char *td, char **end ) +{ +	while ( *td == ' ' || *td == '\t' ) +		td++; + +	if ( *td == 'x' ) { +		if ( end != 0 ) +			*end = td + 1; +		return -1; +	} + +	return strtol( td, end, 10 ); +} + +ostream &Parser::warning( const InputLoc &loc ) +{ +	cerr << fileName << ":" << loc.line << ":" << loc.col << ": warning: "; +	return cerr; +} + +ostream &Parser::error( const InputLoc &loc ) +{ +	errCount += 1; +	assert( fileName != 0 ); +	cerr << fileName << ":" << loc.line << ":" << loc.col << ": "; +	return cerr; +} + + +ostream &Parser::parser_error( int tokId, Token &token ) +{ +	errCount += 1; +	assert( fileName != 0 ); +	cerr << fileName << ":" << token.loc.line << ":" << token.loc.col; +	if ( token.tag != 0 ) { +		if ( token.tag->tagId == 0 ) +			cerr << ": at unknown tag"; +		else +			cerr << ": at tag <" << token.tag->tagId->name << ">"; +	} +	cerr << ": "; +	 +	return cerr; +} + +int Parser::token( int tokenId, Token &tok ) +{ +	int res = parseLangEl( tokenId, &tok ); +	if ( res < 0 ) { +		parser_error( tokenId, tok ) << "parse error" << endl; +		exit(1); +	} +	return res; +} + +int Parser::token( int tokenId, int col, int line ) +{ +	Token tok; +	tok.loc.col = col; +	tok.loc.line = line; +	tok.tag = 0; +	return token( tokenId, tok ); +} + +int Parser::token( XMLTag *tag, int col, int line ) +{ +	Token tok; +	tok.loc.col = col; +	tok.loc.line = line; +	tok.tag = tag; +	 +	if ( tag->type == XMLTag::Close ) { +		int res = token( '/', tok ); +		if ( res < 0 ) +			return res; +	} + +	tok.tag = tag; +	return token( tag->tagId != 0 ? tag->tagId->id : TAG_unknown, tok ); +}  | 
