Files
posthog/common/hogql_parser/HogQLLexer.cpp
Marius Andra af5ed78b3e feat(hogql): better hogqlx support (#35124)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-16 18:20:50 +00:00

828 lines
53 KiB
C++

#include <cctype>
// Generated from HogQLLexer.g4 by ANTLR 4.13.2
#include "HogQLLexer.h"
using namespace antlr4;
using namespace antlr4;
namespace {
struct HogQLLexerStaticData final {
HogQLLexerStaticData(std::vector<std::string> ruleNames,
std::vector<std::string> channelNames,
std::vector<std::string> modeNames,
std::vector<std::string> literalNames,
std::vector<std::string> symbolicNames)
: ruleNames(std::move(ruleNames)), channelNames(std::move(channelNames)),
modeNames(std::move(modeNames)), literalNames(std::move(literalNames)),
symbolicNames(std::move(symbolicNames)),
vocabulary(this->literalNames, this->symbolicNames) {}
HogQLLexerStaticData(const HogQLLexerStaticData&) = delete;
HogQLLexerStaticData(HogQLLexerStaticData&&) = delete;
HogQLLexerStaticData& operator=(const HogQLLexerStaticData&) = delete;
HogQLLexerStaticData& operator=(HogQLLexerStaticData&&) = delete;
std::vector<antlr4::dfa::DFA> decisionToDFA;
antlr4::atn::PredictionContextCache sharedContextCache;
const std::vector<std::string> ruleNames;
const std::vector<std::string> channelNames;
const std::vector<std::string> modeNames;
const std::vector<std::string> literalNames;
const std::vector<std::string> symbolicNames;
const antlr4::dfa::Vocabulary vocabulary;
antlr4::atn::SerializedATNView serializedATN;
std::unique_ptr<antlr4::atn::ATN> atn;
};
::antlr4::internal::OnceFlag hogqllexerLexerOnceFlag;
#if ANTLR4_USE_THREAD_LOCAL_CACHE
static thread_local
#endif
std::unique_ptr<HogQLLexerStaticData> hogqllexerLexerStaticData = nullptr;
void hogqllexerLexerInitialize() {
#if ANTLR4_USE_THREAD_LOCAL_CACHE
if (hogqllexerLexerStaticData != nullptr) {
return;
}
#else
assert(hogqllexerLexerStaticData == nullptr);
#endif
auto staticData = std::make_unique<HogQLLexerStaticData>(
std::vector<std::string>{
"ALL", "AND", "ANTI", "ANY", "ARRAY", "AS", "ASCENDING", "ASOF", "BETWEEN",
"BOTH", "BY", "CASE", "CAST", "CATCH", "COHORT", "COLLATE", "CROSS",
"CUBE", "CURRENT", "DATE", "DAY", "DESC", "DESCENDING", "DISTINCT",
"ELSE", "END", "EXCEPT", "EXTRACT", "FINAL", "FINALLY", "FIRST", "FN",
"FOLLOWING", "FOR", "FROM", "FULL", "FUN", "GROUP", "HAVING", "HOUR",
"ID", "IF", "ILIKE", "IN", "INF", "INNER", "INTERSECT", "INTERVAL",
"IS", "JOIN", "KEY", "LAST", "LEADING", "LEFT", "LET", "LIKE", "LIMIT",
"MINUTE", "MONTH", "NAN_SQL", "NOT", "NULL_SQL", "NULLS", "OFFSET",
"ON", "OR", "ORDER", "OUTER", "OVER", "PARTITION", "PRECEDING", "PREWHERE",
"QUARTER", "RANGE", "RETURN", "RIGHT", "ROLLUP", "ROW", "ROWS", "SAMPLE",
"SECOND", "SELECT", "SEMI", "SETTINGS", "SUBSTRING", "THEN", "THROW",
"TIES", "TIMESTAMP", "TO", "TOP", "TOTALS", "TRAILING", "TRIM", "TRUNCATE",
"TRY", "UNBOUNDED", "UNION", "USING", "WEEK", "WHEN", "WHERE", "WHILE",
"WINDOW", "WITH", "YEAR", "ESCAPE_CHAR_COMMON", "IDENTIFIER", "FLOATING_LITERAL",
"OCTAL_LITERAL", "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "STRING_LITERAL",
"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", "LETTER",
"OCT_DIGIT", "DEC_DIGIT", "HEX_DIGIT", "ARROW", "ASTERISK", "BACKQUOTE",
"BACKSLASH", "COLON", "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT",
"EQ_DOUBLE", "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE",
"IREGEX_DOUBLE", "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", "TAG_LT_SLASH",
"TAG_LT_OPEN", "LT", "LT_SLASH", "NOT_EQ", "NOT_IREGEX", "NOT_REGEX",
"NULL_PROPERTY", "NULLISH", "PERCENT", "PLUS", "QUERY", "QUOTE_DOUBLE",
"QUOTE_SINGLE_TEMPLATE", "QUOTE_SINGLE_TEMPLATE_FULL", "QUOTE_SINGLE",
"REGEX_SINGLE", "REGEX_DOUBLE", "RBRACE", "RBRACKET", "RPAREN", "SEMICOLON",
"SLASH", "SLASH_GT", "UNDERSCORE", "MULTI_LINE_COMMENT", "SINGLE_LINE_COMMENT",
"WHITESPACE", "STRING_TEXT", "STRING_ESCAPE_TRIGGER", "STRING_QUOTE_SINGLE",
"FULL_STRING_TEXT", "FULL_STRING_ESCAPE_TRIGGER", "TAG_SELF_CLOSE_GT",
"TAG_OPEN_GT", "TAG_IDENT", "TAG_EQ", "TAG_STRING", "TAG_WS", "TAG_LBRACE",
"TAGC_GT", "TAGC_IDENT", "TAGC_WS", "HOGQLX_TEXT_TEXT", "HOGQLX_TEXT_LBRACE",
"HOGQLX_TEXT_LT_SLASH", "HOGQLX_TEXT_LT", "HOGQLX_TEXT_WS"
},
std::vector<std::string>{
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
},
std::vector<std::string>{
"DEFAULT_MODE", "IN_TEMPLATE_STRING", "IN_FULL_TEMPLATE_STRING", "HOGQLX_TAG_OPEN",
"HOGQLX_TAG_CLOSE", "HOGQLX_TEXT"
},
std::vector<std::string>{
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "'->'", "'*'", "'`'",
"'\\'", "':'", "','", "'||'", "'-'", "'$'", "'.'", "'=='", "", "'>='",
"", "'#'", "'~*'", "'=~*'", "'{'", "'['", "'('", "'<='", "'<'", "'</'",
"", "'!~*'", "'!~'", "'\\u003F.'", "'\\u003F\\u003F'", "'%'", "'+'",
"'\\u003F'", "'\"'", "'f''", "'F''", "'''", "'~'", "'=~'", "'}'",
"']'", "')'", "';'", "'/'", "", "'_'"
},
std::vector<std::string>{
"", "ALL", "AND", "ANTI", "ANY", "ARRAY", "AS", "ASCENDING", "ASOF",
"BETWEEN", "BOTH", "BY", "CASE", "CAST", "CATCH", "COHORT", "COLLATE",
"CROSS", "CUBE", "CURRENT", "DATE", "DAY", "DESC", "DESCENDING", "DISTINCT",
"ELSE", "END", "EXCEPT", "EXTRACT", "FINAL", "FINALLY", "FIRST", "FN",
"FOLLOWING", "FOR", "FROM", "FULL", "FUN", "GROUP", "HAVING", "HOUR",
"ID", "IF", "ILIKE", "IN", "INF", "INNER", "INTERSECT", "INTERVAL",
"IS", "JOIN", "KEY", "LAST", "LEADING", "LEFT", "LET", "LIKE", "LIMIT",
"MINUTE", "MONTH", "NAN_SQL", "NOT", "NULL_SQL", "NULLS", "OFFSET",
"ON", "OR", "ORDER", "OUTER", "OVER", "PARTITION", "PRECEDING", "PREWHERE",
"QUARTER", "RANGE", "RETURN", "RIGHT", "ROLLUP", "ROW", "ROWS", "SAMPLE",
"SECOND", "SELECT", "SEMI", "SETTINGS", "SUBSTRING", "THEN", "THROW",
"TIES", "TIMESTAMP", "TO", "TOP", "TOTALS", "TRAILING", "TRIM", "TRUNCATE",
"TRY", "UNBOUNDED", "UNION", "USING", "WEEK", "WHEN", "WHERE", "WHILE",
"WINDOW", "WITH", "YEAR", "ESCAPE_CHAR_COMMON", "IDENTIFIER", "FLOATING_LITERAL",
"OCTAL_LITERAL", "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "STRING_LITERAL",
"ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", "COLON", "COMMA", "CONCAT",
"DASH", "DOLLAR", "DOT", "EQ_DOUBLE", "EQ_SINGLE", "GT_EQ", "GT",
"HASH", "IREGEX_SINGLE", "IREGEX_DOUBLE", "LBRACE", "LBRACKET", "LPAREN",
"LT_EQ", "LT", "LT_SLASH", "NOT_EQ", "NOT_IREGEX", "NOT_REGEX", "NULL_PROPERTY",
"NULLISH", "PERCENT", "PLUS", "QUERY", "QUOTE_DOUBLE", "QUOTE_SINGLE_TEMPLATE",
"QUOTE_SINGLE_TEMPLATE_FULL", "QUOTE_SINGLE", "REGEX_SINGLE", "REGEX_DOUBLE",
"RBRACE", "RBRACKET", "RPAREN", "SEMICOLON", "SLASH", "SLASH_GT",
"UNDERSCORE", "MULTI_LINE_COMMENT", "SINGLE_LINE_COMMENT", "WHITESPACE",
"STRING_TEXT", "STRING_ESCAPE_TRIGGER", "FULL_STRING_TEXT", "FULL_STRING_ESCAPE_TRIGGER",
"TAG_WS", "TAGC_WS", "HOGQLX_TEXT_TEXT", "HOGQLX_TEXT_WS"
}
);
static const int32_t serializedATNSegment[] = {
4,0,168,1626,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,
3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,
7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,
7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,
7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,
7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,
7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,
7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,
7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,
7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,
7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,
7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,
7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,
7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,
7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,
2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,
2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,
2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,
2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,
2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,
2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,
2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,
2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,
2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,
2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,
2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,
2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,
2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,
2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,
2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,
2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,
2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,
2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,
2,210,7,210,2,211,7,211,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,
2,1,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,
1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,471,8,6,1,7,1,7,1,7,1,
7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,
10,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,
13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,
15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,
17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,
20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,
22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,
23,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,
26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,
28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,
30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,
32,1,32,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,
35,1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,
38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,41,1,
41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,
44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,699,8,44,1,45,1,
45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,
46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,49,1,
49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,
52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,
54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,
57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,
59,1,59,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,
62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,65,1,
65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,
68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,
69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,
71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,
73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,
75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,
77,1,77,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,
80,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,
82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,
84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,
85,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,
88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,90,1,90,1,90,1,
90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,
92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,
94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,
96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,
98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,101,1,101,
1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,
1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,105,1,105,
1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,3,105,1083,8,105,1,106,
1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
1,106,1,106,3,106,1112,8,106,1,107,1,107,1,107,3,107,1117,8,107,1,107,
1,107,1,107,1,107,5,107,1123,8,107,10,107,12,107,1126,9,107,1,107,1,107,
1,107,1,107,1,107,1,107,1,107,1,107,1,107,5,107,1137,8,107,10,107,12,
107,1140,9,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,
1,107,1,107,5,107,1153,8,107,10,107,12,107,1156,9,107,1,107,1,107,3,107,
1160,8,107,1,108,1,108,1,108,5,108,1165,8,108,10,108,12,108,1168,9,108,
1,108,1,108,3,108,1172,8,108,1,108,1,108,3,108,1176,8,108,1,108,4,108,
1179,8,108,11,108,12,108,1180,1,108,1,108,1,108,3,108,1186,8,108,1,108,
1,108,3,108,1190,8,108,1,108,4,108,1193,8,108,11,108,12,108,1194,1,108,
1,108,1,108,5,108,1200,8,108,10,108,12,108,1203,9,108,1,108,1,108,1,108,
3,108,1208,8,108,1,108,4,108,1211,8,108,11,108,12,108,1212,1,108,1,108,
1,108,1,108,1,108,3,108,1220,8,108,1,108,4,108,1223,8,108,11,108,12,108,
1224,1,108,1,108,1,108,1,108,3,108,1231,8,108,1,108,4,108,1234,8,108,
11,108,12,108,1235,3,108,1238,8,108,1,109,1,109,4,109,1242,8,109,11,109,
12,109,1243,1,110,4,110,1247,8,110,11,110,12,110,1248,1,111,1,111,1,111,
4,111,1254,8,111,11,111,12,111,1255,1,112,1,112,1,112,1,112,1,112,1,112,
1,112,1,112,1,112,5,112,1267,8,112,10,112,12,112,1270,9,112,1,112,1,112,
1,113,1,113,1,114,1,114,1,115,1,115,1,116,1,116,1,117,1,117,1,118,1,118,
1,119,1,119,1,120,1,120,1,121,1,121,1,122,1,122,1,123,1,123,1,124,1,124,
1,125,1,125,1,126,1,126,1,127,1,127,1,128,1,128,1,129,1,129,1,130,1,130,
1,131,1,131,1,132,1,132,1,133,1,133,1,134,1,134,1,135,1,135,1,136,1,136,
1,137,1,137,1,138,1,138,1,139,1,139,1,140,1,140,1,141,1,141,1,142,1,142,
1,143,1,143,1,143,1,144,1,144,1,145,1,145,1,146,1,146,1,147,1,147,1,148,
1,148,1,149,1,149,1,149,1,150,1,150,1,151,1,151,1,152,1,152,1,153,1,153,
1,153,1,154,1,154,1,155,1,155,1,155,1,156,1,156,1,157,1,157,1,158,1,158,
1,158,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,161,1,161,1,162,
1,162,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,
1,165,1,165,1,165,1,165,1,166,1,166,1,167,1,167,1,167,1,168,1,168,1,168,
1,168,3,168,1407,8,168,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,171,
1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,174,1,174,1,175,1,175,1,176,
1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,179,
1,179,1,180,1,180,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,183,1,183,
1,184,1,184,1,185,1,185,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,189,
1,189,1,189,1,189,5,189,1468,8,189,10,189,12,189,1471,9,189,1,189,1,189,
1,189,1,189,1,189,1,190,1,190,1,190,1,190,3,190,1482,8,190,1,190,5,190,
1485,8,190,10,190,12,190,1488,9,190,1,190,3,190,1491,8,190,1,190,1,190,
1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,
1,192,1,192,1,192,4,192,1510,8,192,11,192,12,192,1511,1,193,1,193,1,193,
1,193,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195,4,195,
1528,8,195,11,195,12,195,1529,1,196,1,196,1,196,1,196,1,197,1,197,1,197,
1,197,1,197,1,197,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,5,199,
1550,8,199,10,199,12,199,1553,9,199,1,199,1,199,1,200,1,200,1,200,1,200,
1,201,1,201,1,201,1,201,1,202,4,202,1566,8,202,11,202,12,202,1567,1,202,
1,202,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,205,
1,205,5,205,1584,8,205,10,205,12,205,1587,9,205,1,205,1,205,1,206,4,206,
1592,8,206,11,206,12,206,1593,1,206,1,206,1,207,4,207,1599,8,207,11,207,
12,207,1600,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,
1,209,1,209,1,210,1,210,1,210,1,210,1,210,1,211,4,211,1621,8,211,11,211,
12,211,1622,1,211,1,211,1,1469,0,212,6,1,8,2,10,3,12,4,14,5,16,6,18,7,
20,8,22,9,24,10,26,11,28,12,30,13,32,14,34,15,36,16,38,17,40,18,42,19,
44,20,46,21,48,22,50,23,52,24,54,25,56,26,58,27,60,28,62,29,64,30,66,
31,68,32,70,33,72,34,74,35,76,36,78,37,80,38,82,39,84,40,86,41,88,42,
90,43,92,44,94,45,96,46,98,47,100,48,102,49,104,50,106,51,108,52,110,
53,112,54,114,55,116,56,118,57,120,58,122,59,124,60,126,61,128,62,130,
63,132,64,134,65,136,66,138,67,140,68,142,69,144,70,146,71,148,72,150,
73,152,74,154,75,156,76,158,77,160,78,162,79,164,80,166,81,168,82,170,
83,172,84,174,85,176,86,178,87,180,88,182,89,184,90,186,91,188,92,190,
93,192,94,194,95,196,96,198,97,200,98,202,99,204,100,206,101,208,102,
210,103,212,104,214,105,216,106,218,107,220,108,222,109,224,110,226,111,
228,112,230,113,232,0,234,0,236,0,238,0,240,0,242,0,244,0,246,0,248,0,
250,0,252,0,254,0,256,0,258,0,260,0,262,0,264,0,266,0,268,0,270,0,272,
0,274,0,276,0,278,0,280,0,282,0,284,0,286,0,288,0,290,0,292,114,294,115,
296,116,298,117,300,118,302,119,304,120,306,121,308,122,310,123,312,124,
314,125,316,126,318,127,320,128,322,129,324,130,326,131,328,132,330,133,
332,134,334,0,336,0,338,135,340,136,342,137,344,138,346,139,348,140,350,
141,352,142,354,143,356,144,358,145,360,146,362,147,364,148,366,149,368,
150,370,151,372,152,374,153,376,154,378,155,380,156,382,157,384,158,386,
159,388,160,390,161,392,162,394,0,396,163,398,164,400,0,402,0,404,0,406,
0,408,0,410,165,412,0,414,0,416,0,418,166,420,167,422,0,424,0,426,0,428,
168,6,0,1,2,3,4,5,42,2,0,92,92,96,96,2,0,34,34,92,92,2,0,39,39,92,92,
2,0,65,65,97,97,2,0,66,66,98,98,2,0,67,67,99,99,2,0,68,68,100,100,2,0,
69,69,101,101,2,0,70,70,102,102,2,0,71,71,103,103,2,0,72,72,104,104,2,
0,73,73,105,105,2,0,74,74,106,106,2,0,75,75,107,107,2,0,76,76,108,108,
2,0,77,77,109,109,2,0,78,78,110,110,2,0,79,79,111,111,2,0,80,80,112,112,
2,0,81,81,113,113,2,0,82,82,114,114,2,0,83,83,115,115,2,0,84,84,116,116,
2,0,85,85,117,117,2,0,86,86,118,118,2,0,87,87,119,119,2,0,88,88,120,120,
2,0,89,89,121,121,2,0,90,90,122,122,2,0,65,90,97,122,1,0,48,55,1,0,48,
57,3,0,48,57,65,70,97,102,2,0,10,10,13,13,2,1,10,10,13,13,2,0,9,13,32,
32,3,0,39,39,92,92,123,123,1,0,123,123,3,0,65,90,95,95,97,122,5,0,45,
45,48,57,65,90,95,95,97,122,3,0,9,10,13,13,32,32,2,0,60,60,123,123,1665,
0,6,1,0,0,0,0,8,1,0,0,0,0,10,1,0,0,0,0,12,1,0,0,0,0,14,1,0,0,0,0,16,1,
0,0,0,0,18,1,0,0,0,0,20,1,0,0,0,0,22,1,0,0,0,0,24,1,0,0,0,0,26,1,0,0,
0,0,28,1,0,0,0,0,30,1,0,0,0,0,32,1,0,0,0,0,34,1,0,0,0,0,36,1,0,0,0,0,
38,1,0,0,0,0,40,1,0,0,0,0,42,1,0,0,0,0,44,1,0,0,0,0,46,1,0,0,0,0,48,1,
0,0,0,0,50,1,0,0,0,0,52,1,0,0,0,0,54,1,0,0,0,0,56,1,0,0,0,0,58,1,0,0,
0,0,60,1,0,0,0,0,62,1,0,0,0,0,64,1,0,0,0,0,66,1,0,0,0,0,68,1,0,0,0,0,
70,1,0,0,0,0,72,1,0,0,0,0,74,1,0,0,0,0,76,1,0,0,0,0,78,1,0,0,0,0,80,1,
0,0,0,0,82,1,0,0,0,0,84,1,0,0,0,0,86,1,0,0,0,0,88,1,0,0,0,0,90,1,0,0,
0,0,92,1,0,0,0,0,94,1,0,0,0,0,96,1,0,0,0,0,98,1,0,0,0,0,100,1,0,0,0,0,
102,1,0,0,0,0,104,1,0,0,0,0,106,1,0,0,0,0,108,1,0,0,0,0,110,1,0,0,0,0,
112,1,0,0,0,0,114,1,0,0,0,0,116,1,0,0,0,0,118,1,0,0,0,0,120,1,0,0,0,0,
122,1,0,0,0,0,124,1,0,0,0,0,126,1,0,0,0,0,128,1,0,0,0,0,130,1,0,0,0,0,
132,1,0,0,0,0,134,1,0,0,0,0,136,1,0,0,0,0,138,1,0,0,0,0,140,1,0,0,0,0,
142,1,0,0,0,0,144,1,0,0,0,0,146,1,0,0,0,0,148,1,0,0,0,0,150,1,0,0,0,0,
152,1,0,0,0,0,154,1,0,0,0,0,156,1,0,0,0,0,158,1,0,0,0,0,160,1,0,0,0,0,
162,1,0,0,0,0,164,1,0,0,0,0,166,1,0,0,0,0,168,1,0,0,0,0,170,1,0,0,0,0,
172,1,0,0,0,0,174,1,0,0,0,0,176,1,0,0,0,0,178,1,0,0,0,0,180,1,0,0,0,0,
182,1,0,0,0,0,184,1,0,0,0,0,186,1,0,0,0,0,188,1,0,0,0,0,190,1,0,0,0,0,
192,1,0,0,0,0,194,1,0,0,0,0,196,1,0,0,0,0,198,1,0,0,0,0,200,1,0,0,0,0,
202,1,0,0,0,0,204,1,0,0,0,0,206,1,0,0,0,0,208,1,0,0,0,0,210,1,0,0,0,0,
212,1,0,0,0,0,214,1,0,0,0,0,216,1,0,0,0,0,218,1,0,0,0,0,220,1,0,0,0,0,
222,1,0,0,0,0,224,1,0,0,0,0,226,1,0,0,0,0,228,1,0,0,0,0,230,1,0,0,0,0,
292,1,0,0,0,0,294,1,0,0,0,0,296,1,0,0,0,0,298,1,0,0,0,0,300,1,0,0,0,0,
302,1,0,0,0,0,304,1,0,0,0,0,306,1,0,0,0,0,308,1,0,0,0,0,310,1,0,0,0,0,
312,1,0,0,0,0,314,1,0,0,0,0,316,1,0,0,0,0,318,1,0,0,0,0,320,1,0,0,0,0,
322,1,0,0,0,0,324,1,0,0,0,0,326,1,0,0,0,0,328,1,0,0,0,0,330,1,0,0,0,0,
332,1,0,0,0,0,334,1,0,0,0,0,336,1,0,0,0,0,338,1,0,0,0,0,340,1,0,0,0,0,
342,1,0,0,0,0,344,1,0,0,0,0,346,1,0,0,0,0,348,1,0,0,0,0,350,1,0,0,0,0,
352,1,0,0,0,0,354,1,0,0,0,0,356,1,0,0,0,0,358,1,0,0,0,0,360,1,0,0,0,0,
362,1,0,0,0,0,364,1,0,0,0,0,366,1,0,0,0,0,368,1,0,0,0,0,370,1,0,0,0,0,
372,1,0,0,0,0,374,1,0,0,0,0,376,1,0,0,0,0,378,1,0,0,0,0,380,1,0,0,0,0,
382,1,0,0,0,0,384,1,0,0,0,0,386,1,0,0,0,0,388,1,0,0,0,1,390,1,0,0,0,1,
392,1,0,0,0,1,394,1,0,0,0,2,396,1,0,0,0,2,398,1,0,0,0,3,400,1,0,0,0,3,
402,1,0,0,0,3,404,1,0,0,0,3,406,1,0,0,0,3,408,1,0,0,0,3,410,1,0,0,0,3,
412,1,0,0,0,4,414,1,0,0,0,4,416,1,0,0,0,4,418,1,0,0,0,5,420,1,0,0,0,5,
422,1,0,0,0,5,424,1,0,0,0,5,426,1,0,0,0,5,428,1,0,0,0,6,430,1,0,0,0,8,
434,1,0,0,0,10,438,1,0,0,0,12,443,1,0,0,0,14,447,1,0,0,0,16,453,1,0,0,
0,18,470,1,0,0,0,20,472,1,0,0,0,22,477,1,0,0,0,24,485,1,0,0,0,26,490,
1,0,0,0,28,493,1,0,0,0,30,498,1,0,0,0,32,503,1,0,0,0,34,509,1,0,0,0,36,
516,1,0,0,0,38,524,1,0,0,0,40,530,1,0,0,0,42,535,1,0,0,0,44,543,1,0,0,
0,46,548,1,0,0,0,48,552,1,0,0,0,50,557,1,0,0,0,52,568,1,0,0,0,54,577,
1,0,0,0,56,582,1,0,0,0,58,586,1,0,0,0,60,593,1,0,0,0,62,601,1,0,0,0,64,
607,1,0,0,0,66,615,1,0,0,0,68,621,1,0,0,0,70,624,1,0,0,0,72,634,1,0,0,
0,74,638,1,0,0,0,76,643,1,0,0,0,78,648,1,0,0,0,80,652,1,0,0,0,82,658,
1,0,0,0,84,665,1,0,0,0,86,670,1,0,0,0,88,673,1,0,0,0,90,676,1,0,0,0,92,
682,1,0,0,0,94,698,1,0,0,0,96,700,1,0,0,0,98,706,1,0,0,0,100,716,1,0,
0,0,102,725,1,0,0,0,104,728,1,0,0,0,106,733,1,0,0,0,108,737,1,0,0,0,110,
742,1,0,0,0,112,750,1,0,0,0,114,755,1,0,0,0,116,759,1,0,0,0,118,764,1,
0,0,0,120,770,1,0,0,0,122,777,1,0,0,0,124,783,1,0,0,0,126,787,1,0,0,0,
128,791,1,0,0,0,130,796,1,0,0,0,132,802,1,0,0,0,134,809,1,0,0,0,136,812,
1,0,0,0,138,815,1,0,0,0,140,821,1,0,0,0,142,827,1,0,0,0,144,832,1,0,0,
0,146,842,1,0,0,0,148,852,1,0,0,0,150,861,1,0,0,0,152,869,1,0,0,0,154,
875,1,0,0,0,156,882,1,0,0,0,158,888,1,0,0,0,160,895,1,0,0,0,162,899,1,
0,0,0,164,904,1,0,0,0,166,911,1,0,0,0,168,918,1,0,0,0,170,925,1,0,0,0,
172,930,1,0,0,0,174,939,1,0,0,0,176,949,1,0,0,0,178,954,1,0,0,0,180,960,
1,0,0,0,182,965,1,0,0,0,184,975,1,0,0,0,186,978,1,0,0,0,188,982,1,0,0,
0,190,989,1,0,0,0,192,998,1,0,0,0,194,1003,1,0,0,0,196,1012,1,0,0,0,198,
1016,1,0,0,0,200,1026,1,0,0,0,202,1032,1,0,0,0,204,1038,1,0,0,0,206,1043,
1,0,0,0,208,1048,1,0,0,0,210,1054,1,0,0,0,212,1060,1,0,0,0,214,1067,1,
0,0,0,216,1082,1,0,0,0,218,1111,1,0,0,0,220,1159,1,0,0,0,222,1237,1,0,
0,0,224,1239,1,0,0,0,226,1246,1,0,0,0,228,1250,1,0,0,0,230,1257,1,0,0,
0,232,1273,1,0,0,0,234,1275,1,0,0,0,236,1277,1,0,0,0,238,1279,1,0,0,0,
240,1281,1,0,0,0,242,1283,1,0,0,0,244,1285,1,0,0,0,246,1287,1,0,0,0,248,
1289,1,0,0,0,250,1291,1,0,0,0,252,1293,1,0,0,0,254,1295,1,0,0,0,256,1297,
1,0,0,0,258,1299,1,0,0,0,260,1301,1,0,0,0,262,1303,1,0,0,0,264,1305,1,
0,0,0,266,1307,1,0,0,0,268,1309,1,0,0,0,270,1311,1,0,0,0,272,1313,1,0,
0,0,274,1315,1,0,0,0,276,1317,1,0,0,0,278,1319,1,0,0,0,280,1321,1,0,0,
0,282,1323,1,0,0,0,284,1325,1,0,0,0,286,1327,1,0,0,0,288,1329,1,0,0,0,
290,1331,1,0,0,0,292,1333,1,0,0,0,294,1336,1,0,0,0,296,1338,1,0,0,0,298,
1340,1,0,0,0,300,1342,1,0,0,0,302,1344,1,0,0,0,304,1346,1,0,0,0,306,1349,
1,0,0,0,308,1351,1,0,0,0,310,1353,1,0,0,0,312,1355,1,0,0,0,314,1358,1,
0,0,0,316,1360,1,0,0,0,318,1363,1,0,0,0,320,1365,1,0,0,0,322,1367,1,0,
0,0,324,1370,1,0,0,0,326,1374,1,0,0,0,328,1378,1,0,0,0,330,1380,1,0,0,
0,332,1382,1,0,0,0,334,1385,1,0,0,0,336,1391,1,0,0,0,338,1397,1,0,0,0,
340,1399,1,0,0,0,342,1406,1,0,0,0,344,1408,1,0,0,0,346,1412,1,0,0,0,348,
1415,1,0,0,0,350,1418,1,0,0,0,352,1421,1,0,0,0,354,1423,1,0,0,0,356,1425,
1,0,0,0,358,1427,1,0,0,0,360,1429,1,0,0,0,362,1434,1,0,0,0,364,1439,1,
0,0,0,366,1441,1,0,0,0,368,1443,1,0,0,0,370,1446,1,0,0,0,372,1450,1,0,
0,0,374,1452,1,0,0,0,376,1454,1,0,0,0,378,1456,1,0,0,0,380,1458,1,0,0,
0,382,1461,1,0,0,0,384,1463,1,0,0,0,386,1481,1,0,0,0,388,1494,1,0,0,0,
390,1509,1,0,0,0,392,1513,1,0,0,0,394,1517,1,0,0,0,396,1527,1,0,0,0,398,
1531,1,0,0,0,400,1535,1,0,0,0,402,1541,1,0,0,0,404,1547,1,0,0,0,406,1556,
1,0,0,0,408,1560,1,0,0,0,410,1565,1,0,0,0,412,1571,1,0,0,0,414,1576,1,
0,0,0,416,1581,1,0,0,0,418,1591,1,0,0,0,420,1598,1,0,0,0,422,1602,1,0,
0,0,424,1607,1,0,0,0,426,1614,1,0,0,0,428,1620,1,0,0,0,430,431,3,232,
113,0,431,432,3,254,124,0,432,433,3,254,124,0,433,7,1,0,0,0,434,435,3,
232,113,0,435,436,3,258,126,0,436,437,3,238,116,0,437,9,1,0,0,0,438,439,
3,232,113,0,439,440,3,258,126,0,440,441,3,270,132,0,441,442,3,248,121,
0,442,11,1,0,0,0,443,444,3,232,113,0,444,445,3,258,126,0,445,446,3,280,
137,0,446,13,1,0,0,0,447,448,3,232,113,0,448,449,3,266,130,0,449,450,
3,266,130,0,450,451,3,232,113,0,451,452,3,280,137,0,452,15,1,0,0,0,453,
454,3,232,113,0,454,455,3,268,131,0,455,17,1,0,0,0,456,457,3,232,113,
0,457,458,3,268,131,0,458,459,3,236,115,0,459,471,1,0,0,0,460,461,3,232,
113,0,461,462,3,268,131,0,462,463,3,236,115,0,463,464,3,240,117,0,464,
465,3,258,126,0,465,466,3,238,116,0,466,467,3,248,121,0,467,468,3,258,
126,0,468,469,3,244,119,0,469,471,1,0,0,0,470,456,1,0,0,0,470,460,1,0,
0,0,471,19,1,0,0,0,472,473,3,232,113,0,473,474,3,268,131,0,474,475,3,
260,127,0,475,476,3,242,118,0,476,21,1,0,0,0,477,478,3,234,114,0,478,
479,3,240,117,0,479,480,3,270,132,0,480,481,3,276,135,0,481,482,3,240,
117,0,482,483,3,240,117,0,483,484,3,258,126,0,484,23,1,0,0,0,485,486,
3,234,114,0,486,487,3,260,127,0,487,488,3,270,132,0,488,489,3,246,120,
0,489,25,1,0,0,0,490,491,3,234,114,0,491,492,3,280,137,0,492,27,1,0,0,
0,493,494,3,236,115,0,494,495,3,232,113,0,495,496,3,268,131,0,496,497,
3,240,117,0,497,29,1,0,0,0,498,499,3,236,115,0,499,500,3,232,113,0,500,
501,3,268,131,0,501,502,3,270,132,0,502,31,1,0,0,0,503,504,3,236,115,
0,504,505,3,232,113,0,505,506,3,270,132,0,506,507,3,236,115,0,507,508,
3,246,120,0,508,33,1,0,0,0,509,510,3,236,115,0,510,511,3,260,127,0,511,
512,3,246,120,0,512,513,3,260,127,0,513,514,3,266,130,0,514,515,3,270,
132,0,515,35,1,0,0,0,516,517,3,236,115,0,517,518,3,260,127,0,518,519,
3,254,124,0,519,520,3,254,124,0,520,521,3,232,113,0,521,522,3,270,132,
0,522,523,3,240,117,0,523,37,1,0,0,0,524,525,3,236,115,0,525,526,3,266,
130,0,526,527,3,260,127,0,527,528,3,268,131,0,528,529,3,268,131,0,529,
39,1,0,0,0,530,531,3,236,115,0,531,532,3,272,133,0,532,533,3,234,114,
0,533,534,3,240,117,0,534,41,1,0,0,0,535,536,3,236,115,0,536,537,3,272,
133,0,537,538,3,266,130,0,538,539,3,266,130,0,539,540,3,240,117,0,540,
541,3,258,126,0,541,542,3,270,132,0,542,43,1,0,0,0,543,544,3,238,116,
0,544,545,3,232,113,0,545,546,3,270,132,0,546,547,3,240,117,0,547,45,
1,0,0,0,548,549,3,238,116,0,549,550,3,232,113,0,550,551,3,280,137,0,551,
47,1,0,0,0,552,553,3,238,116,0,553,554,3,240,117,0,554,555,3,268,131,
0,555,556,3,236,115,0,556,49,1,0,0,0,557,558,3,238,116,0,558,559,3,240,
117,0,559,560,3,268,131,0,560,561,3,236,115,0,561,562,3,240,117,0,562,
563,3,258,126,0,563,564,3,238,116,0,564,565,3,248,121,0,565,566,3,258,
126,0,566,567,3,244,119,0,567,51,1,0,0,0,568,569,3,238,116,0,569,570,
3,248,121,0,570,571,3,268,131,0,571,572,3,270,132,0,572,573,3,248,121,
0,573,574,3,258,126,0,574,575,3,236,115,0,575,576,3,270,132,0,576,53,
1,0,0,0,577,578,3,240,117,0,578,579,3,254,124,0,579,580,3,268,131,0,580,
581,3,240,117,0,581,55,1,0,0,0,582,583,3,240,117,0,583,584,3,258,126,
0,584,585,3,238,116,0,585,57,1,0,0,0,586,587,3,240,117,0,587,588,3,278,
136,0,588,589,3,236,115,0,589,590,3,240,117,0,590,591,3,262,128,0,591,
592,3,270,132,0,592,59,1,0,0,0,593,594,3,240,117,0,594,595,3,278,136,
0,595,596,3,270,132,0,596,597,3,266,130,0,597,598,3,232,113,0,598,599,
3,236,115,0,599,600,3,270,132,0,600,61,1,0,0,0,601,602,3,242,118,0,602,
603,3,248,121,0,603,604,3,258,126,0,604,605,3,232,113,0,605,606,3,254,
124,0,606,63,1,0,0,0,607,608,3,242,118,0,608,609,3,248,121,0,609,610,
3,258,126,0,610,611,3,232,113,0,611,612,3,254,124,0,612,613,3,254,124,
0,613,614,3,280,137,0,614,65,1,0,0,0,615,616,3,242,118,0,616,617,3,248,
121,0,617,618,3,266,130,0,618,619,3,268,131,0,619,620,3,270,132,0,620,
67,1,0,0,0,621,622,3,242,118,0,622,623,3,258,126,0,623,69,1,0,0,0,624,
625,3,242,118,0,625,626,3,260,127,0,626,627,3,254,124,0,627,628,3,254,
124,0,628,629,3,260,127,0,629,630,3,276,135,0,630,631,3,248,121,0,631,
632,3,258,126,0,632,633,3,244,119,0,633,71,1,0,0,0,634,635,3,242,118,
0,635,636,3,260,127,0,636,637,3,266,130,0,637,73,1,0,0,0,638,639,3,242,
118,0,639,640,3,266,130,0,640,641,3,260,127,0,641,642,3,256,125,0,642,
75,1,0,0,0,643,644,3,242,118,0,644,645,3,272,133,0,645,646,3,254,124,
0,646,647,3,254,124,0,647,77,1,0,0,0,648,649,3,242,118,0,649,650,3,272,
133,0,650,651,3,258,126,0,651,79,1,0,0,0,652,653,3,244,119,0,653,654,
3,266,130,0,654,655,3,260,127,0,655,656,3,272,133,0,656,657,3,262,128,
0,657,81,1,0,0,0,658,659,3,246,120,0,659,660,3,232,113,0,660,661,3,274,
134,0,661,662,3,248,121,0,662,663,3,258,126,0,663,664,3,244,119,0,664,
83,1,0,0,0,665,666,3,246,120,0,666,667,3,260,127,0,667,668,3,272,133,
0,668,669,3,266,130,0,669,85,1,0,0,0,670,671,3,248,121,0,671,672,3,238,
116,0,672,87,1,0,0,0,673,674,3,248,121,0,674,675,3,242,118,0,675,89,1,
0,0,0,676,677,3,248,121,0,677,678,3,254,124,0,678,679,3,248,121,0,679,
680,3,252,123,0,680,681,3,240,117,0,681,91,1,0,0,0,682,683,3,248,121,
0,683,684,3,258,126,0,684,93,1,0,0,0,685,686,3,248,121,0,686,687,3,258,
126,0,687,688,3,242,118,0,688,699,1,0,0,0,689,690,3,248,121,0,690,691,
3,258,126,0,691,692,3,242,118,0,692,693,3,248,121,0,693,694,3,258,126,
0,694,695,3,248,121,0,695,696,3,270,132,0,696,697,3,280,137,0,697,699,
1,0,0,0,698,685,1,0,0,0,698,689,1,0,0,0,699,95,1,0,0,0,700,701,3,248,
121,0,701,702,3,258,126,0,702,703,3,258,126,0,703,704,3,240,117,0,704,
705,3,266,130,0,705,97,1,0,0,0,706,707,3,248,121,0,707,708,3,258,126,
0,708,709,3,270,132,0,709,710,3,240,117,0,710,711,3,266,130,0,711,712,
3,268,131,0,712,713,3,240,117,0,713,714,3,236,115,0,714,715,3,270,132,
0,715,99,1,0,0,0,716,717,3,248,121,0,717,718,3,258,126,0,718,719,3,270,
132,0,719,720,3,240,117,0,720,721,3,266,130,0,721,722,3,274,134,0,722,
723,3,232,113,0,723,724,3,254,124,0,724,101,1,0,0,0,725,726,3,248,121,
0,726,727,3,268,131,0,727,103,1,0,0,0,728,729,3,250,122,0,729,730,3,260,
127,0,730,731,3,248,121,0,731,732,3,258,126,0,732,105,1,0,0,0,733,734,
3,252,123,0,734,735,3,240,117,0,735,736,3,280,137,0,736,107,1,0,0,0,737,
738,3,254,124,0,738,739,3,232,113,0,739,740,3,268,131,0,740,741,3,270,
132,0,741,109,1,0,0,0,742,743,3,254,124,0,743,744,3,240,117,0,744,745,
3,232,113,0,745,746,3,238,116,0,746,747,3,248,121,0,747,748,3,258,126,
0,748,749,3,244,119,0,749,111,1,0,0,0,750,751,3,254,124,0,751,752,3,240,
117,0,752,753,3,242,118,0,753,754,3,270,132,0,754,113,1,0,0,0,755,756,
3,254,124,0,756,757,3,240,117,0,757,758,3,270,132,0,758,115,1,0,0,0,759,
760,3,254,124,0,760,761,3,248,121,0,761,762,3,252,123,0,762,763,3,240,
117,0,763,117,1,0,0,0,764,765,3,254,124,0,765,766,3,248,121,0,766,767,
3,256,125,0,767,768,3,248,121,0,768,769,3,270,132,0,769,119,1,0,0,0,770,
771,3,256,125,0,771,772,3,248,121,0,772,773,3,258,126,0,773,774,3,272,
133,0,774,775,3,270,132,0,775,776,3,240,117,0,776,121,1,0,0,0,777,778,
3,256,125,0,778,779,3,260,127,0,779,780,3,258,126,0,780,781,3,270,132,
0,781,782,3,246,120,0,782,123,1,0,0,0,783,784,3,258,126,0,784,785,3,232,
113,0,785,786,3,258,126,0,786,125,1,0,0,0,787,788,3,258,126,0,788,789,
3,260,127,0,789,790,3,270,132,0,790,127,1,0,0,0,791,792,3,258,126,0,792,
793,3,272,133,0,793,794,3,254,124,0,794,795,3,254,124,0,795,129,1,0,0,
0,796,797,3,258,126,0,797,798,3,272,133,0,798,799,3,254,124,0,799,800,
3,254,124,0,800,801,3,268,131,0,801,131,1,0,0,0,802,803,3,260,127,0,803,
804,3,242,118,0,804,805,3,242,118,0,805,806,3,268,131,0,806,807,3,240,
117,0,807,808,3,270,132,0,808,133,1,0,0,0,809,810,3,260,127,0,810,811,
3,258,126,0,811,135,1,0,0,0,812,813,3,260,127,0,813,814,3,266,130,0,814,
137,1,0,0,0,815,816,3,260,127,0,816,817,3,266,130,0,817,818,3,238,116,
0,818,819,3,240,117,0,819,820,3,266,130,0,820,139,1,0,0,0,821,822,3,260,
127,0,822,823,3,272,133,0,823,824,3,270,132,0,824,825,3,240,117,0,825,
826,3,266,130,0,826,141,1,0,0,0,827,828,3,260,127,0,828,829,3,274,134,
0,829,830,3,240,117,0,830,831,3,266,130,0,831,143,1,0,0,0,832,833,3,262,
128,0,833,834,3,232,113,0,834,835,3,266,130,0,835,836,3,270,132,0,836,
837,3,248,121,0,837,838,3,270,132,0,838,839,3,248,121,0,839,840,3,260,
127,0,840,841,3,258,126,0,841,145,1,0,0,0,842,843,3,262,128,0,843,844,
3,266,130,0,844,845,3,240,117,0,845,846,3,236,115,0,846,847,3,240,117,
0,847,848,3,238,116,0,848,849,3,248,121,0,849,850,3,258,126,0,850,851,
3,244,119,0,851,147,1,0,0,0,852,853,3,262,128,0,853,854,3,266,130,0,854,
855,3,240,117,0,855,856,3,276,135,0,856,857,3,246,120,0,857,858,3,240,
117,0,858,859,3,266,130,0,859,860,3,240,117,0,860,149,1,0,0,0,861,862,
3,264,129,0,862,863,3,272,133,0,863,864,3,232,113,0,864,865,3,266,130,
0,865,866,3,270,132,0,866,867,3,240,117,0,867,868,3,266,130,0,868,151,
1,0,0,0,869,870,3,266,130,0,870,871,3,232,113,0,871,872,3,258,126,0,872,
873,3,244,119,0,873,874,3,240,117,0,874,153,1,0,0,0,875,876,3,266,130,
0,876,877,3,240,117,0,877,878,3,270,132,0,878,879,3,272,133,0,879,880,
3,266,130,0,880,881,3,258,126,0,881,155,1,0,0,0,882,883,3,266,130,0,883,
884,3,248,121,0,884,885,3,244,119,0,885,886,3,246,120,0,886,887,3,270,
132,0,887,157,1,0,0,0,888,889,3,266,130,0,889,890,3,260,127,0,890,891,
3,254,124,0,891,892,3,254,124,0,892,893,3,272,133,0,893,894,3,262,128,
0,894,159,1,0,0,0,895,896,3,266,130,0,896,897,3,260,127,0,897,898,3,276,
135,0,898,161,1,0,0,0,899,900,3,266,130,0,900,901,3,260,127,0,901,902,
3,276,135,0,902,903,3,268,131,0,903,163,1,0,0,0,904,905,3,268,131,0,905,
906,3,232,113,0,906,907,3,256,125,0,907,908,3,262,128,0,908,909,3,254,
124,0,909,910,3,240,117,0,910,165,1,0,0,0,911,912,3,268,131,0,912,913,
3,240,117,0,913,914,3,236,115,0,914,915,3,260,127,0,915,916,3,258,126,
0,916,917,3,238,116,0,917,167,1,0,0,0,918,919,3,268,131,0,919,920,3,240,
117,0,920,921,3,254,124,0,921,922,3,240,117,0,922,923,3,236,115,0,923,
924,3,270,132,0,924,169,1,0,0,0,925,926,3,268,131,0,926,927,3,240,117,
0,927,928,3,256,125,0,928,929,3,248,121,0,929,171,1,0,0,0,930,931,3,268,
131,0,931,932,3,240,117,0,932,933,3,270,132,0,933,934,3,270,132,0,934,
935,3,248,121,0,935,936,3,258,126,0,936,937,3,244,119,0,937,938,3,268,
131,0,938,173,1,0,0,0,939,940,3,268,131,0,940,941,3,272,133,0,941,942,
3,234,114,0,942,943,3,268,131,0,943,944,3,270,132,0,944,945,3,266,130,
0,945,946,3,248,121,0,946,947,3,258,126,0,947,948,3,244,119,0,948,175,
1,0,0,0,949,950,3,270,132,0,950,951,3,246,120,0,951,952,3,240,117,0,952,
953,3,258,126,0,953,177,1,0,0,0,954,955,3,270,132,0,955,956,3,246,120,
0,956,957,3,266,130,0,957,958,3,260,127,0,958,959,3,276,135,0,959,179,
1,0,0,0,960,961,3,270,132,0,961,962,3,248,121,0,962,963,3,240,117,0,963,
964,3,268,131,0,964,181,1,0,0,0,965,966,3,270,132,0,966,967,3,248,121,
0,967,968,3,256,125,0,968,969,3,240,117,0,969,970,3,268,131,0,970,971,
3,270,132,0,971,972,3,232,113,0,972,973,3,256,125,0,973,974,3,262,128,
0,974,183,1,0,0,0,975,976,3,270,132,0,976,977,3,260,127,0,977,185,1,0,
0,0,978,979,3,270,132,0,979,980,3,260,127,0,980,981,3,262,128,0,981,187,
1,0,0,0,982,983,3,270,132,0,983,984,3,260,127,0,984,985,3,270,132,0,985,
986,3,232,113,0,986,987,3,254,124,0,987,988,3,268,131,0,988,189,1,0,0,
0,989,990,3,270,132,0,990,991,3,266,130,0,991,992,3,232,113,0,992,993,
3,248,121,0,993,994,3,254,124,0,994,995,3,248,121,0,995,996,3,258,126,
0,996,997,3,244,119,0,997,191,1,0,0,0,998,999,3,270,132,0,999,1000,3,
266,130,0,1000,1001,3,248,121,0,1001,1002,3,256,125,0,1002,193,1,0,0,
0,1003,1004,3,270,132,0,1004,1005,3,266,130,0,1005,1006,3,272,133,0,1006,
1007,3,258,126,0,1007,1008,3,236,115,0,1008,1009,3,232,113,0,1009,1010,
3,270,132,0,1010,1011,3,240,117,0,1011,195,1,0,0,0,1012,1013,3,270,132,
0,1013,1014,3,266,130,0,1014,1015,3,280,137,0,1015,197,1,0,0,0,1016,1017,
3,272,133,0,1017,1018,3,258,126,0,1018,1019,3,234,114,0,1019,1020,3,260,
127,0,1020,1021,3,272,133,0,1021,1022,3,258,126,0,1022,1023,3,238,116,
0,1023,1024,3,240,117,0,1024,1025,3,238,116,0,1025,199,1,0,0,0,1026,1027,
3,272,133,0,1027,1028,3,258,126,0,1028,1029,3,248,121,0,1029,1030,3,260,
127,0,1030,1031,3,258,126,0,1031,201,1,0,0,0,1032,1033,3,272,133,0,1033,
1034,3,268,131,0,1034,1035,3,248,121,0,1035,1036,3,258,126,0,1036,1037,
3,244,119,0,1037,203,1,0,0,0,1038,1039,3,276,135,0,1039,1040,3,240,117,
0,1040,1041,3,240,117,0,1041,1042,3,252,123,0,1042,205,1,0,0,0,1043,1044,
3,276,135,0,1044,1045,3,246,120,0,1045,1046,3,240,117,0,1046,1047,3,258,
126,0,1047,207,1,0,0,0,1048,1049,3,276,135,0,1049,1050,3,246,120,0,1050,
1051,3,240,117,0,1051,1052,3,266,130,0,1052,1053,3,240,117,0,1053,209,
1,0,0,0,1054,1055,3,276,135,0,1055,1056,3,246,120,0,1056,1057,3,248,121,
0,1057,1058,3,254,124,0,1058,1059,3,240,117,0,1059,211,1,0,0,0,1060,1061,
3,276,135,0,1061,1062,3,248,121,0,1062,1063,3,258,126,0,1063,1064,3,238,
116,0,1064,1065,3,260,127,0,1065,1066,3,276,135,0,1066,213,1,0,0,0,1067,
1068,3,276,135,0,1068,1069,3,248,121,0,1069,1070,3,270,132,0,1070,1071,
3,246,120,0,1071,215,1,0,0,0,1072,1073,3,280,137,0,1073,1074,3,240,117,
0,1074,1075,3,232,113,0,1075,1076,3,266,130,0,1076,1083,1,0,0,0,1077,
1078,3,280,137,0,1078,1079,3,280,137,0,1079,1080,3,280,137,0,1080,1081,
3,280,137,0,1081,1083,1,0,0,0,1082,1072,1,0,0,0,1082,1077,1,0,0,0,1083,
217,1,0,0,0,1084,1085,3,298,146,0,1085,1086,3,234,114,0,1086,1112,1,0,
0,0,1087,1088,3,298,146,0,1088,1089,3,242,118,0,1089,1112,1,0,0,0,1090,
1091,3,298,146,0,1091,1092,3,266,130,0,1092,1112,1,0,0,0,1093,1094,3,
298,146,0,1094,1095,3,258,126,0,1095,1112,1,0,0,0,1096,1097,3,298,146,
0,1097,1098,3,270,132,0,1098,1112,1,0,0,0,1099,1100,3,298,146,0,1100,
1101,5,48,0,0,1101,1112,1,0,0,0,1102,1103,3,298,146,0,1103,1104,3,232,
113,0,1104,1112,1,0,0,0,1105,1106,3,298,146,0,1106,1107,3,274,134,0,1107,
1112,1,0,0,0,1108,1109,3,298,146,0,1109,1110,3,298,146,0,1110,1112,1,
0,0,0,1111,1084,1,0,0,0,1111,1087,1,0,0,0,1111,1090,1,0,0,0,1111,1093,
1,0,0,0,1111,1096,1,0,0,0,1111,1099,1,0,0,0,1111,1102,1,0,0,0,1111,1105,
1,0,0,0,1111,1108,1,0,0,0,1112,219,1,0,0,0,1113,1117,3,284,139,0,1114,
1117,3,382,188,0,1115,1117,3,308,151,0,1116,1113,1,0,0,0,1116,1114,1,
0,0,0,1116,1115,1,0,0,0,1117,1124,1,0,0,0,1118,1123,3,284,139,0,1119,
1123,3,382,188,0,1120,1123,3,288,141,0,1121,1123,3,308,151,0,1122,1118,
1,0,0,0,1122,1119,1,0,0,0,1122,1120,1,0,0,0,1122,1121,1,0,0,0,1123,1126,
1,0,0,0,1124,1122,1,0,0,0,1124,1125,1,0,0,0,1125,1160,1,0,0,0,1126,1124,
1,0,0,0,1127,1138,3,296,145,0,1128,1137,8,0,0,0,1129,1137,3,218,106,0,
1130,1131,3,298,146,0,1131,1132,3,364,179,0,1132,1137,1,0,0,0,1133,1134,
3,296,145,0,1134,1135,3,296,145,0,1135,1137,1,0,0,0,1136,1128,1,0,0,0,
1136,1129,1,0,0,0,1136,1130,1,0,0,0,1136,1133,1,0,0,0,1137,1140,1,0,0,
0,1138,1136,1,0,0,0,1138,1139,1,0,0,0,1139,1141,1,0,0,0,1140,1138,1,0,
0,0,1141,1142,3,296,145,0,1142,1160,1,0,0,0,1143,1154,3,358,176,0,1144,
1153,8,1,0,0,1145,1153,3,218,106,0,1146,1147,3,298,146,0,1147,1148,3,
358,176,0,1148,1153,1,0,0,0,1149,1150,3,358,176,0,1150,1151,3,358,176,
0,1151,1153,1,0,0,0,1152,1144,1,0,0,0,1152,1145,1,0,0,0,1152,1146,1,0,
0,0,1152,1149,1,0,0,0,1153,1156,1,0,0,0,1154,1152,1,0,0,0,1154,1155,1,
0,0,0,1155,1157,1,0,0,0,1156,1154,1,0,0,0,1157,1158,3,358,176,0,1158,
1160,1,0,0,0,1159,1116,1,0,0,0,1159,1127,1,0,0,0,1159,1143,1,0,0,0,1160,
221,1,0,0,0,1161,1162,3,228,111,0,1162,1166,3,310,152,0,1163,1165,3,290,
142,0,1164,1163,1,0,0,0,1165,1168,1,0,0,0,1166,1164,1,0,0,0,1166,1167,
1,0,0,0,1167,1171,1,0,0,0,1168,1166,1,0,0,0,1169,1172,3,262,128,0,1170,
1172,3,240,117,0,1171,1169,1,0,0,0,1171,1170,1,0,0,0,1172,1175,1,0,0,
0,1173,1176,3,354,174,0,1174,1176,3,306,150,0,1175,1173,1,0,0,0,1175,
1174,1,0,0,0,1175,1176,1,0,0,0,1176,1178,1,0,0,0,1177,1179,3,288,141,
0,1178,1177,1,0,0,0,1179,1180,1,0,0,0,1180,1178,1,0,0,0,1180,1181,1,0,
0,0,1181,1238,1,0,0,0,1182,1185,3,228,111,0,1183,1186,3,262,128,0,1184,
1186,3,240,117,0,1185,1183,1,0,0,0,1185,1184,1,0,0,0,1186,1189,1,0,0,
0,1187,1190,3,354,174,0,1188,1190,3,306,150,0,1189,1187,1,0,0,0,1189,
1188,1,0,0,0,1189,1190,1,0,0,0,1190,1192,1,0,0,0,1191,1193,3,288,141,
0,1192,1191,1,0,0,0,1193,1194,1,0,0,0,1194,1192,1,0,0,0,1194,1195,1,0,
0,0,1195,1238,1,0,0,0,1196,1197,3,226,110,0,1197,1201,3,310,152,0,1198,
1200,3,288,141,0,1199,1198,1,0,0,0,1200,1203,1,0,0,0,1201,1199,1,0,0,
0,1201,1202,1,0,0,0,1202,1204,1,0,0,0,1203,1201,1,0,0,0,1204,1207,3,240,
117,0,1205,1208,3,354,174,0,1206,1208,3,306,150,0,1207,1205,1,0,0,0,1207,
1206,1,0,0,0,1207,1208,1,0,0,0,1208,1210,1,0,0,0,1209,1211,3,288,141,
0,1210,1209,1,0,0,0,1211,1212,1,0,0,0,1212,1210,1,0,0,0,1212,1213,1,0,
0,0,1213,1238,1,0,0,0,1214,1215,3,310,152,0,1215,1216,3,226,110,0,1216,
1219,3,240,117,0,1217,1220,3,354,174,0,1218,1220,3,306,150,0,1219,1217,
1,0,0,0,1219,1218,1,0,0,0,1219,1220,1,0,0,0,1220,1222,1,0,0,0,1221,1223,
3,288,141,0,1222,1221,1,0,0,0,1223,1224,1,0,0,0,1224,1222,1,0,0,0,1224,
1225,1,0,0,0,1225,1238,1,0,0,0,1226,1227,3,226,110,0,1227,1230,3,240,
117,0,1228,1231,3,354,174,0,1229,1231,3,306,150,0,1230,1228,1,0,0,0,1230,
1229,1,0,0,0,1230,1231,1,0,0,0,1231,1233,1,0,0,0,1232,1234,3,288,141,
0,1233,1232,1,0,0,0,1234,1235,1,0,0,0,1235,1233,1,0,0,0,1235,1236,1,0,
0,0,1236,1238,1,0,0,0,1237,1161,1,0,0,0,1237,1182,1,0,0,0,1237,1196,1,
0,0,0,1237,1214,1,0,0,0,1237,1226,1,0,0,0,1238,223,1,0,0,0,1239,1241,
5,48,0,0,1240,1242,3,286,140,0,1241,1240,1,0,0,0,1242,1243,1,0,0,0,1243,
1241,1,0,0,0,1243,1244,1,0,0,0,1244,225,1,0,0,0,1245,1247,3,288,141,0,
1246,1245,1,0,0,0,1247,1248,1,0,0,0,1248,1246,1,0,0,0,1248,1249,1,0,0,
0,1249,227,1,0,0,0,1250,1251,5,48,0,0,1251,1253,3,278,136,0,1252,1254,
3,290,142,0,1253,1252,1,0,0,0,1254,1255,1,0,0,0,1255,1253,1,0,0,0,1255,
1256,1,0,0,0,1256,229,1,0,0,0,1257,1268,3,364,179,0,1258,1267,8,2,0,0,
1259,1267,3,218,106,0,1260,1261,3,298,146,0,1261,1262,3,364,179,0,1262,
1267,1,0,0,0,1263,1264,3,364,179,0,1264,1265,3,364,179,0,1265,1267,1,
0,0,0,1266,1258,1,0,0,0,1266,1259,1,0,0,0,1266,1260,1,0,0,0,1266,1263,
1,0,0,0,1267,1270,1,0,0,0,1268,1266,1,0,0,0,1268,1269,1,0,0,0,1269,1271,
1,0,0,0,1270,1268,1,0,0,0,1271,1272,3,364,179,0,1272,231,1,0,0,0,1273,
1274,7,3,0,0,1274,233,1,0,0,0,1275,1276,7,4,0,0,1276,235,1,0,0,0,1277,
1278,7,5,0,0,1278,237,1,0,0,0,1279,1280,7,6,0,0,1280,239,1,0,0,0,1281,
1282,7,7,0,0,1282,241,1,0,0,0,1283,1284,7,8,0,0,1284,243,1,0,0,0,1285,
1286,7,9,0,0,1286,245,1,0,0,0,1287,1288,7,10,0,0,1288,247,1,0,0,0,1289,
1290,7,11,0,0,1290,249,1,0,0,0,1291,1292,7,12,0,0,1292,251,1,0,0,0,1293,
1294,7,13,0,0,1294,253,1,0,0,0,1295,1296,7,14,0,0,1296,255,1,0,0,0,1297,
1298,7,15,0,0,1298,257,1,0,0,0,1299,1300,7,16,0,0,1300,259,1,0,0,0,1301,
1302,7,17,0,0,1302,261,1,0,0,0,1303,1304,7,18,0,0,1304,263,1,0,0,0,1305,
1306,7,19,0,0,1306,265,1,0,0,0,1307,1308,7,20,0,0,1308,267,1,0,0,0,1309,
1310,7,21,0,0,1310,269,1,0,0,0,1311,1312,7,22,0,0,1312,271,1,0,0,0,1313,
1314,7,23,0,0,1314,273,1,0,0,0,1315,1316,7,24,0,0,1316,275,1,0,0,0,1317,
1318,7,25,0,0,1318,277,1,0,0,0,1319,1320,7,26,0,0,1320,279,1,0,0,0,1321,
1322,7,27,0,0,1322,281,1,0,0,0,1323,1324,7,28,0,0,1324,283,1,0,0,0,1325,
1326,7,29,0,0,1326,285,1,0,0,0,1327,1328,7,30,0,0,1328,287,1,0,0,0,1329,
1330,7,31,0,0,1330,289,1,0,0,0,1331,1332,7,32,0,0,1332,291,1,0,0,0,1333,
1334,5,45,0,0,1334,1335,5,62,0,0,1335,293,1,0,0,0,1336,1337,5,42,0,0,
1337,295,1,0,0,0,1338,1339,5,96,0,0,1339,297,1,0,0,0,1340,1341,5,92,0,
0,1341,299,1,0,0,0,1342,1343,5,58,0,0,1343,301,1,0,0,0,1344,1345,5,44,
0,0,1345,303,1,0,0,0,1346,1347,5,124,0,0,1347,1348,5,124,0,0,1348,305,
1,0,0,0,1349,1350,5,45,0,0,1350,307,1,0,0,0,1351,1352,5,36,0,0,1352,309,
1,0,0,0,1353,1354,5,46,0,0,1354,311,1,0,0,0,1355,1356,5,61,0,0,1356,1357,
5,61,0,0,1357,313,1,0,0,0,1358,1359,5,61,0,0,1359,315,1,0,0,0,1360,1361,
5,62,0,0,1361,1362,5,61,0,0,1362,317,1,0,0,0,1363,1364,5,62,0,0,1364,
319,1,0,0,0,1365,1366,5,35,0,0,1366,321,1,0,0,0,1367,1368,5,126,0,0,1368,
1369,5,42,0,0,1369,323,1,0,0,0,1370,1371,5,61,0,0,1371,1372,5,126,0,0,
1372,1373,5,42,0,0,1373,325,1,0,0,0,1374,1375,5,123,0,0,1375,1376,1,0,
0,0,1376,1377,6,160,0,0,1377,327,1,0,0,0,1378,1379,5,91,0,0,1379,329,
1,0,0,0,1380,1381,5,40,0,0,1381,331,1,0,0,0,1382,1383,5,60,0,0,1383,1384,
5,61,0,0,1384,333,1,0,0,0,1385,1386,5,60,0,0,1386,1387,5,47,0,0,1387,
1388,1,0,0,0,1388,1389,6,164,1,0,1389,1390,6,164,2,0,1390,335,1,0,0,0,
1391,1392,5,60,0,0,1392,1393,4,165,0,0,1393,1394,1,0,0,0,1394,1395,6,
165,3,0,1395,1396,6,165,4,0,1396,337,1,0,0,0,1397,1398,5,60,0,0,1398,
339,1,0,0,0,1399,1400,5,60,0,0,1400,1401,5,47,0,0,1401,341,1,0,0,0,1402,
1403,5,33,0,0,1403,1407,5,61,0,0,1404,1405,5,60,0,0,1405,1407,5,62,0,
0,1406,1402,1,0,0,0,1406,1404,1,0,0,0,1407,343,1,0,0,0,1408,1409,5,33,
0,0,1409,1410,5,126,0,0,1410,1411,5,42,0,0,1411,345,1,0,0,0,1412,1413,
5,33,0,0,1413,1414,5,126,0,0,1414,347,1,0,0,0,1415,1416,5,63,0,0,1416,
1417,5,46,0,0,1417,349,1,0,0,0,1418,1419,5,63,0,0,1419,1420,5,63,0,0,
1420,351,1,0,0,0,1421,1422,5,37,0,0,1422,353,1,0,0,0,1423,1424,5,43,0,
0,1424,355,1,0,0,0,1425,1426,5,63,0,0,1426,357,1,0,0,0,1427,1428,5,34,
0,0,1428,359,1,0,0,0,1429,1430,5,102,0,0,1430,1431,5,39,0,0,1431,1432,
1,0,0,0,1432,1433,6,177,5,0,1433,361,1,0,0,0,1434,1435,5,70,0,0,1435,
1436,5,39,0,0,1436,1437,1,0,0,0,1437,1438,6,178,6,0,1438,363,1,0,0,0,
1439,1440,5,39,0,0,1440,365,1,0,0,0,1441,1442,5,126,0,0,1442,367,1,0,
0,0,1443,1444,5,61,0,0,1444,1445,5,126,0,0,1445,369,1,0,0,0,1446,1447,
5,125,0,0,1447,1448,1,0,0,0,1448,1449,6,182,7,0,1449,371,1,0,0,0,1450,
1451,5,93,0,0,1451,373,1,0,0,0,1452,1453,5,41,0,0,1453,375,1,0,0,0,1454,
1455,5,59,0,0,1455,377,1,0,0,0,1456,1457,5,47,0,0,1457,379,1,0,0,0,1458,
1459,5,47,0,0,1459,1460,5,62,0,0,1460,381,1,0,0,0,1461,1462,5,95,0,0,
1462,383,1,0,0,0,1463,1464,5,47,0,0,1464,1465,5,42,0,0,1465,1469,1,0,
0,0,1466,1468,9,0,0,0,1467,1466,1,0,0,0,1468,1471,1,0,0,0,1469,1470,1,
0,0,0,1469,1467,1,0,0,0,1470,1472,1,0,0,0,1471,1469,1,0,0,0,1472,1473,
5,42,0,0,1473,1474,5,47,0,0,1474,1475,1,0,0,0,1475,1476,6,189,8,0,1476,
385,1,0,0,0,1477,1478,5,45,0,0,1478,1482,5,45,0,0,1479,1480,5,47,0,0,
1480,1482,5,47,0,0,1481,1477,1,0,0,0,1481,1479,1,0,0,0,1482,1486,1,0,
0,0,1483,1485,8,33,0,0,1484,1483,1,0,0,0,1485,1488,1,0,0,0,1486,1484,
1,0,0,0,1486,1487,1,0,0,0,1487,1490,1,0,0,0,1488,1486,1,0,0,0,1489,1491,
7,34,0,0,1490,1489,1,0,0,0,1491,1492,1,0,0,0,1492,1493,6,190,8,0,1493,
387,1,0,0,0,1494,1495,7,35,0,0,1495,1496,1,0,0,0,1496,1497,6,191,9,0,
1497,389,1,0,0,0,1498,1510,8,36,0,0,1499,1510,3,218,106,0,1500,1501,3,
298,146,0,1501,1502,3,364,179,0,1502,1510,1,0,0,0,1503,1504,3,298,146,
0,1504,1505,3,326,160,0,1505,1510,1,0,0,0,1506,1507,3,364,179,0,1507,
1508,3,364,179,0,1508,1510,1,0,0,0,1509,1498,1,0,0,0,1509,1499,1,0,0,
0,1509,1500,1,0,0,0,1509,1503,1,0,0,0,1509,1506,1,0,0,0,1510,1511,1,0,
0,0,1511,1509,1,0,0,0,1511,1512,1,0,0,0,1512,391,1,0,0,0,1513,1514,3,
326,160,0,1514,1515,1,0,0,0,1515,1516,6,193,0,0,1516,393,1,0,0,0,1517,
1518,3,364,179,0,1518,1519,1,0,0,0,1519,1520,6,194,10,0,1520,1521,6,194,
7,0,1521,395,1,0,0,0,1522,1528,8,37,0,0,1523,1528,3,218,106,0,1524,1525,
3,298,146,0,1525,1526,3,326,160,0,1526,1528,1,0,0,0,1527,1522,1,0,0,0,
1527,1523,1,0,0,0,1527,1524,1,0,0,0,1528,1529,1,0,0,0,1529,1527,1,0,0,
0,1529,1530,1,0,0,0,1530,397,1,0,0,0,1531,1532,3,326,160,0,1532,1533,
1,0,0,0,1533,1534,6,196,0,0,1534,399,1,0,0,0,1535,1536,5,47,0,0,1536,
1537,5,62,0,0,1537,1538,1,0,0,0,1538,1539,6,197,11,0,1539,1540,6,197,
7,0,1540,401,1,0,0,0,1541,1542,5,62,0,0,1542,1543,1,0,0,0,1543,1544,6,
198,12,0,1544,1545,6,198,7,0,1545,1546,6,198,13,0,1546,403,1,0,0,0,1547,
1551,7,38,0,0,1548,1550,7,39,0,0,1549,1548,1,0,0,0,1550,1553,1,0,0,0,
1551,1549,1,0,0,0,1551,1552,1,0,0,0,1552,1554,1,0,0,0,1553,1551,1,0,0,
0,1554,1555,6,199,14,0,1555,405,1,0,0,0,1556,1557,5,61,0,0,1557,1558,
1,0,0,0,1558,1559,6,200,15,0,1559,407,1,0,0,0,1560,1561,3,230,112,0,1561,
1562,1,0,0,0,1562,1563,6,201,16,0,1563,409,1,0,0,0,1564,1566,7,40,0,0,
1565,1564,1,0,0,0,1566,1567,1,0,0,0,1567,1565,1,0,0,0,1567,1568,1,0,0,
0,1568,1569,1,0,0,0,1569,1570,6,202,9,0,1570,411,1,0,0,0,1571,1572,5,
123,0,0,1572,1573,1,0,0,0,1573,1574,6,203,17,0,1574,1575,6,203,0,0,1575,
413,1,0,0,0,1576,1577,5,62,0,0,1577,1578,1,0,0,0,1578,1579,6,204,12,0,
1579,1580,6,204,7,0,1580,415,1,0,0,0,1581,1585,7,38,0,0,1582,1584,7,39,
0,0,1583,1582,1,0,0,0,1584,1587,1,0,0,0,1585,1583,1,0,0,0,1585,1586,1,
0,0,0,1586,1588,1,0,0,0,1587,1585,1,0,0,0,1588,1589,6,205,14,0,1589,417,
1,0,0,0,1590,1592,7,40,0,0,1591,1590,1,0,0,0,1592,1593,1,0,0,0,1593,1591,
1,0,0,0,1593,1594,1,0,0,0,1594,1595,1,0,0,0,1595,1596,6,206,9,0,1596,
419,1,0,0,0,1597,1599,8,41,0,0,1598,1597,1,0,0,0,1599,1600,1,0,0,0,1600,
1598,1,0,0,0,1600,1601,1,0,0,0,1601,421,1,0,0,0,1602,1603,5,123,0,0,1603,
1604,1,0,0,0,1604,1605,6,208,17,0,1605,1606,6,208,0,0,1606,423,1,0,0,
0,1607,1608,5,60,0,0,1608,1609,5,47,0,0,1609,1610,1,0,0,0,1610,1611,6,
209,1,0,1611,1612,6,209,7,0,1612,1613,6,209,2,0,1613,425,1,0,0,0,1614,
1615,5,60,0,0,1615,1616,1,0,0,0,1616,1617,6,210,3,0,1617,1618,6,210,4,
0,1618,427,1,0,0,0,1619,1621,7,40,0,0,1620,1619,1,0,0,0,1621,1622,1,0,
0,0,1622,1620,1,0,0,0,1622,1623,1,0,0,0,1623,1624,1,0,0,0,1624,1625,6,
211,9,0,1625,429,1,0,0,0,53,0,1,2,3,4,5,470,698,1082,1111,1116,1122,1124,
1136,1138,1152,1154,1159,1166,1171,1175,1180,1185,1189,1194,1201,1207,
1212,1219,1224,1230,1235,1237,1243,1248,1255,1266,1268,1406,1469,1481,
1486,1490,1509,1511,1527,1529,1551,1567,1585,1593,1600,1622,18,5,0,0,
7,136,0,5,4,0,7,135,0,5,3,0,5,1,0,5,2,0,4,0,0,6,0,0,0,1,0,7,148,0,7,156,
0,7,127,0,5,5,0,7,108,0,7,125,0,7,113,0,7,131,0
};
staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));
antlr4::atn::ATNDeserializer deserializer;
staticData->atn = deserializer.deserialize(staticData->serializedATN);
const size_t count = staticData->atn->getNumberOfDecisions();
staticData->decisionToDFA.reserve(count);
for (size_t i = 0; i < count; i++) {
staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i);
}
hogqllexerLexerStaticData = std::move(staticData);
}
}
HogQLLexer::HogQLLexer(CharStream *input) : Lexer(input) {
HogQLLexer::initialize();
_interpreter = new atn::LexerATNSimulator(this, *hogqllexerLexerStaticData->atn, hogqllexerLexerStaticData->decisionToDFA, hogqllexerLexerStaticData->sharedContextCache);
}
HogQLLexer::~HogQLLexer() {
delete _interpreter;
}
std::string HogQLLexer::getGrammarFileName() const {
return "HogQLLexer.g4";
}
const std::vector<std::string>& HogQLLexer::getRuleNames() const {
return hogqllexerLexerStaticData->ruleNames;
}
const std::vector<std::string>& HogQLLexer::getChannelNames() const {
return hogqllexerLexerStaticData->channelNames;
}
const std::vector<std::string>& HogQLLexer::getModeNames() const {
return hogqllexerLexerStaticData->modeNames;
}
const dfa::Vocabulary& HogQLLexer::getVocabulary() const {
return hogqllexerLexerStaticData->vocabulary;
}
antlr4::atn::SerializedATNView HogQLLexer::getSerializedATN() const {
return hogqllexerLexerStaticData->serializedATN;
}
const atn::ATN& HogQLLexer::getATN() const {
return *hogqllexerLexerStaticData->atn;
}
bool HogQLLexer::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) {
switch (ruleIndex) {
case 165: return TAG_LT_OPENSempred(antlrcpp::downCast<antlr4::RuleContext *>(context), predicateIndex);
default:
break;
}
return true;
}
bool HogQLLexer::TAG_LT_OPENSempred(antlr4::RuleContext *_localctx, size_t predicateIndex) {
switch (predicateIndex) {
case 0: return isOpeningTag();
default:
break;
}
return true;
}
void HogQLLexer::initialize() {
#if ANTLR4_USE_THREAD_LOCAL_CACHE
hogqllexerLexerInitialize();
#else
::antlr4::internal::call_once(hogqllexerLexerOnceFlag, hogqllexerLexerInitialize);
#endif
}