diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 659dbc7..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-qt_ui/ filter=lfs diff=lfs merge=lfs -text
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2cc6247..1f98903 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,7 +12,6 @@ enable_testing()
# library in subdirectory
add_subdirectory(3rd)
add_subdirectory(src)
-# add_subdirectory(test)
# excutable
diff --git a/README.md b/README.md
index 0199d24..4f0c20a 100644
--- a/README.md
+++ b/README.md
@@ -1,101 +1,22 @@
-# 所以你★star★了吗!!!
-# millet porridge III --stage3
+# 环境
+- x86 Debian GNU/Linux 12
+- Python 3.11.2
+- gcc version 12.2.2
+- openJDK version "17.0.12"
+- NASM version 2.16.01
+- antlr complete & runtime Version: 4.9.3
-```
-package main
-
-var a int=1;
-
-func add1(x,y int) (int, int) {
- x = x + 1
- y = y + 1
- return x,y
-}
-
-func main() {
- var a int;
- var b int = 4-(2+4-4)+3;
- a=0;
- if a < 20 {
- a = 2;
- } else {
- if a < 10 {
- a = 1;
- } else {
- a = 3;
- }
- }
- for i := 0; i <= 10; i++ {
- a = i;
- }
- a,b=add1(a,b)
- a,b=add1(1,2)
- // var
-}
-```
-
-```
- 9 Operater: ADD src1: IMM: 2 src2: IMM: 4 dst: VAR: T8
- 10 Operater: SUB src1: VAR: T8 src2: IMM: 4 dst: VAR: T10
- 11 Operater: SUB src1: IMM: 4 src2: VAR: T10 dst: VAR: T11
- 12 Operater: ADD src1: VAR: T11 src2: IMM: 3 dst: VAR: T13
- 13 Operater: ASSIGN src1: VAR: T13 src2: NULL_: dst: VAR: b
- 14 Operater: ASSIGN src1: IMM: 0 src2: NULL_: dst: VAR: a
- 15 Operater: IFGE src1: VAR: a src2: IMM: 20 dst: VAR: ELSE0
- 16 Operater: ASSIGN src1: IMM: 2 src2: NULL_: dst: VAR: a
- 17 Operater: GOTO src1: NULL_: ENDIF0 src2: NULL_: dst: NULL_:
- 18 Operater: LABEL src1: NULL_: ELSE0 src2: NULL_: dst: NULL_:
- 19 Operater: IFGE src1: VAR: a src2: IMM: 10 dst: VAR: ELSE1
- 20 Operater: ASSIGN src1: IMM: 1 src2: NULL_: dst: VAR: a
- 21 Operater: GOTO src1: NULL_: ENDIF1 src2: NULL_: dst: NULL_:
- 22 Operater: LABEL src1: NULL_: ELSE1 src2: NULL_: dst: NULL_:
- 23 Operater: ASSIGN src1: IMM: 3 src2: NULL_: dst: VAR: a
- 24 Operater: LABEL src1: NULL_: ENDIF1 src2: NULL_: dst: NULL_:
- 25 Operater: LABEL src1: NULL_: ENDIF0 src2: NULL_: dst: NULL_:
- 26 Operater: ASSIGN src1: IMM: 0 src2: NULL_: dst: VAR: i
- 27 Operater: IFGT src1: VAR: i src2: IMM: 10 dst: VAR:ENDFOR0
- 28 Operater: LABEL src1: NULL_:FORLOOP0 src2: NULL_: dst: NULL_:
- 29 Operater: ASSIGN src1: VAR: i src2: NULL_: dst: VAR: a
- 30 Operater: ADD src1: VAR: i src2: IMM: 1 dst: VAR: i
- 31 Operater: IFLE src1: VAR: i src2: IMM: 10 dst: VAR:FORLOOP0
- 32 Operater: LABEL src1: NULL_:ENDFOR0 src2: NULL_: dst: NULL_:
- 33 Operater: RET src1: VAR: T22 src2: NULL_: dst: NULL_:
- 34 Operater: RET src1: VAR: T23 src2: NULL_: dst: NULL_:
- 35 Operater: PARA src1: VAR: a src2: NULL_: dst: NULL_:
- 36 Operater: PARA src1: VAR: b src2: NULL_: dst: NULL_:
- 37 Operater: CALL src1: VAR: add1 src2: NULL_: dst: NULL_:
- 38 Operater: ASSIGN src1: VAR: T22 src2: NULL_: dst: VAR: a
- 39 Operater: ASSIGN src1: VAR: T23 src2: NULL_: dst: VAR: b
- 40 Operater: RET src1: VAR: T26 src2: NULL_: dst: NULL_:
- 41 Operater: RET src1: VAR: T27 src2: NULL_: dst: NULL_:
- 42 Operater: PARA src1: IMM: 1 src2: NULL_: dst: NULL_:
- 43 Operater: PARA src1: IMM: 2 src2: NULL_: dst: NULL_:
- 44 Operater: CALL src1: VAR: add1 src2: NULL_: dst: NULL_:
- 45 Operater: ASSIGN src1: VAR: T26 src2: NULL_: dst: VAR: a
- 46 Operater: ASSIGN src1: VAR: T27 src2: NULL_: dst: VAR: b
-----------------------
- 1 Operater: FUN_PARA src1: VAR: x src2: NULL_: dst: NULL_:
- 2 Operater: FUN_PARA src1: VAR: y src2: NULL_: dst: NULL_:
- 3 Operater: ADD src1: VAR: x src2: IMM: 1 dst: VAR: T2
- 4 Operater: ASSIGN src1: VAR: T2 src2: NULL_: dst: VAR: x
- 5 Operater: ADD src1: VAR: y src2: IMM: 1 dst: VAR: T4
- 6 Operater: ASSIGN src1: VAR: T4 src2: NULL_: dst: VAR: y
- 7 Operater: FUN_RET src1: VAR: x src2: NULL_: dst: NULL_:
- 8 Operater: FUN_RET src1: VAR: y src2: NULL_: dst: NULL_:
-----------------------
- 0 Operater: ASSIGN src1: IMM: 1 src2: NULL_: dst: VAR: a
-----------------------
-```
-
-生成汇编:
+# 执行
```shell
-./tjugo ../example/.go
+bash runme.sh
```
-运行汇编:
+参数说明:
+1. -d (--dir): [default: ./ ] 输出文件路径
+2. -3 (--3code): [default: 3code.txt] 输出 3code 文件名
+3. -a (--asm): [default: out] 输出 asm 文件名
+4. -b (--bin): [default: bin] 输出 bin 文件名
-```shell
-. ../scripts/run_asm.sh
-```
+# 文件结构
diff --git a/demo/assign1.go b/demo/error01.go
similarity index 100%
rename from demo/assign1.go
rename to demo/error01.go
diff --git a/grammar/simple.go b/demo/simple.go
similarity index 100%
rename from grammar/simple.go
rename to demo/simple.go
diff --git a/grammar/test.go b/demo/test.go
similarity index 100%
rename from grammar/test.go
rename to demo/test.go
diff --git a/grammar/test2.go b/demo/test2.go
similarity index 100%
rename from grammar/test2.go
rename to demo/test2.go
diff --git a/grammar/test3.go b/demo/test3.go
similarity index 100%
rename from grammar/test3.go
rename to demo/test3.go
diff --git a/grammar/test4.go b/demo/test4.go
similarity index 100%
rename from grammar/test4.go
rename to demo/test4.go
diff --git a/grammar/calculate.go b/grammar/calculate.go
deleted file mode 100644
index 10fec7f..0000000
--- a/grammar/calculate.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package main
-
-var a int=1;
-
-func add1(x,y int) (int, int) {
- x = x + 1
- y = y + 1
- return x,y
-}
-
-func main() {
- var a int;
- var b int = 4-(2+4-4)+3;
- a=0;
- a++;
- if a < 20 {
- a = 2;
- } else {
- a = 3;
- }
-
- for i := 0; i <= 10; i++ {
- a = i;
- }
- a,b=add1(a,b)
- a,b=add1(1,2)
-
- var array [5]int
-
- for i := 0; i <= 4; i++ {
- array[i] = i;
- a= i;
- }
-}
diff --git a/grammar/cpp/GoLexer.cpp b/grammar/cpp/GoLexer.cpp
new file mode 100644
index 0000000..db87b5e
--- /dev/null
+++ b/grammar/cpp/GoLexer.cpp
@@ -0,0 +1,1014 @@
+
+// Generated from /workspace/millet-porridge-III/grammar/GoLexer.g4 by ANTLR 4.9.3
+
+
+#include "GoLexer.h"
+
+
+using namespace antlr4;
+
+
+GoLexer::GoLexer(CharStream *input) : Lexer(input) {
+ _interpreter = new atn::LexerATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache);
+}
+
+GoLexer::~GoLexer() {
+ delete _interpreter;
+}
+
+std::string GoLexer::getGrammarFileName() const {
+ return "GoLexer.g4";
+}
+
+const std::vector& GoLexer::getRuleNames() const {
+ return _ruleNames;
+}
+
+const std::vector& GoLexer::getChannelNames() const {
+ return _channelNames;
+}
+
+const std::vector& GoLexer::getModeNames() const {
+ return _modeNames;
+}
+
+const std::vector& GoLexer::getTokenNames() const {
+ return _tokenNames;
+}
+
+dfa::Vocabulary& GoLexer::getVocabulary() const {
+ return _vocabulary;
+}
+
+const std::vector GoLexer::getSerializedATN() const {
+ return _serializedATN;
+}
+
+const atn::ATN& GoLexer::getATN() const {
+ return _atn;
+}
+
+
+
+
+// Static vars and initialization.
+std::vector GoLexer::_decisionToDFA;
+atn::PredictionContextCache GoLexer::_sharedContextCache;
+
+// We own the ATN which in turn owns the ATN states.
+atn::ATN GoLexer::_atn;
+std::vector GoLexer::_serializedATN;
+
+std::vector GoLexer::_ruleNames = {
+ "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", "GO",
+ "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST",
+ "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN",
+ "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY",
+ "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "HUANHANG", "HUANHANGG",
+ "COLON", "DOT", "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS",
+ "EOSSS", "LOGICAL_OR", "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS",
+ "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", "OR", "DIV", "MOD",
+ "LSHIFT", "RSHIFT", "BIT_CLEAR", "EXCLAMATION", "PLUS", "MINUS", "CARET",
+ "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT",
+ "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", "HEX_FLOAT_LIT", "HEX_MANTISSA",
+ "HEX_EXPONENT", "IMAGINARY_LIT", "RUNE", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE",
+ "HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT",
+ "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT", "UNICODE_VALUE", "ESCAPED_VALUE",
+ "DECIMALS", "OCTAL_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "EXPONENT", "LETTER",
+ "UNICODE_DIGIT", "UNICODE_LETTER", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI"
+};
+
+std::vector GoLexer::_channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+};
+
+std::vector GoLexer::_modeNames = {
+ "DEFAULT_MODE", "NLSEMI"
+};
+
+std::vector GoLexer::_literalNames = {
+ "", "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'",
+ "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'",
+ "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'",
+ "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'",
+ "", "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'", "'\n'",
+ "'\r\n'", "':'", "'.'", "'++'", "'--'", "':='", "'...'", "", "'||'", "'&&'",
+ "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'",
+ "'>>'", "'&^'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'"
+};
+
+std::vector GoLexer::_symbolicNames = {
+ "", "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER",
+ "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST",
+ "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN",
+ "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY",
+ "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "HUANHANG", "HUANHANGG",
+ "COLON", "DOT", "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS",
+ "EOSSS", "LOGICAL_OR", "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS",
+ "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", "OR", "DIV", "MOD",
+ "LSHIFT", "RSHIFT", "BIT_CLEAR", "EXCLAMATION", "PLUS", "MINUS", "CARET",
+ "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT",
+ "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", "HEX_FLOAT_LIT", "IMAGINARY_LIT",
+ "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", "HEX_BYTE_VALUE", "LITTLE_U_VALUE",
+ "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", "WS", "COMMENT",
+ "TERMINATOR", "LINE_COMMENT", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI"
+};
+
+dfa::Vocabulary GoLexer::_vocabulary(_literalNames, _symbolicNames);
+
+std::vector GoLexer::_tokenNames;
+
+GoLexer::Initializer::Initializer() {
+ // This code could be in a static initializer lambda, but VS doesn't allow access to private class members from there.
+ for (size_t i = 0; i < _symbolicNames.size(); ++i) {
+ std::string name = _vocabulary.getLiteralName(i);
+ if (name.empty()) {
+ name = _vocabulary.getSymbolicName(i);
+ }
+
+ if (name.empty()) {
+ _tokenNames.push_back("");
+ } else {
+ _tokenNames.push_back(name);
+ }
+ }
+
+ static const uint16_t serializedATNSegment0[] = {
+ 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964,
+ 0x2, 0x5b, 0x326, 0x8, 0x1, 0x8, 0x1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3,
+ 0x9, 0x3, 0x4, 0x4, 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9,
+ 0x6, 0x4, 0x7, 0x9, 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9,
+ 0x4, 0xa, 0x9, 0xa, 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4,
+ 0xd, 0x9, 0xd, 0x4, 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10,
+ 0x9, 0x10, 0x4, 0x11, 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13,
+ 0x9, 0x13, 0x4, 0x14, 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16,
+ 0x9, 0x16, 0x4, 0x17, 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19,
+ 0x9, 0x19, 0x4, 0x1a, 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c,
+ 0x9, 0x1c, 0x4, 0x1d, 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f,
+ 0x9, 0x1f, 0x4, 0x20, 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22,
+ 0x9, 0x22, 0x4, 0x23, 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25,
+ 0x9, 0x25, 0x4, 0x26, 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28,
+ 0x9, 0x28, 0x4, 0x29, 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b,
+ 0x9, 0x2b, 0x4, 0x2c, 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e,
+ 0x9, 0x2e, 0x4, 0x2f, 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31,
+ 0x9, 0x31, 0x4, 0x32, 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34,
+ 0x9, 0x34, 0x4, 0x35, 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37,
+ 0x9, 0x37, 0x4, 0x38, 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a,
+ 0x9, 0x3a, 0x4, 0x3b, 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d,
+ 0x9, 0x3d, 0x4, 0x3e, 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40,
+ 0x9, 0x40, 0x4, 0x41, 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43,
+ 0x9, 0x43, 0x4, 0x44, 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46,
+ 0x9, 0x46, 0x4, 0x47, 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49,
+ 0x9, 0x49, 0x4, 0x4a, 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c,
+ 0x9, 0x4c, 0x4, 0x4d, 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f,
+ 0x9, 0x4f, 0x4, 0x50, 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52,
+ 0x9, 0x52, 0x4, 0x53, 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55,
+ 0x9, 0x55, 0x4, 0x56, 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58,
+ 0x9, 0x58, 0x4, 0x59, 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b,
+ 0x9, 0x5b, 0x4, 0x5c, 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e,
+ 0x9, 0x5e, 0x4, 0x5f, 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61,
+ 0x9, 0x61, 0x4, 0x62, 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64,
+ 0x9, 0x64, 0x4, 0x65, 0x9, 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67,
+ 0x9, 0x67, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3,
+ 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
+ 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3,
+ 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5,
+ 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, 0x3,
+ 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7,
+ 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3,
+ 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0xa,
+ 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3,
+ 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc,
+ 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3,
+ 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xf,
+ 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3,
+ 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3,
+ 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3,
+ 0x11, 0x3, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3,
+ 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3,
+ 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3,
+ 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x15, 0x3,
+ 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3,
+ 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3,
+ 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, 0x3,
+ 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3,
+ 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3,
+ 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x3,
+ 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x7,
+ 0x1c, 0x172, 0xa, 0x1c, 0xc, 0x1c, 0xe, 0x1c, 0x175, 0xb, 0x1c, 0x3,
+ 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3,
+ 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3,
+ 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, 0x25, 0x3,
+ 0x26, 0x3, 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3,
+ 0x28, 0x3, 0x29, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3,
+ 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3,
+ 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x6,
+ 0x2e, 0x1a1, 0xa, 0x2e, 0xd, 0x2e, 0xe, 0x2e, 0x1a2, 0x3, 0x2e, 0x6,
+ 0x2e, 0x1a6, 0xa, 0x2e, 0xd, 0x2e, 0xe, 0x2e, 0x1a7, 0x3, 0x2e, 0x3,
+ 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x7, 0x2e, 0x1ae, 0xa, 0x2e, 0xc, 0x2e,
+ 0xe, 0x2e, 0x1b1, 0xb, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x5,
+ 0x2e, 0x1b6, 0xa, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x30,
+ 0x3, 0x30, 0x3, 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x32,
+ 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34,
+ 0x3, 0x34, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36,
+ 0x3, 0x37, 0x3, 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x39, 0x3, 0x39,
+ 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b,
+ 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3e,
+ 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x41,
+ 0x3, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43,
+ 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x5, 0x44, 0x1ef, 0xa, 0x44, 0x3,
+ 0x44, 0x7, 0x44, 0x1f2, 0xa, 0x44, 0xc, 0x44, 0xe, 0x44, 0x1f5, 0xb,
+ 0x44, 0x5, 0x44, 0x1f7, 0xa, 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45,
+ 0x5, 0x45, 0x1fc, 0xa, 0x45, 0x3, 0x45, 0x6, 0x45, 0x1ff, 0xa, 0x45,
+ 0xd, 0x45, 0xe, 0x45, 0x200, 0x3, 0x46, 0x3, 0x46, 0x5, 0x46, 0x205,
+ 0xa, 0x46, 0x3, 0x46, 0x5, 0x46, 0x208, 0xa, 0x46, 0x3, 0x46, 0x6,
+ 0x46, 0x20b, 0xa, 0x46, 0xd, 0x46, 0xe, 0x46, 0x20c, 0x3, 0x47, 0x3,
+ 0x47, 0x3, 0x47, 0x5, 0x47, 0x212, 0xa, 0x47, 0x3, 0x47, 0x6, 0x47,
+ 0x215, 0xa, 0x47, 0xd, 0x47, 0xe, 0x47, 0x216, 0x3, 0x48, 0x3, 0x48,
+ 0x5, 0x48, 0x21b, 0xa, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x5,
+ 0x49, 0x220, 0xa, 0x49, 0x3, 0x49, 0x5, 0x49, 0x223, 0xa, 0x49, 0x3,
+ 0x49, 0x5, 0x49, 0x226, 0xa, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49,
+ 0x5, 0x49, 0x22b, 0xa, 0x49, 0x5, 0x49, 0x22d, 0xa, 0x49, 0x3, 0x4a,
+ 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x5, 0x4b,
+ 0x235, 0xa, 0x4b, 0x3, 0x4b, 0x6, 0x4b, 0x238, 0xa, 0x4b, 0xd, 0x4b,
+ 0xe, 0x4b, 0x239, 0x3, 0x4b, 0x3, 0x4b, 0x5, 0x4b, 0x23e, 0xa, 0x4b,
+ 0x3, 0x4b, 0x7, 0x4b, 0x241, 0xa, 0x4b, 0xc, 0x4b, 0xe, 0x4b, 0x244,
+ 0xb, 0x4b, 0x5, 0x4b, 0x246, 0xa, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3,
+ 0x4b, 0x5, 0x4b, 0x24b, 0xa, 0x4b, 0x3, 0x4b, 0x7, 0x4b, 0x24e, 0xa,
+ 0x4b, 0xc, 0x4b, 0xe, 0x4b, 0x251, 0xb, 0x4b, 0x5, 0x4b, 0x253, 0xa,
+ 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x5, 0x4c, 0x257, 0xa, 0x4c, 0x3, 0x4c,
+ 0x3, 0x4c, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d,
+ 0x5, 0x4d, 0x260, 0xa, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3,
+ 0x4e, 0x3, 0x4e, 0x5, 0x4e, 0x267, 0xa, 0x4e, 0x3, 0x4e, 0x3, 0x4e,
+ 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x50, 0x5, 0x50, 0x26f, 0xa,
+ 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3,
+ 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3,
+ 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3,
+ 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3,
+ 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x55, 0x3,
+ 0x55, 0x7, 0x55, 0x28f, 0xa, 0x55, 0xc, 0x55, 0xe, 0x55, 0x292, 0xb,
+ 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x7,
+ 0x56, 0x299, 0xa, 0x56, 0xc, 0x56, 0xe, 0x56, 0x29c, 0xb, 0x56, 0x3,
+ 0x56, 0x3, 0x56, 0x3, 0x57, 0x6, 0x57, 0x2a1, 0xa, 0x57, 0xd, 0x57,
+ 0xe, 0x57, 0x2a2, 0x3, 0x57, 0x3, 0x57, 0x3, 0x58, 0x3, 0x58, 0x3,
+ 0x58, 0x3, 0x58, 0x7, 0x58, 0x2ab, 0xa, 0x58, 0xc, 0x58, 0xe, 0x58,
+ 0x2ae, 0xb, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3,
+ 0x58, 0x3, 0x59, 0x6, 0x59, 0x2b6, 0xa, 0x59, 0xd, 0x59, 0xe, 0x59,
+ 0x2b7, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3,
+ 0x5a, 0x7, 0x5a, 0x2c0, 0xa, 0x5a, 0xc, 0x5a, 0xe, 0x5a, 0x2c3, 0xb,
+ 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3,
+ 0x5b, 0x5, 0x5b, 0x2cb, 0xa, 0x5b, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c,
+ 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c,
+ 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c,
+ 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c,
+ 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x5, 0x5c,
+ 0x2e7, 0xa, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x5, 0x5d, 0x2eb, 0xa, 0x5d,
+ 0x3, 0x5d, 0x7, 0x5d, 0x2ee, 0xa, 0x5d, 0xc, 0x5d, 0xe, 0x5d, 0x2f1,
+ 0xb, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60,
+ 0x3, 0x60, 0x3, 0x61, 0x3, 0x61, 0x5, 0x61, 0x2fb, 0xa, 0x61, 0x3,
+ 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, 0x5, 0x62, 0x301, 0xa, 0x62,
+ 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, 0x3, 0x65, 0x6, 0x65,
+ 0x308, 0xa, 0x65, 0xd, 0x65, 0xe, 0x65, 0x309, 0x3, 0x65, 0x3, 0x65,
+ 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x7, 0x66, 0x312, 0xa,
+ 0x66, 0xc, 0x66, 0xe, 0x66, 0x315, 0xb, 0x66, 0x3, 0x66, 0x3, 0x66,
+ 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67,
+ 0x3, 0x67, 0x7, 0x67, 0x320, 0xa, 0x67, 0xc, 0x67, 0xe, 0x67, 0x323,
+ 0xb, 0x67, 0x3, 0x67, 0x3, 0x67, 0x5, 0x1af, 0x2ac, 0x313, 0x2, 0x68,
+ 0x4, 0x3, 0x6, 0x4, 0x8, 0x5, 0xa, 0x6, 0xc, 0x7, 0xe, 0x8, 0x10,
+ 0x9, 0x12, 0xa, 0x14, 0xb, 0x16, 0xc, 0x18, 0xd, 0x1a, 0xe, 0x1c,
+ 0xf, 0x1e, 0x10, 0x20, 0x11, 0x22, 0x12, 0x24, 0x13, 0x26, 0x14,
+ 0x28, 0x15, 0x2a, 0x16, 0x2c, 0x17, 0x2e, 0x18, 0x30, 0x19, 0x32,
+ 0x1a, 0x34, 0x1b, 0x36, 0x1c, 0x38, 0x1d, 0x3a, 0x1e, 0x3c, 0x1f,
+ 0x3e, 0x20, 0x40, 0x21, 0x42, 0x22, 0x44, 0x23, 0x46, 0x24, 0x48,
+ 0x25, 0x4a, 0x26, 0x4c, 0x27, 0x4e, 0x28, 0x50, 0x29, 0x52, 0x2a,
+ 0x54, 0x2b, 0x56, 0x2c, 0x58, 0x2d, 0x5a, 0x2e, 0x5c, 0x2f, 0x5e,
+ 0x30, 0x60, 0x31, 0x62, 0x32, 0x64, 0x33, 0x66, 0x34, 0x68, 0x35,
+ 0x6a, 0x36, 0x6c, 0x37, 0x6e, 0x38, 0x70, 0x39, 0x72, 0x3a, 0x74,
+ 0x3b, 0x76, 0x3c, 0x78, 0x3d, 0x7a, 0x3e, 0x7c, 0x3f, 0x7e, 0x40,
+ 0x80, 0x41, 0x82, 0x42, 0x84, 0x43, 0x86, 0x44, 0x88, 0x45, 0x8a,
+ 0x46, 0x8c, 0x47, 0x8e, 0x48, 0x90, 0x49, 0x92, 0x4a, 0x94, 0x4b,
+ 0x96, 0x2, 0x98, 0x2, 0x9a, 0x4c, 0x9c, 0x2, 0x9e, 0x4d, 0xa0, 0x4e,
+ 0xa2, 0x4f, 0xa4, 0x50, 0xa6, 0x51, 0xa8, 0x52, 0xaa, 0x53, 0xac,
+ 0x54, 0xae, 0x55, 0xb0, 0x56, 0xb2, 0x57, 0xb4, 0x58, 0xb6, 0x2,
+ 0xb8, 0x2, 0xba, 0x2, 0xbc, 0x2, 0xbe, 0x2, 0xc0, 0x2, 0xc2, 0x2,
+ 0xc4, 0x2, 0xc6, 0x2, 0xc8, 0x2, 0xca, 0x59, 0xcc, 0x5a, 0xce, 0x5b,
+ 0x4, 0x2, 0x3, 0x13, 0x3, 0x2, 0x33, 0x3b, 0x3, 0x2, 0x32, 0x3b,
+ 0x4, 0x2, 0x44, 0x44, 0x64, 0x64, 0x4, 0x2, 0x51, 0x51, 0x71, 0x71,
+ 0x4, 0x2, 0x5a, 0x5a, 0x7a, 0x7a, 0x4, 0x2, 0x52, 0x52, 0x72, 0x72,
+ 0x4, 0x2, 0x2d, 0x2d, 0x2f, 0x2f, 0x3, 0x2, 0x62, 0x62, 0x4, 0x2,
+ 0x24, 0x24, 0x5e, 0x5e, 0x4, 0x2, 0xb, 0xb, 0x22, 0x22, 0x4, 0x2,
+ 0xc, 0xc, 0xf, 0xf, 0x5, 0x2, 0xc, 0xc, 0xf, 0xf, 0x29, 0x29, 0xb,
+ 0x2, 0x24, 0x24, 0x29, 0x29, 0x5e, 0x5e, 0x63, 0x64, 0x68, 0x68,
+ 0x70, 0x70, 0x74, 0x74, 0x76, 0x76, 0x78, 0x78, 0x3, 0x2, 0x32, 0x39,
+ 0x5, 0x2, 0x32, 0x3b, 0x43, 0x48, 0x63, 0x68, 0x3, 0x2, 0x32, 0x33,
+ 0x4, 0x2, 0x47, 0x47, 0x67, 0x67, 0x4, 0x3f, 0x2, 0x32, 0x2, 0x3b,
+ 0x2, 0x662, 0x2, 0x66b, 0x2, 0x6f2, 0x2, 0x6fb, 0x2, 0x7c2, 0x2,
+ 0x7cb, 0x2, 0x968, 0x2, 0x971, 0x2, 0x9e8, 0x2, 0x9f1, 0x2, 0xa68,
+ 0x2, 0xa71, 0x2, 0xae8, 0x2, 0xaf1, 0x2, 0xb68, 0x2, 0xb71, 0x2,
+ 0xbe8, 0x2, 0xbf1, 0x2, 0xc68, 0x2, 0xc71, 0x2, 0xce8, 0x2, 0xcf1,
+ 0x2, 0xd68, 0x2, 0xd71, 0x2, 0xde8, 0x2, 0xdf1, 0x2, 0xe52, 0x2,
+ 0xe5b, 0x2, 0xed2, 0x2, 0xedb, 0x2, 0xf22, 0x2, 0xf2b, 0x2, 0x1042,
+ 0x2, 0x104b, 0x2, 0x1092, 0x2, 0x109b, 0x2, 0x17e2, 0x2, 0x17eb,
+ 0x2, 0x1812, 0x2, 0x181b, 0x2, 0x1948, 0x2, 0x1951, 0x2, 0x19d2,
+ 0x2, 0x19db, 0x2, 0x1a82, 0x2, 0x1a8b, 0x2, 0x1a92, 0x2, 0x1a9b,
+ 0x2, 0x1b52, 0x2, 0x1b5b, 0x2, 0x1bb2, 0x2, 0x1bbb, 0x2, 0x1c42,
+ 0x2, 0x1c4b, 0x2, 0x1c52, 0x2, 0x1c5b, 0x2, 0xa622, 0x2, 0xa62b,
+ 0x2, 0xa8d2, 0x2, 0xa8db, 0x2, 0xa902, 0x2, 0xa90b, 0x2, 0xa9d2,
+ 0x2, 0xa9db, 0x2, 0xa9f2, 0x2, 0xa9fb, 0x2, 0xaa52, 0x2, 0xaa5b,
+ 0x2, 0xabf2, 0x2, 0xabfb, 0x2, 0xff12, 0x2, 0xff1b, 0x2, 0x4a2, 0x3,
+ 0x4ab, 0x3, 0xd32, 0x3, 0xd3b, 0x3, 0x1068, 0x3, 0x1071, 0x3, 0x10f2,
+ 0x3, 0x10fb, 0x3, 0x1138, 0x3, 0x1141, 0x3, 0x11d2, 0x3, 0x11db,
+ 0x3, 0x12f2, 0x3, 0x12fb, 0x3, 0x1452, 0x3, 0x145b, 0x3, 0x14d2,
+ 0x3, 0x14db, 0x3, 0x1652, 0x3, 0x165b, 0x3, 0x16c2, 0x3, 0x16cb,
+ 0x3, 0x1732, 0x3, 0x173b, 0x3, 0x18e2, 0x3, 0x18eb, 0x3, 0x1952,
+ 0x3, 0x195b, 0x3, 0x1c52, 0x3, 0x1c5b, 0x3, 0x1d52, 0x3, 0x1d5b,
+ 0x3, 0x1da2, 0x3, 0x1dab, 0x3, 0x6a62, 0x3, 0x6a6b, 0x3, 0x6b52,
+ 0x3, 0x6b5b, 0x3, 0xd7d0, 0x3, 0xd801, 0x3, 0xe142, 0x3, 0xe14b,
+ 0x3, 0xe2f2, 0x3, 0xe2fb, 0x3, 0xe952, 0x3, 0xe95b, 0x3, 0xfbf2,
+ 0x3, 0xfbfb, 0x3, 0x270, 0x2, 0x43, 0x2, 0x5c, 0x2, 0x63, 0x2, 0x7c,
+ 0x2, 0xac, 0x2, 0xac, 0x2, 0xb7, 0x2, 0xb7, 0x2, 0xbc, 0x2, 0xbc,
+ 0x2, 0xc2, 0x2, 0xd8, 0x2, 0xda, 0x2, 0xf8, 0x2, 0xfa, 0x2, 0x2c3,
+ 0x2, 0x2c8, 0x2, 0x2d3, 0x2, 0x2e2, 0x2, 0x2e6, 0x2, 0x2ee, 0x2,
+ 0x2ee, 0x2, 0x2f0, 0x2, 0x2f0, 0x2, 0x372, 0x2, 0x376, 0x2, 0x378,
+ 0x2, 0x379, 0x2, 0x37c, 0x2, 0x37f, 0x2, 0x381, 0x2, 0x381, 0x2,
+ 0x388, 0x2, 0x388, 0x2, 0x38a, 0x2, 0x38c, 0x2, 0x38e, 0x2, 0x38e,
+ 0x2, 0x390, 0x2, 0x3a3, 0x2, 0x3a5, 0x2, 0x3f7, 0x2, 0x3f9, 0x2,
+ 0x483, 0x2, 0x48c, 0x2, 0x531, 0x2, 0x533, 0x2, 0x558, 0x2, 0x55b,
+ 0x2, 0x55b, 0x2, 0x562, 0x2, 0x58a, 0x2, 0x5d2, 0x2, 0x5ec, 0x2,
+ 0x5f1, 0x2, 0x5f4, 0x2, 0x622, 0x2, 0x64c, 0x2, 0x670, 0x2, 0x671,
+ 0x2, 0x673, 0x2, 0x6d5, 0x2, 0x6d7, 0x2, 0x6d7, 0x2, 0x6e7, 0x2,
+ 0x6e8, 0x2, 0x6f0, 0x2, 0x6f1, 0x2, 0x6fc, 0x2, 0x6fe, 0x2, 0x701,
+ 0x2, 0x701, 0x2, 0x712, 0x2, 0x712, 0x2, 0x714, 0x2, 0x731, 0x2,
+ 0x74f, 0x2, 0x7a7, 0x2, 0x7b3, 0x2, 0x7b3, 0x2, 0x7cc, 0x2, 0x7ec,
+ 0x2, 0x7f6, 0x2, 0x7f7, 0x2, 0x7fc, 0x2, 0x7fc, 0x2, 0x802, 0x2,
+ 0x817, 0x2, 0x81c, 0x2, 0x81c, 0x2, 0x826, 0x2, 0x826, 0x2, 0x82a,
+ 0x2, 0x82a, 0x2, 0x842, 0x2, 0x85a, 0x2, 0x862, 0x2, 0x86c, 0x2,
+ 0x8a2, 0x2, 0x8b6, 0x2, 0x8b8, 0x2, 0x8c9, 0x2, 0x906, 0x2, 0x93b,
+ 0x2, 0x93f, 0x2, 0x93f, 0x2, 0x952, 0x2, 0x952, 0x2, 0x95a, 0x2,
+ 0x963, 0x2, 0x973, 0x2, 0x982, 0x2, 0x987, 0x2, 0x98e, 0x2, 0x991,
+ 0x2, 0x992, 0x2, 0x995, 0x2, 0x9aa, 0x2, 0x9ac, 0x2, 0x9b2, 0x2,
+ 0x9b4, 0x2, 0x9b4, 0x2, 0x9b8, 0x2, 0x9bb, 0x2, 0x9bf, 0x2, 0x9bf,
+ 0x2, 0x9d0, 0x2, 0x9d0, 0x2, 0x9de, 0x2, 0x9df, 0x2, 0x9e1, 0x2,
+ 0x9e3, 0x2, 0x9f2, 0x2, 0x9f3, 0x2, 0x9fe, 0x2, 0x9fe, 0x2, 0xa07,
+ 0x2, 0xa0c, 0x2, 0xa11, 0x2, 0xa12, 0x2, 0xa15, 0x2, 0xa2a, 0x2,
+ 0xa2c, 0x2, 0xa32, 0x2, 0xa34, 0x2, 0xa35, 0x2, 0xa37, 0x2, 0xa38,
+ 0x2, 0xa3a, 0x2, 0xa3b, 0x2, 0xa5b, 0x2, 0xa5e, 0x2, 0xa60, 0x2,
+ 0xa60, 0x2, 0xa74, 0x2, 0xa76, 0x2, 0xa87, 0x2, 0xa8f, 0x2, 0xa91,
+ 0x2, 0xa93, 0x2, 0xa95, 0x2, 0xaaa, 0x2, 0xaac, 0x2, 0xab2, 0x2,
+ 0xab4, 0x2, 0xab5, 0x2, 0xab7, 0x2, 0xabb, 0x2, 0xabf, 0x2, 0xabf,
+ 0x2, 0xad2, 0x2, 0xad2, 0x2, 0xae2, 0x2, 0xae3, 0x2, 0xafb, 0x2,
+ 0xafb, 0x2, 0xb07, 0x2, 0xb0e, 0x2, 0xb11, 0x2, 0xb12, 0x2, 0xb15,
+ 0x2, 0xb2a, 0x2, 0xb2c, 0x2, 0xb32, 0x2, 0xb34, 0x2, 0xb35, 0x2,
+ 0xb37, 0x2, 0xb3b, 0x2, 0xb3f, 0x2, 0xb3f, 0x2, 0xb5e, 0x2, 0xb5f,
+ 0x2, 0xb61, 0x2, 0xb63, 0x2, 0xb73, 0x2, 0xb73, 0x2, 0xb85, 0x2,
+ 0xb85, 0x2, 0xb87, 0x2, 0xb8c, 0x2, 0xb90, 0x2, 0xb92, 0x2, 0xb94,
+ 0x2, 0xb97, 0x2, 0xb9b, 0x2, 0xb9c, 0x2, 0xb9e, 0x2, 0xb9e, 0x2,
+ 0xba0, 0x2, 0xba1, 0x2, 0xba5, 0x2, 0xba6, 0x2, 0xbaa, 0x2, 0xbac,
+ 0x2, 0xbb0, 0x2, 0xbbb, 0x2, 0xbd2, 0x2, 0xbd2, 0x2, 0xc07, 0x2,
+ 0xc0e, 0x2, 0xc10, 0x2, 0xc12, 0x2, 0xc14, 0x2, 0xc2a, 0x2, 0xc2c,
+ 0x2, 0xc3b, 0x2, 0xc3f, 0x2, 0xc3f, 0x2, 0xc5a, 0x2, 0xc5c, 0x2,
+ 0xc62, 0x2, 0xc63, 0x2, 0xc82, 0x2, 0xc82, 0x2, 0xc87, 0x2, 0xc8e,
+ 0x2, 0xc90, 0x2, 0xc92, 0x2, 0xc94, 0x2, 0xcaa, 0x2, 0xcac, 0x2,
+ 0xcb5, 0x2, 0xcb7, 0x2, 0xcbb, 0x2, 0xcbf, 0x2, 0xcbf, 0x2, 0xce0,
+ 0x2, 0xce0, 0x2, 0xce2, 0x2, 0xce3, 0x2, 0xcf3, 0x2, 0xcf4, 0x2,
+ 0xd06, 0x2, 0xd0e, 0x2, 0xd10, 0x2, 0xd12, 0x2, 0xd14, 0x2, 0xd3c,
+ 0x2, 0xd3f, 0x2, 0xd3f, 0x2, 0xd50, 0x2, 0xd50, 0x2, 0xd56, 0x2,
+ 0xd58, 0x2, 0xd61, 0x2, 0xd63, 0x2, 0xd7c, 0x2, 0xd81, 0x2, 0xd87,
+ 0x2, 0xd98, 0x2, 0xd9c, 0x2, 0xdb3, 0x2, 0xdb5, 0x2, 0xdbd, 0x2,
+ 0xdbf, 0x2, 0xdbf, 0x2, 0xdc2, 0x2, 0xdc8, 0x2, 0xe03, 0x2, 0xe32,
+ 0x2, 0xe34, 0x2, 0xe35, 0x2, 0xe42, 0x2, 0xe48, 0x2, 0xe83, 0x2,
+ 0xe84, 0x2, 0xe86, 0x2, 0xe86, 0x2, 0xe88, 0x2, 0xe8c, 0x2, 0xe8e,
+ 0x2, 0xea5, 0x2, 0xea7, 0x2, 0xea7, 0x2, 0xea9, 0x2, 0xeb2, 0x2,
+ 0xeb4, 0x2, 0xeb5, 0x2, 0xebf, 0x2, 0xebf, 0x2, 0xec2, 0x2, 0xec6,
+ 0x2, 0xec8, 0x2, 0xec8, 0x2, 0xede, 0x2, 0xee1, 0x2, 0xf02, 0x2,
+ 0xf02, 0x2, 0xf42, 0x2, 0xf49, 0x2, 0xf4b, 0x2, 0xf6e, 0x2, 0xf8a,
+ 0x2, 0xf8e, 0x2, 0x1002, 0x2, 0x102c, 0x2, 0x1041, 0x2, 0x1041, 0x2,
+ 0x1052, 0x2, 0x1057, 0x2, 0x105c, 0x2, 0x105f, 0x2, 0x1063, 0x2,
+ 0x1063, 0x2, 0x1067, 0x2, 0x1068, 0x2, 0x1070, 0x2, 0x1072, 0x2,
+ 0x1077, 0x2, 0x1083, 0x2, 0x1090, 0x2, 0x1090, 0x2, 0x10a2, 0x2,
+ 0x10c7, 0x2, 0x10c9, 0x2, 0x10c9, 0x2, 0x10cf, 0x2, 0x10cf, 0x2,
+ 0x10d2, 0x2, 0x10fc, 0x2, 0x10fe, 0x2, 0x124a, 0x2, 0x124c, 0x2,
+ 0x124f, 0x2, 0x1252, 0x2, 0x1258, 0x2, 0x125a, 0x2, 0x125a, 0x2,
+ 0x125c, 0x2, 0x125f, 0x2, 0x1262, 0x2, 0x128a, 0x2, 0x128c, 0x2,
+ 0x128f, 0x2, 0x1292, 0x2, 0x12b2, 0x2, 0x12b4, 0x2, 0x12b7, 0x2,
+ 0x12ba, 0x2, 0x12c0, 0x2, 0x12c2, 0x2, 0x12c2, 0x2, 0x12c4, 0x2,
+ 0x12c7, 0x2, 0x12ca, 0x2, 0x12d8, 0x2, 0x12da, 0x2, 0x1312, 0x2,
+ 0x1314, 0x2, 0x1317, 0x2, 0x131a, 0x2, 0x135c, 0x2, 0x1382, 0x2,
+ 0x1391, 0x2, 0x13a2, 0x2, 0x13f7, 0x2, 0x13fa, 0x2, 0x13ff, 0x2,
+ 0x1403, 0x2, 0x166e, 0x2, 0x1671, 0x2, 0x1681, 0x2, 0x1683, 0x2,
+ 0x169c, 0x2, 0x16a2, 0x2, 0x16ec, 0x2, 0x16f3, 0x2, 0x16fa, 0x2,
+ 0x1702, 0x2, 0x170e, 0x2, 0x1710, 0x2, 0x1713, 0x2, 0x1722, 0x2,
+ 0x1733, 0x2, 0x1742, 0x2, 0x1753, 0x2, 0x1762, 0x2, 0x176e, 0x2,
+ 0x1770, 0x2, 0x1772, 0x2, 0x1782, 0x2, 0x17b5, 0x2, 0x17d9, 0x2,
+ 0x17d9, 0x2, 0x17de, 0x2, 0x17de, 0x2, 0x1822, 0x2, 0x187a, 0x2,
+ 0x1882, 0x2, 0x1886, 0x2, 0x1889, 0x2, 0x18aa, 0x2, 0x18ac, 0x2,
+ 0x18ac, 0x2, 0x18b2, 0x2, 0x18f7, 0x2, 0x1902, 0x2, 0x1920, 0x2,
+ 0x1952, 0x2, 0x196f, 0x2, 0x1972, 0x2, 0x1976, 0x2, 0x1982, 0x2,
+ 0x19ad, 0x2, 0x19b2, 0x2, 0x19cb, 0x2, 0x1a02, 0x2, 0x1a18, 0x2,
+ 0x1a22, 0x2, 0x1a56, 0x2, 0x1aa9, 0x2, 0x1aa9, 0x2, 0x1b07, 0x2,
+ 0x1b35, 0x2, 0x1b47, 0x2, 0x1b4d, 0x2, 0x1b85, 0x2, 0x1ba2, 0x2,
+ 0x1bb0, 0x2, 0x1bb1, 0x2, 0x1bbc, 0x2, 0x1be7, 0x2, 0x1c02, 0x2,
+ 0x1c25, 0x2, 0x1c4f, 0x2, 0x1c51, 0x2, 0x1c5c, 0x2, 0x1c7f, 0x2,
+ 0x1c82, 0x2, 0x1c8a, 0x2, 0x1c92, 0x2, 0x1cbc, 0x2, 0x1cbf, 0x2,
+ 0x1cc1, 0x2, 0x1ceb, 0x2, 0x1cee, 0x2, 0x1cf0, 0x2, 0x1cf5, 0x2,
+ 0x1cf7, 0x2, 0x1cf8, 0x2, 0x1cfc, 0x2, 0x1cfc, 0x2, 0x1d02, 0x2,
+ 0x1dc1, 0x2, 0x1e02, 0x2, 0x1f17, 0x2, 0x1f1a, 0x2, 0x1f1f, 0x2,
+ 0x1f22, 0x2, 0x1f47, 0x2, 0x1f4a, 0x2, 0x1f4f, 0x2, 0x1f52, 0x2,
+ 0x1f59, 0x2, 0x1f5b, 0x2, 0x1f5b, 0x2, 0x1f5d, 0x2, 0x1f5d, 0x2,
+ 0x1f5f, 0x2, 0x1f5f, 0x2, 0x1f61, 0x2, 0x1f7f, 0x2, 0x1f82, 0x2,
+ 0x1fb6, 0x2, 0x1fb8, 0x2, 0x1fbe, 0x2, 0x1fc0, 0x2, 0x1fc0, 0x2,
+ 0x1fc4, 0x2, 0x1fc6, 0x2, 0x1fc8, 0x2, 0x1fce, 0x2, 0x1fd2, 0x2,
+ 0x1fd5, 0x2, 0x1fd8, 0x2, 0x1fdd, 0x2, 0x1fe2, 0x2, 0x1fee, 0x2,
+ 0x1ff4, 0x2, 0x1ff6, 0x2, 0x1ff8, 0x2, 0x1ffe, 0x2, 0x2073, 0x2,
+ 0x2073, 0x2, 0x2081, 0x2, 0x2081, 0x2, 0x2092, 0x2, 0x209e, 0x2,
+ 0x2104, 0x2, 0x2104, 0x2, 0x2109, 0x2, 0x2109, 0x2, 0x210c, 0x2,
+ 0x2115, 0x2, 0x2117, 0x2, 0x2117, 0x2, 0x211b, 0x2, 0x211f, 0x2,
+ 0x2126, 0x2, 0x2126, 0x2, 0x2128, 0x2, 0x2128, 0x2, 0x212a, 0x2,
+ 0x212a, 0x2, 0x212c, 0x2, 0x212f, 0x2, 0x2131, 0x2, 0x213b, 0x2,
+ 0x213e, 0x2, 0x2141, 0x2, 0x2147, 0x2, 0x214b, 0x2, 0x2150, 0x2,
+ 0x2150, 0x2, 0x2185, 0x2, 0x2186, 0x2, 0x2c02, 0x2, 0x2c30, 0x2,
+ 0x2c32, 0x2, 0x2c60, 0x2, 0x2c62, 0x2, 0x2ce6, 0x2, 0x2ced, 0x2,
+ 0x2cf0, 0x2, 0x2cf4, 0x2, 0x2cf5, 0x2, 0x2d02, 0x2, 0x2d27, 0x2,
+ 0x2d29, 0x2, 0x2d29, 0x2, 0x2d2f, 0x2, 0x2d2f, 0x2, 0x2d32, 0x2,
+ 0x2d69, 0x2, 0x2d71, 0x2, 0x2d71, 0x2, 0x2d82, 0x2, 0x2d98, 0x2,
+ 0x2da2, 0x2, 0x2da8, 0x2, 0x2daa, 0x2, 0x2db0, 0x2, 0x2db2, 0x2,
+ 0x2db8, 0x2, 0x2dba, 0x2, 0x2dc0, 0x2, 0x2dc2, 0x2, 0x2dc8, 0x2,
+ 0x2dca, 0x2, 0x2dd0, 0x2, 0x2dd2, 0x2, 0x2dd8, 0x2, 0x2dda, 0x2,
+ 0x2de0, 0x2, 0x2e31, 0x2, 0x2e31, 0x2, 0x3007, 0x2, 0x3008, 0x2,
+ 0x3033, 0x2, 0x3037, 0x2, 0x303d, 0x2, 0x303e, 0x2, 0x3043, 0x2,
+ 0x3098, 0x2, 0x309f, 0x2, 0x30a1, 0x2, 0x30a3, 0x2, 0x30fc, 0x2,
+ 0x30fe, 0x2, 0x3101, 0x2, 0x3107, 0x2, 0x3131, 0x2, 0x3133, 0x2,
+ 0x3190, 0x2, 0x31a2, 0x2, 0x31c1, 0x2, 0x31f2, 0x2, 0x3201, 0x2,
+ 0x3402, 0x2, 0x4dc1, 0x2, 0x4e02, 0x2, 0x9ffe, 0x2, 0xa002, 0x2,
+ 0xa48e, 0x2, 0xa4d2, 0x2, 0xa4ff, 0x2, 0xa502, 0x2, 0xa60e, 0x2,
+ 0xa612, 0x2, 0xa621, 0x2, 0xa62c, 0x2, 0xa62d, 0x2, 0xa642, 0x2,
+ 0xa670, 0x2, 0xa681, 0x2, 0xa69f, 0x2, 0xa6a2, 0x2, 0xa6e7, 0x2,
+ 0xa719, 0x2, 0xa721, 0x2, 0xa724, 0x2, 0xa78a, 0x2, 0xa78d, 0x2,
+ 0xa7c1, 0x2, 0xa7c4, 0x2, 0xa7cc, 0x2, 0xa7f7, 0x2, 0xa803, 0x2,
+ 0xa805, 0x2, 0xa807, 0x2, 0xa809, 0x2, 0xa80c, 0x2, 0xa80e, 0x2,
+ 0xa824, 0x2, 0xa842, 0x2, 0xa875, 0x2, 0xa884, 0x2, 0xa8b5, 0x2,
+ 0xa8f4, 0x2, 0xa8f9, 0x2, 0xa8fd, 0x2, 0xa8fd, 0x2, 0xa8ff, 0x2,
+ 0xa900, 0x2, 0xa90c, 0x2, 0xa927, 0x2, 0xa932, 0x2, 0xa948, 0x2,
+ 0xa962, 0x2, 0xa97e, 0x2, 0xa986, 0x2, 0xa9b4, 0x2, 0xa9d1, 0x2,
+ 0xa9d1, 0x2, 0xa9e2, 0x2, 0xa9e6, 0x2, 0xa9e8, 0x2, 0xa9f1, 0x2,
+ 0xa9fc, 0x2, 0xaa00, 0x2, 0xaa02, 0x2, 0xaa2a, 0x2, 0xaa42, 0x2,
+ 0xaa44, 0x2, 0xaa46, 0x2, 0xaa4d, 0x2, 0xaa62, 0x2, 0xaa78, 0x2,
+ 0xaa7c, 0x2, 0xaa7c, 0x2, 0xaa80, 0x2, 0xaab1, 0x2, 0xaab3, 0x2,
+ 0xaab3, 0x2, 0xaab7, 0x2, 0xaab8, 0x2, 0xaabb, 0x2, 0xaabf, 0x2,
+ 0xaac2, 0x2, 0xaac2, 0x2, 0xaac4, 0x2, 0xaac4, 0x2, 0xaadd, 0x2,
+ 0xaadf, 0x2, 0xaae2, 0x2, 0xaaec, 0x2, 0xaaf4, 0x2, 0xaaf6, 0x2,
+ 0xab03, 0x2, 0xab08, 0x2, 0xab0b, 0x2, 0xab10, 0x2, 0xab13, 0x2,
+ 0xab18, 0x2, 0xab22, 0x2, 0xab28, 0x2, 0xab2a, 0x2, 0xab30, 0x2,
+ 0xab32, 0x2, 0xab5c, 0x2, 0xab5e, 0x2, 0xab6b, 0x2, 0xab72, 0x2,
+ 0xabe4, 0x2, 0xac02, 0x2, 0xd7a5, 0x2, 0xd7b2, 0x2, 0xd7c8, 0x2,
+ 0xd7cd, 0x2, 0xd7fd, 0x2, 0xf902, 0x2, 0xfa6f, 0x2, 0xfa72, 0x2,
+ 0xfadb, 0x2, 0xfb02, 0x2, 0xfb08, 0x2, 0xfb15, 0x2, 0xfb19, 0x2,
+ 0xfb1f, 0x2, 0xfb1f, 0x2, 0xfb21, 0x2, 0xfb2a, 0x2, 0xfb2c, 0x2,
+ 0xfb38, 0x2, 0xfb3a, 0x2, 0xfb3e, 0x2, 0xfb40, 0x2, 0xfb40, 0x2,
+ 0xfb42, 0x2, 0xfb43, 0x2, 0xfb45, 0x2, 0xfb46, 0x2, 0xfb48, 0x2,
+ 0xfbb3, 0x2, 0xfbd5, 0x2, 0xfd3f, 0x2, 0xfd52, 0x2, 0xfd91, 0x2,
+ 0xfd94, 0x2, 0xfdc9, 0x2, 0xfdf2, 0x2, 0xfdfd, 0x2, 0xfe72, 0x2,
+ 0xfe76, 0x2, 0xfe78, 0x2, 0xfefe, 0x2, 0xff23, 0x2, 0xff3c, 0x2,
+ 0xff43, 0x2, 0xff5c, 0x2, 0xff68, 0x2, 0xffc0, 0x2, 0xffc4, 0x2,
+ 0xffc9, 0x2, 0xffcc, 0x2, 0xffd1, 0x2, 0xffd4, 0x2, 0xffd9, 0x2,
+ 0xffdc, 0x2, 0xffde, 0x2, 0x2, 0x3, 0xd, 0x3, 0xf, 0x3, 0x28, 0x3,
+ 0x2a, 0x3, 0x3c, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x41, 0x3, 0x4f, 0x3,
+ 0x52, 0x3, 0x5f, 0x3, 0x82, 0x3, 0xfc, 0x3, 0x282, 0x3, 0x29e, 0x3,
+ 0x2a2, 0x3, 0x2d2, 0x3, 0x302, 0x3, 0x321, 0x3, 0x32f, 0x3, 0x342,
+ 0x3, 0x344, 0x3, 0x34b, 0x3, 0x352, 0x3, 0x377, 0x3, 0x382, 0x3,
+ 0x39f, 0x3, 0x3a2, 0x3, 0x3c5, 0x3, 0x3ca, 0x3, 0x3d1, 0x3, 0x402,
+ 0x3, 0x49f, 0x3, 0x4b2, 0x3, 0x4d5, 0x3, 0x4da, 0x3, 0x4fd, 0x3,
+ 0x502, 0x3, 0x529, 0x3, 0x532, 0x3, 0x565, 0x3, 0x602, 0x3, 0x738,
+ 0x3, 0x742, 0x3, 0x757, 0x3, 0x762, 0x3, 0x769, 0x3, 0x802, 0x3,
+ 0x807, 0x3, 0x80a, 0x3, 0x80a, 0x3, 0x80c, 0x3, 0x837, 0x3, 0x839,
+ 0x3, 0x83a, 0x3, 0x83e, 0x3, 0x83e, 0x3, 0x841, 0x3, 0x857, 0x3,
+ 0x862, 0x3, 0x878, 0x3, 0x882, 0x3, 0x8a0, 0x3, 0x8e2, 0x3, 0x8f4,
+ 0x3, 0x8f6, 0x3, 0x8f7, 0x3, 0x902, 0x3, 0x917, 0x3, 0x922, 0x3,
+ 0x93b, 0x3, 0x982, 0x3, 0x9b9, 0x3, 0x9c0, 0x3, 0x9c1, 0x3, 0xa02,
+ 0x3, 0xa02, 0x3, 0xa12, 0x3, 0xa15, 0x3, 0xa17, 0x3, 0xa19, 0x3,
+ 0xa1b, 0x3, 0xa37, 0x3, 0xa62, 0x3, 0xa7e, 0x3, 0xa82, 0x3, 0xa9e,
+ 0x3, 0xac2, 0x3, 0xac9, 0x3, 0xacb, 0x3, 0xae6, 0x3, 0xb02, 0x3,
+ 0xb37, 0x3, 0xb42, 0x3, 0xb57, 0x3, 0xb62, 0x3, 0xb74, 0x3, 0xb82,
+ 0x3, 0xb93, 0x3, 0xc02, 0x3, 0xc4a, 0x3, 0xc82, 0x3, 0xcb4, 0x3,
+ 0xcc2, 0x3, 0xcf4, 0x3, 0xd02, 0x3, 0xd25, 0x3, 0xe82, 0x3, 0xeab,
+ 0x3, 0xeb2, 0x3, 0xeb3, 0x3, 0xf02, 0x3, 0xf1e, 0x3, 0xf29, 0x3,
+ 0xf29, 0x3, 0xf32, 0x3, 0xf47, 0x3, 0xfb2, 0x3, 0xfc6, 0x3, 0xfe2,
+ 0x3, 0xff8, 0x3, 0x1005, 0x3, 0x1039, 0x3, 0x1085, 0x3, 0x10b1, 0x3,
+ 0x10d2, 0x3, 0x10ea, 0x3, 0x1105, 0x3, 0x1128, 0x3, 0x1146, 0x3,
+ 0x1146, 0x3, 0x1149, 0x3, 0x1149, 0x3, 0x1152, 0x3, 0x1174, 0x3,
+ 0x1178, 0x3, 0x1178, 0x3, 0x1185, 0x3, 0x11b4, 0x3, 0x11c3, 0x3,
+ 0x11c6, 0x3, 0x11dc, 0x3, 0x11dc, 0x3, 0x11de, 0x3, 0x11de, 0x3,
+ 0x1202, 0x3, 0x1213, 0x3, 0x1215, 0x3, 0x122d, 0x3, 0x1282, 0x3,
+ 0x1288, 0x3, 0x128a, 0x3, 0x128a, 0x3, 0x128c, 0x3, 0x128f, 0x3,
+ 0x1291, 0x3, 0x129f, 0x3, 0x12a1, 0x3, 0x12aa, 0x3, 0x12b2, 0x3,
+ 0x12e0, 0x3, 0x1307, 0x3, 0x130e, 0x3, 0x1311, 0x3, 0x1312, 0x3,
+ 0x1315, 0x3, 0x132a, 0x3, 0x132c, 0x3, 0x1332, 0x3, 0x1334, 0x3,
+ 0x1335, 0x3, 0x1337, 0x3, 0x133b, 0x3, 0x133f, 0x3, 0x133f, 0x3,
+ 0x1352, 0x3, 0x1352, 0x3, 0x135f, 0x3, 0x1363, 0x3, 0x1402, 0x3,
+ 0x1436, 0x3, 0x1449, 0x3, 0x144c, 0x3, 0x1461, 0x3, 0x1463, 0x3,
+ 0x1482, 0x3, 0x14b1, 0x3, 0x14c6, 0x3, 0x14c7, 0x3, 0x14c9, 0x3,
+ 0x14c9, 0x3, 0x1582, 0x3, 0x15b0, 0x3, 0x15da, 0x3, 0x15dd, 0x3,
+ 0x1602, 0x3, 0x1631, 0x3, 0x1646, 0x3, 0x1646, 0x3, 0x1682, 0x3,
+ 0x16ac, 0x3, 0x16ba, 0x3, 0x16ba, 0x3, 0x1702, 0x3, 0x171c, 0x3,
+ 0x1802, 0x3, 0x182d, 0x3, 0x18a2, 0x3, 0x18e1, 0x3, 0x1901, 0x3,
+ 0x1908, 0x3, 0x190b, 0x3, 0x190b, 0x3, 0x190e, 0x3, 0x1915, 0x3,
+ 0x1917, 0x3, 0x1918, 0x3, 0x191a, 0x3, 0x1931, 0x3, 0x1941, 0x3,
+ 0x1941, 0x3, 0x1943, 0x3, 0x1943, 0x3, 0x19a2, 0x3, 0x19a9, 0x3,
+ 0x19ac, 0x3, 0x19d2, 0x3, 0x19e3, 0x3, 0x19e3, 0x3, 0x19e5, 0x3,
+ 0x19e5, 0x3, 0x1a02, 0x3, 0x1a02, 0x3, 0x1a0d, 0x3, 0x1a34, 0x3,
+ 0x1a3c, 0x3, 0x1a3c, 0x3, 0x1a52, 0x3, 0x1a52, 0x3, 0x1a5e, 0x3,
+ 0x1a8b, 0x3, 0x1a9f, 0x3, 0x1a9f, 0x3, 0x1ac2, 0x3, 0x1afa, 0x3,
+ 0x1c02, 0x3, 0x1c0a, 0x3, 0x1c0c, 0x3, 0x1c30, 0x3, 0x1c42, 0x3,
+ 0x1c42, 0x3, 0x1c74, 0x3, 0x1c91, 0x3, 0x1d02, 0x3, 0x1d08, 0x3,
+ 0x1d0a, 0x3, 0x1d0b, 0x3, 0x1d0d, 0x3, 0x1d32, 0x3, 0x1d48, 0x3,
+ 0x1d48, 0x3, 0x1d62, 0x3, 0x1d67, 0x3, 0x1d69, 0x3, 0x1d6a, 0x3,
+ 0x1d6c, 0x3, 0x1d8b, 0x3, 0x1d9a, 0x3, 0x1d9a, 0x3, 0x1ee2, 0x3,
+ 0x1ef4, 0x3, 0x1fb2, 0x3, 0x1fb2, 0x3, 0x2002, 0x3, 0x239b, 0x3,
+ 0x2482, 0x3, 0x2545, 0x3, 0x3002, 0x3, 0x3430, 0x3, 0x4402, 0x3,
+ 0x4648, 0x3, 0x6802, 0x3, 0x6a3a, 0x3, 0x6a42, 0x3, 0x6a60, 0x3,
+ 0x6ad2, 0x3, 0x6aef, 0x3, 0x6b02, 0x3, 0x6b31, 0x3, 0x6b42, 0x3,
+ 0x6b45, 0x3, 0x6b65, 0x3, 0x6b79, 0x3, 0x6b7f, 0x3, 0x6b91, 0x3,
+ 0x6e42, 0x3, 0x6e81, 0x3, 0x6f02, 0x3, 0x6f4c, 0x3, 0x6f52, 0x3,
+ 0x6f52, 0x3, 0x6f95, 0x3, 0x6fa1, 0x3, 0x6fe2, 0x3, 0x6fe3, 0x3,
+ 0x6fe5, 0x3, 0x6fe5, 0x3, 0x7002, 0x3, 0x87f9, 0x3, 0x8802, 0x3,
+ 0x8cd7, 0x3, 0x8d02, 0x3, 0x8d0a, 0x3, 0xb002, 0x3, 0xb120, 0x3,
+ 0xb152, 0x3, 0xb154, 0x3, 0xb166, 0x3, 0xb169, 0x3, 0xb172, 0x3,
+ 0xb2fd, 0x3, 0xbc02, 0x3, 0xbc6c, 0x3, 0xbc72, 0x3, 0xbc7e, 0x3,
+ 0xbc82, 0x3, 0xbc8a, 0x3, 0xbc92, 0x3, 0xbc9b, 0x3, 0xd402, 0x3,
+ 0xd456, 0x3, 0xd458, 0x3, 0xd49e, 0x3, 0xd4a0, 0x3, 0xd4a1, 0x3,
+ 0xd4a4, 0x3, 0xd4a4, 0x3, 0xd4a7, 0x3, 0xd4a8, 0x3, 0xd4ab, 0x3,
+ 0xd4ae, 0x3, 0xd4b0, 0x3, 0xd4bb, 0x3, 0xd4bd, 0x3, 0xd4bd, 0x3,
+ 0xd4bf, 0x3, 0xd4c5, 0x3, 0xd4c7, 0x3, 0xd507, 0x3, 0xd509, 0x3,
+ 0xd50c, 0x3, 0xd50f, 0x3, 0xd516, 0x3, 0xd518, 0x3, 0xd51e, 0x3,
+ 0xd520, 0x3, 0xd53b, 0x3, 0xd53d, 0x3, 0xd540, 0x3, 0xd542, 0x3,
+ 0xd546, 0x3, 0xd548, 0x3, 0xd548, 0x3, 0xd54c, 0x3, 0xd552, 0x3,
+ 0xd554, 0x3, 0xd6a7, 0x3, 0xd6aa, 0x3, 0xd6c2, 0x3, 0xd6c4, 0x3,
+ 0xd6dc, 0x3, 0xd6de, 0x3, 0xd6fc, 0x3, 0xd6fe, 0x3, 0xd716, 0x3,
+ 0xd718, 0x3, 0xd736, 0x3, 0xd738, 0x3, 0xd750, 0x3, 0xd752, 0x3,
+ 0xd770, 0x3, 0xd772, 0x3, 0xd78a, 0x3, 0xd78c, 0x3, 0xd7aa, 0x3,
+ 0xd7ac, 0x3, 0xd7c4, 0x3, 0xd7c6, 0x3, 0xd7cd, 0x3, 0xe102, 0x3,
+ 0xe12e, 0x3, 0xe139, 0x3, 0xe13f, 0x3, 0xe150, 0x3, 0xe150, 0x3,
+ 0xe2c2, 0x3, 0xe2ed, 0x3, 0xe802, 0x3, 0xe8c6, 0x3, 0xe902, 0x3,
+ 0xe945, 0x3, 0xe94d, 0x3, 0xe94d, 0x3, 0xee02, 0x3, 0xee05, 0x3,
+ 0xee07, 0x3, 0xee21, 0x3, 0xee23, 0x3, 0xee24, 0x3, 0xee26, 0x3,
+ 0xee26, 0x3, 0xee29, 0x3, 0xee29, 0x3, 0xee2b, 0x3, 0xee34, 0x3,
+ 0xee36, 0x3, 0xee39, 0x3, 0xee3b, 0x3, 0xee3b, 0x3, 0xee3d, 0x3,
+ 0xee3d, 0x3, 0xee44, 0x3, 0xee44, 0x3, 0xee49, 0x3, 0xee49, 0x3,
+ 0xee4b, 0x3, 0xee4b, 0x3, 0xee4d, 0x3, 0xee4d, 0x3, 0xee4f, 0x3,
+ 0xee51, 0x3, 0xee53, 0x3, 0xee54, 0x3, 0xee56, 0x3, 0xee56, 0x3,
+ 0xee59, 0x3, 0xee59, 0x3, 0xee5b, 0x3, 0xee5b, 0x3, 0xee5d, 0x3,
+ 0xee5d, 0x3, 0xee5f, 0x3, 0xee5f, 0x3, 0xee61, 0x3, 0xee61, 0x3,
+ 0xee63, 0x3, 0xee64, 0x3, 0xee66, 0x3, 0xee66, 0x3, 0xee69, 0x3,
+ 0xee6c, 0x3, 0xee6e, 0x3, 0xee74, 0x3, 0xee76, 0x3, 0xee79, 0x3,
+ 0xee7b, 0x3, 0xee7e, 0x3, 0xee80, 0x3, 0xee80, 0x3, 0xee82, 0x3,
+ 0xee8b, 0x3, 0xee8d, 0x3, 0xee9d, 0x3, 0xeea3, 0x3, 0xeea5, 0x3,
+ 0xeea7, 0x3, 0xeeab, 0x3, 0xeead, 0x3, 0xeebd, 0x3, 0x2, 0x4, 0xa6df,
+ 0x4, 0xa702, 0x4, 0xb736, 0x4, 0xb742, 0x4, 0xb81f, 0x4, 0xb822,
+ 0x4, 0xcea3, 0x4, 0xceb2, 0x4, 0xebe2, 0x4, 0xf802, 0x4, 0xfa1f,
+ 0x4, 0x2, 0x5, 0x134c, 0x5, 0x354, 0x2, 0x4, 0x3, 0x2, 0x2, 0x2,
+ 0x2, 0x6, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8, 0x3, 0x2, 0x2, 0x2, 0x2,
+ 0xa, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe,
+ 0x3, 0x2, 0x2, 0x2, 0x2, 0x10, 0x3, 0x2, 0x2, 0x2, 0x2, 0x12, 0x3,
+ 0x2, 0x2, 0x2, 0x2, 0x14, 0x3, 0x2, 0x2, 0x2, 0x2, 0x16, 0x3, 0x2,
+ 0x2, 0x2, 0x2, 0x18, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1a, 0x3, 0x2, 0x2,
+ 0x2, 0x2, 0x1c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e, 0x3, 0x2, 0x2, 0x2,
+ 0x2, 0x20, 0x3, 0x2, 0x2, 0x2, 0x2, 0x22, 0x3, 0x2, 0x2, 0x2, 0x2,
+ 0x24, 0x3, 0x2, 0x2, 0x2, 0x2, 0x26, 0x3, 0x2, 0x2, 0x2, 0x2, 0x28,
+ 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c, 0x3,
+ 0x2, 0x2, 0x2, 0x2, 0x2e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x30, 0x3, 0x2,
+ 0x2, 0x2, 0x2, 0x32, 0x3, 0x2, 0x2, 0x2, 0x2, 0x34, 0x3, 0x2, 0x2,
+ 0x2, 0x2, 0x36, 0x3, 0x2, 0x2, 0x2, 0x2, 0x38, 0x3, 0x2, 0x2, 0x2,
+ 0x2, 0x3a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x2,
+ 0x3e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x40, 0x3, 0x2, 0x2, 0x2, 0x2, 0x42,
+ 0x3, 0x2, 0x2, 0x2, 0x2, 0x44, 0x3, 0x2, 0x2, 0x2, 0x2, 0x46, 0x3,
+ 0x2, 0x2, 0x2, 0x2, 0x48, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4a, 0x3, 0x2,
+ 0x2, 0x2, 0x2, 0x4c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4e, 0x3, 0x2, 0x2,
+ 0x2, 0x2, 0x50, 0x3, 0x2, 0x2, 0x2, 0x2, 0x52, 0x3, 0x2, 0x2, 0x2,
+ 0x2, 0x54, 0x3, 0x2, 0x2, 0x2, 0x2, 0x56, 0x3, 0x2, 0x2, 0x2, 0x2,
+ 0x58, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5c,
+ 0x3, 0x2, 0x2, 0x2, 0x2, 0x5e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x60, 0x3,
+ 0x2, 0x2, 0x2, 0x2, 0x62, 0x3, 0x2, 0x2, 0x2, 0x2, 0x64, 0x3, 0x2,
+ 0x2, 0x2, 0x2, 0x66, 0x3, 0x2, 0x2, 0x2, 0x2, 0x68, 0x3, 0x2, 0x2,
+ 0x2, 0x2, 0x6a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6c, 0x3, 0x2, 0x2, 0x2,
+ 0x2, 0x6e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x70, 0x3, 0x2, 0x2, 0x2, 0x2,
+ 0x72, 0x3, 0x2, 0x2, 0x2, 0x2, 0x74, 0x3, 0x2, 0x2, 0x2, 0x2, 0x76,
+ 0x3, 0x2, 0x2, 0x2, 0x2, 0x78, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7a, 0x3,
+ 0x2, 0x2, 0x2, 0x2, 0x7c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7e, 0x3, 0x2,
+ 0x2, 0x2, 0x2, 0x80, 0x3, 0x2, 0x2, 0x2, 0x2, 0x82, 0x3, 0x2, 0x2,
+ 0x2, 0x2, 0x84, 0x3, 0x2, 0x2, 0x2, 0x2, 0x86, 0x3, 0x2, 0x2, 0x2,
+ 0x2, 0x88, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x2,
+ 0x8c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x90,
+ 0x3, 0x2, 0x2, 0x2, 0x2, 0x92, 0x3, 0x2, 0x2, 0x2, 0x2, 0x94, 0x3,
+ 0x2, 0x2, 0x2, 0x2, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9e, 0x3, 0x2,
+ 0x2, 0x2, 0x2, 0xa0, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa2, 0x3, 0x2, 0x2,
+ 0x2, 0x2, 0xa4, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa6, 0x3, 0x2, 0x2, 0x2,
+ 0x2, 0xa8, 0x3, 0x2, 0x2, 0x2, 0x2, 0xaa, 0x3, 0x2, 0x2, 0x2, 0x2,
+ 0xac, 0x3, 0x2, 0x2, 0x2, 0x2, 0xae, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb0,
+ 0x3, 0x2, 0x2, 0x2, 0x2, 0xb2, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb4, 0x3,
+ 0x2, 0x2, 0x2, 0x3, 0xca, 0x3, 0x2, 0x2, 0x2, 0x3, 0xcc, 0x3, 0x2,
+ 0x2, 0x2, 0x3, 0xce, 0x3, 0x2, 0x2, 0x2, 0x4, 0xd0, 0x3, 0x2, 0x2,
+ 0x2, 0x6, 0xd6, 0x3, 0x2, 0x2, 0x2, 0x8, 0xde, 0x3, 0x2, 0x2, 0x2,
+ 0xa, 0xe3, 0x3, 0x2, 0x2, 0x2, 0xc, 0xed, 0x3, 0x2, 0x2, 0x2, 0xe,
+ 0xf4, 0x3, 0x2, 0x2, 0x2, 0x10, 0xf9, 0x3, 0x2, 0x2, 0x2, 0x12, 0xff,
+ 0x3, 0x2, 0x2, 0x2, 0x14, 0x102, 0x3, 0x2, 0x2, 0x2, 0x16, 0x106,
+ 0x3, 0x2, 0x2, 0x2, 0x18, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x1a, 0x112,
+ 0x3, 0x2, 0x2, 0x2, 0x1c, 0x117, 0x3, 0x2, 0x2, 0x2, 0x1e, 0x11c,
+ 0x3, 0x2, 0x2, 0x2, 0x20, 0x124, 0x3, 0x2, 0x2, 0x2, 0x22, 0x12b,
+ 0x3, 0x2, 0x2, 0x2, 0x24, 0x131, 0x3, 0x2, 0x2, 0x2, 0x26, 0x13d,
+ 0x3, 0x2, 0x2, 0x2, 0x28, 0x140, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x146,
+ 0x3, 0x2, 0x2, 0x2, 0x2c, 0x14b, 0x3, 0x2, 0x2, 0x2, 0x2e, 0x154,
+ 0x3, 0x2, 0x2, 0x2, 0x30, 0x158, 0x3, 0x2, 0x2, 0x2, 0x32, 0x15f,
+ 0x3, 0x2, 0x2, 0x2, 0x34, 0x166, 0x3, 0x2, 0x2, 0x2, 0x36, 0x16a,
+ 0x3, 0x2, 0x2, 0x2, 0x38, 0x16e, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x176,
+ 0x3, 0x2, 0x2, 0x2, 0x3c, 0x178, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x17a,
+ 0x3, 0x2, 0x2, 0x2, 0x40, 0x17c, 0x3, 0x2, 0x2, 0x2, 0x42, 0x17e,
+ 0x3, 0x2, 0x2, 0x2, 0x44, 0x180, 0x3, 0x2, 0x2, 0x2, 0x46, 0x182,
+ 0x3, 0x2, 0x2, 0x2, 0x48, 0x184, 0x3, 0x2, 0x2, 0x2, 0x4a, 0x186,
+ 0x3, 0x2, 0x2, 0x2, 0x4c, 0x188, 0x3, 0x2, 0x2, 0x2, 0x4e, 0x18a,
+ 0x3, 0x2, 0x2, 0x2, 0x50, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x52, 0x18f,
+ 0x3, 0x2, 0x2, 0x2, 0x54, 0x191, 0x3, 0x2, 0x2, 0x2, 0x56, 0x194,
+ 0x3, 0x2, 0x2, 0x2, 0x58, 0x197, 0x3, 0x2, 0x2, 0x2, 0x5a, 0x19a,
+ 0x3, 0x2, 0x2, 0x2, 0x5c, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x5e, 0x1b7,
+ 0x3, 0x2, 0x2, 0x2, 0x60, 0x1ba, 0x3, 0x2, 0x2, 0x2, 0x62, 0x1bd,
+ 0x3, 0x2, 0x2, 0x2, 0x64, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0x66, 0x1c3,
+ 0x3, 0x2, 0x2, 0x2, 0x68, 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x6a, 0x1c8,
+ 0x3, 0x2, 0x2, 0x2, 0x6c, 0x1ca, 0x3, 0x2, 0x2, 0x2, 0x6e, 0x1cd,
+ 0x3, 0x2, 0x2, 0x2, 0x70, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x72, 0x1d1,
+ 0x3, 0x2, 0x2, 0x2, 0x74, 0x1d3, 0x3, 0x2, 0x2, 0x2, 0x76, 0x1d6,
+ 0x3, 0x2, 0x2, 0x2, 0x78, 0x1d9, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x1dc,
+ 0x3, 0x2, 0x2, 0x2, 0x7c, 0x1de, 0x3, 0x2, 0x2, 0x2, 0x7e, 0x1e0,
+ 0x3, 0x2, 0x2, 0x2, 0x80, 0x1e2, 0x3, 0x2, 0x2, 0x2, 0x82, 0x1e4,
+ 0x3, 0x2, 0x2, 0x2, 0x84, 0x1e6, 0x3, 0x2, 0x2, 0x2, 0x86, 0x1e8,
+ 0x3, 0x2, 0x2, 0x2, 0x88, 0x1f6, 0x3, 0x2, 0x2, 0x2, 0x8a, 0x1f8,
+ 0x3, 0x2, 0x2, 0x2, 0x8c, 0x202, 0x3, 0x2, 0x2, 0x2, 0x8e, 0x20e,
+ 0x3, 0x2, 0x2, 0x2, 0x90, 0x21a, 0x3, 0x2, 0x2, 0x2, 0x92, 0x22c,
+ 0x3, 0x2, 0x2, 0x2, 0x94, 0x22e, 0x3, 0x2, 0x2, 0x2, 0x96, 0x252,
+ 0x3, 0x2, 0x2, 0x2, 0x98, 0x254, 0x3, 0x2, 0x2, 0x2, 0x9a, 0x25f,
+ 0x3, 0x2, 0x2, 0x2, 0x9c, 0x263, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x26a,
+ 0x3, 0x2, 0x2, 0x2, 0xa0, 0x26e, 0x3, 0x2, 0x2, 0x2, 0xa2, 0x270,
+ 0x3, 0x2, 0x2, 0x2, 0xa4, 0x275, 0x3, 0x2, 0x2, 0x2, 0xa6, 0x27a,
+ 0x3, 0x2, 0x2, 0x2, 0xa8, 0x281, 0x3, 0x2, 0x2, 0x2, 0xaa, 0x28c,
+ 0x3, 0x2, 0x2, 0x2, 0xac, 0x295, 0x3, 0x2, 0x2, 0x2, 0xae, 0x2a0,
+ 0x3, 0x2, 0x2, 0x2, 0xb0, 0x2a6, 0x3, 0x2, 0x2, 0x2, 0xb2, 0x2b5,
+ 0x3, 0x2, 0x2, 0x2, 0xb4, 0x2bb, 0x3, 0x2, 0x2, 0x2, 0xb6, 0x2ca,
+ 0x3, 0x2, 0x2, 0x2, 0xb8, 0x2cc, 0x3, 0x2, 0x2, 0x2, 0xba, 0x2e8,
+ 0x3, 0x2, 0x2, 0x2, 0xbc, 0x2f2, 0x3, 0x2, 0x2, 0x2, 0xbe, 0x2f4,
+ 0x3, 0x2, 0x2, 0x2, 0xc0, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0xc2, 0x2f8,
+ 0x3, 0x2, 0x2, 0x2, 0xc4, 0x300, 0x3, 0x2, 0x2, 0x2, 0xc6, 0x302,
+ 0x3, 0x2, 0x2, 0x2, 0xc8, 0x304, 0x3, 0x2, 0x2, 0x2, 0xca, 0x307,
+ 0x3, 0x2, 0x2, 0x2, 0xcc, 0x30d, 0x3, 0x2, 0x2, 0x2, 0xce, 0x31b,
+ 0x3, 0x2, 0x2, 0x2, 0xd0, 0xd1, 0x7, 0x64, 0x2, 0x2, 0xd1, 0xd2,
+ 0x7, 0x74, 0x2, 0x2, 0xd2, 0xd3, 0x7, 0x67, 0x2, 0x2, 0xd3, 0xd4,
+ 0x7, 0x63, 0x2, 0x2, 0xd4, 0xd5, 0x7, 0x6d, 0x2, 0x2, 0xd5, 0x5,
+ 0x3, 0x2, 0x2, 0x2, 0xd6, 0xd7, 0x7, 0x66, 0x2, 0x2, 0xd7, 0xd8,
+ 0x7, 0x67, 0x2, 0x2, 0xd8, 0xd9, 0x7, 0x68, 0x2, 0x2, 0xd9, 0xda,
+ 0x7, 0x63, 0x2, 0x2, 0xda, 0xdb, 0x7, 0x77, 0x2, 0x2, 0xdb, 0xdc,
+ 0x7, 0x6e, 0x2, 0x2, 0xdc, 0xdd, 0x7, 0x76, 0x2, 0x2, 0xdd, 0x7,
+ 0x3, 0x2, 0x2, 0x2, 0xde, 0xdf, 0x7, 0x68, 0x2, 0x2, 0xdf, 0xe0,
+ 0x7, 0x77, 0x2, 0x2, 0xe0, 0xe1, 0x7, 0x70, 0x2, 0x2, 0xe1, 0xe2,
+ 0x7, 0x65, 0x2, 0x2, 0xe2, 0x9, 0x3, 0x2, 0x2, 0x2, 0xe3, 0xe4, 0x7,
+ 0x6b, 0x2, 0x2, 0xe4, 0xe5, 0x7, 0x70, 0x2, 0x2, 0xe5, 0xe6, 0x7,
+ 0x76, 0x2, 0x2, 0xe6, 0xe7, 0x7, 0x67, 0x2, 0x2, 0xe7, 0xe8, 0x7,
+ 0x74, 0x2, 0x2, 0xe8, 0xe9, 0x7, 0x68, 0x2, 0x2, 0xe9, 0xea, 0x7,
+ 0x63, 0x2, 0x2, 0xea, 0xeb, 0x7, 0x65, 0x2, 0x2, 0xeb, 0xec, 0x7,
+ 0x67, 0x2, 0x2, 0xec, 0xb, 0x3, 0x2, 0x2, 0x2, 0xed, 0xee, 0x7, 0x75,
+ 0x2, 0x2, 0xee, 0xef, 0x7, 0x67, 0x2, 0x2, 0xef, 0xf0, 0x7, 0x6e,
+ 0x2, 0x2, 0xf0, 0xf1, 0x7, 0x67, 0x2, 0x2, 0xf1, 0xf2, 0x7, 0x65,
+ 0x2, 0x2, 0xf2, 0xf3, 0x7, 0x76, 0x2, 0x2, 0xf3, 0xd, 0x3, 0x2, 0x2,
+ 0x2, 0xf4, 0xf5, 0x7, 0x65, 0x2, 0x2, 0xf5, 0xf6, 0x7, 0x63, 0x2,
+ 0x2, 0xf6, 0xf7, 0x7, 0x75, 0x2, 0x2, 0xf7, 0xf8, 0x7, 0x67, 0x2,
+ 0x2, 0xf8, 0xf, 0x3, 0x2, 0x2, 0x2, 0xf9, 0xfa, 0x7, 0x66, 0x2, 0x2,
+ 0xfa, 0xfb, 0x7, 0x67, 0x2, 0x2, 0xfb, 0xfc, 0x7, 0x68, 0x2, 0x2,
+ 0xfc, 0xfd, 0x7, 0x67, 0x2, 0x2, 0xfd, 0xfe, 0x7, 0x74, 0x2, 0x2,
+ 0xfe, 0x11, 0x3, 0x2, 0x2, 0x2, 0xff, 0x100, 0x7, 0x69, 0x2, 0x2,
+ 0x100, 0x101, 0x7, 0x71, 0x2, 0x2, 0x101, 0x13, 0x3, 0x2, 0x2, 0x2,
+ 0x102, 0x103, 0x7, 0x6f, 0x2, 0x2, 0x103, 0x104, 0x7, 0x63, 0x2,
+ 0x2, 0x104, 0x105, 0x7, 0x72, 0x2, 0x2, 0x105, 0x15, 0x3, 0x2, 0x2,
+ 0x2, 0x106, 0x107, 0x7, 0x75, 0x2, 0x2, 0x107, 0x108, 0x7, 0x76,
+ 0x2, 0x2, 0x108, 0x109, 0x7, 0x74, 0x2, 0x2, 0x109, 0x10a, 0x7, 0x77,
+ 0x2, 0x2, 0x10a, 0x10b, 0x7, 0x65, 0x2, 0x2, 0x10b, 0x10c, 0x7, 0x76,
+ 0x2, 0x2, 0x10c, 0x17, 0x3, 0x2, 0x2, 0x2, 0x10d, 0x10e, 0x7, 0x65,
+ 0x2, 0x2, 0x10e, 0x10f, 0x7, 0x6a, 0x2, 0x2, 0x10f, 0x110, 0x7, 0x63,
+ 0x2, 0x2, 0x110, 0x111, 0x7, 0x70, 0x2, 0x2, 0x111, 0x19, 0x3, 0x2,
+ 0x2, 0x2, 0x112, 0x113, 0x7, 0x67, 0x2, 0x2, 0x113, 0x114, 0x7, 0x6e,
+ 0x2, 0x2, 0x114, 0x115, 0x7, 0x75, 0x2, 0x2, 0x115, 0x116, 0x7, 0x67,
+ 0x2, 0x2, 0x116, 0x1b, 0x3, 0x2, 0x2, 0x2, 0x117, 0x118, 0x7, 0x69,
+ 0x2, 0x2, 0x118, 0x119, 0x7, 0x71, 0x2, 0x2, 0x119, 0x11a, 0x7, 0x76,
+ 0x2, 0x2, 0x11a, 0x11b, 0x7, 0x71, 0x2, 0x2, 0x11b, 0x1d, 0x3, 0x2,
+ 0x2, 0x2, 0x11c, 0x11d, 0x7, 0x72, 0x2, 0x2, 0x11d, 0x11e, 0x7, 0x63,
+ 0x2, 0x2, 0x11e, 0x11f, 0x7, 0x65, 0x2, 0x2, 0x11f, 0x120, 0x7, 0x6d,
+ 0x2, 0x2, 0x120, 0x121, 0x7, 0x63, 0x2, 0x2, 0x121, 0x122, 0x7, 0x69,
+ 0x2, 0x2, 0x122, 0x123, 0x7, 0x67, 0x2, 0x2, 0x123, 0x1f, 0x3, 0x2,
+ 0x2, 0x2, 0x124, 0x125, 0x7, 0x75, 0x2, 0x2, 0x125, 0x126, 0x7, 0x79,
+ 0x2, 0x2, 0x126, 0x127, 0x7, 0x6b, 0x2, 0x2, 0x127, 0x128, 0x7, 0x76,
+ 0x2, 0x2, 0x128, 0x129, 0x7, 0x65, 0x2, 0x2, 0x129, 0x12a, 0x7, 0x6a,
+ 0x2, 0x2, 0x12a, 0x21, 0x3, 0x2, 0x2, 0x2, 0x12b, 0x12c, 0x7, 0x65,
+ 0x2, 0x2, 0x12c, 0x12d, 0x7, 0x71, 0x2, 0x2, 0x12d, 0x12e, 0x7, 0x70,
+ 0x2, 0x2, 0x12e, 0x12f, 0x7, 0x75, 0x2, 0x2, 0x12f, 0x130, 0x7, 0x76,
+ 0x2, 0x2, 0x130, 0x23, 0x3, 0x2, 0x2, 0x2, 0x131, 0x132, 0x7, 0x68,
+ 0x2, 0x2, 0x132, 0x133, 0x7, 0x63, 0x2, 0x2, 0x133, 0x134, 0x7, 0x6e,
+ 0x2, 0x2, 0x134, 0x135, 0x7, 0x6e, 0x2, 0x2, 0x135, 0x136, 0x7, 0x76,
+ 0x2, 0x2, 0x136, 0x137, 0x7, 0x6a, 0x2, 0x2, 0x137, 0x138, 0x7, 0x74,
+ 0x2, 0x2, 0x138, 0x139, 0x7, 0x71, 0x2, 0x2, 0x139, 0x13a, 0x7, 0x77,
+ 0x2, 0x2, 0x13a, 0x13b, 0x7, 0x69, 0x2, 0x2, 0x13b, 0x13c, 0x7, 0x6a,
+ 0x2, 0x2, 0x13c, 0x25, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x13e, 0x7, 0x6b,
+ 0x2, 0x2, 0x13e, 0x13f, 0x7, 0x68, 0x2, 0x2, 0x13f, 0x27, 0x3, 0x2,
+ 0x2, 0x2, 0x140, 0x141, 0x7, 0x74, 0x2, 0x2, 0x141, 0x142, 0x7, 0x63,
+ 0x2, 0x2, 0x142, 0x143, 0x7, 0x70, 0x2, 0x2, 0x143, 0x144, 0x7, 0x69,
+ 0x2, 0x2, 0x144, 0x145, 0x7, 0x67, 0x2, 0x2, 0x145, 0x29, 0x3, 0x2,
+ 0x2, 0x2, 0x146, 0x147, 0x7, 0x76, 0x2, 0x2, 0x147, 0x148, 0x7, 0x7b,
+ 0x2, 0x2, 0x148, 0x149, 0x7, 0x72, 0x2, 0x2, 0x149, 0x14a, 0x7, 0x67,
+ 0x2, 0x2, 0x14a, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x14b, 0x14c, 0x7, 0x65,
+ 0x2, 0x2, 0x14c, 0x14d, 0x7, 0x71, 0x2, 0x2, 0x14d, 0x14e, 0x7, 0x70,
+ 0x2, 0x2, 0x14e, 0x14f, 0x7, 0x76, 0x2, 0x2, 0x14f, 0x150, 0x7, 0x6b,
+ 0x2, 0x2, 0x150, 0x151, 0x7, 0x70, 0x2, 0x2, 0x151, 0x152, 0x7, 0x77,
+ 0x2, 0x2, 0x152, 0x153, 0x7, 0x67, 0x2, 0x2, 0x153, 0x2d, 0x3, 0x2,
+ 0x2, 0x2, 0x154, 0x155, 0x7, 0x68, 0x2, 0x2, 0x155, 0x156, 0x7, 0x71,
+ 0x2, 0x2, 0x156, 0x157, 0x7, 0x74, 0x2, 0x2, 0x157, 0x2f, 0x3, 0x2,
+ 0x2, 0x2, 0x158, 0x159, 0x7, 0x6b, 0x2, 0x2, 0x159, 0x15a, 0x7, 0x6f,
+ 0x2, 0x2, 0x15a, 0x15b, 0x7, 0x72, 0x2, 0x2, 0x15b, 0x15c, 0x7, 0x71,
+ 0x2, 0x2, 0x15c, 0x15d, 0x7, 0x74, 0x2, 0x2, 0x15d, 0x15e, 0x7, 0x76,
+ 0x2, 0x2, 0x15e, 0x31, 0x3, 0x2, 0x2, 0x2, 0x15f, 0x160, 0x7, 0x74,
+ 0x2, 0x2, 0x160, 0x161, 0x7, 0x67, 0x2, 0x2, 0x161, 0x162, 0x7, 0x76,
+ 0x2, 0x2, 0x162, 0x163, 0x7, 0x77, 0x2, 0x2, 0x163, 0x164, 0x7, 0x74,
+ 0x2, 0x2, 0x164, 0x165, 0x7, 0x70, 0x2, 0x2, 0x165, 0x33, 0x3, 0x2,
+ 0x2, 0x2, 0x166, 0x167, 0x7, 0x78, 0x2, 0x2, 0x167, 0x168, 0x7, 0x63,
+ 0x2, 0x2, 0x168, 0x169, 0x7, 0x74, 0x2, 0x2, 0x169, 0x35, 0x3, 0x2,
+ 0x2, 0x2, 0x16a, 0x16b, 0x7, 0x70, 0x2, 0x2, 0x16b, 0x16c, 0x7, 0x6b,
+ 0x2, 0x2, 0x16c, 0x16d, 0x7, 0x6e, 0x2, 0x2, 0x16d, 0x37, 0x3, 0x2,
+ 0x2, 0x2, 0x16e, 0x173, 0x5, 0xc4, 0x62, 0x2, 0x16f, 0x172, 0x5,
+ 0xc4, 0x62, 0x2, 0x170, 0x172, 0x5, 0xc6, 0x63, 0x2, 0x171, 0x16f,
+ 0x3, 0x2, 0x2, 0x2, 0x171, 0x170, 0x3, 0x2, 0x2, 0x2, 0x172, 0x175,
+ 0x3, 0x2, 0x2, 0x2, 0x173, 0x171, 0x3, 0x2, 0x2, 0x2, 0x173, 0x174,
+ 0x3, 0x2, 0x2, 0x2, 0x174, 0x39, 0x3, 0x2, 0x2, 0x2, 0x175, 0x173,
+ 0x3, 0x2, 0x2, 0x2, 0x176, 0x177, 0x7, 0x2a, 0x2, 0x2, 0x177, 0x3b,
+ 0x3, 0x2, 0x2, 0x2, 0x178, 0x179, 0x7, 0x2b, 0x2, 0x2, 0x179, 0x3d,
+ 0x3, 0x2, 0x2, 0x2, 0x17a, 0x17b, 0x7, 0x7d, 0x2, 0x2, 0x17b, 0x3f,
+ 0x3, 0x2, 0x2, 0x2, 0x17c, 0x17d, 0x7, 0x7f, 0x2, 0x2, 0x17d, 0x41,
+ 0x3, 0x2, 0x2, 0x2, 0x17e, 0x17f, 0x7, 0x5d, 0x2, 0x2, 0x17f, 0x43,
+ 0x3, 0x2, 0x2, 0x2, 0x180, 0x181, 0x7, 0x5f, 0x2, 0x2, 0x181, 0x45,
+ 0x3, 0x2, 0x2, 0x2, 0x182, 0x183, 0x7, 0x3f, 0x2, 0x2, 0x183, 0x47,
+ 0x3, 0x2, 0x2, 0x2, 0x184, 0x185, 0x7, 0x2e, 0x2, 0x2, 0x185, 0x49,
+ 0x3, 0x2, 0x2, 0x2, 0x186, 0x187, 0x7, 0x3d, 0x2, 0x2, 0x187, 0x4b,
+ 0x3, 0x2, 0x2, 0x2, 0x188, 0x189, 0x7, 0xc, 0x2, 0x2, 0x189, 0x4d,
+ 0x3, 0x2, 0x2, 0x2, 0x18a, 0x18b, 0x7, 0xf, 0x2, 0x2, 0x18b, 0x18c,
+ 0x7, 0xc, 0x2, 0x2, 0x18c, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x18d, 0x18e,
+ 0x7, 0x3c, 0x2, 0x2, 0x18e, 0x51, 0x3, 0x2, 0x2, 0x2, 0x18f, 0x190,
+ 0x7, 0x30, 0x2, 0x2, 0x190, 0x53, 0x3, 0x2, 0x2, 0x2, 0x191, 0x192,
+ 0x7, 0x2d, 0x2, 0x2, 0x192, 0x193, 0x7, 0x2d, 0x2, 0x2, 0x193, 0x55,
+ 0x3, 0x2, 0x2, 0x2, 0x194, 0x195, 0x7, 0x2f, 0x2, 0x2, 0x195, 0x196,
+ 0x7, 0x2f, 0x2, 0x2, 0x196, 0x57, 0x3, 0x2, 0x2, 0x2, 0x197, 0x198,
+ 0x7, 0x3c, 0x2, 0x2, 0x198, 0x199, 0x7, 0x3f, 0x2, 0x2, 0x199, 0x59,
+ 0x3, 0x2, 0x2, 0x2, 0x19a, 0x19b, 0x7, 0x30, 0x2, 0x2, 0x19b, 0x19c,
+ 0x7, 0x30, 0x2, 0x2, 0x19c, 0x19d, 0x7, 0x30, 0x2, 0x2, 0x19d, 0x5b,
+ 0x3, 0x2, 0x2, 0x2, 0x19e, 0x1b6, 0x7, 0x3d, 0x2, 0x2, 0x19f, 0x1a1,
+ 0x5, 0x4c, 0x26, 0x2, 0x1a0, 0x19f, 0x3, 0x2, 0x2, 0x2, 0x1a1, 0x1a2,
+ 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a0, 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a3,
+ 0x3, 0x2, 0x2, 0x2, 0x1a3, 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x1a4, 0x1a6,
+ 0x5, 0x4e, 0x27, 0x2, 0x1a5, 0x1a4, 0x3, 0x2, 0x2, 0x2, 0x1a6, 0x1a7,
+ 0x3, 0x2, 0x2, 0x2, 0x1a7, 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x1a7, 0x1a8,
+ 0x3, 0x2, 0x2, 0x2, 0x1a8, 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x1a9, 0x1aa,
+ 0x7, 0x31, 0x2, 0x2, 0x1aa, 0x1ab, 0x7, 0x2c, 0x2, 0x2, 0x1ab, 0x1af,
+ 0x3, 0x2, 0x2, 0x2, 0x1ac, 0x1ae, 0xb, 0x2, 0x2, 0x2, 0x1ad, 0x1ac,
+ 0x3, 0x2, 0x2, 0x2, 0x1ae, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1b0,
+ 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1ad, 0x3, 0x2, 0x2, 0x2, 0x1b0, 0x1b2,
+ 0x3, 0x2, 0x2, 0x2, 0x1b1, 0x1af, 0x3, 0x2, 0x2, 0x2, 0x1b2, 0x1b3,
+ 0x7, 0x2c, 0x2, 0x2, 0x1b3, 0x1b6, 0x7, 0x31, 0x2, 0x2, 0x1b4, 0x1b6,
+ 0x7, 0x2, 0x2, 0x3, 0x1b5, 0x19e, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1a0,
+ 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1a9,
+ 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1b4, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x5d,
+ 0x3, 0x2, 0x2, 0x2, 0x1b7, 0x1b8, 0x7, 0x7e, 0x2, 0x2, 0x1b8, 0x1b9,
+ 0x7, 0x7e, 0x2, 0x2, 0x1b9, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x1ba, 0x1bb,
+ 0x7, 0x28, 0x2, 0x2, 0x1bb, 0x1bc, 0x7, 0x28, 0x2, 0x2, 0x1bc, 0x61,
+ 0x3, 0x2, 0x2, 0x2, 0x1bd, 0x1be, 0x7, 0x3f, 0x2, 0x2, 0x1be, 0x1bf,
+ 0x7, 0x3f, 0x2, 0x2, 0x1bf, 0x63, 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x1c1,
+ 0x7, 0x23, 0x2, 0x2, 0x1c1, 0x1c2, 0x7, 0x3f, 0x2, 0x2, 0x1c2, 0x65,
+ 0x3, 0x2, 0x2, 0x2, 0x1c3, 0x1c4, 0x7, 0x3e, 0x2, 0x2, 0x1c4, 0x67,
+ 0x3, 0x2, 0x2, 0x2, 0x1c5, 0x1c6, 0x7, 0x3e, 0x2, 0x2, 0x1c6, 0x1c7,
+ 0x7, 0x3f, 0x2, 0x2, 0x1c7, 0x69, 0x3, 0x2, 0x2, 0x2, 0x1c8, 0x1c9,
+ 0x7, 0x40, 0x2, 0x2, 0x1c9, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x1ca, 0x1cb,
+ 0x7, 0x40, 0x2, 0x2, 0x1cb, 0x1cc, 0x7, 0x3f, 0x2, 0x2, 0x1cc, 0x6d,
+ 0x3, 0x2, 0x2, 0x2, 0x1cd, 0x1ce, 0x7, 0x7e, 0x2, 0x2, 0x1ce, 0x6f,
+ 0x3, 0x2, 0x2, 0x2, 0x1cf, 0x1d0, 0x7, 0x31, 0x2, 0x2, 0x1d0, 0x71,
+ 0x3, 0x2, 0x2, 0x2, 0x1d1, 0x1d2, 0x7, 0x27, 0x2, 0x2, 0x1d2, 0x73,
+ 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1d4, 0x7, 0x3e, 0x2, 0x2, 0x1d4, 0x1d5,
+ 0x7, 0x3e, 0x2, 0x2, 0x1d5, 0x75, 0x3, 0x2, 0x2, 0x2, 0x1d6, 0x1d7,
+ 0x7, 0x40, 0x2, 0x2, 0x1d7, 0x1d8, 0x7, 0x40, 0x2, 0x2, 0x1d8, 0x77,
+ 0x3, 0x2, 0x2, 0x2, 0x1d9, 0x1da, 0x7, 0x28, 0x2, 0x2, 0x1da, 0x1db,
+ 0x7, 0x60, 0x2, 0x2, 0x1db, 0x79, 0x3, 0x2, 0x2, 0x2, 0x1dc, 0x1dd,
+ 0x7, 0x23, 0x2, 0x2, 0x1dd, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x1de, 0x1df,
+ 0x7, 0x2d, 0x2, 0x2, 0x1df, 0x7d, 0x3, 0x2, 0x2, 0x2, 0x1e0, 0x1e1,
+ 0x7, 0x2f, 0x2, 0x2, 0x1e1, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x1e2, 0x1e3,
+ 0x7, 0x60, 0x2, 0x2, 0x1e3, 0x81, 0x3, 0x2, 0x2, 0x2, 0x1e4, 0x1e5,
+ 0x7, 0x2c, 0x2, 0x2, 0x1e5, 0x83, 0x3, 0x2, 0x2, 0x2, 0x1e6, 0x1e7,
+ 0x7, 0x28, 0x2, 0x2, 0x1e7, 0x85, 0x3, 0x2, 0x2, 0x2, 0x1e8, 0x1e9,
+ 0x7, 0x3e, 0x2, 0x2, 0x1e9, 0x1ea, 0x7, 0x2f, 0x2, 0x2, 0x1ea, 0x87,
+ 0x3, 0x2, 0x2, 0x2, 0x1eb, 0x1f7, 0x7, 0x32, 0x2, 0x2, 0x1ec, 0x1f3,
+ 0x9, 0x2, 0x2, 0x2, 0x1ed, 0x1ef, 0x7, 0x61, 0x2, 0x2, 0x1ee, 0x1ed,
+ 0x3, 0x2, 0x2, 0x2, 0x1ee, 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1ef, 0x1f0,
+ 0x3, 0x2, 0x2, 0x2, 0x1f0, 0x1f2, 0x9, 0x3, 0x2, 0x2, 0x1f1, 0x1ee,
+ 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f5, 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f1,
+ 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0x1f4, 0x1f7,
+ 0x3, 0x2, 0x2, 0x2, 0x1f5, 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1eb,
+ 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x1f7, 0x89,
+ 0x3, 0x2, 0x2, 0x2, 0x1f8, 0x1f9, 0x7, 0x32, 0x2, 0x2, 0x1f9, 0x1fe,
+ 0x9, 0x4, 0x2, 0x2, 0x1fa, 0x1fc, 0x7, 0x61, 0x2, 0x2, 0x1fb, 0x1fa,
+ 0x3, 0x2, 0x2, 0x2, 0x1fb, 0x1fc, 0x3, 0x2, 0x2, 0x2, 0x1fc, 0x1fd,
+ 0x3, 0x2, 0x2, 0x2, 0x1fd, 0x1ff, 0x5, 0xc0, 0x60, 0x2, 0x1fe, 0x1fb,
+ 0x3, 0x2, 0x2, 0x2, 0x1ff, 0x200, 0x3, 0x2, 0x2, 0x2, 0x200, 0x1fe,
+ 0x3, 0x2, 0x2, 0x2, 0x200, 0x201, 0x3, 0x2, 0x2, 0x2, 0x201, 0x8b,
+ 0x3, 0x2, 0x2, 0x2, 0x202, 0x204, 0x7, 0x32, 0x2, 0x2, 0x203, 0x205,
+ 0x9, 0x5, 0x2, 0x2, 0x204, 0x203, 0x3, 0x2, 0x2, 0x2, 0x204, 0x205,
+ 0x3, 0x2, 0x2, 0x2, 0x205, 0x20a, 0x3, 0x2, 0x2, 0x2, 0x206, 0x208,
+ 0x7, 0x61, 0x2, 0x2, 0x207, 0x206, 0x3, 0x2, 0x2, 0x2, 0x207, 0x208,
+ 0x3, 0x2, 0x2, 0x2, 0x208, 0x209, 0x3, 0x2, 0x2, 0x2, 0x209, 0x20b,
+ 0x5, 0xbc, 0x5e, 0x2, 0x20a, 0x207, 0x3, 0x2, 0x2, 0x2, 0x20b, 0x20c,
+ 0x3, 0x2, 0x2, 0x2, 0x20c, 0x20a, 0x3, 0x2, 0x2, 0x2, 0x20c, 0x20d,
+ 0x3, 0x2, 0x2, 0x2, 0x20d, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x20e, 0x20f,
+ 0x7, 0x32, 0x2, 0x2, 0x20f, 0x214, 0x9, 0x6, 0x2, 0x2, 0x210, 0x212,
+ 0x7, 0x61, 0x2, 0x2, 0x211, 0x210, 0x3, 0x2, 0x2, 0x2, 0x211, 0x212,
+ 0x3, 0x2, 0x2, 0x2, 0x212, 0x213, 0x3, 0x2, 0x2, 0x2, 0x213, 0x215,
+ 0x5, 0xbe, 0x5f, 0x2, 0x214, 0x211, 0x3, 0x2, 0x2, 0x2, 0x215, 0x216,
+ 0x3, 0x2, 0x2, 0x2, 0x216, 0x214, 0x3, 0x2, 0x2, 0x2, 0x216, 0x217,
+ 0x3, 0x2, 0x2, 0x2, 0x217, 0x8f, 0x3, 0x2, 0x2, 0x2, 0x218, 0x21b,
+ 0x5, 0x92, 0x49, 0x2, 0x219, 0x21b, 0x5, 0x94, 0x4a, 0x2, 0x21a,
+ 0x218, 0x3, 0x2, 0x2, 0x2, 0x21a, 0x219, 0x3, 0x2, 0x2, 0x2, 0x21b,
+ 0x91, 0x3, 0x2, 0x2, 0x2, 0x21c, 0x225, 0x5, 0xba, 0x5d, 0x2, 0x21d,
+ 0x21f, 0x7, 0x30, 0x2, 0x2, 0x21e, 0x220, 0x5, 0xba, 0x5d, 0x2, 0x21f,
+ 0x21e, 0x3, 0x2, 0x2, 0x2, 0x21f, 0x220, 0x3, 0x2, 0x2, 0x2, 0x220,
+ 0x222, 0x3, 0x2, 0x2, 0x2, 0x221, 0x223, 0x5, 0xc2, 0x61, 0x2, 0x222,
+ 0x221, 0x3, 0x2, 0x2, 0x2, 0x222, 0x223, 0x3, 0x2, 0x2, 0x2, 0x223,
+ 0x226, 0x3, 0x2, 0x2, 0x2, 0x224, 0x226, 0x5, 0xc2, 0x61, 0x2, 0x225,
+ 0x21d, 0x3, 0x2, 0x2, 0x2, 0x225, 0x224, 0x3, 0x2, 0x2, 0x2, 0x226,
+ 0x22d, 0x3, 0x2, 0x2, 0x2, 0x227, 0x228, 0x7, 0x30, 0x2, 0x2, 0x228,
+ 0x22a, 0x5, 0xba, 0x5d, 0x2, 0x229, 0x22b, 0x5, 0xc2, 0x61, 0x2,
+ 0x22a, 0x229, 0x3, 0x2, 0x2, 0x2, 0x22a, 0x22b, 0x3, 0x2, 0x2, 0x2,
+ 0x22b, 0x22d, 0x3, 0x2, 0x2, 0x2, 0x22c, 0x21c, 0x3, 0x2, 0x2, 0x2,
+ 0x22c, 0x227, 0x3, 0x2, 0x2, 0x2, 0x22d, 0x93, 0x3, 0x2, 0x2, 0x2,
+ 0x22e, 0x22f, 0x7, 0x32, 0x2, 0x2, 0x22f, 0x230, 0x9, 0x6, 0x2, 0x2,
+ 0x230, 0x231, 0x5, 0x96, 0x4b, 0x2, 0x231, 0x232, 0x5, 0x98, 0x4c,
+ 0x2, 0x232, 0x95, 0x3, 0x2, 0x2, 0x2, 0x233, 0x235, 0x7, 0x61, 0x2,
+ 0x2, 0x234, 0x233, 0x3, 0x2, 0x2, 0x2, 0x234, 0x235, 0x3, 0x2, 0x2,
+ 0x2, 0x235, 0x236, 0x3, 0x2, 0x2, 0x2, 0x236, 0x238, 0x5, 0xbe, 0x5f,
+ 0x2, 0x237, 0x234, 0x3, 0x2, 0x2, 0x2, 0x238, 0x239, 0x3, 0x2, 0x2,
+ 0x2, 0x239, 0x237, 0x3, 0x2, 0x2, 0x2, 0x239, 0x23a, 0x3, 0x2, 0x2,
+ 0x2, 0x23a, 0x245, 0x3, 0x2, 0x2, 0x2, 0x23b, 0x242, 0x7, 0x30, 0x2,
+ 0x2, 0x23c, 0x23e, 0x7, 0x61, 0x2, 0x2, 0x23d, 0x23c, 0x3, 0x2, 0x2,
+ 0x2, 0x23d, 0x23e, 0x3, 0x2, 0x2, 0x2, 0x23e, 0x23f, 0x3, 0x2, 0x2,
+ 0x2, 0x23f, 0x241, 0x5, 0xbe, 0x5f, 0x2, 0x240, 0x23d, 0x3, 0x2,
+ 0x2, 0x2, 0x241, 0x244, 0x3, 0x2, 0x2, 0x2, 0x242, 0x240, 0x3, 0x2,
+ 0x2, 0x2, 0x242, 0x243, 0x3, 0x2, 0x2, 0x2, 0x243, 0x246, 0x3, 0x2,
+ 0x2, 0x2, 0x244, 0x242, 0x3, 0x2, 0x2, 0x2, 0x245, 0x23b, 0x3, 0x2,
+ 0x2, 0x2, 0x245, 0x246, 0x3, 0x2, 0x2, 0x2, 0x246, 0x253, 0x3, 0x2,
+ 0x2, 0x2, 0x247, 0x248, 0x7, 0x30, 0x2, 0x2, 0x248, 0x24f, 0x5, 0xbe,
+ 0x5f, 0x2, 0x249, 0x24b, 0x7, 0x61, 0x2, 0x2, 0x24a, 0x249, 0x3,
+ 0x2, 0x2, 0x2, 0x24a, 0x24b, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x24c, 0x3,
+ 0x2, 0x2, 0x2, 0x24c, 0x24e, 0x5, 0xbe, 0x5f, 0x2, 0x24d, 0x24a,
+ 0x3, 0x2, 0x2, 0x2, 0x24e, 0x251, 0x3, 0x2, 0x2, 0x2, 0x24f, 0x24d,
+ 0x3, 0x2, 0x2, 0x2, 0x24f, 0x250, 0x3, 0x2, 0x2, 0x2, 0x250, 0x253,
+ 0x3, 0x2, 0x2, 0x2, 0x251, 0x24f, 0x3, 0x2, 0x2, 0x2, 0x252, 0x237,
+ 0x3, 0x2, 0x2, 0x2, 0x252, 0x247, 0x3, 0x2, 0x2, 0x2, 0x253, 0x97,
+ 0x3, 0x2, 0x2, 0x2, 0x254, 0x256, 0x9, 0x7, 0x2, 0x2, 0x255, 0x257,
+ 0x9, 0x8, 0x2, 0x2, 0x256, 0x255, 0x3, 0x2, 0x2, 0x2, 0x256, 0x257,
+ 0x3, 0x2, 0x2, 0x2, 0x257, 0x258, 0x3, 0x2, 0x2, 0x2, 0x258, 0x259,
+ 0x5, 0xba, 0x5d, 0x2, 0x259, 0x99, 0x3, 0x2, 0x2, 0x2, 0x25a, 0x260,
+ 0x5, 0x88, 0x44, 0x2, 0x25b, 0x260, 0x5, 0x8a, 0x45, 0x2, 0x25c,
+ 0x260, 0x5, 0x8c, 0x46, 0x2, 0x25d, 0x260, 0x5, 0x8e, 0x47, 0x2,
+ 0x25e, 0x260, 0x5, 0x90, 0x48, 0x2, 0x25f, 0x25a, 0x3, 0x2, 0x2,
+ 0x2, 0x25f, 0x25b, 0x3, 0x2, 0x2, 0x2, 0x25f, 0x25c, 0x3, 0x2, 0x2,
+ 0x2, 0x25f, 0x25d, 0x3, 0x2, 0x2, 0x2, 0x25f, 0x25e, 0x3, 0x2, 0x2,
+ 0x2, 0x260, 0x261, 0x3, 0x2, 0x2, 0x2, 0x261, 0x262, 0x7, 0x6b, 0x2,
+ 0x2, 0x262, 0x9b, 0x3, 0x2, 0x2, 0x2, 0x263, 0x266, 0x7, 0x29, 0x2,
+ 0x2, 0x264, 0x267, 0x5, 0xb6, 0x5b, 0x2, 0x265, 0x267, 0x5, 0xa0,
+ 0x50, 0x2, 0x266, 0x264, 0x3, 0x2, 0x2, 0x2, 0x266, 0x265, 0x3, 0x2,
+ 0x2, 0x2, 0x267, 0x268, 0x3, 0x2, 0x2, 0x2, 0x268, 0x269, 0x7, 0x29,
+ 0x2, 0x2, 0x269, 0x9d, 0x3, 0x2, 0x2, 0x2, 0x26a, 0x26b, 0x5, 0x9c,
+ 0x4e, 0x2, 0x26b, 0x9f, 0x3, 0x2, 0x2, 0x2, 0x26c, 0x26f, 0x5, 0xa2,
+ 0x51, 0x2, 0x26d, 0x26f, 0x5, 0xa4, 0x52, 0x2, 0x26e, 0x26c, 0x3,
+ 0x2, 0x2, 0x2, 0x26e, 0x26d, 0x3, 0x2, 0x2, 0x2, 0x26f, 0xa1, 0x3,
+ 0x2, 0x2, 0x2, 0x270, 0x271, 0x7, 0x5e, 0x2, 0x2, 0x271, 0x272, 0x5,
+ 0xbc, 0x5e, 0x2, 0x272, 0x273, 0x5, 0xbc, 0x5e, 0x2, 0x273, 0x274,
+ 0x5, 0xbc, 0x5e, 0x2, 0x274, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x275, 0x276,
+ 0x7, 0x5e, 0x2, 0x2, 0x276, 0x277, 0x7, 0x7a, 0x2, 0x2, 0x277, 0x278,
+ 0x5, 0xbe, 0x5f, 0x2, 0x278, 0x279, 0x5, 0xbe, 0x5f, 0x2, 0x279,
+ 0xa5, 0x3, 0x2, 0x2, 0x2, 0x27a, 0x27b, 0x7, 0x5e, 0x2, 0x2, 0x27b,
+ 0x27c, 0x7, 0x77, 0x2, 0x2, 0x27c, 0x27d, 0x5, 0xbe, 0x5f, 0x2, 0x27d,
+ 0x27e, 0x5, 0xbe, 0x5f, 0x2, 0x27e, 0x27f, 0x5, 0xbe, 0x5f, 0x2,
+ 0x27f, 0x280, 0x5, 0xbe, 0x5f, 0x2, 0x280, 0xa7, 0x3, 0x2, 0x2, 0x2,
+ 0x281, 0x282, 0x7, 0x5e, 0x2, 0x2, 0x282, 0x283, 0x7, 0x57, 0x2,
+ 0x2, 0x283, 0x284, 0x5, 0xbe, 0x5f, 0x2, 0x284, 0x285, 0x5, 0xbe,
+ 0x5f, 0x2, 0x285, 0x286, 0x5, 0xbe, 0x5f, 0x2, 0x286, 0x287, 0x5,
+ 0xbe, 0x5f, 0x2, 0x287, 0x288, 0x5, 0xbe, 0x5f, 0x2, 0x288, 0x289,
+ 0x5, 0xbe, 0x5f, 0x2, 0x289, 0x28a, 0x5, 0xbe, 0x5f, 0x2, 0x28a,
+ 0x28b, 0x5, 0xbe, 0x5f, 0x2, 0x28b, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x28c,
+ 0x290, 0x7, 0x62, 0x2, 0x2, 0x28d, 0x28f, 0xa, 0x9, 0x2, 0x2, 0x28e,
+ 0x28d, 0x3, 0x2, 0x2, 0x2, 0x28f, 0x292, 0x3, 0x2, 0x2, 0x2, 0x290,
+ 0x28e, 0x3, 0x2, 0x2, 0x2, 0x290, 0x291, 0x3, 0x2, 0x2, 0x2, 0x291,
+ 0x293, 0x3, 0x2, 0x2, 0x2, 0x292, 0x290, 0x3, 0x2, 0x2, 0x2, 0x293,
+ 0x294, 0x7, 0x62, 0x2, 0x2, 0x294, 0xab, 0x3, 0x2, 0x2, 0x2, 0x295,
+ 0x29a, 0x7, 0x24, 0x2, 0x2, 0x296, 0x299, 0xa, 0xa, 0x2, 0x2, 0x297,
+ 0x299, 0x5, 0xb8, 0x5c, 0x2, 0x298, 0x296, 0x3, 0x2, 0x2, 0x2, 0x298,
+ 0x297, 0x3, 0x2, 0x2, 0x2, 0x299, 0x29c, 0x3, 0x2, 0x2, 0x2, 0x29a,
+ 0x298, 0x3, 0x2, 0x2, 0x2, 0x29a, 0x29b, 0x3, 0x2, 0x2, 0x2, 0x29b,
+ 0x29d, 0x3, 0x2, 0x2, 0x2, 0x29c, 0x29a, 0x3, 0x2, 0x2, 0x2, 0x29d,
+ 0x29e, 0x7, 0x24, 0x2, 0x2, 0x29e, 0xad, 0x3, 0x2, 0x2, 0x2, 0x29f,
+ 0x2a1, 0x9, 0xb, 0x2, 0x2, 0x2a0, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x2a1,
+ 0x2a2, 0x3, 0x2, 0x2, 0x2, 0x2a2, 0x2a0, 0x3, 0x2, 0x2, 0x2, 0x2a2,
+ 0x2a3, 0x3, 0x2, 0x2, 0x2, 0x2a3, 0x2a4, 0x3, 0x2, 0x2, 0x2, 0x2a4,
+ 0x2a5, 0x8, 0x57, 0x2, 0x2, 0x2a5, 0xaf, 0x3, 0x2, 0x2, 0x2, 0x2a6,
+ 0x2a7, 0x7, 0x31, 0x2, 0x2, 0x2a7, 0x2a8, 0x7, 0x2c, 0x2, 0x2, 0x2a8,
+ 0x2ac, 0x3, 0x2, 0x2, 0x2, 0x2a9, 0x2ab, 0xb, 0x2, 0x2, 0x2, 0x2aa,
+ 0x2a9, 0x3, 0x2, 0x2, 0x2, 0x2ab, 0x2ae, 0x3, 0x2, 0x2, 0x2, 0x2ac,
+ 0x2ad, 0x3, 0x2, 0x2, 0x2, 0x2ac, 0x2aa, 0x3, 0x2, 0x2, 0x2, 0x2ad,
+ 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2ae, 0x2ac, 0x3, 0x2, 0x2, 0x2, 0x2af,
+ 0x2b0, 0x7, 0x2c, 0x2, 0x2, 0x2b0, 0x2b1, 0x7, 0x31, 0x2, 0x2, 0x2b1,
+ 0x2b2, 0x3, 0x2, 0x2, 0x2, 0x2b2, 0x2b3, 0x8, 0x58, 0x2, 0x2, 0x2b3,
+ 0xb1, 0x3, 0x2, 0x2, 0x2, 0x2b4, 0x2b6, 0x9, 0xc, 0x2, 0x2, 0x2b5,
+ 0x2b4, 0x3, 0x2, 0x2, 0x2, 0x2b6, 0x2b7, 0x3, 0x2, 0x2, 0x2, 0x2b7,
+ 0x2b5, 0x3, 0x2, 0x2, 0x2, 0x2b7, 0x2b8, 0x3, 0x2, 0x2, 0x2, 0x2b8,
+ 0x2b9, 0x3, 0x2, 0x2, 0x2, 0x2b9, 0x2ba, 0x8, 0x59, 0x2, 0x2, 0x2ba,
+ 0xb3, 0x3, 0x2, 0x2, 0x2, 0x2bb, 0x2bc, 0x7, 0x31, 0x2, 0x2, 0x2bc,
+ 0x2bd, 0x7, 0x31, 0x2, 0x2, 0x2bd, 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2be,
+ 0x2c0, 0xa, 0xc, 0x2, 0x2, 0x2bf, 0x2be, 0x3, 0x2, 0x2, 0x2, 0x2c0,
+ 0x2c3, 0x3, 0x2, 0x2, 0x2, 0x2c1, 0x2bf, 0x3, 0x2, 0x2, 0x2, 0x2c1,
+ 0x2c2, 0x3, 0x2, 0x2, 0x2, 0x2c2, 0x2c4, 0x3, 0x2, 0x2, 0x2, 0x2c3,
+ 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2c4, 0x2c5, 0x8, 0x5a, 0x2, 0x2, 0x2c5,
+ 0xb5, 0x3, 0x2, 0x2, 0x2, 0x2c6, 0x2cb, 0xa, 0xd, 0x2, 0x2, 0x2c7,
+ 0x2cb, 0x5, 0xa6, 0x53, 0x2, 0x2c8, 0x2cb, 0x5, 0xa8, 0x54, 0x2,
+ 0x2c9, 0x2cb, 0x5, 0xb8, 0x5c, 0x2, 0x2ca, 0x2c6, 0x3, 0x2, 0x2,
+ 0x2, 0x2ca, 0x2c7, 0x3, 0x2, 0x2, 0x2, 0x2ca, 0x2c8, 0x3, 0x2, 0x2,
+ 0x2, 0x2ca, 0x2c9, 0x3, 0x2, 0x2, 0x2, 0x2cb, 0xb7, 0x3, 0x2, 0x2,
+ 0x2, 0x2cc, 0x2e6, 0x7, 0x5e, 0x2, 0x2, 0x2cd, 0x2ce, 0x7, 0x77,
+ 0x2, 0x2, 0x2ce, 0x2cf, 0x5, 0xbe, 0x5f, 0x2, 0x2cf, 0x2d0, 0x5,
+ 0xbe, 0x5f, 0x2, 0x2d0, 0x2d1, 0x5, 0xbe, 0x5f, 0x2, 0x2d1, 0x2d2,
+ 0x5, 0xbe, 0x5f, 0x2, 0x2d2, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d4,
+ 0x7, 0x57, 0x2, 0x2, 0x2d4, 0x2d5, 0x5, 0xbe, 0x5f, 0x2, 0x2d5, 0x2d6,
+ 0x5, 0xbe, 0x5f, 0x2, 0x2d6, 0x2d7, 0x5, 0xbe, 0x5f, 0x2, 0x2d7,
+ 0x2d8, 0x5, 0xbe, 0x5f, 0x2, 0x2d8, 0x2d9, 0x5, 0xbe, 0x5f, 0x2,
+ 0x2d9, 0x2da, 0x5, 0xbe, 0x5f, 0x2, 0x2da, 0x2db, 0x5, 0xbe, 0x5f,
+ 0x2, 0x2db, 0x2dc, 0x5, 0xbe, 0x5f, 0x2, 0x2dc, 0x2e7, 0x3, 0x2,
+ 0x2, 0x2, 0x2dd, 0x2e7, 0x9, 0xe, 0x2, 0x2, 0x2de, 0x2df, 0x5, 0xbc,
+ 0x5e, 0x2, 0x2df, 0x2e0, 0x5, 0xbc, 0x5e, 0x2, 0x2e0, 0x2e1, 0x5,
+ 0xbc, 0x5e, 0x2, 0x2e1, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2e2, 0x2e3,
+ 0x7, 0x7a, 0x2, 0x2, 0x2e3, 0x2e4, 0x5, 0xbe, 0x5f, 0x2, 0x2e4, 0x2e5,
+ 0x5, 0xbe, 0x5f, 0x2, 0x2e5, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2cd,
+ 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2dd,
+ 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2de, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2e2,
+ 0x3, 0x2, 0x2, 0x2, 0x2e7, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x2e8, 0x2ef,
+ 0x9, 0x3, 0x2, 0x2, 0x2e9, 0x2eb, 0x7, 0x61, 0x2, 0x2, 0x2ea, 0x2e9,
+ 0x3, 0x2, 0x2, 0x2, 0x2ea, 0x2eb, 0x3, 0x2, 0x2, 0x2, 0x2eb, 0x2ec,
+ 0x3, 0x2, 0x2, 0x2, 0x2ec, 0x2ee, 0x9, 0x3, 0x2, 0x2, 0x2ed, 0x2ea,
+ 0x3, 0x2, 0x2, 0x2, 0x2ee, 0x2f1, 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x2ed,
+ 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x2f0, 0x3, 0x2, 0x2, 0x2, 0x2f0, 0xbb,
+ 0x3, 0x2, 0x2, 0x2, 0x2f1, 0x2ef, 0x3, 0x2, 0x2, 0x2, 0x2f2, 0x2f3,
+ 0x9, 0xf, 0x2, 0x2, 0x2f3, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x2f4, 0x2f5,
+ 0x9, 0x10, 0x2, 0x2, 0x2f5, 0xbf, 0x3, 0x2, 0x2, 0x2, 0x2f6, 0x2f7,
+ 0x9, 0x11, 0x2, 0x2, 0x2f7, 0xc1, 0x3, 0x2, 0x2, 0x2, 0x2f8, 0x2fa,
+ 0x9, 0x12, 0x2, 0x2, 0x2f9, 0x2fb, 0x9, 0x8, 0x2, 0x2, 0x2fa, 0x2f9,
+ 0x3, 0x2, 0x2, 0x2, 0x2fa, 0x2fb, 0x3, 0x2, 0x2, 0x2, 0x2fb, 0x2fc,
+ 0x3, 0x2, 0x2, 0x2, 0x2fc, 0x2fd, 0x5, 0xba, 0x5d, 0x2, 0x2fd, 0xc3,
+ 0x3, 0x2, 0x2, 0x2, 0x2fe, 0x301, 0x5, 0xc8, 0x64, 0x2, 0x2ff, 0x301,
+ 0x7, 0x61, 0x2, 0x2, 0x300, 0x2fe, 0x3, 0x2, 0x2, 0x2, 0x300, 0x2ff,
+ 0x3, 0x2, 0x2, 0x2, 0x301, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x302, 0x303,
+ 0x9, 0x13, 0x2, 0x2, 0x303, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x304, 0x305,
+ 0x9, 0x14, 0x2, 0x2, 0x305, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x306, 0x308,
+ 0x9, 0xb, 0x2, 0x2, 0x307, 0x306, 0x3, 0x2, 0x2, 0x2, 0x308, 0x309,
+ 0x3, 0x2, 0x2, 0x2, 0x309, 0x307, 0x3, 0x2, 0x2, 0x2, 0x309, 0x30a,
+ 0x3, 0x2, 0x2, 0x2, 0x30a, 0x30b, 0x3, 0x2, 0x2, 0x2, 0x30b, 0x30c,
+ 0x8, 0x65, 0x2, 0x2, 0x30c, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x30d, 0x30e,
+ 0x7, 0x31, 0x2, 0x2, 0x30e, 0x30f, 0x7, 0x2c, 0x2, 0x2, 0x30f, 0x313,
+ 0x3, 0x2, 0x2, 0x2, 0x310, 0x312, 0xa, 0xc, 0x2, 0x2, 0x311, 0x310,
+ 0x3, 0x2, 0x2, 0x2, 0x312, 0x315, 0x3, 0x2, 0x2, 0x2, 0x313, 0x314,
+ 0x3, 0x2, 0x2, 0x2, 0x313, 0x311, 0x3, 0x2, 0x2, 0x2, 0x314, 0x316,
+ 0x3, 0x2, 0x2, 0x2, 0x315, 0x313, 0x3, 0x2, 0x2, 0x2, 0x316, 0x317,
+ 0x7, 0x2c, 0x2, 0x2, 0x317, 0x318, 0x7, 0x31, 0x2, 0x2, 0x318, 0x319,
+ 0x3, 0x2, 0x2, 0x2, 0x319, 0x31a, 0x8, 0x66, 0x2, 0x2, 0x31a, 0xcd,
+ 0x3, 0x2, 0x2, 0x2, 0x31b, 0x31c, 0x7, 0x31, 0x2, 0x2, 0x31c, 0x31d,
+ 0x7, 0x31, 0x2, 0x2, 0x31d, 0x321, 0x3, 0x2, 0x2, 0x2, 0x31e, 0x320,
+ 0xa, 0xc, 0x2, 0x2, 0x31f, 0x31e, 0x3, 0x2, 0x2, 0x2, 0x320, 0x323,
+ 0x3, 0x2, 0x2, 0x2, 0x321, 0x31f, 0x3, 0x2, 0x2, 0x2, 0x321, 0x322,
+ 0x3, 0x2, 0x2, 0x2, 0x322, 0x324, 0x3, 0x2, 0x2, 0x2, 0x323, 0x321,
+ 0x3, 0x2, 0x2, 0x2, 0x324, 0x325, 0x8, 0x67, 0x2, 0x2, 0x325, 0xcf,
+ 0x3, 0x2, 0x2, 0x2, 0x36, 0x2, 0x3, 0x171, 0x173, 0x1a2, 0x1a7, 0x1af,
+ 0x1b5, 0x1ee, 0x1f3, 0x1f6, 0x1fb, 0x200, 0x204, 0x207, 0x20c, 0x211,
+ 0x216, 0x21a, 0x21f, 0x222, 0x225, 0x22a, 0x22c, 0x234, 0x239, 0x23d,
+ 0x242, 0x245, 0x24a, 0x24f, 0x252, 0x256, 0x25f, 0x266, 0x26e, 0x290,
+ 0x298, 0x29a, 0x2a2, 0x2ac, 0x2b7, 0x2c1, 0x2ca, 0x2e6, 0x2ea, 0x2ef,
+ 0x2fa, 0x300, 0x309, 0x313, 0x321, 0x3, 0x2, 0x3, 0x2,
+ };
+
+ _serializedATN.insert(_serializedATN.end(), serializedATNSegment0,
+ serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0]));
+
+
+ atn::ATNDeserializer deserializer;
+ _atn = deserializer.deserialize(_serializedATN);
+
+ size_t count = _atn.getNumberOfDecisions();
+ _decisionToDFA.reserve(count);
+ for (size_t i = 0; i < count; i++) {
+ _decisionToDFA.emplace_back(_atn.getDecisionState(i), i);
+ }
+}
+
+GoLexer::Initializer GoLexer::_init;
diff --git a/grammar/cpp/GoLexer.h b/grammar/cpp/GoLexer.h
new file mode 100644
index 0000000..470060b
--- /dev/null
+++ b/grammar/cpp/GoLexer.h
@@ -0,0 +1,77 @@
+
+// Generated from /workspace/millet-porridge-III/grammar/GoLexer.g4 by ANTLR 4.9.3
+
+#pragma once
+
+
+#include "antlr4-runtime.h"
+
+
+
+
+class GoLexer : public antlr4::Lexer {
+public:
+ enum {
+ BREAK = 1, DEFAULT = 2, FUNC = 3, INTERFACE = 4, SELECT = 5, CASE = 6,
+ DEFER = 7, GO = 8, MAP = 9, STRUCT = 10, CHAN = 11, ELSE = 12, GOTO = 13,
+ PACKAGE = 14, SWITCH = 15, CONST = 16, FALLTHROUGH = 17, IF = 18, RANGE = 19,
+ TYPE = 20, CONTINUE = 21, FOR = 22, IMPORT = 23, RETURN = 24, VAR = 25,
+ NIL_LIT = 26, IDENTIFIER = 27, L_PAREN = 28, R_PAREN = 29, L_CURLY = 30,
+ R_CURLY = 31, L_BRACKET = 32, R_BRACKET = 33, ASSIGN = 34, COMMA = 35,
+ SEMI = 36, HUANHANG = 37, HUANHANGG = 38, COLON = 39, DOT = 40, PLUS_PLUS = 41,
+ MINUS_MINUS = 42, DECLARE_ASSIGN = 43, ELLIPSIS = 44, EOSSS = 45, LOGICAL_OR = 46,
+ LOGICAL_AND = 47, EQUALS = 48, NOT_EQUALS = 49, LESS = 50, LESS_OR_EQUALS = 51,
+ GREATER = 52, GREATER_OR_EQUALS = 53, OR = 54, DIV = 55, MOD = 56, LSHIFT = 57,
+ RSHIFT = 58, BIT_CLEAR = 59, EXCLAMATION = 60, PLUS = 61, MINUS = 62,
+ CARET = 63, STAR = 64, AMPERSAND = 65, RECEIVE = 66, DECIMAL_LIT = 67,
+ BINARY_LIT = 68, OCTAL_LIT = 69, HEX_LIT = 70, FLOAT_LIT = 71, DECIMAL_FLOAT_LIT = 72,
+ HEX_FLOAT_LIT = 73, IMAGINARY_LIT = 74, RUNE_LIT = 75, BYTE_VALUE = 76,
+ OCTAL_BYTE_VALUE = 77, HEX_BYTE_VALUE = 78, LITTLE_U_VALUE = 79, BIG_U_VALUE = 80,
+ RAW_STRING_LIT = 81, INTERPRETED_STRING_LIT = 82, WS = 83, COMMENT = 84,
+ TERMINATOR = 85, LINE_COMMENT = 86, WS_NLSEMI = 87, COMMENT_NLSEMI = 88,
+ LINE_COMMENT_NLSEMI = 89
+ };
+
+ enum {
+ NLSEMI = 1
+ };
+
+ explicit GoLexer(antlr4::CharStream *input);
+ ~GoLexer();
+
+ virtual std::string getGrammarFileName() const override;
+ virtual const std::vector& getRuleNames() const override;
+
+ virtual const std::vector& getChannelNames() const override;
+ virtual const std::vector& getModeNames() const override;
+ virtual const std::vector& getTokenNames() const override; // deprecated, use vocabulary instead
+ virtual antlr4::dfa::Vocabulary& getVocabulary() const override;
+
+ virtual const std::vector getSerializedATN() const override;
+ virtual const antlr4::atn::ATN& getATN() const override;
+
+private:
+ static std::vector _decisionToDFA;
+ static antlr4::atn::PredictionContextCache _sharedContextCache;
+ static std::vector _ruleNames;
+ static std::vector _tokenNames;
+ static std::vector _channelNames;
+ static std::vector _modeNames;
+
+ static std::vector _literalNames;
+ static std::vector _symbolicNames;
+ static antlr4::dfa::Vocabulary _vocabulary;
+ static antlr4::atn::ATN _atn;
+ static std::vector _serializedATN;
+
+
+ // Individual action functions triggered by action() above.
+
+ // Individual semantic predicate functions triggered by sempred() above.
+
+ struct Initializer {
+ Initializer();
+ };
+ static Initializer _init;
+};
+
diff --git a/grammar/cpp/GoLexer.interp b/grammar/cpp/GoLexer.interp
new file mode 100644
index 0000000..1e2c2c5
--- /dev/null
+++ b/grammar/cpp/GoLexer.interp
@@ -0,0 +1,298 @@
+token literal names:
+null
+'break'
+'default'
+'func'
+'interface'
+'select'
+'case'
+'defer'
+'go'
+'map'
+'struct'
+'chan'
+'else'
+'goto'
+'package'
+'switch'
+'const'
+'fallthrough'
+'if'
+'range'
+'type'
+'continue'
+'for'
+'import'
+'return'
+'var'
+'nil'
+null
+'('
+')'
+'{'
+'}'
+'['
+']'
+'='
+','
+';'
+'\n'
+'\r\n'
+':'
+'.'
+'++'
+'--'
+':='
+'...'
+null
+'||'
+'&&'
+'=='
+'!='
+'<'
+'<='
+'>'
+'>='
+'|'
+'/'
+'%'
+'<<'
+'>>'
+'&^'
+'!'
+'+'
+'-'
+'^'
+'*'
+'&'
+'<-'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+BREAK
+DEFAULT
+FUNC
+INTERFACE
+SELECT
+CASE
+DEFER
+GO
+MAP
+STRUCT
+CHAN
+ELSE
+GOTO
+PACKAGE
+SWITCH
+CONST
+FALLTHROUGH
+IF
+RANGE
+TYPE
+CONTINUE
+FOR
+IMPORT
+RETURN
+VAR
+NIL_LIT
+IDENTIFIER
+L_PAREN
+R_PAREN
+L_CURLY
+R_CURLY
+L_BRACKET
+R_BRACKET
+ASSIGN
+COMMA
+SEMI
+HUANHANG
+HUANHANGG
+COLON
+DOT
+PLUS_PLUS
+MINUS_MINUS
+DECLARE_ASSIGN
+ELLIPSIS
+EOSSS
+LOGICAL_OR
+LOGICAL_AND
+EQUALS
+NOT_EQUALS
+LESS
+LESS_OR_EQUALS
+GREATER
+GREATER_OR_EQUALS
+OR
+DIV
+MOD
+LSHIFT
+RSHIFT
+BIT_CLEAR
+EXCLAMATION
+PLUS
+MINUS
+CARET
+STAR
+AMPERSAND
+RECEIVE
+DECIMAL_LIT
+BINARY_LIT
+OCTAL_LIT
+HEX_LIT
+FLOAT_LIT
+DECIMAL_FLOAT_LIT
+HEX_FLOAT_LIT
+IMAGINARY_LIT
+RUNE_LIT
+BYTE_VALUE
+OCTAL_BYTE_VALUE
+HEX_BYTE_VALUE
+LITTLE_U_VALUE
+BIG_U_VALUE
+RAW_STRING_LIT
+INTERPRETED_STRING_LIT
+WS
+COMMENT
+TERMINATOR
+LINE_COMMENT
+WS_NLSEMI
+COMMENT_NLSEMI
+LINE_COMMENT_NLSEMI
+
+rule names:
+BREAK
+DEFAULT
+FUNC
+INTERFACE
+SELECT
+CASE
+DEFER
+GO
+MAP
+STRUCT
+CHAN
+ELSE
+GOTO
+PACKAGE
+SWITCH
+CONST
+FALLTHROUGH
+IF
+RANGE
+TYPE
+CONTINUE
+FOR
+IMPORT
+RETURN
+VAR
+NIL_LIT
+IDENTIFIER
+L_PAREN
+R_PAREN
+L_CURLY
+R_CURLY
+L_BRACKET
+R_BRACKET
+ASSIGN
+COMMA
+SEMI
+HUANHANG
+HUANHANGG
+COLON
+DOT
+PLUS_PLUS
+MINUS_MINUS
+DECLARE_ASSIGN
+ELLIPSIS
+EOSSS
+LOGICAL_OR
+LOGICAL_AND
+EQUALS
+NOT_EQUALS
+LESS
+LESS_OR_EQUALS
+GREATER
+GREATER_OR_EQUALS
+OR
+DIV
+MOD
+LSHIFT
+RSHIFT
+BIT_CLEAR
+EXCLAMATION
+PLUS
+MINUS
+CARET
+STAR
+AMPERSAND
+RECEIVE
+DECIMAL_LIT
+BINARY_LIT
+OCTAL_LIT
+HEX_LIT
+FLOAT_LIT
+DECIMAL_FLOAT_LIT
+HEX_FLOAT_LIT
+HEX_MANTISSA
+HEX_EXPONENT
+IMAGINARY_LIT
+RUNE
+RUNE_LIT
+BYTE_VALUE
+OCTAL_BYTE_VALUE
+HEX_BYTE_VALUE
+LITTLE_U_VALUE
+BIG_U_VALUE
+RAW_STRING_LIT
+INTERPRETED_STRING_LIT
+WS
+COMMENT
+TERMINATOR
+LINE_COMMENT
+UNICODE_VALUE
+ESCAPED_VALUE
+DECIMALS
+OCTAL_DIGIT
+HEX_DIGIT
+BIN_DIGIT
+EXPONENT
+LETTER
+UNICODE_DIGIT
+UNICODE_LETTER
+WS_NLSEMI
+COMMENT_NLSEMI
+LINE_COMMENT_NLSEMI
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+NLSEMI
+
+atn:
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 91, 806, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 7, 28, 370, 10, 28, 12, 28, 14, 28, 373, 11, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 6, 46, 417, 10, 46, 13, 46, 14, 46, 418, 3, 46, 6, 46, 422, 10, 46, 13, 46, 14, 46, 423, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 430, 10, 46, 12, 46, 14, 46, 433, 11, 46, 3, 46, 3, 46, 3, 46, 5, 46, 438, 10, 46, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 5, 68, 495, 10, 68, 3, 68, 7, 68, 498, 10, 68, 12, 68, 14, 68, 501, 11, 68, 5, 68, 503, 10, 68, 3, 69, 3, 69, 3, 69, 5, 69, 508, 10, 69, 3, 69, 6, 69, 511, 10, 69, 13, 69, 14, 69, 512, 3, 70, 3, 70, 5, 70, 517, 10, 70, 3, 70, 5, 70, 520, 10, 70, 3, 70, 6, 70, 523, 10, 70, 13, 70, 14, 70, 524, 3, 71, 3, 71, 3, 71, 5, 71, 530, 10, 71, 3, 71, 6, 71, 533, 10, 71, 13, 71, 14, 71, 534, 3, 72, 3, 72, 5, 72, 539, 10, 72, 3, 73, 3, 73, 3, 73, 5, 73, 544, 10, 73, 3, 73, 5, 73, 547, 10, 73, 3, 73, 5, 73, 550, 10, 73, 3, 73, 3, 73, 3, 73, 5, 73, 555, 10, 73, 5, 73, 557, 10, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 5, 75, 565, 10, 75, 3, 75, 6, 75, 568, 10, 75, 13, 75, 14, 75, 569, 3, 75, 3, 75, 5, 75, 574, 10, 75, 3, 75, 7, 75, 577, 10, 75, 12, 75, 14, 75, 580, 11, 75, 5, 75, 582, 10, 75, 3, 75, 3, 75, 3, 75, 5, 75, 587, 10, 75, 3, 75, 7, 75, 590, 10, 75, 12, 75, 14, 75, 593, 11, 75, 5, 75, 595, 10, 75, 3, 76, 3, 76, 5, 76, 599, 10, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 5, 77, 608, 10, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 5, 78, 615, 10, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 80, 3, 80, 5, 80, 623, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 7, 85, 655, 10, 85, 12, 85, 14, 85, 658, 11, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 7, 86, 665, 10, 86, 12, 86, 14, 86, 668, 11, 86, 3, 86, 3, 86, 3, 87, 6, 87, 673, 10, 87, 13, 87, 14, 87, 674, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 7, 88, 683, 10, 88, 12, 88, 14, 88, 686, 11, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 6, 89, 694, 10, 89, 13, 89, 14, 89, 695, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 7, 90, 704, 10, 90, 12, 90, 14, 90, 707, 11, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 715, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 743, 10, 92, 3, 93, 3, 93, 5, 93, 747, 10, 93, 3, 93, 7, 93, 750, 10, 93, 12, 93, 14, 93, 753, 11, 93, 3, 94, 3, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 5, 97, 763, 10, 97, 3, 97, 3, 97, 3, 98, 3, 98, 5, 98, 769, 10, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 6, 101, 776, 10, 101, 13, 101, 14, 101, 777, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 7, 102, 786, 10, 102, 12, 102, 14, 102, 789, 11, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 7, 103, 800, 10, 103, 12, 103, 14, 103, 803, 11, 103, 3, 103, 3, 103, 5, 431, 684, 787, 2, 104, 4, 3, 6, 4, 8, 5, 10, 6, 12, 7, 14, 8, 16, 9, 18, 10, 20, 11, 22, 12, 24, 13, 26, 14, 28, 15, 30, 16, 32, 17, 34, 18, 36, 19, 38, 20, 40, 21, 42, 22, 44, 23, 46, 24, 48, 25, 50, 26, 52, 27, 54, 28, 56, 29, 58, 30, 60, 31, 62, 32, 64, 33, 66, 34, 68, 35, 70, 36, 72, 37, 74, 38, 76, 39, 78, 40, 80, 41, 82, 42, 84, 43, 86, 44, 88, 45, 90, 46, 92, 47, 94, 48, 96, 49, 98, 50, 100, 51, 102, 52, 104, 53, 106, 54, 108, 55, 110, 56, 112, 57, 114, 58, 116, 59, 118, 60, 120, 61, 122, 62, 124, 63, 126, 64, 128, 65, 130, 66, 132, 67, 134, 68, 136, 69, 138, 70, 140, 71, 142, 72, 144, 73, 146, 74, 148, 75, 150, 2, 152, 2, 154, 76, 156, 2, 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, 2, 184, 2, 186, 2, 188, 2, 190, 2, 192, 2, 194, 2, 196, 2, 198, 2, 200, 2, 202, 89, 204, 90, 206, 91, 4, 2, 3, 19, 3, 2, 51, 59, 3, 2, 50, 59, 4, 2, 68, 68, 100, 100, 4, 2, 81, 81, 113, 113, 4, 2, 90, 90, 122, 122, 4, 2, 82, 82, 114, 114, 4, 2, 45, 45, 47, 47, 3, 2, 98, 98, 4, 2, 36, 36, 94, 94, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 15, 15, 5, 2, 12, 12, 15, 15, 41, 41, 11, 2, 36, 36, 41, 41, 94, 94, 99, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120, 3, 2, 50, 57, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 50, 51, 4, 2, 71, 71, 103, 103, 4, 63, 2, 50, 2, 59, 2, 1634, 2, 1643, 2, 1778, 2, 1787, 2, 1986, 2, 1995, 2, 2408, 2, 2417, 2, 2536, 2, 2545, 2, 2664, 2, 2673, 2, 2792, 2, 2801, 2, 2920, 2, 2929, 2, 3048, 2, 3057, 2, 3176, 2, 3185, 2, 3304, 2, 3313, 2, 3432, 2, 3441, 2, 3560, 2, 3569, 2, 3666, 2, 3675, 2, 3794, 2, 3803, 2, 3874, 2, 3883, 2, 4162, 2, 4171, 2, 4242, 2, 4251, 2, 6114, 2, 6123, 2, 6162, 2, 6171, 2, 6472, 2, 6481, 2, 6610, 2, 6619, 2, 6786, 2, 6795, 2, 6802, 2, 6811, 2, 6994, 2, 7003, 2, 7090, 2, 7099, 2, 7234, 2, 7243, 2, 7250, 2, 7259, 2, 42530, 2, 42539, 2, 43218, 2, 43227, 2, 43266, 2, 43275, 2, 43474, 2, 43483, 2, 43506, 2, 43515, 2, 43602, 2, 43611, 2, 44018, 2, 44027, 2, 65298, 2, 65307, 2, 1186, 3, 1195, 3, 3378, 3, 3387, 3, 4200, 3, 4209, 3, 4338, 3, 4347, 3, 4408, 3, 4417, 3, 4562, 3, 4571, 3, 4850, 3, 4859, 3, 5202, 3, 5211, 3, 5330, 3, 5339, 3, 5714, 3, 5723, 3, 5826, 3, 5835, 3, 5938, 3, 5947, 3, 6370, 3, 6379, 3, 6482, 3, 6491, 3, 7250, 3, 7259, 3, 7506, 3, 7515, 3, 7586, 3, 7595, 3, 27234, 3, 27243, 3, 27474, 3, 27483, 3, 55248, 3, 55297, 3, 57666, 3, 57675, 3, 58098, 3, 58107, 3, 59730, 3, 59739, 3, 64498, 3, 64507, 3, 624, 2, 67, 2, 92, 2, 99, 2, 124, 2, 172, 2, 172, 2, 183, 2, 183, 2, 188, 2, 188, 2, 194, 2, 216, 2, 218, 2, 248, 2, 250, 2, 707, 2, 712, 2, 723, 2, 738, 2, 742, 2, 750, 2, 750, 2, 752, 2, 752, 2, 882, 2, 886, 2, 888, 2, 889, 2, 892, 2, 895, 2, 897, 2, 897, 2, 904, 2, 904, 2, 906, 2, 908, 2, 910, 2, 910, 2, 912, 2, 931, 2, 933, 2, 1015, 2, 1017, 2, 1155, 2, 1164, 2, 1329, 2, 1331, 2, 1368, 2, 1371, 2, 1371, 2, 1378, 2, 1418, 2, 1490, 2, 1516, 2, 1521, 2, 1524, 2, 1570, 2, 1612, 2, 1648, 2, 1649, 2, 1651, 2, 1749, 2, 1751, 2, 1751, 2, 1767, 2, 1768, 2, 1776, 2, 1777, 2, 1788, 2, 1790, 2, 1793, 2, 1793, 2, 1810, 2, 1810, 2, 1812, 2, 1841, 2, 1871, 2, 1959, 2, 1971, 2, 1971, 2, 1996, 2, 2028, 2, 2038, 2, 2039, 2, 2044, 2, 2044, 2, 2050, 2, 2071, 2, 2076, 2, 2076, 2, 2086, 2, 2086, 2, 2090, 2, 2090, 2, 2114, 2, 2138, 2, 2146, 2, 2156, 2, 2210, 2, 2230, 2, 2232, 2, 2249, 2, 2310, 2, 2363, 2, 2367, 2, 2367, 2, 2386, 2, 2386, 2, 2394, 2, 2403, 2, 2419, 2, 2434, 2, 2439, 2, 2446, 2, 2449, 2, 2450, 2, 2453, 2, 2474, 2, 2476, 2, 2482, 2, 2484, 2, 2484, 2, 2488, 2, 2491, 2, 2495, 2, 2495, 2, 2512, 2, 2512, 2, 2526, 2, 2527, 2, 2529, 2, 2531, 2, 2546, 2, 2547, 2, 2558, 2, 2558, 2, 2567, 2, 2572, 2, 2577, 2, 2578, 2, 2581, 2, 2602, 2, 2604, 2, 2610, 2, 2612, 2, 2613, 2, 2615, 2, 2616, 2, 2618, 2, 2619, 2, 2651, 2, 2654, 2, 2656, 2, 2656, 2, 2676, 2, 2678, 2, 2695, 2, 2703, 2, 2705, 2, 2707, 2, 2709, 2, 2730, 2, 2732, 2, 2738, 2, 2740, 2, 2741, 2, 2743, 2, 2747, 2, 2751, 2, 2751, 2, 2770, 2, 2770, 2, 2786, 2, 2787, 2, 2811, 2, 2811, 2, 2823, 2, 2830, 2, 2833, 2, 2834, 2, 2837, 2, 2858, 2, 2860, 2, 2866, 2, 2868, 2, 2869, 2, 2871, 2, 2875, 2, 2879, 2, 2879, 2, 2910, 2, 2911, 2, 2913, 2, 2915, 2, 2931, 2, 2931, 2, 2949, 2, 2949, 2, 2951, 2, 2956, 2, 2960, 2, 2962, 2, 2964, 2, 2967, 2, 2971, 2, 2972, 2, 2974, 2, 2974, 2, 2976, 2, 2977, 2, 2981, 2, 2982, 2, 2986, 2, 2988, 2, 2992, 2, 3003, 2, 3026, 2, 3026, 2, 3079, 2, 3086, 2, 3088, 2, 3090, 2, 3092, 2, 3114, 2, 3116, 2, 3131, 2, 3135, 2, 3135, 2, 3162, 2, 3164, 2, 3170, 2, 3171, 2, 3202, 2, 3202, 2, 3207, 2, 3214, 2, 3216, 2, 3218, 2, 3220, 2, 3242, 2, 3244, 2, 3253, 2, 3255, 2, 3259, 2, 3263, 2, 3263, 2, 3296, 2, 3296, 2, 3298, 2, 3299, 2, 3315, 2, 3316, 2, 3334, 2, 3342, 2, 3344, 2, 3346, 2, 3348, 2, 3388, 2, 3391, 2, 3391, 2, 3408, 2, 3408, 2, 3414, 2, 3416, 2, 3425, 2, 3427, 2, 3452, 2, 3457, 2, 3463, 2, 3480, 2, 3484, 2, 3507, 2, 3509, 2, 3517, 2, 3519, 2, 3519, 2, 3522, 2, 3528, 2, 3587, 2, 3634, 2, 3636, 2, 3637, 2, 3650, 2, 3656, 2, 3715, 2, 3716, 2, 3718, 2, 3718, 2, 3720, 2, 3724, 2, 3726, 2, 3749, 2, 3751, 2, 3751, 2, 3753, 2, 3762, 2, 3764, 2, 3765, 2, 3775, 2, 3775, 2, 3778, 2, 3782, 2, 3784, 2, 3784, 2, 3806, 2, 3809, 2, 3842, 2, 3842, 2, 3906, 2, 3913, 2, 3915, 2, 3950, 2, 3978, 2, 3982, 2, 4098, 2, 4140, 2, 4161, 2, 4161, 2, 4178, 2, 4183, 2, 4188, 2, 4191, 2, 4195, 2, 4195, 2, 4199, 2, 4200, 2, 4208, 2, 4210, 2, 4215, 2, 4227, 2, 4240, 2, 4240, 2, 4258, 2, 4295, 2, 4297, 2, 4297, 2, 4303, 2, 4303, 2, 4306, 2, 4348, 2, 4350, 2, 4682, 2, 4684, 2, 4687, 2, 4690, 2, 4696, 2, 4698, 2, 4698, 2, 4700, 2, 4703, 2, 4706, 2, 4746, 2, 4748, 2, 4751, 2, 4754, 2, 4786, 2, 4788, 2, 4791, 2, 4794, 2, 4800, 2, 4802, 2, 4802, 2, 4804, 2, 4807, 2, 4810, 2, 4824, 2, 4826, 2, 4882, 2, 4884, 2, 4887, 2, 4890, 2, 4956, 2, 4994, 2, 5009, 2, 5026, 2, 5111, 2, 5114, 2, 5119, 2, 5123, 2, 5742, 2, 5745, 2, 5761, 2, 5763, 2, 5788, 2, 5794, 2, 5868, 2, 5875, 2, 5882, 2, 5890, 2, 5902, 2, 5904, 2, 5907, 2, 5922, 2, 5939, 2, 5954, 2, 5971, 2, 5986, 2, 5998, 2, 6000, 2, 6002, 2, 6018, 2, 6069, 2, 6105, 2, 6105, 2, 6110, 2, 6110, 2, 6178, 2, 6266, 2, 6274, 2, 6278, 2, 6281, 2, 6314, 2, 6316, 2, 6316, 2, 6322, 2, 6391, 2, 6402, 2, 6432, 2, 6482, 2, 6511, 2, 6514, 2, 6518, 2, 6530, 2, 6573, 2, 6578, 2, 6603, 2, 6658, 2, 6680, 2, 6690, 2, 6742, 2, 6825, 2, 6825, 2, 6919, 2, 6965, 2, 6983, 2, 6989, 2, 7045, 2, 7074, 2, 7088, 2, 7089, 2, 7100, 2, 7143, 2, 7170, 2, 7205, 2, 7247, 2, 7249, 2, 7260, 2, 7295, 2, 7298, 2, 7306, 2, 7314, 2, 7356, 2, 7359, 2, 7361, 2, 7403, 2, 7406, 2, 7408, 2, 7413, 2, 7415, 2, 7416, 2, 7420, 2, 7420, 2, 7426, 2, 7617, 2, 7682, 2, 7959, 2, 7962, 2, 7967, 2, 7970, 2, 8007, 2, 8010, 2, 8015, 2, 8018, 2, 8025, 2, 8027, 2, 8027, 2, 8029, 2, 8029, 2, 8031, 2, 8031, 2, 8033, 2, 8063, 2, 8066, 2, 8118, 2, 8120, 2, 8126, 2, 8128, 2, 8128, 2, 8132, 2, 8134, 2, 8136, 2, 8142, 2, 8146, 2, 8149, 2, 8152, 2, 8157, 2, 8162, 2, 8174, 2, 8180, 2, 8182, 2, 8184, 2, 8190, 2, 8307, 2, 8307, 2, 8321, 2, 8321, 2, 8338, 2, 8350, 2, 8452, 2, 8452, 2, 8457, 2, 8457, 2, 8460, 2, 8469, 2, 8471, 2, 8471, 2, 8475, 2, 8479, 2, 8486, 2, 8486, 2, 8488, 2, 8488, 2, 8490, 2, 8490, 2, 8492, 2, 8495, 2, 8497, 2, 8507, 2, 8510, 2, 8513, 2, 8519, 2, 8523, 2, 8528, 2, 8528, 2, 8581, 2, 8582, 2, 11266, 2, 11312, 2, 11314, 2, 11360, 2, 11362, 2, 11494, 2, 11501, 2, 11504, 2, 11508, 2, 11509, 2, 11522, 2, 11559, 2, 11561, 2, 11561, 2, 11567, 2, 11567, 2, 11570, 2, 11625, 2, 11633, 2, 11633, 2, 11650, 2, 11672, 2, 11682, 2, 11688, 2, 11690, 2, 11696, 2, 11698, 2, 11704, 2, 11706, 2, 11712, 2, 11714, 2, 11720, 2, 11722, 2, 11728, 2, 11730, 2, 11736, 2, 11738, 2, 11744, 2, 11825, 2, 11825, 2, 12295, 2, 12296, 2, 12339, 2, 12343, 2, 12349, 2, 12350, 2, 12355, 2, 12440, 2, 12447, 2, 12449, 2, 12451, 2, 12540, 2, 12542, 2, 12545, 2, 12551, 2, 12593, 2, 12595, 2, 12688, 2, 12706, 2, 12737, 2, 12786, 2, 12801, 2, 13314, 2, 19905, 2, 19970, 2, 40958, 2, 40962, 2, 42126, 2, 42194, 2, 42239, 2, 42242, 2, 42510, 2, 42514, 2, 42529, 2, 42540, 2, 42541, 2, 42562, 2, 42608, 2, 42625, 2, 42655, 2, 42658, 2, 42727, 2, 42777, 2, 42785, 2, 42788, 2, 42890, 2, 42893, 2, 42945, 2, 42948, 2, 42956, 2, 42999, 2, 43011, 2, 43013, 2, 43015, 2, 43017, 2, 43020, 2, 43022, 2, 43044, 2, 43074, 2, 43125, 2, 43140, 2, 43189, 2, 43252, 2, 43257, 2, 43261, 2, 43261, 2, 43263, 2, 43264, 2, 43276, 2, 43303, 2, 43314, 2, 43336, 2, 43362, 2, 43390, 2, 43398, 2, 43444, 2, 43473, 2, 43473, 2, 43490, 2, 43494, 2, 43496, 2, 43505, 2, 43516, 2, 43520, 2, 43522, 2, 43562, 2, 43586, 2, 43588, 2, 43590, 2, 43597, 2, 43618, 2, 43640, 2, 43644, 2, 43644, 2, 43648, 2, 43697, 2, 43699, 2, 43699, 2, 43703, 2, 43704, 2, 43707, 2, 43711, 2, 43714, 2, 43714, 2, 43716, 2, 43716, 2, 43741, 2, 43743, 2, 43746, 2, 43756, 2, 43764, 2, 43766, 2, 43779, 2, 43784, 2, 43787, 2, 43792, 2, 43795, 2, 43800, 2, 43810, 2, 43816, 2, 43818, 2, 43824, 2, 43826, 2, 43868, 2, 43870, 2, 43883, 2, 43890, 2, 44004, 2, 44034, 2, 55205, 2, 55218, 2, 55240, 2, 55245, 2, 55293, 2, 63746, 2, 64111, 2, 64114, 2, 64219, 2, 64258, 2, 64264, 2, 64277, 2, 64281, 2, 64287, 2, 64287, 2, 64289, 2, 64298, 2, 64300, 2, 64312, 2, 64314, 2, 64318, 2, 64320, 2, 64320, 2, 64322, 2, 64323, 2, 64325, 2, 64326, 2, 64328, 2, 64435, 2, 64469, 2, 64831, 2, 64850, 2, 64913, 2, 64916, 2, 64969, 2, 65010, 2, 65021, 2, 65138, 2, 65142, 2, 65144, 2, 65278, 2, 65315, 2, 65340, 2, 65347, 2, 65372, 2, 65384, 2, 65472, 2, 65476, 2, 65481, 2, 65484, 2, 65489, 2, 65492, 2, 65497, 2, 65500, 2, 65502, 2, 2, 3, 13, 3, 15, 3, 40, 3, 42, 3, 60, 3, 62, 3, 63, 3, 65, 3, 79, 3, 82, 3, 95, 3, 130, 3, 252, 3, 642, 3, 670, 3, 674, 3, 722, 3, 770, 3, 801, 3, 815, 3, 834, 3, 836, 3, 843, 3, 850, 3, 887, 3, 898, 3, 927, 3, 930, 3, 965, 3, 970, 3, 977, 3, 1026, 3, 1183, 3, 1202, 3, 1237, 3, 1242, 3, 1277, 3, 1282, 3, 1321, 3, 1330, 3, 1381, 3, 1538, 3, 1848, 3, 1858, 3, 1879, 3, 1890, 3, 1897, 3, 2050, 3, 2055, 3, 2058, 3, 2058, 3, 2060, 3, 2103, 3, 2105, 3, 2106, 3, 2110, 3, 2110, 3, 2113, 3, 2135, 3, 2146, 3, 2168, 3, 2178, 3, 2208, 3, 2274, 3, 2292, 3, 2294, 3, 2295, 3, 2306, 3, 2327, 3, 2338, 3, 2363, 3, 2434, 3, 2489, 3, 2496, 3, 2497, 3, 2562, 3, 2562, 3, 2578, 3, 2581, 3, 2583, 3, 2585, 3, 2587, 3, 2615, 3, 2658, 3, 2686, 3, 2690, 3, 2718, 3, 2754, 3, 2761, 3, 2763, 3, 2790, 3, 2818, 3, 2871, 3, 2882, 3, 2903, 3, 2914, 3, 2932, 3, 2946, 3, 2963, 3, 3074, 3, 3146, 3, 3202, 3, 3252, 3, 3266, 3, 3316, 3, 3330, 3, 3365, 3, 3714, 3, 3755, 3, 3762, 3, 3763, 3, 3842, 3, 3870, 3, 3881, 3, 3881, 3, 3890, 3, 3911, 3, 4018, 3, 4038, 3, 4066, 3, 4088, 3, 4101, 3, 4153, 3, 4229, 3, 4273, 3, 4306, 3, 4330, 3, 4357, 3, 4392, 3, 4422, 3, 4422, 3, 4425, 3, 4425, 3, 4434, 3, 4468, 3, 4472, 3, 4472, 3, 4485, 3, 4532, 3, 4547, 3, 4550, 3, 4572, 3, 4572, 3, 4574, 3, 4574, 3, 4610, 3, 4627, 3, 4629, 3, 4653, 3, 4738, 3, 4744, 3, 4746, 3, 4746, 3, 4748, 3, 4751, 3, 4753, 3, 4767, 3, 4769, 3, 4778, 3, 4786, 3, 4832, 3, 4871, 3, 4878, 3, 4881, 3, 4882, 3, 4885, 3, 4906, 3, 4908, 3, 4914, 3, 4916, 3, 4917, 3, 4919, 3, 4923, 3, 4927, 3, 4927, 3, 4946, 3, 4946, 3, 4959, 3, 4963, 3, 5122, 3, 5174, 3, 5193, 3, 5196, 3, 5217, 3, 5219, 3, 5250, 3, 5297, 3, 5318, 3, 5319, 3, 5321, 3, 5321, 3, 5506, 3, 5552, 3, 5594, 3, 5597, 3, 5634, 3, 5681, 3, 5702, 3, 5702, 3, 5762, 3, 5804, 3, 5818, 3, 5818, 3, 5890, 3, 5916, 3, 6146, 3, 6189, 3, 6306, 3, 6369, 3, 6401, 3, 6408, 3, 6411, 3, 6411, 3, 6414, 3, 6421, 3, 6423, 3, 6424, 3, 6426, 3, 6449, 3, 6465, 3, 6465, 3, 6467, 3, 6467, 3, 6562, 3, 6569, 3, 6572, 3, 6610, 3, 6627, 3, 6627, 3, 6629, 3, 6629, 3, 6658, 3, 6658, 3, 6669, 3, 6708, 3, 6716, 3, 6716, 3, 6738, 3, 6738, 3, 6750, 3, 6795, 3, 6815, 3, 6815, 3, 6850, 3, 6906, 3, 7170, 3, 7178, 3, 7180, 3, 7216, 3, 7234, 3, 7234, 3, 7284, 3, 7313, 3, 7426, 3, 7432, 3, 7434, 3, 7435, 3, 7437, 3, 7474, 3, 7496, 3, 7496, 3, 7522, 3, 7527, 3, 7529, 3, 7530, 3, 7532, 3, 7563, 3, 7578, 3, 7578, 3, 7906, 3, 7924, 3, 8114, 3, 8114, 3, 8194, 3, 9115, 3, 9346, 3, 9541, 3, 12290, 3, 13360, 3, 17410, 3, 17992, 3, 26626, 3, 27194, 3, 27202, 3, 27232, 3, 27346, 3, 27375, 3, 27394, 3, 27441, 3, 27458, 3, 27461, 3, 27493, 3, 27513, 3, 27519, 3, 27537, 3, 28226, 3, 28289, 3, 28418, 3, 28492, 3, 28498, 3, 28498, 3, 28565, 3, 28577, 3, 28642, 3, 28643, 3, 28645, 3, 28645, 3, 28674, 3, 34809, 3, 34818, 3, 36055, 3, 36098, 3, 36106, 3, 45058, 3, 45344, 3, 45394, 3, 45396, 3, 45414, 3, 45417, 3, 45426, 3, 45821, 3, 48130, 3, 48236, 3, 48242, 3, 48254, 3, 48258, 3, 48266, 3, 48274, 3, 48283, 3, 54274, 3, 54358, 3, 54360, 3, 54430, 3, 54432, 3, 54433, 3, 54436, 3, 54436, 3, 54439, 3, 54440, 3, 54443, 3, 54446, 3, 54448, 3, 54459, 3, 54461, 3, 54461, 3, 54463, 3, 54469, 3, 54471, 3, 54535, 3, 54537, 3, 54540, 3, 54543, 3, 54550, 3, 54552, 3, 54558, 3, 54560, 3, 54587, 3, 54589, 3, 54592, 3, 54594, 3, 54598, 3, 54600, 3, 54600, 3, 54604, 3, 54610, 3, 54612, 3, 54951, 3, 54954, 3, 54978, 3, 54980, 3, 55004, 3, 55006, 3, 55036, 3, 55038, 3, 55062, 3, 55064, 3, 55094, 3, 55096, 3, 55120, 3, 55122, 3, 55152, 3, 55154, 3, 55178, 3, 55180, 3, 55210, 3, 55212, 3, 55236, 3, 55238, 3, 55245, 3, 57602, 3, 57646, 3, 57657, 3, 57663, 3, 57680, 3, 57680, 3, 58050, 3, 58093, 3, 59394, 3, 59590, 3, 59650, 3, 59717, 3, 59725, 3, 59725, 3, 60930, 3, 60933, 3, 60935, 3, 60961, 3, 60963, 3, 60964, 3, 60966, 3, 60966, 3, 60969, 3, 60969, 3, 60971, 3, 60980, 3, 60982, 3, 60985, 3, 60987, 3, 60987, 3, 60989, 3, 60989, 3, 60996, 3, 60996, 3, 61001, 3, 61001, 3, 61003, 3, 61003, 3, 61005, 3, 61005, 3, 61007, 3, 61009, 3, 61011, 3, 61012, 3, 61014, 3, 61014, 3, 61017, 3, 61017, 3, 61019, 3, 61019, 3, 61021, 3, 61021, 3, 61023, 3, 61023, 3, 61025, 3, 61025, 3, 61027, 3, 61028, 3, 61030, 3, 61030, 3, 61033, 3, 61036, 3, 61038, 3, 61044, 3, 61046, 3, 61049, 3, 61051, 3, 61054, 3, 61056, 3, 61056, 3, 61058, 3, 61067, 3, 61069, 3, 61085, 3, 61091, 3, 61093, 3, 61095, 3, 61099, 3, 61101, 3, 61117, 3, 2, 4, 42719, 4, 42754, 4, 46902, 4, 46914, 4, 47135, 4, 47138, 4, 52899, 4, 52914, 4, 60386, 4, 63490, 4, 64031, 4, 2, 5, 4940, 5, 852, 2, 4, 3, 2, 2, 2, 2, 6, 3, 2, 2, 2, 2, 8, 3, 2, 2, 2, 2, 10, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 14, 3, 2, 2, 2, 2, 16, 3, 2, 2, 2, 2, 18, 3, 2, 2, 2, 2, 20, 3, 2, 2, 2, 2, 22, 3, 2, 2, 2, 2, 24, 3, 2, 2, 2, 2, 26, 3, 2, 2, 2, 2, 28, 3, 2, 2, 2, 2, 30, 3, 2, 2, 2, 2, 32, 3, 2, 2, 2, 2, 34, 3, 2, 2, 2, 2, 36, 3, 2, 2, 2, 2, 38, 3, 2, 2, 2, 2, 40, 3, 2, 2, 2, 2, 42, 3, 2, 2, 2, 2, 44, 3, 2, 2, 2, 2, 46, 3, 2, 2, 2, 2, 48, 3, 2, 2, 2, 2, 50, 3, 2, 2, 2, 2, 52, 3, 2, 2, 2, 2, 54, 3, 2, 2, 2, 2, 56, 3, 2, 2, 2, 2, 58, 3, 2, 2, 2, 2, 60, 3, 2, 2, 2, 2, 62, 3, 2, 2, 2, 2, 64, 3, 2, 2, 2, 2, 66, 3, 2, 2, 2, 2, 68, 3, 2, 2, 2, 2, 70, 3, 2, 2, 2, 2, 72, 3, 2, 2, 2, 2, 74, 3, 2, 2, 2, 2, 76, 3, 2, 2, 2, 2, 78, 3, 2, 2, 2, 2, 80, 3, 2, 2, 2, 2, 82, 3, 2, 2, 2, 2, 84, 3, 2, 2, 2, 2, 86, 3, 2, 2, 2, 2, 88, 3, 2, 2, 2, 2, 90, 3, 2, 2, 2, 2, 92, 3, 2, 2, 2, 2, 94, 3, 2, 2, 2, 2, 96, 3, 2, 2, 2, 2, 98, 3, 2, 2, 2, 2, 100, 3, 2, 2, 2, 2, 102, 3, 2, 2, 2, 2, 104, 3, 2, 2, 2, 2, 106, 3, 2, 2, 2, 2, 108, 3, 2, 2, 2, 2, 110, 3, 2, 2, 2, 2, 112, 3, 2, 2, 2, 2, 114, 3, 2, 2, 2, 2, 116, 3, 2, 2, 2, 2, 118, 3, 2, 2, 2, 2, 120, 3, 2, 2, 2, 2, 122, 3, 2, 2, 2, 2, 124, 3, 2, 2, 2, 2, 126, 3, 2, 2, 2, 2, 128, 3, 2, 2, 2, 2, 130, 3, 2, 2, 2, 2, 132, 3, 2, 2, 2, 2, 134, 3, 2, 2, 2, 2, 136, 3, 2, 2, 2, 2, 138, 3, 2, 2, 2, 2, 140, 3, 2, 2, 2, 2, 142, 3, 2, 2, 2, 2, 144, 3, 2, 2, 2, 2, 146, 3, 2, 2, 2, 2, 148, 3, 2, 2, 2, 2, 154, 3, 2, 2, 2, 2, 158, 3, 2, 2, 2, 2, 160, 3, 2, 2, 2, 2, 162, 3, 2, 2, 2, 2, 164, 3, 2, 2, 2, 2, 166, 3, 2, 2, 2, 2, 168, 3, 2, 2, 2, 2, 170, 3, 2, 2, 2, 2, 172, 3, 2, 2, 2, 2, 174, 3, 2, 2, 2, 2, 176, 3, 2, 2, 2, 2, 178, 3, 2, 2, 2, 2, 180, 3, 2, 2, 2, 3, 202, 3, 2, 2, 2, 3, 204, 3, 2, 2, 2, 3, 206, 3, 2, 2, 2, 4, 208, 3, 2, 2, 2, 6, 214, 3, 2, 2, 2, 8, 222, 3, 2, 2, 2, 10, 227, 3, 2, 2, 2, 12, 237, 3, 2, 2, 2, 14, 244, 3, 2, 2, 2, 16, 249, 3, 2, 2, 2, 18, 255, 3, 2, 2, 2, 20, 258, 3, 2, 2, 2, 22, 262, 3, 2, 2, 2, 24, 269, 3, 2, 2, 2, 26, 274, 3, 2, 2, 2, 28, 279, 3, 2, 2, 2, 30, 284, 3, 2, 2, 2, 32, 292, 3, 2, 2, 2, 34, 299, 3, 2, 2, 2, 36, 305, 3, 2, 2, 2, 38, 317, 3, 2, 2, 2, 40, 320, 3, 2, 2, 2, 42, 326, 3, 2, 2, 2, 44, 331, 3, 2, 2, 2, 46, 340, 3, 2, 2, 2, 48, 344, 3, 2, 2, 2, 50, 351, 3, 2, 2, 2, 52, 358, 3, 2, 2, 2, 54, 362, 3, 2, 2, 2, 56, 366, 3, 2, 2, 2, 58, 374, 3, 2, 2, 2, 60, 376, 3, 2, 2, 2, 62, 378, 3, 2, 2, 2, 64, 380, 3, 2, 2, 2, 66, 382, 3, 2, 2, 2, 68, 384, 3, 2, 2, 2, 70, 386, 3, 2, 2, 2, 72, 388, 3, 2, 2, 2, 74, 390, 3, 2, 2, 2, 76, 392, 3, 2, 2, 2, 78, 394, 3, 2, 2, 2, 80, 397, 3, 2, 2, 2, 82, 399, 3, 2, 2, 2, 84, 401, 3, 2, 2, 2, 86, 404, 3, 2, 2, 2, 88, 407, 3, 2, 2, 2, 90, 410, 3, 2, 2, 2, 92, 437, 3, 2, 2, 2, 94, 439, 3, 2, 2, 2, 96, 442, 3, 2, 2, 2, 98, 445, 3, 2, 2, 2, 100, 448, 3, 2, 2, 2, 102, 451, 3, 2, 2, 2, 104, 453, 3, 2, 2, 2, 106, 456, 3, 2, 2, 2, 108, 458, 3, 2, 2, 2, 110, 461, 3, 2, 2, 2, 112, 463, 3, 2, 2, 2, 114, 465, 3, 2, 2, 2, 116, 467, 3, 2, 2, 2, 118, 470, 3, 2, 2, 2, 120, 473, 3, 2, 2, 2, 122, 476, 3, 2, 2, 2, 124, 478, 3, 2, 2, 2, 126, 480, 3, 2, 2, 2, 128, 482, 3, 2, 2, 2, 130, 484, 3, 2, 2, 2, 132, 486, 3, 2, 2, 2, 134, 488, 3, 2, 2, 2, 136, 502, 3, 2, 2, 2, 138, 504, 3, 2, 2, 2, 140, 514, 3, 2, 2, 2, 142, 526, 3, 2, 2, 2, 144, 538, 3, 2, 2, 2, 146, 556, 3, 2, 2, 2, 148, 558, 3, 2, 2, 2, 150, 594, 3, 2, 2, 2, 152, 596, 3, 2, 2, 2, 154, 607, 3, 2, 2, 2, 156, 611, 3, 2, 2, 2, 158, 618, 3, 2, 2, 2, 160, 622, 3, 2, 2, 2, 162, 624, 3, 2, 2, 2, 164, 629, 3, 2, 2, 2, 166, 634, 3, 2, 2, 2, 168, 641, 3, 2, 2, 2, 170, 652, 3, 2, 2, 2, 172, 661, 3, 2, 2, 2, 174, 672, 3, 2, 2, 2, 176, 678, 3, 2, 2, 2, 178, 693, 3, 2, 2, 2, 180, 699, 3, 2, 2, 2, 182, 714, 3, 2, 2, 2, 184, 716, 3, 2, 2, 2, 186, 744, 3, 2, 2, 2, 188, 754, 3, 2, 2, 2, 190, 756, 3, 2, 2, 2, 192, 758, 3, 2, 2, 2, 194, 760, 3, 2, 2, 2, 196, 768, 3, 2, 2, 2, 198, 770, 3, 2, 2, 2, 200, 772, 3, 2, 2, 2, 202, 775, 3, 2, 2, 2, 204, 781, 3, 2, 2, 2, 206, 795, 3, 2, 2, 2, 208, 209, 7, 100, 2, 2, 209, 210, 7, 116, 2, 2, 210, 211, 7, 103, 2, 2, 211, 212, 7, 99, 2, 2, 212, 213, 7, 109, 2, 2, 213, 5, 3, 2, 2, 2, 214, 215, 7, 102, 2, 2, 215, 216, 7, 103, 2, 2, 216, 217, 7, 104, 2, 2, 217, 218, 7, 99, 2, 2, 218, 219, 7, 119, 2, 2, 219, 220, 7, 110, 2, 2, 220, 221, 7, 118, 2, 2, 221, 7, 3, 2, 2, 2, 222, 223, 7, 104, 2, 2, 223, 224, 7, 119, 2, 2, 224, 225, 7, 112, 2, 2, 225, 226, 7, 101, 2, 2, 226, 9, 3, 2, 2, 2, 227, 228, 7, 107, 2, 2, 228, 229, 7, 112, 2, 2, 229, 230, 7, 118, 2, 2, 230, 231, 7, 103, 2, 2, 231, 232, 7, 116, 2, 2, 232, 233, 7, 104, 2, 2, 233, 234, 7, 99, 2, 2, 234, 235, 7, 101, 2, 2, 235, 236, 7, 103, 2, 2, 236, 11, 3, 2, 2, 2, 237, 238, 7, 117, 2, 2, 238, 239, 7, 103, 2, 2, 239, 240, 7, 110, 2, 2, 240, 241, 7, 103, 2, 2, 241, 242, 7, 101, 2, 2, 242, 243, 7, 118, 2, 2, 243, 13, 3, 2, 2, 2, 244, 245, 7, 101, 2, 2, 245, 246, 7, 99, 2, 2, 246, 247, 7, 117, 2, 2, 247, 248, 7, 103, 2, 2, 248, 15, 3, 2, 2, 2, 249, 250, 7, 102, 2, 2, 250, 251, 7, 103, 2, 2, 251, 252, 7, 104, 2, 2, 252, 253, 7, 103, 2, 2, 253, 254, 7, 116, 2, 2, 254, 17, 3, 2, 2, 2, 255, 256, 7, 105, 2, 2, 256, 257, 7, 113, 2, 2, 257, 19, 3, 2, 2, 2, 258, 259, 7, 111, 2, 2, 259, 260, 7, 99, 2, 2, 260, 261, 7, 114, 2, 2, 261, 21, 3, 2, 2, 2, 262, 263, 7, 117, 2, 2, 263, 264, 7, 118, 2, 2, 264, 265, 7, 116, 2, 2, 265, 266, 7, 119, 2, 2, 266, 267, 7, 101, 2, 2, 267, 268, 7, 118, 2, 2, 268, 23, 3, 2, 2, 2, 269, 270, 7, 101, 2, 2, 270, 271, 7, 106, 2, 2, 271, 272, 7, 99, 2, 2, 272, 273, 7, 112, 2, 2, 273, 25, 3, 2, 2, 2, 274, 275, 7, 103, 2, 2, 275, 276, 7, 110, 2, 2, 276, 277, 7, 117, 2, 2, 277, 278, 7, 103, 2, 2, 278, 27, 3, 2, 2, 2, 279, 280, 7, 105, 2, 2, 280, 281, 7, 113, 2, 2, 281, 282, 7, 118, 2, 2, 282, 283, 7, 113, 2, 2, 283, 29, 3, 2, 2, 2, 284, 285, 7, 114, 2, 2, 285, 286, 7, 99, 2, 2, 286, 287, 7, 101, 2, 2, 287, 288, 7, 109, 2, 2, 288, 289, 7, 99, 2, 2, 289, 290, 7, 105, 2, 2, 290, 291, 7, 103, 2, 2, 291, 31, 3, 2, 2, 2, 292, 293, 7, 117, 2, 2, 293, 294, 7, 121, 2, 2, 294, 295, 7, 107, 2, 2, 295, 296, 7, 118, 2, 2, 296, 297, 7, 101, 2, 2, 297, 298, 7, 106, 2, 2, 298, 33, 3, 2, 2, 2, 299, 300, 7, 101, 2, 2, 300, 301, 7, 113, 2, 2, 301, 302, 7, 112, 2, 2, 302, 303, 7, 117, 2, 2, 303, 304, 7, 118, 2, 2, 304, 35, 3, 2, 2, 2, 305, 306, 7, 104, 2, 2, 306, 307, 7, 99, 2, 2, 307, 308, 7, 110, 2, 2, 308, 309, 7, 110, 2, 2, 309, 310, 7, 118, 2, 2, 310, 311, 7, 106, 2, 2, 311, 312, 7, 116, 2, 2, 312, 313, 7, 113, 2, 2, 313, 314, 7, 119, 2, 2, 314, 315, 7, 105, 2, 2, 315, 316, 7, 106, 2, 2, 316, 37, 3, 2, 2, 2, 317, 318, 7, 107, 2, 2, 318, 319, 7, 104, 2, 2, 319, 39, 3, 2, 2, 2, 320, 321, 7, 116, 2, 2, 321, 322, 7, 99, 2, 2, 322, 323, 7, 112, 2, 2, 323, 324, 7, 105, 2, 2, 324, 325, 7, 103, 2, 2, 325, 41, 3, 2, 2, 2, 326, 327, 7, 118, 2, 2, 327, 328, 7, 123, 2, 2, 328, 329, 7, 114, 2, 2, 329, 330, 7, 103, 2, 2, 330, 43, 3, 2, 2, 2, 331, 332, 7, 101, 2, 2, 332, 333, 7, 113, 2, 2, 333, 334, 7, 112, 2, 2, 334, 335, 7, 118, 2, 2, 335, 336, 7, 107, 2, 2, 336, 337, 7, 112, 2, 2, 337, 338, 7, 119, 2, 2, 338, 339, 7, 103, 2, 2, 339, 45, 3, 2, 2, 2, 340, 341, 7, 104, 2, 2, 341, 342, 7, 113, 2, 2, 342, 343, 7, 116, 2, 2, 343, 47, 3, 2, 2, 2, 344, 345, 7, 107, 2, 2, 345, 346, 7, 111, 2, 2, 346, 347, 7, 114, 2, 2, 347, 348, 7, 113, 2, 2, 348, 349, 7, 116, 2, 2, 349, 350, 7, 118, 2, 2, 350, 49, 3, 2, 2, 2, 351, 352, 7, 116, 2, 2, 352, 353, 7, 103, 2, 2, 353, 354, 7, 118, 2, 2, 354, 355, 7, 119, 2, 2, 355, 356, 7, 116, 2, 2, 356, 357, 7, 112, 2, 2, 357, 51, 3, 2, 2, 2, 358, 359, 7, 120, 2, 2, 359, 360, 7, 99, 2, 2, 360, 361, 7, 116, 2, 2, 361, 53, 3, 2, 2, 2, 362, 363, 7, 112, 2, 2, 363, 364, 7, 107, 2, 2, 364, 365, 7, 110, 2, 2, 365, 55, 3, 2, 2, 2, 366, 371, 5, 196, 98, 2, 367, 370, 5, 196, 98, 2, 368, 370, 5, 198, 99, 2, 369, 367, 3, 2, 2, 2, 369, 368, 3, 2, 2, 2, 370, 373, 3, 2, 2, 2, 371, 369, 3, 2, 2, 2, 371, 372, 3, 2, 2, 2, 372, 57, 3, 2, 2, 2, 373, 371, 3, 2, 2, 2, 374, 375, 7, 42, 2, 2, 375, 59, 3, 2, 2, 2, 376, 377, 7, 43, 2, 2, 377, 61, 3, 2, 2, 2, 378, 379, 7, 125, 2, 2, 379, 63, 3, 2, 2, 2, 380, 381, 7, 127, 2, 2, 381, 65, 3, 2, 2, 2, 382, 383, 7, 93, 2, 2, 383, 67, 3, 2, 2, 2, 384, 385, 7, 95, 2, 2, 385, 69, 3, 2, 2, 2, 386, 387, 7, 63, 2, 2, 387, 71, 3, 2, 2, 2, 388, 389, 7, 46, 2, 2, 389, 73, 3, 2, 2, 2, 390, 391, 7, 61, 2, 2, 391, 75, 3, 2, 2, 2, 392, 393, 7, 12, 2, 2, 393, 77, 3, 2, 2, 2, 394, 395, 7, 15, 2, 2, 395, 396, 7, 12, 2, 2, 396, 79, 3, 2, 2, 2, 397, 398, 7, 60, 2, 2, 398, 81, 3, 2, 2, 2, 399, 400, 7, 48, 2, 2, 400, 83, 3, 2, 2, 2, 401, 402, 7, 45, 2, 2, 402, 403, 7, 45, 2, 2, 403, 85, 3, 2, 2, 2, 404, 405, 7, 47, 2, 2, 405, 406, 7, 47, 2, 2, 406, 87, 3, 2, 2, 2, 407, 408, 7, 60, 2, 2, 408, 409, 7, 63, 2, 2, 409, 89, 3, 2, 2, 2, 410, 411, 7, 48, 2, 2, 411, 412, 7, 48, 2, 2, 412, 413, 7, 48, 2, 2, 413, 91, 3, 2, 2, 2, 414, 438, 7, 61, 2, 2, 415, 417, 5, 76, 38, 2, 416, 415, 3, 2, 2, 2, 417, 418, 3, 2, 2, 2, 418, 416, 3, 2, 2, 2, 418, 419, 3, 2, 2, 2, 419, 438, 3, 2, 2, 2, 420, 422, 5, 78, 39, 2, 421, 420, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 438, 3, 2, 2, 2, 425, 426, 7, 49, 2, 2, 426, 427, 7, 44, 2, 2, 427, 431, 3, 2, 2, 2, 428, 430, 11, 2, 2, 2, 429, 428, 3, 2, 2, 2, 430, 433, 3, 2, 2, 2, 431, 432, 3, 2, 2, 2, 431, 429, 3, 2, 2, 2, 432, 434, 3, 2, 2, 2, 433, 431, 3, 2, 2, 2, 434, 435, 7, 44, 2, 2, 435, 438, 7, 49, 2, 2, 436, 438, 7, 2, 2, 3, 437, 414, 3, 2, 2, 2, 437, 416, 3, 2, 2, 2, 437, 421, 3, 2, 2, 2, 437, 425, 3, 2, 2, 2, 437, 436, 3, 2, 2, 2, 438, 93, 3, 2, 2, 2, 439, 440, 7, 126, 2, 2, 440, 441, 7, 126, 2, 2, 441, 95, 3, 2, 2, 2, 442, 443, 7, 40, 2, 2, 443, 444, 7, 40, 2, 2, 444, 97, 3, 2, 2, 2, 445, 446, 7, 63, 2, 2, 446, 447, 7, 63, 2, 2, 447, 99, 3, 2, 2, 2, 448, 449, 7, 35, 2, 2, 449, 450, 7, 63, 2, 2, 450, 101, 3, 2, 2, 2, 451, 452, 7, 62, 2, 2, 452, 103, 3, 2, 2, 2, 453, 454, 7, 62, 2, 2, 454, 455, 7, 63, 2, 2, 455, 105, 3, 2, 2, 2, 456, 457, 7, 64, 2, 2, 457, 107, 3, 2, 2, 2, 458, 459, 7, 64, 2, 2, 459, 460, 7, 63, 2, 2, 460, 109, 3, 2, 2, 2, 461, 462, 7, 126, 2, 2, 462, 111, 3, 2, 2, 2, 463, 464, 7, 49, 2, 2, 464, 113, 3, 2, 2, 2, 465, 466, 7, 39, 2, 2, 466, 115, 3, 2, 2, 2, 467, 468, 7, 62, 2, 2, 468, 469, 7, 62, 2, 2, 469, 117, 3, 2, 2, 2, 470, 471, 7, 64, 2, 2, 471, 472, 7, 64, 2, 2, 472, 119, 3, 2, 2, 2, 473, 474, 7, 40, 2, 2, 474, 475, 7, 96, 2, 2, 475, 121, 3, 2, 2, 2, 476, 477, 7, 35, 2, 2, 477, 123, 3, 2, 2, 2, 478, 479, 7, 45, 2, 2, 479, 125, 3, 2, 2, 2, 480, 481, 7, 47, 2, 2, 481, 127, 3, 2, 2, 2, 482, 483, 7, 96, 2, 2, 483, 129, 3, 2, 2, 2, 484, 485, 7, 44, 2, 2, 485, 131, 3, 2, 2, 2, 486, 487, 7, 40, 2, 2, 487, 133, 3, 2, 2, 2, 488, 489, 7, 62, 2, 2, 489, 490, 7, 47, 2, 2, 490, 135, 3, 2, 2, 2, 491, 503, 7, 50, 2, 2, 492, 499, 9, 2, 2, 2, 493, 495, 7, 97, 2, 2, 494, 493, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 498, 9, 3, 2, 2, 497, 494, 3, 2, 2, 2, 498, 501, 3, 2, 2, 2, 499, 497, 3, 2, 2, 2, 499, 500, 3, 2, 2, 2, 500, 503, 3, 2, 2, 2, 501, 499, 3, 2, 2, 2, 502, 491, 3, 2, 2, 2, 502, 492, 3, 2, 2, 2, 503, 137, 3, 2, 2, 2, 504, 505, 7, 50, 2, 2, 505, 510, 9, 4, 2, 2, 506, 508, 7, 97, 2, 2, 507, 506, 3, 2, 2, 2, 507, 508, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 511, 5, 192, 96, 2, 510, 507, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 512, 510, 3, 2, 2, 2, 512, 513, 3, 2, 2, 2, 513, 139, 3, 2, 2, 2, 514, 516, 7, 50, 2, 2, 515, 517, 9, 5, 2, 2, 516, 515, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 522, 3, 2, 2, 2, 518, 520, 7, 97, 2, 2, 519, 518, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 523, 5, 188, 94, 2, 522, 519, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 522, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 141, 3, 2, 2, 2, 526, 527, 7, 50, 2, 2, 527, 532, 9, 6, 2, 2, 528, 530, 7, 97, 2, 2, 529, 528, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 533, 5, 190, 95, 2, 532, 529, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 532, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 143, 3, 2, 2, 2, 536, 539, 5, 146, 73, 2, 537, 539, 5, 148, 74, 2, 538, 536, 3, 2, 2, 2, 538, 537, 3, 2, 2, 2, 539, 145, 3, 2, 2, 2, 540, 549, 5, 186, 93, 2, 541, 543, 7, 48, 2, 2, 542, 544, 5, 186, 93, 2, 543, 542, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 544, 546, 3, 2, 2, 2, 545, 547, 5, 194, 97, 2, 546, 545, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 550, 3, 2, 2, 2, 548, 550, 5, 194, 97, 2, 549, 541, 3, 2, 2, 2, 549, 548, 3, 2, 2, 2, 550, 557, 3, 2, 2, 2, 551, 552, 7, 48, 2, 2, 552, 554, 5, 186, 93, 2, 553, 555, 5, 194, 97, 2, 554, 553, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 557, 3, 2, 2, 2, 556, 540, 3, 2, 2, 2, 556, 551, 3, 2, 2, 2, 557, 147, 3, 2, 2, 2, 558, 559, 7, 50, 2, 2, 559, 560, 9, 6, 2, 2, 560, 561, 5, 150, 75, 2, 561, 562, 5, 152, 76, 2, 562, 149, 3, 2, 2, 2, 563, 565, 7, 97, 2, 2, 564, 563, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 568, 5, 190, 95, 2, 567, 564, 3, 2, 2, 2, 568, 569, 3, 2, 2, 2, 569, 567, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 581, 3, 2, 2, 2, 571, 578, 7, 48, 2, 2, 572, 574, 7, 97, 2, 2, 573, 572, 3, 2, 2, 2, 573, 574, 3, 2, 2, 2, 574, 575, 3, 2, 2, 2, 575, 577, 5, 190, 95, 2, 576, 573, 3, 2, 2, 2, 577, 580, 3, 2, 2, 2, 578, 576, 3, 2, 2, 2, 578, 579, 3, 2, 2, 2, 579, 582, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 581, 571, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 595, 3, 2, 2, 2, 583, 584, 7, 48, 2, 2, 584, 591, 5, 190, 95, 2, 585, 587, 7, 97, 2, 2, 586, 585, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 590, 5, 190, 95, 2, 589, 586, 3, 2, 2, 2, 590, 593, 3, 2, 2, 2, 591, 589, 3, 2, 2, 2, 591, 592, 3, 2, 2, 2, 592, 595, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 594, 567, 3, 2, 2, 2, 594, 583, 3, 2, 2, 2, 595, 151, 3, 2, 2, 2, 596, 598, 9, 7, 2, 2, 597, 599, 9, 8, 2, 2, 598, 597, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 601, 5, 186, 93, 2, 601, 153, 3, 2, 2, 2, 602, 608, 5, 136, 68, 2, 603, 608, 5, 138, 69, 2, 604, 608, 5, 140, 70, 2, 605, 608, 5, 142, 71, 2, 606, 608, 5, 144, 72, 2, 607, 602, 3, 2, 2, 2, 607, 603, 3, 2, 2, 2, 607, 604, 3, 2, 2, 2, 607, 605, 3, 2, 2, 2, 607, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 610, 7, 107, 2, 2, 610, 155, 3, 2, 2, 2, 611, 614, 7, 41, 2, 2, 612, 615, 5, 182, 91, 2, 613, 615, 5, 160, 80, 2, 614, 612, 3, 2, 2, 2, 614, 613, 3, 2, 2, 2, 615, 616, 3, 2, 2, 2, 616, 617, 7, 41, 2, 2, 617, 157, 3, 2, 2, 2, 618, 619, 5, 156, 78, 2, 619, 159, 3, 2, 2, 2, 620, 623, 5, 162, 81, 2, 621, 623, 5, 164, 82, 2, 622, 620, 3, 2, 2, 2, 622, 621, 3, 2, 2, 2, 623, 161, 3, 2, 2, 2, 624, 625, 7, 94, 2, 2, 625, 626, 5, 188, 94, 2, 626, 627, 5, 188, 94, 2, 627, 628, 5, 188, 94, 2, 628, 163, 3, 2, 2, 2, 629, 630, 7, 94, 2, 2, 630, 631, 7, 122, 2, 2, 631, 632, 5, 190, 95, 2, 632, 633, 5, 190, 95, 2, 633, 165, 3, 2, 2, 2, 634, 635, 7, 94, 2, 2, 635, 636, 7, 119, 2, 2, 636, 637, 5, 190, 95, 2, 637, 638, 5, 190, 95, 2, 638, 639, 5, 190, 95, 2, 639, 640, 5, 190, 95, 2, 640, 167, 3, 2, 2, 2, 641, 642, 7, 94, 2, 2, 642, 643, 7, 87, 2, 2, 643, 644, 5, 190, 95, 2, 644, 645, 5, 190, 95, 2, 645, 646, 5, 190, 95, 2, 646, 647, 5, 190, 95, 2, 647, 648, 5, 190, 95, 2, 648, 649, 5, 190, 95, 2, 649, 650, 5, 190, 95, 2, 650, 651, 5, 190, 95, 2, 651, 169, 3, 2, 2, 2, 652, 656, 7, 98, 2, 2, 653, 655, 10, 9, 2, 2, 654, 653, 3, 2, 2, 2, 655, 658, 3, 2, 2, 2, 656, 654, 3, 2, 2, 2, 656, 657, 3, 2, 2, 2, 657, 659, 3, 2, 2, 2, 658, 656, 3, 2, 2, 2, 659, 660, 7, 98, 2, 2, 660, 171, 3, 2, 2, 2, 661, 666, 7, 36, 2, 2, 662, 665, 10, 10, 2, 2, 663, 665, 5, 184, 92, 2, 664, 662, 3, 2, 2, 2, 664, 663, 3, 2, 2, 2, 665, 668, 3, 2, 2, 2, 666, 664, 3, 2, 2, 2, 666, 667, 3, 2, 2, 2, 667, 669, 3, 2, 2, 2, 668, 666, 3, 2, 2, 2, 669, 670, 7, 36, 2, 2, 670, 173, 3, 2, 2, 2, 671, 673, 9, 11, 2, 2, 672, 671, 3, 2, 2, 2, 673, 674, 3, 2, 2, 2, 674, 672, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 677, 8, 87, 2, 2, 677, 175, 3, 2, 2, 2, 678, 679, 7, 49, 2, 2, 679, 680, 7, 44, 2, 2, 680, 684, 3, 2, 2, 2, 681, 683, 11, 2, 2, 2, 682, 681, 3, 2, 2, 2, 683, 686, 3, 2, 2, 2, 684, 685, 3, 2, 2, 2, 684, 682, 3, 2, 2, 2, 685, 687, 3, 2, 2, 2, 686, 684, 3, 2, 2, 2, 687, 688, 7, 44, 2, 2, 688, 689, 7, 49, 2, 2, 689, 690, 3, 2, 2, 2, 690, 691, 8, 88, 2, 2, 691, 177, 3, 2, 2, 2, 692, 694, 9, 12, 2, 2, 693, 692, 3, 2, 2, 2, 694, 695, 3, 2, 2, 2, 695, 693, 3, 2, 2, 2, 695, 696, 3, 2, 2, 2, 696, 697, 3, 2, 2, 2, 697, 698, 8, 89, 2, 2, 698, 179, 3, 2, 2, 2, 699, 700, 7, 49, 2, 2, 700, 701, 7, 49, 2, 2, 701, 705, 3, 2, 2, 2, 702, 704, 10, 12, 2, 2, 703, 702, 3, 2, 2, 2, 704, 707, 3, 2, 2, 2, 705, 703, 3, 2, 2, 2, 705, 706, 3, 2, 2, 2, 706, 708, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 709, 8, 90, 2, 2, 709, 181, 3, 2, 2, 2, 710, 715, 10, 13, 2, 2, 711, 715, 5, 166, 83, 2, 712, 715, 5, 168, 84, 2, 713, 715, 5, 184, 92, 2, 714, 710, 3, 2, 2, 2, 714, 711, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 714, 713, 3, 2, 2, 2, 715, 183, 3, 2, 2, 2, 716, 742, 7, 94, 2, 2, 717, 718, 7, 119, 2, 2, 718, 719, 5, 190, 95, 2, 719, 720, 5, 190, 95, 2, 720, 721, 5, 190, 95, 2, 721, 722, 5, 190, 95, 2, 722, 743, 3, 2, 2, 2, 723, 724, 7, 87, 2, 2, 724, 725, 5, 190, 95, 2, 725, 726, 5, 190, 95, 2, 726, 727, 5, 190, 95, 2, 727, 728, 5, 190, 95, 2, 728, 729, 5, 190, 95, 2, 729, 730, 5, 190, 95, 2, 730, 731, 5, 190, 95, 2, 731, 732, 5, 190, 95, 2, 732, 743, 3, 2, 2, 2, 733, 743, 9, 14, 2, 2, 734, 735, 5, 188, 94, 2, 735, 736, 5, 188, 94, 2, 736, 737, 5, 188, 94, 2, 737, 743, 3, 2, 2, 2, 738, 739, 7, 122, 2, 2, 739, 740, 5, 190, 95, 2, 740, 741, 5, 190, 95, 2, 741, 743, 3, 2, 2, 2, 742, 717, 3, 2, 2, 2, 742, 723, 3, 2, 2, 2, 742, 733, 3, 2, 2, 2, 742, 734, 3, 2, 2, 2, 742, 738, 3, 2, 2, 2, 743, 185, 3, 2, 2, 2, 744, 751, 9, 3, 2, 2, 745, 747, 7, 97, 2, 2, 746, 745, 3, 2, 2, 2, 746, 747, 3, 2, 2, 2, 747, 748, 3, 2, 2, 2, 748, 750, 9, 3, 2, 2, 749, 746, 3, 2, 2, 2, 750, 753, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 751, 752, 3, 2, 2, 2, 752, 187, 3, 2, 2, 2, 753, 751, 3, 2, 2, 2, 754, 755, 9, 15, 2, 2, 755, 189, 3, 2, 2, 2, 756, 757, 9, 16, 2, 2, 757, 191, 3, 2, 2, 2, 758, 759, 9, 17, 2, 2, 759, 193, 3, 2, 2, 2, 760, 762, 9, 18, 2, 2, 761, 763, 9, 8, 2, 2, 762, 761, 3, 2, 2, 2, 762, 763, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 765, 5, 186, 93, 2, 765, 195, 3, 2, 2, 2, 766, 769, 5, 200, 100, 2, 767, 769, 7, 97, 2, 2, 768, 766, 3, 2, 2, 2, 768, 767, 3, 2, 2, 2, 769, 197, 3, 2, 2, 2, 770, 771, 9, 19, 2, 2, 771, 199, 3, 2, 2, 2, 772, 773, 9, 20, 2, 2, 773, 201, 3, 2, 2, 2, 774, 776, 9, 11, 2, 2, 775, 774, 3, 2, 2, 2, 776, 777, 3, 2, 2, 2, 777, 775, 3, 2, 2, 2, 777, 778, 3, 2, 2, 2, 778, 779, 3, 2, 2, 2, 779, 780, 8, 101, 2, 2, 780, 203, 3, 2, 2, 2, 781, 782, 7, 49, 2, 2, 782, 783, 7, 44, 2, 2, 783, 787, 3, 2, 2, 2, 784, 786, 10, 12, 2, 2, 785, 784, 3, 2, 2, 2, 786, 789, 3, 2, 2, 2, 787, 788, 3, 2, 2, 2, 787, 785, 3, 2, 2, 2, 788, 790, 3, 2, 2, 2, 789, 787, 3, 2, 2, 2, 790, 791, 7, 44, 2, 2, 791, 792, 7, 49, 2, 2, 792, 793, 3, 2, 2, 2, 793, 794, 8, 102, 2, 2, 794, 205, 3, 2, 2, 2, 795, 796, 7, 49, 2, 2, 796, 797, 7, 49, 2, 2, 797, 801, 3, 2, 2, 2, 798, 800, 10, 12, 2, 2, 799, 798, 3, 2, 2, 2, 800, 803, 3, 2, 2, 2, 801, 799, 3, 2, 2, 2, 801, 802, 3, 2, 2, 2, 802, 804, 3, 2, 2, 2, 803, 801, 3, 2, 2, 2, 804, 805, 8, 103, 2, 2, 805, 207, 3, 2, 2, 2, 54, 2, 3, 369, 371, 418, 423, 431, 437, 494, 499, 502, 507, 512, 516, 519, 524, 529, 534, 538, 543, 546, 549, 554, 556, 564, 569, 573, 578, 581, 586, 591, 594, 598, 607, 614, 622, 656, 664, 666, 674, 684, 695, 705, 714, 742, 746, 751, 762, 768, 777, 787, 801, 3, 2, 3, 2]
\ No newline at end of file
diff --git a/grammar/cpp/GoLexer.tokens b/grammar/cpp/GoLexer.tokens
new file mode 100644
index 0000000..07df51d
--- /dev/null
+++ b/grammar/cpp/GoLexer.tokens
@@ -0,0 +1,153 @@
+BREAK=1
+DEFAULT=2
+FUNC=3
+INTERFACE=4
+SELECT=5
+CASE=6
+DEFER=7
+GO=8
+MAP=9
+STRUCT=10
+CHAN=11
+ELSE=12
+GOTO=13
+PACKAGE=14
+SWITCH=15
+CONST=16
+FALLTHROUGH=17
+IF=18
+RANGE=19
+TYPE=20
+CONTINUE=21
+FOR=22
+IMPORT=23
+RETURN=24
+VAR=25
+NIL_LIT=26
+IDENTIFIER=27
+L_PAREN=28
+R_PAREN=29
+L_CURLY=30
+R_CURLY=31
+L_BRACKET=32
+R_BRACKET=33
+ASSIGN=34
+COMMA=35
+SEMI=36
+HUANHANG=37
+HUANHANGG=38
+COLON=39
+DOT=40
+PLUS_PLUS=41
+MINUS_MINUS=42
+DECLARE_ASSIGN=43
+ELLIPSIS=44
+EOSSS=45
+LOGICAL_OR=46
+LOGICAL_AND=47
+EQUALS=48
+NOT_EQUALS=49
+LESS=50
+LESS_OR_EQUALS=51
+GREATER=52
+GREATER_OR_EQUALS=53
+OR=54
+DIV=55
+MOD=56
+LSHIFT=57
+RSHIFT=58
+BIT_CLEAR=59
+EXCLAMATION=60
+PLUS=61
+MINUS=62
+CARET=63
+STAR=64
+AMPERSAND=65
+RECEIVE=66
+DECIMAL_LIT=67
+BINARY_LIT=68
+OCTAL_LIT=69
+HEX_LIT=70
+FLOAT_LIT=71
+DECIMAL_FLOAT_LIT=72
+HEX_FLOAT_LIT=73
+IMAGINARY_LIT=74
+RUNE_LIT=75
+BYTE_VALUE=76
+OCTAL_BYTE_VALUE=77
+HEX_BYTE_VALUE=78
+LITTLE_U_VALUE=79
+BIG_U_VALUE=80
+RAW_STRING_LIT=81
+INTERPRETED_STRING_LIT=82
+WS=83
+COMMENT=84
+TERMINATOR=85
+LINE_COMMENT=86
+WS_NLSEMI=87
+COMMENT_NLSEMI=88
+LINE_COMMENT_NLSEMI=89
+'break'=1
+'default'=2
+'func'=3
+'interface'=4
+'select'=5
+'case'=6
+'defer'=7
+'go'=8
+'map'=9
+'struct'=10
+'chan'=11
+'else'=12
+'goto'=13
+'package'=14
+'switch'=15
+'const'=16
+'fallthrough'=17
+'if'=18
+'range'=19
+'type'=20
+'continue'=21
+'for'=22
+'import'=23
+'return'=24
+'var'=25
+'nil'=26
+'('=28
+')'=29
+'{'=30
+'}'=31
+'['=32
+']'=33
+'='=34
+','=35
+';'=36
+'\n'=37
+'\r\n'=38
+':'=39
+'.'=40
+'++'=41
+'--'=42
+':='=43
+'...'=44
+'||'=46
+'&&'=47
+'=='=48
+'!='=49
+'<'=50
+'<='=51
+'>'=52
+'>='=53
+'|'=54
+'/'=55
+'%'=56
+'<<'=57
+'>>'=58
+'&^'=59
+'!'=60
+'+'=61
+'-'=62
+'^'=63
+'*'=64
+'&'=65
+'<-'=66
diff --git a/grammar/cpp/GoParser.cpp b/grammar/cpp/GoParser.cpp
new file mode 100644
index 0000000..805ad03
--- /dev/null
+++ b/grammar/cpp/GoParser.cpp
@@ -0,0 +1,10506 @@
+
+// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3
+
+
+#include "GoParserListener.h"
+
+#include "GoParser.h"
+
+
+using namespace antlrcpp;
+using namespace antlr4;
+
+GoParser::GoParser(TokenStream *input) : Parser(input) {
+ _interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache);
+}
+
+GoParser::~GoParser() {
+ delete _interpreter;
+}
+
+std::string GoParser::getGrammarFileName() const {
+ return "GoParser.g4";
+}
+
+const std::vector& GoParser::getRuleNames() const {
+ return _ruleNames;
+}
+
+dfa::Vocabulary& GoParser::getVocabulary() const {
+ return _vocabulary;
+}
+
+
+//----------------- SourceFileContext ------------------------------------------------------------------
+
+GoParser::SourceFileContext::SourceFileContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::PackageClauseContext* GoParser::SourceFileContext::packageClause() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::SourceFileContext::EOF() {
+ return getToken(GoParser::EOF, 0);
+}
+
+std::vector GoParser::SourceFileContext::eoss() {
+ return getRuleContexts();
+}
+
+GoParser::EossContext* GoParser::SourceFileContext::eoss(size_t i) {
+ return getRuleContext(i);
+}
+
+std::vector GoParser::SourceFileContext::importDecl() {
+ return getRuleContexts();
+}
+
+GoParser::ImportDeclContext* GoParser::SourceFileContext::importDecl(size_t i) {
+ return getRuleContext(i);
+}
+
+std::vector GoParser::SourceFileContext::functionDecl() {
+ return getRuleContexts();
+}
+
+GoParser::FunctionDeclContext* GoParser::SourceFileContext::functionDecl(size_t i) {
+ return getRuleContext(i);
+}
+
+std::vector GoParser::SourceFileContext::methodDecl() {
+ return getRuleContexts();
+}
+
+GoParser::MethodDeclContext* GoParser::SourceFileContext::methodDecl(size_t i) {
+ return getRuleContext(i);
+}
+
+std::vector GoParser::SourceFileContext::declaration() {
+ return getRuleContexts();
+}
+
+GoParser::DeclarationContext* GoParser::SourceFileContext::declaration(size_t i) {
+ return getRuleContext(i);
+}
+
+
+size_t GoParser::SourceFileContext::getRuleIndex() const {
+ return GoParser::RuleSourceFile;
+}
+
+void GoParser::SourceFileContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterSourceFile(this);
+}
+
+void GoParser::SourceFileContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitSourceFile(this);
+}
+
+GoParser::SourceFileContext* GoParser::sourceFile() {
+ SourceFileContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 0, GoParser::RuleSourceFile);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(198);
+ packageClause();
+ setState(202);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::SEMI)
+ | (1ULL << GoParser::HUANHANG)
+ | (1ULL << GoParser::HUANHANGG)
+ | (1ULL << GoParser::EOSSS))) != 0)) {
+ setState(199);
+ eoss();
+ setState(204);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(214);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while (_la == GoParser::IMPORT) {
+ setState(205);
+ importDecl();
+ setState(209);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::SEMI)
+ | (1ULL << GoParser::HUANHANG)
+ | (1ULL << GoParser::HUANHANGG)
+ | (1ULL << GoParser::EOSSS))) != 0)) {
+ setState(206);
+ eoss();
+ setState(211);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(216);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(230);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::FUNC)
+ | (1ULL << GoParser::CONST)
+ | (1ULL << GoParser::TYPE)
+ | (1ULL << GoParser::VAR))) != 0)) {
+ setState(220);
+ _errHandler->sync(this);
+ switch (getInterpreter()->adaptivePredict(_input, 3, _ctx)) {
+ case 1: {
+ setState(217);
+ functionDecl();
+ break;
+ }
+
+ case 2: {
+ setState(218);
+ methodDecl();
+ break;
+ }
+
+ case 3: {
+ setState(219);
+ declaration();
+ break;
+ }
+
+ default:
+ break;
+ }
+ setState(225);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::SEMI)
+ | (1ULL << GoParser::HUANHANG)
+ | (1ULL << GoParser::HUANHANGG)
+ | (1ULL << GoParser::EOSSS))) != 0)) {
+ setState(222);
+ eoss();
+ setState(227);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(232);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(233);
+ match(GoParser::EOF);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- PackageClauseContext ------------------------------------------------------------------
+
+GoParser::PackageClauseContext::PackageClauseContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::PackageClauseContext::PACKAGE() {
+ return getToken(GoParser::PACKAGE, 0);
+}
+
+tree::TerminalNode* GoParser::PackageClauseContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+
+size_t GoParser::PackageClauseContext::getRuleIndex() const {
+ return GoParser::RulePackageClause;
+}
+
+void GoParser::PackageClauseContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterPackageClause(this);
+}
+
+void GoParser::PackageClauseContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitPackageClause(this);
+}
+
+GoParser::PackageClauseContext* GoParser::packageClause() {
+ PackageClauseContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 2, GoParser::RulePackageClause);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(235);
+ match(GoParser::PACKAGE);
+ setState(236);
+ antlrcpp::downCast(_localctx)->packageName = match(GoParser::IDENTIFIER);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ImportDeclContext ------------------------------------------------------------------
+
+GoParser::ImportDeclContext::ImportDeclContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::ImportDeclContext::IMPORT() {
+ return getToken(GoParser::IMPORT, 0);
+}
+
+std::vector GoParser::ImportDeclContext::importSpec() {
+ return getRuleContexts();
+}
+
+GoParser::ImportSpecContext* GoParser::ImportDeclContext::importSpec(size_t i) {
+ return getRuleContext(i);
+}
+
+tree::TerminalNode* GoParser::ImportDeclContext::L_PAREN() {
+ return getToken(GoParser::L_PAREN, 0);
+}
+
+tree::TerminalNode* GoParser::ImportDeclContext::R_PAREN() {
+ return getToken(GoParser::R_PAREN, 0);
+}
+
+std::vector GoParser::ImportDeclContext::eoss() {
+ return getRuleContexts();
+}
+
+GoParser::EossContext* GoParser::ImportDeclContext::eoss(size_t i) {
+ return getRuleContext(i);
+}
+
+
+size_t GoParser::ImportDeclContext::getRuleIndex() const {
+ return GoParser::RuleImportDecl;
+}
+
+void GoParser::ImportDeclContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterImportDecl(this);
+}
+
+void GoParser::ImportDeclContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitImportDecl(this);
+}
+
+GoParser::ImportDeclContext* GoParser::importDecl() {
+ ImportDeclContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 4, GoParser::RuleImportDecl);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(238);
+ match(GoParser::IMPORT);
+ setState(250);
+ _errHandler->sync(this);
+ switch (_input->LA(1)) {
+ case GoParser::IDENTIFIER:
+ case GoParser::DOT:
+ case GoParser::RAW_STRING_LIT:
+ case GoParser::INTERPRETED_STRING_LIT: {
+ setState(239);
+ importSpec();
+ break;
+ }
+
+ case GoParser::L_PAREN: {
+ setState(240);
+ match(GoParser::L_PAREN);
+ setState(246);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while (((((_la - 27) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 27)) & ((1ULL << (GoParser::IDENTIFIER - 27))
+ | (1ULL << (GoParser::DOT - 27))
+ | (1ULL << (GoParser::RAW_STRING_LIT - 27))
+ | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 27)))) != 0)) {
+ setState(241);
+ importSpec();
+ setState(242);
+ eoss();
+ setState(248);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(249);
+ match(GoParser::R_PAREN);
+ break;
+ }
+
+ default:
+ throw NoViableAltException(this);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ImportSpecContext ------------------------------------------------------------------
+
+GoParser::ImportSpecContext::ImportSpecContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::ImportPathContext* GoParser::ImportSpecContext::importPath() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::ImportSpecContext::DOT() {
+ return getToken(GoParser::DOT, 0);
+}
+
+tree::TerminalNode* GoParser::ImportSpecContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+
+size_t GoParser::ImportSpecContext::getRuleIndex() const {
+ return GoParser::RuleImportSpec;
+}
+
+void GoParser::ImportSpecContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterImportSpec(this);
+}
+
+void GoParser::ImportSpecContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitImportSpec(this);
+}
+
+GoParser::ImportSpecContext* GoParser::importSpec() {
+ ImportSpecContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 6, GoParser::RuleImportSpec);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(253);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == GoParser::IDENTIFIER
+
+ || _la == GoParser::DOT) {
+ setState(252);
+ antlrcpp::downCast(_localctx)->alias = _input->LT(1);
+ _la = _input->LA(1);
+ if (!(_la == GoParser::IDENTIFIER
+
+ || _la == GoParser::DOT)) {
+ antlrcpp::downCast(_localctx)->alias = _errHandler->recoverInline(this);
+ }
+ else {
+ _errHandler->reportMatch(this);
+ consume();
+ }
+ }
+ setState(255);
+ importPath();
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ImportPathContext ------------------------------------------------------------------
+
+GoParser::ImportPathContext::ImportPathContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::String_Context* GoParser::ImportPathContext::string_() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::ImportPathContext::getRuleIndex() const {
+ return GoParser::RuleImportPath;
+}
+
+void GoParser::ImportPathContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterImportPath(this);
+}
+
+void GoParser::ImportPathContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitImportPath(this);
+}
+
+GoParser::ImportPathContext* GoParser::importPath() {
+ ImportPathContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 8, GoParser::RuleImportPath);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(257);
+ string_();
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- DeclarationContext ------------------------------------------------------------------
+
+GoParser::DeclarationContext::DeclarationContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::ConstDeclContext* GoParser::DeclarationContext::constDecl() {
+ return getRuleContext(0);
+}
+
+GoParser::TypeDeclContext* GoParser::DeclarationContext::typeDecl() {
+ return getRuleContext(0);
+}
+
+GoParser::VarDeclContext* GoParser::DeclarationContext::varDecl() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::DeclarationContext::getRuleIndex() const {
+ return GoParser::RuleDeclaration;
+}
+
+void GoParser::DeclarationContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterDeclaration(this);
+}
+
+void GoParser::DeclarationContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitDeclaration(this);
+}
+
+GoParser::DeclarationContext* GoParser::declaration() {
+ DeclarationContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 10, GoParser::RuleDeclaration);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ setState(262);
+ _errHandler->sync(this);
+ switch (_input->LA(1)) {
+ case GoParser::CONST: {
+ enterOuterAlt(_localctx, 1);
+ setState(259);
+ constDecl();
+ break;
+ }
+
+ case GoParser::TYPE: {
+ enterOuterAlt(_localctx, 2);
+ setState(260);
+ typeDecl();
+ break;
+ }
+
+ case GoParser::VAR: {
+ enterOuterAlt(_localctx, 3);
+ setState(261);
+ varDecl();
+ break;
+ }
+
+ default:
+ throw NoViableAltException(this);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ConstDeclContext ------------------------------------------------------------------
+
+GoParser::ConstDeclContext::ConstDeclContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::ConstDeclContext::CONST() {
+ return getToken(GoParser::CONST, 0);
+}
+
+std::vector GoParser::ConstDeclContext::constSpec() {
+ return getRuleContexts();
+}
+
+GoParser::ConstSpecContext* GoParser::ConstDeclContext::constSpec(size_t i) {
+ return getRuleContext(i);
+}
+
+tree::TerminalNode* GoParser::ConstDeclContext::L_PAREN() {
+ return getToken(GoParser::L_PAREN, 0);
+}
+
+tree::TerminalNode* GoParser::ConstDeclContext::R_PAREN() {
+ return getToken(GoParser::R_PAREN, 0);
+}
+
+std::vector GoParser::ConstDeclContext::eoss() {
+ return getRuleContexts();
+}
+
+GoParser::EossContext* GoParser::ConstDeclContext::eoss(size_t i) {
+ return getRuleContext(i);
+}
+
+
+size_t GoParser::ConstDeclContext::getRuleIndex() const {
+ return GoParser::RuleConstDecl;
+}
+
+void GoParser::ConstDeclContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterConstDecl(this);
+}
+
+void GoParser::ConstDeclContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitConstDecl(this);
+}
+
+GoParser::ConstDeclContext* GoParser::constDecl() {
+ ConstDeclContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 12, GoParser::RuleConstDecl);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(264);
+ match(GoParser::CONST);
+ setState(276);
+ _errHandler->sync(this);
+ switch (_input->LA(1)) {
+ case GoParser::IDENTIFIER: {
+ setState(265);
+ constSpec();
+ break;
+ }
+
+ case GoParser::L_PAREN: {
+ setState(266);
+ match(GoParser::L_PAREN);
+ setState(272);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while (_la == GoParser::IDENTIFIER) {
+ setState(267);
+ constSpec();
+ setState(268);
+ eoss();
+ setState(274);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(275);
+ match(GoParser::R_PAREN);
+ break;
+ }
+
+ default:
+ throw NoViableAltException(this);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ConstSpecContext ------------------------------------------------------------------
+
+GoParser::ConstSpecContext::ConstSpecContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::IdentifierListContext* GoParser::ConstSpecContext::identifierList() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::ConstSpecContext::ASSIGN() {
+ return getToken(GoParser::ASSIGN, 0);
+}
+
+GoParser::ExpressionListContext* GoParser::ConstSpecContext::expressionList() {
+ return getRuleContext(0);
+}
+
+GoParser::Type_Context* GoParser::ConstSpecContext::type_() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::ConstSpecContext::getRuleIndex() const {
+ return GoParser::RuleConstSpec;
+}
+
+void GoParser::ConstSpecContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterConstSpec(this);
+}
+
+void GoParser::ConstSpecContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitConstSpec(this);
+}
+
+GoParser::ConstSpecContext* GoParser::constSpec() {
+ ConstSpecContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 14, GoParser::RuleConstSpec);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(278);
+ identifierList();
+ setState(284);
+ _errHandler->sync(this);
+
+ switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) {
+ case 1: {
+ setState(280);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (((((_la - 3) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 3)) & ((1ULL << (GoParser::FUNC - 3))
+ | (1ULL << (GoParser::INTERFACE - 3))
+ | (1ULL << (GoParser::MAP - 3))
+ | (1ULL << (GoParser::STRUCT - 3))
+ | (1ULL << (GoParser::CHAN - 3))
+ | (1ULL << (GoParser::IDENTIFIER - 3))
+ | (1ULL << (GoParser::L_PAREN - 3))
+ | (1ULL << (GoParser::L_BRACKET - 3))
+ | (1ULL << (GoParser::STAR - 3))
+ | (1ULL << (GoParser::RECEIVE - 3)))) != 0)) {
+ setState(279);
+ type_();
+ }
+ setState(282);
+ match(GoParser::ASSIGN);
+ setState(283);
+ expressionList();
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- IdentifierListContext ------------------------------------------------------------------
+
+GoParser::IdentifierListContext::IdentifierListContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+std::vector GoParser::IdentifierListContext::IDENTIFIER() {
+ return getTokens(GoParser::IDENTIFIER);
+}
+
+tree::TerminalNode* GoParser::IdentifierListContext::IDENTIFIER(size_t i) {
+ return getToken(GoParser::IDENTIFIER, i);
+}
+
+std::vector GoParser::IdentifierListContext::COMMA() {
+ return getTokens(GoParser::COMMA);
+}
+
+tree::TerminalNode* GoParser::IdentifierListContext::COMMA(size_t i) {
+ return getToken(GoParser::COMMA, i);
+}
+
+
+size_t GoParser::IdentifierListContext::getRuleIndex() const {
+ return GoParser::RuleIdentifierList;
+}
+
+void GoParser::IdentifierListContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterIdentifierList(this);
+}
+
+void GoParser::IdentifierListContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitIdentifierList(this);
+}
+
+GoParser::IdentifierListContext* GoParser::identifierList() {
+ IdentifierListContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 16, GoParser::RuleIdentifierList);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(286);
+ match(GoParser::IDENTIFIER);
+ setState(291);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while (_la == GoParser::COMMA) {
+ setState(287);
+ match(GoParser::COMMA);
+ setState(288);
+ match(GoParser::IDENTIFIER);
+ setState(293);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ExpressionListContext ------------------------------------------------------------------
+
+GoParser::ExpressionListContext::ExpressionListContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+std::vector GoParser::ExpressionListContext::expression() {
+ return getRuleContexts();
+}
+
+GoParser::ExpressionContext* GoParser::ExpressionListContext::expression(size_t i) {
+ return getRuleContext(i);
+}
+
+std::vector GoParser::ExpressionListContext::COMMA() {
+ return getTokens(GoParser::COMMA);
+}
+
+tree::TerminalNode* GoParser::ExpressionListContext::COMMA(size_t i) {
+ return getToken(GoParser::COMMA, i);
+}
+
+
+size_t GoParser::ExpressionListContext::getRuleIndex() const {
+ return GoParser::RuleExpressionList;
+}
+
+void GoParser::ExpressionListContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterExpressionList(this);
+}
+
+void GoParser::ExpressionListContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitExpressionList(this);
+}
+
+GoParser::ExpressionListContext* GoParser::expressionList() {
+ ExpressionListContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 18, GoParser::RuleExpressionList);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ size_t alt;
+ enterOuterAlt(_localctx, 1);
+ setState(294);
+ expression(0);
+ setState(299);
+ _errHandler->sync(this);
+ alt = getInterpreter()->adaptivePredict(_input, 15, _ctx);
+ while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
+ if (alt == 1) {
+ setState(295);
+ match(GoParser::COMMA);
+ setState(296);
+ expression(0);
+ }
+ setState(301);
+ _errHandler->sync(this);
+ alt = getInterpreter()->adaptivePredict(_input, 15, _ctx);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- TypeDeclContext ------------------------------------------------------------------
+
+GoParser::TypeDeclContext::TypeDeclContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::TypeDeclContext::TYPE() {
+ return getToken(GoParser::TYPE, 0);
+}
+
+std::vector GoParser::TypeDeclContext::typeSpec() {
+ return getRuleContexts();
+}
+
+GoParser::TypeSpecContext* GoParser::TypeDeclContext::typeSpec(size_t i) {
+ return getRuleContext(i);
+}
+
+tree::TerminalNode* GoParser::TypeDeclContext::L_PAREN() {
+ return getToken(GoParser::L_PAREN, 0);
+}
+
+tree::TerminalNode* GoParser::TypeDeclContext::R_PAREN() {
+ return getToken(GoParser::R_PAREN, 0);
+}
+
+std::vector GoParser::TypeDeclContext::eoss() {
+ return getRuleContexts();
+}
+
+GoParser::EossContext* GoParser::TypeDeclContext::eoss(size_t i) {
+ return getRuleContext(i);
+}
+
+
+size_t GoParser::TypeDeclContext::getRuleIndex() const {
+ return GoParser::RuleTypeDecl;
+}
+
+void GoParser::TypeDeclContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterTypeDecl(this);
+}
+
+void GoParser::TypeDeclContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitTypeDecl(this);
+}
+
+GoParser::TypeDeclContext* GoParser::typeDecl() {
+ TypeDeclContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 20, GoParser::RuleTypeDecl);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(302);
+ match(GoParser::TYPE);
+ setState(314);
+ _errHandler->sync(this);
+ switch (_input->LA(1)) {
+ case GoParser::IDENTIFIER: {
+ setState(303);
+ typeSpec();
+ break;
+ }
+
+ case GoParser::L_PAREN: {
+ setState(304);
+ match(GoParser::L_PAREN);
+ setState(310);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while (_la == GoParser::IDENTIFIER) {
+ setState(305);
+ typeSpec();
+ setState(306);
+ eoss();
+ setState(312);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(313);
+ match(GoParser::R_PAREN);
+ break;
+ }
+
+ default:
+ throw NoViableAltException(this);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- TypeSpecContext ------------------------------------------------------------------
+
+GoParser::TypeSpecContext::TypeSpecContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::TypeSpecContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+GoParser::Type_Context* GoParser::TypeSpecContext::type_() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::TypeSpecContext::ASSIGN() {
+ return getToken(GoParser::ASSIGN, 0);
+}
+
+
+size_t GoParser::TypeSpecContext::getRuleIndex() const {
+ return GoParser::RuleTypeSpec;
+}
+
+void GoParser::TypeSpecContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterTypeSpec(this);
+}
+
+void GoParser::TypeSpecContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitTypeSpec(this);
+}
+
+GoParser::TypeSpecContext* GoParser::typeSpec() {
+ TypeSpecContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 22, GoParser::RuleTypeSpec);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(316);
+ match(GoParser::IDENTIFIER);
+ setState(318);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == GoParser::ASSIGN) {
+ setState(317);
+ match(GoParser::ASSIGN);
+ }
+ setState(320);
+ type_();
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- FunctionDeclContext ------------------------------------------------------------------
+
+GoParser::FunctionDeclContext::FunctionDeclContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::FunctionDeclContext::FUNC() {
+ return getToken(GoParser::FUNC, 0);
+}
+
+tree::TerminalNode* GoParser::FunctionDeclContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+GoParser::SignatureContext* GoParser::FunctionDeclContext::signature() {
+ return getRuleContext(0);
+}
+
+GoParser::BlockContext* GoParser::FunctionDeclContext::block() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::FunctionDeclContext::getRuleIndex() const {
+ return GoParser::RuleFunctionDecl;
+}
+
+void GoParser::FunctionDeclContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterFunctionDecl(this);
+}
+
+void GoParser::FunctionDeclContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitFunctionDecl(this);
+}
+
+GoParser::FunctionDeclContext* GoParser::functionDecl() {
+ FunctionDeclContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 24, GoParser::RuleFunctionDecl);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(322);
+ match(GoParser::FUNC);
+ setState(323);
+ match(GoParser::IDENTIFIER);
+
+ setState(324);
+ signature();
+ setState(326);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == GoParser::L_CURLY) {
+ setState(325);
+ block();
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- MethodDeclContext ------------------------------------------------------------------
+
+GoParser::MethodDeclContext::MethodDeclContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::MethodDeclContext::FUNC() {
+ return getToken(GoParser::FUNC, 0);
+}
+
+GoParser::ReceiverContext* GoParser::MethodDeclContext::receiver() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::MethodDeclContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+GoParser::SignatureContext* GoParser::MethodDeclContext::signature() {
+ return getRuleContext(0);
+}
+
+GoParser::BlockContext* GoParser::MethodDeclContext::block() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::MethodDeclContext::getRuleIndex() const {
+ return GoParser::RuleMethodDecl;
+}
+
+void GoParser::MethodDeclContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterMethodDecl(this);
+}
+
+void GoParser::MethodDeclContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitMethodDecl(this);
+}
+
+GoParser::MethodDeclContext* GoParser::methodDecl() {
+ MethodDeclContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 26, GoParser::RuleMethodDecl);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(328);
+ match(GoParser::FUNC);
+ setState(329);
+ receiver();
+ setState(330);
+ match(GoParser::IDENTIFIER);
+
+ setState(331);
+ signature();
+ setState(333);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == GoParser::L_CURLY) {
+ setState(332);
+ block();
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ReceiverContext ------------------------------------------------------------------
+
+GoParser::ReceiverContext::ReceiverContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::ParametersContext* GoParser::ReceiverContext::parameters() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::ReceiverContext::getRuleIndex() const {
+ return GoParser::RuleReceiver;
+}
+
+void GoParser::ReceiverContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterReceiver(this);
+}
+
+void GoParser::ReceiverContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitReceiver(this);
+}
+
+GoParser::ReceiverContext* GoParser::receiver() {
+ ReceiverContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 28, GoParser::RuleReceiver);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(335);
+ parameters();
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- VarDeclContext ------------------------------------------------------------------
+
+GoParser::VarDeclContext::VarDeclContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::VarDeclContext::VAR() {
+ return getToken(GoParser::VAR, 0);
+}
+
+std::vector GoParser::VarDeclContext::varSpec() {
+ return getRuleContexts();
+}
+
+GoParser::VarSpecContext* GoParser::VarDeclContext::varSpec(size_t i) {
+ return getRuleContext(i);
+}
+
+tree::TerminalNode* GoParser::VarDeclContext::L_PAREN() {
+ return getToken(GoParser::L_PAREN, 0);
+}
+
+tree::TerminalNode* GoParser::VarDeclContext::R_PAREN() {
+ return getToken(GoParser::R_PAREN, 0);
+}
+
+std::vector GoParser::VarDeclContext::eoss() {
+ return getRuleContexts();
+}
+
+GoParser::EossContext* GoParser::VarDeclContext::eoss(size_t i) {
+ return getRuleContext(i);
+}
+
+
+size_t GoParser::VarDeclContext::getRuleIndex() const {
+ return GoParser::RuleVarDecl;
+}
+
+void GoParser::VarDeclContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterVarDecl(this);
+}
+
+void GoParser::VarDeclContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitVarDecl(this);
+}
+
+GoParser::VarDeclContext* GoParser::varDecl() {
+ VarDeclContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 30, GoParser::RuleVarDecl);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(337);
+ match(GoParser::VAR);
+ setState(349);
+ _errHandler->sync(this);
+ switch (_input->LA(1)) {
+ case GoParser::IDENTIFIER: {
+ setState(338);
+ varSpec();
+ break;
+ }
+
+ case GoParser::L_PAREN: {
+ setState(339);
+ match(GoParser::L_PAREN);
+ setState(345);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while (_la == GoParser::IDENTIFIER) {
+ setState(340);
+ varSpec();
+ setState(341);
+ eoss();
+ setState(347);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(348);
+ match(GoParser::R_PAREN);
+ break;
+ }
+
+ default:
+ throw NoViableAltException(this);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- VarSpecContext ------------------------------------------------------------------
+
+GoParser::VarSpecContext::VarSpecContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::IdentifierListContext* GoParser::VarSpecContext::identifierList() {
+ return getRuleContext(0);
+}
+
+GoParser::Type_Context* GoParser::VarSpecContext::type_() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::VarSpecContext::ASSIGN() {
+ return getToken(GoParser::ASSIGN, 0);
+}
+
+GoParser::ExpressionListContext* GoParser::VarSpecContext::expressionList() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::VarSpecContext::getRuleIndex() const {
+ return GoParser::RuleVarSpec;
+}
+
+void GoParser::VarSpecContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterVarSpec(this);
+}
+
+void GoParser::VarSpecContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitVarSpec(this);
+}
+
+GoParser::VarSpecContext* GoParser::varSpec() {
+ VarSpecContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 32, GoParser::RuleVarSpec);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(351);
+ identifierList();
+ setState(359);
+ _errHandler->sync(this);
+ switch (_input->LA(1)) {
+ case GoParser::FUNC:
+ case GoParser::INTERFACE:
+ case GoParser::MAP:
+ case GoParser::STRUCT:
+ case GoParser::CHAN:
+ case GoParser::IDENTIFIER:
+ case GoParser::L_PAREN:
+ case GoParser::L_BRACKET:
+ case GoParser::STAR:
+ case GoParser::RECEIVE: {
+ setState(352);
+ type_();
+ setState(355);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == GoParser::ASSIGN) {
+ setState(353);
+ match(GoParser::ASSIGN);
+ setState(354);
+ expressionList();
+ }
+ break;
+ }
+
+ case GoParser::ASSIGN: {
+ setState(357);
+ match(GoParser::ASSIGN);
+ setState(358);
+ expressionList();
+ break;
+ }
+
+ default:
+ throw NoViableAltException(this);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- BlockContext ------------------------------------------------------------------
+
+GoParser::BlockContext::BlockContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::BlockContext::L_CURLY() {
+ return getToken(GoParser::L_CURLY, 0);
+}
+
+tree::TerminalNode* GoParser::BlockContext::R_CURLY() {
+ return getToken(GoParser::R_CURLY, 0);
+}
+
+std::vector GoParser::BlockContext::eoss() {
+ return getRuleContexts();
+}
+
+GoParser::EossContext* GoParser::BlockContext::eoss(size_t i) {
+ return getRuleContext(i);
+}
+
+GoParser::StatementListContext* GoParser::BlockContext::statementList() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::BlockContext::getRuleIndex() const {
+ return GoParser::RuleBlock;
+}
+
+void GoParser::BlockContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterBlock(this);
+}
+
+void GoParser::BlockContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitBlock(this);
+}
+
+GoParser::BlockContext* GoParser::block() {
+ BlockContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 34, GoParser::RuleBlock);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(361);
+ match(GoParser::L_CURLY);
+ setState(365);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ while ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::SEMI)
+ | (1ULL << GoParser::HUANHANG)
+ | (1ULL << GoParser::HUANHANGG)
+ | (1ULL << GoParser::EOSSS))) != 0)) {
+ setState(362);
+ eoss();
+ setState(367);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ }
+ setState(369);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::BREAK)
+ | (1ULL << GoParser::FUNC)
+ | (1ULL << GoParser::INTERFACE)
+ | (1ULL << GoParser::SELECT)
+ | (1ULL << GoParser::DEFER)
+ | (1ULL << GoParser::GO)
+ | (1ULL << GoParser::MAP)
+ | (1ULL << GoParser::STRUCT)
+ | (1ULL << GoParser::CHAN)
+ | (1ULL << GoParser::GOTO)
+ | (1ULL << GoParser::SWITCH)
+ | (1ULL << GoParser::CONST)
+ | (1ULL << GoParser::FALLTHROUGH)
+ | (1ULL << GoParser::IF)
+ | (1ULL << GoParser::TYPE)
+ | (1ULL << GoParser::CONTINUE)
+ | (1ULL << GoParser::FOR)
+ | (1ULL << GoParser::RETURN)
+ | (1ULL << GoParser::VAR)
+ | (1ULL << GoParser::NIL_LIT)
+ | (1ULL << GoParser::IDENTIFIER)
+ | (1ULL << GoParser::L_PAREN)
+ | (1ULL << GoParser::L_CURLY)
+ | (1ULL << GoParser::L_BRACKET)
+ | (1ULL << GoParser::EXCLAMATION)
+ | (1ULL << GoParser::PLUS)
+ | (1ULL << GoParser::MINUS)
+ | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64))
+ | (1ULL << (GoParser::AMPERSAND - 64))
+ | (1ULL << (GoParser::RECEIVE - 64))
+ | (1ULL << (GoParser::DECIMAL_LIT - 64))
+ | (1ULL << (GoParser::BINARY_LIT - 64))
+ | (1ULL << (GoParser::OCTAL_LIT - 64))
+ | (1ULL << (GoParser::HEX_LIT - 64))
+ | (1ULL << (GoParser::FLOAT_LIT - 64))
+ | (1ULL << (GoParser::IMAGINARY_LIT - 64))
+ | (1ULL << (GoParser::RUNE_LIT - 64))
+ | (1ULL << (GoParser::RAW_STRING_LIT - 64))
+ | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) {
+ setState(368);
+ statementList();
+ }
+ setState(371);
+ match(GoParser::R_CURLY);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- StatementListContext ------------------------------------------------------------------
+
+GoParser::StatementListContext::StatementListContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+std::vector GoParser::StatementListContext::statement() {
+ return getRuleContexts();
+}
+
+GoParser::StatementContext* GoParser::StatementListContext::statement(size_t i) {
+ return getRuleContext(i);
+}
+
+std::vector GoParser::StatementListContext::eoss() {
+ return getRuleContexts();
+}
+
+GoParser::EossContext* GoParser::StatementListContext::eoss(size_t i) {
+ return getRuleContext(i);
+}
+
+
+size_t GoParser::StatementListContext::getRuleIndex() const {
+ return GoParser::RuleStatementList;
+}
+
+void GoParser::StatementListContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterStatementList(this);
+}
+
+void GoParser::StatementListContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitStatementList(this);
+}
+
+GoParser::StatementListContext* GoParser::statementList() {
+ StatementListContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 36, GoParser::RuleStatementList);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(379);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ do {
+ setState(373);
+ statement();
+ setState(375);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ do {
+ setState(374);
+ eoss();
+ setState(377);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ } while ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::SEMI)
+ | (1ULL << GoParser::HUANHANG)
+ | (1ULL << GoParser::HUANHANGG)
+ | (1ULL << GoParser::EOSSS))) != 0));
+ setState(381);
+ _errHandler->sync(this);
+ _la = _input->LA(1);
+ } while ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::BREAK)
+ | (1ULL << GoParser::FUNC)
+ | (1ULL << GoParser::INTERFACE)
+ | (1ULL << GoParser::SELECT)
+ | (1ULL << GoParser::DEFER)
+ | (1ULL << GoParser::GO)
+ | (1ULL << GoParser::MAP)
+ | (1ULL << GoParser::STRUCT)
+ | (1ULL << GoParser::CHAN)
+ | (1ULL << GoParser::GOTO)
+ | (1ULL << GoParser::SWITCH)
+ | (1ULL << GoParser::CONST)
+ | (1ULL << GoParser::FALLTHROUGH)
+ | (1ULL << GoParser::IF)
+ | (1ULL << GoParser::TYPE)
+ | (1ULL << GoParser::CONTINUE)
+ | (1ULL << GoParser::FOR)
+ | (1ULL << GoParser::RETURN)
+ | (1ULL << GoParser::VAR)
+ | (1ULL << GoParser::NIL_LIT)
+ | (1ULL << GoParser::IDENTIFIER)
+ | (1ULL << GoParser::L_PAREN)
+ | (1ULL << GoParser::L_CURLY)
+ | (1ULL << GoParser::L_BRACKET)
+ | (1ULL << GoParser::EXCLAMATION)
+ | (1ULL << GoParser::PLUS)
+ | (1ULL << GoParser::MINUS)
+ | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64))
+ | (1ULL << (GoParser::AMPERSAND - 64))
+ | (1ULL << (GoParser::RECEIVE - 64))
+ | (1ULL << (GoParser::DECIMAL_LIT - 64))
+ | (1ULL << (GoParser::BINARY_LIT - 64))
+ | (1ULL << (GoParser::OCTAL_LIT - 64))
+ | (1ULL << (GoParser::HEX_LIT - 64))
+ | (1ULL << (GoParser::FLOAT_LIT - 64))
+ | (1ULL << (GoParser::IMAGINARY_LIT - 64))
+ | (1ULL << (GoParser::RUNE_LIT - 64))
+ | (1ULL << (GoParser::RAW_STRING_LIT - 64))
+ | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0));
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- StatementContext ------------------------------------------------------------------
+
+GoParser::StatementContext::StatementContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::DeclarationContext* GoParser::StatementContext::declaration() {
+ return getRuleContext(0);
+}
+
+GoParser::LabeledStmtContext* GoParser::StatementContext::labeledStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::SimpleStmtContext* GoParser::StatementContext::simpleStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::GoStmtContext* GoParser::StatementContext::goStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::ReturnStmtContext* GoParser::StatementContext::returnStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::BreakStmtContext* GoParser::StatementContext::breakStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::ContinueStmtContext* GoParser::StatementContext::continueStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::GotoStmtContext* GoParser::StatementContext::gotoStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::FallthroughStmtContext* GoParser::StatementContext::fallthroughStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::BlockContext* GoParser::StatementContext::block() {
+ return getRuleContext(0);
+}
+
+GoParser::IfStmtContext* GoParser::StatementContext::ifStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::SwitchStmtContext* GoParser::StatementContext::switchStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::SelectStmtContext* GoParser::StatementContext::selectStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::ForStmtContext* GoParser::StatementContext::forStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::DeferStmtContext* GoParser::StatementContext::deferStmt() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::StatementContext::getRuleIndex() const {
+ return GoParser::RuleStatement;
+}
+
+void GoParser::StatementContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterStatement(this);
+}
+
+void GoParser::StatementContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitStatement(this);
+}
+
+GoParser::StatementContext* GoParser::statement() {
+ StatementContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 38, GoParser::RuleStatement);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ setState(398);
+ _errHandler->sync(this);
+ switch (getInterpreter()->adaptivePredict(_input, 29, _ctx)) {
+ case 1: {
+ enterOuterAlt(_localctx, 1);
+ setState(383);
+ declaration();
+ break;
+ }
+
+ case 2: {
+ enterOuterAlt(_localctx, 2);
+ setState(384);
+ labeledStmt();
+ break;
+ }
+
+ case 3: {
+ enterOuterAlt(_localctx, 3);
+ setState(385);
+ simpleStmt();
+ break;
+ }
+
+ case 4: {
+ enterOuterAlt(_localctx, 4);
+ setState(386);
+ goStmt();
+ break;
+ }
+
+ case 5: {
+ enterOuterAlt(_localctx, 5);
+ setState(387);
+ returnStmt();
+ break;
+ }
+
+ case 6: {
+ enterOuterAlt(_localctx, 6);
+ setState(388);
+ breakStmt();
+ break;
+ }
+
+ case 7: {
+ enterOuterAlt(_localctx, 7);
+ setState(389);
+ continueStmt();
+ break;
+ }
+
+ case 8: {
+ enterOuterAlt(_localctx, 8);
+ setState(390);
+ gotoStmt();
+ break;
+ }
+
+ case 9: {
+ enterOuterAlt(_localctx, 9);
+ setState(391);
+ fallthroughStmt();
+ break;
+ }
+
+ case 10: {
+ enterOuterAlt(_localctx, 10);
+ setState(392);
+ block();
+ break;
+ }
+
+ case 11: {
+ enterOuterAlt(_localctx, 11);
+ setState(393);
+ ifStmt();
+ break;
+ }
+
+ case 12: {
+ enterOuterAlt(_localctx, 12);
+ setState(394);
+ switchStmt();
+ break;
+ }
+
+ case 13: {
+ enterOuterAlt(_localctx, 13);
+ setState(395);
+ selectStmt();
+ break;
+ }
+
+ case 14: {
+ enterOuterAlt(_localctx, 14);
+ setState(396);
+ forStmt();
+ break;
+ }
+
+ case 15: {
+ enterOuterAlt(_localctx, 15);
+ setState(397);
+ deferStmt();
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- SimpleStmtContext ------------------------------------------------------------------
+
+GoParser::SimpleStmtContext::SimpleStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::SendStmtContext* GoParser::SimpleStmtContext::sendStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::IncDecStmtContext* GoParser::SimpleStmtContext::incDecStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::AssignmentContext* GoParser::SimpleStmtContext::assignment() {
+ return getRuleContext(0);
+}
+
+GoParser::ExpressionStmtContext* GoParser::SimpleStmtContext::expressionStmt() {
+ return getRuleContext(0);
+}
+
+GoParser::ShortVarDeclContext* GoParser::SimpleStmtContext::shortVarDecl() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::SimpleStmtContext::getRuleIndex() const {
+ return GoParser::RuleSimpleStmt;
+}
+
+void GoParser::SimpleStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterSimpleStmt(this);
+}
+
+void GoParser::SimpleStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitSimpleStmt(this);
+}
+
+GoParser::SimpleStmtContext* GoParser::simpleStmt() {
+ SimpleStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 40, GoParser::RuleSimpleStmt);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ setState(405);
+ _errHandler->sync(this);
+ switch (getInterpreter()->adaptivePredict(_input, 30, _ctx)) {
+ case 1: {
+ enterOuterAlt(_localctx, 1);
+ setState(400);
+ sendStmt();
+ break;
+ }
+
+ case 2: {
+ enterOuterAlt(_localctx, 2);
+ setState(401);
+ incDecStmt();
+ break;
+ }
+
+ case 3: {
+ enterOuterAlt(_localctx, 3);
+ setState(402);
+ assignment();
+ break;
+ }
+
+ case 4: {
+ enterOuterAlt(_localctx, 4);
+ setState(403);
+ expressionStmt();
+ break;
+ }
+
+ case 5: {
+ enterOuterAlt(_localctx, 5);
+ setState(404);
+ shortVarDecl();
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ExpressionStmtContext ------------------------------------------------------------------
+
+GoParser::ExpressionStmtContext::ExpressionStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::ExpressionContext* GoParser::ExpressionStmtContext::expression() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::ExpressionStmtContext::getRuleIndex() const {
+ return GoParser::RuleExpressionStmt;
+}
+
+void GoParser::ExpressionStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterExpressionStmt(this);
+}
+
+void GoParser::ExpressionStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitExpressionStmt(this);
+}
+
+GoParser::ExpressionStmtContext* GoParser::expressionStmt() {
+ ExpressionStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 42, GoParser::RuleExpressionStmt);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(407);
+ expression(0);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- SendStmtContext ------------------------------------------------------------------
+
+GoParser::SendStmtContext::SendStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::SendStmtContext::RECEIVE() {
+ return getToken(GoParser::RECEIVE, 0);
+}
+
+std::vector GoParser::SendStmtContext::expression() {
+ return getRuleContexts();
+}
+
+GoParser::ExpressionContext* GoParser::SendStmtContext::expression(size_t i) {
+ return getRuleContext(i);
+}
+
+
+size_t GoParser::SendStmtContext::getRuleIndex() const {
+ return GoParser::RuleSendStmt;
+}
+
+void GoParser::SendStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterSendStmt(this);
+}
+
+void GoParser::SendStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitSendStmt(this);
+}
+
+GoParser::SendStmtContext* GoParser::sendStmt() {
+ SendStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 44, GoParser::RuleSendStmt);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(409);
+ antlrcpp::downCast(_localctx)->channel = expression(0);
+ setState(410);
+ match(GoParser::RECEIVE);
+ setState(411);
+ expression(0);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- IncDecStmtContext ------------------------------------------------------------------
+
+GoParser::IncDecStmtContext::IncDecStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::ExpressionContext* GoParser::IncDecStmtContext::expression() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::IncDecStmtContext::PLUS_PLUS() {
+ return getToken(GoParser::PLUS_PLUS, 0);
+}
+
+tree::TerminalNode* GoParser::IncDecStmtContext::MINUS_MINUS() {
+ return getToken(GoParser::MINUS_MINUS, 0);
+}
+
+
+size_t GoParser::IncDecStmtContext::getRuleIndex() const {
+ return GoParser::RuleIncDecStmt;
+}
+
+void GoParser::IncDecStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterIncDecStmt(this);
+}
+
+void GoParser::IncDecStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitIncDecStmt(this);
+}
+
+GoParser::IncDecStmtContext* GoParser::incDecStmt() {
+ IncDecStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 46, GoParser::RuleIncDecStmt);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(413);
+ expression(0);
+ setState(414);
+ _la = _input->LA(1);
+ if (!(_la == GoParser::PLUS_PLUS
+
+ || _la == GoParser::MINUS_MINUS)) {
+ _errHandler->recoverInline(this);
+ }
+ else {
+ _errHandler->reportMatch(this);
+ consume();
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- AssignmentContext ------------------------------------------------------------------
+
+GoParser::AssignmentContext::AssignmentContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+std::vector GoParser::AssignmentContext::expressionList() {
+ return getRuleContexts();
+}
+
+GoParser::ExpressionListContext* GoParser::AssignmentContext::expressionList(size_t i) {
+ return getRuleContext(i);
+}
+
+GoParser::Assign_opContext* GoParser::AssignmentContext::assign_op() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::AssignmentContext::getRuleIndex() const {
+ return GoParser::RuleAssignment;
+}
+
+void GoParser::AssignmentContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterAssignment(this);
+}
+
+void GoParser::AssignmentContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitAssignment(this);
+}
+
+GoParser::AssignmentContext* GoParser::assignment() {
+ AssignmentContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 48, GoParser::RuleAssignment);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(416);
+ expressionList();
+ setState(417);
+ assign_op();
+ setState(418);
+ expressionList();
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- Assign_opContext ------------------------------------------------------------------
+
+GoParser::Assign_opContext::Assign_opContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::ASSIGN() {
+ return getToken(GoParser::ASSIGN, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::PLUS() {
+ return getToken(GoParser::PLUS, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::MINUS() {
+ return getToken(GoParser::MINUS, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::OR() {
+ return getToken(GoParser::OR, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::CARET() {
+ return getToken(GoParser::CARET, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::STAR() {
+ return getToken(GoParser::STAR, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::DIV() {
+ return getToken(GoParser::DIV, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::MOD() {
+ return getToken(GoParser::MOD, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::LSHIFT() {
+ return getToken(GoParser::LSHIFT, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::RSHIFT() {
+ return getToken(GoParser::RSHIFT, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::AMPERSAND() {
+ return getToken(GoParser::AMPERSAND, 0);
+}
+
+tree::TerminalNode* GoParser::Assign_opContext::BIT_CLEAR() {
+ return getToken(GoParser::BIT_CLEAR, 0);
+}
+
+
+size_t GoParser::Assign_opContext::getRuleIndex() const {
+ return GoParser::RuleAssign_op;
+}
+
+void GoParser::Assign_opContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterAssign_op(this);
+}
+
+void GoParser::Assign_opContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitAssign_op(this);
+}
+
+GoParser::Assign_opContext* GoParser::assign_op() {
+ Assign_opContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 50, GoParser::RuleAssign_op);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(421);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (((((_la - 54) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 54)) & ((1ULL << (GoParser::OR - 54))
+ | (1ULL << (GoParser::DIV - 54))
+ | (1ULL << (GoParser::MOD - 54))
+ | (1ULL << (GoParser::LSHIFT - 54))
+ | (1ULL << (GoParser::RSHIFT - 54))
+ | (1ULL << (GoParser::BIT_CLEAR - 54))
+ | (1ULL << (GoParser::PLUS - 54))
+ | (1ULL << (GoParser::MINUS - 54))
+ | (1ULL << (GoParser::CARET - 54))
+ | (1ULL << (GoParser::STAR - 54))
+ | (1ULL << (GoParser::AMPERSAND - 54)))) != 0)) {
+ setState(420);
+ _la = _input->LA(1);
+ if (!(((((_la - 54) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 54)) & ((1ULL << (GoParser::OR - 54))
+ | (1ULL << (GoParser::DIV - 54))
+ | (1ULL << (GoParser::MOD - 54))
+ | (1ULL << (GoParser::LSHIFT - 54))
+ | (1ULL << (GoParser::RSHIFT - 54))
+ | (1ULL << (GoParser::BIT_CLEAR - 54))
+ | (1ULL << (GoParser::PLUS - 54))
+ | (1ULL << (GoParser::MINUS - 54))
+ | (1ULL << (GoParser::CARET - 54))
+ | (1ULL << (GoParser::STAR - 54))
+ | (1ULL << (GoParser::AMPERSAND - 54)))) != 0))) {
+ _errHandler->recoverInline(this);
+ }
+ else {
+ _errHandler->reportMatch(this);
+ consume();
+ }
+ }
+ setState(423);
+ match(GoParser::ASSIGN);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ShortVarDeclContext ------------------------------------------------------------------
+
+GoParser::ShortVarDeclContext::ShortVarDeclContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+GoParser::IdentifierListContext* GoParser::ShortVarDeclContext::identifierList() {
+ return getRuleContext(0);
+}
+
+tree::TerminalNode* GoParser::ShortVarDeclContext::DECLARE_ASSIGN() {
+ return getToken(GoParser::DECLARE_ASSIGN, 0);
+}
+
+GoParser::ExpressionListContext* GoParser::ShortVarDeclContext::expressionList() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::ShortVarDeclContext::getRuleIndex() const {
+ return GoParser::RuleShortVarDecl;
+}
+
+void GoParser::ShortVarDeclContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterShortVarDecl(this);
+}
+
+void GoParser::ShortVarDeclContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitShortVarDecl(this);
+}
+
+GoParser::ShortVarDeclContext* GoParser::shortVarDecl() {
+ ShortVarDeclContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 52, GoParser::RuleShortVarDecl);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(425);
+ identifierList();
+ setState(426);
+ match(GoParser::DECLARE_ASSIGN);
+ setState(427);
+ expressionList();
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- EmptyStmtContext ------------------------------------------------------------------
+
+GoParser::EmptyStmtContext::EmptyStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::EmptyStmtContext::EOSSS() {
+ return getToken(GoParser::EOSSS, 0);
+}
+
+tree::TerminalNode* GoParser::EmptyStmtContext::SEMI() {
+ return getToken(GoParser::SEMI, 0);
+}
+
+
+size_t GoParser::EmptyStmtContext::getRuleIndex() const {
+ return GoParser::RuleEmptyStmt;
+}
+
+void GoParser::EmptyStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterEmptyStmt(this);
+}
+
+void GoParser::EmptyStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitEmptyStmt(this);
+}
+
+GoParser::EmptyStmtContext* GoParser::emptyStmt() {
+ EmptyStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 54, GoParser::RuleEmptyStmt);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(429);
+ _la = _input->LA(1);
+ if (!(_la == GoParser::SEMI
+
+ || _la == GoParser::EOSSS)) {
+ _errHandler->recoverInline(this);
+ }
+ else {
+ _errHandler->reportMatch(this);
+ consume();
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- LabeledStmtContext ------------------------------------------------------------------
+
+GoParser::LabeledStmtContext::LabeledStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::LabeledStmtContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+tree::TerminalNode* GoParser::LabeledStmtContext::COLON() {
+ return getToken(GoParser::COLON, 0);
+}
+
+GoParser::StatementContext* GoParser::LabeledStmtContext::statement() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::LabeledStmtContext::getRuleIndex() const {
+ return GoParser::RuleLabeledStmt;
+}
+
+void GoParser::LabeledStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterLabeledStmt(this);
+}
+
+void GoParser::LabeledStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitLabeledStmt(this);
+}
+
+GoParser::LabeledStmtContext* GoParser::labeledStmt() {
+ LabeledStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 56, GoParser::RuleLabeledStmt);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(431);
+ match(GoParser::IDENTIFIER);
+ setState(432);
+ match(GoParser::COLON);
+ setState(434);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::BREAK)
+ | (1ULL << GoParser::FUNC)
+ | (1ULL << GoParser::INTERFACE)
+ | (1ULL << GoParser::SELECT)
+ | (1ULL << GoParser::DEFER)
+ | (1ULL << GoParser::GO)
+ | (1ULL << GoParser::MAP)
+ | (1ULL << GoParser::STRUCT)
+ | (1ULL << GoParser::CHAN)
+ | (1ULL << GoParser::GOTO)
+ | (1ULL << GoParser::SWITCH)
+ | (1ULL << GoParser::CONST)
+ | (1ULL << GoParser::FALLTHROUGH)
+ | (1ULL << GoParser::IF)
+ | (1ULL << GoParser::TYPE)
+ | (1ULL << GoParser::CONTINUE)
+ | (1ULL << GoParser::FOR)
+ | (1ULL << GoParser::RETURN)
+ | (1ULL << GoParser::VAR)
+ | (1ULL << GoParser::NIL_LIT)
+ | (1ULL << GoParser::IDENTIFIER)
+ | (1ULL << GoParser::L_PAREN)
+ | (1ULL << GoParser::L_CURLY)
+ | (1ULL << GoParser::L_BRACKET)
+ | (1ULL << GoParser::EXCLAMATION)
+ | (1ULL << GoParser::PLUS)
+ | (1ULL << GoParser::MINUS)
+ | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64))
+ | (1ULL << (GoParser::AMPERSAND - 64))
+ | (1ULL << (GoParser::RECEIVE - 64))
+ | (1ULL << (GoParser::DECIMAL_LIT - 64))
+ | (1ULL << (GoParser::BINARY_LIT - 64))
+ | (1ULL << (GoParser::OCTAL_LIT - 64))
+ | (1ULL << (GoParser::HEX_LIT - 64))
+ | (1ULL << (GoParser::FLOAT_LIT - 64))
+ | (1ULL << (GoParser::IMAGINARY_LIT - 64))
+ | (1ULL << (GoParser::RUNE_LIT - 64))
+ | (1ULL << (GoParser::RAW_STRING_LIT - 64))
+ | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) {
+ setState(433);
+ statement();
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ReturnStmtContext ------------------------------------------------------------------
+
+GoParser::ReturnStmtContext::ReturnStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::ReturnStmtContext::RETURN() {
+ return getToken(GoParser::RETURN, 0);
+}
+
+GoParser::ExpressionListContext* GoParser::ReturnStmtContext::expressionList() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::ReturnStmtContext::getRuleIndex() const {
+ return GoParser::RuleReturnStmt;
+}
+
+void GoParser::ReturnStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterReturnStmt(this);
+}
+
+void GoParser::ReturnStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitReturnStmt(this);
+}
+
+GoParser::ReturnStmtContext* GoParser::returnStmt() {
+ ReturnStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 58, GoParser::RuleReturnStmt);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(436);
+ match(GoParser::RETURN);
+ setState(438);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if ((((_la & ~ 0x3fULL) == 0) &&
+ ((1ULL << _la) & ((1ULL << GoParser::FUNC)
+ | (1ULL << GoParser::INTERFACE)
+ | (1ULL << GoParser::MAP)
+ | (1ULL << GoParser::STRUCT)
+ | (1ULL << GoParser::CHAN)
+ | (1ULL << GoParser::NIL_LIT)
+ | (1ULL << GoParser::IDENTIFIER)
+ | (1ULL << GoParser::L_PAREN)
+ | (1ULL << GoParser::L_BRACKET)
+ | (1ULL << GoParser::EXCLAMATION)
+ | (1ULL << GoParser::PLUS)
+ | (1ULL << GoParser::MINUS)
+ | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) &&
+ ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64))
+ | (1ULL << (GoParser::AMPERSAND - 64))
+ | (1ULL << (GoParser::RECEIVE - 64))
+ | (1ULL << (GoParser::DECIMAL_LIT - 64))
+ | (1ULL << (GoParser::BINARY_LIT - 64))
+ | (1ULL << (GoParser::OCTAL_LIT - 64))
+ | (1ULL << (GoParser::HEX_LIT - 64))
+ | (1ULL << (GoParser::FLOAT_LIT - 64))
+ | (1ULL << (GoParser::IMAGINARY_LIT - 64))
+ | (1ULL << (GoParser::RUNE_LIT - 64))
+ | (1ULL << (GoParser::RAW_STRING_LIT - 64))
+ | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) {
+ setState(437);
+ expressionList();
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- BreakStmtContext ------------------------------------------------------------------
+
+GoParser::BreakStmtContext::BreakStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::BreakStmtContext::BREAK() {
+ return getToken(GoParser::BREAK, 0);
+}
+
+tree::TerminalNode* GoParser::BreakStmtContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+
+size_t GoParser::BreakStmtContext::getRuleIndex() const {
+ return GoParser::RuleBreakStmt;
+}
+
+void GoParser::BreakStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterBreakStmt(this);
+}
+
+void GoParser::BreakStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitBreakStmt(this);
+}
+
+GoParser::BreakStmtContext* GoParser::breakStmt() {
+ BreakStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 60, GoParser::RuleBreakStmt);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(440);
+ match(GoParser::BREAK);
+ setState(442);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == GoParser::IDENTIFIER) {
+ setState(441);
+ match(GoParser::IDENTIFIER);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- ContinueStmtContext ------------------------------------------------------------------
+
+GoParser::ContinueStmtContext::ContinueStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::ContinueStmtContext::CONTINUE() {
+ return getToken(GoParser::CONTINUE, 0);
+}
+
+tree::TerminalNode* GoParser::ContinueStmtContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+
+size_t GoParser::ContinueStmtContext::getRuleIndex() const {
+ return GoParser::RuleContinueStmt;
+}
+
+void GoParser::ContinueStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterContinueStmt(this);
+}
+
+void GoParser::ContinueStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitContinueStmt(this);
+}
+
+GoParser::ContinueStmtContext* GoParser::continueStmt() {
+ ContinueStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 62, GoParser::RuleContinueStmt);
+ size_t _la = 0;
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(444);
+ match(GoParser::CONTINUE);
+ setState(446);
+ _errHandler->sync(this);
+
+ _la = _input->LA(1);
+ if (_la == GoParser::IDENTIFIER) {
+ setState(445);
+ match(GoParser::IDENTIFIER);
+ }
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- GotoStmtContext ------------------------------------------------------------------
+
+GoParser::GotoStmtContext::GotoStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::GotoStmtContext::GOTO() {
+ return getToken(GoParser::GOTO, 0);
+}
+
+tree::TerminalNode* GoParser::GotoStmtContext::IDENTIFIER() {
+ return getToken(GoParser::IDENTIFIER, 0);
+}
+
+
+size_t GoParser::GotoStmtContext::getRuleIndex() const {
+ return GoParser::RuleGotoStmt;
+}
+
+void GoParser::GotoStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterGotoStmt(this);
+}
+
+void GoParser::GotoStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitGotoStmt(this);
+}
+
+GoParser::GotoStmtContext* GoParser::gotoStmt() {
+ GotoStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 64, GoParser::RuleGotoStmt);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(448);
+ match(GoParser::GOTO);
+ setState(449);
+ match(GoParser::IDENTIFIER);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- FallthroughStmtContext ------------------------------------------------------------------
+
+GoParser::FallthroughStmtContext::FallthroughStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::FallthroughStmtContext::FALLTHROUGH() {
+ return getToken(GoParser::FALLTHROUGH, 0);
+}
+
+
+size_t GoParser::FallthroughStmtContext::getRuleIndex() const {
+ return GoParser::RuleFallthroughStmt;
+}
+
+void GoParser::FallthroughStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterFallthroughStmt(this);
+}
+
+void GoParser::FallthroughStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitFallthroughStmt(this);
+}
+
+GoParser::FallthroughStmtContext* GoParser::fallthroughStmt() {
+ FallthroughStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 66, GoParser::RuleFallthroughStmt);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(451);
+ match(GoParser::FALLTHROUGH);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- DeferStmtContext ------------------------------------------------------------------
+
+GoParser::DeferStmtContext::DeferStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::DeferStmtContext::DEFER() {
+ return getToken(GoParser::DEFER, 0);
+}
+
+GoParser::ExpressionContext* GoParser::DeferStmtContext::expression() {
+ return getRuleContext(0);
+}
+
+
+size_t GoParser::DeferStmtContext::getRuleIndex() const {
+ return GoParser::RuleDeferStmt;
+}
+
+void GoParser::DeferStmtContext::enterRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->enterDeferStmt(this);
+}
+
+void GoParser::DeferStmtContext::exitRule(tree::ParseTreeListener *listener) {
+ auto parserListener = dynamic_cast(listener);
+ if (parserListener != nullptr)
+ parserListener->exitDeferStmt(this);
+}
+
+GoParser::DeferStmtContext* GoParser::deferStmt() {
+ DeferStmtContext *_localctx = _tracker.createInstance(_ctx, getState());
+ enterRule(_localctx, 68, GoParser::RuleDeferStmt);
+
+#if __cplusplus > 201703L
+ auto onExit = finally([=, this] {
+#else
+ auto onExit = finally([=] {
+#endif
+ exitRule();
+ });
+ try {
+ enterOuterAlt(_localctx, 1);
+ setState(453);
+ match(GoParser::DEFER);
+ setState(454);
+ expression(0);
+
+ }
+ catch (RecognitionException &e) {
+ _errHandler->reportError(this, e);
+ _localctx->exception = std::current_exception();
+ _errHandler->recover(this, _localctx->exception);
+ }
+
+ return _localctx;
+}
+
+//----------------- IfStmtContext ------------------------------------------------------------------
+
+GoParser::IfStmtContext::IfStmtContext(ParserRuleContext *parent, size_t invokingState)
+ : ParserRuleContext(parent, invokingState) {
+}
+
+tree::TerminalNode* GoParser::IfStmtContext::IF() {
+ return getToken(GoParser::IF, 0);
+}
+
+std::vector GoParser::IfStmtContext::block() {
+ return getRuleContexts();
+}
+
+GoParser::BlockContext* GoParser::IfStmtContext::block(size_t i) {
+ return getRuleContext