diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2023-12-02 01:45:21 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2023-12-02 02:42:50 +0300 |
commit | 9c43d58f75cf086b744cf4fe2ae180e8f37e4a0c (patch) | |
tree | 9f88a486917d371d099cd712efd91b4c122d209d /contrib/tools/ragel5/redfsm/xmlparse.cpp | |
parent | 32fb6dda1feb24f9ab69ece5df0cb9ec238ca5e6 (diff) | |
download | ydb-9c43d58f75cf086b744cf4fe2ae180e8f37e4a0c.tar.gz |
Intermediate changes
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 0000000000..6da8c50e91 --- /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 <thurston@cs.queensu.ca> + */ + +/* 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 ); +} |