yini-parser 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/LICENSE +201 -0
  3. package/README.md +120 -0
  4. package/dist/src/YINI.js +122 -0
  5. package/dist/src/config/env.js +15 -0
  6. package/dist/src/core/ErrorDataHandler.js +207 -0
  7. package/dist/src/core/YINIVisitor.js +856 -0
  8. package/dist/src/core/objectBuilder.js +166 -0
  9. package/dist/src/core/types.js +36 -0
  10. package/dist/src/grammar/YiniLexer.js +370 -0
  11. package/dist/src/grammar/YiniParser.js +2106 -0
  12. package/dist/src/grammar/YiniParserVisitor.js +14 -0
  13. package/dist/src/index.js +189 -0
  14. package/dist/src/parseEntry.js +155 -0
  15. package/dist/src/parsers/extractHeaderParts.js +103 -0
  16. package/dist/src/parsers/extractSignificantYiniLine.js +68 -0
  17. package/dist/src/parsers/parseBoolean.js +12 -0
  18. package/dist/src/parsers/parseNull.js +11 -0
  19. package/dist/src/parsers/parseNumber.js +49 -0
  20. package/dist/src/parsers/parseSectionHeader.js +111 -0
  21. package/dist/src/parsers/parseString.js +40 -0
  22. package/dist/src/utils/pathAndFileName.js +15 -0
  23. package/dist/src/utils/string.js +97 -0
  24. package/dist/src/utils/system.js +23 -0
  25. package/dist/src/yiniHelpers.js +141 -0
  26. package/dist/tests/integration/1-core-parsing/parse-bigger-section-nesting-as-object.test.js +83 -0
  27. package/dist/tests/integration/1-core-parsing/parse-section-nesting-w-classic-markers.test.js +170 -0
  28. package/dist/tests/integration/1-core-parsing/parse-section-nesting-w-nsh-markers.test.js +27 -0
  29. package/dist/tests/integration/1-core-parsing/read some values from level 1 and 2.test.js +77 -0
  30. package/dist/tests/integration/1-core-parsing/throw on bad section heads.test.js +162 -0
  31. package/dist/tests/integration/10-special-validation-modes/validation-modes.test.js +38 -0
  32. package/dist/tests/integration/2-file-structure-and-error/able to parse mixed case filenames.test.js +72 -0
  33. package/dist/tests/integration/2-file-structure-and-error/throw error on bad file extensions.test.js +36 -0
  34. package/dist/tests/integration/2-file-structure-and-error/throw error parsing bad content.test.js +80 -0
  35. package/dist/tests/smoke/A-general-smoke.test.js +259 -0
  36. package/dist/tests/smoke/B-parse-inline-smoke.test.js +270 -0
  37. package/dist/tests/smoke/C-traverse-file-smoke.test.js +141 -0
  38. package/dist/tests/smoke/D-parse-file-smoke.test.js +134 -0
  39. package/dist/tests/unit/parsers/extractHeaderParts.unit.test.js +490 -0
  40. package/dist/tests/unit/parsers/parseSectionHeader-classic.unit.test.js +421 -0
  41. package/dist/tests/unit/parsers/parseSectionHeader-nsh.unit.test.js +436 -0
  42. package/dist/tests/unit/parsers/parseSectionHeader-throw-on-invalid.unit.test.js +168 -0
  43. package/dist/tests/unit/utils/utils-pathAndFileName.unit.test.js +80 -0
  44. package/dist/tests/unit/utils/utils-string.unit.test.js +185 -0
  45. package/dist/tests/unit/yiniHelpers.unit.test.js +306 -0
  46. package/package.json +94 -0
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.constructFinalObject = void 0;
4
+ const env_1 = require("../config/env");
5
+ const system_1 = require("../utils/system");
6
+ /**
7
+ * Construct the final result of a JavaScript Object.
8
+ */
9
+ const constructFinalObject = (syntaxTreeC, errorHandler) => {
10
+ (0, system_1.debugPrint)('-> constructFinalObject(..)');
11
+ const bulder = new Builder(syntaxTreeC, errorHandler);
12
+ if ((0, env_1.isDebug)()) {
13
+ console.log('Argument, syntaxTreeC:');
14
+ (0, system_1.printObject)(syntaxTreeC);
15
+ }
16
+ const jsObject = bulder.doCheckAndBuild();
17
+ (0, system_1.debugPrint)('<- About to leave constructFinalObject(..)');
18
+ if ((0, env_1.isDebug)()) {
19
+ console.log('Returning, jsObject:');
20
+ (0, system_1.printObject)(syntaxTreeC);
21
+ }
22
+ return jsObject;
23
+ };
24
+ exports.constructFinalObject = constructFinalObject;
25
+ class Builder {
26
+ constructor(syntaxTreeC, errorHandler) {
27
+ (0, system_1.debugPrint)('-> Builder: constructor(..)');
28
+ this.syntaxTreeC = syntaxTreeC;
29
+ this.errorHandler = errorHandler;
30
+ }
31
+ doCheckAndBuild() {
32
+ (0, system_1.debugPrint)('-> Builder: doCheckAndBuild(..)');
33
+ if (!this.syntaxTreeC) {
34
+ // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
35
+ this.errorHandler.pushOrBail(null, 'Fatal-Error', 'SyntaxTreeC is undefined', 'This is most likely caused by an internal error somewhere. The process cannot recover fully from this, sorry.');
36
+ }
37
+ const fullSubTreeList = this.buildFullSubTrees(this.syntaxTreeC);
38
+ const jsObject = this.buildObjectFromList(fullSubTreeList);
39
+ return jsObject;
40
+ }
41
+ buildFullSubTrees(syntaxTreeC) {
42
+ (0, system_1.debugPrint)('-> Builder: buildFullSubTrees(..)');
43
+ (0, env_1.isDebug)() && console.log();
44
+ const fullSubTreeList = []; // List of FULL sub-trees.
45
+ // Current Working Full Sub-Tree (starting at level 1).
46
+ let workingFullSubTree = syntaxTreeC._syntaxTree[0]; // (!) Any tree MUST START at level 1.
47
+ (0, system_1.debugPrint)(`Setted new workingFullSubTree, from syntaxTreeC._syntaxTree[0]`);
48
+ const len = syntaxTreeC._syntaxTree.length;
49
+ for (let i = 1; i < len; i++) {
50
+ const currentChainC = syntaxTreeC._syntaxTree[i];
51
+ const level = currentChainC.originLevel;
52
+ const nestingIndex = level - 1; // For debugging purposes.
53
+ const chain = currentChainC.chain; // For debugging purposes.
54
+ (0, system_1.debugPrint)(`Got new chain from syntaxTreeC._syntaxTree[${i}] to be mounted onto parent...`);
55
+ (0, system_1.debugPrint)('* level: ' + level + ' (i=' + i + '), chain: ' + chain);
56
+ if (level === 1) {
57
+ (0, system_1.debugPrint)('HIT - Detected that currentChain starts with level 1');
58
+ fullSubTreeList.push(workingFullSubTree);
59
+ (0, system_1.debugPrint)('The workingFullSubTree is finished, pushed it to the list.');
60
+ workingFullSubTree = syntaxTreeC._syntaxTree[i]; // (!) The tree MUST START at level 1.
61
+ (0, system_1.debugPrint)(`Setted new workingFullSubTree, from syntaxTreeC._syntaxTree[${i}]`);
62
+ }
63
+ else {
64
+ (0, system_1.debugPrint)('About to mount currentChain onto workingFullSubTree at correct level...');
65
+ workingFullSubTree = this.mountChainOntoLevel(currentChainC, workingFullSubTree);
66
+ }
67
+ (0, system_1.debugPrint)();
68
+ }
69
+ fullSubTreeList.push(workingFullSubTree);
70
+ if ((0, env_1.isDebug)()) {
71
+ console.log();
72
+ console.log('--- fullSubTreeList: (list of FULL sub-trees.) -------');
73
+ (0, system_1.printObject)(fullSubTreeList);
74
+ console.log();
75
+ }
76
+ return fullSubTreeList;
77
+ }
78
+ mountChainOntoLevel(chainC, workingSubTree) {
79
+ (0, system_1.debugPrint)('-> Builder: mountChainOntoLevel(..)');
80
+ if (chainC.originLevel > 1) {
81
+ // NOP
82
+ }
83
+ else {
84
+ // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
85
+ this.errorHandler.pushOrBail(null, 'Fatal-Error', 'Internal-Error: Detected incorrect chain in mountChainOntoLevel(..), start section has level: ' +
86
+ chainC.originLevel, 'The (chain) must start with a section level higher than 1', '' + (0, system_1.printObject)(chainC));
87
+ }
88
+ if (workingSubTree.originLevel != 1) {
89
+ // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
90
+ this.errorHandler.pushOrBail(null, 'Fatal-Error', 'Internal-Error: Detected incorrect full sub-tree in mountChainOntoLevel(..), start section has level: ' +
91
+ chainC.originLevel, 'A full sub-tree (chain) must start with a section at level 1', '' + (0, system_1.printObject)(chainC));
92
+ }
93
+ const chain = chainC.chain;
94
+ const targetLevel = chainC.originLevel;
95
+ if ((0, env_1.isDebug)()) {
96
+ (0, system_1.debugPrint)('Target level = ' + targetLevel);
97
+ (0, system_1.debugPrint)(`The chain to mount: (onto level: ${targetLevel})`);
98
+ (0, system_1.printObject)(chain);
99
+ (0, system_1.debugPrint)('--- workingFullSubTree: -------');
100
+ (0, system_1.debugPrint)('Before mounting onto workingSubTree.chain:');
101
+ (0, system_1.printObject)(workingSubTree.chain);
102
+ }
103
+ (0, system_1.debugPrint)('Mount currentChain onto workingFullSubTree.');
104
+ workingSubTree.chain = mountObjectAtLevel(workingSubTree.chain, chain, targetLevel);
105
+ if ((0, env_1.isDebug)()) {
106
+ (0, system_1.debugPrint)('After mounting onto workingSubTree.chain:');
107
+ (0, system_1.printObject)(workingSubTree.chain);
108
+ (0, system_1.debugPrint)('----------');
109
+ }
110
+ (0, system_1.debugPrint)('<- Builder: mountChainOntoLevel(..)');
111
+ return workingSubTree;
112
+ }
113
+ // Contruct the final JS object from the list of full sub-trees.
114
+ buildObjectFromList(fullSubTreeList) {
115
+ (0, system_1.debugPrint)('-> Builder: buildObjectFromList(..)');
116
+ const jsObject = {};
117
+ for (const chainC of fullSubTreeList) {
118
+ if (chainC.originLevel === 1) {
119
+ if ((0, env_1.isDebug)()) {
120
+ console.log('About to assign chainC.chain:');
121
+ console.log(chainC.chain);
122
+ }
123
+ Object.assign(jsObject, chainC.chain);
124
+ if ((0, env_1.isDebug)()) {
125
+ console.log('After, jsObject:');
126
+ console.log(jsObject);
127
+ }
128
+ }
129
+ else {
130
+ // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
131
+ this.errorHandler.pushOrBail(null, 'Fatal-Error', 'Internal-Error: Detected incorrect full sub-tree in buildObjectFromList(..), start section has level: ' +
132
+ chainC.originLevel, 'A full sub-tree (chain) must start with a section at level 1', '' + (0, system_1.printObject)(chainC));
133
+ }
134
+ }
135
+ return jsObject;
136
+ }
137
+ }
138
+ /**
139
+ * Mounts objectDest onto the first object at the given depth (level is
140
+ * 1-based) in objectSrc.
141
+ * @return Returns a new object without mutating input objects.
142
+ */
143
+ const mountObjectAtLevel = (objectSrc, objectDest, level) => {
144
+ // Deep copy to avoid mutating the input.
145
+ const result = JSON.parse(JSON.stringify(objectSrc));
146
+ let current = result;
147
+ let currentLevel = 1;
148
+ // Traverse down the first object path until the desired level.
149
+ while (currentLevel < level) {
150
+ // Get all keys in current object.
151
+ const keys = Object.keys(current);
152
+ // Find first key where value is a plain object (not array).
153
+ const nextKey = keys.find((key) => current[key] &&
154
+ typeof current[key] === 'object' &&
155
+ !Array.isArray(current[key]));
156
+ if (!nextKey) {
157
+ // Could not reach the specified depth.
158
+ return result;
159
+ }
160
+ current = current[nextKey];
161
+ currentLevel++;
162
+ }
163
+ // Mount objectDest onto the object at the required level.
164
+ Object.assign(current, objectDest);
165
+ return result;
166
+ };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /*
3
+ A Full Nested Linear Branch - (in tree data structures):
4
+ - A branch in a tree where each section has at most one nested section at each level (never more at each level).
5
+ - Forms a straight path: each section (node) has exactly one nested section, and this continues through multiple levels—like a linked chain.
6
+ - If a section has a nested section, the nesting must form a direct sequence. For example: Section level 3 → Section level 4 → Section level 5, and so on.
7
+ - Can be any branch within a tree (not just the root), or even the whole tree in some cases.
8
+ - Each section includes its own members at that level.
9
+ - Represents a single path from the starting section to the last (deepest) nested section.
10
+ - In other words, it’s a branch that forms a continuous, unbranched sequence of nested sections.
11
+
12
+ Example:
13
+ "
14
+ ^ Section1
15
+ sValue = 1
16
+ ^^ Section11
17
+ sValue = 11
18
+ bValue = OFF
19
+ ^ Section2
20
+ sValue = 2
21
+ "
22
+
23
+ Has two Nested Linear Branches:
24
+ 1:
25
+ ^ Section1
26
+ sValue = 1
27
+ ^^ Section11
28
+ sValue = 11
29
+ bValue = OFF
30
+
31
+ 2:
32
+ ^ Section2
33
+ sValue = 2
34
+
35
+ */
36
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Generated from grammar/v1.0.0-beta.7x/YiniLexer.g4 by ANTLR 4.13.2
4
+ // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols
5
+ const antlr4_1 = require("antlr4");
6
+ class YiniLexer extends antlr4_1.Lexer {
7
+ constructor(input) {
8
+ super(input);
9
+ this._interp = new antlr4_1.LexerATNSimulator(this, YiniLexer._ATN, YiniLexer.DecisionsToDFA, new antlr4_1.PredictionContextCache());
10
+ }
11
+ get grammarFileName() { return "YiniLexer.g4"; }
12
+ get literalNames() { return YiniLexer.literalNames; }
13
+ get symbolicNames() { return YiniLexer.symbolicNames; }
14
+ get ruleNames() { return YiniLexer.ruleNames; }
15
+ get serializedATN() { return YiniLexer._serializedATN; }
16
+ get channelNames() { return YiniLexer.channelNames; }
17
+ get modeNames() { return YiniLexer.modeNames; }
18
+ static get _ATN() {
19
+ if (!YiniLexer.__ATN) {
20
+ YiniLexer.__ATN = new antlr4_1.ATNDeserializer().deserialize(YiniLexer._serializedATN);
21
+ }
22
+ return YiniLexer.__ATN;
23
+ }
24
+ }
25
+ YiniLexer.YINI_MARKER = 1;
26
+ YiniLexer.SECTION_HEAD = 2;
27
+ YiniLexer.TERMINAL_TOKEN = 3;
28
+ YiniLexer.SS = 4;
29
+ YiniLexer.EUR = 5;
30
+ YiniLexer.CARET = 6;
31
+ YiniLexer.TILDE = 7;
32
+ YiniLexer.GT = 8;
33
+ YiniLexer.LT = 9;
34
+ YiniLexer.EQ = 10;
35
+ YiniLexer.HASH = 11;
36
+ YiniLexer.COMMA = 12;
37
+ YiniLexer.COLON = 13;
38
+ YiniLexer.OB = 14;
39
+ YiniLexer.CB = 15;
40
+ YiniLexer.OC = 16;
41
+ YiniLexer.CC = 17;
42
+ YiniLexer.PLUS = 18;
43
+ YiniLexer.DOLLAR = 19;
44
+ YiniLexer.PC = 20;
45
+ YiniLexer.AT = 21;
46
+ YiniLexer.SEMICOLON = 22;
47
+ YiniLexer.BOOLEAN_FALSE = 23;
48
+ YiniLexer.BOOLEAN_TRUE = 24;
49
+ YiniLexer.NULL = 25;
50
+ YiniLexer.EMPTY_OBJECT = 26;
51
+ YiniLexer.EMPTY_LIST = 27;
52
+ YiniLexer.SHEBANG = 28;
53
+ YiniLexer.NUMBER = 29;
54
+ YiniLexer.KEY = 30;
55
+ YiniLexer.IDENT = 31;
56
+ YiniLexer.IDENT_BACKTICKED = 32;
57
+ YiniLexer.STRING = 33;
58
+ YiniLexer.TRIPLE_QUOTED_STRING = 34;
59
+ YiniLexer.SINGLE_OR_DOUBLE = 35;
60
+ YiniLexer.R_AND_C_STRING = 36;
61
+ YiniLexer.HYPER_STRING = 37;
62
+ YiniLexer.ESC_SEQ = 38;
63
+ YiniLexer.ESC_SEQ_BASE = 39;
64
+ YiniLexer.NL = 40;
65
+ YiniLexer.SINGLE_NL = 41;
66
+ YiniLexer.WS = 42;
67
+ YiniLexer.BLOCK_COMMENT = 43;
68
+ YiniLexer.COMMENT = 44;
69
+ YiniLexer.LINE_COMMENT = 45;
70
+ YiniLexer.INLINE_COMMENT = 46;
71
+ YiniLexer.IDENT_INVALID = 47;
72
+ YiniLexer.EOF = antlr4_1.Token.EOF;
73
+ YiniLexer.channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"];
74
+ YiniLexer.literalNames = [null, null,
75
+ null, null,
76
+ "'\\u00A7'",
77
+ "'\\u20AC'",
78
+ "'^'", "'~'",
79
+ "'>'", "'<'",
80
+ "'='", "'#'",
81
+ "','", "':'",
82
+ "'['", "']'",
83
+ "'{'", "'}'",
84
+ "'+'", "'$'",
85
+ "'%'", "'@'",
86
+ "';'"];
87
+ YiniLexer.symbolicNames = [null, "YINI_MARKER",
88
+ "SECTION_HEAD",
89
+ "TERMINAL_TOKEN",
90
+ "SS", "EUR",
91
+ "CARET", "TILDE",
92
+ "GT", "LT",
93
+ "EQ", "HASH",
94
+ "COMMA", "COLON",
95
+ "OB", "CB",
96
+ "OC", "CC",
97
+ "PLUS", "DOLLAR",
98
+ "PC", "AT",
99
+ "SEMICOLON",
100
+ "BOOLEAN_FALSE",
101
+ "BOOLEAN_TRUE",
102
+ "NULL", "EMPTY_OBJECT",
103
+ "EMPTY_LIST",
104
+ "SHEBANG",
105
+ "NUMBER", "KEY",
106
+ "IDENT", "IDENT_BACKTICKED",
107
+ "STRING", "TRIPLE_QUOTED_STRING",
108
+ "SINGLE_OR_DOUBLE",
109
+ "R_AND_C_STRING",
110
+ "HYPER_STRING",
111
+ "ESC_SEQ",
112
+ "ESC_SEQ_BASE",
113
+ "NL", "SINGLE_NL",
114
+ "WS", "BLOCK_COMMENT",
115
+ "COMMENT",
116
+ "LINE_COMMENT",
117
+ "INLINE_COMMENT",
118
+ "IDENT_INVALID"];
119
+ YiniLexer.modeNames = ["DEFAULT_MODE",];
120
+ YiniLexer.ruleNames = [
121
+ "YINI_MARKER", "EBD", "SECTION_HEAD", "SECTION_MARKER", "SECTION_MARKER_BASIC_REPEAT",
122
+ "SECTION_MARKER_SHORTHAND", "SECTION_MARKER_INVALID", "TERMINAL_TOKEN",
123
+ "SS", "EUR", "CARET", "TILDE", "GT", "LT", "EQ", "HASH", "COMMA", "COLON",
124
+ "OB", "CB", "OC", "CC", "PLUS", "DOLLAR", "PC", "AT", "SEMICOLON", "BOOLEAN_FALSE",
125
+ "BOOLEAN_TRUE", "NULL", "EMPTY_OBJECT", "EMPTY_LIST", "SHEBANG", "NUMBER",
126
+ "KEY", "IDENT", "IDENT_BACKTICKED", "STRING", "TRIPLE_QUOTED_STRING",
127
+ "SINGLE_OR_DOUBLE", "R_AND_C_STRING", "HYPER_STRING", "ESC_SEQ", "ESC_SEQ_BASE",
128
+ "UNICODE16", "UNICODE32", "INTEGER", "DECIMAL_INTEGER", "BIN_INTEGER",
129
+ "OCT_INTEGER", "DUO_INTEGER", "HEX_INTEGER", "DIGIT", "BIN_DIGIT", "OCT_DIGIT",
130
+ "DUO_DIGIT", "HEX_DIGIT", "FRACTION", "EXPONENT", "SIGN", "NL", "SINGLE_NL",
131
+ "WS", "BLOCK_COMMENT", "COMMENT", "LINE_COMMENT", "INLINE_COMMENT", "DISABLE_LINE",
132
+ "IDENT_INVALID",
133
+ ];
134
+ YiniLexer._serializedATN = [4, 0, 47, 658, 6, -1, 2, 0,
135
+ 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9,
136
+ 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7,
137
+ 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23,
138
+ 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2,
139
+ 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38,
140
+ 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7,
141
+ 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52,
142
+ 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2,
143
+ 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67,
144
+ 7, 67, 2, 68, 7, 68, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 151, 8, 2,
145
+ 10, 2, 12, 2, 154, 9, 2, 1, 2, 1, 2, 5, 2, 158, 8, 2, 10, 2, 12, 2, 161, 9, 2, 1, 2, 5, 2, 164, 8, 2,
146
+ 10, 2, 12, 2, 167, 9, 2, 1, 2, 1, 2, 4, 2, 171, 8, 2, 11, 2, 12, 2, 172, 1, 3, 1, 3, 1, 3, 3, 3, 178,
147
+ 8, 3, 1, 4, 4, 4, 181, 8, 4, 11, 4, 12, 4, 182, 1, 4, 4, 4, 186, 8, 4, 11, 4, 12, 4, 187, 1, 4, 4, 4,
148
+ 191, 8, 4, 11, 4, 12, 4, 192, 1, 4, 4, 4, 196, 8, 4, 11, 4, 12, 4, 197, 3, 4, 200, 8, 4, 1, 5, 1, 5,
149
+ 1, 5, 1, 5, 3, 5, 206, 8, 5, 1, 5, 1, 5, 5, 5, 210, 8, 5, 10, 5, 12, 5, 213, 9, 5, 1, 6, 1, 6, 1, 6, 1,
150
+ 6, 4, 6, 219, 8, 6, 11, 6, 12, 6, 220, 1, 6, 4, 6, 224, 8, 6, 11, 6, 12, 6, 225, 1, 7, 1, 7, 1, 7, 1,
151
+ 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14,
152
+ 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1,
153
+ 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27,
154
+ 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 281, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1,
155
+ 28, 1, 28, 1, 28, 3, 28, 292, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31,
156
+ 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 309, 8, 32, 10, 32, 12, 32, 312, 9, 32, 1, 32, 1,
157
+ 32, 1, 33, 1, 33, 1, 33, 3, 33, 319, 8, 33, 3, 33, 321, 8, 33, 1, 33, 3, 33, 324, 8, 33, 1, 33, 3,
158
+ 33, 327, 8, 33, 1, 33, 1, 33, 4, 33, 331, 8, 33, 11, 33, 12, 33, 332, 1, 33, 3, 33, 336, 8, 33,
159
+ 1, 33, 3, 33, 339, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 345, 8, 33, 3, 33, 347, 8, 33, 1, 34,
160
+ 1, 34, 1, 35, 1, 35, 5, 35, 353, 8, 35, 10, 35, 12, 35, 356, 9, 35, 1, 35, 1, 35, 3, 35, 360, 8,
161
+ 35, 1, 36, 1, 36, 5, 36, 364, 8, 36, 10, 36, 12, 36, 367, 9, 36, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37,
162
+ 373, 8, 37, 1, 38, 3, 38, 376, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 383, 8, 38, 10, 38,
163
+ 12, 38, 386, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 394, 8, 39, 1, 40, 3, 40, 397,
164
+ 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 403, 8, 40, 10, 40, 12, 40, 406, 9, 40, 1, 40, 1, 40, 3,
165
+ 40, 410, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 416, 8, 40, 10, 40, 12, 40, 419, 9, 40, 1, 40,
166
+ 3, 40, 422, 8, 40, 1, 41, 1, 41, 1, 41, 5, 41, 427, 8, 41, 10, 41, 12, 41, 430, 9, 41, 1, 41, 1,
167
+ 41, 1, 41, 1, 41, 5, 41, 436, 8, 41, 10, 41, 12, 41, 439, 9, 41, 1, 41, 3, 41, 442, 8, 41, 1, 42,
168
+ 1, 42, 1, 42, 3, 42, 447, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 453, 8, 43, 1, 44, 1, 44, 1, 44,
169
+ 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1,
170
+ 46, 1, 47, 1, 47, 3, 47, 475, 8, 47, 1, 47, 1, 47, 5, 47, 479, 8, 47, 10, 47, 12, 47, 482, 9, 47,
171
+ 3, 47, 484, 8, 47, 1, 48, 1, 48, 1, 48, 4, 48, 489, 8, 48, 11, 48, 12, 48, 490, 1, 48, 1, 48, 4,
172
+ 48, 495, 8, 48, 11, 48, 12, 48, 496, 3, 48, 499, 8, 48, 1, 49, 1, 49, 1, 49, 4, 49, 504, 8, 49,
173
+ 11, 49, 12, 49, 505, 1, 50, 1, 50, 1, 50, 4, 50, 511, 8, 50, 11, 50, 12, 50, 512, 1, 51, 1, 51,
174
+ 1, 51, 4, 51, 518, 8, 51, 11, 51, 12, 51, 519, 1, 51, 1, 51, 4, 51, 524, 8, 51, 11, 51, 12, 51,
175
+ 525, 3, 51, 528, 8, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 538, 8, 55,
176
+ 1, 56, 1, 56, 3, 56, 542, 8, 56, 1, 57, 1, 57, 4, 57, 546, 8, 57, 11, 57, 12, 57, 547, 1, 58, 1,
177
+ 58, 3, 58, 552, 8, 58, 1, 58, 4, 58, 555, 8, 58, 11, 58, 12, 58, 556, 1, 59, 1, 59, 1, 60, 5, 60,
178
+ 562, 8, 60, 10, 60, 12, 60, 565, 9, 60, 1, 60, 5, 60, 568, 8, 60, 10, 60, 12, 60, 571, 9, 60, 1,
179
+ 60, 1, 60, 5, 60, 575, 8, 60, 10, 60, 12, 60, 578, 9, 60, 1, 61, 1, 61, 3, 61, 582, 8, 61, 1, 61,
180
+ 3, 61, 585, 8, 61, 1, 62, 4, 62, 588, 8, 62, 11, 62, 12, 62, 589, 1, 62, 1, 62, 1, 63, 1, 63, 1,
181
+ 63, 1, 63, 5, 63, 598, 8, 63, 10, 63, 12, 63, 601, 9, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64,
182
+ 1, 64, 1, 64, 3, 64, 611, 8, 64, 1, 65, 1, 65, 3, 65, 615, 8, 65, 1, 65, 5, 65, 618, 8, 65, 10, 65,
183
+ 12, 65, 621, 9, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 4, 66, 629, 8, 66, 11, 66, 12, 66,
184
+ 630, 3, 66, 633, 8, 66, 1, 66, 5, 66, 636, 8, 66, 10, 66, 12, 66, 639, 9, 66, 1, 66, 1, 66, 1, 67,
185
+ 1, 67, 1, 67, 1, 67, 5, 67, 647, 8, 67, 10, 67, 12, 67, 650, 9, 67, 1, 68, 1, 68, 5, 68, 654, 8,
186
+ 68, 10, 68, 12, 68, 657, 9, 68, 2, 384, 599, 0, 69, 1, 1, 3, 0, 5, 2, 7, 0, 9, 0, 11, 0, 13, 0, 15,
187
+ 3, 17, 4, 19, 5, 21, 6, 23, 7, 25, 8, 27, 9, 29, 10, 31, 11, 33, 12, 35, 13, 37, 14, 39, 15, 41,
188
+ 16, 43, 17, 45, 18, 47, 19, 49, 20, 51, 21, 53, 22, 55, 23, 57, 24, 59, 25, 61, 26, 63, 27, 65,
189
+ 28, 67, 29, 69, 30, 71, 31, 73, 32, 75, 33, 77, 34, 79, 35, 81, 36, 83, 37, 85, 38, 87, 39, 89,
190
+ 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115,
191
+ 0, 117, 0, 119, 0, 121, 40, 123, 41, 125, 42, 127, 43, 129, 44, 131, 45, 133, 46, 135, 0, 137,
192
+ 47, 1, 0, 36, 2, 0, 89, 89, 121, 121, 2, 0, 73, 73, 105, 105, 2, 0, 78, 78, 110, 110, 2, 0, 9, 9,
193
+ 32, 32, 1, 0, 49, 57, 2, 0, 69, 69, 101, 101, 2, 0, 68, 68, 100, 100, 2, 0, 70, 70, 102, 102, 2,
194
+ 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 83, 83, 115, 115, 2, 0, 79, 79, 111, 111, 2, 0,
195
+ 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 85, 85, 117, 117, 2, 0, 8, 10, 12, 13, 3, 0, 65,
196
+ 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 0, 31, 96, 96, 4, 0, 67, 67, 82,
197
+ 82, 99, 99, 114, 114, 3, 0, 10, 10, 13, 13, 39, 39, 3, 0, 10, 10, 13, 13, 34, 34, 2, 0, 72, 72,
198
+ 104, 104, 1, 0, 39, 39, 1, 0, 34, 34, 2, 0, 34, 34, 39, 39, 9, 0, 48, 48, 63, 63, 92, 92, 97, 98,
199
+ 102, 102, 110, 110, 114, 114, 116, 116, 118, 118, 2, 0, 66, 66, 98, 98, 2, 0, 90, 90, 122, 122,
200
+ 2, 0, 88, 88, 120, 120, 1, 0, 48, 57, 1, 0, 48, 55, 4, 0, 69, 69, 88, 88, 101, 101, 120, 120, 2,
201
+ 0, 65, 70, 97, 102, 2, 0, 43, 43, 45, 45, 2, 0, 10, 10, 13, 13, 727, 0, 1, 1, 0, 0, 0, 0, 5, 1, 0,
202
+ 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0,
203
+ 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0,
204
+ 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0,
205
+ 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0,
206
+ 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0,
207
+ 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0,
208
+ 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0,
209
+ 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133,
210
+ 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 1, 139, 1, 0, 0, 0, 3, 145, 1, 0, 0, 0, 5, 152, 1, 0, 0, 0, 7, 177, 1,
211
+ 0, 0, 0, 9, 199, 1, 0, 0, 0, 11, 205, 1, 0, 0, 0, 13, 218, 1, 0, 0, 0, 15, 227, 1, 0, 0, 0, 17, 232,
212
+ 1, 0, 0, 0, 19, 234, 1, 0, 0, 0, 21, 236, 1, 0, 0, 0, 23, 238, 1, 0, 0, 0, 25, 240, 1, 0, 0, 0, 27,
213
+ 242, 1, 0, 0, 0, 29, 244, 1, 0, 0, 0, 31, 246, 1, 0, 0, 0, 33, 248, 1, 0, 0, 0, 35, 250, 1, 0, 0, 0,
214
+ 37, 252, 1, 0, 0, 0, 39, 254, 1, 0, 0, 0, 41, 256, 1, 0, 0, 0, 43, 258, 1, 0, 0, 0, 45, 260, 1, 0,
215
+ 0, 0, 47, 262, 1, 0, 0, 0, 49, 264, 1, 0, 0, 0, 51, 266, 1, 0, 0, 0, 53, 268, 1, 0, 0, 0, 55, 280,
216
+ 1, 0, 0, 0, 57, 291, 1, 0, 0, 0, 59, 293, 1, 0, 0, 0, 61, 298, 1, 0, 0, 0, 63, 301, 1, 0, 0, 0, 65,
217
+ 304, 1, 0, 0, 0, 67, 346, 1, 0, 0, 0, 69, 348, 1, 0, 0, 0, 71, 359, 1, 0, 0, 0, 73, 361, 1, 0, 0, 0,
218
+ 75, 372, 1, 0, 0, 0, 77, 375, 1, 0, 0, 0, 79, 393, 1, 0, 0, 0, 81, 421, 1, 0, 0, 0, 83, 441, 1, 0,
219
+ 0, 0, 85, 446, 1, 0, 0, 0, 87, 448, 1, 0, 0, 0, 89, 454, 1, 0, 0, 0, 91, 460, 1, 0, 0, 0, 93, 470,
220
+ 1, 0, 0, 0, 95, 483, 1, 0, 0, 0, 97, 498, 1, 0, 0, 0, 99, 500, 1, 0, 0, 0, 101, 507, 1, 0, 0, 0, 103,
221
+ 527, 1, 0, 0, 0, 105, 529, 1, 0, 0, 0, 107, 531, 1, 0, 0, 0, 109, 533, 1, 0, 0, 0, 111, 537, 1, 0,
222
+ 0, 0, 113, 541, 1, 0, 0, 0, 115, 543, 1, 0, 0, 0, 117, 549, 1, 0, 0, 0, 119, 558, 1, 0, 0, 0, 121,
223
+ 563, 1, 0, 0, 0, 123, 584, 1, 0, 0, 0, 125, 587, 1, 0, 0, 0, 127, 593, 1, 0, 0, 0, 129, 610, 1, 0,
224
+ 0, 0, 131, 614, 1, 0, 0, 0, 133, 632, 1, 0, 0, 0, 135, 642, 1, 0, 0, 0, 137, 651, 1, 0, 0, 0, 139,
225
+ 140, 5, 64, 0, 0, 140, 141, 7, 0, 0, 0, 141, 142, 7, 1, 0, 0, 142, 143, 7, 2, 0, 0, 143, 144, 7,
226
+ 1, 0, 0, 144, 2, 1, 0, 0, 0, 145, 146, 2, 48, 49, 0, 146, 147, 2, 48, 49, 0, 147, 148, 2, 48, 49,
227
+ 0, 148, 4, 1, 0, 0, 0, 149, 151, 7, 3, 0, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150,
228
+ 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 155, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 159, 3, 7, 3, 0,
229
+ 156, 158, 7, 3, 0, 0, 157, 156, 1, 0, 0, 0, 158, 161, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 159, 160,
230
+ 1, 0, 0, 0, 160, 165, 1, 0, 0, 0, 161, 159, 1, 0, 0, 0, 162, 164, 3, 125, 62, 0, 163, 162, 1, 0,
231
+ 0, 0, 164, 167, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 168, 1, 0, 0, 0, 167,
232
+ 165, 1, 0, 0, 0, 168, 170, 3, 71, 35, 0, 169, 171, 3, 121, 60, 0, 170, 169, 1, 0, 0, 0, 171, 172,
233
+ 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 6, 1, 0, 0, 0, 174, 178, 3, 9, 4, 0, 175,
234
+ 178, 3, 11, 5, 0, 176, 178, 3, 13, 6, 0, 177, 174, 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 177, 176, 1,
235
+ 0, 0, 0, 178, 8, 1, 0, 0, 0, 179, 181, 3, 21, 10, 0, 180, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182,
236
+ 180, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 200, 1, 0, 0, 0, 184, 186, 3, 23, 11, 0, 185, 184, 1,
237
+ 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 200, 1, 0, 0, 0, 189,
238
+ 191, 3, 17, 8, 0, 190, 189, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 190, 1, 0, 0, 0, 192, 193, 1,
239
+ 0, 0, 0, 193, 200, 1, 0, 0, 0, 194, 196, 3, 19, 9, 0, 195, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0,
240
+ 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 200, 1, 0, 0, 0, 199, 180, 1, 0, 0, 0, 199, 185,
241
+ 1, 0, 0, 0, 199, 190, 1, 0, 0, 0, 199, 195, 1, 0, 0, 0, 200, 10, 1, 0, 0, 0, 201, 206, 3, 21, 10,
242
+ 0, 202, 206, 3, 23, 11, 0, 203, 206, 3, 17, 8, 0, 204, 206, 3, 19, 9, 0, 205, 201, 1, 0, 0, 0, 205,
243
+ 202, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 211, 7, 4,
244
+ 0, 0, 208, 210, 3, 105, 52, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0,
245
+ 211, 212, 1, 0, 0, 0, 212, 12, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 219, 3, 21, 10, 0, 215, 219,
246
+ 3, 23, 11, 0, 216, 219, 3, 17, 8, 0, 217, 219, 3, 19, 9, 0, 218, 214, 1, 0, 0, 0, 218, 215, 1, 0,
247
+ 0, 0, 218, 216, 1, 0, 0, 0, 218, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220,
248
+ 221, 1, 0, 0, 0, 221, 223, 1, 0, 0, 0, 222, 224, 3, 105, 52, 0, 223, 222, 1, 0, 0, 0, 224, 225,
249
+ 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, 14, 1, 0, 0, 0, 227, 228, 5, 47, 0, 0,
250
+ 228, 229, 7, 5, 0, 0, 229, 230, 7, 2, 0, 0, 230, 231, 7, 6, 0, 0, 231, 16, 1, 0, 0, 0, 232, 233,
251
+ 5, 167, 0, 0, 233, 18, 1, 0, 0, 0, 234, 235, 5, 8364, 0, 0, 235, 20, 1, 0, 0, 0, 236, 237, 5, 94,
252
+ 0, 0, 237, 22, 1, 0, 0, 0, 238, 239, 5, 126, 0, 0, 239, 24, 1, 0, 0, 0, 240, 241, 5, 62, 0, 0, 241,
253
+ 26, 1, 0, 0, 0, 242, 243, 5, 60, 0, 0, 243, 28, 1, 0, 0, 0, 244, 245, 5, 61, 0, 0, 245, 30, 1, 0,
254
+ 0, 0, 246, 247, 5, 35, 0, 0, 247, 32, 1, 0, 0, 0, 248, 249, 5, 44, 0, 0, 249, 34, 1, 0, 0, 0, 250,
255
+ 251, 5, 58, 0, 0, 251, 36, 1, 0, 0, 0, 252, 253, 5, 91, 0, 0, 253, 38, 1, 0, 0, 0, 254, 255, 5, 93,
256
+ 0, 0, 255, 40, 1, 0, 0, 0, 256, 257, 5, 123, 0, 0, 257, 42, 1, 0, 0, 0, 258, 259, 5, 125, 0, 0, 259,
257
+ 44, 1, 0, 0, 0, 260, 261, 5, 43, 0, 0, 261, 46, 1, 0, 0, 0, 262, 263, 5, 36, 0, 0, 263, 48, 1, 0,
258
+ 0, 0, 264, 265, 5, 37, 0, 0, 265, 50, 1, 0, 0, 0, 266, 267, 5, 64, 0, 0, 267, 52, 1, 0, 0, 0, 268,
259
+ 269, 5, 59, 0, 0, 269, 54, 1, 0, 0, 0, 270, 271, 7, 7, 0, 0, 271, 272, 7, 8, 0, 0, 272, 273, 7, 9,
260
+ 0, 0, 273, 274, 7, 10, 0, 0, 274, 281, 7, 5, 0, 0, 275, 276, 7, 11, 0, 0, 276, 277, 7, 7, 0, 0, 277,
261
+ 281, 7, 7, 0, 0, 278, 279, 7, 2, 0, 0, 279, 281, 7, 11, 0, 0, 280, 270, 1, 0, 0, 0, 280, 275, 1,
262
+ 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 56, 1, 0, 0, 0, 282, 283, 7, 12, 0, 0, 283, 284, 7, 13, 0, 0,
263
+ 284, 285, 7, 14, 0, 0, 285, 292, 7, 5, 0, 0, 286, 287, 7, 11, 0, 0, 287, 292, 7, 2, 0, 0, 288, 289,
264
+ 7, 0, 0, 0, 289, 290, 7, 5, 0, 0, 290, 292, 7, 10, 0, 0, 291, 282, 1, 0, 0, 0, 291, 286, 1, 0, 0,
265
+ 0, 291, 288, 1, 0, 0, 0, 292, 58, 1, 0, 0, 0, 293, 294, 7, 2, 0, 0, 294, 295, 7, 14, 0, 0, 295, 296,
266
+ 7, 9, 0, 0, 296, 297, 7, 9, 0, 0, 297, 60, 1, 0, 0, 0, 298, 299, 5, 123, 0, 0, 299, 300, 5, 125,
267
+ 0, 0, 300, 62, 1, 0, 0, 0, 301, 302, 5, 91, 0, 0, 302, 303, 5, 93, 0, 0, 303, 64, 1, 0, 0, 0, 304,
268
+ 305, 5, 35, 0, 0, 305, 306, 5, 33, 0, 0, 306, 310, 1, 0, 0, 0, 307, 309, 8, 15, 0, 0, 308, 307,
269
+ 1, 0, 0, 0, 309, 312, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 313, 1, 0, 0, 0,
270
+ 312, 310, 1, 0, 0, 0, 313, 314, 3, 121, 60, 0, 314, 66, 1, 0, 0, 0, 315, 320, 3, 93, 46, 0, 316,
271
+ 318, 5, 46, 0, 0, 317, 319, 3, 93, 46, 0, 318, 317, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 321,
272
+ 1, 0, 0, 0, 320, 316, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 323, 1, 0, 0, 0, 322, 324, 3, 117, 58,
273
+ 0, 323, 322, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 347, 1, 0, 0, 0, 325, 327, 3, 119, 59, 0, 326,
274
+ 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 330, 5, 46, 0, 0, 329, 331, 3,
275
+ 105, 52, 0, 330, 329, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0,
276
+ 0, 333, 335, 1, 0, 0, 0, 334, 336, 3, 117, 58, 0, 335, 334, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 336,
277
+ 347, 1, 0, 0, 0, 337, 339, 3, 119, 59, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 344,
278
+ 1, 0, 0, 0, 340, 345, 3, 97, 48, 0, 341, 345, 3, 99, 49, 0, 342, 345, 3, 101, 50, 0, 343, 345,
279
+ 3, 103, 51, 0, 344, 340, 1, 0, 0, 0, 344, 341, 1, 0, 0, 0, 344, 342, 1, 0, 0, 0, 344, 343, 1, 0,
280
+ 0, 0, 345, 347, 1, 0, 0, 0, 346, 315, 1, 0, 0, 0, 346, 326, 1, 0, 0, 0, 346, 338, 1, 0, 0, 0, 347,
281
+ 68, 1, 0, 0, 0, 348, 349, 3, 71, 35, 0, 349, 70, 1, 0, 0, 0, 350, 354, 7, 16, 0, 0, 351, 353, 7,
282
+ 17, 0, 0, 352, 351, 1, 0, 0, 0, 353, 356, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0,
283
+ 355, 360, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 357, 360, 3, 73, 36, 0, 358, 360, 3, 137, 68, 0, 359,
284
+ 350, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 358, 1, 0, 0, 0, 360, 72, 1, 0, 0, 0, 361, 365, 5, 96,
285
+ 0, 0, 362, 364, 8, 18, 0, 0, 363, 362, 1, 0, 0, 0, 364, 367, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 365,
286
+ 366, 1, 0, 0, 0, 366, 368, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 368, 369, 5, 96, 0, 0, 369, 74, 1, 0,
287
+ 0, 0, 370, 373, 3, 77, 38, 0, 371, 373, 3, 79, 39, 0, 372, 370, 1, 0, 0, 0, 372, 371, 1, 0, 0, 0,
288
+ 373, 76, 1, 0, 0, 0, 374, 376, 7, 19, 0, 0, 375, 374, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 377,
289
+ 1, 0, 0, 0, 377, 378, 5, 34, 0, 0, 378, 379, 5, 34, 0, 0, 379, 380, 5, 34, 0, 0, 380, 384, 1, 0,
290
+ 0, 0, 381, 383, 9, 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 384,
291
+ 382, 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 388, 5, 34, 0, 0, 388, 389, 5,
292
+ 34, 0, 0, 389, 390, 5, 34, 0, 0, 390, 78, 1, 0, 0, 0, 391, 394, 3, 81, 40, 0, 392, 394, 3, 83, 41,
293
+ 0, 393, 391, 1, 0, 0, 0, 393, 392, 1, 0, 0, 0, 394, 80, 1, 0, 0, 0, 395, 397, 7, 19, 0, 0, 396, 395,
294
+ 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 404, 5, 39, 0, 0, 399, 400, 5, 92, 0,
295
+ 0, 400, 403, 5, 39, 0, 0, 401, 403, 8, 20, 0, 0, 402, 399, 1, 0, 0, 0, 402, 401, 1, 0, 0, 0, 403,
296
+ 406, 1, 0, 0, 0, 404, 402, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 407, 1, 0, 0, 0, 406, 404, 1, 0,
297
+ 0, 0, 407, 422, 5, 39, 0, 0, 408, 410, 7, 19, 0, 0, 409, 408, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410,
298
+ 411, 1, 0, 0, 0, 411, 417, 5, 34, 0, 0, 412, 413, 5, 92, 0, 0, 413, 416, 5, 34, 0, 0, 414, 416,
299
+ 8, 21, 0, 0, 415, 412, 1, 0, 0, 0, 415, 414, 1, 0, 0, 0, 416, 419, 1, 0, 0, 0, 417, 415, 1, 0, 0,
300
+ 0, 417, 418, 1, 0, 0, 0, 418, 420, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 420, 422, 5, 34, 0, 0, 421,
301
+ 396, 1, 0, 0, 0, 421, 409, 1, 0, 0, 0, 422, 82, 1, 0, 0, 0, 423, 424, 7, 22, 0, 0, 424, 428, 5, 39,
302
+ 0, 0, 425, 427, 8, 23, 0, 0, 426, 425, 1, 0, 0, 0, 427, 430, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 428,
303
+ 429, 1, 0, 0, 0, 429, 431, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 431, 442, 5, 39, 0, 0, 432, 433, 7,
304
+ 22, 0, 0, 433, 437, 5, 34, 0, 0, 434, 436, 8, 24, 0, 0, 435, 434, 1, 0, 0, 0, 436, 439, 1, 0, 0,
305
+ 0, 437, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 440, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 442,
306
+ 5, 34, 0, 0, 441, 423, 1, 0, 0, 0, 441, 432, 1, 0, 0, 0, 442, 84, 1, 0, 0, 0, 443, 444, 5, 92, 0,
307
+ 0, 444, 447, 7, 25, 0, 0, 445, 447, 3, 87, 43, 0, 446, 443, 1, 0, 0, 0, 446, 445, 1, 0, 0, 0, 447,
308
+ 86, 1, 0, 0, 0, 448, 452, 5, 92, 0, 0, 449, 453, 7, 26, 0, 0, 450, 453, 3, 89, 44, 0, 451, 453,
309
+ 3, 91, 45, 0, 452, 449, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 452, 451, 1, 0, 0, 0, 453, 88, 1, 0, 0,
310
+ 0, 454, 455, 5, 117, 0, 0, 455, 456, 3, 113, 56, 0, 456, 457, 3, 113, 56, 0, 457, 458, 3, 113,
311
+ 56, 0, 458, 459, 3, 113, 56, 0, 459, 90, 1, 0, 0, 0, 460, 461, 5, 85, 0, 0, 461, 462, 3, 113, 56,
312
+ 0, 462, 463, 3, 113, 56, 0, 463, 464, 3, 113, 56, 0, 464, 465, 3, 113, 56, 0, 465, 466, 3, 113,
313
+ 56, 0, 466, 467, 3, 113, 56, 0, 467, 468, 3, 113, 56, 0, 468, 469, 3, 113, 56, 0, 469, 92, 1,
314
+ 0, 0, 0, 470, 471, 3, 95, 47, 0, 471, 94, 1, 0, 0, 0, 472, 484, 5, 48, 0, 0, 473, 475, 3, 119, 59,
315
+ 0, 474, 473, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 480, 7, 4, 0, 0, 477, 479,
316
+ 3, 105, 52, 0, 478, 477, 1, 0, 0, 0, 479, 482, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0,
317
+ 0, 0, 481, 484, 1, 0, 0, 0, 482, 480, 1, 0, 0, 0, 483, 472, 1, 0, 0, 0, 483, 474, 1, 0, 0, 0, 484,
318
+ 96, 1, 0, 0, 0, 485, 486, 5, 48, 0, 0, 486, 488, 7, 27, 0, 0, 487, 489, 3, 107, 53, 0, 488, 487,
319
+ 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 499, 1, 0, 0, 0,
320
+ 492, 494, 5, 37, 0, 0, 493, 495, 3, 107, 53, 0, 494, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496,
321
+ 494, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 499, 1, 0, 0, 0, 498, 485, 1, 0, 0, 0, 498, 492, 1, 0,
322
+ 0, 0, 499, 98, 1, 0, 0, 0, 500, 501, 5, 48, 0, 0, 501, 503, 7, 11, 0, 0, 502, 504, 3, 109, 54, 0,
323
+ 503, 502, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 100,
324
+ 1, 0, 0, 0, 507, 508, 5, 48, 0, 0, 508, 510, 7, 28, 0, 0, 509, 511, 3, 111, 55, 0, 510, 509, 1,
325
+ 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 102, 1, 0, 0, 0, 514,
326
+ 515, 5, 48, 0, 0, 515, 517, 7, 29, 0, 0, 516, 518, 3, 113, 56, 0, 517, 516, 1, 0, 0, 0, 518, 519,
327
+ 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 528, 1, 0, 0, 0, 521, 523, 5, 35, 0,
328
+ 0, 522, 524, 3, 113, 56, 0, 523, 522, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525,
329
+ 526, 1, 0, 0, 0, 526, 528, 1, 0, 0, 0, 527, 514, 1, 0, 0, 0, 527, 521, 1, 0, 0, 0, 528, 104, 1, 0,
330
+ 0, 0, 529, 530, 7, 30, 0, 0, 530, 106, 1, 0, 0, 0, 531, 532, 2, 48, 49, 0, 532, 108, 1, 0, 0, 0,
331
+ 533, 534, 7, 31, 0, 0, 534, 110, 1, 0, 0, 0, 535, 538, 3, 105, 52, 0, 536, 538, 7, 32, 0, 0, 537,
332
+ 535, 1, 0, 0, 0, 537, 536, 1, 0, 0, 0, 538, 112, 1, 0, 0, 0, 539, 542, 3, 105, 52, 0, 540, 542,
333
+ 7, 33, 0, 0, 541, 539, 1, 0, 0, 0, 541, 540, 1, 0, 0, 0, 542, 114, 1, 0, 0, 0, 543, 545, 5, 46, 0,
334
+ 0, 544, 546, 3, 105, 52, 0, 545, 544, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 545, 1, 0, 0, 0, 547,
335
+ 548, 1, 0, 0, 0, 548, 116, 1, 0, 0, 0, 549, 551, 7, 5, 0, 0, 550, 552, 3, 119, 59, 0, 551, 550,
336
+ 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 554, 1, 0, 0, 0, 553, 555, 3, 105, 52, 0, 554, 553, 1, 0,
337
+ 0, 0, 555, 556, 1, 0, 0, 0, 556, 554, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 118, 1, 0, 0, 0, 558,
338
+ 559, 7, 34, 0, 0, 559, 120, 1, 0, 0, 0, 560, 562, 3, 125, 62, 0, 561, 560, 1, 0, 0, 0, 562, 565,
339
+ 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 569, 1, 0, 0, 0, 565, 563, 1, 0, 0, 0,
340
+ 566, 568, 3, 129, 64, 0, 567, 566, 1, 0, 0, 0, 568, 571, 1, 0, 0, 0, 569, 567, 1, 0, 0, 0, 569,
341
+ 570, 1, 0, 0, 0, 570, 572, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 572, 576, 3, 123, 61, 0, 573, 575,
342
+ 3, 129, 64, 0, 574, 573, 1, 0, 0, 0, 575, 578, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 577, 1, 0,
343
+ 0, 0, 577, 122, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 579, 581, 5, 13, 0, 0, 580, 582, 5, 10, 0, 0, 581,
344
+ 580, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 585, 1, 0, 0, 0, 583, 585, 5, 10, 0, 0, 584, 579, 1,
345
+ 0, 0, 0, 584, 583, 1, 0, 0, 0, 585, 124, 1, 0, 0, 0, 586, 588, 7, 3, 0, 0, 587, 586, 1, 0, 0, 0, 588,
346
+ 589, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 6, 62,
347
+ 0, 0, 592, 126, 1, 0, 0, 0, 593, 594, 5, 47, 0, 0, 594, 595, 5, 42, 0, 0, 595, 599, 1, 0, 0, 0, 596,
348
+ 598, 9, 0, 0, 0, 597, 596, 1, 0, 0, 0, 598, 601, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 599, 597, 1, 0,
349
+ 0, 0, 600, 602, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 602, 603, 5, 42, 0, 0, 603, 604, 5, 47, 0, 0, 604,
350
+ 605, 1, 0, 0, 0, 605, 606, 6, 63, 0, 0, 606, 128, 1, 0, 0, 0, 607, 611, 3, 131, 65, 0, 608, 611,
351
+ 3, 133, 66, 0, 609, 611, 3, 127, 63, 0, 610, 607, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 610, 609, 1,
352
+ 0, 0, 0, 611, 130, 1, 0, 0, 0, 612, 615, 3, 135, 67, 0, 613, 615, 5, 59, 0, 0, 614, 612, 1, 0, 0,
353
+ 0, 614, 613, 1, 0, 0, 0, 615, 619, 1, 0, 0, 0, 616, 618, 8, 35, 0, 0, 617, 616, 1, 0, 0, 0, 618,
354
+ 621, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 622, 1, 0, 0, 0, 621, 619, 1, 0,
355
+ 0, 0, 622, 623, 6, 65, 0, 0, 623, 132, 1, 0, 0, 0, 624, 625, 5, 47, 0, 0, 625, 633, 5, 47, 0, 0,
356
+ 626, 628, 5, 35, 0, 0, 627, 629, 7, 3, 0, 0, 628, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 628,
357
+ 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 633, 1, 0, 0, 0, 632, 624, 1, 0, 0, 0, 632, 626, 1, 0, 0, 0,
358
+ 633, 637, 1, 0, 0, 0, 634, 636, 8, 35, 0, 0, 635, 634, 1, 0, 0, 0, 636, 639, 1, 0, 0, 0, 637, 635,
359
+ 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 640, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 640, 641, 6, 66, 0,
360
+ 0, 641, 134, 1, 0, 0, 0, 642, 643, 5, 45, 0, 0, 643, 644, 5, 45, 0, 0, 644, 648, 1, 0, 0, 0, 645,
361
+ 647, 8, 35, 0, 0, 646, 645, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 648, 649, 1,
362
+ 0, 0, 0, 649, 136, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 655, 7, 30, 0, 0, 652, 654, 7, 17, 0, 0,
363
+ 653, 652, 1, 0, 0, 0, 654, 657, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 138,
364
+ 1, 0, 0, 0, 657, 655, 1, 0, 0, 0, 78, 0, 152, 159, 165, 172, 177, 182, 187, 192, 197, 199, 205,
365
+ 211, 218, 220, 225, 280, 291, 310, 318, 320, 323, 326, 332, 335, 338, 344, 346, 354, 359,
366
+ 365, 372, 375, 384, 393, 396, 402, 404, 409, 415, 417, 421, 428, 437, 441, 446, 452, 474,
367
+ 480, 483, 490, 496, 498, 505, 512, 519, 525, 527, 537, 541, 547, 551, 556, 563, 569, 576,
368
+ 581, 584, 589, 599, 610, 614, 619, 630, 632, 637, 648, 655, 1, 6, 0, 0];
369
+ YiniLexer.DecisionsToDFA = YiniLexer._ATN.decisionToState.map((ds, index) => new antlr4_1.DFA(ds, index));
370
+ exports.default = YiniLexer;