diff --git a/rewrite-json/src/main/antlr/JSON5.g4 b/rewrite-json/src/main/antlr/JSON5.g4 index 92f8ac35dbf..660eeb42c41 100644 --- a/rewrite-json/src/main/antlr/JSON5.g4 +++ b/rewrite-json/src/main/antlr/JSON5.g4 @@ -145,3 +145,5 @@ fragment NEWLINE WS : [ \t\n\r\u00A0\uFEFF\u2003] + -> skip ; + +UTF_8_BOM : '\uFEFF' -> skip; diff --git a/rewrite-json/src/main/antlr/JsonPathLexer.tokens b/rewrite-json/src/main/antlr/JsonPathLexer.tokens index 50e67dac941..b8c6cb4b12b 100644 --- a/rewrite-json/src/main/antlr/JsonPathLexer.tokens +++ b/rewrite-json/src/main/antlr/JsonPathLexer.tokens @@ -23,6 +23,7 @@ RPAREN=22 QUESTION=23 Identifier=24 WS=25 +UTF_8_BOM=26 '@'=3 '..'=4 '.'=5 @@ -44,3 +45,4 @@ WS=25 '('=21 ')'=22 '?'=23 +'\uFEFF'=26 diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.interp b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.interp index ea5d6b0108d..3f1bd5c5a08 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.interp +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.interp @@ -15,6 +15,7 @@ null null null null +'\uFEFF' token symbolic names: null @@ -33,6 +34,7 @@ NUMERIC_LITERAL SYMBOL IDENTIFIER WS +UTF_8_BOM rule names: json5 @@ -45,4 +47,4 @@ number atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 17, 76, 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, 3, 2, 5, 2, 18, 10, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 26, 10, 3, 12, 3, 14, 3, 29, 11, 3, 3, 3, 5, 3, 32, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 38, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 51, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 57, 10, 7, 12, 7, 14, 7, 60, 11, 7, 3, 7, 5, 7, 63, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 69, 10, 7, 3, 8, 5, 8, 72, 10, 8, 3, 8, 3, 8, 3, 8, 2, 2, 9, 2, 4, 6, 8, 10, 12, 14, 2, 4, 4, 2, 12, 12, 16, 16, 3, 2, 13, 14, 2, 80, 2, 17, 3, 2, 2, 2, 4, 37, 3, 2, 2, 2, 6, 39, 3, 2, 2, 2, 8, 43, 3, 2, 2, 2, 10, 50, 3, 2, 2, 2, 12, 68, 3, 2, 2, 2, 14, 71, 3, 2, 2, 2, 16, 18, 5, 10, 6, 2, 17, 16, 3, 2, 2, 2, 17, 18, 3, 2, 2, 2, 18, 19, 3, 2, 2, 2, 19, 20, 7, 2, 2, 3, 20, 3, 3, 2, 2, 2, 21, 22, 7, 3, 2, 2, 22, 27, 5, 6, 4, 2, 23, 24, 7, 4, 2, 2, 24, 26, 5, 6, 4, 2, 25, 23, 3, 2, 2, 2, 26, 29, 3, 2, 2, 2, 27, 25, 3, 2, 2, 2, 27, 28, 3, 2, 2, 2, 28, 31, 3, 2, 2, 2, 29, 27, 3, 2, 2, 2, 30, 32, 7, 4, 2, 2, 31, 30, 3, 2, 2, 2, 31, 32, 3, 2, 2, 2, 32, 33, 3, 2, 2, 2, 33, 34, 7, 5, 2, 2, 34, 38, 3, 2, 2, 2, 35, 36, 7, 3, 2, 2, 36, 38, 7, 5, 2, 2, 37, 21, 3, 2, 2, 2, 37, 35, 3, 2, 2, 2, 38, 5, 3, 2, 2, 2, 39, 40, 5, 8, 5, 2, 40, 41, 7, 6, 2, 2, 41, 42, 5, 10, 6, 2, 42, 7, 3, 2, 2, 2, 43, 44, 9, 2, 2, 2, 44, 9, 3, 2, 2, 2, 45, 51, 7, 12, 2, 2, 46, 51, 5, 14, 8, 2, 47, 51, 5, 4, 3, 2, 48, 51, 5, 12, 7, 2, 49, 51, 7, 11, 2, 2, 50, 45, 3, 2, 2, 2, 50, 46, 3, 2, 2, 2, 50, 47, 3, 2, 2, 2, 50, 48, 3, 2, 2, 2, 50, 49, 3, 2, 2, 2, 51, 11, 3, 2, 2, 2, 52, 53, 7, 7, 2, 2, 53, 58, 5, 10, 6, 2, 54, 55, 7, 4, 2, 2, 55, 57, 5, 10, 6, 2, 56, 54, 3, 2, 2, 2, 57, 60, 3, 2, 2, 2, 58, 56, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 62, 3, 2, 2, 2, 60, 58, 3, 2, 2, 2, 61, 63, 7, 4, 2, 2, 62, 61, 3, 2, 2, 2, 62, 63, 3, 2, 2, 2, 63, 64, 3, 2, 2, 2, 64, 65, 7, 8, 2, 2, 65, 69, 3, 2, 2, 2, 66, 67, 7, 7, 2, 2, 67, 69, 7, 8, 2, 2, 68, 52, 3, 2, 2, 2, 68, 66, 3, 2, 2, 2, 69, 13, 3, 2, 2, 2, 70, 72, 7, 15, 2, 2, 71, 70, 3, 2, 2, 2, 71, 72, 3, 2, 2, 2, 72, 73, 3, 2, 2, 2, 73, 74, 9, 3, 2, 2, 74, 15, 3, 2, 2, 2, 11, 17, 27, 31, 37, 50, 58, 62, 68, 71] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 18, 76, 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, 3, 2, 5, 2, 18, 10, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 26, 10, 3, 12, 3, 14, 3, 29, 11, 3, 3, 3, 5, 3, 32, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 38, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 51, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 57, 10, 7, 12, 7, 14, 7, 60, 11, 7, 3, 7, 5, 7, 63, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 69, 10, 7, 3, 8, 5, 8, 72, 10, 8, 3, 8, 3, 8, 3, 8, 2, 2, 9, 2, 4, 6, 8, 10, 12, 14, 2, 4, 4, 2, 12, 12, 16, 16, 3, 2, 13, 14, 2, 80, 2, 17, 3, 2, 2, 2, 4, 37, 3, 2, 2, 2, 6, 39, 3, 2, 2, 2, 8, 43, 3, 2, 2, 2, 10, 50, 3, 2, 2, 2, 12, 68, 3, 2, 2, 2, 14, 71, 3, 2, 2, 2, 16, 18, 5, 10, 6, 2, 17, 16, 3, 2, 2, 2, 17, 18, 3, 2, 2, 2, 18, 19, 3, 2, 2, 2, 19, 20, 7, 2, 2, 3, 20, 3, 3, 2, 2, 2, 21, 22, 7, 3, 2, 2, 22, 27, 5, 6, 4, 2, 23, 24, 7, 4, 2, 2, 24, 26, 5, 6, 4, 2, 25, 23, 3, 2, 2, 2, 26, 29, 3, 2, 2, 2, 27, 25, 3, 2, 2, 2, 27, 28, 3, 2, 2, 2, 28, 31, 3, 2, 2, 2, 29, 27, 3, 2, 2, 2, 30, 32, 7, 4, 2, 2, 31, 30, 3, 2, 2, 2, 31, 32, 3, 2, 2, 2, 32, 33, 3, 2, 2, 2, 33, 34, 7, 5, 2, 2, 34, 38, 3, 2, 2, 2, 35, 36, 7, 3, 2, 2, 36, 38, 7, 5, 2, 2, 37, 21, 3, 2, 2, 2, 37, 35, 3, 2, 2, 2, 38, 5, 3, 2, 2, 2, 39, 40, 5, 8, 5, 2, 40, 41, 7, 6, 2, 2, 41, 42, 5, 10, 6, 2, 42, 7, 3, 2, 2, 2, 43, 44, 9, 2, 2, 2, 44, 9, 3, 2, 2, 2, 45, 51, 7, 12, 2, 2, 46, 51, 5, 14, 8, 2, 47, 51, 5, 4, 3, 2, 48, 51, 5, 12, 7, 2, 49, 51, 7, 11, 2, 2, 50, 45, 3, 2, 2, 2, 50, 46, 3, 2, 2, 2, 50, 47, 3, 2, 2, 2, 50, 48, 3, 2, 2, 2, 50, 49, 3, 2, 2, 2, 51, 11, 3, 2, 2, 2, 52, 53, 7, 7, 2, 2, 53, 58, 5, 10, 6, 2, 54, 55, 7, 4, 2, 2, 55, 57, 5, 10, 6, 2, 56, 54, 3, 2, 2, 2, 57, 60, 3, 2, 2, 2, 58, 56, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 62, 3, 2, 2, 2, 60, 58, 3, 2, 2, 2, 61, 63, 7, 4, 2, 2, 62, 61, 3, 2, 2, 2, 62, 63, 3, 2, 2, 2, 63, 64, 3, 2, 2, 2, 64, 65, 7, 8, 2, 2, 65, 69, 3, 2, 2, 2, 66, 67, 7, 7, 2, 2, 67, 69, 7, 8, 2, 2, 68, 52, 3, 2, 2, 2, 68, 66, 3, 2, 2, 2, 69, 13, 3, 2, 2, 2, 70, 72, 7, 15, 2, 2, 71, 70, 3, 2, 2, 2, 71, 72, 3, 2, 2, 2, 72, 73, 3, 2, 2, 2, 73, 74, 9, 3, 2, 2, 74, 15, 3, 2, 2, 2, 11, 17, 27, 31, 37, 50, 58, 62, 68, 71] \ No newline at end of file diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.tokens b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.tokens index a8b4250d32d..8e5f5a3651b 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.tokens +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5.tokens @@ -13,9 +13,11 @@ NUMERIC_LITERAL=12 SYMBOL=13 IDENTIFIER=14 WS=15 +UTF_8_BOM=16 '{'=1 ','=2 '}'=3 ':'=4 '['=5 ']'=6 +'\uFEFF'=16 diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseListener.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseListener.java index 677562e2101..76c44d389d9 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseListener.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseListener.java @@ -13,9 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; - +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ErrorNode; import org.antlr.v4.runtime.tree.TerminalNode; diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseVisitor.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseVisitor.java index a84cbbededf..58c2439cc6f 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseVisitor.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5BaseVisitor.java @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; /** diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.interp b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.interp index f9eb175cb0f..79a0c39e3a3 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.interp +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.interp @@ -15,6 +15,7 @@ null null null null +'\uFEFF' token symbolic names: null @@ -33,6 +34,7 @@ NUMERIC_LITERAL SYMBOL IDENTIFIER WS +UTF_8_BOM rule names: T__0 @@ -60,6 +62,7 @@ IDENTIFIER_PART UNICODE_SEQUENCE NEWLINE WS +UTF_8_BOM channel names: DEFAULT_TOKEN_CHANNEL @@ -69,4 +72,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 17, 249, 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, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 70, 10, 8, 12, 8, 14, 8, 73, 11, 8, 3, 8, 3, 8, 5, 8, 77, 10, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 85, 10, 9, 12, 9, 14, 9, 88, 11, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 108, 10, 10, 3, 11, 3, 11, 7, 11, 112, 10, 11, 12, 11, 14, 11, 115, 11, 11, 3, 11, 3, 11, 3, 11, 7, 11, 120, 10, 11, 12, 11, 14, 11, 123, 11, 11, 3, 11, 5, 11, 126, 10, 11, 3, 12, 3, 12, 5, 12, 130, 10, 12, 3, 13, 3, 13, 5, 13, 134, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 146, 10, 14, 3, 15, 3, 15, 3, 15, 7, 15, 151, 10, 15, 12, 15, 14, 15, 154, 11, 15, 5, 15, 156, 10, 15, 3, 15, 5, 15, 159, 10, 15, 3, 15, 3, 15, 6, 15, 163, 10, 15, 13, 15, 14, 15, 164, 3, 15, 5, 15, 168, 10, 15, 3, 15, 3, 15, 3, 15, 6, 15, 173, 10, 15, 13, 15, 14, 15, 174, 5, 15, 177, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 190, 10, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 7, 19, 199, 10, 19, 12, 19, 14, 19, 202, 11, 19, 5, 19, 204, 10, 19, 3, 20, 3, 20, 5, 20, 208, 10, 20, 3, 20, 7, 20, 211, 10, 20, 12, 20, 14, 20, 214, 11, 20, 3, 21, 3, 21, 7, 21, 218, 10, 21, 12, 21, 14, 21, 221, 11, 21, 3, 22, 3, 22, 3, 22, 5, 22, 226, 10, 22, 3, 23, 3, 23, 5, 23, 230, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 5, 25, 241, 10, 25, 3, 26, 6, 26, 244, 10, 26, 13, 26, 14, 26, 245, 3, 26, 3, 26, 4, 71, 86, 2, 27, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 2, 25, 2, 27, 2, 29, 13, 31, 14, 33, 15, 35, 2, 37, 2, 39, 2, 41, 16, 43, 2, 45, 2, 47, 2, 49, 2, 51, 17, 3, 2, 14, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 12, 2, 36, 36, 41, 41, 49, 49, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120, 14, 2, 12, 12, 15, 15, 36, 36, 41, 41, 50, 59, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 120, 122, 122, 3, 2, 50, 59, 4, 2, 90, 90, 122, 122, 4, 2, 45, 45, 47, 47, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 5, 2, 12, 12, 15, 15, 8234, 8235, 8, 2, 11, 12, 15, 15, 34, 34, 162, 162, 8197, 8197, 65281, 65281, 4, 589, 2, 38, 2, 38, 2, 67, 2, 92, 2, 97, 2, 97, 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, 1379, 2, 1417, 2, 1490, 2, 1516, 2, 1522, 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, 2239, 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, 3335, 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, 3721, 2, 3722, 2, 3724, 2, 3724, 2, 3727, 2, 3727, 2, 3734, 2, 3737, 2, 3739, 2, 3745, 2, 3747, 2, 3749, 2, 3751, 2, 3751, 2, 3753, 2, 3753, 2, 3756, 2, 3757, 2, 3759, 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, 6265, 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, 7403, 2, 7406, 2, 7408, 2, 7411, 2, 7415, 2, 7416, 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, 12592, 2, 12595, 2, 12688, 2, 12706, 2, 12732, 2, 12786, 2, 12801, 2, 13314, 2, 19895, 2, 19970, 2, 40940, 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, 42928, 2, 42930, 2, 42937, 2, 43001, 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, 43263, 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, 43879, 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, 2613, 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, 4101, 3, 4153, 3, 4229, 3, 4273, 3, 4306, 3, 4330, 3, 4357, 3, 4392, 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, 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, 5890, 3, 5915, 3, 6306, 3, 6369, 3, 6401, 3, 6401, 3, 6658, 3, 6658, 3, 6669, 3, 6708, 3, 6716, 3, 6716, 3, 6738, 3, 6738, 3, 6750, 3, 6789, 3, 6792, 3, 6795, 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, 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, 28418, 3, 28486, 3, 28498, 3, 28498, 3, 28565, 3, 28577, 3, 28642, 3, 28643, 3, 28674, 3, 34798, 3, 34818, 3, 35572, 3, 45058, 3, 45344, 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, 59394, 3, 59590, 3, 59650, 3, 59717, 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, 42712, 4, 42754, 4, 46902, 4, 46914, 4, 47135, 4, 47138, 4, 52899, 4, 52914, 4, 60386, 4, 63490, 4, 64031, 4, 377, 2, 50, 2, 59, 2, 97, 2, 97, 2, 180, 2, 181, 2, 187, 2, 187, 2, 190, 2, 192, 2, 770, 2, 881, 2, 1157, 2, 1163, 2, 1427, 2, 1471, 2, 1473, 2, 1473, 2, 1475, 2, 1476, 2, 1478, 2, 1479, 2, 1481, 2, 1481, 2, 1554, 2, 1564, 2, 1613, 2, 1643, 2, 1650, 2, 1650, 2, 1752, 2, 1758, 2, 1761, 2, 1766, 2, 1769, 2, 1770, 2, 1772, 2, 1775, 2, 1778, 2, 1787, 2, 1811, 2, 1811, 2, 1842, 2, 1868, 2, 1960, 2, 1970, 2, 1986, 2, 1995, 2, 2029, 2, 2037, 2, 2072, 2, 2075, 2, 2077, 2, 2085, 2, 2087, 2, 2089, 2, 2091, 2, 2095, 2, 2139, 2, 2141, 2, 2262, 2, 2275, 2, 2277, 2, 2309, 2, 2364, 2, 2366, 2, 2368, 2, 2385, 2, 2387, 2, 2393, 2, 2404, 2, 2405, 2, 2408, 2, 2417, 2, 2435, 2, 2437, 2, 2494, 2, 2494, 2, 2496, 2, 2502, 2, 2505, 2, 2506, 2, 2509, 2, 2511, 2, 2521, 2, 2521, 2, 2532, 2, 2533, 2, 2536, 2, 2545, 2, 2550, 2, 2555, 2, 2563, 2, 2565, 2, 2622, 2, 2622, 2, 2624, 2, 2628, 2, 2633, 2, 2634, 2, 2637, 2, 2639, 2, 2643, 2, 2643, 2, 2664, 2, 2675, 2, 2679, 2, 2679, 2, 2691, 2, 2693, 2, 2750, 2, 2750, 2, 2752, 2, 2759, 2, 2761, 2, 2763, 2, 2765, 2, 2767, 2, 2788, 2, 2789, 2, 2792, 2, 2801, 2, 2812, 2, 2817, 2, 2819, 2, 2821, 2, 2878, 2, 2878, 2, 2880, 2, 2886, 2, 2889, 2, 2890, 2, 2893, 2, 2895, 2, 2904, 2, 2905, 2, 2916, 2, 2917, 2, 2920, 2, 2929, 2, 2932, 2, 2937, 2, 2948, 2, 2948, 2, 3008, 2, 3012, 2, 3016, 2, 3018, 2, 3020, 2, 3023, 2, 3033, 2, 3033, 2, 3048, 2, 3060, 2, 3074, 2, 3077, 2, 3136, 2, 3142, 2, 3144, 2, 3146, 2, 3148, 2, 3151, 2, 3159, 2, 3160, 2, 3172, 2, 3173, 2, 3176, 2, 3185, 2, 3194, 2, 3200, 2, 3203, 2, 3205, 2, 3262, 2, 3262, 2, 3264, 2, 3270, 2, 3272, 2, 3274, 2, 3276, 2, 3279, 2, 3287, 2, 3288, 2, 3300, 2, 3301, 2, 3304, 2, 3313, 2, 3330, 2, 3333, 2, 3389, 2, 3390, 2, 3392, 2, 3398, 2, 3400, 2, 3402, 2, 3404, 2, 3407, 2, 3417, 2, 3424, 2, 3428, 2, 3429, 2, 3432, 2, 3450, 2, 3460, 2, 3461, 2, 3532, 2, 3532, 2, 3537, 2, 3542, 2, 3544, 2, 3544, 2, 3546, 2, 3553, 2, 3560, 2, 3569, 2, 3572, 2, 3573, 2, 3635, 2, 3635, 2, 3638, 2, 3644, 2, 3657, 2, 3664, 2, 3666, 2, 3675, 2, 3763, 2, 3763, 2, 3766, 2, 3771, 2, 3773, 2, 3774, 2, 3786, 2, 3791, 2, 3794, 2, 3803, 2, 3866, 2, 3867, 2, 3874, 2, 3893, 2, 3895, 2, 3895, 2, 3897, 2, 3897, 2, 3899, 2, 3899, 2, 3904, 2, 3905, 2, 3955, 2, 3974, 2, 3976, 2, 3977, 2, 3983, 2, 3993, 2, 3995, 2, 4030, 2, 4040, 2, 4040, 2, 4141, 2, 4160, 2, 4162, 2, 4171, 2, 4184, 2, 4187, 2, 4192, 2, 4194, 2, 4196, 2, 4198, 2, 4201, 2, 4207, 2, 4211, 2, 4214, 2, 4228, 2, 4239, 2, 4241, 2, 4255, 2, 4959, 2, 4961, 2, 4971, 2, 4990, 2, 5872, 2, 5874, 2, 5908, 2, 5910, 2, 5940, 2, 5942, 2, 5972, 2, 5973, 2, 6004, 2, 6005, 2, 6070, 2, 6101, 2, 6111, 2, 6111, 2, 6114, 2, 6123, 2, 6130, 2, 6139, 2, 6157, 2, 6159, 2, 6162, 2, 6171, 2, 6279, 2, 6280, 2, 6315, 2, 6315, 2, 6434, 2, 6445, 2, 6450, 2, 6461, 2, 6472, 2, 6481, 2, 6610, 2, 6620, 2, 6681, 2, 6685, 2, 6743, 2, 6752, 2, 6754, 2, 6782, 2, 6785, 2, 6795, 2, 6802, 2, 6811, 2, 6834, 2, 6848, 2, 6914, 2, 6918, 2, 6966, 2, 6982, 2, 6994, 2, 7003, 2, 7021, 2, 7029, 2, 7042, 2, 7044, 2, 7075, 2, 7087, 2, 7090, 2, 7099, 2, 7144, 2, 7157, 2, 7206, 2, 7225, 2, 7234, 2, 7243, 2, 7250, 2, 7259, 2, 7378, 2, 7380, 2, 7382, 2, 7402, 2, 7407, 2, 7407, 2, 7412, 2, 7414, 2, 7417, 2, 7419, 2, 7618, 2, 7675, 2, 7677, 2, 7681, 2, 8206, 2, 8207, 2, 8257, 2, 8258, 2, 8278, 2, 8278, 2, 8306, 2, 8306, 2, 8310, 2, 8315, 2, 8322, 2, 8331, 2, 8402, 2, 8434, 2, 8530, 2, 8580, 2, 8583, 2, 8587, 2, 9314, 2, 9373, 2, 9452, 2, 9473, 2, 10104, 2, 10133, 2, 11505, 2, 11507, 2, 11519, 2, 11519, 2, 11649, 2, 11649, 2, 11746, 2, 11777, 2, 12297, 2, 12297, 2, 12323, 2, 12337, 2, 12346, 2, 12348, 2, 12443, 2, 12444, 2, 12692, 2, 12695, 2, 12834, 2, 12843, 2, 12874, 2, 12881, 2, 12883, 2, 12897, 2, 12930, 2, 12939, 2, 12979, 2, 12993, 2, 42530, 2, 42539, 2, 42609, 2, 42612, 2, 42614, 2, 42623, 2, 42656, 2, 42657, 2, 42728, 2, 42739, 2, 43012, 2, 43012, 2, 43016, 2, 43016, 2, 43021, 2, 43021, 2, 43045, 2, 43049, 2, 43058, 2, 43063, 2, 43138, 2, 43139, 2, 43190, 2, 43207, 2, 43218, 2, 43227, 2, 43234, 2, 43251, 2, 43266, 2, 43275, 2, 43304, 2, 43311, 2, 43337, 2, 43349, 2, 43394, 2, 43397, 2, 43445, 2, 43458, 2, 43474, 2, 43483, 2, 43495, 2, 43495, 2, 43506, 2, 43515, 2, 43563, 2, 43576, 2, 43589, 2, 43589, 2, 43598, 2, 43599, 2, 43602, 2, 43611, 2, 43645, 2, 43647, 2, 43698, 2, 43698, 2, 43700, 2, 43702, 2, 43705, 2, 43706, 2, 43712, 2, 43713, 2, 43715, 2, 43715, 2, 43757, 2, 43761, 2, 43767, 2, 43768, 2, 44005, 2, 44012, 2, 44014, 2, 44015, 2, 44018, 2, 44027, 2, 64288, 2, 64288, 2, 65026, 2, 65041, 2, 65058, 2, 65073, 2, 65077, 2, 65078, 2, 65103, 2, 65105, 2, 65298, 2, 65307, 2, 65345, 2, 65345, 2, 265, 3, 309, 3, 322, 3, 378, 3, 396, 3, 397, 3, 511, 3, 511, 3, 738, 3, 765, 3, 802, 3, 805, 3, 835, 3, 835, 3, 844, 3, 844, 3, 888, 3, 892, 3, 979, 3, 983, 3, 1186, 3, 1195, 3, 2138, 3, 2145, 3, 2171, 3, 2177, 3, 2217, 3, 2225, 3, 2301, 3, 2305, 3, 2328, 3, 2333, 3, 2494, 3, 2495, 3, 2498, 3, 2513, 3, 2516, 3, 2561, 3, 2563, 3, 2565, 3, 2567, 3, 2568, 3, 2574, 3, 2577, 3, 2618, 3, 2620, 3, 2625, 3, 2633, 3, 2687, 3, 2688, 3, 2719, 3, 2721, 3, 2791, 3, 2792, 3, 2797, 3, 2801, 3, 2906, 3, 2913, 3, 2938, 3, 2945, 3, 2987, 3, 2993, 3, 3324, 3, 3329, 3, 3682, 3, 3712, 3, 4098, 3, 4100, 3, 4154, 3, 4168, 3, 4180, 3, 4209, 3, 4225, 3, 4228, 3, 4274, 3, 4284, 3, 4338, 3, 4347, 3, 4354, 3, 4356, 3, 4393, 3, 4406, 3, 4408, 3, 4417, 3, 4469, 3, 4469, 3, 4482, 3, 4484, 3, 4533, 3, 4546, 3, 4556, 3, 4558, 3, 4562, 3, 4571, 3, 4579, 3, 4598, 3, 4654, 3, 4665, 3, 4672, 3, 4672, 3, 4833, 3, 4844, 3, 4850, 3, 4859, 3, 4866, 3, 4869, 3, 4926, 3, 4926, 3, 4928, 3, 4934, 3, 4937, 3, 4938, 3, 4941, 3, 4943, 3, 4953, 3, 4953, 3, 4964, 3, 4965, 3, 4968, 3, 4974, 3, 4978, 3, 4982, 3, 5175, 3, 5192, 3, 5202, 3, 5211, 3, 5298, 3, 5317, 3, 5330, 3, 5339, 3, 5553, 3, 5559, 3, 5562, 3, 5570, 3, 5598, 3, 5599, 3, 5682, 3, 5698, 3, 5714, 3, 5723, 3, 5805, 3, 5817, 3, 5826, 3, 5835, 3, 5919, 3, 5933, 3, 5938, 3, 5949, 3, 6370, 3, 6388, 3, 6659, 3, 6668, 3, 6709, 3, 6715, 3, 6717, 3, 6720, 3, 6729, 3, 6729, 3, 6739, 3, 6749, 3, 6796, 3, 6811, 3, 7217, 3, 7224, 3, 7226, 3, 7233, 3, 7250, 3, 7278, 3, 7316, 3, 7337, 3, 7339, 3, 7352, 3, 7475, 3, 7480, 3, 7484, 3, 7484, 3, 7486, 3, 7487, 3, 7489, 3, 7495, 3, 7497, 3, 7497, 3, 7506, 3, 7515, 3, 9218, 3, 9328, 3, 27234, 3, 27243, 3, 27378, 3, 27382, 3, 27442, 3, 27448, 3, 27474, 3, 27483, 3, 27485, 3, 27491, 3, 28499, 3, 28544, 3, 28561, 3, 28564, 3, 48287, 3, 48288, 3, 53607, 3, 53611, 3, 53615, 3, 53620, 3, 53629, 3, 53636, 3, 53639, 3, 53645, 3, 53676, 3, 53679, 3, 53828, 3, 53830, 3, 54114, 3, 54131, 3, 55248, 3, 55297, 3, 55810, 3, 55864, 3, 55869, 3, 55918, 3, 55927, 3, 55927, 3, 55942, 3, 55942, 3, 55965, 3, 55969, 3, 55971, 3, 55985, 3, 57346, 3, 57352, 3, 57354, 3, 57370, 3, 57373, 3, 57379, 3, 57381, 3, 57382, 3, 57384, 3, 57388, 3, 59593, 3, 59608, 3, 59718, 3, 59724, 3, 59730, 3, 59739, 3, 61698, 3, 61710, 3, 258, 16, 497, 16, 271, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 3, 53, 3, 2, 2, 2, 5, 55, 3, 2, 2, 2, 7, 57, 3, 2, 2, 2, 9, 59, 3, 2, 2, 2, 11, 61, 3, 2, 2, 2, 13, 63, 3, 2, 2, 2, 15, 65, 3, 2, 2, 2, 17, 80, 3, 2, 2, 2, 19, 107, 3, 2, 2, 2, 21, 125, 3, 2, 2, 2, 23, 129, 3, 2, 2, 2, 25, 133, 3, 2, 2, 2, 27, 135, 3, 2, 2, 2, 29, 176, 3, 2, 2, 2, 31, 189, 3, 2, 2, 2, 33, 191, 3, 2, 2, 2, 35, 193, 3, 2, 2, 2, 37, 203, 3, 2, 2, 2, 39, 205, 3, 2, 2, 2, 41, 215, 3, 2, 2, 2, 43, 225, 3, 2, 2, 2, 45, 229, 3, 2, 2, 2, 47, 231, 3, 2, 2, 2, 49, 240, 3, 2, 2, 2, 51, 243, 3, 2, 2, 2, 53, 54, 7, 125, 2, 2, 54, 4, 3, 2, 2, 2, 55, 56, 7, 46, 2, 2, 56, 6, 3, 2, 2, 2, 57, 58, 7, 127, 2, 2, 58, 8, 3, 2, 2, 2, 59, 60, 7, 60, 2, 2, 60, 10, 3, 2, 2, 2, 61, 62, 7, 93, 2, 2, 62, 12, 3, 2, 2, 2, 63, 64, 7, 95, 2, 2, 64, 14, 3, 2, 2, 2, 65, 66, 7, 49, 2, 2, 66, 67, 7, 49, 2, 2, 67, 71, 3, 2, 2, 2, 68, 70, 11, 2, 2, 2, 69, 68, 3, 2, 2, 2, 70, 73, 3, 2, 2, 2, 71, 72, 3, 2, 2, 2, 71, 69, 3, 2, 2, 2, 72, 76, 3, 2, 2, 2, 73, 71, 3, 2, 2, 2, 74, 77, 5, 49, 25, 2, 75, 77, 7, 2, 2, 3, 76, 74, 3, 2, 2, 2, 76, 75, 3, 2, 2, 2, 77, 78, 3, 2, 2, 2, 78, 79, 8, 8, 2, 2, 79, 16, 3, 2, 2, 2, 80, 81, 7, 49, 2, 2, 81, 82, 7, 44, 2, 2, 82, 86, 3, 2, 2, 2, 83, 85, 11, 2, 2, 2, 84, 83, 3, 2, 2, 2, 85, 88, 3, 2, 2, 2, 86, 87, 3, 2, 2, 2, 86, 84, 3, 2, 2, 2, 87, 89, 3, 2, 2, 2, 88, 86, 3, 2, 2, 2, 89, 90, 7, 44, 2, 2, 90, 91, 7, 49, 2, 2, 91, 92, 3, 2, 2, 2, 92, 93, 8, 9, 2, 2, 93, 18, 3, 2, 2, 2, 94, 95, 7, 118, 2, 2, 95, 96, 7, 116, 2, 2, 96, 97, 7, 119, 2, 2, 97, 108, 7, 103, 2, 2, 98, 99, 7, 104, 2, 2, 99, 100, 7, 99, 2, 2, 100, 101, 7, 110, 2, 2, 101, 102, 7, 117, 2, 2, 102, 108, 7, 103, 2, 2, 103, 104, 7, 112, 2, 2, 104, 105, 7, 119, 2, 2, 105, 106, 7, 110, 2, 2, 106, 108, 7, 110, 2, 2, 107, 94, 3, 2, 2, 2, 107, 98, 3, 2, 2, 2, 107, 103, 3, 2, 2, 2, 108, 20, 3, 2, 2, 2, 109, 113, 7, 36, 2, 2, 110, 112, 5, 23, 12, 2, 111, 110, 3, 2, 2, 2, 112, 115, 3, 2, 2, 2, 113, 111, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 116, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 116, 126, 7, 36, 2, 2, 117, 121, 7, 41, 2, 2, 118, 120, 5, 25, 13, 2, 119, 118, 3, 2, 2, 2, 120, 123, 3, 2, 2, 2, 121, 119, 3, 2, 2, 2, 121, 122, 3, 2, 2, 2, 122, 124, 3, 2, 2, 2, 123, 121, 3, 2, 2, 2, 124, 126, 7, 41, 2, 2, 125, 109, 3, 2, 2, 2, 125, 117, 3, 2, 2, 2, 126, 22, 3, 2, 2, 2, 127, 130, 10, 2, 2, 2, 128, 130, 5, 27, 14, 2, 129, 127, 3, 2, 2, 2, 129, 128, 3, 2, 2, 2, 130, 24, 3, 2, 2, 2, 131, 134, 10, 3, 2, 2, 132, 134, 5, 27, 14, 2, 133, 131, 3, 2, 2, 2, 133, 132, 3, 2, 2, 2, 134, 26, 3, 2, 2, 2, 135, 145, 7, 94, 2, 2, 136, 146, 5, 49, 25, 2, 137, 146, 5, 47, 24, 2, 138, 146, 9, 4, 2, 2, 139, 146, 10, 5, 2, 2, 140, 146, 7, 50, 2, 2, 141, 142, 7, 122, 2, 2, 142, 143, 5, 35, 18, 2, 143, 144, 5, 35, 18, 2, 144, 146, 3, 2, 2, 2, 145, 136, 3, 2, 2, 2, 145, 137, 3, 2, 2, 2, 145, 138, 3, 2, 2, 2, 145, 139, 3, 2, 2, 2, 145, 140, 3, 2, 2, 2, 145, 141, 3, 2, 2, 2, 146, 28, 3, 2, 2, 2, 147, 155, 5, 37, 19, 2, 148, 152, 7, 48, 2, 2, 149, 151, 9, 6, 2, 2, 150, 149, 3, 2, 2, 2, 151, 154, 3, 2, 2, 2, 152, 150, 3, 2, 2, 2, 152, 153, 3, 2, 2, 2, 153, 156, 3, 2, 2, 2, 154, 152, 3, 2, 2, 2, 155, 148, 3, 2, 2, 2, 155, 156, 3, 2, 2, 2, 156, 158, 3, 2, 2, 2, 157, 159, 5, 39, 20, 2, 158, 157, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 177, 3, 2, 2, 2, 160, 162, 7, 48, 2, 2, 161, 163, 9, 6, 2, 2, 162, 161, 3, 2, 2, 2, 163, 164, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 167, 3, 2, 2, 2, 166, 168, 5, 39, 20, 2, 167, 166, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 177, 3, 2, 2, 2, 169, 170, 7, 50, 2, 2, 170, 172, 9, 7, 2, 2, 171, 173, 5, 35, 18, 2, 172, 171, 3, 2, 2, 2, 173, 174, 3, 2, 2, 2, 174, 172, 3, 2, 2, 2, 174, 175, 3, 2, 2, 2, 175, 177, 3, 2, 2, 2, 176, 147, 3, 2, 2, 2, 176, 160, 3, 2, 2, 2, 176, 169, 3, 2, 2, 2, 177, 30, 3, 2, 2, 2, 178, 179, 7, 75, 2, 2, 179, 180, 7, 112, 2, 2, 180, 181, 7, 104, 2, 2, 181, 182, 7, 107, 2, 2, 182, 183, 7, 112, 2, 2, 183, 184, 7, 107, 2, 2, 184, 185, 7, 118, 2, 2, 185, 190, 7, 123, 2, 2, 186, 187, 7, 80, 2, 2, 187, 188, 7, 99, 2, 2, 188, 190, 7, 80, 2, 2, 189, 178, 3, 2, 2, 2, 189, 186, 3, 2, 2, 2, 190, 32, 3, 2, 2, 2, 191, 192, 9, 8, 2, 2, 192, 34, 3, 2, 2, 2, 193, 194, 9, 9, 2, 2, 194, 36, 3, 2, 2, 2, 195, 204, 7, 50, 2, 2, 196, 200, 9, 10, 2, 2, 197, 199, 9, 6, 2, 2, 198, 197, 3, 2, 2, 2, 199, 202, 3, 2, 2, 2, 200, 198, 3, 2, 2, 2, 200, 201, 3, 2, 2, 2, 201, 204, 3, 2, 2, 2, 202, 200, 3, 2, 2, 2, 203, 195, 3, 2, 2, 2, 203, 196, 3, 2, 2, 2, 204, 38, 3, 2, 2, 2, 205, 207, 9, 11, 2, 2, 206, 208, 5, 33, 17, 2, 207, 206, 3, 2, 2, 2, 207, 208, 3, 2, 2, 2, 208, 212, 3, 2, 2, 2, 209, 211, 9, 6, 2, 2, 210, 209, 3, 2, 2, 2, 211, 214, 3, 2, 2, 2, 212, 210, 3, 2, 2, 2, 212, 213, 3, 2, 2, 2, 213, 40, 3, 2, 2, 2, 214, 212, 3, 2, 2, 2, 215, 219, 5, 43, 22, 2, 216, 218, 5, 45, 23, 2, 217, 216, 3, 2, 2, 2, 218, 221, 3, 2, 2, 2, 219, 217, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 42, 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 222, 226, 9, 14, 2, 2, 223, 224, 7, 94, 2, 2, 224, 226, 5, 47, 24, 2, 225, 222, 3, 2, 2, 2, 225, 223, 3, 2, 2, 2, 226, 44, 3, 2, 2, 2, 227, 230, 5, 43, 22, 2, 228, 230, 9, 15, 2, 2, 229, 227, 3, 2, 2, 2, 229, 228, 3, 2, 2, 2, 230, 46, 3, 2, 2, 2, 231, 232, 7, 119, 2, 2, 232, 233, 5, 35, 18, 2, 233, 234, 5, 35, 18, 2, 234, 235, 5, 35, 18, 2, 235, 236, 5, 35, 18, 2, 236, 48, 3, 2, 2, 2, 237, 238, 7, 15, 2, 2, 238, 241, 7, 12, 2, 2, 239, 241, 9, 12, 2, 2, 240, 237, 3, 2, 2, 2, 240, 239, 3, 2, 2, 2, 241, 50, 3, 2, 2, 2, 242, 244, 9, 13, 2, 2, 243, 242, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 243, 3, 2, 2, 2, 245, 246, 3, 2, 2, 2, 246, 247, 3, 2, 2, 2, 247, 248, 8, 26, 2, 2, 248, 52, 3, 2, 2, 2, 30, 2, 71, 76, 86, 107, 113, 121, 125, 129, 133, 145, 152, 155, 158, 164, 167, 174, 176, 189, 200, 203, 207, 212, 219, 225, 229, 240, 245, 3, 8, 2, 2] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 18, 255, 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, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 72, 10, 8, 12, 8, 14, 8, 75, 11, 8, 3, 8, 3, 8, 5, 8, 79, 10, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 87, 10, 9, 12, 9, 14, 9, 90, 11, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 110, 10, 10, 3, 11, 3, 11, 7, 11, 114, 10, 11, 12, 11, 14, 11, 117, 11, 11, 3, 11, 3, 11, 3, 11, 7, 11, 122, 10, 11, 12, 11, 14, 11, 125, 11, 11, 3, 11, 5, 11, 128, 10, 11, 3, 12, 3, 12, 5, 12, 132, 10, 12, 3, 13, 3, 13, 5, 13, 136, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 148, 10, 14, 3, 15, 3, 15, 3, 15, 7, 15, 153, 10, 15, 12, 15, 14, 15, 156, 11, 15, 5, 15, 158, 10, 15, 3, 15, 5, 15, 161, 10, 15, 3, 15, 3, 15, 6, 15, 165, 10, 15, 13, 15, 14, 15, 166, 3, 15, 5, 15, 170, 10, 15, 3, 15, 3, 15, 3, 15, 6, 15, 175, 10, 15, 13, 15, 14, 15, 176, 5, 15, 179, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 192, 10, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 7, 19, 201, 10, 19, 12, 19, 14, 19, 204, 11, 19, 5, 19, 206, 10, 19, 3, 20, 3, 20, 5, 20, 210, 10, 20, 3, 20, 7, 20, 213, 10, 20, 12, 20, 14, 20, 216, 11, 20, 3, 21, 3, 21, 7, 21, 220, 10, 21, 12, 21, 14, 21, 223, 11, 21, 3, 22, 3, 22, 3, 22, 5, 22, 228, 10, 22, 3, 23, 3, 23, 5, 23, 232, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 5, 25, 243, 10, 25, 3, 26, 6, 26, 246, 10, 26, 13, 26, 14, 26, 247, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 4, 73, 88, 2, 28, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 2, 25, 2, 27, 2, 29, 13, 31, 14, 33, 15, 35, 2, 37, 2, 39, 2, 41, 16, 43, 2, 45, 2, 47, 2, 49, 2, 51, 17, 53, 18, 3, 2, 14, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 12, 2, 36, 36, 41, 41, 49, 49, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120, 14, 2, 12, 12, 15, 15, 36, 36, 41, 41, 50, 59, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 120, 122, 122, 3, 2, 50, 59, 4, 2, 90, 90, 122, 122, 4, 2, 45, 45, 47, 47, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 5, 2, 12, 12, 15, 15, 8234, 8235, 8, 2, 11, 12, 15, 15, 34, 34, 162, 162, 8197, 8197, 65281, 65281, 4, 589, 2, 38, 2, 38, 2, 67, 2, 92, 2, 97, 2, 97, 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, 1379, 2, 1417, 2, 1490, 2, 1516, 2, 1522, 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, 2239, 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, 3335, 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, 3721, 2, 3722, 2, 3724, 2, 3724, 2, 3727, 2, 3727, 2, 3734, 2, 3737, 2, 3739, 2, 3745, 2, 3747, 2, 3749, 2, 3751, 2, 3751, 2, 3753, 2, 3753, 2, 3756, 2, 3757, 2, 3759, 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, 6265, 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, 7403, 2, 7406, 2, 7408, 2, 7411, 2, 7415, 2, 7416, 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, 12592, 2, 12595, 2, 12688, 2, 12706, 2, 12732, 2, 12786, 2, 12801, 2, 13314, 2, 19895, 2, 19970, 2, 40940, 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, 42928, 2, 42930, 2, 42937, 2, 43001, 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, 43263, 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, 43879, 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, 2613, 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, 4101, 3, 4153, 3, 4229, 3, 4273, 3, 4306, 3, 4330, 3, 4357, 3, 4392, 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, 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, 5890, 3, 5915, 3, 6306, 3, 6369, 3, 6401, 3, 6401, 3, 6658, 3, 6658, 3, 6669, 3, 6708, 3, 6716, 3, 6716, 3, 6738, 3, 6738, 3, 6750, 3, 6789, 3, 6792, 3, 6795, 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, 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, 28418, 3, 28486, 3, 28498, 3, 28498, 3, 28565, 3, 28577, 3, 28642, 3, 28643, 3, 28674, 3, 34798, 3, 34818, 3, 35572, 3, 45058, 3, 45344, 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, 59394, 3, 59590, 3, 59650, 3, 59717, 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, 42712, 4, 42754, 4, 46902, 4, 46914, 4, 47135, 4, 47138, 4, 52899, 4, 52914, 4, 60386, 4, 63490, 4, 64031, 4, 377, 2, 50, 2, 59, 2, 97, 2, 97, 2, 180, 2, 181, 2, 187, 2, 187, 2, 190, 2, 192, 2, 770, 2, 881, 2, 1157, 2, 1163, 2, 1427, 2, 1471, 2, 1473, 2, 1473, 2, 1475, 2, 1476, 2, 1478, 2, 1479, 2, 1481, 2, 1481, 2, 1554, 2, 1564, 2, 1613, 2, 1643, 2, 1650, 2, 1650, 2, 1752, 2, 1758, 2, 1761, 2, 1766, 2, 1769, 2, 1770, 2, 1772, 2, 1775, 2, 1778, 2, 1787, 2, 1811, 2, 1811, 2, 1842, 2, 1868, 2, 1960, 2, 1970, 2, 1986, 2, 1995, 2, 2029, 2, 2037, 2, 2072, 2, 2075, 2, 2077, 2, 2085, 2, 2087, 2, 2089, 2, 2091, 2, 2095, 2, 2139, 2, 2141, 2, 2262, 2, 2275, 2, 2277, 2, 2309, 2, 2364, 2, 2366, 2, 2368, 2, 2385, 2, 2387, 2, 2393, 2, 2404, 2, 2405, 2, 2408, 2, 2417, 2, 2435, 2, 2437, 2, 2494, 2, 2494, 2, 2496, 2, 2502, 2, 2505, 2, 2506, 2, 2509, 2, 2511, 2, 2521, 2, 2521, 2, 2532, 2, 2533, 2, 2536, 2, 2545, 2, 2550, 2, 2555, 2, 2563, 2, 2565, 2, 2622, 2, 2622, 2, 2624, 2, 2628, 2, 2633, 2, 2634, 2, 2637, 2, 2639, 2, 2643, 2, 2643, 2, 2664, 2, 2675, 2, 2679, 2, 2679, 2, 2691, 2, 2693, 2, 2750, 2, 2750, 2, 2752, 2, 2759, 2, 2761, 2, 2763, 2, 2765, 2, 2767, 2, 2788, 2, 2789, 2, 2792, 2, 2801, 2, 2812, 2, 2817, 2, 2819, 2, 2821, 2, 2878, 2, 2878, 2, 2880, 2, 2886, 2, 2889, 2, 2890, 2, 2893, 2, 2895, 2, 2904, 2, 2905, 2, 2916, 2, 2917, 2, 2920, 2, 2929, 2, 2932, 2, 2937, 2, 2948, 2, 2948, 2, 3008, 2, 3012, 2, 3016, 2, 3018, 2, 3020, 2, 3023, 2, 3033, 2, 3033, 2, 3048, 2, 3060, 2, 3074, 2, 3077, 2, 3136, 2, 3142, 2, 3144, 2, 3146, 2, 3148, 2, 3151, 2, 3159, 2, 3160, 2, 3172, 2, 3173, 2, 3176, 2, 3185, 2, 3194, 2, 3200, 2, 3203, 2, 3205, 2, 3262, 2, 3262, 2, 3264, 2, 3270, 2, 3272, 2, 3274, 2, 3276, 2, 3279, 2, 3287, 2, 3288, 2, 3300, 2, 3301, 2, 3304, 2, 3313, 2, 3330, 2, 3333, 2, 3389, 2, 3390, 2, 3392, 2, 3398, 2, 3400, 2, 3402, 2, 3404, 2, 3407, 2, 3417, 2, 3424, 2, 3428, 2, 3429, 2, 3432, 2, 3450, 2, 3460, 2, 3461, 2, 3532, 2, 3532, 2, 3537, 2, 3542, 2, 3544, 2, 3544, 2, 3546, 2, 3553, 2, 3560, 2, 3569, 2, 3572, 2, 3573, 2, 3635, 2, 3635, 2, 3638, 2, 3644, 2, 3657, 2, 3664, 2, 3666, 2, 3675, 2, 3763, 2, 3763, 2, 3766, 2, 3771, 2, 3773, 2, 3774, 2, 3786, 2, 3791, 2, 3794, 2, 3803, 2, 3866, 2, 3867, 2, 3874, 2, 3893, 2, 3895, 2, 3895, 2, 3897, 2, 3897, 2, 3899, 2, 3899, 2, 3904, 2, 3905, 2, 3955, 2, 3974, 2, 3976, 2, 3977, 2, 3983, 2, 3993, 2, 3995, 2, 4030, 2, 4040, 2, 4040, 2, 4141, 2, 4160, 2, 4162, 2, 4171, 2, 4184, 2, 4187, 2, 4192, 2, 4194, 2, 4196, 2, 4198, 2, 4201, 2, 4207, 2, 4211, 2, 4214, 2, 4228, 2, 4239, 2, 4241, 2, 4255, 2, 4959, 2, 4961, 2, 4971, 2, 4990, 2, 5872, 2, 5874, 2, 5908, 2, 5910, 2, 5940, 2, 5942, 2, 5972, 2, 5973, 2, 6004, 2, 6005, 2, 6070, 2, 6101, 2, 6111, 2, 6111, 2, 6114, 2, 6123, 2, 6130, 2, 6139, 2, 6157, 2, 6159, 2, 6162, 2, 6171, 2, 6279, 2, 6280, 2, 6315, 2, 6315, 2, 6434, 2, 6445, 2, 6450, 2, 6461, 2, 6472, 2, 6481, 2, 6610, 2, 6620, 2, 6681, 2, 6685, 2, 6743, 2, 6752, 2, 6754, 2, 6782, 2, 6785, 2, 6795, 2, 6802, 2, 6811, 2, 6834, 2, 6848, 2, 6914, 2, 6918, 2, 6966, 2, 6982, 2, 6994, 2, 7003, 2, 7021, 2, 7029, 2, 7042, 2, 7044, 2, 7075, 2, 7087, 2, 7090, 2, 7099, 2, 7144, 2, 7157, 2, 7206, 2, 7225, 2, 7234, 2, 7243, 2, 7250, 2, 7259, 2, 7378, 2, 7380, 2, 7382, 2, 7402, 2, 7407, 2, 7407, 2, 7412, 2, 7414, 2, 7417, 2, 7419, 2, 7618, 2, 7675, 2, 7677, 2, 7681, 2, 8206, 2, 8207, 2, 8257, 2, 8258, 2, 8278, 2, 8278, 2, 8306, 2, 8306, 2, 8310, 2, 8315, 2, 8322, 2, 8331, 2, 8402, 2, 8434, 2, 8530, 2, 8580, 2, 8583, 2, 8587, 2, 9314, 2, 9373, 2, 9452, 2, 9473, 2, 10104, 2, 10133, 2, 11505, 2, 11507, 2, 11519, 2, 11519, 2, 11649, 2, 11649, 2, 11746, 2, 11777, 2, 12297, 2, 12297, 2, 12323, 2, 12337, 2, 12346, 2, 12348, 2, 12443, 2, 12444, 2, 12692, 2, 12695, 2, 12834, 2, 12843, 2, 12874, 2, 12881, 2, 12883, 2, 12897, 2, 12930, 2, 12939, 2, 12979, 2, 12993, 2, 42530, 2, 42539, 2, 42609, 2, 42612, 2, 42614, 2, 42623, 2, 42656, 2, 42657, 2, 42728, 2, 42739, 2, 43012, 2, 43012, 2, 43016, 2, 43016, 2, 43021, 2, 43021, 2, 43045, 2, 43049, 2, 43058, 2, 43063, 2, 43138, 2, 43139, 2, 43190, 2, 43207, 2, 43218, 2, 43227, 2, 43234, 2, 43251, 2, 43266, 2, 43275, 2, 43304, 2, 43311, 2, 43337, 2, 43349, 2, 43394, 2, 43397, 2, 43445, 2, 43458, 2, 43474, 2, 43483, 2, 43495, 2, 43495, 2, 43506, 2, 43515, 2, 43563, 2, 43576, 2, 43589, 2, 43589, 2, 43598, 2, 43599, 2, 43602, 2, 43611, 2, 43645, 2, 43647, 2, 43698, 2, 43698, 2, 43700, 2, 43702, 2, 43705, 2, 43706, 2, 43712, 2, 43713, 2, 43715, 2, 43715, 2, 43757, 2, 43761, 2, 43767, 2, 43768, 2, 44005, 2, 44012, 2, 44014, 2, 44015, 2, 44018, 2, 44027, 2, 64288, 2, 64288, 2, 65026, 2, 65041, 2, 65058, 2, 65073, 2, 65077, 2, 65078, 2, 65103, 2, 65105, 2, 65298, 2, 65307, 2, 65345, 2, 65345, 2, 265, 3, 309, 3, 322, 3, 378, 3, 396, 3, 397, 3, 511, 3, 511, 3, 738, 3, 765, 3, 802, 3, 805, 3, 835, 3, 835, 3, 844, 3, 844, 3, 888, 3, 892, 3, 979, 3, 983, 3, 1186, 3, 1195, 3, 2138, 3, 2145, 3, 2171, 3, 2177, 3, 2217, 3, 2225, 3, 2301, 3, 2305, 3, 2328, 3, 2333, 3, 2494, 3, 2495, 3, 2498, 3, 2513, 3, 2516, 3, 2561, 3, 2563, 3, 2565, 3, 2567, 3, 2568, 3, 2574, 3, 2577, 3, 2618, 3, 2620, 3, 2625, 3, 2633, 3, 2687, 3, 2688, 3, 2719, 3, 2721, 3, 2791, 3, 2792, 3, 2797, 3, 2801, 3, 2906, 3, 2913, 3, 2938, 3, 2945, 3, 2987, 3, 2993, 3, 3324, 3, 3329, 3, 3682, 3, 3712, 3, 4098, 3, 4100, 3, 4154, 3, 4168, 3, 4180, 3, 4209, 3, 4225, 3, 4228, 3, 4274, 3, 4284, 3, 4338, 3, 4347, 3, 4354, 3, 4356, 3, 4393, 3, 4406, 3, 4408, 3, 4417, 3, 4469, 3, 4469, 3, 4482, 3, 4484, 3, 4533, 3, 4546, 3, 4556, 3, 4558, 3, 4562, 3, 4571, 3, 4579, 3, 4598, 3, 4654, 3, 4665, 3, 4672, 3, 4672, 3, 4833, 3, 4844, 3, 4850, 3, 4859, 3, 4866, 3, 4869, 3, 4926, 3, 4926, 3, 4928, 3, 4934, 3, 4937, 3, 4938, 3, 4941, 3, 4943, 3, 4953, 3, 4953, 3, 4964, 3, 4965, 3, 4968, 3, 4974, 3, 4978, 3, 4982, 3, 5175, 3, 5192, 3, 5202, 3, 5211, 3, 5298, 3, 5317, 3, 5330, 3, 5339, 3, 5553, 3, 5559, 3, 5562, 3, 5570, 3, 5598, 3, 5599, 3, 5682, 3, 5698, 3, 5714, 3, 5723, 3, 5805, 3, 5817, 3, 5826, 3, 5835, 3, 5919, 3, 5933, 3, 5938, 3, 5949, 3, 6370, 3, 6388, 3, 6659, 3, 6668, 3, 6709, 3, 6715, 3, 6717, 3, 6720, 3, 6729, 3, 6729, 3, 6739, 3, 6749, 3, 6796, 3, 6811, 3, 7217, 3, 7224, 3, 7226, 3, 7233, 3, 7250, 3, 7278, 3, 7316, 3, 7337, 3, 7339, 3, 7352, 3, 7475, 3, 7480, 3, 7484, 3, 7484, 3, 7486, 3, 7487, 3, 7489, 3, 7495, 3, 7497, 3, 7497, 3, 7506, 3, 7515, 3, 9218, 3, 9328, 3, 27234, 3, 27243, 3, 27378, 3, 27382, 3, 27442, 3, 27448, 3, 27474, 3, 27483, 3, 27485, 3, 27491, 3, 28499, 3, 28544, 3, 28561, 3, 28564, 3, 48287, 3, 48288, 3, 53607, 3, 53611, 3, 53615, 3, 53620, 3, 53629, 3, 53636, 3, 53639, 3, 53645, 3, 53676, 3, 53679, 3, 53828, 3, 53830, 3, 54114, 3, 54131, 3, 55248, 3, 55297, 3, 55810, 3, 55864, 3, 55869, 3, 55918, 3, 55927, 3, 55927, 3, 55942, 3, 55942, 3, 55965, 3, 55969, 3, 55971, 3, 55985, 3, 57346, 3, 57352, 3, 57354, 3, 57370, 3, 57373, 3, 57379, 3, 57381, 3, 57382, 3, 57384, 3, 57388, 3, 59593, 3, 59608, 3, 59718, 3, 59724, 3, 59730, 3, 59739, 3, 61698, 3, 61710, 3, 258, 16, 497, 16, 277, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 3, 55, 3, 2, 2, 2, 5, 57, 3, 2, 2, 2, 7, 59, 3, 2, 2, 2, 9, 61, 3, 2, 2, 2, 11, 63, 3, 2, 2, 2, 13, 65, 3, 2, 2, 2, 15, 67, 3, 2, 2, 2, 17, 82, 3, 2, 2, 2, 19, 109, 3, 2, 2, 2, 21, 127, 3, 2, 2, 2, 23, 131, 3, 2, 2, 2, 25, 135, 3, 2, 2, 2, 27, 137, 3, 2, 2, 2, 29, 178, 3, 2, 2, 2, 31, 191, 3, 2, 2, 2, 33, 193, 3, 2, 2, 2, 35, 195, 3, 2, 2, 2, 37, 205, 3, 2, 2, 2, 39, 207, 3, 2, 2, 2, 41, 217, 3, 2, 2, 2, 43, 227, 3, 2, 2, 2, 45, 231, 3, 2, 2, 2, 47, 233, 3, 2, 2, 2, 49, 242, 3, 2, 2, 2, 51, 245, 3, 2, 2, 2, 53, 251, 3, 2, 2, 2, 55, 56, 7, 125, 2, 2, 56, 4, 3, 2, 2, 2, 57, 58, 7, 46, 2, 2, 58, 6, 3, 2, 2, 2, 59, 60, 7, 127, 2, 2, 60, 8, 3, 2, 2, 2, 61, 62, 7, 60, 2, 2, 62, 10, 3, 2, 2, 2, 63, 64, 7, 93, 2, 2, 64, 12, 3, 2, 2, 2, 65, 66, 7, 95, 2, 2, 66, 14, 3, 2, 2, 2, 67, 68, 7, 49, 2, 2, 68, 69, 7, 49, 2, 2, 69, 73, 3, 2, 2, 2, 70, 72, 11, 2, 2, 2, 71, 70, 3, 2, 2, 2, 72, 75, 3, 2, 2, 2, 73, 74, 3, 2, 2, 2, 73, 71, 3, 2, 2, 2, 74, 78, 3, 2, 2, 2, 75, 73, 3, 2, 2, 2, 76, 79, 5, 49, 25, 2, 77, 79, 7, 2, 2, 3, 78, 76, 3, 2, 2, 2, 78, 77, 3, 2, 2, 2, 79, 80, 3, 2, 2, 2, 80, 81, 8, 8, 2, 2, 81, 16, 3, 2, 2, 2, 82, 83, 7, 49, 2, 2, 83, 84, 7, 44, 2, 2, 84, 88, 3, 2, 2, 2, 85, 87, 11, 2, 2, 2, 86, 85, 3, 2, 2, 2, 87, 90, 3, 2, 2, 2, 88, 89, 3, 2, 2, 2, 88, 86, 3, 2, 2, 2, 89, 91, 3, 2, 2, 2, 90, 88, 3, 2, 2, 2, 91, 92, 7, 44, 2, 2, 92, 93, 7, 49, 2, 2, 93, 94, 3, 2, 2, 2, 94, 95, 8, 9, 2, 2, 95, 18, 3, 2, 2, 2, 96, 97, 7, 118, 2, 2, 97, 98, 7, 116, 2, 2, 98, 99, 7, 119, 2, 2, 99, 110, 7, 103, 2, 2, 100, 101, 7, 104, 2, 2, 101, 102, 7, 99, 2, 2, 102, 103, 7, 110, 2, 2, 103, 104, 7, 117, 2, 2, 104, 110, 7, 103, 2, 2, 105, 106, 7, 112, 2, 2, 106, 107, 7, 119, 2, 2, 107, 108, 7, 110, 2, 2, 108, 110, 7, 110, 2, 2, 109, 96, 3, 2, 2, 2, 109, 100, 3, 2, 2, 2, 109, 105, 3, 2, 2, 2, 110, 20, 3, 2, 2, 2, 111, 115, 7, 36, 2, 2, 112, 114, 5, 23, 12, 2, 113, 112, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 118, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 118, 128, 7, 36, 2, 2, 119, 123, 7, 41, 2, 2, 120, 122, 5, 25, 13, 2, 121, 120, 3, 2, 2, 2, 122, 125, 3, 2, 2, 2, 123, 121, 3, 2, 2, 2, 123, 124, 3, 2, 2, 2, 124, 126, 3, 2, 2, 2, 125, 123, 3, 2, 2, 2, 126, 128, 7, 41, 2, 2, 127, 111, 3, 2, 2, 2, 127, 119, 3, 2, 2, 2, 128, 22, 3, 2, 2, 2, 129, 132, 10, 2, 2, 2, 130, 132, 5, 27, 14, 2, 131, 129, 3, 2, 2, 2, 131, 130, 3, 2, 2, 2, 132, 24, 3, 2, 2, 2, 133, 136, 10, 3, 2, 2, 134, 136, 5, 27, 14, 2, 135, 133, 3, 2, 2, 2, 135, 134, 3, 2, 2, 2, 136, 26, 3, 2, 2, 2, 137, 147, 7, 94, 2, 2, 138, 148, 5, 49, 25, 2, 139, 148, 5, 47, 24, 2, 140, 148, 9, 4, 2, 2, 141, 148, 10, 5, 2, 2, 142, 148, 7, 50, 2, 2, 143, 144, 7, 122, 2, 2, 144, 145, 5, 35, 18, 2, 145, 146, 5, 35, 18, 2, 146, 148, 3, 2, 2, 2, 147, 138, 3, 2, 2, 2, 147, 139, 3, 2, 2, 2, 147, 140, 3, 2, 2, 2, 147, 141, 3, 2, 2, 2, 147, 142, 3, 2, 2, 2, 147, 143, 3, 2, 2, 2, 148, 28, 3, 2, 2, 2, 149, 157, 5, 37, 19, 2, 150, 154, 7, 48, 2, 2, 151, 153, 9, 6, 2, 2, 152, 151, 3, 2, 2, 2, 153, 156, 3, 2, 2, 2, 154, 152, 3, 2, 2, 2, 154, 155, 3, 2, 2, 2, 155, 158, 3, 2, 2, 2, 156, 154, 3, 2, 2, 2, 157, 150, 3, 2, 2, 2, 157, 158, 3, 2, 2, 2, 158, 160, 3, 2, 2, 2, 159, 161, 5, 39, 20, 2, 160, 159, 3, 2, 2, 2, 160, 161, 3, 2, 2, 2, 161, 179, 3, 2, 2, 2, 162, 164, 7, 48, 2, 2, 163, 165, 9, 6, 2, 2, 164, 163, 3, 2, 2, 2, 165, 166, 3, 2, 2, 2, 166, 164, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 169, 3, 2, 2, 2, 168, 170, 5, 39, 20, 2, 169, 168, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 179, 3, 2, 2, 2, 171, 172, 7, 50, 2, 2, 172, 174, 9, 7, 2, 2, 173, 175, 5, 35, 18, 2, 174, 173, 3, 2, 2, 2, 175, 176, 3, 2, 2, 2, 176, 174, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 179, 3, 2, 2, 2, 178, 149, 3, 2, 2, 2, 178, 162, 3, 2, 2, 2, 178, 171, 3, 2, 2, 2, 179, 30, 3, 2, 2, 2, 180, 181, 7, 75, 2, 2, 181, 182, 7, 112, 2, 2, 182, 183, 7, 104, 2, 2, 183, 184, 7, 107, 2, 2, 184, 185, 7, 112, 2, 2, 185, 186, 7, 107, 2, 2, 186, 187, 7, 118, 2, 2, 187, 192, 7, 123, 2, 2, 188, 189, 7, 80, 2, 2, 189, 190, 7, 99, 2, 2, 190, 192, 7, 80, 2, 2, 191, 180, 3, 2, 2, 2, 191, 188, 3, 2, 2, 2, 192, 32, 3, 2, 2, 2, 193, 194, 9, 8, 2, 2, 194, 34, 3, 2, 2, 2, 195, 196, 9, 9, 2, 2, 196, 36, 3, 2, 2, 2, 197, 206, 7, 50, 2, 2, 198, 202, 9, 10, 2, 2, 199, 201, 9, 6, 2, 2, 200, 199, 3, 2, 2, 2, 201, 204, 3, 2, 2, 2, 202, 200, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 206, 3, 2, 2, 2, 204, 202, 3, 2, 2, 2, 205, 197, 3, 2, 2, 2, 205, 198, 3, 2, 2, 2, 206, 38, 3, 2, 2, 2, 207, 209, 9, 11, 2, 2, 208, 210, 5, 33, 17, 2, 209, 208, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 214, 3, 2, 2, 2, 211, 213, 9, 6, 2, 2, 212, 211, 3, 2, 2, 2, 213, 216, 3, 2, 2, 2, 214, 212, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 40, 3, 2, 2, 2, 216, 214, 3, 2, 2, 2, 217, 221, 5, 43, 22, 2, 218, 220, 5, 45, 23, 2, 219, 218, 3, 2, 2, 2, 220, 223, 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 221, 222, 3, 2, 2, 2, 222, 42, 3, 2, 2, 2, 223, 221, 3, 2, 2, 2, 224, 228, 9, 14, 2, 2, 225, 226, 7, 94, 2, 2, 226, 228, 5, 47, 24, 2, 227, 224, 3, 2, 2, 2, 227, 225, 3, 2, 2, 2, 228, 44, 3, 2, 2, 2, 229, 232, 5, 43, 22, 2, 230, 232, 9, 15, 2, 2, 231, 229, 3, 2, 2, 2, 231, 230, 3, 2, 2, 2, 232, 46, 3, 2, 2, 2, 233, 234, 7, 119, 2, 2, 234, 235, 5, 35, 18, 2, 235, 236, 5, 35, 18, 2, 236, 237, 5, 35, 18, 2, 237, 238, 5, 35, 18, 2, 238, 48, 3, 2, 2, 2, 239, 240, 7, 15, 2, 2, 240, 243, 7, 12, 2, 2, 241, 243, 9, 12, 2, 2, 242, 239, 3, 2, 2, 2, 242, 241, 3, 2, 2, 2, 243, 50, 3, 2, 2, 2, 244, 246, 9, 13, 2, 2, 245, 244, 3, 2, 2, 2, 246, 247, 3, 2, 2, 2, 247, 245, 3, 2, 2, 2, 247, 248, 3, 2, 2, 2, 248, 249, 3, 2, 2, 2, 249, 250, 8, 26, 2, 2, 250, 52, 3, 2, 2, 2, 251, 252, 7, 65281, 2, 2, 252, 253, 3, 2, 2, 2, 253, 254, 8, 27, 2, 2, 254, 54, 3, 2, 2, 2, 30, 2, 73, 78, 88, 109, 115, 123, 127, 131, 135, 147, 154, 157, 160, 166, 169, 176, 178, 191, 202, 205, 209, 214, 221, 227, 231, 242, 247, 3, 8, 2, 2] \ No newline at end of file diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.java index fa1f2997717..4c4246fbd63 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.java @@ -13,15 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; - +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.ATN; -import org.antlr.v4.runtime.atn.ATNDeserializer; -import org.antlr.v4.runtime.atn.LexerATNSimulator; -import org.antlr.v4.runtime.atn.PredictionContextCache; +import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) public class JSON5Lexer extends Lexer { @@ -29,41 +30,42 @@ public class JSON5Lexer extends Lexer { protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); + new PredictionContextCache(); public static final int - T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, SINGLE_LINE_COMMENT=7, - MULTI_LINE_COMMENT=8, LITERAL=9, STRING=10, NUMBER=11, NUMERIC_LITERAL=12, - SYMBOL=13, IDENTIFIER=14, WS=15; + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, SINGLE_LINE_COMMENT=7, + MULTI_LINE_COMMENT=8, LITERAL=9, STRING=10, NUMBER=11, NUMERIC_LITERAL=12, + SYMBOL=13, IDENTIFIER=14, WS=15, UTF_8_BOM=16; public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" }; public static String[] modeNames = { - "DEFAULT_MODE" + "DEFAULT_MODE" }; private static String[] makeRuleNames() { return new String[] { - "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "SINGLE_LINE_COMMENT", - "MULTI_LINE_COMMENT", "LITERAL", "STRING", "DOUBLE_QUOTE_CHAR", "SINGLE_QUOTE_CHAR", - "ESCAPE_SEQUENCE", "NUMBER", "NUMERIC_LITERAL", "SYMBOL", "HEX", "INT", - "EXP", "IDENTIFIER", "IDENTIFIER_START", "IDENTIFIER_PART", "UNICODE_SEQUENCE", - "NEWLINE", "WS" + "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "SINGLE_LINE_COMMENT", + "MULTI_LINE_COMMENT", "LITERAL", "STRING", "DOUBLE_QUOTE_CHAR", "SINGLE_QUOTE_CHAR", + "ESCAPE_SEQUENCE", "NUMBER", "NUMERIC_LITERAL", "SYMBOL", "HEX", "INT", + "EXP", "IDENTIFIER", "IDENTIFIER_START", "IDENTIFIER_PART", "UNICODE_SEQUENCE", + "NEWLINE", "WS", "UTF_8_BOM" }; } public static final String[] ruleNames = makeRuleNames(); private static String[] makeLiteralNames() { return new String[] { - null, "'{'", "','", "'}'", "':'", "'['", "']'" + null, "'{'", "','", "'}'", "':'", "'['", "']'", null, null, null, null, + null, null, null, null, null, "'\uFEFF'" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); private static String[] makeSymbolicNames() { return new String[] { - null, null, null, null, null, null, null, "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", - "LITERAL", "STRING", "NUMBER", "NUMERIC_LITERAL", "SYMBOL", "IDENTIFIER", - "WS" + null, null, null, null, null, null, null, "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", + "LITERAL", "STRING", "NUMBER", "NUMERIC_LITERAL", "SYMBOL", "IDENTIFIER", + "WS", "UTF_8_BOM" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -125,313 +127,315 @@ public JSON5Lexer(CharStream input) { public ATN getATN() { return _ATN; } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\21\u00f9\b\1\4\2"+ - "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+ - "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+ - "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+ - "\t\31\4\32\t\32\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3"+ - "\b\3\b\3\b\7\bF\n\b\f\b\16\bI\13\b\3\b\3\b\5\bM\n\b\3\b\3\b\3\t\3\t\3"+ - "\t\3\t\7\tU\n\t\f\t\16\tX\13\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n"+ - "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\nl\n\n\3\13\3\13\7\13p\n\13\f\13\16"+ - "\13s\13\13\3\13\3\13\3\13\7\13x\n\13\f\13\16\13{\13\13\3\13\5\13~\n\13"+ - "\3\f\3\f\5\f\u0082\n\f\3\r\3\r\5\r\u0086\n\r\3\16\3\16\3\16\3\16\3\16"+ - "\3\16\3\16\3\16\3\16\3\16\5\16\u0092\n\16\3\17\3\17\3\17\7\17\u0097\n"+ - "\17\f\17\16\17\u009a\13\17\5\17\u009c\n\17\3\17\5\17\u009f\n\17\3\17\3"+ - "\17\6\17\u00a3\n\17\r\17\16\17\u00a4\3\17\5\17\u00a8\n\17\3\17\3\17\3"+ - "\17\6\17\u00ad\n\17\r\17\16\17\u00ae\5\17\u00b1\n\17\3\20\3\20\3\20\3"+ - "\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00be\n\20\3\21\3\21\3\22"+ - "\3\22\3\23\3\23\3\23\7\23\u00c7\n\23\f\23\16\23\u00ca\13\23\5\23\u00cc"+ - "\n\23\3\24\3\24\5\24\u00d0\n\24\3\24\7\24\u00d3\n\24\f\24\16\24\u00d6"+ - "\13\24\3\25\3\25\7\25\u00da\n\25\f\25\16\25\u00dd\13\25\3\26\3\26\3\26"+ - "\5\26\u00e2\n\26\3\27\3\27\5\27\u00e6\n\27\3\30\3\30\3\30\3\30\3\30\3"+ - "\30\3\31\3\31\3\31\5\31\u00f1\n\31\3\32\6\32\u00f4\n\32\r\32\16\32\u00f5"+ - "\3\32\3\32\4GV\2\33\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\2"+ - "\31\2\33\2\35\r\37\16!\17#\2%\2\'\2)\20+\2-\2/\2\61\2\63\21\3\2\16\6\2"+ - "\f\f\17\17$$^^\6\2\f\f\17\17))^^\f\2$$))\61\61^^ddhhppttvvxx\16\2\f\f"+ - "\17\17$$))\62;^^ddhhppttvxzz\3\2\62;\4\2ZZzz\4\2--//\5\2\62;CHch\3\2\63"+ - ";\4\2GGgg\5\2\f\f\17\17\u202a\u202b\b\2\13\f\17\17\"\"\u00a2\u00a2\u2005"+ - "\u2005\uff01\uff01\4\u024d\2&\2&\2C\2\\\2a\2a\2c\2|\2\u00ac\2\u00ac\2"+ - "\u00b7\2\u00b7\2\u00bc\2\u00bc\2\u00c2\2\u00d8\2\u00da\2\u00f8\2\u00fa"+ - "\2\u02c3\2\u02c8\2\u02d3\2\u02e2\2\u02e6\2\u02ee\2\u02ee\2\u02f0\2\u02f0"+ - "\2\u0372\2\u0376\2\u0378\2\u0379\2\u037c\2\u037f\2\u0381\2\u0381\2\u0388"+ - "\2\u0388\2\u038a\2\u038c\2\u038e\2\u038e\2\u0390\2\u03a3\2\u03a5\2\u03f7"+ - "\2\u03f9\2\u0483\2\u048c\2\u0531\2\u0533\2\u0558\2\u055b\2\u055b\2\u0563"+ - "\2\u0589\2\u05d2\2\u05ec\2\u05f2\2\u05f4\2\u0622\2\u064c\2\u0670\2\u0671"+ - "\2\u0673\2\u06d5\2\u06d7\2\u06d7\2\u06e7\2\u06e8\2\u06f0\2\u06f1\2\u06fc"+ - "\2\u06fe\2\u0701\2\u0701\2\u0712\2\u0712\2\u0714\2\u0731\2\u074f\2\u07a7"+ - "\2\u07b3\2\u07b3\2\u07cc\2\u07ec\2\u07f6\2\u07f7\2\u07fc\2\u07fc\2\u0802"+ - "\2\u0817\2\u081c\2\u081c\2\u0826\2\u0826\2\u082a\2\u082a\2\u0842\2\u085a"+ - "\2\u0862\2\u086c\2\u08a2\2\u08b6\2\u08b8\2\u08bf\2\u0906\2\u093b\2\u093f"+ - "\2\u093f\2\u0952\2\u0952\2\u095a\2\u0963\2\u0973\2\u0982\2\u0987\2\u098e"+ - "\2\u0991\2\u0992\2\u0995\2\u09aa\2\u09ac\2\u09b2\2\u09b4\2\u09b4\2\u09b8"+ - "\2\u09bb\2\u09bf\2\u09bf\2\u09d0\2\u09d0\2\u09de\2\u09df\2\u09e1\2\u09e3"+ - "\2\u09f2\2\u09f3\2\u09fe\2\u09fe\2\u0a07\2\u0a0c\2\u0a11\2\u0a12\2\u0a15"+ - "\2\u0a2a\2\u0a2c\2\u0a32\2\u0a34\2\u0a35\2\u0a37\2\u0a38\2\u0a3a\2\u0a3b"+ - "\2\u0a5b\2\u0a5e\2\u0a60\2\u0a60\2\u0a74\2\u0a76\2\u0a87\2\u0a8f\2\u0a91"+ - "\2\u0a93\2\u0a95\2\u0aaa\2\u0aac\2\u0ab2\2\u0ab4\2\u0ab5\2\u0ab7\2\u0abb"+ - "\2\u0abf\2\u0abf\2\u0ad2\2\u0ad2\2\u0ae2\2\u0ae3\2\u0afb\2\u0afb\2\u0b07"+ - "\2\u0b0e\2\u0b11\2\u0b12\2\u0b15\2\u0b2a\2\u0b2c\2\u0b32\2\u0b34\2\u0b35"+ - "\2\u0b37\2\u0b3b\2\u0b3f\2\u0b3f\2\u0b5e\2\u0b5f\2\u0b61\2\u0b63\2\u0b73"+ - "\2\u0b73\2\u0b85\2\u0b85\2\u0b87\2\u0b8c\2\u0b90\2\u0b92\2\u0b94\2\u0b97"+ - "\2\u0b9b\2\u0b9c\2\u0b9e\2\u0b9e\2\u0ba0\2\u0ba1\2\u0ba5\2\u0ba6\2\u0baa"+ - "\2\u0bac\2\u0bb0\2\u0bbb\2\u0bd2\2\u0bd2\2\u0c07\2\u0c0e\2\u0c10\2\u0c12"+ - "\2\u0c14\2\u0c2a\2\u0c2c\2\u0c3b\2\u0c3f\2\u0c3f\2\u0c5a\2\u0c5c\2\u0c62"+ - "\2\u0c63\2\u0c82\2\u0c82\2\u0c87\2\u0c8e\2\u0c90\2\u0c92\2\u0c94\2\u0caa"+ - "\2\u0cac\2\u0cb5\2\u0cb7\2\u0cbb\2\u0cbf\2\u0cbf\2\u0ce0\2\u0ce0\2\u0ce2"+ - "\2\u0ce3\2\u0cf3\2\u0cf4\2\u0d07\2\u0d0e\2\u0d10\2\u0d12\2\u0d14\2\u0d3c"+ - "\2\u0d3f\2\u0d3f\2\u0d50\2\u0d50\2\u0d56\2\u0d58\2\u0d61\2\u0d63\2\u0d7c"+ - "\2\u0d81\2\u0d87\2\u0d98\2\u0d9c\2\u0db3\2\u0db5\2\u0dbd\2\u0dbf\2\u0dbf"+ - "\2\u0dc2\2\u0dc8\2\u0e03\2\u0e32\2\u0e34\2\u0e35\2\u0e42\2\u0e48\2\u0e83"+ - "\2\u0e84\2\u0e86\2\u0e86\2\u0e89\2\u0e8a\2\u0e8c\2\u0e8c\2\u0e8f\2\u0e8f"+ - "\2\u0e96\2\u0e99\2\u0e9b\2\u0ea1\2\u0ea3\2\u0ea5\2\u0ea7\2\u0ea7\2\u0ea9"+ - "\2\u0ea9\2\u0eac\2\u0ead\2\u0eaf\2\u0eb2\2\u0eb4\2\u0eb5\2\u0ebf\2\u0ebf"+ - "\2\u0ec2\2\u0ec6\2\u0ec8\2\u0ec8\2\u0ede\2\u0ee1\2\u0f02\2\u0f02\2\u0f42"+ - "\2\u0f49\2\u0f4b\2\u0f6e\2\u0f8a\2\u0f8e\2\u1002\2\u102c\2\u1041\2\u1041"+ - "\2\u1052\2\u1057\2\u105c\2\u105f\2\u1063\2\u1063\2\u1067\2\u1068\2\u1070"+ - "\2\u1072\2\u1077\2\u1083\2\u1090\2\u1090\2\u10a2\2\u10c7\2\u10c9\2\u10c9"+ - "\2\u10cf\2\u10cf\2\u10d2\2\u10fc\2\u10fe\2\u124a\2\u124c\2\u124f\2\u1252"+ - "\2\u1258\2\u125a\2\u125a\2\u125c\2\u125f\2\u1262\2\u128a\2\u128c\2\u128f"+ - "\2\u1292\2\u12b2\2\u12b4\2\u12b7\2\u12ba\2\u12c0\2\u12c2\2\u12c2\2\u12c4"+ - "\2\u12c7\2\u12ca\2\u12d8\2\u12da\2\u1312\2\u1314\2\u1317\2\u131a\2\u135c"+ - "\2\u1382\2\u1391\2\u13a2\2\u13f7\2\u13fa\2\u13ff\2\u1403\2\u166e\2\u1671"+ - "\2\u1681\2\u1683\2\u169c\2\u16a2\2\u16ec\2\u16f3\2\u16fa\2\u1702\2\u170e"+ - "\2\u1710\2\u1713\2\u1722\2\u1733\2\u1742\2\u1753\2\u1762\2\u176e\2\u1770"+ - "\2\u1772\2\u1782\2\u17b5\2\u17d9\2\u17d9\2\u17de\2\u17de\2\u1822\2\u1879"+ - "\2\u1882\2\u1886\2\u1889\2\u18aa\2\u18ac\2\u18ac\2\u18b2\2\u18f7\2\u1902"+ - "\2\u1920\2\u1952\2\u196f\2\u1972\2\u1976\2\u1982\2\u19ad\2\u19b2\2\u19cb"+ - "\2\u1a02\2\u1a18\2\u1a22\2\u1a56\2\u1aa9\2\u1aa9\2\u1b07\2\u1b35\2\u1b47"+ - "\2\u1b4d\2\u1b85\2\u1ba2\2\u1bb0\2\u1bb1\2\u1bbc\2\u1be7\2\u1c02\2\u1c25"+ - "\2\u1c4f\2\u1c51\2\u1c5c\2\u1c7f\2\u1c82\2\u1c8a\2\u1ceb\2\u1cee\2\u1cf0"+ - "\2\u1cf3\2\u1cf7\2\u1cf8\2\u1d02\2\u1dc1\2\u1e02\2\u1f17\2\u1f1a\2\u1f1f"+ - "\2\u1f22\2\u1f47\2\u1f4a\2\u1f4f\2\u1f52\2\u1f59\2\u1f5b\2\u1f5b\2\u1f5d"+ - "\2\u1f5d\2\u1f5f\2\u1f5f\2\u1f61\2\u1f7f\2\u1f82\2\u1fb6\2\u1fb8\2\u1fbe"+ - "\2\u1fc0\2\u1fc0\2\u1fc4\2\u1fc6\2\u1fc8\2\u1fce\2\u1fd2\2\u1fd5\2\u1fd8"+ - "\2\u1fdd\2\u1fe2\2\u1fee\2\u1ff4\2\u1ff6\2\u1ff8\2\u1ffe\2\u2073\2\u2073"+ - "\2\u2081\2\u2081\2\u2092\2\u209e\2\u2104\2\u2104\2\u2109\2\u2109\2\u210c"+ - "\2\u2115\2\u2117\2\u2117\2\u211b\2\u211f\2\u2126\2\u2126\2\u2128\2\u2128"+ - "\2\u212a\2\u212a\2\u212c\2\u212f\2\u2131\2\u213b\2\u213e\2\u2141\2\u2147"+ - "\2\u214b\2\u2150\2\u2150\2\u2185\2\u2186\2\u2c02\2\u2c30\2\u2c32\2\u2c60"+ - "\2\u2c62\2\u2ce6\2\u2ced\2\u2cf0\2\u2cf4\2\u2cf5\2\u2d02\2\u2d27\2\u2d29"+ - "\2\u2d29\2\u2d2f\2\u2d2f\2\u2d32\2\u2d69\2\u2d71\2\u2d71\2\u2d82\2\u2d98"+ - "\2\u2da2\2\u2da8\2\u2daa\2\u2db0\2\u2db2\2\u2db8\2\u2dba\2\u2dc0\2\u2dc2"+ - "\2\u2dc8\2\u2dca\2\u2dd0\2\u2dd2\2\u2dd8\2\u2dda\2\u2de0\2\u2e31\2\u2e31"+ - "\2\u3007\2\u3008\2\u3033\2\u3037\2\u303d\2\u303e\2\u3043\2\u3098\2\u309f"+ - "\2\u30a1\2\u30a3\2\u30fc\2\u30fe\2\u3101\2\u3107\2\u3130\2\u3133\2\u3190"+ - "\2\u31a2\2\u31bc\2\u31f2\2\u3201\2\u3402\2\u4db7\2\u4e02\2\u9fec\2\ua002"+ - "\2\ua48e\2\ua4d2\2\ua4ff\2\ua502\2\ua60e\2\ua612\2\ua621\2\ua62c\2\ua62d"+ - "\2\ua642\2\ua670\2\ua681\2\ua69f\2\ua6a2\2\ua6e7\2\ua719\2\ua721\2\ua724"+ - "\2\ua78a\2\ua78d\2\ua7b0\2\ua7b2\2\ua7b9\2\ua7f9\2\ua803\2\ua805\2\ua807"+ - "\2\ua809\2\ua80c\2\ua80e\2\ua824\2\ua842\2\ua875\2\ua884\2\ua8b5\2\ua8f4"+ - "\2\ua8f9\2\ua8fd\2\ua8fd\2\ua8ff\2\ua8ff\2\ua90c\2\ua927\2\ua932\2\ua948"+ - "\2\ua962\2\ua97e\2\ua986\2\ua9b4\2\ua9d1\2\ua9d1\2\ua9e2\2\ua9e6\2\ua9e8"+ - "\2\ua9f1\2\ua9fc\2\uaa00\2\uaa02\2\uaa2a\2\uaa42\2\uaa44\2\uaa46\2\uaa4d"+ - "\2\uaa62\2\uaa78\2\uaa7c\2\uaa7c\2\uaa80\2\uaab1\2\uaab3\2\uaab3\2\uaab7"+ - "\2\uaab8\2\uaabb\2\uaabf\2\uaac2\2\uaac2\2\uaac4\2\uaac4\2\uaadd\2\uaadf"+ - "\2\uaae2\2\uaaec\2\uaaf4\2\uaaf6\2\uab03\2\uab08\2\uab0b\2\uab10\2\uab13"+ - "\2\uab18\2\uab22\2\uab28\2\uab2a\2\uab30\2\uab32\2\uab5c\2\uab5e\2\uab67"+ - "\2\uab72\2\uabe4\2\uac02\2\ud7a5\2\ud7b2\2\ud7c8\2\ud7cd\2\ud7fd\2\uf902"+ - "\2\ufa6f\2\ufa72\2\ufadb\2\ufb02\2\ufb08\2\ufb15\2\ufb19\2\ufb1f\2\ufb1f"+ - "\2\ufb21\2\ufb2a\2\ufb2c\2\ufb38\2\ufb3a\2\ufb3e\2\ufb40\2\ufb40\2\ufb42"+ - "\2\ufb43\2\ufb45\2\ufb46\2\ufb48\2\ufbb3\2\ufbd5\2\ufd3f\2\ufd52\2\ufd91"+ - "\2\ufd94\2\ufdc9\2\ufdf2\2\ufdfd\2\ufe72\2\ufe76\2\ufe78\2\ufefe\2\uff23"+ - "\2\uff3c\2\uff43\2\uff5c\2\uff68\2\uffc0\2\uffc4\2\uffc9\2\uffcc\2\uffd1"+ - "\2\uffd4\2\uffd9\2\uffdc\2\uffde\2\2\3\r\3\17\3(\3*\3<\3>\3?\3A\3O\3R"+ - "\3_\3\u0082\3\u00fc\3\u0282\3\u029e\3\u02a2\3\u02d2\3\u0302\3\u0321\3"+ - "\u032f\3\u0342\3\u0344\3\u034b\3\u0352\3\u0377\3\u0382\3\u039f\3\u03a2"+ - "\3\u03c5\3\u03ca\3\u03d1\3\u0402\3\u049f\3\u04b2\3\u04d5\3\u04da\3\u04fd"+ - "\3\u0502\3\u0529\3\u0532\3\u0565\3\u0602\3\u0738\3\u0742\3\u0757\3\u0762"+ - "\3\u0769\3\u0802\3\u0807\3\u080a\3\u080a\3\u080c\3\u0837\3\u0839\3\u083a"+ - "\3\u083e\3\u083e\3\u0841\3\u0857\3\u0862\3\u0878\3\u0882\3\u08a0\3\u08e2"+ - "\3\u08f4\3\u08f6\3\u08f7\3\u0902\3\u0917\3\u0922\3\u093b\3\u0982\3\u09b9"+ - "\3\u09c0\3\u09c1\3\u0a02\3\u0a02\3\u0a12\3\u0a15\3\u0a17\3\u0a19\3\u0a1b"+ - "\3\u0a35\3\u0a62\3\u0a7e\3\u0a82\3\u0a9e\3\u0ac2\3\u0ac9\3\u0acb\3\u0ae6"+ - "\3\u0b02\3\u0b37\3\u0b42\3\u0b57\3\u0b62\3\u0b74\3\u0b82\3\u0b93\3\u0c02"+ - "\3\u0c4a\3\u0c82\3\u0cb4\3\u0cc2\3\u0cf4\3\u1005\3\u1039\3\u1085\3\u10b1"+ - "\3\u10d2\3\u10ea\3\u1105\3\u1128\3\u1152\3\u1174\3\u1178\3\u1178\3\u1185"+ - "\3\u11b4\3\u11c3\3\u11c6\3\u11dc\3\u11dc\3\u11de\3\u11de\3\u1202\3\u1213"+ - "\3\u1215\3\u122d\3\u1282\3\u1288\3\u128a\3\u128a\3\u128c\3\u128f\3\u1291"+ - "\3\u129f\3\u12a1\3\u12aa\3\u12b2\3\u12e0\3\u1307\3\u130e\3\u1311\3\u1312"+ - "\3\u1315\3\u132a\3\u132c\3\u1332\3\u1334\3\u1335\3\u1337\3\u133b\3\u133f"+ - "\3\u133f\3\u1352\3\u1352\3\u135f\3\u1363\3\u1402\3\u1436\3\u1449\3\u144c"+ - "\3\u1482\3\u14b1\3\u14c6\3\u14c7\3\u14c9\3\u14c9\3\u1582\3\u15b0\3\u15da"+ - "\3\u15dd\3\u1602\3\u1631\3\u1646\3\u1646\3\u1682\3\u16ac\3\u1702\3\u171b"+ - "\3\u18a2\3\u18e1\3\u1901\3\u1901\3\u1a02\3\u1a02\3\u1a0d\3\u1a34\3\u1a3c"+ - "\3\u1a3c\3\u1a52\3\u1a52\3\u1a5e\3\u1a85\3\u1a88\3\u1a8b\3\u1ac2\3\u1afa"+ - "\3\u1c02\3\u1c0a\3\u1c0c\3\u1c30\3\u1c42\3\u1c42\3\u1c74\3\u1c91\3\u1d02"+ - "\3\u1d08\3\u1d0a\3\u1d0b\3\u1d0d\3\u1d32\3\u1d48\3\u1d48\3\u2002\3\u239b"+ - "\3\u2482\3\u2545\3\u3002\3\u3430\3\u4402\3\u4648\3\u6802\3\u6a3a\3\u6a42"+ - "\3\u6a60\3\u6ad2\3\u6aef\3\u6b02\3\u6b31\3\u6b42\3\u6b45\3\u6b65\3\u6b79"+ - "\3\u6b7f\3\u6b91\3\u6f02\3\u6f46\3\u6f52\3\u6f52\3\u6f95\3\u6fa1\3\u6fe2"+ - "\3\u6fe3\3\u7002\3\u87ee\3\u8802\3\u8af4\3\ub002\3\ub120\3\ub172\3\ub2fd"+ - "\3\ubc02\3\ubc6c\3\ubc72\3\ubc7e\3\ubc82\3\ubc8a\3\ubc92\3\ubc9b\3\ud402"+ - "\3\ud456\3\ud458\3\ud49e\3\ud4a0\3\ud4a1\3\ud4a4\3\ud4a4\3\ud4a7\3\ud4a8"+ - "\3\ud4ab\3\ud4ae\3\ud4b0\3\ud4bb\3\ud4bd\3\ud4bd\3\ud4bf\3\ud4c5\3\ud4c7"+ - "\3\ud507\3\ud509\3\ud50c\3\ud50f\3\ud516\3\ud518\3\ud51e\3\ud520\3\ud53b"+ - "\3\ud53d\3\ud540\3\ud542\3\ud546\3\ud548\3\ud548\3\ud54c\3\ud552\3\ud554"+ - "\3\ud6a7\3\ud6aa\3\ud6c2\3\ud6c4\3\ud6dc\3\ud6de\3\ud6fc\3\ud6fe\3\ud716"+ - "\3\ud718\3\ud736\3\ud738\3\ud750\3\ud752\3\ud770\3\ud772\3\ud78a\3\ud78c"+ - "\3\ud7aa\3\ud7ac\3\ud7c4\3\ud7c6\3\ud7cd\3\ue802\3\ue8c6\3\ue902\3\ue945"+ - "\3\uee02\3\uee05\3\uee07\3\uee21\3\uee23\3\uee24\3\uee26\3\uee26\3\uee29"+ - "\3\uee29\3\uee2b\3\uee34\3\uee36\3\uee39\3\uee3b\3\uee3b\3\uee3d\3\uee3d"+ - "\3\uee44\3\uee44\3\uee49\3\uee49\3\uee4b\3\uee4b\3\uee4d\3\uee4d\3\uee4f"+ - "\3\uee51\3\uee53\3\uee54\3\uee56\3\uee56\3\uee59\3\uee59\3\uee5b\3\uee5b"+ - "\3\uee5d\3\uee5d\3\uee5f\3\uee5f\3\uee61\3\uee61\3\uee63\3\uee64\3\uee66"+ - "\3\uee66\3\uee69\3\uee6c\3\uee6e\3\uee74\3\uee76\3\uee79\3\uee7b\3\uee7e"+ - "\3\uee80\3\uee80\3\uee82\3\uee8b\3\uee8d\3\uee9d\3\ueea3\3\ueea5\3\ueea7"+ - "\3\ueeab\3\ueead\3\ueebd\3\2\4\ua6d8\4\ua702\4\ub736\4\ub742\4\ub81f\4"+ - "\ub822\4\ucea3\4\uceb2\4\uebe2\4\uf802\4\ufa1f\4\u0179\2\62\2;\2a\2a\2"+ - "\u00b4\2\u00b5\2\u00bb\2\u00bb\2\u00be\2\u00c0\2\u0302\2\u0371\2\u0485"+ - "\2\u048b\2\u0593\2\u05bf\2\u05c1\2\u05c1\2\u05c3\2\u05c4\2\u05c6\2\u05c7"+ - "\2\u05c9\2\u05c9\2\u0612\2\u061c\2\u064d\2\u066b\2\u0672\2\u0672\2\u06d8"+ - "\2\u06de\2\u06e1\2\u06e6\2\u06e9\2\u06ea\2\u06ec\2\u06ef\2\u06f2\2\u06fb"+ - "\2\u0713\2\u0713\2\u0732\2\u074c\2\u07a8\2\u07b2\2\u07c2\2\u07cb\2\u07ed"+ - "\2\u07f5\2\u0818\2\u081b\2\u081d\2\u0825\2\u0827\2\u0829\2\u082b\2\u082f"+ - "\2\u085b\2\u085d\2\u08d6\2\u08e3\2\u08e5\2\u0905\2\u093c\2\u093e\2\u0940"+ - "\2\u0951\2\u0953\2\u0959\2\u0964\2\u0965\2\u0968\2\u0971\2\u0983\2\u0985"+ - "\2\u09be\2\u09be\2\u09c0\2\u09c6\2\u09c9\2\u09ca\2\u09cd\2\u09cf\2\u09d9"+ - "\2\u09d9\2\u09e4\2\u09e5\2\u09e8\2\u09f1\2\u09f6\2\u09fb\2\u0a03\2\u0a05"+ - "\2\u0a3e\2\u0a3e\2\u0a40\2\u0a44\2\u0a49\2\u0a4a\2\u0a4d\2\u0a4f\2\u0a53"+ - "\2\u0a53\2\u0a68\2\u0a73\2\u0a77\2\u0a77\2\u0a83\2\u0a85\2\u0abe\2\u0abe"+ - "\2\u0ac0\2\u0ac7\2\u0ac9\2\u0acb\2\u0acd\2\u0acf\2\u0ae4\2\u0ae5\2\u0ae8"+ - "\2\u0af1\2\u0afc\2\u0b01\2\u0b03\2\u0b05\2\u0b3e\2\u0b3e\2\u0b40\2\u0b46"+ - "\2\u0b49\2\u0b4a\2\u0b4d\2\u0b4f\2\u0b58\2\u0b59\2\u0b64\2\u0b65\2\u0b68"+ - "\2\u0b71\2\u0b74\2\u0b79\2\u0b84\2\u0b84\2\u0bc0\2\u0bc4\2\u0bc8\2\u0bca"+ - "\2\u0bcc\2\u0bcf\2\u0bd9\2\u0bd9\2\u0be8\2\u0bf4\2\u0c02\2\u0c05\2\u0c40"+ - "\2\u0c46\2\u0c48\2\u0c4a\2\u0c4c\2\u0c4f\2\u0c57\2\u0c58\2\u0c64\2\u0c65"+ - "\2\u0c68\2\u0c71\2\u0c7a\2\u0c80\2\u0c83\2\u0c85\2\u0cbe\2\u0cbe\2\u0cc0"+ - "\2\u0cc6\2\u0cc8\2\u0cca\2\u0ccc\2\u0ccf\2\u0cd7\2\u0cd8\2\u0ce4\2\u0ce5"+ - "\2\u0ce8\2\u0cf1\2\u0d02\2\u0d05\2\u0d3d\2\u0d3e\2\u0d40\2\u0d46\2\u0d48"+ - "\2\u0d4a\2\u0d4c\2\u0d4f\2\u0d59\2\u0d60\2\u0d64\2\u0d65\2\u0d68\2\u0d7a"+ - "\2\u0d84\2\u0d85\2\u0dcc\2\u0dcc\2\u0dd1\2\u0dd6\2\u0dd8\2\u0dd8\2\u0dda"+ - "\2\u0de1\2\u0de8\2\u0df1\2\u0df4\2\u0df5\2\u0e33\2\u0e33\2\u0e36\2\u0e3c"+ - "\2\u0e49\2\u0e50\2\u0e52\2\u0e5b\2\u0eb3\2\u0eb3\2\u0eb6\2\u0ebb\2\u0ebd"+ - "\2\u0ebe\2\u0eca\2\u0ecf\2\u0ed2\2\u0edb\2\u0f1a\2\u0f1b\2\u0f22\2\u0f35"+ - "\2\u0f37\2\u0f37\2\u0f39\2\u0f39\2\u0f3b\2\u0f3b\2\u0f40\2\u0f41\2\u0f73"+ - "\2\u0f86\2\u0f88\2\u0f89\2\u0f8f\2\u0f99\2\u0f9b\2\u0fbe\2\u0fc8\2\u0fc8"+ - "\2\u102d\2\u1040\2\u1042\2\u104b\2\u1058\2\u105b\2\u1060\2\u1062\2\u1064"+ - "\2\u1066\2\u1069\2\u106f\2\u1073\2\u1076\2\u1084\2\u108f\2\u1091\2\u109f"+ - "\2\u135f\2\u1361\2\u136b\2\u137e\2\u16f0\2\u16f2\2\u1714\2\u1716\2\u1734"+ - "\2\u1736\2\u1754\2\u1755\2\u1774\2\u1775\2\u17b6\2\u17d5\2\u17df\2\u17df"+ - "\2\u17e2\2\u17eb\2\u17f2\2\u17fb\2\u180d\2\u180f\2\u1812\2\u181b\2\u1887"+ - "\2\u1888\2\u18ab\2\u18ab\2\u1922\2\u192d\2\u1932\2\u193d\2\u1948\2\u1951"+ - "\2\u19d2\2\u19dc\2\u1a19\2\u1a1d\2\u1a57\2\u1a60\2\u1a62\2\u1a7e\2\u1a81"+ - "\2\u1a8b\2\u1a92\2\u1a9b\2\u1ab2\2\u1ac0\2\u1b02\2\u1b06\2\u1b36\2\u1b46"+ - "\2\u1b52\2\u1b5b\2\u1b6d\2\u1b75\2\u1b82\2\u1b84\2\u1ba3\2\u1baf\2\u1bb2"+ - "\2\u1bbb\2\u1be8\2\u1bf5\2\u1c26\2\u1c39\2\u1c42\2\u1c4b\2\u1c52\2\u1c5b"+ - "\2\u1cd2\2\u1cd4\2\u1cd6\2\u1cea\2\u1cef\2\u1cef\2\u1cf4\2\u1cf6\2\u1cf9"+ - "\2\u1cfb\2\u1dc2\2\u1dfb\2\u1dfd\2\u1e01\2\u200e\2\u200f\2\u2041\2\u2042"+ - "\2\u2056\2\u2056\2\u2072\2\u2072\2\u2076\2\u207b\2\u2082\2\u208b\2\u20d2"+ - "\2\u20f2\2\u2152\2\u2184\2\u2187\2\u218b\2\u2462\2\u249d\2\u24ec\2\u2501"+ - "\2\u2778\2\u2795\2\u2cf1\2\u2cf3\2\u2cff\2\u2cff\2\u2d81\2\u2d81\2\u2de2"+ - "\2\u2e01\2\u3009\2\u3009\2\u3023\2\u3031\2\u303a\2\u303c\2\u309b\2\u309c"+ - "\2\u3194\2\u3197\2\u3222\2\u322b\2\u324a\2\u3251\2\u3253\2\u3261\2\u3282"+ - "\2\u328b\2\u32b3\2\u32c1\2\ua622\2\ua62b\2\ua671\2\ua674\2\ua676\2\ua67f"+ - "\2\ua6a0\2\ua6a1\2\ua6e8\2\ua6f3\2\ua804\2\ua804\2\ua808\2\ua808\2\ua80d"+ - "\2\ua80d\2\ua825\2\ua829\2\ua832\2\ua837\2\ua882\2\ua883\2\ua8b6\2\ua8c7"+ - "\2\ua8d2\2\ua8db\2\ua8e2\2\ua8f3\2\ua902\2\ua90b\2\ua928\2\ua92f\2\ua949"+ - "\2\ua955\2\ua982\2\ua985\2\ua9b5\2\ua9c2\2\ua9d2\2\ua9db\2\ua9e7\2\ua9e7"+ - "\2\ua9f2\2\ua9fb\2\uaa2b\2\uaa38\2\uaa45\2\uaa45\2\uaa4e\2\uaa4f\2\uaa52"+ - "\2\uaa5b\2\uaa7d\2\uaa7f\2\uaab2\2\uaab2\2\uaab4\2\uaab6\2\uaab9\2\uaaba"+ - "\2\uaac0\2\uaac1\2\uaac3\2\uaac3\2\uaaed\2\uaaf1\2\uaaf7\2\uaaf8\2\uabe5"+ - "\2\uabec\2\uabee\2\uabef\2\uabf2\2\uabfb\2\ufb20\2\ufb20\2\ufe02\2\ufe11"+ - "\2\ufe22\2\ufe31\2\ufe35\2\ufe36\2\ufe4f\2\ufe51\2\uff12\2\uff1b\2\uff41"+ - "\2\uff41\2\u0109\3\u0135\3\u0142\3\u017a\3\u018c\3\u018d\3\u01ff\3\u01ff"+ - "\3\u02e2\3\u02fd\3\u0322\3\u0325\3\u0343\3\u0343\3\u034c\3\u034c\3\u0378"+ - "\3\u037c\3\u03d3\3\u03d7\3\u04a2\3\u04ab\3\u085a\3\u0861\3\u087b\3\u0881"+ - "\3\u08a9\3\u08b1\3\u08fd\3\u0901\3\u0918\3\u091d\3\u09be\3\u09bf\3\u09c2"+ - "\3\u09d1\3\u09d4\3\u0a01\3\u0a03\3\u0a05\3\u0a07\3\u0a08\3\u0a0e\3\u0a11"+ - "\3\u0a3a\3\u0a3c\3\u0a41\3\u0a49\3\u0a7f\3\u0a80\3\u0a9f\3\u0aa1\3\u0ae7"+ - "\3\u0ae8\3\u0aed\3\u0af1\3\u0b5a\3\u0b61\3\u0b7a\3\u0b81\3\u0bab\3\u0bb1"+ - "\3\u0cfc\3\u0d01\3\u0e62\3\u0e80\3\u1002\3\u1004\3\u103a\3\u1048\3\u1054"+ - "\3\u1071\3\u1081\3\u1084\3\u10b2\3\u10bc\3\u10f2\3\u10fb\3\u1102\3\u1104"+ - "\3\u1129\3\u1136\3\u1138\3\u1141\3\u1175\3\u1175\3\u1182\3\u1184\3\u11b5"+ - "\3\u11c2\3\u11cc\3\u11ce\3\u11d2\3\u11db\3\u11e3\3\u11f6\3\u122e\3\u1239"+ - "\3\u1240\3\u1240\3\u12e1\3\u12ec\3\u12f2\3\u12fb\3\u1302\3\u1305\3\u133e"+ - "\3\u133e\3\u1340\3\u1346\3\u1349\3\u134a\3\u134d\3\u134f\3\u1359\3\u1359"+ - "\3\u1364\3\u1365\3\u1368\3\u136e\3\u1372\3\u1376\3\u1437\3\u1448\3\u1452"+ - "\3\u145b\3\u14b2\3\u14c5\3\u14d2\3\u14db\3\u15b1\3\u15b7\3\u15ba\3\u15c2"+ - "\3\u15de\3\u15df\3\u1632\3\u1642\3\u1652\3\u165b\3\u16ad\3\u16b9\3\u16c2"+ - "\3\u16cb\3\u171f\3\u172d\3\u1732\3\u173d\3\u18e2\3\u18f4\3\u1a03\3\u1a0c"+ - "\3\u1a35\3\u1a3b\3\u1a3d\3\u1a40\3\u1a49\3\u1a49\3\u1a53\3\u1a5d\3\u1a8c"+ - "\3\u1a9b\3\u1c31\3\u1c38\3\u1c3a\3\u1c41\3\u1c52\3\u1c6e\3\u1c94\3\u1ca9"+ - "\3\u1cab\3\u1cb8\3\u1d33\3\u1d38\3\u1d3c\3\u1d3c\3\u1d3e\3\u1d3f\3\u1d41"+ - "\3\u1d47\3\u1d49\3\u1d49\3\u1d52\3\u1d5b\3\u2402\3\u2470\3\u6a62\3\u6a6b"+ - "\3\u6af2\3\u6af6\3\u6b32\3\u6b38\3\u6b52\3\u6b5b\3\u6b5d\3\u6b63\3\u6f53"+ - "\3\u6f80\3\u6f91\3\u6f94\3\ubc9f\3\ubca0\3\ud167\3\ud16b\3\ud16f\3\ud174"+ - "\3\ud17d\3\ud184\3\ud187\3\ud18d\3\ud1ac\3\ud1af\3\ud244\3\ud246\3\ud362"+ - "\3\ud373\3\ud7d0\3\ud801\3\uda02\3\uda38\3\uda3d\3\uda6e\3\uda77\3\uda77"+ - "\3\uda86\3\uda86\3\uda9d\3\udaa1\3\udaa3\3\udab1\3\ue002\3\ue008\3\ue00a"+ - "\3\ue01a\3\ue01d\3\ue023\3\ue025\3\ue026\3\ue028\3\ue02c\3\ue8c9\3\ue8d8"+ - "\3\ue946\3\ue94c\3\ue952\3\ue95b\3\uf102\3\uf10e\3\u0102\20\u01f1\20\u010f"+ - "\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2"+ - "\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\35\3\2\2\2"+ - "\2\37\3\2\2\2\2!\3\2\2\2\2)\3\2\2\2\2\63\3\2\2\2\3\65\3\2\2\2\5\67\3\2"+ - "\2\2\79\3\2\2\2\t;\3\2\2\2\13=\3\2\2\2\r?\3\2\2\2\17A\3\2\2\2\21P\3\2"+ - "\2\2\23k\3\2\2\2\25}\3\2\2\2\27\u0081\3\2\2\2\31\u0085\3\2\2\2\33\u0087"+ - "\3\2\2\2\35\u00b0\3\2\2\2\37\u00bd\3\2\2\2!\u00bf\3\2\2\2#\u00c1\3\2\2"+ - "\2%\u00cb\3\2\2\2\'\u00cd\3\2\2\2)\u00d7\3\2\2\2+\u00e1\3\2\2\2-\u00e5"+ - "\3\2\2\2/\u00e7\3\2\2\2\61\u00f0\3\2\2\2\63\u00f3\3\2\2\2\65\66\7}\2\2"+ - "\66\4\3\2\2\2\678\7.\2\28\6\3\2\2\29:\7\177\2\2:\b\3\2\2\2;<\7<\2\2<\n"+ - "\3\2\2\2=>\7]\2\2>\f\3\2\2\2?@\7_\2\2@\16\3\2\2\2AB\7\61\2\2BC\7\61\2"+ - "\2CG\3\2\2\2DF\13\2\2\2ED\3\2\2\2FI\3\2\2\2GH\3\2\2\2GE\3\2\2\2HL\3\2"+ - "\2\2IG\3\2\2\2JM\5\61\31\2KM\7\2\2\3LJ\3\2\2\2LK\3\2\2\2MN\3\2\2\2NO\b"+ - "\b\2\2O\20\3\2\2\2PQ\7\61\2\2QR\7,\2\2RV\3\2\2\2SU\13\2\2\2TS\3\2\2\2"+ - "UX\3\2\2\2VW\3\2\2\2VT\3\2\2\2WY\3\2\2\2XV\3\2\2\2YZ\7,\2\2Z[\7\61\2\2"+ - "[\\\3\2\2\2\\]\b\t\2\2]\22\3\2\2\2^_\7v\2\2_`\7t\2\2`a\7w\2\2al\7g\2\2"+ - "bc\7h\2\2cd\7c\2\2de\7n\2\2ef\7u\2\2fl\7g\2\2gh\7p\2\2hi\7w\2\2ij\7n\2"+ - "\2jl\7n\2\2k^\3\2\2\2kb\3\2\2\2kg\3\2\2\2l\24\3\2\2\2mq\7$\2\2np\5\27"+ - "\f\2on\3\2\2\2ps\3\2\2\2qo\3\2\2\2qr\3\2\2\2rt\3\2\2\2sq\3\2\2\2t~\7$"+ - "\2\2uy\7)\2\2vx\5\31\r\2wv\3\2\2\2x{\3\2\2\2yw\3\2\2\2yz\3\2\2\2z|\3\2"+ - "\2\2{y\3\2\2\2|~\7)\2\2}m\3\2\2\2}u\3\2\2\2~\26\3\2\2\2\177\u0082\n\2"+ - "\2\2\u0080\u0082\5\33\16\2\u0081\177\3\2\2\2\u0081\u0080\3\2\2\2\u0082"+ - "\30\3\2\2\2\u0083\u0086\n\3\2\2\u0084\u0086\5\33\16\2\u0085\u0083\3\2"+ - "\2\2\u0085\u0084\3\2\2\2\u0086\32\3\2\2\2\u0087\u0091\7^\2\2\u0088\u0092"+ - "\5\61\31\2\u0089\u0092\5/\30\2\u008a\u0092\t\4\2\2\u008b\u0092\n\5\2\2"+ - "\u008c\u0092\7\62\2\2\u008d\u008e\7z\2\2\u008e\u008f\5#\22\2\u008f\u0090"+ - "\5#\22\2\u0090\u0092\3\2\2\2\u0091\u0088\3\2\2\2\u0091\u0089\3\2\2\2\u0091"+ - "\u008a\3\2\2\2\u0091\u008b\3\2\2\2\u0091\u008c\3\2\2\2\u0091\u008d\3\2"+ - "\2\2\u0092\34\3\2\2\2\u0093\u009b\5%\23\2\u0094\u0098\7\60\2\2\u0095\u0097"+ - "\t\6\2\2\u0096\u0095\3\2\2\2\u0097\u009a\3\2\2\2\u0098\u0096\3\2\2\2\u0098"+ - "\u0099\3\2\2\2\u0099\u009c\3\2\2\2\u009a\u0098\3\2\2\2\u009b\u0094\3\2"+ - "\2\2\u009b\u009c\3\2\2\2\u009c\u009e\3\2\2\2\u009d\u009f\5\'\24\2\u009e"+ - "\u009d\3\2\2\2\u009e\u009f\3\2\2\2\u009f\u00b1\3\2\2\2\u00a0\u00a2\7\60"+ - "\2\2\u00a1\u00a3\t\6\2\2\u00a2\u00a1\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4"+ - "\u00a2\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5\u00a7\3\2\2\2\u00a6\u00a8\5\'"+ - "\24\2\u00a7\u00a6\3\2\2\2\u00a7\u00a8\3\2\2\2\u00a8\u00b1\3\2\2\2\u00a9"+ - "\u00aa\7\62\2\2\u00aa\u00ac\t\7\2\2\u00ab\u00ad\5#\22\2\u00ac\u00ab\3"+ - "\2\2\2\u00ad\u00ae\3\2\2\2\u00ae\u00ac\3\2\2\2\u00ae\u00af\3\2\2\2\u00af"+ - "\u00b1\3\2\2\2\u00b0\u0093\3\2\2\2\u00b0\u00a0\3\2\2\2\u00b0\u00a9\3\2"+ - "\2\2\u00b1\36\3\2\2\2\u00b2\u00b3\7K\2\2\u00b3\u00b4\7p\2\2\u00b4\u00b5"+ - "\7h\2\2\u00b5\u00b6\7k\2\2\u00b6\u00b7\7p\2\2\u00b7\u00b8\7k\2\2\u00b8"+ - "\u00b9\7v\2\2\u00b9\u00be\7{\2\2\u00ba\u00bb\7P\2\2\u00bb\u00bc\7c\2\2"+ - "\u00bc\u00be\7P\2\2\u00bd\u00b2\3\2\2\2\u00bd\u00ba\3\2\2\2\u00be \3\2"+ - "\2\2\u00bf\u00c0\t\b\2\2\u00c0\"\3\2\2\2\u00c1\u00c2\t\t\2\2\u00c2$\3"+ - "\2\2\2\u00c3\u00cc\7\62\2\2\u00c4\u00c8\t\n\2\2\u00c5\u00c7\t\6\2\2\u00c6"+ - "\u00c5\3\2\2\2\u00c7\u00ca\3\2\2\2\u00c8\u00c6\3\2\2\2\u00c8\u00c9\3\2"+ - "\2\2\u00c9\u00cc\3\2\2\2\u00ca\u00c8\3\2\2\2\u00cb\u00c3\3\2\2\2\u00cb"+ - "\u00c4\3\2\2\2\u00cc&\3\2\2\2\u00cd\u00cf\t\13\2\2\u00ce\u00d0\5!\21\2"+ - "\u00cf\u00ce\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\u00d4\3\2\2\2\u00d1\u00d3"+ - "\t\6\2\2\u00d2\u00d1\3\2\2\2\u00d3\u00d6\3\2\2\2\u00d4\u00d2\3\2\2\2\u00d4"+ - "\u00d5\3\2\2\2\u00d5(\3\2\2\2\u00d6\u00d4\3\2\2\2\u00d7\u00db\5+\26\2"+ - "\u00d8\u00da\5-\27\2\u00d9\u00d8\3\2\2\2\u00da\u00dd\3\2\2\2\u00db\u00d9"+ - "\3\2\2\2\u00db\u00dc\3\2\2\2\u00dc*\3\2\2\2\u00dd\u00db\3\2\2\2\u00de"+ - "\u00e2\t\16\2\2\u00df\u00e0\7^\2\2\u00e0\u00e2\5/\30\2\u00e1\u00de\3\2"+ - "\2\2\u00e1\u00df\3\2\2\2\u00e2,\3\2\2\2\u00e3\u00e6\5+\26\2\u00e4\u00e6"+ - "\t\17\2\2\u00e5\u00e3\3\2\2\2\u00e5\u00e4\3\2\2\2\u00e6.\3\2\2\2\u00e7"+ - "\u00e8\7w\2\2\u00e8\u00e9\5#\22\2\u00e9\u00ea\5#\22\2\u00ea\u00eb\5#\22"+ - "\2\u00eb\u00ec\5#\22\2\u00ec\60\3\2\2\2\u00ed\u00ee\7\17\2\2\u00ee\u00f1"+ - "\7\f\2\2\u00ef\u00f1\t\f\2\2\u00f0\u00ed\3\2\2\2\u00f0\u00ef\3\2\2\2\u00f1"+ - "\62\3\2\2\2\u00f2\u00f4\t\r\2\2\u00f3\u00f2\3\2\2\2\u00f4\u00f5\3\2\2"+ - "\2\u00f5\u00f3\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00f7\3\2\2\2\u00f7\u00f8"+ - "\b\32\2\2\u00f8\64\3\2\2\2\36\2GLVkqy}\u0081\u0085\u0091\u0098\u009b\u009e"+ - "\u00a4\u00a7\u00ae\u00b0\u00bd\u00c8\u00cb\u00cf\u00d4\u00db\u00e1\u00e5"+ - "\u00f0\u00f5\3\b\2\2"; + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\22\u00ff\b\1\4\2"+ + "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+ + "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+ + "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+ + "\t\31\4\32\t\32\4\33\t\33\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7"+ + "\3\7\3\b\3\b\3\b\3\b\7\bH\n\b\f\b\16\bK\13\b\3\b\3\b\5\bO\n\b\3\b\3\b"+ + "\3\t\3\t\3\t\3\t\7\tW\n\t\f\t\16\tZ\13\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3"+ + "\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\nn\n\n\3\13\3\13\7\13r\n"+ + "\13\f\13\16\13u\13\13\3\13\3\13\3\13\7\13z\n\13\f\13\16\13}\13\13\3\13"+ + "\5\13\u0080\n\13\3\f\3\f\5\f\u0084\n\f\3\r\3\r\5\r\u0088\n\r\3\16\3\16"+ + "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u0094\n\16\3\17\3\17\3\17"+ + "\7\17\u0099\n\17\f\17\16\17\u009c\13\17\5\17\u009e\n\17\3\17\5\17\u00a1"+ + "\n\17\3\17\3\17\6\17\u00a5\n\17\r\17\16\17\u00a6\3\17\5\17\u00aa\n\17"+ + "\3\17\3\17\3\17\6\17\u00af\n\17\r\17\16\17\u00b0\5\17\u00b3\n\17\3\20"+ + "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00c0\n\20\3\21"+ + "\3\21\3\22\3\22\3\23\3\23\3\23\7\23\u00c9\n\23\f\23\16\23\u00cc\13\23"+ + "\5\23\u00ce\n\23\3\24\3\24\5\24\u00d2\n\24\3\24\7\24\u00d5\n\24\f\24\16"+ + "\24\u00d8\13\24\3\25\3\25\7\25\u00dc\n\25\f\25\16\25\u00df\13\25\3\26"+ + "\3\26\3\26\5\26\u00e4\n\26\3\27\3\27\5\27\u00e8\n\27\3\30\3\30\3\30\3"+ + "\30\3\30\3\30\3\31\3\31\3\31\5\31\u00f3\n\31\3\32\6\32\u00f6\n\32\r\32"+ + "\16\32\u00f7\3\32\3\32\3\33\3\33\3\33\3\33\4IX\2\34\3\3\5\4\7\5\t\6\13"+ + "\7\r\b\17\t\21\n\23\13\25\f\27\2\31\2\33\2\35\r\37\16!\17#\2%\2\'\2)\20"+ + "+\2-\2/\2\61\2\63\21\65\22\3\2\16\6\2\f\f\17\17$$^^\6\2\f\f\17\17))^^"+ + "\f\2$$))\61\61^^ddhhppttvvxx\16\2\f\f\17\17$$))\62;^^ddhhppttvxzz\3\2"+ + "\62;\4\2ZZzz\4\2--//\5\2\62;CHch\3\2\63;\4\2GGgg\5\2\f\f\17\17\u202a\u202b"+ + "\b\2\13\f\17\17\"\"\u00a2\u00a2\u2005\u2005\uff01\uff01\4\u024d\2&\2&"+ + "\2C\2\\\2a\2a\2c\2|\2\u00ac\2\u00ac\2\u00b7\2\u00b7\2\u00bc\2\u00bc\2"+ + "\u00c2\2\u00d8\2\u00da\2\u00f8\2\u00fa\2\u02c3\2\u02c8\2\u02d3\2\u02e2"+ + "\2\u02e6\2\u02ee\2\u02ee\2\u02f0\2\u02f0\2\u0372\2\u0376\2\u0378\2\u0379"+ + "\2\u037c\2\u037f\2\u0381\2\u0381\2\u0388\2\u0388\2\u038a\2\u038c\2\u038e"+ + "\2\u038e\2\u0390\2\u03a3\2\u03a5\2\u03f7\2\u03f9\2\u0483\2\u048c\2\u0531"+ + "\2\u0533\2\u0558\2\u055b\2\u055b\2\u0563\2\u0589\2\u05d2\2\u05ec\2\u05f2"+ + "\2\u05f4\2\u0622\2\u064c\2\u0670\2\u0671\2\u0673\2\u06d5\2\u06d7\2\u06d7"+ + "\2\u06e7\2\u06e8\2\u06f0\2\u06f1\2\u06fc\2\u06fe\2\u0701\2\u0701\2\u0712"+ + "\2\u0712\2\u0714\2\u0731\2\u074f\2\u07a7\2\u07b3\2\u07b3\2\u07cc\2\u07ec"+ + "\2\u07f6\2\u07f7\2\u07fc\2\u07fc\2\u0802\2\u0817\2\u081c\2\u081c\2\u0826"+ + "\2\u0826\2\u082a\2\u082a\2\u0842\2\u085a\2\u0862\2\u086c\2\u08a2\2\u08b6"+ + "\2\u08b8\2\u08bf\2\u0906\2\u093b\2\u093f\2\u093f\2\u0952\2\u0952\2\u095a"+ + "\2\u0963\2\u0973\2\u0982\2\u0987\2\u098e\2\u0991\2\u0992\2\u0995\2\u09aa"+ + "\2\u09ac\2\u09b2\2\u09b4\2\u09b4\2\u09b8\2\u09bb\2\u09bf\2\u09bf\2\u09d0"+ + "\2\u09d0\2\u09de\2\u09df\2\u09e1\2\u09e3\2\u09f2\2\u09f3\2\u09fe\2\u09fe"+ + "\2\u0a07\2\u0a0c\2\u0a11\2\u0a12\2\u0a15\2\u0a2a\2\u0a2c\2\u0a32\2\u0a34"+ + "\2\u0a35\2\u0a37\2\u0a38\2\u0a3a\2\u0a3b\2\u0a5b\2\u0a5e\2\u0a60\2\u0a60"+ + "\2\u0a74\2\u0a76\2\u0a87\2\u0a8f\2\u0a91\2\u0a93\2\u0a95\2\u0aaa\2\u0aac"+ + "\2\u0ab2\2\u0ab4\2\u0ab5\2\u0ab7\2\u0abb\2\u0abf\2\u0abf\2\u0ad2\2\u0ad2"+ + "\2\u0ae2\2\u0ae3\2\u0afb\2\u0afb\2\u0b07\2\u0b0e\2\u0b11\2\u0b12\2\u0b15"+ + "\2\u0b2a\2\u0b2c\2\u0b32\2\u0b34\2\u0b35\2\u0b37\2\u0b3b\2\u0b3f\2\u0b3f"+ + "\2\u0b5e\2\u0b5f\2\u0b61\2\u0b63\2\u0b73\2\u0b73\2\u0b85\2\u0b85\2\u0b87"+ + "\2\u0b8c\2\u0b90\2\u0b92\2\u0b94\2\u0b97\2\u0b9b\2\u0b9c\2\u0b9e\2\u0b9e"+ + "\2\u0ba0\2\u0ba1\2\u0ba5\2\u0ba6\2\u0baa\2\u0bac\2\u0bb0\2\u0bbb\2\u0bd2"+ + "\2\u0bd2\2\u0c07\2\u0c0e\2\u0c10\2\u0c12\2\u0c14\2\u0c2a\2\u0c2c\2\u0c3b"+ + "\2\u0c3f\2\u0c3f\2\u0c5a\2\u0c5c\2\u0c62\2\u0c63\2\u0c82\2\u0c82\2\u0c87"+ + "\2\u0c8e\2\u0c90\2\u0c92\2\u0c94\2\u0caa\2\u0cac\2\u0cb5\2\u0cb7\2\u0cbb"+ + "\2\u0cbf\2\u0cbf\2\u0ce0\2\u0ce0\2\u0ce2\2\u0ce3\2\u0cf3\2\u0cf4\2\u0d07"+ + "\2\u0d0e\2\u0d10\2\u0d12\2\u0d14\2\u0d3c\2\u0d3f\2\u0d3f\2\u0d50\2\u0d50"+ + "\2\u0d56\2\u0d58\2\u0d61\2\u0d63\2\u0d7c\2\u0d81\2\u0d87\2\u0d98\2\u0d9c"+ + "\2\u0db3\2\u0db5\2\u0dbd\2\u0dbf\2\u0dbf\2\u0dc2\2\u0dc8\2\u0e03\2\u0e32"+ + "\2\u0e34\2\u0e35\2\u0e42\2\u0e48\2\u0e83\2\u0e84\2\u0e86\2\u0e86\2\u0e89"+ + "\2\u0e8a\2\u0e8c\2\u0e8c\2\u0e8f\2\u0e8f\2\u0e96\2\u0e99\2\u0e9b\2\u0ea1"+ + "\2\u0ea3\2\u0ea5\2\u0ea7\2\u0ea7\2\u0ea9\2\u0ea9\2\u0eac\2\u0ead\2\u0eaf"+ + "\2\u0eb2\2\u0eb4\2\u0eb5\2\u0ebf\2\u0ebf\2\u0ec2\2\u0ec6\2\u0ec8\2\u0ec8"+ + "\2\u0ede\2\u0ee1\2\u0f02\2\u0f02\2\u0f42\2\u0f49\2\u0f4b\2\u0f6e\2\u0f8a"+ + "\2\u0f8e\2\u1002\2\u102c\2\u1041\2\u1041\2\u1052\2\u1057\2\u105c\2\u105f"+ + "\2\u1063\2\u1063\2\u1067\2\u1068\2\u1070\2\u1072\2\u1077\2\u1083\2\u1090"+ + "\2\u1090\2\u10a2\2\u10c7\2\u10c9\2\u10c9\2\u10cf\2\u10cf\2\u10d2\2\u10fc"+ + "\2\u10fe\2\u124a\2\u124c\2\u124f\2\u1252\2\u1258\2\u125a\2\u125a\2\u125c"+ + "\2\u125f\2\u1262\2\u128a\2\u128c\2\u128f\2\u1292\2\u12b2\2\u12b4\2\u12b7"+ + "\2\u12ba\2\u12c0\2\u12c2\2\u12c2\2\u12c4\2\u12c7\2\u12ca\2\u12d8\2\u12da"+ + "\2\u1312\2\u1314\2\u1317\2\u131a\2\u135c\2\u1382\2\u1391\2\u13a2\2\u13f7"+ + "\2\u13fa\2\u13ff\2\u1403\2\u166e\2\u1671\2\u1681\2\u1683\2\u169c\2\u16a2"+ + "\2\u16ec\2\u16f3\2\u16fa\2\u1702\2\u170e\2\u1710\2\u1713\2\u1722\2\u1733"+ + "\2\u1742\2\u1753\2\u1762\2\u176e\2\u1770\2\u1772\2\u1782\2\u17b5\2\u17d9"+ + "\2\u17d9\2\u17de\2\u17de\2\u1822\2\u1879\2\u1882\2\u1886\2\u1889\2\u18aa"+ + "\2\u18ac\2\u18ac\2\u18b2\2\u18f7\2\u1902\2\u1920\2\u1952\2\u196f\2\u1972"+ + "\2\u1976\2\u1982\2\u19ad\2\u19b2\2\u19cb\2\u1a02\2\u1a18\2\u1a22\2\u1a56"+ + "\2\u1aa9\2\u1aa9\2\u1b07\2\u1b35\2\u1b47\2\u1b4d\2\u1b85\2\u1ba2\2\u1bb0"+ + "\2\u1bb1\2\u1bbc\2\u1be7\2\u1c02\2\u1c25\2\u1c4f\2\u1c51\2\u1c5c\2\u1c7f"+ + "\2\u1c82\2\u1c8a\2\u1ceb\2\u1cee\2\u1cf0\2\u1cf3\2\u1cf7\2\u1cf8\2\u1d02"+ + "\2\u1dc1\2\u1e02\2\u1f17\2\u1f1a\2\u1f1f\2\u1f22\2\u1f47\2\u1f4a\2\u1f4f"+ + "\2\u1f52\2\u1f59\2\u1f5b\2\u1f5b\2\u1f5d\2\u1f5d\2\u1f5f\2\u1f5f\2\u1f61"+ + "\2\u1f7f\2\u1f82\2\u1fb6\2\u1fb8\2\u1fbe\2\u1fc0\2\u1fc0\2\u1fc4\2\u1fc6"+ + "\2\u1fc8\2\u1fce\2\u1fd2\2\u1fd5\2\u1fd8\2\u1fdd\2\u1fe2\2\u1fee\2\u1ff4"+ + "\2\u1ff6\2\u1ff8\2\u1ffe\2\u2073\2\u2073\2\u2081\2\u2081\2\u2092\2\u209e"+ + "\2\u2104\2\u2104\2\u2109\2\u2109\2\u210c\2\u2115\2\u2117\2\u2117\2\u211b"+ + "\2\u211f\2\u2126\2\u2126\2\u2128\2\u2128\2\u212a\2\u212a\2\u212c\2\u212f"+ + "\2\u2131\2\u213b\2\u213e\2\u2141\2\u2147\2\u214b\2\u2150\2\u2150\2\u2185"+ + "\2\u2186\2\u2c02\2\u2c30\2\u2c32\2\u2c60\2\u2c62\2\u2ce6\2\u2ced\2\u2cf0"+ + "\2\u2cf4\2\u2cf5\2\u2d02\2\u2d27\2\u2d29\2\u2d29\2\u2d2f\2\u2d2f\2\u2d32"+ + "\2\u2d69\2\u2d71\2\u2d71\2\u2d82\2\u2d98\2\u2da2\2\u2da8\2\u2daa\2\u2db0"+ + "\2\u2db2\2\u2db8\2\u2dba\2\u2dc0\2\u2dc2\2\u2dc8\2\u2dca\2\u2dd0\2\u2dd2"+ + "\2\u2dd8\2\u2dda\2\u2de0\2\u2e31\2\u2e31\2\u3007\2\u3008\2\u3033\2\u3037"+ + "\2\u303d\2\u303e\2\u3043\2\u3098\2\u309f\2\u30a1\2\u30a3\2\u30fc\2\u30fe"+ + "\2\u3101\2\u3107\2\u3130\2\u3133\2\u3190\2\u31a2\2\u31bc\2\u31f2\2\u3201"+ + "\2\u3402\2\u4db7\2\u4e02\2\u9fec\2\ua002\2\ua48e\2\ua4d2\2\ua4ff\2\ua502"+ + "\2\ua60e\2\ua612\2\ua621\2\ua62c\2\ua62d\2\ua642\2\ua670\2\ua681\2\ua69f"+ + "\2\ua6a2\2\ua6e7\2\ua719\2\ua721\2\ua724\2\ua78a\2\ua78d\2\ua7b0\2\ua7b2"+ + "\2\ua7b9\2\ua7f9\2\ua803\2\ua805\2\ua807\2\ua809\2\ua80c\2\ua80e\2\ua824"+ + "\2\ua842\2\ua875\2\ua884\2\ua8b5\2\ua8f4\2\ua8f9\2\ua8fd\2\ua8fd\2\ua8ff"+ + "\2\ua8ff\2\ua90c\2\ua927\2\ua932\2\ua948\2\ua962\2\ua97e\2\ua986\2\ua9b4"+ + "\2\ua9d1\2\ua9d1\2\ua9e2\2\ua9e6\2\ua9e8\2\ua9f1\2\ua9fc\2\uaa00\2\uaa02"+ + "\2\uaa2a\2\uaa42\2\uaa44\2\uaa46\2\uaa4d\2\uaa62\2\uaa78\2\uaa7c\2\uaa7c"+ + "\2\uaa80\2\uaab1\2\uaab3\2\uaab3\2\uaab7\2\uaab8\2\uaabb\2\uaabf\2\uaac2"+ + "\2\uaac2\2\uaac4\2\uaac4\2\uaadd\2\uaadf\2\uaae2\2\uaaec\2\uaaf4\2\uaaf6"+ + "\2\uab03\2\uab08\2\uab0b\2\uab10\2\uab13\2\uab18\2\uab22\2\uab28\2\uab2a"+ + "\2\uab30\2\uab32\2\uab5c\2\uab5e\2\uab67\2\uab72\2\uabe4\2\uac02\2\ud7a5"+ + "\2\ud7b2\2\ud7c8\2\ud7cd\2\ud7fd\2\uf902\2\ufa6f\2\ufa72\2\ufadb\2\ufb02"+ + "\2\ufb08\2\ufb15\2\ufb19\2\ufb1f\2\ufb1f\2\ufb21\2\ufb2a\2\ufb2c\2\ufb38"+ + "\2\ufb3a\2\ufb3e\2\ufb40\2\ufb40\2\ufb42\2\ufb43\2\ufb45\2\ufb46\2\ufb48"+ + "\2\ufbb3\2\ufbd5\2\ufd3f\2\ufd52\2\ufd91\2\ufd94\2\ufdc9\2\ufdf2\2\ufdfd"+ + "\2\ufe72\2\ufe76\2\ufe78\2\ufefe\2\uff23\2\uff3c\2\uff43\2\uff5c\2\uff68"+ + "\2\uffc0\2\uffc4\2\uffc9\2\uffcc\2\uffd1\2\uffd4\2\uffd9\2\uffdc\2\uffde"+ + "\2\2\3\r\3\17\3(\3*\3<\3>\3?\3A\3O\3R\3_\3\u0082\3\u00fc\3\u0282\3\u029e"+ + "\3\u02a2\3\u02d2\3\u0302\3\u0321\3\u032f\3\u0342\3\u0344\3\u034b\3\u0352"+ + "\3\u0377\3\u0382\3\u039f\3\u03a2\3\u03c5\3\u03ca\3\u03d1\3\u0402\3\u049f"+ + "\3\u04b2\3\u04d5\3\u04da\3\u04fd\3\u0502\3\u0529\3\u0532\3\u0565\3\u0602"+ + "\3\u0738\3\u0742\3\u0757\3\u0762\3\u0769\3\u0802\3\u0807\3\u080a\3\u080a"+ + "\3\u080c\3\u0837\3\u0839\3\u083a\3\u083e\3\u083e\3\u0841\3\u0857\3\u0862"+ + "\3\u0878\3\u0882\3\u08a0\3\u08e2\3\u08f4\3\u08f6\3\u08f7\3\u0902\3\u0917"+ + "\3\u0922\3\u093b\3\u0982\3\u09b9\3\u09c0\3\u09c1\3\u0a02\3\u0a02\3\u0a12"+ + "\3\u0a15\3\u0a17\3\u0a19\3\u0a1b\3\u0a35\3\u0a62\3\u0a7e\3\u0a82\3\u0a9e"+ + "\3\u0ac2\3\u0ac9\3\u0acb\3\u0ae6\3\u0b02\3\u0b37\3\u0b42\3\u0b57\3\u0b62"+ + "\3\u0b74\3\u0b82\3\u0b93\3\u0c02\3\u0c4a\3\u0c82\3\u0cb4\3\u0cc2\3\u0cf4"+ + "\3\u1005\3\u1039\3\u1085\3\u10b1\3\u10d2\3\u10ea\3\u1105\3\u1128\3\u1152"+ + "\3\u1174\3\u1178\3\u1178\3\u1185\3\u11b4\3\u11c3\3\u11c6\3\u11dc\3\u11dc"+ + "\3\u11de\3\u11de\3\u1202\3\u1213\3\u1215\3\u122d\3\u1282\3\u1288\3\u128a"+ + "\3\u128a\3\u128c\3\u128f\3\u1291\3\u129f\3\u12a1\3\u12aa\3\u12b2\3\u12e0"+ + "\3\u1307\3\u130e\3\u1311\3\u1312\3\u1315\3\u132a\3\u132c\3\u1332\3\u1334"+ + "\3\u1335\3\u1337\3\u133b\3\u133f\3\u133f\3\u1352\3\u1352\3\u135f\3\u1363"+ + "\3\u1402\3\u1436\3\u1449\3\u144c\3\u1482\3\u14b1\3\u14c6\3\u14c7\3\u14c9"+ + "\3\u14c9\3\u1582\3\u15b0\3\u15da\3\u15dd\3\u1602\3\u1631\3\u1646\3\u1646"+ + "\3\u1682\3\u16ac\3\u1702\3\u171b\3\u18a2\3\u18e1\3\u1901\3\u1901\3\u1a02"+ + "\3\u1a02\3\u1a0d\3\u1a34\3\u1a3c\3\u1a3c\3\u1a52\3\u1a52\3\u1a5e\3\u1a85"+ + "\3\u1a88\3\u1a8b\3\u1ac2\3\u1afa\3\u1c02\3\u1c0a\3\u1c0c\3\u1c30\3\u1c42"+ + "\3\u1c42\3\u1c74\3\u1c91\3\u1d02\3\u1d08\3\u1d0a\3\u1d0b\3\u1d0d\3\u1d32"+ + "\3\u1d48\3\u1d48\3\u2002\3\u239b\3\u2482\3\u2545\3\u3002\3\u3430\3\u4402"+ + "\3\u4648\3\u6802\3\u6a3a\3\u6a42\3\u6a60\3\u6ad2\3\u6aef\3\u6b02\3\u6b31"+ + "\3\u6b42\3\u6b45\3\u6b65\3\u6b79\3\u6b7f\3\u6b91\3\u6f02\3\u6f46\3\u6f52"+ + "\3\u6f52\3\u6f95\3\u6fa1\3\u6fe2\3\u6fe3\3\u7002\3\u87ee\3\u8802\3\u8af4"+ + "\3\ub002\3\ub120\3\ub172\3\ub2fd\3\ubc02\3\ubc6c\3\ubc72\3\ubc7e\3\ubc82"+ + "\3\ubc8a\3\ubc92\3\ubc9b\3\ud402\3\ud456\3\ud458\3\ud49e\3\ud4a0\3\ud4a1"+ + "\3\ud4a4\3\ud4a4\3\ud4a7\3\ud4a8\3\ud4ab\3\ud4ae\3\ud4b0\3\ud4bb\3\ud4bd"+ + "\3\ud4bd\3\ud4bf\3\ud4c5\3\ud4c7\3\ud507\3\ud509\3\ud50c\3\ud50f\3\ud516"+ + "\3\ud518\3\ud51e\3\ud520\3\ud53b\3\ud53d\3\ud540\3\ud542\3\ud546\3\ud548"+ + "\3\ud548\3\ud54c\3\ud552\3\ud554\3\ud6a7\3\ud6aa\3\ud6c2\3\ud6c4\3\ud6dc"+ + "\3\ud6de\3\ud6fc\3\ud6fe\3\ud716\3\ud718\3\ud736\3\ud738\3\ud750\3\ud752"+ + "\3\ud770\3\ud772\3\ud78a\3\ud78c\3\ud7aa\3\ud7ac\3\ud7c4\3\ud7c6\3\ud7cd"+ + "\3\ue802\3\ue8c6\3\ue902\3\ue945\3\uee02\3\uee05\3\uee07\3\uee21\3\uee23"+ + "\3\uee24\3\uee26\3\uee26\3\uee29\3\uee29\3\uee2b\3\uee34\3\uee36\3\uee39"+ + "\3\uee3b\3\uee3b\3\uee3d\3\uee3d\3\uee44\3\uee44\3\uee49\3\uee49\3\uee4b"+ + "\3\uee4b\3\uee4d\3\uee4d\3\uee4f\3\uee51\3\uee53\3\uee54\3\uee56\3\uee56"+ + "\3\uee59\3\uee59\3\uee5b\3\uee5b\3\uee5d\3\uee5d\3\uee5f\3\uee5f\3\uee61"+ + "\3\uee61\3\uee63\3\uee64\3\uee66\3\uee66\3\uee69\3\uee6c\3\uee6e\3\uee74"+ + "\3\uee76\3\uee79\3\uee7b\3\uee7e\3\uee80\3\uee80\3\uee82\3\uee8b\3\uee8d"+ + "\3\uee9d\3\ueea3\3\ueea5\3\ueea7\3\ueeab\3\ueead\3\ueebd\3\2\4\ua6d8\4"+ + "\ua702\4\ub736\4\ub742\4\ub81f\4\ub822\4\ucea3\4\uceb2\4\uebe2\4\uf802"+ + "\4\ufa1f\4\u0179\2\62\2;\2a\2a\2\u00b4\2\u00b5\2\u00bb\2\u00bb\2\u00be"+ + "\2\u00c0\2\u0302\2\u0371\2\u0485\2\u048b\2\u0593\2\u05bf\2\u05c1\2\u05c1"+ + "\2\u05c3\2\u05c4\2\u05c6\2\u05c7\2\u05c9\2\u05c9\2\u0612\2\u061c\2\u064d"+ + "\2\u066b\2\u0672\2\u0672\2\u06d8\2\u06de\2\u06e1\2\u06e6\2\u06e9\2\u06ea"+ + "\2\u06ec\2\u06ef\2\u06f2\2\u06fb\2\u0713\2\u0713\2\u0732\2\u074c\2\u07a8"+ + "\2\u07b2\2\u07c2\2\u07cb\2\u07ed\2\u07f5\2\u0818\2\u081b\2\u081d\2\u0825"+ + "\2\u0827\2\u0829\2\u082b\2\u082f\2\u085b\2\u085d\2\u08d6\2\u08e3\2\u08e5"+ + "\2\u0905\2\u093c\2\u093e\2\u0940\2\u0951\2\u0953\2\u0959\2\u0964\2\u0965"+ + "\2\u0968\2\u0971\2\u0983\2\u0985\2\u09be\2\u09be\2\u09c0\2\u09c6\2\u09c9"+ + "\2\u09ca\2\u09cd\2\u09cf\2\u09d9\2\u09d9\2\u09e4\2\u09e5\2\u09e8\2\u09f1"+ + "\2\u09f6\2\u09fb\2\u0a03\2\u0a05\2\u0a3e\2\u0a3e\2\u0a40\2\u0a44\2\u0a49"+ + "\2\u0a4a\2\u0a4d\2\u0a4f\2\u0a53\2\u0a53\2\u0a68\2\u0a73\2\u0a77\2\u0a77"+ + "\2\u0a83\2\u0a85\2\u0abe\2\u0abe\2\u0ac0\2\u0ac7\2\u0ac9\2\u0acb\2\u0acd"+ + "\2\u0acf\2\u0ae4\2\u0ae5\2\u0ae8\2\u0af1\2\u0afc\2\u0b01\2\u0b03\2\u0b05"+ + "\2\u0b3e\2\u0b3e\2\u0b40\2\u0b46\2\u0b49\2\u0b4a\2\u0b4d\2\u0b4f\2\u0b58"+ + "\2\u0b59\2\u0b64\2\u0b65\2\u0b68\2\u0b71\2\u0b74\2\u0b79\2\u0b84\2\u0b84"+ + "\2\u0bc0\2\u0bc4\2\u0bc8\2\u0bca\2\u0bcc\2\u0bcf\2\u0bd9\2\u0bd9\2\u0be8"+ + "\2\u0bf4\2\u0c02\2\u0c05\2\u0c40\2\u0c46\2\u0c48\2\u0c4a\2\u0c4c\2\u0c4f"+ + "\2\u0c57\2\u0c58\2\u0c64\2\u0c65\2\u0c68\2\u0c71\2\u0c7a\2\u0c80\2\u0c83"+ + "\2\u0c85\2\u0cbe\2\u0cbe\2\u0cc0\2\u0cc6\2\u0cc8\2\u0cca\2\u0ccc\2\u0ccf"+ + "\2\u0cd7\2\u0cd8\2\u0ce4\2\u0ce5\2\u0ce8\2\u0cf1\2\u0d02\2\u0d05\2\u0d3d"+ + "\2\u0d3e\2\u0d40\2\u0d46\2\u0d48\2\u0d4a\2\u0d4c\2\u0d4f\2\u0d59\2\u0d60"+ + "\2\u0d64\2\u0d65\2\u0d68\2\u0d7a\2\u0d84\2\u0d85\2\u0dcc\2\u0dcc\2\u0dd1"+ + "\2\u0dd6\2\u0dd8\2\u0dd8\2\u0dda\2\u0de1\2\u0de8\2\u0df1\2\u0df4\2\u0df5"+ + "\2\u0e33\2\u0e33\2\u0e36\2\u0e3c\2\u0e49\2\u0e50\2\u0e52\2\u0e5b\2\u0eb3"+ + "\2\u0eb3\2\u0eb6\2\u0ebb\2\u0ebd\2\u0ebe\2\u0eca\2\u0ecf\2\u0ed2\2\u0edb"+ + "\2\u0f1a\2\u0f1b\2\u0f22\2\u0f35\2\u0f37\2\u0f37\2\u0f39\2\u0f39\2\u0f3b"+ + "\2\u0f3b\2\u0f40\2\u0f41\2\u0f73\2\u0f86\2\u0f88\2\u0f89\2\u0f8f\2\u0f99"+ + "\2\u0f9b\2\u0fbe\2\u0fc8\2\u0fc8\2\u102d\2\u1040\2\u1042\2\u104b\2\u1058"+ + "\2\u105b\2\u1060\2\u1062\2\u1064\2\u1066\2\u1069\2\u106f\2\u1073\2\u1076"+ + "\2\u1084\2\u108f\2\u1091\2\u109f\2\u135f\2\u1361\2\u136b\2\u137e\2\u16f0"+ + "\2\u16f2\2\u1714\2\u1716\2\u1734\2\u1736\2\u1754\2\u1755\2\u1774\2\u1775"+ + "\2\u17b6\2\u17d5\2\u17df\2\u17df\2\u17e2\2\u17eb\2\u17f2\2\u17fb\2\u180d"+ + "\2\u180f\2\u1812\2\u181b\2\u1887\2\u1888\2\u18ab\2\u18ab\2\u1922\2\u192d"+ + "\2\u1932\2\u193d\2\u1948\2\u1951\2\u19d2\2\u19dc\2\u1a19\2\u1a1d\2\u1a57"+ + "\2\u1a60\2\u1a62\2\u1a7e\2\u1a81\2\u1a8b\2\u1a92\2\u1a9b\2\u1ab2\2\u1ac0"+ + "\2\u1b02\2\u1b06\2\u1b36\2\u1b46\2\u1b52\2\u1b5b\2\u1b6d\2\u1b75\2\u1b82"+ + "\2\u1b84\2\u1ba3\2\u1baf\2\u1bb2\2\u1bbb\2\u1be8\2\u1bf5\2\u1c26\2\u1c39"+ + "\2\u1c42\2\u1c4b\2\u1c52\2\u1c5b\2\u1cd2\2\u1cd4\2\u1cd6\2\u1cea\2\u1cef"+ + "\2\u1cef\2\u1cf4\2\u1cf6\2\u1cf9\2\u1cfb\2\u1dc2\2\u1dfb\2\u1dfd\2\u1e01"+ + "\2\u200e\2\u200f\2\u2041\2\u2042\2\u2056\2\u2056\2\u2072\2\u2072\2\u2076"+ + "\2\u207b\2\u2082\2\u208b\2\u20d2\2\u20f2\2\u2152\2\u2184\2\u2187\2\u218b"+ + "\2\u2462\2\u249d\2\u24ec\2\u2501\2\u2778\2\u2795\2\u2cf1\2\u2cf3\2\u2cff"+ + "\2\u2cff\2\u2d81\2\u2d81\2\u2de2\2\u2e01\2\u3009\2\u3009\2\u3023\2\u3031"+ + "\2\u303a\2\u303c\2\u309b\2\u309c\2\u3194\2\u3197\2\u3222\2\u322b\2\u324a"+ + "\2\u3251\2\u3253\2\u3261\2\u3282\2\u328b\2\u32b3\2\u32c1\2\ua622\2\ua62b"+ + "\2\ua671\2\ua674\2\ua676\2\ua67f\2\ua6a0\2\ua6a1\2\ua6e8\2\ua6f3\2\ua804"+ + "\2\ua804\2\ua808\2\ua808\2\ua80d\2\ua80d\2\ua825\2\ua829\2\ua832\2\ua837"+ + "\2\ua882\2\ua883\2\ua8b6\2\ua8c7\2\ua8d2\2\ua8db\2\ua8e2\2\ua8f3\2\ua902"+ + "\2\ua90b\2\ua928\2\ua92f\2\ua949\2\ua955\2\ua982\2\ua985\2\ua9b5\2\ua9c2"+ + "\2\ua9d2\2\ua9db\2\ua9e7\2\ua9e7\2\ua9f2\2\ua9fb\2\uaa2b\2\uaa38\2\uaa45"+ + "\2\uaa45\2\uaa4e\2\uaa4f\2\uaa52\2\uaa5b\2\uaa7d\2\uaa7f\2\uaab2\2\uaab2"+ + "\2\uaab4\2\uaab6\2\uaab9\2\uaaba\2\uaac0\2\uaac1\2\uaac3\2\uaac3\2\uaaed"+ + "\2\uaaf1\2\uaaf7\2\uaaf8\2\uabe5\2\uabec\2\uabee\2\uabef\2\uabf2\2\uabfb"+ + "\2\ufb20\2\ufb20\2\ufe02\2\ufe11\2\ufe22\2\ufe31\2\ufe35\2\ufe36\2\ufe4f"+ + "\2\ufe51\2\uff12\2\uff1b\2\uff41\2\uff41\2\u0109\3\u0135\3\u0142\3\u017a"+ + "\3\u018c\3\u018d\3\u01ff\3\u01ff\3\u02e2\3\u02fd\3\u0322\3\u0325\3\u0343"+ + "\3\u0343\3\u034c\3\u034c\3\u0378\3\u037c\3\u03d3\3\u03d7\3\u04a2\3\u04ab"+ + "\3\u085a\3\u0861\3\u087b\3\u0881\3\u08a9\3\u08b1\3\u08fd\3\u0901\3\u0918"+ + "\3\u091d\3\u09be\3\u09bf\3\u09c2\3\u09d1\3\u09d4\3\u0a01\3\u0a03\3\u0a05"+ + "\3\u0a07\3\u0a08\3\u0a0e\3\u0a11\3\u0a3a\3\u0a3c\3\u0a41\3\u0a49\3\u0a7f"+ + "\3\u0a80\3\u0a9f\3\u0aa1\3\u0ae7\3\u0ae8\3\u0aed\3\u0af1\3\u0b5a\3\u0b61"+ + "\3\u0b7a\3\u0b81\3\u0bab\3\u0bb1\3\u0cfc\3\u0d01\3\u0e62\3\u0e80\3\u1002"+ + "\3\u1004\3\u103a\3\u1048\3\u1054\3\u1071\3\u1081\3\u1084\3\u10b2\3\u10bc"+ + "\3\u10f2\3\u10fb\3\u1102\3\u1104\3\u1129\3\u1136\3\u1138\3\u1141\3\u1175"+ + "\3\u1175\3\u1182\3\u1184\3\u11b5\3\u11c2\3\u11cc\3\u11ce\3\u11d2\3\u11db"+ + "\3\u11e3\3\u11f6\3\u122e\3\u1239\3\u1240\3\u1240\3\u12e1\3\u12ec\3\u12f2"+ + "\3\u12fb\3\u1302\3\u1305\3\u133e\3\u133e\3\u1340\3\u1346\3\u1349\3\u134a"+ + "\3\u134d\3\u134f\3\u1359\3\u1359\3\u1364\3\u1365\3\u1368\3\u136e\3\u1372"+ + "\3\u1376\3\u1437\3\u1448\3\u1452\3\u145b\3\u14b2\3\u14c5\3\u14d2\3\u14db"+ + "\3\u15b1\3\u15b7\3\u15ba\3\u15c2\3\u15de\3\u15df\3\u1632\3\u1642\3\u1652"+ + "\3\u165b\3\u16ad\3\u16b9\3\u16c2\3\u16cb\3\u171f\3\u172d\3\u1732\3\u173d"+ + "\3\u18e2\3\u18f4\3\u1a03\3\u1a0c\3\u1a35\3\u1a3b\3\u1a3d\3\u1a40\3\u1a49"+ + "\3\u1a49\3\u1a53\3\u1a5d\3\u1a8c\3\u1a9b\3\u1c31\3\u1c38\3\u1c3a\3\u1c41"+ + "\3\u1c52\3\u1c6e\3\u1c94\3\u1ca9\3\u1cab\3\u1cb8\3\u1d33\3\u1d38\3\u1d3c"+ + "\3\u1d3c\3\u1d3e\3\u1d3f\3\u1d41\3\u1d47\3\u1d49\3\u1d49\3\u1d52\3\u1d5b"+ + "\3\u2402\3\u2470\3\u6a62\3\u6a6b\3\u6af2\3\u6af6\3\u6b32\3\u6b38\3\u6b52"+ + "\3\u6b5b\3\u6b5d\3\u6b63\3\u6f53\3\u6f80\3\u6f91\3\u6f94\3\ubc9f\3\ubca0"+ + "\3\ud167\3\ud16b\3\ud16f\3\ud174\3\ud17d\3\ud184\3\ud187\3\ud18d\3\ud1ac"+ + "\3\ud1af\3\ud244\3\ud246\3\ud362\3\ud373\3\ud7d0\3\ud801\3\uda02\3\uda38"+ + "\3\uda3d\3\uda6e\3\uda77\3\uda77\3\uda86\3\uda86\3\uda9d\3\udaa1\3\udaa3"+ + "\3\udab1\3\ue002\3\ue008\3\ue00a\3\ue01a\3\ue01d\3\ue023\3\ue025\3\ue026"+ + "\3\ue028\3\ue02c\3\ue8c9\3\ue8d8\3\ue946\3\ue94c\3\ue952\3\ue95b\3\uf102"+ + "\3\uf10e\3\u0102\20\u01f1\20\u0115\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2"+ + "\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3"+ + "\2\2\2\2\25\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2)\3\2\2\2\2"+ + "\63\3\2\2\2\2\65\3\2\2\2\3\67\3\2\2\2\59\3\2\2\2\7;\3\2\2\2\t=\3\2\2\2"+ + "\13?\3\2\2\2\rA\3\2\2\2\17C\3\2\2\2\21R\3\2\2\2\23m\3\2\2\2\25\177\3\2"+ + "\2\2\27\u0083\3\2\2\2\31\u0087\3\2\2\2\33\u0089\3\2\2\2\35\u00b2\3\2\2"+ + "\2\37\u00bf\3\2\2\2!\u00c1\3\2\2\2#\u00c3\3\2\2\2%\u00cd\3\2\2\2\'\u00cf"+ + "\3\2\2\2)\u00d9\3\2\2\2+\u00e3\3\2\2\2-\u00e7\3\2\2\2/\u00e9\3\2\2\2\61"+ + "\u00f2\3\2\2\2\63\u00f5\3\2\2\2\65\u00fb\3\2\2\2\678\7}\2\28\4\3\2\2\2"+ + "9:\7.\2\2:\6\3\2\2\2;<\7\177\2\2<\b\3\2\2\2=>\7<\2\2>\n\3\2\2\2?@\7]\2"+ + "\2@\f\3\2\2\2AB\7_\2\2B\16\3\2\2\2CD\7\61\2\2DE\7\61\2\2EI\3\2\2\2FH\13"+ + "\2\2\2GF\3\2\2\2HK\3\2\2\2IJ\3\2\2\2IG\3\2\2\2JN\3\2\2\2KI\3\2\2\2LO\5"+ + "\61\31\2MO\7\2\2\3NL\3\2\2\2NM\3\2\2\2OP\3\2\2\2PQ\b\b\2\2Q\20\3\2\2\2"+ + "RS\7\61\2\2ST\7,\2\2TX\3\2\2\2UW\13\2\2\2VU\3\2\2\2WZ\3\2\2\2XY\3\2\2"+ + "\2XV\3\2\2\2Y[\3\2\2\2ZX\3\2\2\2[\\\7,\2\2\\]\7\61\2\2]^\3\2\2\2^_\b\t"+ + "\2\2_\22\3\2\2\2`a\7v\2\2ab\7t\2\2bc\7w\2\2cn\7g\2\2de\7h\2\2ef\7c\2\2"+ + "fg\7n\2\2gh\7u\2\2hn\7g\2\2ij\7p\2\2jk\7w\2\2kl\7n\2\2ln\7n\2\2m`\3\2"+ + "\2\2md\3\2\2\2mi\3\2\2\2n\24\3\2\2\2os\7$\2\2pr\5\27\f\2qp\3\2\2\2ru\3"+ + "\2\2\2sq\3\2\2\2st\3\2\2\2tv\3\2\2\2us\3\2\2\2v\u0080\7$\2\2w{\7)\2\2"+ + "xz\5\31\r\2yx\3\2\2\2z}\3\2\2\2{y\3\2\2\2{|\3\2\2\2|~\3\2\2\2}{\3\2\2"+ + "\2~\u0080\7)\2\2\177o\3\2\2\2\177w\3\2\2\2\u0080\26\3\2\2\2\u0081\u0084"+ + "\n\2\2\2\u0082\u0084\5\33\16\2\u0083\u0081\3\2\2\2\u0083\u0082\3\2\2\2"+ + "\u0084\30\3\2\2\2\u0085\u0088\n\3\2\2\u0086\u0088\5\33\16\2\u0087\u0085"+ + "\3\2\2\2\u0087\u0086\3\2\2\2\u0088\32\3\2\2\2\u0089\u0093\7^\2\2\u008a"+ + "\u0094\5\61\31\2\u008b\u0094\5/\30\2\u008c\u0094\t\4\2\2\u008d\u0094\n"+ + "\5\2\2\u008e\u0094\7\62\2\2\u008f\u0090\7z\2\2\u0090\u0091\5#\22\2\u0091"+ + "\u0092\5#\22\2\u0092\u0094\3\2\2\2\u0093\u008a\3\2\2\2\u0093\u008b\3\2"+ + "\2\2\u0093\u008c\3\2\2\2\u0093\u008d\3\2\2\2\u0093\u008e\3\2\2\2\u0093"+ + "\u008f\3\2\2\2\u0094\34\3\2\2\2\u0095\u009d\5%\23\2\u0096\u009a\7\60\2"+ + "\2\u0097\u0099\t\6\2\2\u0098\u0097\3\2\2\2\u0099\u009c\3\2\2\2\u009a\u0098"+ + "\3\2\2\2\u009a\u009b\3\2\2\2\u009b\u009e\3\2\2\2\u009c\u009a\3\2\2\2\u009d"+ + "\u0096\3\2\2\2\u009d\u009e\3\2\2\2\u009e\u00a0\3\2\2\2\u009f\u00a1\5\'"+ + "\24\2\u00a0\u009f\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\u00b3\3\2\2\2\u00a2"+ + "\u00a4\7\60\2\2\u00a3\u00a5\t\6\2\2\u00a4\u00a3\3\2\2\2\u00a5\u00a6\3"+ + "\2\2\2\u00a6\u00a4\3\2\2\2\u00a6\u00a7\3\2\2\2\u00a7\u00a9\3\2\2\2\u00a8"+ + "\u00aa\5\'\24\2\u00a9\u00a8\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\u00b3\3"+ + "\2\2\2\u00ab\u00ac\7\62\2\2\u00ac\u00ae\t\7\2\2\u00ad\u00af\5#\22\2\u00ae"+ + "\u00ad\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1\3\2"+ + "\2\2\u00b1\u00b3\3\2\2\2\u00b2\u0095\3\2\2\2\u00b2\u00a2\3\2\2\2\u00b2"+ + "\u00ab\3\2\2\2\u00b3\36\3\2\2\2\u00b4\u00b5\7K\2\2\u00b5\u00b6\7p\2\2"+ + "\u00b6\u00b7\7h\2\2\u00b7\u00b8\7k\2\2\u00b8\u00b9\7p\2\2\u00b9\u00ba"+ + "\7k\2\2\u00ba\u00bb\7v\2\2\u00bb\u00c0\7{\2\2\u00bc\u00bd\7P\2\2\u00bd"+ + "\u00be\7c\2\2\u00be\u00c0\7P\2\2\u00bf\u00b4\3\2\2\2\u00bf\u00bc\3\2\2"+ + "\2\u00c0 \3\2\2\2\u00c1\u00c2\t\b\2\2\u00c2\"\3\2\2\2\u00c3\u00c4\t\t"+ + "\2\2\u00c4$\3\2\2\2\u00c5\u00ce\7\62\2\2\u00c6\u00ca\t\n\2\2\u00c7\u00c9"+ + "\t\6\2\2\u00c8\u00c7\3\2\2\2\u00c9\u00cc\3\2\2\2\u00ca\u00c8\3\2\2\2\u00ca"+ + "\u00cb\3\2\2\2\u00cb\u00ce\3\2\2\2\u00cc\u00ca\3\2\2\2\u00cd\u00c5\3\2"+ + "\2\2\u00cd\u00c6\3\2\2\2\u00ce&\3\2\2\2\u00cf\u00d1\t\13\2\2\u00d0\u00d2"+ + "\5!\21\2\u00d1\u00d0\3\2\2\2\u00d1\u00d2\3\2\2\2\u00d2\u00d6\3\2\2\2\u00d3"+ + "\u00d5\t\6\2\2\u00d4\u00d3\3\2\2\2\u00d5\u00d8\3\2\2\2\u00d6\u00d4\3\2"+ + "\2\2\u00d6\u00d7\3\2\2\2\u00d7(\3\2\2\2\u00d8\u00d6\3\2\2\2\u00d9\u00dd"+ + "\5+\26\2\u00da\u00dc\5-\27\2\u00db\u00da\3\2\2\2\u00dc\u00df\3\2\2\2\u00dd"+ + "\u00db\3\2\2\2\u00dd\u00de\3\2\2\2\u00de*\3\2\2\2\u00df\u00dd\3\2\2\2"+ + "\u00e0\u00e4\t\16\2\2\u00e1\u00e2\7^\2\2\u00e2\u00e4\5/\30\2\u00e3\u00e0"+ + "\3\2\2\2\u00e3\u00e1\3\2\2\2\u00e4,\3\2\2\2\u00e5\u00e8\5+\26\2\u00e6"+ + "\u00e8\t\17\2\2\u00e7\u00e5\3\2\2\2\u00e7\u00e6\3\2\2\2\u00e8.\3\2\2\2"+ + "\u00e9\u00ea\7w\2\2\u00ea\u00eb\5#\22\2\u00eb\u00ec\5#\22\2\u00ec\u00ed"+ + "\5#\22\2\u00ed\u00ee\5#\22\2\u00ee\60\3\2\2\2\u00ef\u00f0\7\17\2\2\u00f0"+ + "\u00f3\7\f\2\2\u00f1\u00f3\t\f\2\2\u00f2\u00ef\3\2\2\2\u00f2\u00f1\3\2"+ + "\2\2\u00f3\62\3\2\2\2\u00f4\u00f6\t\r\2\2\u00f5\u00f4\3\2\2\2\u00f6\u00f7"+ + "\3\2\2\2\u00f7\u00f5\3\2\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f9\3\2\2\2\u00f9"+ + "\u00fa\b\32\2\2\u00fa\64\3\2\2\2\u00fb\u00fc\7\uff01\2\2\u00fc\u00fd\3"+ + "\2\2\2\u00fd\u00fe\b\33\2\2\u00fe\66\3\2\2\2\36\2INXms{\177\u0083\u0087"+ + "\u0093\u009a\u009d\u00a0\u00a6\u00a9\u00b0\u00b2\u00bf\u00ca\u00cd\u00d1"+ + "\u00d6\u00dd\u00e3\u00e7\u00f2\u00f7\3\b\2\2"; public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); } } -} +} \ No newline at end of file diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.tokens b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.tokens index a8b4250d32d..8e5f5a3651b 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.tokens +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Lexer.tokens @@ -13,9 +13,11 @@ NUMERIC_LITERAL=12 SYMBOL=13 IDENTIFIER=14 WS=15 +UTF_8_BOM=16 '{'=1 ','=2 '}'=3 ':'=4 '['=5 ']'=6 +'\uFEFF'=16 diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Listener.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Listener.java index 9d36d49d171..15d09843d33 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Listener.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Listener.java @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 import org.antlr.v4.runtime.tree.ParseTreeListener; /** diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Parser.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Parser.java index 00c3dec2830..9b15efdcbe9 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Parser.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Parser.java @@ -13,20 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; - -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.ATN; -import org.antlr.v4.runtime.atn.ATNDeserializer; -import org.antlr.v4.runtime.atn.ParserATNSimulator; -import org.antlr.v4.runtime.atn.PredictionContextCache; +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 +import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.tree.ParseTreeListener; -import org.antlr.v4.runtime.tree.ParseTreeVisitor; -import org.antlr.v4.runtime.tree.TerminalNode; - +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) public class JSON5Parser extends Parser { @@ -34,32 +30,33 @@ public class JSON5Parser extends Parser { protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); + new PredictionContextCache(); public static final int - T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, SINGLE_LINE_COMMENT=7, - MULTI_LINE_COMMENT=8, LITERAL=9, STRING=10, NUMBER=11, NUMERIC_LITERAL=12, - SYMBOL=13, IDENTIFIER=14, WS=15; + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, SINGLE_LINE_COMMENT=7, + MULTI_LINE_COMMENT=8, LITERAL=9, STRING=10, NUMBER=11, NUMERIC_LITERAL=12, + SYMBOL=13, IDENTIFIER=14, WS=15, UTF_8_BOM=16; public static final int - RULE_json5 = 0, RULE_obj = 1, RULE_member = 2, RULE_key = 3, RULE_value = 4, - RULE_arr = 5, RULE_number = 6; + RULE_json5 = 0, RULE_obj = 1, RULE_member = 2, RULE_key = 3, RULE_value = 4, + RULE_arr = 5, RULE_number = 6; private static String[] makeRuleNames() { return new String[] { - "json5", "obj", "member", "key", "value", "arr", "number" + "json5", "obj", "member", "key", "value", "arr", "number" }; } public static final String[] ruleNames = makeRuleNames(); private static String[] makeLiteralNames() { return new String[] { - null, "'{'", "','", "'}'", "':'", "'['", "']'" + null, "'{'", "','", "'}'", "':'", "'['", "']'", null, null, null, null, + null, null, null, null, null, "'\uFEFF'" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); private static String[] makeSymbolicNames() { return new String[] { - null, null, null, null, null, null, null, "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", - "LITERAL", "STRING", "NUMBER", "NUMERIC_LITERAL", "SYMBOL", "IDENTIFIER", - "WS" + null, null, null, null, null, null, null, "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", + "LITERAL", "STRING", "NUMBER", "NUMERIC_LITERAL", "SYMBOL", "IDENTIFIER", + "WS", "UTF_8_BOM" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -144,18 +141,18 @@ public final Json5Context json5() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(15); - _errHandler.sync(this); - _la = _input.LA(1); - if (((_la & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__4) | (1L << LITERAL) | (1L << STRING) | (1L << NUMBER) | (1L << NUMERIC_LITERAL) | (1L << SYMBOL))) != 0)) { - { - setState(14); - value(); + setState(15); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__4) | (1L << LITERAL) | (1L << STRING) | (1L << NUMBER) | (1L << NUMERIC_LITERAL) | (1L << SYMBOL))) != 0)) { + { + setState(14); + value(); + } } - } - setState(17); - match(EOF); + setState(17); + match(EOF); } } catch (RecognitionException re) { @@ -204,52 +201,52 @@ public final ObjContext obj() throws RecognitionException { setState(35); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); + case 1: + enterOuterAlt(_localctx, 1); { - setState(19); - match(T__0); - setState(20); - member(); - setState(25); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,1,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(21); - match(T__1); - setState(22); - member(); + setState(19); + match(T__0); + setState(20); + member(); + setState(25); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,1,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(21); + match(T__1); + setState(22); + member(); + } + } } - } + setState(27); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,1,_ctx); } - setState(27); + setState(29); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,1,_ctx); - } - setState(29); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1) { - { - setState(28); - match(T__1); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(28); + match(T__1); + } } - } - setState(31); - match(T__2); + setState(31); + match(T__2); } break; - case 2: - enterOuterAlt(_localctx, 2); + case 2: + enterOuterAlt(_localctx, 2); { - setState(33); - match(T__0); - setState(34); - match(T__2); + setState(33); + match(T__0); + setState(34); + match(T__2); } break; } @@ -297,12 +294,12 @@ public final MemberContext member() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(37); - key(); - setState(38); - match(T__3); - setState(39); - value(); + setState(37); + key(); + setState(38); + match(T__3); + setState(39); + value(); } } catch (RecognitionException re) { @@ -345,16 +342,16 @@ public final KeyContext key() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(41); - _la = _input.LA(1); - if ( !(_la==STRING || _la==IDENTIFIER) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } + setState(41); + _la = _input.LA(1); + if ( !(_la==STRING || _la==IDENTIFIER) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } } } catch (RecognitionException re) { @@ -406,45 +403,45 @@ public final ValueContext value() throws RecognitionException { setState(48); _errHandler.sync(this); switch (_input.LA(1)) { - case STRING: - enterOuterAlt(_localctx, 1); + case STRING: + enterOuterAlt(_localctx, 1); { - setState(43); - match(STRING); + setState(43); + match(STRING); } break; - case NUMBER: - case NUMERIC_LITERAL: - case SYMBOL: - enterOuterAlt(_localctx, 2); + case NUMBER: + case NUMERIC_LITERAL: + case SYMBOL: + enterOuterAlt(_localctx, 2); { - setState(44); - number(); + setState(44); + number(); } break; - case T__0: - enterOuterAlt(_localctx, 3); + case T__0: + enterOuterAlt(_localctx, 3); { - setState(45); - obj(); + setState(45); + obj(); } break; - case T__4: - enterOuterAlt(_localctx, 4); + case T__4: + enterOuterAlt(_localctx, 4); { - setState(46); - arr(); + setState(46); + arr(); } break; - case LITERAL: - enterOuterAlt(_localctx, 5); + case LITERAL: + enterOuterAlt(_localctx, 5); { - setState(47); - match(LITERAL); + setState(47); + match(LITERAL); } break; - default: - throw new NoViableAltException(this); + default: + throw new NoViableAltException(this); } } catch (RecognitionException re) { @@ -493,52 +490,52 @@ public final ArrContext arr() throws RecognitionException { setState(66); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); + case 1: + enterOuterAlt(_localctx, 1); { - setState(50); - match(T__4); - setState(51); - value(); - setState(56); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,5,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(52); - match(T__1); - setState(53); - value(); + setState(50); + match(T__4); + setState(51); + value(); + setState(56); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,5,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(52); + match(T__1); + setState(53); + value(); + } + } } - } + setState(58); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,5,_ctx); } - setState(58); + setState(60); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,5,_ctx); - } - setState(60); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1) { - { - setState(59); - match(T__1); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(59); + match(T__1); + } } - } - setState(62); - match(T__5); + setState(62); + match(T__5); } break; - case 2: - enterOuterAlt(_localctx, 2); + case 2: + enterOuterAlt(_localctx, 2); { - setState(64); - match(T__4); - setState(65); - match(T__5); + setState(64); + match(T__4); + setState(65); + match(T__5); } break; } @@ -584,26 +581,26 @@ public final NumberContext number() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(69); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SYMBOL) { - { - setState(68); - match(SYMBOL); + setState(69); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SYMBOL) { + { + setState(68); + match(SYMBOL); + } } - } - setState(71); - _la = _input.LA(1); - if ( !(_la==NUMBER || _la==NUMERIC_LITERAL) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } + setState(71); + _la = _input.LA(1); + if ( !(_la==NUMBER || _la==NUMERIC_LITERAL) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } } } catch (RecognitionException re) { @@ -618,32 +615,32 @@ public final NumberContext number() throws RecognitionException { } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\21L\4\2\t\2\4\3\t"+ - "\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\3\2\5\2\22\n\2\3\2\3\2\3\3"+ - "\3\3\3\3\3\3\7\3\32\n\3\f\3\16\3\35\13\3\3\3\5\3 \n\3\3\3\3\3\3\3\3\3"+ - "\5\3&\n\3\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\5\6\63\n\6\3\7\3"+ - "\7\3\7\3\7\7\79\n\7\f\7\16\7<\13\7\3\7\5\7?\n\7\3\7\3\7\3\7\3\7\5\7E\n"+ - "\7\3\b\5\bH\n\b\3\b\3\b\3\b\2\2\t\2\4\6\b\n\f\16\2\4\4\2\f\f\20\20\3\2"+ - "\r\16\2P\2\21\3\2\2\2\4%\3\2\2\2\6\'\3\2\2\2\b+\3\2\2\2\n\62\3\2\2\2\f"+ - "D\3\2\2\2\16G\3\2\2\2\20\22\5\n\6\2\21\20\3\2\2\2\21\22\3\2\2\2\22\23"+ - "\3\2\2\2\23\24\7\2\2\3\24\3\3\2\2\2\25\26\7\3\2\2\26\33\5\6\4\2\27\30"+ - "\7\4\2\2\30\32\5\6\4\2\31\27\3\2\2\2\32\35\3\2\2\2\33\31\3\2\2\2\33\34"+ - "\3\2\2\2\34\37\3\2\2\2\35\33\3\2\2\2\36 \7\4\2\2\37\36\3\2\2\2\37 \3\2"+ - "\2\2 !\3\2\2\2!\"\7\5\2\2\"&\3\2\2\2#$\7\3\2\2$&\7\5\2\2%\25\3\2\2\2%"+ - "#\3\2\2\2&\5\3\2\2\2\'(\5\b\5\2()\7\6\2\2)*\5\n\6\2*\7\3\2\2\2+,\t\2\2"+ - "\2,\t\3\2\2\2-\63\7\f\2\2.\63\5\16\b\2/\63\5\4\3\2\60\63\5\f\7\2\61\63"+ - "\7\13\2\2\62-\3\2\2\2\62.\3\2\2\2\62/\3\2\2\2\62\60\3\2\2\2\62\61\3\2"+ - "\2\2\63\13\3\2\2\2\64\65\7\7\2\2\65:\5\n\6\2\66\67\7\4\2\2\679\5\n\6\2"+ - "8\66\3\2\2\29<\3\2\2\2:8\3\2\2\2:;\3\2\2\2;>\3\2\2\2<:\3\2\2\2=?\7\4\2"+ - "\2>=\3\2\2\2>?\3\2\2\2?@\3\2\2\2@A\7\b\2\2AE\3\2\2\2BC\7\7\2\2CE\7\b\2"+ - "\2D\64\3\2\2\2DB\3\2\2\2E\r\3\2\2\2FH\7\17\2\2GF\3\2\2\2GH\3\2\2\2HI\3"+ - "\2\2\2IJ\t\3\2\2J\17\3\2\2\2\13\21\33\37%\62:>DG"; + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\22L\4\2\t\2\4\3\t"+ + "\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\3\2\5\2\22\n\2\3\2\3\2\3\3"+ + "\3\3\3\3\3\3\7\3\32\n\3\f\3\16\3\35\13\3\3\3\5\3 \n\3\3\3\3\3\3\3\3\3"+ + "\5\3&\n\3\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\5\6\63\n\6\3\7\3"+ + "\7\3\7\3\7\7\79\n\7\f\7\16\7<\13\7\3\7\5\7?\n\7\3\7\3\7\3\7\3\7\5\7E\n"+ + "\7\3\b\5\bH\n\b\3\b\3\b\3\b\2\2\t\2\4\6\b\n\f\16\2\4\4\2\f\f\20\20\3\2"+ + "\r\16\2P\2\21\3\2\2\2\4%\3\2\2\2\6\'\3\2\2\2\b+\3\2\2\2\n\62\3\2\2\2\f"+ + "D\3\2\2\2\16G\3\2\2\2\20\22\5\n\6\2\21\20\3\2\2\2\21\22\3\2\2\2\22\23"+ + "\3\2\2\2\23\24\7\2\2\3\24\3\3\2\2\2\25\26\7\3\2\2\26\33\5\6\4\2\27\30"+ + "\7\4\2\2\30\32\5\6\4\2\31\27\3\2\2\2\32\35\3\2\2\2\33\31\3\2\2\2\33\34"+ + "\3\2\2\2\34\37\3\2\2\2\35\33\3\2\2\2\36 \7\4\2\2\37\36\3\2\2\2\37 \3\2"+ + "\2\2 !\3\2\2\2!\"\7\5\2\2\"&\3\2\2\2#$\7\3\2\2$&\7\5\2\2%\25\3\2\2\2%"+ + "#\3\2\2\2&\5\3\2\2\2\'(\5\b\5\2()\7\6\2\2)*\5\n\6\2*\7\3\2\2\2+,\t\2\2"+ + "\2,\t\3\2\2\2-\63\7\f\2\2.\63\5\16\b\2/\63\5\4\3\2\60\63\5\f\7\2\61\63"+ + "\7\13\2\2\62-\3\2\2\2\62.\3\2\2\2\62/\3\2\2\2\62\60\3\2\2\2\62\61\3\2"+ + "\2\2\63\13\3\2\2\2\64\65\7\7\2\2\65:\5\n\6\2\66\67\7\4\2\2\679\5\n\6\2"+ + "8\66\3\2\2\29<\3\2\2\2:8\3\2\2\2:;\3\2\2\2;>\3\2\2\2<:\3\2\2\2=?\7\4\2"+ + "\2>=\3\2\2\2>?\3\2\2\2?@\3\2\2\2@A\7\b\2\2AE\3\2\2\2BC\7\7\2\2CE\7\b\2"+ + "\2D\64\3\2\2\2DB\3\2\2\2E\r\3\2\2\2FH\7\17\2\2GF\3\2\2\2GH\3\2\2\2HI\3"+ + "\2\2\2IJ\t\3\2\2J\17\3\2\2\2\13\21\33\37%\62:>DG"; public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); } } -} +} \ No newline at end of file diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Visitor.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Visitor.java index 23fda9fafa3..8414aa8cfcd 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Visitor.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JSON5Visitor.java @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JSON5.g4 by ANTLR 4.9.2 import org.antlr.v4.runtime.tree.ParseTreeVisitor; /** diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.interp b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.interp index 7ef10040cfa..b30d542cc18 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.interp +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.interp @@ -25,6 +25,7 @@ null '?' null null +'\uFEFF' token symbolic names: null @@ -53,6 +54,7 @@ RPAREN QUESTION Identifier WS +UTF_8_BOM rule names: jsonpath @@ -65,4 +67,4 @@ litExpression atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 27, 102, 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, 3, 2, 5, 2, 18, 10, 2, 3, 2, 6, 2, 21, 10, 2, 13, 2, 14, 2, 22, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 37, 10, 3, 12, 3, 14, 3, 40, 11, 3, 3, 3, 3, 3, 3, 3, 5, 3, 45, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 51, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 58, 10, 4, 3, 4, 5, 4, 61, 10, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 6, 7, 83, 10, 7, 13, 7, 14, 7, 84, 5, 7, 87, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 95, 10, 7, 12, 7, 14, 7, 98, 11, 7, 3, 8, 3, 8, 3, 8, 2, 3, 12, 9, 2, 4, 6, 8, 10, 12, 14, 2, 4, 3, 2, 11, 13, 4, 2, 3, 4, 14, 16, 2, 113, 2, 17, 3, 2, 2, 2, 4, 44, 3, 2, 2, 2, 6, 60, 3, 2, 2, 2, 8, 62, 3, 2, 2, 2, 10, 64, 3, 2, 2, 2, 12, 86, 3, 2, 2, 2, 14, 99, 3, 2, 2, 2, 16, 18, 7, 8, 2, 2, 17, 16, 3, 2, 2, 2, 17, 18, 3, 2, 2, 2, 18, 20, 3, 2, 2, 2, 19, 21, 5, 4, 3, 2, 20, 19, 3, 2, 2, 2, 21, 22, 3, 2, 2, 2, 22, 20, 3, 2, 2, 2, 22, 23, 3, 2, 2, 2, 23, 3, 3, 2, 2, 2, 24, 25, 7, 19, 2, 2, 25, 26, 5, 12, 7, 2, 26, 27, 7, 20, 2, 2, 27, 45, 3, 2, 2, 2, 28, 29, 7, 7, 2, 2, 29, 45, 5, 12, 7, 2, 30, 31, 7, 6, 2, 2, 31, 45, 5, 12, 7, 2, 32, 33, 7, 19, 2, 2, 33, 38, 5, 12, 7, 2, 34, 35, 7, 22, 2, 2, 35, 37, 5, 12, 7, 2, 36, 34, 3, 2, 2, 2, 37, 40, 3, 2, 2, 2, 38, 36, 3, 2, 2, 2, 38, 39, 3, 2, 2, 2, 39, 41, 3, 2, 2, 2, 40, 38, 3, 2, 2, 2, 41, 42, 7, 20, 2, 2, 42, 45, 3, 2, 2, 2, 43, 45, 5, 6, 4, 2, 44, 24, 3, 2, 2, 2, 44, 28, 3, 2, 2, 2, 44, 30, 3, 2, 2, 2, 44, 32, 3, 2, 2, 2, 44, 43, 3, 2, 2, 2, 45, 5, 3, 2, 2, 2, 46, 47, 7, 19, 2, 2, 47, 48, 5, 8, 5, 2, 48, 50, 7, 21, 2, 2, 49, 51, 5, 10, 6, 2, 50, 49, 3, 2, 2, 2, 50, 51, 3, 2, 2, 2, 51, 52, 3, 2, 2, 2, 52, 53, 7, 20, 2, 2, 53, 61, 3, 2, 2, 2, 54, 55, 7, 19, 2, 2, 55, 57, 7, 21, 2, 2, 56, 58, 5, 10, 6, 2, 57, 56, 3, 2, 2, 2, 57, 58, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 61, 7, 20, 2, 2, 60, 46, 3, 2, 2, 2, 60, 54, 3, 2, 2, 2, 61, 7, 3, 2, 2, 2, 62, 63, 7, 4, 2, 2, 63, 9, 3, 2, 2, 2, 64, 65, 7, 4, 2, 2, 65, 11, 3, 2, 2, 2, 66, 67, 8, 7, 1, 2, 67, 68, 7, 25, 2, 2, 68, 69, 7, 23, 2, 2, 69, 70, 5, 12, 7, 2, 70, 71, 7, 24, 2, 2, 71, 87, 3, 2, 2, 2, 72, 73, 7, 23, 2, 2, 73, 74, 5, 12, 7, 2, 74, 75, 7, 24, 2, 2, 75, 87, 3, 2, 2, 2, 76, 87, 5, 14, 8, 2, 77, 87, 7, 26, 2, 2, 78, 87, 5, 2, 2, 2, 79, 87, 7, 9, 2, 2, 80, 82, 7, 5, 2, 2, 81, 83, 5, 4, 3, 2, 82, 81, 3, 2, 2, 2, 83, 84, 3, 2, 2, 2, 84, 82, 3, 2, 2, 2, 84, 85, 3, 2, 2, 2, 85, 87, 3, 2, 2, 2, 86, 66, 3, 2, 2, 2, 86, 72, 3, 2, 2, 2, 86, 76, 3, 2, 2, 2, 86, 77, 3, 2, 2, 2, 86, 78, 3, 2, 2, 2, 86, 79, 3, 2, 2, 2, 86, 80, 3, 2, 2, 2, 87, 96, 3, 2, 2, 2, 88, 89, 12, 11, 2, 2, 89, 90, 7, 10, 2, 2, 90, 95, 5, 12, 7, 12, 91, 92, 12, 8, 2, 2, 92, 93, 9, 2, 2, 2, 93, 95, 5, 12, 7, 9, 94, 88, 3, 2, 2, 2, 94, 91, 3, 2, 2, 2, 95, 98, 3, 2, 2, 2, 96, 94, 3, 2, 2, 2, 96, 97, 3, 2, 2, 2, 97, 13, 3, 2, 2, 2, 98, 96, 3, 2, 2, 2, 99, 100, 9, 3, 2, 2, 100, 15, 3, 2, 2, 2, 13, 17, 22, 38, 44, 50, 57, 60, 84, 86, 94, 96] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 28, 102, 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, 3, 2, 5, 2, 18, 10, 2, 3, 2, 6, 2, 21, 10, 2, 13, 2, 14, 2, 22, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 37, 10, 3, 12, 3, 14, 3, 40, 11, 3, 3, 3, 3, 3, 3, 3, 5, 3, 45, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 51, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 58, 10, 4, 3, 4, 5, 4, 61, 10, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 6, 7, 83, 10, 7, 13, 7, 14, 7, 84, 5, 7, 87, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 95, 10, 7, 12, 7, 14, 7, 98, 11, 7, 3, 8, 3, 8, 3, 8, 2, 3, 12, 9, 2, 4, 6, 8, 10, 12, 14, 2, 4, 3, 2, 11, 13, 4, 2, 3, 4, 14, 16, 2, 113, 2, 17, 3, 2, 2, 2, 4, 44, 3, 2, 2, 2, 6, 60, 3, 2, 2, 2, 8, 62, 3, 2, 2, 2, 10, 64, 3, 2, 2, 2, 12, 86, 3, 2, 2, 2, 14, 99, 3, 2, 2, 2, 16, 18, 7, 8, 2, 2, 17, 16, 3, 2, 2, 2, 17, 18, 3, 2, 2, 2, 18, 20, 3, 2, 2, 2, 19, 21, 5, 4, 3, 2, 20, 19, 3, 2, 2, 2, 21, 22, 3, 2, 2, 2, 22, 20, 3, 2, 2, 2, 22, 23, 3, 2, 2, 2, 23, 3, 3, 2, 2, 2, 24, 25, 7, 19, 2, 2, 25, 26, 5, 12, 7, 2, 26, 27, 7, 20, 2, 2, 27, 45, 3, 2, 2, 2, 28, 29, 7, 7, 2, 2, 29, 45, 5, 12, 7, 2, 30, 31, 7, 6, 2, 2, 31, 45, 5, 12, 7, 2, 32, 33, 7, 19, 2, 2, 33, 38, 5, 12, 7, 2, 34, 35, 7, 22, 2, 2, 35, 37, 5, 12, 7, 2, 36, 34, 3, 2, 2, 2, 37, 40, 3, 2, 2, 2, 38, 36, 3, 2, 2, 2, 38, 39, 3, 2, 2, 2, 39, 41, 3, 2, 2, 2, 40, 38, 3, 2, 2, 2, 41, 42, 7, 20, 2, 2, 42, 45, 3, 2, 2, 2, 43, 45, 5, 6, 4, 2, 44, 24, 3, 2, 2, 2, 44, 28, 3, 2, 2, 2, 44, 30, 3, 2, 2, 2, 44, 32, 3, 2, 2, 2, 44, 43, 3, 2, 2, 2, 45, 5, 3, 2, 2, 2, 46, 47, 7, 19, 2, 2, 47, 48, 5, 8, 5, 2, 48, 50, 7, 21, 2, 2, 49, 51, 5, 10, 6, 2, 50, 49, 3, 2, 2, 2, 50, 51, 3, 2, 2, 2, 51, 52, 3, 2, 2, 2, 52, 53, 7, 20, 2, 2, 53, 61, 3, 2, 2, 2, 54, 55, 7, 19, 2, 2, 55, 57, 7, 21, 2, 2, 56, 58, 5, 10, 6, 2, 57, 56, 3, 2, 2, 2, 57, 58, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 61, 7, 20, 2, 2, 60, 46, 3, 2, 2, 2, 60, 54, 3, 2, 2, 2, 61, 7, 3, 2, 2, 2, 62, 63, 7, 4, 2, 2, 63, 9, 3, 2, 2, 2, 64, 65, 7, 4, 2, 2, 65, 11, 3, 2, 2, 2, 66, 67, 8, 7, 1, 2, 67, 68, 7, 25, 2, 2, 68, 69, 7, 23, 2, 2, 69, 70, 5, 12, 7, 2, 70, 71, 7, 24, 2, 2, 71, 87, 3, 2, 2, 2, 72, 73, 7, 23, 2, 2, 73, 74, 5, 12, 7, 2, 74, 75, 7, 24, 2, 2, 75, 87, 3, 2, 2, 2, 76, 87, 5, 14, 8, 2, 77, 87, 7, 26, 2, 2, 78, 87, 5, 2, 2, 2, 79, 87, 7, 9, 2, 2, 80, 82, 7, 5, 2, 2, 81, 83, 5, 4, 3, 2, 82, 81, 3, 2, 2, 2, 83, 84, 3, 2, 2, 2, 84, 82, 3, 2, 2, 2, 84, 85, 3, 2, 2, 2, 85, 87, 3, 2, 2, 2, 86, 66, 3, 2, 2, 2, 86, 72, 3, 2, 2, 2, 86, 76, 3, 2, 2, 2, 86, 77, 3, 2, 2, 2, 86, 78, 3, 2, 2, 2, 86, 79, 3, 2, 2, 2, 86, 80, 3, 2, 2, 2, 87, 96, 3, 2, 2, 2, 88, 89, 12, 11, 2, 2, 89, 90, 7, 10, 2, 2, 90, 95, 5, 12, 7, 12, 91, 92, 12, 8, 2, 2, 92, 93, 9, 2, 2, 2, 93, 95, 5, 12, 7, 9, 94, 88, 3, 2, 2, 2, 94, 91, 3, 2, 2, 2, 95, 98, 3, 2, 2, 2, 96, 94, 3, 2, 2, 2, 96, 97, 3, 2, 2, 2, 97, 13, 3, 2, 2, 2, 98, 96, 3, 2, 2, 2, 99, 100, 9, 3, 2, 2, 100, 15, 3, 2, 2, 2, 13, 17, 22, 38, 44, 50, 57, 60, 84, 86, 94, 96] \ No newline at end of file diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.java index 8be936c1ce3..4ece6350594 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPath.java @@ -13,20 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JsonPath.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; - -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.ATN; -import org.antlr.v4.runtime.atn.ATNDeserializer; -import org.antlr.v4.runtime.atn.ParserATNSimulator; -import org.antlr.v4.runtime.atn.PredictionContextCache; +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JsonPath.g4 by ANTLR 4.9.2 +import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.tree.ParseTreeListener; -import org.antlr.v4.runtime.tree.ParseTreeVisitor; -import org.antlr.v4.runtime.tree.TerminalNode; - +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) public class JsonPath extends Parser { @@ -34,36 +30,36 @@ public class JsonPath extends Parser { protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); + new PredictionContextCache(); public static final int - StringLiteral=1, NumericLiteral=2, AT=3, DOT_DOT=4, DOT=5, ROOT=6, WILDCARD=7, - AND=8, EQ=9, NE=10, MATCHES=11, TRUE=12, FALSE=13, NULL=14, LBRACE=15, - RBRACE=16, LBRACK=17, RBRACK=18, COLON=19, COMMA=20, LPAREN=21, RPAREN=22, - QUESTION=23, Identifier=24, WS=25; + StringLiteral=1, NumericLiteral=2, AT=3, DOT_DOT=4, DOT=5, ROOT=6, WILDCARD=7, + AND=8, EQ=9, NE=10, MATCHES=11, TRUE=12, FALSE=13, NULL=14, LBRACE=15, + RBRACE=16, LBRACK=17, RBRACK=18, COLON=19, COMMA=20, LPAREN=21, RPAREN=22, + QUESTION=23, Identifier=24, WS=25, UTF_8_BOM=26; public static final int - RULE_jsonpath = 0, RULE_object = 1, RULE_rangeOp = 2, RULE_start = 3, - RULE_end = 4, RULE_expression = 5, RULE_litExpression = 6; + RULE_jsonpath = 0, RULE_object = 1, RULE_rangeOp = 2, RULE_start = 3, + RULE_end = 4, RULE_expression = 5, RULE_litExpression = 6; private static String[] makeRuleNames() { return new String[] { - "jsonpath", "object", "rangeOp", "start", "end", "expression", "litExpression" + "jsonpath", "object", "rangeOp", "start", "end", "expression", "litExpression" }; } public static final String[] ruleNames = makeRuleNames(); private static String[] makeLiteralNames() { return new String[] { - null, null, null, "'@'", "'..'", "'.'", "'$'", "'*'", "'&&'", "'=='", - "'!='", "'=~'", "'true'", "'false'", "'null'", "'{'", "'}'", "'['", "']'", - "':'", "','", "'('", "')'", "'?'" + null, null, null, "'@'", "'..'", "'.'", "'$'", "'*'", "'&&'", "'=='", + "'!='", "'=~'", "'true'", "'false'", "'null'", "'{'", "'}'", "'['", "']'", + "':'", "','", "'('", "')'", "'?'", null, null, "'\uFEFF'" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); private static String[] makeSymbolicNames() { return new String[] { - null, "StringLiteral", "NumericLiteral", "AT", "DOT_DOT", "DOT", "ROOT", - "WILDCARD", "AND", "EQ", "NE", "MATCHES", "TRUE", "FALSE", "NULL", "LBRACE", - "RBRACE", "LBRACK", "RBRACK", "COLON", "COMMA", "LPAREN", "RPAREN", "QUESTION", - "Identifier", "WS" + null, "StringLiteral", "NumericLiteral", "AT", "DOT_DOT", "DOT", "ROOT", + "WILDCARD", "AND", "EQ", "NE", "MATCHES", "TRUE", "FALSE", "NULL", "LBRACE", + "RBRACE", "LBRACK", "RBRACK", "COLON", "COMMA", "LPAREN", "RPAREN", "QUESTION", + "Identifier", "WS", "UTF_8_BOM" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -152,36 +148,36 @@ public final JsonpathContext jsonpath() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(15); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ROOT) { - { - setState(14); - match(ROOT); - } - } - - setState(18); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { + setState(15); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ROOT) { { - setState(17); - object(); + setState(14); + match(ROOT); } - } - break; - default: - throw new NoViableAltException(this); } - setState(20); + + setState(18); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,1,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(17); + object(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(20); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,1,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); } } catch (RecognitionException re) { @@ -200,7 +196,7 @@ public ObjectContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_object; } - + public ObjectContext() { } public void copyFrom(ObjectContext ctx) { super.copyFrom(ctx); @@ -323,72 +319,72 @@ public final ObjectContext object() throws RecognitionException { setState(42); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { - case 1: - _localctx = new BracketOperatorContext(_localctx); - enterOuterAlt(_localctx, 1); + case 1: + _localctx = new BracketOperatorContext(_localctx); + enterOuterAlt(_localctx, 1); { - setState(22); - match(LBRACK); - setState(23); - expression(0); - setState(24); - match(RBRACK); + setState(22); + match(LBRACK); + setState(23); + expression(0); + setState(24); + match(RBRACK); } break; - case 2: - _localctx = new DotOperatorContext(_localctx); - enterOuterAlt(_localctx, 2); + case 2: + _localctx = new DotOperatorContext(_localctx); + enterOuterAlt(_localctx, 2); { - setState(26); - match(DOT); - setState(27); - expression(0); + setState(26); + match(DOT); + setState(27); + expression(0); } break; - case 3: - _localctx = new RecursiveDescentContext(_localctx); - enterOuterAlt(_localctx, 3); + case 3: + _localctx = new RecursiveDescentContext(_localctx); + enterOuterAlt(_localctx, 3); { - setState(28); - match(DOT_DOT); - setState(29); - expression(0); + setState(28); + match(DOT_DOT); + setState(29); + expression(0); } break; - case 4: - _localctx = new UnionOperatorContext(_localctx); - enterOuterAlt(_localctx, 4); + case 4: + _localctx = new UnionOperatorContext(_localctx); + enterOuterAlt(_localctx, 4); { - setState(30); - match(LBRACK); - setState(31); - expression(0); - setState(36); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(32); - match(COMMA); - setState(33); + setState(30); + match(LBRACK); + setState(31); expression(0); - } - } - setState(38); + setState(36); _errHandler.sync(this); _la = _input.LA(1); - } - setState(39); - match(RBRACK); + while (_la==COMMA) { + { + { + setState(32); + match(COMMA); + setState(33); + expression(0); + } + } + setState(38); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(39); + match(RBRACK); } break; - case 5: - _localctx = new RangeOperatorContext(_localctx); - enterOuterAlt(_localctx, 5); + case 5: + _localctx = new RangeOperatorContext(_localctx); + enterOuterAlt(_localctx, 5); { - setState(41); - rangeOp(); + setState(41); + rangeOp(); } break; } @@ -441,48 +437,48 @@ public final RangeOpContext rangeOp() throws RecognitionException { setState(58); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); + case 1: + enterOuterAlt(_localctx, 1); { - setState(44); - match(LBRACK); - setState(45); - start(); - setState(46); - match(COLON); - setState(48); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NumericLiteral) { - { - setState(47); - end(); + setState(44); + match(LBRACK); + setState(45); + start(); + setState(46); + match(COLON); + setState(48); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NumericLiteral) { + { + setState(47); + end(); + } } - } - setState(50); - match(RBRACK); + setState(50); + match(RBRACK); } break; - case 2: - enterOuterAlt(_localctx, 2); + case 2: + enterOuterAlt(_localctx, 2); { - setState(52); - match(LBRACK); - setState(53); - match(COLON); - setState(55); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NumericLiteral) { - { - setState(54); - end(); + setState(52); + match(LBRACK); + setState(53); + match(COLON); + setState(55); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NumericLiteral) { + { + setState(54); + end(); + } } - } - setState(57); - match(RBRACK); + setState(57); + match(RBRACK); } break; } @@ -525,8 +521,8 @@ public final StartContext start() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(60); - match(NumericLiteral); + setState(60); + match(NumericLiteral); } } catch (RecognitionException re) { @@ -567,8 +563,8 @@ public final EndContext end() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(62); - match(NumericLiteral); + setState(62); + match(NumericLiteral); } } catch (RecognitionException re) { @@ -587,7 +583,7 @@ public ExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_expression; } - + public ExpressionContext() { } public void copyFrom(ExpressionContext ctx) { super.copyFrom(ctx); @@ -796,164 +792,164 @@ private ExpressionContext expression(int _p) throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(84); - _errHandler.sync(this); - switch (_input.LA(1)) { - case QUESTION: - { - _localctx = new FilterExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(65); - match(QUESTION); - setState(66); - match(LPAREN); - setState(67); - expression(0); - setState(68); - match(RPAREN); - } - break; - case LPAREN: - { - _localctx = new ParentheticalExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(70); - match(LPAREN); - setState(71); - expression(0); - setState(72); - match(RPAREN); - } - break; - case StringLiteral: - case NumericLiteral: - case TRUE: - case FALSE: - case NULL: - { - _localctx = new LiteralExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(74); - litExpression(); - } - break; - case Identifier: - { - _localctx = new IdentifierContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(75); - match(Identifier); - } - break; - case DOT_DOT: - case DOT: - case ROOT: - case LBRACK: - { - _localctx = new PathExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(76); - jsonpath(); - } - break; - case WILDCARD: - { - _localctx = new WildcardExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(77); - match(WILDCARD); - } - break; - case AT: - { - _localctx = new ScopedPathExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(78); - match(AT); - setState(80); + setState(84); _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(79); - object(); - } - } - break; + switch (_input.LA(1)) { + case QUESTION: + { + _localctx = new FilterExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(65); + match(QUESTION); + setState(66); + match(LPAREN); + setState(67); + expression(0); + setState(68); + match(RPAREN); + } + break; + case LPAREN: + { + _localctx = new ParentheticalExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(70); + match(LPAREN); + setState(71); + expression(0); + setState(72); + match(RPAREN); + } + break; + case StringLiteral: + case NumericLiteral: + case TRUE: + case FALSE: + case NULL: + { + _localctx = new LiteralExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(74); + litExpression(); + } + break; + case Identifier: + { + _localctx = new IdentifierContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(75); + match(Identifier); + } + break; + case DOT_DOT: + case DOT: + case ROOT: + case LBRACK: + { + _localctx = new PathExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(76); + jsonpath(); + } + break; + case WILDCARD: + { + _localctx = new WildcardExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(77); + match(WILDCARD); + } + break; + case AT: + { + _localctx = new ScopedPathExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(78); + match(AT); + setState(80); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(79); + object(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(82); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,7,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; default: throw new NoViableAltException(this); - } - setState(82); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,7,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); } - break; - default: - throw new NoViableAltException(this); - } - _ctx.stop = _input.LT(-1); - setState(94); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,10,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(92); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { - case 1: - { - _localctx = new AndExpressionContext(new ExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(86); - if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(87); - match(AND); - setState(88); - expression(10); - } - break; - case 2: + _ctx.stop = _input.LT(-1); + setState(94); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,10,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; { - _localctx = new BinaryExpressionContext(new ExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(89); - if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(90); - _la = _input.LA(1); - if ( !((_la & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ) | (1L << NE) | (1L << MATCHES))) != 0) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(91); - expression(7); + setState(92); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { + case 1: + { + _localctx = new AndExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(86); + if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); + setState(87); + match(AND); + setState(88); + expression(10); + } + break; + case 2: + { + _localctx = new BinaryExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(89); + if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); + setState(90); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ) | (1L << NE) | (1L << MATCHES))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(91); + expression(7); + } + break; + } } - break; } - } + setState(96); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,10,_ctx); } - setState(96); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,10,_ctx); - } } } catch (RecognitionException re) { @@ -999,16 +995,16 @@ public final LitExpressionContext litExpression() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(97); - _la = _input.LA(1); - if ( !((_la & ~0x3f) == 0 && ((1L << _la) & ((1L << StringLiteral) | (1L << NumericLiteral) | (1L << TRUE) | (1L << FALSE) | (1L << NULL))) != 0) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } + setState(97); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << StringLiteral) | (1L << NumericLiteral) | (1L << TRUE) | (1L << FALSE) | (1L << NULL))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } } } catch (RecognitionException re) { @@ -1024,55 +1020,55 @@ public final LitExpressionContext litExpression() throws RecognitionException { public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { - case 5: - return expression_sempred((ExpressionContext)_localctx, predIndex); + case 5: + return expression_sempred((ExpressionContext)_localctx, predIndex); } return true; } private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { switch (predIndex) { - case 0: - return precpred(_ctx, 9); - case 1: - return precpred(_ctx, 6); + case 0: + return precpred(_ctx, 9); + case 1: + return precpred(_ctx, 6); } return true; } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\33f\4\2\t\2\4\3\t"+ - "\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\3\2\5\2\22\n\2\3\2\6\2\25\n"+ - "\2\r\2\16\2\26\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\7\3%\n"+ - "\3\f\3\16\3(\13\3\3\3\3\3\3\3\5\3-\n\3\3\4\3\4\3\4\3\4\5\4\63\n\4\3\4"+ - "\3\4\3\4\3\4\3\4\5\4:\n\4\3\4\5\4=\n\4\3\5\3\5\3\6\3\6\3\7\3\7\3\7\3\7"+ - "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\6\7S\n\7\r\7\16\7T\5"+ - "\7W\n\7\3\7\3\7\3\7\3\7\3\7\3\7\7\7_\n\7\f\7\16\7b\13\7\3\b\3\b\3\b\2"+ - "\3\f\t\2\4\6\b\n\f\16\2\4\3\2\13\r\4\2\3\4\16\20\2q\2\21\3\2\2\2\4,\3"+ - "\2\2\2\6<\3\2\2\2\b>\3\2\2\2\n@\3\2\2\2\fV\3\2\2\2\16c\3\2\2\2\20\22\7"+ - "\b\2\2\21\20\3\2\2\2\21\22\3\2\2\2\22\24\3\2\2\2\23\25\5\4\3\2\24\23\3"+ - "\2\2\2\25\26\3\2\2\2\26\24\3\2\2\2\26\27\3\2\2\2\27\3\3\2\2\2\30\31\7"+ - "\23\2\2\31\32\5\f\7\2\32\33\7\24\2\2\33-\3\2\2\2\34\35\7\7\2\2\35-\5\f"+ - "\7\2\36\37\7\6\2\2\37-\5\f\7\2 !\7\23\2\2!&\5\f\7\2\"#\7\26\2\2#%\5\f"+ - "\7\2$\"\3\2\2\2%(\3\2\2\2&$\3\2\2\2&\'\3\2\2\2\')\3\2\2\2(&\3\2\2\2)*"+ - "\7\24\2\2*-\3\2\2\2+-\5\6\4\2,\30\3\2\2\2,\34\3\2\2\2,\36\3\2\2\2, \3"+ - "\2\2\2,+\3\2\2\2-\5\3\2\2\2./\7\23\2\2/\60\5\b\5\2\60\62\7\25\2\2\61\63"+ - "\5\n\6\2\62\61\3\2\2\2\62\63\3\2\2\2\63\64\3\2\2\2\64\65\7\24\2\2\65="+ - "\3\2\2\2\66\67\7\23\2\2\679\7\25\2\28:\5\n\6\298\3\2\2\29:\3\2\2\2:;\3"+ - "\2\2\2;=\7\24\2\2<.\3\2\2\2<\66\3\2\2\2=\7\3\2\2\2>?\7\4\2\2?\t\3\2\2"+ - "\2@A\7\4\2\2A\13\3\2\2\2BC\b\7\1\2CD\7\31\2\2DE\7\27\2\2EF\5\f\7\2FG\7"+ - "\30\2\2GW\3\2\2\2HI\7\27\2\2IJ\5\f\7\2JK\7\30\2\2KW\3\2\2\2LW\5\16\b\2"+ - "MW\7\32\2\2NW\5\2\2\2OW\7\t\2\2PR\7\5\2\2QS\5\4\3\2RQ\3\2\2\2ST\3\2\2"+ - "\2TR\3\2\2\2TU\3\2\2\2UW\3\2\2\2VB\3\2\2\2VH\3\2\2\2VL\3\2\2\2VM\3\2\2"+ - "\2VN\3\2\2\2VO\3\2\2\2VP\3\2\2\2W`\3\2\2\2XY\f\13\2\2YZ\7\n\2\2Z_\5\f"+ - "\7\f[\\\f\b\2\2\\]\t\2\2\2]_\5\f\7\t^X\3\2\2\2^[\3\2\2\2_b\3\2\2\2`^\3"+ - "\2\2\2`a\3\2\2\2a\r\3\2\2\2b`\3\2\2\2cd\t\3\2\2d\17\3\2\2\2\r\21\26&,"+ - "\629\3\2\2\2\n@\3\2\2\2\fV\3\2\2\2\16c\3\2\2\2\20\22\7"+ + "\b\2\2\21\20\3\2\2\2\21\22\3\2\2\2\22\24\3\2\2\2\23\25\5\4\3\2\24\23\3"+ + "\2\2\2\25\26\3\2\2\2\26\24\3\2\2\2\26\27\3\2\2\2\27\3\3\2\2\2\30\31\7"+ + "\23\2\2\31\32\5\f\7\2\32\33\7\24\2\2\33-\3\2\2\2\34\35\7\7\2\2\35-\5\f"+ + "\7\2\36\37\7\6\2\2\37-\5\f\7\2 !\7\23\2\2!&\5\f\7\2\"#\7\26\2\2#%\5\f"+ + "\7\2$\"\3\2\2\2%(\3\2\2\2&$\3\2\2\2&\'\3\2\2\2\')\3\2\2\2(&\3\2\2\2)*"+ + "\7\24\2\2*-\3\2\2\2+-\5\6\4\2,\30\3\2\2\2,\34\3\2\2\2,\36\3\2\2\2, \3"+ + "\2\2\2,+\3\2\2\2-\5\3\2\2\2./\7\23\2\2/\60\5\b\5\2\60\62\7\25\2\2\61\63"+ + "\5\n\6\2\62\61\3\2\2\2\62\63\3\2\2\2\63\64\3\2\2\2\64\65\7\24\2\2\65="+ + "\3\2\2\2\66\67\7\23\2\2\679\7\25\2\28:\5\n\6\298\3\2\2\29:\3\2\2\2:;\3"+ + "\2\2\2;=\7\24\2\2<.\3\2\2\2<\66\3\2\2\2=\7\3\2\2\2>?\7\4\2\2?\t\3\2\2"+ + "\2@A\7\4\2\2A\13\3\2\2\2BC\b\7\1\2CD\7\31\2\2DE\7\27\2\2EF\5\f\7\2FG\7"+ + "\30\2\2GW\3\2\2\2HI\7\27\2\2IJ\5\f\7\2JK\7\30\2\2KW\3\2\2\2LW\5\16\b\2"+ + "MW\7\32\2\2NW\5\2\2\2OW\7\t\2\2PR\7\5\2\2QS\5\4\3\2RQ\3\2\2\2ST\3\2\2"+ + "\2TR\3\2\2\2TU\3\2\2\2UW\3\2\2\2VB\3\2\2\2VH\3\2\2\2VL\3\2\2\2VM\3\2\2"+ + "\2VN\3\2\2\2VO\3\2\2\2VP\3\2\2\2W`\3\2\2\2XY\f\13\2\2YZ\7\n\2\2Z_\5\f"+ + "\7\f[\\\f\b\2\2\\]\t\2\2\2]_\5\f\7\t^X\3\2\2\2^[\3\2\2\2_b\3\2\2\2`^\3"+ + "\2\2\2`a\3\2\2\2a\r\3\2\2\2b`\3\2\2\2cd\t\3\2\2d\17\3\2\2\2\r\21\26&,"+ + "\629\3\2\2\2\20\2BDKMQerwz~\u0083\u00c2\u00c8\3\b\2\2"; + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\34\u00d2\b\1\4\2"+ + "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+ + "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+ + "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+ + "\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+ + " \3\2\3\2\3\2\7\2E\n\2\f\2\16\2H\13\2\3\2\3\2\3\2\3\2\7\2N\n\2\f\2\16"+ + "\2Q\13\2\3\2\5\2T\n\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+ + "\3\3\3\3\3\3\3\3\3\3\3\3\5\3h\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\6"+ + "\3\6\3\7\5\7u\n\7\3\7\6\7x\n\7\r\7\16\7y\3\7\5\7}\n\7\3\b\3\b\5\b\u0081"+ + "\n\b\3\b\6\b\u0084\n\b\r\b\16\b\u0085\3\t\3\t\3\n\3\n\3\n\3\13\3\13\3"+ + "\f\3\f\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\20\3\20\3\20\3\21\3\21"+ + "\3\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24"+ + "\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\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\7\36\u00c3\n\36\f\36\16"+ + "\36\u00c6\13\36\3\37\6\37\u00c9\n\37\r\37\16\37\u00ca\3\37\3\37\3 \3 "+ + "\3 \3 \4FO\2!\3\3\5\2\7\2\t\2\13\2\r\4\17\2\21\5\23\6\25\7\27\b\31\t\33"+ + "\n\35\13\37\f!\r#\16%\17\'\20)\21+\22-\23/\24\61\25\63\26\65\27\67\30"+ + "9\31;\32=\33?\34\3\2\13\7\2$$^^ppttvv\5\2\62;CHch\5\2\2!$$^^\3\2\62;\4"+ + "\2GGgg\4\2--//\5\2C\\aac|\7\2//\62;C\\aac|\5\2\13\f\16\17\"\"\2\u00da"+ + "\2\3\3\2\2\2\2\r\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3"+ + "\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2"+ + "\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2"+ + "/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2"+ + "\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\3S\3\2\2\2\5g\3\2\2\2\7i\3\2\2\2\t"+ + "o\3\2\2\2\13q\3\2\2\2\rt\3\2\2\2\17~\3\2\2\2\21\u0087\3\2\2\2\23\u0089"+ + "\3\2\2\2\25\u008c\3\2\2\2\27\u008e\3\2\2\2\31\u0090\3\2\2\2\33\u0092\3"+ + "\2\2\2\35\u0095\3\2\2\2\37\u0098\3\2\2\2!\u009b\3\2\2\2#\u009e\3\2\2\2"+ + "%\u00a3\3\2\2\2\'\u00a9\3\2\2\2)\u00ae\3\2\2\2+\u00b0\3\2\2\2-\u00b2\3"+ + "\2\2\2/\u00b4\3\2\2\2\61\u00b6\3\2\2\2\63\u00b8\3\2\2\2\65\u00ba\3\2\2"+ + "\2\67\u00bc\3\2\2\29\u00be\3\2\2\2;\u00c0\3\2\2\2=\u00c8\3\2\2\2?\u00ce"+ + "\3\2\2\2AF\7$\2\2BE\5\5\3\2CE\5\13\6\2DB\3\2\2\2DC\3\2\2\2EH\3\2\2\2F"+ + "G\3\2\2\2FD\3\2\2\2GI\3\2\2\2HF\3\2\2\2IT\7$\2\2JO\7)\2\2KN\5\5\3\2LN"+ + "\5\13\6\2MK\3\2\2\2ML\3\2\2\2NQ\3\2\2\2OP\3\2\2\2OM\3\2\2\2PR\3\2\2\2"+ + "QO\3\2\2\2RT\7)\2\2SA\3\2\2\2SJ\3\2\2\2T\4\3\2\2\2UV\7^\2\2Vh\t\2\2\2"+ + "WX\7^\2\2XY\5\t\5\2YZ\5\t\5\2Z[\5\t\5\2[\\\5\t\5\2\\h\3\2\2\2]^\7^\2\2"+ + "^_\5\t\5\2_`\5\t\5\2`a\5\t\5\2ab\5\t\5\2bc\5\t\5\2cd\5\t\5\2de\5\t\5\2"+ + "ef\5\t\5\2fh\3\2\2\2gU\3\2\2\2gW\3\2\2\2g]\3\2\2\2h\6\3\2\2\2ij\7w\2\2"+ + "jk\5\t\5\2kl\5\t\5\2lm\5\t\5\2mn\5\t\5\2n\b\3\2\2\2op\t\3\2\2p\n\3\2\2"+ + "\2qr\n\4\2\2r\f\3\2\2\2su\7/\2\2ts\3\2\2\2tu\3\2\2\2uw\3\2\2\2vx\t\5\2"+ + "\2wv\3\2\2\2xy\3\2\2\2yw\3\2\2\2yz\3\2\2\2z|\3\2\2\2{}\5\17\b\2|{\3\2"+ + "\2\2|}\3\2\2\2}\16\3\2\2\2~\u0080\t\6\2\2\177\u0081\t\7\2\2\u0080\177"+ + "\3\2\2\2\u0080\u0081\3\2\2\2\u0081\u0083\3\2\2\2\u0082\u0084\t\5\2\2\u0083"+ + "\u0082\3\2\2\2\u0084\u0085\3\2\2\2\u0085\u0083\3\2\2\2\u0085\u0086\3\2"+ + "\2\2\u0086\20\3\2\2\2\u0087\u0088\7B\2\2\u0088\22\3\2\2\2\u0089\u008a"+ + "\7\60\2\2\u008a\u008b\7\60\2\2\u008b\24\3\2\2\2\u008c\u008d\7\60\2\2\u008d"+ + "\26\3\2\2\2\u008e\u008f\7&\2\2\u008f\30\3\2\2\2\u0090\u0091\7,\2\2\u0091"+ + "\32\3\2\2\2\u0092\u0093\7(\2\2\u0093\u0094\7(\2\2\u0094\34\3\2\2\2\u0095"+ + "\u0096\7?\2\2\u0096\u0097\7?\2\2\u0097\36\3\2\2\2\u0098\u0099\7#\2\2\u0099"+ + "\u009a\7?\2\2\u009a \3\2\2\2\u009b\u009c\7?\2\2\u009c\u009d\7\u0080\2"+ + "\2\u009d\"\3\2\2\2\u009e\u009f\7v\2\2\u009f\u00a0\7t\2\2\u00a0\u00a1\7"+ + "w\2\2\u00a1\u00a2\7g\2\2\u00a2$\3\2\2\2\u00a3\u00a4\7h\2\2\u00a4\u00a5"+ + "\7c\2\2\u00a5\u00a6\7n\2\2\u00a6\u00a7\7u\2\2\u00a7\u00a8\7g\2\2\u00a8"+ + "&\3\2\2\2\u00a9\u00aa\7p\2\2\u00aa\u00ab\7w\2\2\u00ab\u00ac\7n\2\2\u00ac"+ + "\u00ad\7n\2\2\u00ad(\3\2\2\2\u00ae\u00af\7}\2\2\u00af*\3\2\2\2\u00b0\u00b1"+ + "\7\177\2\2\u00b1,\3\2\2\2\u00b2\u00b3\7]\2\2\u00b3.\3\2\2\2\u00b4\u00b5"+ + "\7_\2\2\u00b5\60\3\2\2\2\u00b6\u00b7\7<\2\2\u00b7\62\3\2\2\2\u00b8\u00b9"+ + "\7.\2\2\u00b9\64\3\2\2\2\u00ba\u00bb\7*\2\2\u00bb\66\3\2\2\2\u00bc\u00bd"+ + "\7+\2\2\u00bd8\3\2\2\2\u00be\u00bf\7A\2\2\u00bf:\3\2\2\2\u00c0\u00c4\t"+ + "\b\2\2\u00c1\u00c3\t\t\2\2\u00c2\u00c1\3\2\2\2\u00c3\u00c6\3\2\2\2\u00c4"+ + "\u00c2\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5<\3\2\2\2\u00c6\u00c4\3\2\2\2"+ + "\u00c7\u00c9\t\n\2\2\u00c8\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00c8"+ + "\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00cd\b\37\2\2"+ + "\u00cd>\3\2\2\2\u00ce\u00cf\7\uff01\2\2\u00cf\u00d0\3\2\2\2\u00d0\u00d1"+ + "\b \2\2\u00d1@\3\2\2\2\20\2DFMOSgty|\u0080\u0085\u00c4\u00ca\3\b\2\2"; public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); } } -} +} \ No newline at end of file diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathLexer.tokens b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathLexer.tokens index 50e67dac941..b8c6cb4b12b 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathLexer.tokens +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathLexer.tokens @@ -23,6 +23,7 @@ RPAREN=22 QUESTION=23 Identifier=24 WS=25 +UTF_8_BOM=26 '@'=3 '..'=4 '.'=5 @@ -44,3 +45,4 @@ WS=25 '('=21 ')'=22 '?'=23 +'\uFEFF'=26 diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathListener.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathListener.java index 85db59fc46b..0088998fd82 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathListener.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathListener.java @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JsonPath.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JsonPath.g4 by ANTLR 4.9.2 import org.antlr.v4.runtime.tree.ParseTreeListener; /** diff --git a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathVisitor.java b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathVisitor.java index 8167e0770d9..5c2107ad9b9 100644 --- a/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathVisitor.java +++ b/rewrite-json/src/main/java/org/openrewrite/json/internal/grammar/JsonPathVisitor.java @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// Generated from /Users/jon/Projects/github/openrewrite/rewrite/rewrite-json/src/main/antlr/JsonPath.g4 by ANTLR 4.9.2 package org.openrewrite.json.internal.grammar; +// Generated from /Users/pat/dev/openrewrite/rewrite/rewrite-json/src/main/antlr/JsonPath.g4 by ANTLR 4.9.2 import org.antlr.v4.runtime.tree.ParseTreeVisitor; /**