diff --git a/plugins/groovy/groovy-psi/gen/org/jetbrains/plugins/groovy/lang/lexer/_GroovyLexer.java b/plugins/groovy/groovy-psi/gen/org/jetbrains/plugins/groovy/lang/lexer/_GroovyLexer.java index e7455c0589eb..5191f00465a3 100644 --- a/plugins/groovy/groovy-psi/gen/org/jetbrains/plugins/groovy/lang/lexer/_GroovyLexer.java +++ b/plugins/groovy/groovy-psi/gen/org/jetbrains/plugins/groovy/lang/lexer/_GroovyLexer.java @@ -27,18 +27,20 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { /** lexical states */ public static final int YYINITIAL = 0; - public static final int IN_INNER_BLOCK = 2; - public static final int DIVISION_EXPECTED = 4; - public static final int IN_SINGLE_GSTRING = 6; - public static final int IN_TRIPLE_GSTRING = 8; - public static final int IN_SLASHY_STRING = 10; - public static final int IN_DOLLAR_SLASH_STRING = 12; - public static final int IN_GSTRING_DOLLAR = 14; - public static final int IN_GSTRING_DOT = 16; - public static final int IN_GSTRING_DOT_IDENT = 18; - public static final int NLS_AFTER_COMMENT = 20; - public static final int NLS_AFTER_LBRACE = 22; - public static final int NLS_AFTER_NLS = 24; + public static final int IN_PARENS_BRACKETS = 2; + public static final int IN_BRACES = 4; + public static final int IN_INJECTION = 6; + public static final int DIVISION_EXPECTED = 8; + public static final int IN_SINGLE_GSTRING = 10; + public static final int IN_TRIPLE_GSTRING = 12; + public static final int IN_SLASHY_STRING = 14; + public static final int IN_DOLLAR_SLASH_STRING = 16; + public static final int IN_GSTRING_DOLLAR = 18; + public static final int IN_GSTRING_DOT = 20; + public static final int IN_GSTRING_DOT_IDENT = 22; + public static final int NLS_AFTER_COMMENT = 24; + public static final int NLS_AFTER_LBRACE = 26; + public static final int NLS_AFTER_NLS = 28; /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l @@ -48,7 +50,7 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { */ private static final int ZZ_LEXSTATE[] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 11, 12, 12 + 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14 }; /** @@ -127,11 +129,11 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { /* The ZZ_CMAP_A table has 3024 entries */ static final char ZZ_CMAP_A[] = zzUnpackCMap( "\11\0\1\4\1\2\1\1\1\5\1\3\22\0\1\4\1\12\1\46\1\11\1\44\1\104\1\107\1\45\1"+ - "\73\1\74\1\10\1\31\1\100\1\32\1\42\1\7\1\34\1\37\10\14\1\77\1\110\1\101\1"+ - "\71\1\102\1\72\1\111\1\13\1\36\1\13\1\26\1\30\1\20\1\16\1\43\1\24\2\43\1\22"+ - "\13\43\1\41\2\43\1\75\1\6\1\76\1\105\1\33\1\0\1\51\1\35\1\52\1\25\1\27\1\17"+ - "\1\15\1\65\1\23\1\43\1\53\1\21\1\57\1\61\1\60\1\50\1\43\1\56\1\54\1\55\1\62"+ - "\1\63\1\67\1\40\1\64\1\66\1\70\1\106\1\47\1\103\6\0\1\1\24\0\1\43\12\0\1\43"+ + "\70\1\72\1\10\1\31\1\100\1\32\1\42\1\7\1\34\1\37\10\14\1\77\1\110\1\101\1"+ + "\75\1\102\1\76\1\111\1\13\1\36\1\13\1\26\1\30\1\20\1\16\1\43\1\24\2\43\1\22"+ + "\13\43\1\41\2\43\1\71\1\6\1\73\1\105\1\33\1\0\1\50\1\35\1\51\1\25\1\27\1\17"+ + "\1\15\1\64\1\23\1\43\1\52\1\21\1\56\1\60\1\57\1\47\1\43\1\55\1\53\1\54\1\61"+ + "\1\62\1\66\1\40\1\63\1\65\1\67\1\106\1\74\1\103\6\0\1\1\24\0\1\43\12\0\1\43"+ "\4\0\1\43\5\0\27\43\1\0\12\43\4\0\14\43\16\0\5\43\7\0\1\43\1\0\1\43\1\0\5"+ "\43\1\0\2\43\2\0\4\43\1\0\1\43\6\0\1\43\1\0\3\43\1\0\1\43\1\0\4\43\1\0\23"+ "\43\1\0\13\43\10\0\6\43\1\0\26\43\2\0\1\43\6\0\10\43\10\0\13\43\5\0\3\43\33"+ @@ -181,56 +183,56 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\15\0\1\1\1\2\2\3\1\1\1\4\1\5\1\1"+ + "\17\0\1\1\1\2\1\3\1\1\1\4\1\5\1\1"+ "\1\6\1\7\1\10\5\7\1\11\1\12\1\10\1\7"+ - "\1\13\1\7\1\14\1\15\1\16\11\7\1\17\1\20"+ + "\1\13\1\7\1\14\1\15\11\7\1\16\1\17\1\20"+ "\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"+ "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\1\40"+ - "\1\41\2\42\1\43\1\42\1\44\1\45\1\44\1\46"+ - "\1\47\3\44\2\50\1\51\1\46\2\52\1\46\1\53"+ - "\20\54\1\55\2\56\1\57\1\60\1\3\2\60\2\61"+ - "\2\62\1\0\1\3\1\63\1\64\1\65\1\66\1\67"+ - "\1\70\1\71\1\72\1\73\1\74\1\10\1\75\3\0"+ - "\5\7\1\76\1\7\1\77\1\7\1\100\3\7\1\101"+ - "\1\102\1\103\1\104\1\105\2\0\3\7\1\106\1\107"+ - "\1\110\1\14\1\0\1\14\2\0\1\111\4\7\1\112"+ - "\21\7\1\113\1\114\1\115\1\116\1\117\1\120\1\121"+ - "\1\0\1\122\1\0\1\123\1\124\1\125\1\126\1\127"+ - "\1\130\1\131\1\132\1\133\4\44\1\50\1\134\1\135"+ - "\1\136\1\52\5\54\1\76\1\54\1\77\1\54\1\100"+ - "\12\54\1\112\21\54\1\137\1\0\1\140\1\141\1\64"+ - "\1\142\1\143\1\144\1\145\1\0\1\145\3\7\1\146"+ - "\3\7\1\147\1\150\4\7\2\10\3\7\1\151\1\152"+ - "\4\14\1\111\2\0\1\153\23\7\1\154\3\7\1\155"+ - "\5\7\1\156\1\157\1\160\1\161\1\162\4\0\1\163"+ - "\3\54\1\146\3\54\1\147\1\150\32\54\1\154\3\54"+ - "\1\155\5\54\1\141\1\164\1\64\2\142\1\145\1\0"+ - "\3\7\1\165\6\7\1\166\1\7\1\167\2\0\2\7"+ - "\1\170\3\0\2\14\6\0\7\7\1\171\2\7\1\172"+ - "\10\7\1\173\1\174\3\7\1\175\1\7\1\176\1\7"+ - "\1\177\3\54\1\165\6\54\1\166\1\54\1\167\2\54"+ - "\1\170\7\54\1\171\2\54\1\172\10\54\1\173\1\174"+ - "\3\54\1\175\1\54\1\176\1\54\1\141\2\164\1\64"+ - "\1\0\1\142\1\200\1\201\1\202\7\7\1\203\1\7"+ - "\1\14\1\0\1\14\3\0\6\7\1\204\1\205\3\7"+ - "\1\206\1\7\1\207\1\7\1\210\1\7\1\211\3\7"+ - "\1\212\1\200\1\201\1\202\7\54\1\203\7\54\1\204"+ - "\1\205\3\54\1\206\1\54\1\207\1\54\1\210\1\54"+ - "\1\211\3\54\1\212\1\141\1\0\1\164\1\0\2\7"+ - "\1\213\3\7\1\214\5\7\1\215\1\7\1\216\1\7"+ - "\1\217\2\7\1\220\1\7\1\221\1\222\1\223\1\7"+ - "\2\54\1\213\3\54\1\214\5\54\1\215\1\54\1\216"+ - "\1\54\1\217\2\54\1\220\1\54\1\221\1\222\1\223"+ - "\1\54\1\0\1\224\3\7\1\225\1\226\1\227\1\230"+ - "\1\231\7\7\1\224\3\54\1\225\1\226\1\227\1\230"+ - "\1\231\7\54\4\7\1\232\1\233\1\234\2\7\1\235"+ - "\4\54\1\232\1\233\1\234\2\54\1\235\2\7\1\236"+ - "\1\237\1\7\1\240\2\54\1\236\1\237\1\54\1\240"+ - "\1\241\1\242\1\7\1\241\1\242\1\54\1\7\1\54"+ - "\2\243"; + "\1\41\1\42\1\43\1\44\1\45\1\46\1\47\2\50"+ + "\1\51\1\50\1\52\1\53\1\52\1\54\1\55\3\52"+ + "\2\56\1\57\1\54\2\60\1\54\1\61\20\62\1\63"+ + "\2\64\1\65\1\66\1\3\2\66\2\67\2\70\1\0"+ + "\1\3\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+ + "\1\100\1\101\1\102\1\10\1\103\3\0\5\7\1\104"+ + "\1\7\1\105\1\7\1\106\3\7\1\107\1\110\1\111"+ + "\1\112\1\113\2\0\3\7\1\114\1\115\1\116\1\14"+ + "\1\0\1\14\2\0\1\117\4\7\1\120\21\7\1\121"+ + "\1\122\1\123\1\124\1\125\1\126\1\127\1\0\1\130"+ + "\1\0\1\131\1\132\1\133\1\134\1\135\1\136\1\0"+ + "\1\137\1\140\1\141\4\52\1\56\1\142\1\143\1\144"+ + "\1\60\5\62\1\104\1\62\1\105\1\62\1\106\12\62"+ + "\1\120\21\62\1\145\1\0\1\146\1\147\1\72\1\150"+ + "\1\151\1\152\1\153\1\0\1\153\3\7\1\154\3\7"+ + "\1\155\1\156\4\7\2\10\3\7\1\157\1\160\4\14"+ + "\1\117\2\0\1\161\23\7\1\162\3\7\1\163\5\7"+ + "\1\164\1\165\1\166\1\167\1\170\4\0\1\171\3\62"+ + "\1\154\3\62\1\155\1\156\32\62\1\162\3\62\1\163"+ + "\5\62\1\147\1\172\1\72\2\150\1\153\1\0\3\7"+ + "\1\173\6\7\1\174\1\7\1\175\2\0\2\7\1\176"+ + "\3\0\2\14\6\0\7\7\1\177\2\7\1\200\10\7"+ + "\1\201\1\202\3\7\1\203\1\7\1\204\1\7\1\205"+ + "\3\62\1\173\6\62\1\174\1\62\1\175\2\62\1\176"+ + "\7\62\1\177\2\62\1\200\10\62\1\201\1\202\3\62"+ + "\1\203\1\62\1\204\1\62\1\147\2\172\1\72\1\0"+ + "\1\150\1\206\1\207\1\210\7\7\1\211\1\7\1\14"+ + "\1\0\1\14\3\0\6\7\1\212\1\213\3\7\1\214"+ + "\1\7\1\215\1\7\1\216\1\7\1\217\3\7\1\220"+ + "\1\206\1\207\1\210\7\62\1\211\7\62\1\212\1\213"+ + "\3\62\1\214\1\62\1\215\1\62\1\216\1\62\1\217"+ + "\3\62\1\220\1\147\1\0\1\172\1\0\2\7\1\221"+ + "\3\7\1\222\5\7\1\223\1\7\1\224\1\7\1\225"+ + "\2\7\1\226\1\7\1\227\1\230\1\231\1\7\2\62"+ + "\1\221\3\62\1\222\5\62\1\223\1\62\1\224\1\62"+ + "\1\225\2\62\1\226\1\62\1\227\1\230\1\231\1\62"+ + "\1\0\1\232\3\7\1\233\1\234\1\235\1\236\1\237"+ + "\7\7\1\232\3\62\1\233\1\234\1\235\1\236\1\237"+ + "\7\62\4\7\1\240\1\241\1\242\2\7\1\243\4\62"+ + "\1\240\1\241\1\242\2\62\1\243\2\7\1\244\1\245"+ + "\1\7\1\246\2\62\1\244\1\245\1\62\1\246\1\247"+ + "\1\250\1\7\1\247\1\250\1\62\1\7\1\62\2\251"; private static int [] zzUnpackAction() { - int [] result = new int[692]; + int [] result = new int[700]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -256,95 +258,96 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { private static final String ZZ_ROWMAP_PACKED_0 = "\0\0\0\112\0\224\0\336\0\u0128\0\u0172\0\u01bc\0\u0206"+ - "\0\u0250\0\u029a\0\u02e4\0\u032e\0\u0378\0\u03c2\0\u040c\0\u03c2"+ - "\0\u040c\0\u0456\0\u04a0\0\u04ea\0\u0534\0\u057e\0\u05c8\0\u0612"+ - "\0\u065c\0\u06a6\0\u06f0\0\u073a\0\u0784\0\u07ce\0\u0818\0\u0862"+ - "\0\u08ac\0\u08f6\0\u0940\0\u098a\0\u09d4\0\u03c2\0\u0a1e\0\u0a68"+ - "\0\u0ab2\0\u0afc\0\u0b46\0\u0b90\0\u0bda\0\u0c24\0\u0c6e\0\u03c2"+ - "\0\u0cb8\0\u0d02\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u0d4c\0\u03c2"+ - "\0\u0d96\0\u0de0\0\u03c2\0\u0e2a\0\u0e74\0\u0ebe\0\u0f08\0\u03c2"+ - "\0\u03c2\0\u03c2\0\u03c2\0\u0456\0\u0f52\0\u0f9c\0\u0fe6\0\u03c2"+ - "\0\u1030\0\u03c2\0\u03c2\0\u107a\0\u10c4\0\u110e\0\u1158\0\u11a2"+ - "\0\u03c2\0\u11ec\0\u1236\0\u1280\0\u12ca\0\u03c2\0\u1314\0\u135e"+ - "\0\u13a8\0\u13f2\0\u143c\0\u1486\0\u14d0\0\u151a\0\u1564\0\u15ae"+ - "\0\u15f8\0\u1642\0\u168c\0\u16d6\0\u1720\0\u176a\0\u03c2\0\u03c2"+ - "\0\u17b4\0\u03c2\0\u03c2\0\u17fe\0\u1848\0\u1892\0\u03c2\0\u1848"+ - "\0\u03c2\0\u1848\0\u18dc\0\u1926\0\u1970\0\u19ba\0\u1a04\0\u03c2"+ - "\0\u03c2\0\u1a4e\0\u1a98\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u03c2"+ - "\0\u1ae2\0\u1b2c\0\u1b76\0\u1bc0\0\u1c0a\0\u1c54\0\u1c9e\0\u1ce8"+ - "\0\u05c8\0\u1d32\0\u1d7c\0\u1dc6\0\u1e10\0\u1e5a\0\u1ea4\0\u1eee"+ - "\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u1f38\0\u1f82\0\u1fcc"+ - "\0\u2016\0\u2060\0\u20aa\0\u03c2\0\u03c2\0\u20f4\0\u213e\0\u2188"+ - "\0\u21d2\0\u221c\0\u2266\0\u22b0\0\u22fa\0\u2344\0\u238e\0\u23d8"+ - "\0\u2422\0\u246c\0\u24b6\0\u2500\0\u254a\0\u2594\0\u25de\0\u2628"+ - "\0\u2672\0\u26bc\0\u2706\0\u2750\0\u279a\0\u27e4\0\u282e\0\u2878"+ - "\0\u28c2\0\u290c\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u2956"+ - "\0\u29a0\0\u03c2\0\u29ea\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u03c2"+ - "\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u2a34\0\u2a7e\0\u2ac8"+ - "\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u2b12\0\u2b5c\0\u2ba6"+ - "\0\u2bf0\0\u2c3a\0\u1314\0\u2c84\0\u2cce\0\u2d18\0\u2d62\0\u2dac"+ - "\0\u2df6\0\u2e40\0\u2e8a\0\u2ed4\0\u2f1e\0\u2f68\0\u2fb2\0\u2ffc"+ - "\0\u3046\0\u3090\0\u30da\0\u3124\0\u316e\0\u31b8\0\u3202\0\u324c"+ - "\0\u3296\0\u32e0\0\u332a\0\u3374\0\u33be\0\u3408\0\u3452\0\u349c"+ - "\0\u34e6\0\u3530\0\u357a\0\u35c4\0\u1848\0\u360e\0\u3658\0\u36a2"+ - "\0\u36ec\0\u03c2\0\u03c2\0\u3736\0\u3780\0\u37ca\0\u3814\0\u385e"+ - "\0\u38a8\0\u05c8\0\u38f2\0\u393c\0\u3986\0\u39d0\0\u3a1a\0\u3a64"+ - "\0\u3aae\0\u3af8\0\u3b42\0\u3b8c\0\u3bd6\0\u3c20\0\u3c6a\0\u3cb4"+ - "\0\u03c2\0\u03c2\0\u03c2\0\u3cfe\0\u3d48\0\u3d92\0\u03c2\0\u3ddc"+ - "\0\u3e26\0\u3e70\0\u3eba\0\u3f04\0\u3f4e\0\u3f98\0\u3fe2\0\u402c"+ - "\0\u4076\0\u40c0\0\u410a\0\u4154\0\u419e\0\u41e8\0\u4232\0\u427c"+ - "\0\u42c6\0\u4310\0\u435a\0\u43a4\0\u43ee\0\u05c8\0\u4438\0\u4482"+ - "\0\u44cc\0\u05c8\0\u4516\0\u4560\0\u45aa\0\u45f4\0\u463e\0\u03c2"+ - "\0\u03c2\0\u03c2\0\u03c2\0\u03c2\0\u4688\0\u2a34\0\u2a7e\0\u46d2"+ - "\0\u03c2\0\u471c\0\u4766\0\u47b0\0\u1314\0\u47fa\0\u4844\0\u488e"+ - "\0\u48d8\0\u4922\0\u496c\0\u49b6\0\u4a00\0\u4a4a\0\u4a94\0\u4ade"+ - "\0\u4b28\0\u4b72\0\u4bbc\0\u4c06\0\u4c50\0\u4c9a\0\u4ce4\0\u4d2e"+ - "\0\u4d78\0\u4dc2\0\u4e0c\0\u4e56\0\u4ea0\0\u4eea\0\u4f34\0\u4f7e"+ - "\0\u4fc8\0\u5012\0\u505c\0\u50a6\0\u1314\0\u50f0\0\u513a\0\u5184"+ - "\0\u1314\0\u51ce\0\u5218\0\u5262\0\u52ac\0\u52f6\0\u5340\0\u538a"+ - "\0\u53d4\0\u541e\0\u03c2\0\u03c2\0\u5468\0\u54b2\0\u54fc\0\u5546"+ - "\0\u05c8\0\u5590\0\u55da\0\u5624\0\u566e\0\u56b8\0\u5702\0\u05c8"+ - "\0\u574c\0\u05c8\0\u5796\0\u57e0\0\u582a\0\u5874\0\u05c8\0\u58be"+ - "\0\u5908\0\u5952\0\u599c\0\u59e6\0\u5a30\0\u5a7a\0\u5ac4\0\u3e70"+ - "\0\u5b0e\0\u5b58\0\u5ba2\0\u5bec\0\u5c36\0\u5c80\0\u5cca\0\u5d14"+ - "\0\u5d5e\0\u05c8\0\u5da8\0\u5df2\0\u05c8\0\u5e3c\0\u5e86\0\u5ed0"+ - "\0\u5f1a\0\u5f64\0\u5fae\0\u5ff8\0\u6042\0\u05c8\0\u05c8\0\u608c"+ - "\0\u60d6\0\u6120\0\u05c8\0\u616a\0\u05c8\0\u61b4\0\u03c2\0\u61fe"+ - "\0\u6248\0\u6292\0\u1314\0\u62dc\0\u6326\0\u6370\0\u63ba\0\u6404"+ - "\0\u644e\0\u1314\0\u6498\0\u1314\0\u64e2\0\u652c\0\u1314\0\u6576"+ - "\0\u65c0\0\u660a\0\u6654\0\u669e\0\u66e8\0\u6732\0\u1314\0\u677c"+ - "\0\u67c6\0\u1314\0\u6810\0\u685a\0\u68a4\0\u68ee\0\u6938\0\u6982"+ - "\0\u69cc\0\u6a16\0\u1314\0\u1314\0\u6a60\0\u6aaa\0\u6af4\0\u1314"+ - "\0\u6b3e\0\u1314\0\u6b88\0\u6bd2\0\u6c1c\0\u03c2\0\u03c2\0\u53d4"+ - "\0\u6c66\0\u05c8\0\u6cb0\0\u05c8\0\u6cfa\0\u6d44\0\u6d8e\0\u6dd8"+ - "\0\u6e22\0\u6e6c\0\u6eb6\0\u05c8\0\u6f00\0\u6f4a\0\u6f94\0\u6fde"+ - "\0\u7028\0\u7072\0\u70bc\0\u7106\0\u7150\0\u719a\0\u71e4\0\u722e"+ - "\0\u7278\0\u05c8\0\u05c8\0\u72c2\0\u730c\0\u7356\0\u05c8\0\u73a0"+ - "\0\u05c8\0\u73ea\0\u05c8\0\u7434\0\u747e\0\u74c8\0\u7512\0\u755c"+ - "\0\u05c8\0\u1314\0\u75a6\0\u1314\0\u75f0\0\u763a\0\u7684\0\u76ce"+ - "\0\u7718\0\u7762\0\u77ac\0\u1314\0\u77f6\0\u7840\0\u788a\0\u78d4"+ - "\0\u791e\0\u7968\0\u79b2\0\u1314\0\u1314\0\u79fc\0\u7a46\0\u7a90"+ - "\0\u1314\0\u7ada\0\u1314\0\u7b24\0\u1314\0\u7b6e\0\u7bb8\0\u7c02"+ - "\0\u7c4c\0\u7c96\0\u1314\0\u03c2\0\u6bd2\0\u7ce0\0\u6c66\0\u7d2a"+ - "\0\u7d74\0\u05c8\0\u7dbe\0\u7e08\0\u7e52\0\u05c8\0\u7e9c\0\u7ee6"+ - "\0\u7f30\0\u7f7a\0\u7fc4\0\u05c8\0\u800e\0\u05c8\0\u8058\0\u05c8"+ - "\0\u80a2\0\u80ec\0\u05c8\0\u8136\0\u05c8\0\u05c8\0\u05c8\0\u8180"+ - "\0\u81ca\0\u8214\0\u1314\0\u825e\0\u82a8\0\u82f2\0\u1314\0\u833c"+ - "\0\u8386\0\u83d0\0\u841a\0\u8464\0\u1314\0\u84ae\0\u1314\0\u84f8"+ - "\0\u1314\0\u8542\0\u858c\0\u1314\0\u85d6\0\u1314\0\u1314\0\u1314"+ - "\0\u8620\0\u7ce0\0\u05c8\0\u866a\0\u86b4\0\u86fe\0\u05c8\0\u05c8"+ - "\0\u05c8\0\u05c8\0\u05c8\0\u8748\0\u8792\0\u87dc\0\u8826\0\u8870"+ - "\0\u88ba\0\u8904\0\u1314\0\u894e\0\u8998\0\u89e2\0\u1314\0\u1314"+ - "\0\u1314\0\u1314\0\u1314\0\u8a2c\0\u8a76\0\u8ac0\0\u8b0a\0\u8b54"+ - "\0\u8b9e\0\u8be8\0\u8c32\0\u8c7c\0\u8cc6\0\u8d10\0\u05c8\0\u05c8"+ - "\0\u05c8\0\u8d5a\0\u8da4\0\u05c8\0\u8dee\0\u8e38\0\u8e82\0\u8ecc"+ - "\0\u1314\0\u1314\0\u1314\0\u8f16\0\u8f60\0\u1314\0\u8faa\0\u8ff4"+ - "\0\u05c8\0\u05c8\0\u903e\0\u05c8\0\u9088\0\u90d2\0\u1314\0\u1314"+ - "\0\u911c\0\u1314\0\u05c8\0\u05c8\0\u9166\0\u1314\0\u1314\0\u91b0"+ - "\0\u91fa\0\u9244\0\u05c8\0\u1314"; + "\0\u0250\0\u029a\0\u02e4\0\u032e\0\u0378\0\u03c2\0\u040c\0\u0456"+ + "\0\u04a0\0\u0456\0\u04ea\0\u0534\0\u057e\0\u05c8\0\u0612\0\u065c"+ + "\0\u06a6\0\u06f0\0\u073a\0\u0784\0\u07ce\0\u0818\0\u0862\0\u08ac"+ + "\0\u08f6\0\u0940\0\u098a\0\u09d4\0\u0a1e\0\u0a68\0\u0ab2\0\u0afc"+ + "\0\u0b46\0\u0b90\0\u0bda\0\u0c24\0\u0c6e\0\u0cb8\0\u0d02\0\u0456"+ + "\0\u0456\0\u0456\0\u0456\0\u0456\0\u0456\0\u0d4c\0\u0d96\0\u0de0"+ + "\0\u0456\0\u0e2a\0\u0e74\0\u0456\0\u0ebe\0\u0f08\0\u0f52\0\u0f9c"+ + "\0\u0456\0\u0456\0\u0fe6\0\u0456\0\u0456\0\u0456\0\u0456\0\u0456"+ + "\0\u0456\0\u0456\0\u04ea\0\u1030\0\u107a\0\u10c4\0\u0456\0\u110e"+ + "\0\u0456\0\u0456\0\u1158\0\u11a2\0\u11ec\0\u1236\0\u1280\0\u0456"+ + "\0\u12ca\0\u1314\0\u135e\0\u13a8\0\u0456\0\u13f2\0\u143c\0\u1486"+ + "\0\u14d0\0\u151a\0\u1564\0\u15ae\0\u15f8\0\u1642\0\u168c\0\u16d6"+ + "\0\u1720\0\u176a\0\u17b4\0\u17fe\0\u1848\0\u0456\0\u0456\0\u1892"+ + "\0\u0456\0\u0456\0\u18dc\0\u1926\0\u1970\0\u0456\0\u1926\0\u0456"+ + "\0\u1926\0\u19ba\0\u1a04\0\u1a4e\0\u1a98\0\u1ae2\0\u0456\0\u0456"+ + "\0\u1b2c\0\u1b76\0\u0456\0\u0456\0\u0456\0\u0456\0\u0456\0\u1bc0"+ + "\0\u1c0a\0\u1c54\0\u1c9e\0\u1ce8\0\u1d32\0\u1d7c\0\u1dc6\0\u065c"+ + "\0\u1e10\0\u1e5a\0\u1ea4\0\u1eee\0\u1f38\0\u1f82\0\u1fcc\0\u0456"+ + "\0\u0456\0\u0456\0\u0456\0\u0456\0\u2016\0\u2060\0\u20aa\0\u20f4"+ + "\0\u213e\0\u2188\0\u0456\0\u0456\0\u21d2\0\u221c\0\u2266\0\u22b0"+ + "\0\u22fa\0\u2344\0\u238e\0\u23d8\0\u2422\0\u246c\0\u24b6\0\u2500"+ + "\0\u254a\0\u2594\0\u25de\0\u2628\0\u2672\0\u26bc\0\u2706\0\u2750"+ + "\0\u279a\0\u27e4\0\u282e\0\u2878\0\u28c2\0\u290c\0\u2956\0\u29a0"+ + "\0\u29ea\0\u0456\0\u0456\0\u0456\0\u0456\0\u0456\0\u2a34\0\u2a7e"+ + "\0\u0456\0\u2ac8\0\u0456\0\u0456\0\u0456\0\u0456\0\u0456\0\u0456"+ + "\0\u2b12\0\u0456\0\u0456\0\u0456\0\u0456\0\u2b5c\0\u2ba6\0\u2bf0"+ + "\0\u0456\0\u0456\0\u0456\0\u0456\0\u0456\0\u2c3a\0\u2c84\0\u2cce"+ + "\0\u2d18\0\u2d62\0\u13f2\0\u2dac\0\u2df6\0\u2e40\0\u2e8a\0\u2ed4"+ + "\0\u2f1e\0\u2f68\0\u2fb2\0\u2ffc\0\u3046\0\u3090\0\u30da\0\u3124"+ + "\0\u316e\0\u31b8\0\u3202\0\u324c\0\u3296\0\u32e0\0\u332a\0\u3374"+ + "\0\u33be\0\u3408\0\u3452\0\u349c\0\u34e6\0\u3530\0\u357a\0\u35c4"+ + "\0\u360e\0\u3658\0\u36a2\0\u36ec\0\u1926\0\u3736\0\u3780\0\u37ca"+ + "\0\u3814\0\u0456\0\u0456\0\u385e\0\u38a8\0\u38f2\0\u393c\0\u3986"+ + "\0\u39d0\0\u065c\0\u3a1a\0\u3a64\0\u3aae\0\u3af8\0\u3b42\0\u3b8c"+ + "\0\u3bd6\0\u3c20\0\u3c6a\0\u3cb4\0\u3cfe\0\u3d48\0\u3d92\0\u3ddc"+ + "\0\u0456\0\u0456\0\u0456\0\u3e26\0\u3e70\0\u3eba\0\u0456\0\u3f04"+ + "\0\u3f4e\0\u3f98\0\u3fe2\0\u402c\0\u4076\0\u40c0\0\u410a\0\u4154"+ + "\0\u419e\0\u41e8\0\u4232\0\u427c\0\u42c6\0\u4310\0\u435a\0\u43a4"+ + "\0\u43ee\0\u4438\0\u4482\0\u44cc\0\u4516\0\u065c\0\u4560\0\u45aa"+ + "\0\u45f4\0\u065c\0\u463e\0\u4688\0\u46d2\0\u471c\0\u4766\0\u0456"+ + "\0\u0456\0\u0456\0\u0456\0\u0456\0\u47b0\0\u2b5c\0\u2ba6\0\u47fa"+ + "\0\u0456\0\u4844\0\u488e\0\u48d8\0\u13f2\0\u4922\0\u496c\0\u49b6"+ + "\0\u4a00\0\u4a4a\0\u4a94\0\u4ade\0\u4b28\0\u4b72\0\u4bbc\0\u4c06"+ + "\0\u4c50\0\u4c9a\0\u4ce4\0\u4d2e\0\u4d78\0\u4dc2\0\u4e0c\0\u4e56"+ + "\0\u4ea0\0\u4eea\0\u4f34\0\u4f7e\0\u4fc8\0\u5012\0\u505c\0\u50a6"+ + "\0\u50f0\0\u513a\0\u5184\0\u51ce\0\u13f2\0\u5218\0\u5262\0\u52ac"+ + "\0\u13f2\0\u52f6\0\u5340\0\u538a\0\u53d4\0\u541e\0\u5468\0\u54b2"+ + "\0\u54fc\0\u5546\0\u0456\0\u0456\0\u5590\0\u55da\0\u5624\0\u566e"+ + "\0\u065c\0\u56b8\0\u5702\0\u574c\0\u5796\0\u57e0\0\u582a\0\u065c"+ + "\0\u5874\0\u065c\0\u58be\0\u5908\0\u5952\0\u599c\0\u065c\0\u59e6"+ + "\0\u5a30\0\u5a7a\0\u5ac4\0\u5b0e\0\u5b58\0\u5ba2\0\u5bec\0\u3f98"+ + "\0\u5c36\0\u5c80\0\u5cca\0\u5d14\0\u5d5e\0\u5da8\0\u5df2\0\u5e3c"+ + "\0\u5e86\0\u065c\0\u5ed0\0\u5f1a\0\u065c\0\u5f64\0\u5fae\0\u5ff8"+ + "\0\u6042\0\u608c\0\u60d6\0\u6120\0\u616a\0\u065c\0\u065c\0\u61b4"+ + "\0\u61fe\0\u6248\0\u065c\0\u6292\0\u065c\0\u62dc\0\u0456\0\u6326"+ + "\0\u6370\0\u63ba\0\u13f2\0\u6404\0\u644e\0\u6498\0\u64e2\0\u652c"+ + "\0\u6576\0\u13f2\0\u65c0\0\u13f2\0\u660a\0\u6654\0\u13f2\0\u669e"+ + "\0\u66e8\0\u6732\0\u677c\0\u67c6\0\u6810\0\u685a\0\u13f2\0\u68a4"+ + "\0\u68ee\0\u13f2\0\u6938\0\u6982\0\u69cc\0\u6a16\0\u6a60\0\u6aaa"+ + "\0\u6af4\0\u6b3e\0\u13f2\0\u13f2\0\u6b88\0\u6bd2\0\u6c1c\0\u13f2"+ + "\0\u6c66\0\u13f2\0\u6cb0\0\u6cfa\0\u6d44\0\u0456\0\u0456\0\u54fc"+ + "\0\u6d8e\0\u065c\0\u6dd8\0\u065c\0\u6e22\0\u6e6c\0\u6eb6\0\u6f00"+ + "\0\u6f4a\0\u6f94\0\u6fde\0\u065c\0\u7028\0\u7072\0\u70bc\0\u7106"+ + "\0\u7150\0\u719a\0\u71e4\0\u722e\0\u7278\0\u72c2\0\u730c\0\u7356"+ + "\0\u73a0\0\u065c\0\u065c\0\u73ea\0\u7434\0\u747e\0\u065c\0\u74c8"+ + "\0\u065c\0\u7512\0\u065c\0\u755c\0\u75a6\0\u75f0\0\u763a\0\u7684"+ + "\0\u065c\0\u13f2\0\u76ce\0\u13f2\0\u7718\0\u7762\0\u77ac\0\u77f6"+ + "\0\u7840\0\u788a\0\u78d4\0\u13f2\0\u791e\0\u7968\0\u79b2\0\u79fc"+ + "\0\u7a46\0\u7a90\0\u7ada\0\u13f2\0\u13f2\0\u7b24\0\u7b6e\0\u7bb8"+ + "\0\u13f2\0\u7c02\0\u13f2\0\u7c4c\0\u13f2\0\u7c96\0\u7ce0\0\u7d2a"+ + "\0\u7d74\0\u7dbe\0\u13f2\0\u0456\0\u6cfa\0\u7e08\0\u6d8e\0\u7e52"+ + "\0\u7e9c\0\u065c\0\u7ee6\0\u7f30\0\u7f7a\0\u065c\0\u7fc4\0\u800e"+ + "\0\u8058\0\u80a2\0\u80ec\0\u065c\0\u8136\0\u065c\0\u8180\0\u065c"+ + "\0\u81ca\0\u8214\0\u065c\0\u825e\0\u065c\0\u065c\0\u065c\0\u82a8"+ + "\0\u82f2\0\u833c\0\u13f2\0\u8386\0\u83d0\0\u841a\0\u13f2\0\u8464"+ + "\0\u84ae\0\u84f8\0\u8542\0\u858c\0\u13f2\0\u85d6\0\u13f2\0\u8620"+ + "\0\u13f2\0\u866a\0\u86b4\0\u13f2\0\u86fe\0\u13f2\0\u13f2\0\u13f2"+ + "\0\u8748\0\u7e08\0\u065c\0\u8792\0\u87dc\0\u8826\0\u065c\0\u065c"+ + "\0\u065c\0\u065c\0\u065c\0\u8870\0\u88ba\0\u8904\0\u894e\0\u8998"+ + "\0\u89e2\0\u8a2c\0\u13f2\0\u8a76\0\u8ac0\0\u8b0a\0\u13f2\0\u13f2"+ + "\0\u13f2\0\u13f2\0\u13f2\0\u8b54\0\u8b9e\0\u8be8\0\u8c32\0\u8c7c"+ + "\0\u8cc6\0\u8d10\0\u8d5a\0\u8da4\0\u8dee\0\u8e38\0\u065c\0\u065c"+ + "\0\u065c\0\u8e82\0\u8ecc\0\u065c\0\u8f16\0\u8f60\0\u8faa\0\u8ff4"+ + "\0\u13f2\0\u13f2\0\u13f2\0\u903e\0\u9088\0\u13f2\0\u90d2\0\u911c"+ + "\0\u065c\0\u065c\0\u9166\0\u065c\0\u91b0\0\u91fa\0\u13f2\0\u13f2"+ + "\0\u9244\0\u13f2\0\u065c\0\u065c\0\u928e\0\u13f2\0\u13f2\0\u92d8"+ + "\0\u9322\0\u936c\0\u065c\0\u13f2"; private static int [] zzUnpackRowMap() { - int [] result = new int[692]; + int [] result = new int[700]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -367,607 +370,624 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { private static final int [] ZZ_TRANS = zzUnpackTrans(); private static final String ZZ_TRANS_PACKED_0 = - "\1\16\3\17\1\20\1\21\1\22\1\23\1\24\1\25"+ - "\1\26\1\27\1\30\2\27\1\31\1\27\1\32\1\27"+ - "\1\33\1\27\1\34\1\27\1\35\1\27\1\36\1\37"+ - "\1\27\1\40\1\41\1\27\1\30\2\27\1\42\1\27"+ - "\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\27"+ - "\1\52\1\53\1\54\2\27\1\55\1\27\1\56\3\27"+ - "\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66"+ + "\1\20\3\21\1\22\1\21\1\23\1\24\1\25\1\26"+ + "\1\27\1\30\1\31\2\30\1\32\1\30\1\33\1\30"+ + "\1\34\1\30\1\35\1\30\1\36\1\30\1\37\1\40"+ + "\1\30\1\41\1\42\1\30\1\31\2\30\1\43\1\30"+ + "\1\44\1\45\1\46\1\47\1\50\1\51\1\30\1\52"+ + "\1\53\1\54\2\30\1\55\1\30\1\56\3\30\1\57"+ + "\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67"+ + "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+ + "\1\100\1\101\1\102\1\20\3\103\1\22\1\103\1\23"+ + "\1\24\1\25\1\26\1\27\1\30\1\31\2\30\1\32"+ + "\1\30\1\33\1\30\1\34\1\30\1\35\1\30\1\36"+ + "\1\30\1\37\1\40\1\30\1\41\1\42\1\30\1\31"+ + "\2\30\1\43\1\30\1\44\1\45\1\46\1\47\1\50"+ + "\1\51\1\30\1\52\1\53\1\54\2\30\1\55\1\30"+ + "\1\56\3\30\1\57\1\104\1\61\1\62\1\105\1\106"+ + "\1\107\1\66\1\67\1\70\1\71\1\72\1\73\1\74"+ + "\1\75\1\76\1\77\1\100\1\101\1\102\1\20\3\21"+ + "\1\22\1\21\1\23\1\24\1\25\1\26\1\27\1\30"+ + "\1\31\2\30\1\32\1\30\1\33\1\30\1\34\1\30"+ + "\1\35\1\30\1\36\1\30\1\37\1\40\1\30\1\41"+ + "\1\42\1\30\1\31\2\30\1\43\1\30\1\44\1\45"+ + "\1\46\1\47\1\50\1\51\1\30\1\52\1\53\1\54"+ + "\2\30\1\55\1\30\1\56\3\30\1\57\1\104\1\61"+ + "\1\62\1\63\1\64\1\110\1\66\1\67\1\70\1\71"+ + "\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\101"+ + "\1\102\1\20\3\21\1\22\1\21\1\23\1\24\1\25"+ + "\1\26\1\27\1\30\1\31\2\30\1\32\1\30\1\33"+ + "\1\30\1\34\1\30\1\35\1\30\1\36\1\30\1\37"+ + "\1\40\1\30\1\41\1\42\1\30\1\31\2\30\1\43"+ + "\1\30\1\44\1\45\1\46\1\47\1\50\1\51\1\30"+ + "\1\52\1\53\1\54\2\30\1\55\1\30\1\56\3\30"+ + "\1\57\1\104\1\61\1\62\1\63\1\64\1\111\1\66"+ "\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\76"+ - "\1\77\1\100\1\101\1\16\3\17\1\20\1\21\1\22"+ - "\1\23\1\24\1\25\1\26\1\27\1\30\2\27\1\31"+ - "\1\27\1\32\1\27\1\33\1\27\1\34\1\27\1\35"+ - "\1\27\1\36\1\37\1\27\1\40\1\41\1\27\1\30"+ - "\2\27\1\42\1\27\1\43\1\44\1\45\1\102\1\47"+ - "\1\50\1\51\1\27\1\52\1\53\1\54\2\27\1\55"+ - "\1\27\1\56\3\27\1\57\1\60\1\61\1\62\1\63"+ - "\1\64\1\65\1\66\1\67\1\70\1\71\1\72\1\73"+ - "\1\74\1\75\1\76\1\77\1\100\1\101\4\103\2\20"+ - "\1\104\1\105\34\103\1\106\45\103\2\107\2\110\2\107"+ - "\1\111\35\107\1\112\1\107\1\113\43\107\6\114\1\115"+ - "\35\114\1\112\1\114\1\116\43\114\6\117\1\120\1\121"+ - "\34\117\1\122\45\117\7\123\1\124\34\123\1\125\45\123"+ - "\13\126\1\127\1\126\2\127\1\130\1\127\1\131\1\127"+ - "\1\132\1\127\1\133\1\127\1\134\1\127\2\126\1\127"+ - "\1\126\1\135\1\127\1\126\2\127\1\126\1\127\4\126"+ - "\1\136\1\137\1\140\1\127\1\141\1\142\1\143\2\127"+ - "\1\144\1\127\1\145\3\127\1\146\1\147\21\126\42\150"+ - "\1\151\47\150\13\152\1\127\1\152\14\127\2\152\1\127"+ - "\1\152\2\127\1\152\2\127\1\152\1\127\4\152\20\127"+ - "\22\152\1\153\5\154\1\155\1\156\102\153\1\157\5\154"+ - "\1\160\103\157\1\161\5\154\1\162\103\161\113\0\5\17"+ - "\1\163\104\0\2\20\1\164\1\0\1\20\113\0\1\165"+ - "\1\166\111\0\1\167\31\0\1\170\26\0\1\171\32\0"+ - "\1\172\170\0\1\173\33\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\36\0\1\30\2\174\2\175\2\176"+ - "\2\177\2\200\2\201\2\0\1\202\1\30\2\0\1\30"+ - "\2\0\1\203\62\0\6\27\1\204\1\27\1\205\5\27"+ - "\2\0\7\27\1\0\2\27\3\0\1\27\1\206\6\27"+ - "\1\207\7\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\10\27\1\210\7\27\35\0\4\27\1\211\11\27"+ - "\2\0\7\27\1\0\2\27\3\0\7\27\1\212\1\27"+ - "\1\213\6\27\35\0\14\27\1\214\1\27\2\0\7\27"+ - "\1\0\2\27\3\0\10\27\1\215\7\27\35\0\6\27"+ - "\1\216\7\27\2\0\5\27\1\217\1\27\1\0\2\27"+ - "\3\0\11\27\1\220\6\27\53\0\1\221\37\0\1\222"+ - "\52\0\1\223\36\0\1\224\10\0\1\225\23\0\1\30"+ - "\2\174\2\175\2\176\2\177\2\200\2\201\2\0\1\202"+ - "\1\30\2\226\1\30\2\227\1\203\62\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\6\27\1\230\1\27\1\231"+ - "\3\27\1\232\3\27\64\0\1\233\44\0\1\234\11\0"+ - "\1\235\3\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\22\0\2\236\2\0\2\236\1\237\36\236\1\240"+ - "\44\236\2\241\2\0\2\241\1\242\35\241\1\0\1\241"+ - "\1\243\43\241\13\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\1\27\1\244\4\27\1\245\3\27\1\246\5\27"+ - "\35\0\16\27\2\0\2\27\1\247\4\27\1\0\2\27"+ - "\3\0\4\27\1\250\13\27\35\0\6\27\1\251\7\27"+ - "\2\0\7\27\1\0\2\27\3\0\1\27\1\252\6\27"+ - "\1\253\4\27\1\254\2\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\5\27\1\255\4\27\1\256\1\27"+ - "\1\257\1\260\1\27\1\261\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\6\27\1\262\6\27\1\263\2\27"+ - "\35\0\14\27\1\264\1\27\2\0\7\27\1\0\2\27"+ - "\3\0\20\27\35\0\14\27\1\265\1\27\2\0\7\27"+ - "\1\0\2\27\3\0\1\27\1\266\10\27\1\267\5\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\10\27"+ - "\1\270\7\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\15\27\1\271\2\27\113\0\1\272\11\0\1\273"+ - "\50\0\1\274\26\0\1\275\5\0\1\276\111\0\1\277"+ - "\103\0\1\300\7\0\1\301\101\0\1\302\10\0\1\303"+ - "\100\0\1\304\111\0\1\305\111\0\1\306\14\0\1\307"+ - "\74\0\1\310\15\0\1\311\11\0\2\312\60\0\1\313"+ - "\27\0\1\314\102\0\2\107\2\0\2\107\1\0\35\107"+ - "\1\0\1\107\1\0\43\107\4\315\2\316\1\317\103\315"+ - "\6\114\1\0\35\114\1\0\1\114\1\0\43\114\1\315"+ - "\3\0\1\315\1\0\104\315\46\0\1\320\43\0\6\117"+ - "\2\0\34\117\1\0\45\117\7\0\1\321\102\0\13\322"+ - "\1\0\1\322\14\0\2\322\1\0\1\322\2\0\1\322"+ - "\2\0\1\322\1\0\4\322\21\0\21\322\7\123\1\0"+ - "\34\123\1\0\45\123\44\0\1\323\45\0\7\324\1\325"+ - "\3\324\1\0\1\324\14\0\2\324\1\0\1\324\2\0"+ - "\1\324\2\0\1\324\1\0\1\325\3\324\21\0\21\324"+ - "\13\0\16\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\6\127\1\326\1\127\1\327\5\127\2\0\7\127"+ - "\1\0\1\127\4\0\1\127\1\330\6\127\1\331\7\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\10\127"+ - "\1\332\7\127\35\0\4\127\1\333\11\127\2\0\7\127"+ - "\1\0\1\127\4\0\7\127\1\334\1\127\1\335\6\127"+ - "\35\0\14\127\1\336\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\10\127\1\337\7\127\35\0\6\127\1\340\7\127"+ - "\2\0\5\127\1\341\1\127\1\0\1\127\4\0\11\127"+ - "\1\342\6\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\6\127\1\343\1\127\1\344\3\127\1\345\3\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\1\127"+ - "\1\346\4\127\1\347\3\127\1\350\5\127\35\0\16\127"+ - "\2\0\2\127\1\351\4\127\1\0\1\127\4\0\4\127"+ - "\1\352\13\127\35\0\6\127\1\353\7\127\2\0\7\127"+ - "\1\0\1\127\4\0\1\127\1\354\6\127\1\355\4\127"+ - "\1\356\2\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\5\127\1\357\4\127\1\360\1\127\1\361\1\362"+ - "\1\127\1\363\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\6\127\1\364\6\127\1\365\2\127\35\0\14\127"+ - "\1\366\1\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\14\127\1\367\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\1\127\1\370\10\127\1\371\5\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\10\127\1\372\7\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\15\127"+ - "\1\373\2\127\35\0\1\374\1\0\14\374\2\0\1\374"+ - "\1\0\2\374\1\0\2\374\1\0\1\374\4\0\20\374"+ - "\23\0\5\154\1\375\104\0\3\154\1\0\1\154\113\0"+ - "\1\376\1\377\102\0\3\17\1\0\1\17\106\0\1\20"+ - "\107\0\2\165\2\0\106\165\10\u0100\1\u0101\101\u0100\71\0"+ - "\1\u0102\20\0\2\172\2\0\106\172\71\0\1\u0103\34\0"+ - "\1\u0104\14\0\2\u0105\1\0\1\u0104\2\0\1\u0104\66\0"+ - "\1\30\16\0\1\202\1\30\2\0\1\30\66\0\1\u0106"+ - "\17\0\1\u0106\2\0\1\u0106\65\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\10\27\1\u0107\7\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\11\27\1\u0108\6\27"+ - "\35\0\6\27\1\u0109\7\27\2\0\7\27\1\0\2\27"+ - "\3\0\20\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\6\27\1\u010a\11\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\11\27\1\u010b\6\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\1\u010c\17\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\4\27\1\u010d"+ - "\1\u010e\12\27\35\0\4\27\1\u010f\11\27\2\0\7\27"+ - "\1\0\2\27\3\0\20\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\12\27\1\u0110\5\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\4\27\1\u0111\13\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\5\27"+ - "\1\u0112\12\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\12\27\1\u0113\5\27\56\0\1\u0114\2\0\1\u0114"+ - "\65\0\2\u0115\2\0\2\u0115\4\0\4\u0115\3\0\4\u0115"+ - "\11\0\2\u0115\52\0\14\27\1\u0116\1\27\2\0\7\27"+ - "\1\0\2\27\3\0\20\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\10\27\1\u0117\7\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\5\27\1\u0118\12\27"+ - "\64\0\1\u0119\36\0\1\u011a\10\0\2\236\2\0\2\236"+ - "\1\237\36\236\1\u011b\50\236\2\u011c\1\u011d\103\236\45\0"+ - "\1\u011e\44\0\2\241\2\0\2\241\1\242\35\241\1\0"+ - "\1\241\1\u011f\47\241\2\u0120\1\u0121\103\241\46\0\1\u0122"+ - "\56\0\16\27\2\0\7\27\1\0\2\27\3\0\2\27"+ - "\1\u0123\15\27\35\0\10\27\1\u0124\5\27\2\0\7\27"+ - "\1\0\2\27\3\0\10\27\1\u0125\7\27\35\0\16\27"+ - "\2\0\2\27\1\u0126\4\27\1\0\2\27\3\0\20\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\4\27"+ - "\1\u0127\13\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\4\27\1\u0128\13\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\1\27\1\u0129\16\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\4\27\1\u012a\1\u012b"+ - "\12\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\11\27\1\u012c\6\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\1\27\1\u012d\16\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\1\27\1\u012e\4\27\1\u012f"+ - "\11\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\1\u0130\17\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\11\27\1\u0131\6\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\10\27\1\u0132\7\27\35\0\10\27"+ - "\1\u0133\5\27\2\0\7\27\1\0\2\27\3\0\20\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\1\27"+ - "\1\u0134\10\27\1\u0135\1\27\1\u0136\3\27\35\0\10\27"+ - "\1\u0137\5\27\2\0\7\27\1\0\2\27\3\0\6\27"+ - "\1\u0138\11\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\5\27\1\u0139\12\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\17\27\1\u013a\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\5\27\1\u013b\12\27\35\0"+ - "\6\27\1\u013c\7\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\35\0\6\27\1\u013d\1\27\1\u013e\5\27\2\0"+ - "\7\27\1\0\2\27\3\0\20\27\35\0\10\27\1\u013f"+ - "\5\27\2\0\7\27\1\0\2\27\3\0\20\27\113\0"+ - "\1\u0140\11\0\1\u0141\110\0\1\u0142\100\0\1\u0143\111\0"+ - "\1\u0144\10\0\1\u0145\11\0\2\315\2\u0146\1\u0147\104\0"+ - "\2\u0146\1\u0148\1\0\1\u0146\152\0\1\u0149\56\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\10\127\1\u014a\7\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\11\127"+ - "\1\u014b\6\127\35\0\6\127\1\u014c\7\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\6\127\1\u014d\11\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\11\127\1\u014e\6\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\1\u014f"+ - "\17\127\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\4\127\1\u0150\1\u0151\12\127\35\0\4\127\1\u0152\11\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\12\127\1\u0153\5\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\4\127"+ - "\1\u0154\13\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\5\127\1\u0155\12\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\12\127\1\u0156\5\127\35\0\14\127"+ - "\1\u0157\1\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\10\127"+ - "\1\u0158\7\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\5\127\1\u0159\12\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\2\127\1\u015a\15\127\35\0\10\127"+ - "\1\u015b\5\127\2\0\7\127\1\0\1\127\4\0\10\127"+ - "\1\u015c\7\127\35\0\16\127\2\0\2\127\1\u015d\4\127"+ - "\1\0\1\127\4\0\20\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\4\127\1\u015e\13\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\4\127\1\u015f\13\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\1\127"+ - "\1\u0160\16\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\4\127\1\u0161\1\u0162\12\127\35\0\16\127\2\0"+ - "\7\127\1\0\1\127\4\0\11\127\1\u0163\6\127\35\0"+ - "\16\127\2\0\7\127\1\0\1\127\4\0\1\127\1\u0164"+ - "\16\127\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\1\127\1\u0165\4\127\1\u0166\11\127\35\0\16\127\2\0"+ - "\7\127\1\0\1\127\4\0\1\u0167\17\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\11\127\1\u0168\6\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\10\127"+ - "\1\u0169\7\127\35\0\10\127\1\u016a\5\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\1\127\1\u016b\10\127\1\u016c\1\127"+ - "\1\u016d\3\127\35\0\10\127\1\u016e\5\127\2\0\7\127"+ - "\1\0\1\127\4\0\6\127\1\u016f\11\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\5\127\1\u0170\12\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\17\127"+ - "\1\u0171\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\5\127\1\u0172\12\127\35\0\6\127\1\u0173\7\127\2\0"+ - "\7\127\1\0\1\127\4\0\20\127\35\0\6\127\1\u0174"+ - "\1\127\1\u0175\5\127\2\0\7\127\1\0\1\127\4\0"+ - "\20\127\35\0\10\127\1\u0176\5\127\2\0\7\127\1\0"+ - "\1\127\4\0\20\127\35\0\16\374\2\0\7\374\1\0"+ - "\1\374\4\0\20\374\22\0\2\376\2\0\106\376\10\u0177"+ - "\1\u0178\101\u0177\10\u0100\1\u0179\101\u0100\7\u017a\1\u017b\1\u0101"+ - "\101\u017a\14\0\1\u0104\2\u017c\2\175\4\0\2\200\4\0"+ - "\1\u0105\1\u0104\2\0\1\u0104\66\0\1\u0104\17\0\1\u0104"+ - "\2\0\1\u0104\66\0\1\u0106\2\u017c\2\175\4\0\2\200"+ - "\2\201\2\0\1\u017d\1\u0106\2\0\1\u0106\65\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\1\27\1\u017e\16\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\1\27"+ - "\1\u017f\16\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\4\27\1\u0180\13\27\35\0\2\27\1\u0181\13\27"+ - "\2\0\7\27\1\0\2\27\3\0\20\27\35\0\6\27"+ - "\1\u0182\7\27\2\0\7\27\1\0\2\27\3\0\10\27"+ - "\1\u0183\7\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\5\27\1\u0184\12\27\35\0\14\27\1\u0185\1\27"+ - "\2\0\7\27\1\0\2\27\3\0\20\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\1\27\1\u0186\16\27"+ - "\35\0\16\27\2\0\2\27\1\u0187\4\27\1\0\2\27"+ - "\3\0\20\27\35\0\14\27\1\u0188\1\27\2\0\7\27"+ - "\1\0\2\27\3\0\20\27\35\0\14\27\1\u0189\1\27"+ - "\2\0\7\27\1\0\2\27\3\0\20\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\7\27\1\u018a\10\27"+ - "\37\0\2\174\2\0\2\176\2\177\6\0\1\u018b\1\u0114"+ - "\2\0\1\u0114\65\0\2\u0115\2\174\2\u0115\2\176\2\177"+ - "\4\u0115\2\0\1\u018c\4\u0115\11\0\2\u0115\52\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\1\27\1\u018d\16\27"+ - "\35\0\6\27\1\u018e\7\27\2\0\7\27\1\0\2\27"+ - "\3\0\20\27\35\0\14\27\1\u018f\1\27\2\0\7\27"+ - "\1\0\2\27\3\0\20\27\22\0\4\236\2\u011c\1\u0190"+ - "\36\236\1\u011b\45\236\1\u011c\1\u0191\1\u0192\1\236\1\u011c"+ - "\1\237\36\236\1\u011b\44\236\6\u011e\1\u0193\36\u011e\1\u0194"+ - "\44\u011e\4\241\2\u0120\1\u0195\35\241\1\0\1\241\1\u011f"+ - "\44\241\1\u0120\1\u0196\1\u0197\1\241\1\u0120\1\242\35\241"+ - "\1\0\1\241\1\u011f\43\241\6\u0198\1\u0199\35\u0198\1\0"+ - "\1\u0198\1\u019a\43\u0198\13\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\3\27\1\u019b\14\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\13\27\1\u019c\4\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\5\27\1\u019d"+ - "\12\27\35\0\6\27\1\u019e\7\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\5\27\1\u019f\12\27\35\0\14\27\1\u01a0"+ - "\1\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\4\27\1\u01a1"+ - "\13\27\35\0\14\27\1\u01a2\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\2\27\1\u01a3\15\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\5\27\1\u01a4\12\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\6\27\1\u01a5"+ - "\11\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\5\27\1\u01a6\12\27\35\0\10\27\1\u01a7\5\27\2\0"+ - "\7\27\1\0\2\27\3\0\20\27\35\0\14\27\1\u01a8"+ - "\1\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\2\27\1\u01a9"+ - "\15\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\6\27\1\u01aa\11\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\5\27\1\u01ab\12\27\35\0\10\27\1\u01ac"+ - "\5\27\2\0\7\27\1\0\2\27\3\0\11\27\1\u01ad"+ - "\6\27\35\0\14\27\1\u01ae\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\4\27\1\u01af\13\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\10\27\1\u01b0\7\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\12\27\1\u01b1"+ - "\5\27\35\0\10\27\1\u01b2\5\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\6\27\1\u01b3\7\27\2\0"+ - "\7\27\1\0\2\27\3\0\20\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\1\27\1\u01b4\16\27\35\0"+ - "\12\27\1\u01b5\3\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\35\0\6\27\1\u01b6\7\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\113\0\1\u01b7\22\0\1\316\1\315"+ - "\2\u0146\1\u0147\116\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\1\127\1\u01b8\16\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\1\127\1\u01b9\16\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\4\127\1\u01ba\13\127"+ - "\35\0\2\127\1\u01bb\13\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\6\127\1\u01bc\7\127\2\0\7\127"+ - "\1\0\1\127\4\0\10\127\1\u01bd\7\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\5\127\1\u01be\12\127"+ - "\35\0\14\127\1\u01bf\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\1\127\1\u01c0\16\127\35\0\16\127\2\0\2\127"+ - "\1\u01c1\4\127\1\0\1\127\4\0\20\127\35\0\14\127"+ - "\1\u01c2\1\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\14\127\1\u01c3\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\7\127\1\u01c4\10\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\1\127\1\u01c5\16\127\35\0\6\127"+ - "\1\u01c6\7\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\14\127\1\u01c7\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\3\127\1\u01c8\14\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\13\127\1\u01c9\4\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\5\127\1\u01ca\12\127"+ - "\35\0\6\127\1\u01cb\7\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\5\127\1\u01cc\12\127\35\0\14\127\1\u01cd\1\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\4\127\1\u01ce\13\127"+ - "\35\0\14\127\1\u01cf\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\2\127\1\u01d0\15\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\5\127\1\u01d1\12\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\6\127\1\u01d2\11\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\5\127"+ - "\1\u01d3\12\127\35\0\10\127\1\u01d4\5\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\14\127\1\u01d5\1\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\2\127\1\u01d6\15\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\6\127"+ - "\1\u01d7\11\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\5\127\1\u01d8\12\127\35\0\10\127\1\u01d9\5\127"+ - "\2\0\7\127\1\0\1\127\4\0\11\127\1\u01da\6\127"+ - "\35\0\14\127\1\u01db\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\4\127\1\u01dc\13\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\10\127\1\u01dd\7\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\12\127\1\u01de\5\127"+ - "\35\0\10\127\1\u01df\5\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\6\127\1\u01e0\7\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\1\127\1\u01e1\16\127\35\0\12\127"+ - "\1\u01e2\3\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\6\127\1\u01e3\7\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\22\0\10\u0177\1\u01e4\101\u0177\7\u01e5\1\u01e6"+ - "\1\u0178\101\u01e5\7\u0100\1\u01e7\1\u01e8\101\u0100\10\u017a\1\u01e9"+ - "\101\u017a\14\0\1\u0106\16\0\1\u017d\1\u0106\2\0\1\u0106"+ - "\65\0\16\27\2\0\7\27\1\0\2\27\3\0\5\27"+ - "\1\u01ea\12\27\35\0\6\27\1\u01eb\7\27\2\0\7\27"+ - "\1\0\2\27\3\0\20\27\35\0\14\27\1\u01ec\1\27"+ - "\2\0\7\27\1\0\2\27\3\0\20\27\35\0\14\27"+ - "\1\u01ed\1\27\2\0\7\27\1\0\2\27\3\0\20\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\6\27"+ - "\1\u01ee\11\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\1\27\1\u01ef\16\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\6\27\1\u01f0\11\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\12\27\1\u01f1\5\27"+ - "\35\0\6\27\1\u01f2\7\27\2\0\7\27\1\0\2\27"+ - "\3\0\20\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\11\27\1\u01f3\6\27\55\0\1\u018b\1\u0114\2\0"+ - "\1\u0114\65\0\2\u0115\2\0\2\u0115\4\0\4\u0115\2\0"+ - "\1\u018c\4\u0115\11\0\2\u0115\52\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\3\27\1\u01f4\14\27\35\0\14\27"+ - "\1\u01f5\1\27\2\0\7\27\1\0\2\27\3\0\20\27"+ - "\22\0\1\236\2\u011c\1\u01f6\2\u011c\1\u011d\103\236\2\0"+ - "\2\236\2\u0191\1\u01f7\105\0\1\u011c\1\236\2\u0191\1\u01f7"+ - "\103\0\157\u011e\1\u01f8\44\u011e\1\241\2\u0120\1\u01f9\2\u0120"+ - "\1\u0121\103\241\2\0\2\241\2\u0196\1\u01fa\105\0\1\u0120"+ - "\1\241\2\u0196\1\u01fa\103\0\120\u0198\1\0\35\u0198\1\0"+ - "\1\u0198\1\u01fb\43\u0198\13\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\1\27\1\u01fc\16\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\1\27\1\u01fd\16\27\35\0"+ - "\14\27\1\u01fe\1\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\35\0\10\27\1\u01ff\5\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\6\27\1\u0200\11\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\6\27\1\u0201\11\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\4\27\1\u0202"+ - "\13\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\15\27\1\u0203\2\27\35\0\10\27\1\u0204\5\27\2\0"+ - "\7\27\1\0\2\27\3\0\20\27\35\0\10\27\1\u0205"+ - "\5\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\2\27\1\u0206"+ - "\15\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\6\27\1\u0207\11\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\15\27\1\u0208\2\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\5\27\1\u0209\12\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\2\27\1\u020a"+ - "\15\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\5\27\1\u020b\12\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\4\27\1\u020c\13\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\17\27\1\u020d\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\6\27\1\u020e\11\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\13\27"+ - "\1\u020f\4\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\5\27\1\u0210\12\27\35\0\14\27\1\u0211\1\27"+ - "\2\0\7\27\1\0\2\27\3\0\20\27\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\5\127\1\u0212\12\127"+ - "\35\0\6\127\1\u0213\7\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\14\127\1\u0214\1\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\14\127\1\u0215\1\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\6\127\1\u0216\11\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\1\127"+ - "\1\u0217\16\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\6\127\1\u0218\11\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\12\127\1\u0219\5\127\35\0\6\127"+ - "\1\u021a\7\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\11\127"+ - "\1\u021b\6\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\3\127\1\u021c\14\127\35\0\14\127\1\u021d\1\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\1\127\1\u021e\16\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\1\127"+ - "\1\u021f\16\127\35\0\14\127\1\u0220\1\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\10\127\1\u0221\5\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\6\127\1\u0222\11\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\6\127"+ - "\1\u0223\11\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\4\127\1\u0224\13\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\15\127\1\u0225\2\127\35\0\10\127"+ - "\1\u0226\5\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\10\127\1\u0227\5\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\2\127\1\u0228\15\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\6\127\1\u0229\11\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\15\127\1\u022a\2\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\5\127"+ - "\1\u022b\12\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\2\127\1\u022c\15\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\5\127\1\u022d\12\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\4\127\1\u022e\13\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\17\127"+ - "\1\u022f\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\6\127\1\u0230\11\127\35\0\16\127\2\0\7\127\1\0"+ - "\1\127\4\0\13\127\1\u0231\4\127\35\0\16\127\2\0"+ - "\7\127\1\0\1\127\4\0\5\127\1\u0232\12\127\35\0"+ - "\14\127\1\u0233\1\127\2\0\7\127\1\0\1\127\4\0"+ - "\20\127\22\0\7\u0177\1\u0234\1\u0235\101\u0177\10\u01e5\1\u0236"+ - "\101\u01e5\7\u017a\1\u017b\1\u0237\101\u017a\13\0\6\27\1\u0238"+ - "\7\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\7\27\1\u0239"+ - "\10\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\5\27\1\u023a\12\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\11\27\1\u023b\6\27\35\0\4\27\1\u023c"+ - "\11\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\6\27\1\u023d\7\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\35\0\14\27\1\u023e\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\12\27\1\u023f\3\27\2\0"+ - "\7\27\1\0\2\27\3\0\20\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\1\27\1\u0240\16\27\22\0"+ - "\2\236\1\u011c\1\236\2\u011c\1\u0190\36\236\1\u011b\44\236"+ - "\1\0\2\u0191\1\u0192\1\0\1\u0191\104\0\45\u011e\1\u011b"+ - "\44\u011e\2\241\1\u0120\1\241\2\u0120\1\u0195\35\241\1\0"+ - "\1\241\1\u011f\43\241\1\0\2\u0196\1\u0197\1\0\1\u0196"+ - "\104\0\6\u0198\1\0\35\u0198\1\0\1\u0198\1\u011f\43\u0198"+ - "\13\0\2\27\1\u0241\13\27\2\0\7\27\1\0\2\27"+ - "\3\0\20\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\5\27\1\u0242\12\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\2\27\1\u0243\15\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\2\27\1\u0244\15\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\1\27"+ - "\1\u0245\16\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\5\27\1\u0246\12\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\11\27\1\u0247\6\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\2\27\1\u0248\15\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\5\27"+ - "\1\u0249\12\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\6\27\1\u024a\11\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\15\27\1\u024b\2\27\35\0\10\27"+ - "\1\u024c\5\27\2\0\7\27\1\0\2\27\3\0\20\27"+ - "\35\0\16\27\2\0\7\27\1\0\2\27\3\0\4\27"+ - "\1\u024d\13\27\35\0\16\27\2\0\7\27\1\0\2\27"+ - "\3\0\11\27\1\u024e\6\27\35\0\14\27\1\u024f\1\27"+ - "\2\0\7\27\1\0\2\27\3\0\20\27\35\0\10\27"+ - "\1\u0250\5\27\2\0\7\27\1\0\2\27\3\0\20\27"+ - "\35\0\6\127\1\u0251\7\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\7\127\1\u0252\10\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\5\127\1\u0253\12\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\11\127\1\u0254\6\127"+ - "\35\0\4\127\1\u0255\11\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\6\127\1\u0256\7\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\14\127\1\u0257\1\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\12\127"+ - "\1\u0258\3\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\1\127"+ - "\1\u0259\16\127\35\0\2\127\1\u025a\13\127\2\0\7\127"+ - "\1\0\1\127\4\0\20\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\5\127\1\u025b\12\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\2\127\1\u025c\15\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\2\127"+ - "\1\u025d\15\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\1\127\1\u025e\16\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\5\127\1\u025f\12\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\11\127\1\u0260\6\127"+ - "\35\0\16\127\2\0\7\127\1\0\1\127\4\0\2\127"+ - "\1\u0261\15\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\5\127\1\u0262\12\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\6\127\1\u0263\11\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\15\127\1\u0264\2\127"+ - "\35\0\10\127\1\u0265\5\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\4\127\1\u0266\13\127\35\0\16\127\2\0\7\127"+ - "\1\0\1\127\4\0\11\127\1\u0267\6\127\35\0\14\127"+ - "\1\u0268\1\127\2\0\7\127\1\0\1\127\4\0\20\127"+ - "\35\0\10\127\1\u0269\5\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\22\0\7\u01e5\1\u01e6\1\u026a\101\u01e5\13\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\14\27\1\u026b"+ - "\3\27\35\0\14\27\1\u026c\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\2\27\1\u026d\15\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\1\27\1\u026e\16\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\5\27\1\u026f"+ - "\12\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\4\27\1\u0270\13\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\11\27\1\u0271\6\27\35\0\14\27\1\u0272"+ - "\1\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\14\27\1\u0273\1\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\5\27\1\u0274\12\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\2\27\1\u0275\15\27\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\12\27\1\u0276\5\27\35\0"+ - "\4\27\1\u0277\11\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\10\27\1\u0278\7\27\35\0\14\27\1\u0279\1\27\2\0"+ - "\7\27\1\0\2\27\3\0\20\27\35\0\6\27\1\u027a"+ - "\7\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\16\127\2\0\7\127\1\0\1\127\4\0\14\127\1\u027b"+ - "\3\127\35\0\14\127\1\u027c\1\127\2\0\7\127\1\0"+ - "\1\127\4\0\20\127\35\0\16\127\2\0\7\127\1\0"+ - "\1\127\4\0\2\127\1\u027d\15\127\35\0\16\127\2\0"+ - "\7\127\1\0\1\127\4\0\1\127\1\u027e\16\127\35\0"+ - "\16\127\2\0\7\127\1\0\1\127\4\0\5\127\1\u027f"+ - "\12\127\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\4\127\1\u0280\13\127\35\0\16\127\2\0\7\127\1\0"+ - "\1\127\4\0\11\127\1\u0281\6\127\35\0\14\127\1\u0282"+ - "\1\127\2\0\7\127\1\0\1\127\4\0\20\127\35\0"+ - "\14\127\1\u0283\1\127\2\0\7\127\1\0\1\127\4\0"+ - "\20\127\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\5\127\1\u0284\12\127\35\0\16\127\2\0\7\127\1\0"+ - "\1\127\4\0\2\127\1\u0285\15\127\35\0\16\127\2\0"+ - "\7\127\1\0\1\127\4\0\12\127\1\u0286\5\127\35\0"+ - "\4\127\1\u0287\11\127\2\0\7\127\1\0\1\127\4\0"+ - "\20\127\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\10\127\1\u0288\7\127\35\0\14\127\1\u0289\1\127\2\0"+ - "\7\127\1\0\1\127\4\0\20\127\35\0\6\127\1\u028a"+ - "\7\127\2\0\7\127\1\0\1\127\4\0\20\127\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\11\27\1\u028b"+ - "\6\27\35\0\14\27\1\u028c\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\2\27\1\u028d\15\27\35\0\14\27\1\u028e"+ - "\1\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\5\27\1\u028f"+ - "\12\27\35\0\14\27\1\u0290\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\16\27\2\0\7\27\1\0"+ - "\2\27\3\0\1\u0291\17\27\35\0\16\27\2\0\7\27"+ - "\1\0\2\27\3\0\11\27\1\u0292\6\27\35\0\16\27"+ - "\2\0\7\27\1\0\2\27\3\0\11\27\1\u0293\6\27"+ - "\35\0\14\27\1\u0294\1\27\2\0\7\27\1\0\2\27"+ - "\3\0\20\27\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\11\127\1\u0295\6\127\35\0\14\127\1\u0296\1\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\2\127\1\u0297\15\127"+ - "\35\0\14\127\1\u0298\1\127\2\0\7\127\1\0\1\127"+ - "\4\0\20\127\35\0\16\127\2\0\7\127\1\0\1\127"+ - "\4\0\5\127\1\u0299\12\127\35\0\14\127\1\u029a\1\127"+ - "\2\0\7\127\1\0\1\127\4\0\20\127\35\0\16\127"+ - "\2\0\7\127\1\0\1\127\4\0\1\u029b\17\127\35\0"+ - "\16\127\2\0\7\127\1\0\1\127\4\0\11\127\1\u029c"+ - "\6\127\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\11\127\1\u029d\6\127\35\0\14\127\1\u029e\1\127\2\0"+ - "\7\127\1\0\1\127\4\0\20\127\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\5\27\1\u029f\12\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\10\27\1\u02a0"+ - "\7\27\35\0\14\27\1\u02a1\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\12\27\1\u02a2\3\27\2\0"+ - "\7\27\1\0\2\27\3\0\20\27\35\0\10\27\1\u02a3"+ - "\5\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\16\27\2\0\7\27\1\0\2\27\3\0\5\27\1\u02a4"+ - "\12\27\35\0\16\127\2\0\7\127\1\0\1\127\4\0"+ - "\5\127\1\u02a5\12\127\35\0\16\127\2\0\7\127\1\0"+ - "\1\127\4\0\10\127\1\u02a6\7\127\35\0\14\127\1\u02a7"+ - "\1\127\2\0\7\127\1\0\1\127\4\0\20\127\35\0"+ - "\12\127\1\u02a8\3\127\2\0\7\127\1\0\1\127\4\0"+ - "\20\127\35\0\10\127\1\u02a9\5\127\2\0\7\127\1\0"+ - "\1\127\4\0\20\127\35\0\16\127\2\0\7\127\1\0"+ - "\1\127\4\0\5\127\1\u02aa\12\127\35\0\16\27\2\0"+ - "\7\27\1\0\2\27\3\0\4\27\1\u02ab\13\27\35\0"+ - "\4\27\1\u02ac\11\27\2\0\7\27\1\0\2\27\3\0"+ - "\20\27\35\0\16\27\2\0\7\27\1\0\2\27\3\0"+ - "\16\27\1\u02ad\1\27\35\0\16\127\2\0\7\127\1\0"+ - "\1\127\4\0\4\127\1\u02ae\13\127\35\0\4\127\1\u02af"+ - "\11\127\2\0\7\127\1\0\1\127\4\0\20\127\35\0"+ - "\16\127\2\0\7\127\1\0\1\127\4\0\16\127\1\u02b0"+ - "\1\127\35\0\14\27\1\u02b1\1\27\2\0\7\27\1\0"+ - "\2\27\3\0\20\27\35\0\14\127\1\u02b2\1\127\2\0"+ - "\7\127\1\0\1\127\4\0\20\127\35\0\12\27\1\u02b3"+ - "\3\27\2\0\7\27\1\0\2\27\3\0\20\27\35\0"+ - "\12\127\1\u02b4\3\127\2\0\7\127\1\0\1\127\4\0"+ - "\20\127\22\0"; + "\1\77\1\100\1\101\1\102\4\112\2\22\1\113\1\114"+ + "\34\112\1\115\45\112\2\116\2\117\2\116\1\120\35\116"+ + "\1\121\1\116\1\122\43\116\6\123\1\124\35\123\1\121"+ + "\1\123\1\125\43\123\6\126\1\127\1\130\34\126\1\131"+ + "\45\126\7\132\1\133\34\132\1\134\45\132\13\135\1\136"+ + "\1\135\2\136\1\137\1\136\1\140\1\136\1\141\1\136"+ + "\1\142\1\136\1\143\1\136\2\135\1\136\1\135\1\144"+ + "\1\136\1\135\2\136\1\135\1\136\3\135\1\145\1\146"+ + "\1\147\1\136\1\150\1\151\1\152\2\136\1\153\1\136"+ + "\1\154\3\136\1\155\1\156\22\135\42\157\1\160\47\157"+ + "\13\161\1\136\1\161\14\136\2\161\1\136\1\161\2\136"+ + "\1\161\2\136\1\161\1\136\3\161\20\136\23\161\1\162"+ + "\5\163\1\164\1\165\102\162\1\166\5\163\1\167\103\166"+ + "\1\170\5\163\1\171\103\170\113\0\5\21\1\172\104\0"+ + "\2\22\1\173\1\0\1\22\113\0\1\174\1\175\111\0"+ + "\1\176\31\0\1\177\32\0\1\200\26\0\1\201\174\0"+ + "\1\202\27\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\20\30\37\0\1\31\2\203\2\204\2\205\2\206\2\207"+ + "\2\210\2\0\1\211\1\31\2\0\1\31\2\0\1\212"+ + "\62\0\6\30\1\213\1\30\1\214\5\30\2\0\7\30"+ + "\1\0\2\30\2\0\1\30\1\215\6\30\1\216\7\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\10\30"+ + "\1\217\7\30\36\0\4\30\1\220\11\30\2\0\7\30"+ + "\1\0\2\30\2\0\7\30\1\221\1\30\1\222\6\30"+ + "\36\0\14\30\1\223\1\30\2\0\7\30\1\0\2\30"+ + "\2\0\10\30\1\224\7\30\36\0\6\30\1\225\7\30"+ + "\2\0\5\30\1\226\1\30\1\0\2\30\2\0\11\30"+ + "\1\227\6\30\54\0\1\230\43\0\1\231\46\0\1\232"+ + "\42\0\1\233\4\0\1\234\23\0\1\31\2\203\2\204"+ + "\2\205\2\206\2\207\2\210\2\0\1\211\1\31\2\235"+ + "\1\31\2\236\1\212\62\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\6\30\1\237\1\30\1\240\3\30\1\241"+ + "\3\30\65\0\1\242\44\0\1\243\11\0\1\244\3\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\20\30\23\0"+ + "\2\245\2\0\2\245\1\246\36\245\1\247\44\245\2\250"+ + "\2\0\2\250\1\251\35\250\1\0\1\250\1\252\43\250"+ + "\13\0\16\30\2\0\7\30\1\0\2\30\2\0\1\30"+ + "\1\253\4\30\1\254\3\30\1\255\5\30\36\0\16\30"+ + "\2\0\2\30\1\256\4\30\1\0\2\30\2\0\4\30"+ + "\1\257\13\30\36\0\6\30\1\260\7\30\2\0\7\30"+ + "\1\0\2\30\2\0\1\30\1\261\6\30\1\262\4\30"+ + "\1\263\2\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\5\30\1\264\4\30\1\265\1\30\1\266\1\267"+ + "\1\30\1\270\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\6\30\1\271\6\30\1\272\2\30\36\0\14\30"+ + "\1\273\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\14\30\1\274\1\30\2\0\7\30\1\0\2\30"+ + "\2\0\1\30\1\275\10\30\1\276\5\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\10\30\1\277\7\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\15\30"+ + "\1\300\2\30\120\0\1\301\5\0\1\302\50\0\1\303"+ + "\32\0\1\304\1\0\1\305\111\0\1\306\107\0\1\307"+ + "\3\0\1\310\105\0\1\311\4\0\1\312\104\0\1\313"+ + "\111\0\1\314\111\0\1\315\10\0\1\316\100\0\1\317"+ + "\11\0\1\320\3\0\5\103\1\321\112\0\2\322\64\0"+ + "\1\323\23\0\1\324\102\0\2\116\2\0\2\116\1\0"+ + "\35\116\1\0\1\116\1\0\43\116\4\325\2\326\1\327"+ + "\103\325\6\123\1\0\35\123\1\0\1\123\1\0\43\123"+ + "\1\325\3\0\1\325\1\0\104\325\46\0\1\330\43\0"+ + "\6\126\2\0\34\126\1\0\45\126\7\0\1\331\102\0"+ + "\13\332\1\0\1\332\14\0\2\332\1\0\1\332\2\0"+ + "\1\332\2\0\1\332\1\0\3\332\21\0\22\332\7\132"+ + "\1\0\34\132\1\0\45\132\44\0\1\333\45\0\7\334"+ + "\1\335\3\334\1\0\1\334\14\0\2\334\1\0\1\334"+ + "\2\0\1\334\2\0\1\334\1\0\1\335\2\334\21\0"+ + "\22\334\13\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\6\136\1\336\1\136\1\337\5\136\2\0"+ + "\7\136\1\0\1\136\3\0\1\136\1\340\6\136\1\341"+ + "\7\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\10\136\1\342\7\136\36\0\4\136\1\343\11\136\2\0"+ + "\7\136\1\0\1\136\3\0\7\136\1\344\1\136\1\345"+ + "\6\136\36\0\14\136\1\346\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\10\136\1\347\7\136\36\0\6\136\1\350"+ + "\7\136\2\0\5\136\1\351\1\136\1\0\1\136\3\0"+ + "\11\136\1\352\6\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\6\136\1\353\1\136\1\354\3\136\1\355"+ + "\3\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\1\136\1\356\4\136\1\357\3\136\1\360\5\136\36\0"+ + "\16\136\2\0\2\136\1\361\4\136\1\0\1\136\3\0"+ + "\4\136\1\362\13\136\36\0\6\136\1\363\7\136\2\0"+ + "\7\136\1\0\1\136\3\0\1\136\1\364\6\136\1\365"+ + "\4\136\1\366\2\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\5\136\1\367\4\136\1\370\1\136\1\371"+ + "\1\372\1\136\1\373\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\6\136\1\374\6\136\1\375\2\136\36\0"+ + "\14\136\1\376\1\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\14\136\1\377\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\1\136\1\u0100\10\136\1\u0101\5\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\10\136\1\u0102"+ + "\7\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\15\136\1\u0103\2\136\36\0\1\u0104\1\0\14\u0104\2\0"+ + "\1\u0104\1\0\2\u0104\1\0\2\u0104\1\0\1\u0104\3\0"+ + "\20\u0104\24\0\5\163\1\u0105\104\0\3\163\1\0\1\163"+ + "\113\0\1\u0106\1\u0107\102\0\3\21\1\0\1\21\106\0"+ + "\1\22\107\0\2\174\2\0\106\174\10\u0108\1\u0109\101\u0108"+ + "\75\0\1\u010a\14\0\2\201\2\0\106\201\75\0\1\u010b"+ + "\30\0\1\u010c\14\0\2\u010d\1\0\1\u010c\2\0\1\u010c"+ + "\66\0\1\31\16\0\1\211\1\31\2\0\1\31\66\0"+ + "\1\u010e\17\0\1\u010e\2\0\1\u010e\65\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\10\30\1\u010f\7\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\11\30\1\u0110"+ + "\6\30\36\0\6\30\1\u0111\7\30\2\0\7\30\1\0"+ + "\2\30\2\0\20\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\6\30\1\u0112\11\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\11\30\1\u0113\6\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\1\u0114\17\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\4\30"+ + "\1\u0115\1\u0116\12\30\36\0\4\30\1\u0117\11\30\2\0"+ + "\7\30\1\0\2\30\2\0\20\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\12\30\1\u0118\5\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\4\30\1\u0119"+ + "\13\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\5\30\1\u011a\12\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\12\30\1\u011b\5\30\57\0\1\u011c\2\0"+ + "\1\u011c\65\0\2\u011d\2\0\2\u011d\4\0\4\u011d\3\0"+ + "\4\u011d\10\0\2\u011d\53\0\14\30\1\u011e\1\30\2\0"+ + "\7\30\1\0\2\30\2\0\20\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\10\30\1\u011f\7\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\5\30\1\u0120"+ + "\12\30\65\0\1\u0121\36\0\1\u0122\10\0\2\245\2\0"+ + "\2\245\1\246\36\245\1\u0123\50\245\2\u0124\1\u0125\103\245"+ + "\45\0\1\u0126\44\0\2\250\2\0\2\250\1\251\35\250"+ + "\1\0\1\250\1\u0127\47\250\2\u0128\1\u0129\103\250\46\0"+ + "\1\u012a\56\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\2\30\1\u012b\15\30\36\0\10\30\1\u012c\5\30\2\0"+ + "\7\30\1\0\2\30\2\0\10\30\1\u012d\7\30\36\0"+ + "\16\30\2\0\2\30\1\u012e\4\30\1\0\2\30\2\0"+ + "\20\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\4\30\1\u012f\13\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\4\30\1\u0130\13\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\1\30\1\u0131\16\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\4\30\1\u0132"+ + "\1\u0133\12\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\11\30\1\u0134\6\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\1\30\1\u0135\16\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\1\30\1\u0136\4\30"+ + "\1\u0137\11\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\1\u0138\17\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\11\30\1\u0139\6\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\10\30\1\u013a\7\30\36\0"+ + "\10\30\1\u013b\5\30\2\0\7\30\1\0\2\30\2\0"+ + "\20\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\1\30\1\u013c\10\30\1\u013d\1\30\1\u013e\3\30\36\0"+ + "\10\30\1\u013f\5\30\2\0\7\30\1\0\2\30\2\0"+ + "\6\30\1\u0140\11\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\5\30\1\u0141\12\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\17\30\1\u0142\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\5\30\1\u0143\12\30"+ + "\36\0\6\30\1\u0144\7\30\2\0\7\30\1\0\2\30"+ + "\2\0\20\30\36\0\6\30\1\u0145\1\30\1\u0146\5\30"+ + "\2\0\7\30\1\0\2\30\2\0\20\30\36\0\10\30"+ + "\1\u0147\5\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\120\0\1\u0148\5\0\1\u0149\110\0\1\u014a\104\0\1\u014b"+ + "\111\0\1\u014c\4\0\1\u014d\10\0\3\103\1\0\1\103"+ + "\106\0\2\325\2\u014e\1\u014f\104\0\2\u014e\1\u0150\1\0"+ + "\1\u014e\152\0\1\u0151\56\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\10\136\1\u0152\7\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\11\136\1\u0153\6\136\36\0"+ + "\6\136\1\u0154\7\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\6\136\1\u0155\11\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\11\136\1\u0156\6\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\1\u0157\17\136\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\4\136\1\u0158\1\u0159"+ + "\12\136\36\0\4\136\1\u015a\11\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\12\136\1\u015b\5\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\4\136\1\u015c\13\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\5\136\1\u015d"+ + "\12\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\12\136\1\u015e\5\136\36\0\14\136\1\u015f\1\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\10\136\1\u0160\7\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\5\136\1\u0161"+ + "\12\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\2\136\1\u0162\15\136\36\0\10\136\1\u0163\5\136\2\0"+ + "\7\136\1\0\1\136\3\0\10\136\1\u0164\7\136\36\0"+ + "\16\136\2\0\2\136\1\u0165\4\136\1\0\1\136\3\0"+ + "\20\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\4\136\1\u0166\13\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\4\136\1\u0167\13\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\1\136\1\u0168\16\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\4\136\1\u0169"+ + "\1\u016a\12\136\36\0\16\136\2\0\7\136\1\0\1\136"+ + "\3\0\11\136\1\u016b\6\136\36\0\16\136\2\0\7\136"+ + "\1\0\1\136\3\0\1\136\1\u016c\16\136\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\1\136\1\u016d\4\136"+ + "\1\u016e\11\136\36\0\16\136\2\0\7\136\1\0\1\136"+ + "\3\0\1\u016f\17\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\11\136\1\u0170\6\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\10\136\1\u0171\7\136\36\0"+ + "\10\136\1\u0172\5\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\1\136\1\u0173\10\136\1\u0174\1\136\1\u0175\3\136\36\0"+ + "\10\136\1\u0176\5\136\2\0\7\136\1\0\1\136\3\0"+ + "\6\136\1\u0177\11\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\5\136\1\u0178\12\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\17\136\1\u0179\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\5\136\1\u017a\12\136"+ + "\36\0\6\136\1\u017b\7\136\2\0\7\136\1\0\1\136"+ + "\3\0\20\136\36\0\6\136\1\u017c\1\136\1\u017d\5\136"+ + "\2\0\7\136\1\0\1\136\3\0\20\136\36\0\10\136"+ + "\1\u017e\5\136\2\0\7\136\1\0\1\136\3\0\20\136"+ + "\36\0\16\u0104\2\0\7\u0104\1\0\1\u0104\3\0\20\u0104"+ + "\23\0\2\u0106\2\0\106\u0106\10\u017f\1\u0180\101\u017f\10\u0108"+ + "\1\u0181\101\u0108\7\u0182\1\u0183\1\u0109\101\u0182\14\0\1\u010c"+ + "\2\u0184\2\204\4\0\2\207\4\0\1\u010d\1\u010c\2\0"+ + "\1\u010c\66\0\1\u010c\17\0\1\u010c\2\0\1\u010c\66\0"+ + "\1\u010e\2\u0184\2\204\4\0\2\207\2\210\2\0\1\u0185"+ + "\1\u010e\2\0\1\u010e\65\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\1\30\1\u0186\16\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\1\30\1\u0187\16\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\4\30\1\u0188"+ + "\13\30\36\0\2\30\1\u0189\13\30\2\0\7\30\1\0"+ + "\2\30\2\0\20\30\36\0\6\30\1\u018a\7\30\2\0"+ + "\7\30\1\0\2\30\2\0\10\30\1\u018b\7\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\5\30\1\u018c"+ + "\12\30\36\0\14\30\1\u018d\1\30\2\0\7\30\1\0"+ + "\2\30\2\0\20\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\1\30\1\u018e\16\30\36\0\16\30\2\0"+ + "\2\30\1\u018f\4\30\1\0\2\30\2\0\20\30\36\0"+ + "\14\30\1\u0190\1\30\2\0\7\30\1\0\2\30\2\0"+ + "\20\30\36\0\14\30\1\u0191\1\30\2\0\7\30\1\0"+ + "\2\30\2\0\20\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\7\30\1\u0192\10\30\40\0\2\203\2\0"+ + "\2\205\2\206\6\0\1\u0193\1\u011c\2\0\1\u011c\65\0"+ + "\2\u011d\2\203\2\u011d\2\205\2\206\4\u011d\2\0\1\u0194"+ + "\4\u011d\10\0\2\u011d\53\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\1\30\1\u0195\16\30\36\0\6\30\1\u0196"+ + "\7\30\2\0\7\30\1\0\2\30\2\0\20\30\36\0"+ + "\14\30\1\u0197\1\30\2\0\7\30\1\0\2\30\2\0"+ + "\20\30\23\0\4\245\2\u0124\1\u0198\36\245\1\u0123\45\245"+ + "\1\u0124\1\u0199\1\u019a\1\245\1\u0124\1\246\36\245\1\u0123"+ + "\44\245\6\u0126\1\u019b\36\u0126\1\u019c\44\u0126\4\250\2\u0128"+ + "\1\u019d\35\250\1\0\1\250\1\u0127\44\250\1\u0128\1\u019e"+ + "\1\u019f\1\250\1\u0128\1\251\35\250\1\0\1\250\1\u0127"+ + "\43\250\6\u01a0\1\u01a1\35\u01a0\1\0\1\u01a0\1\u01a2\43\u01a0"+ + "\13\0\16\30\2\0\7\30\1\0\2\30\2\0\3\30"+ + "\1\u01a3\14\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\13\30\1\u01a4\4\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\5\30\1\u01a5\12\30\36\0\6\30"+ + "\1\u01a6\7\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\5\30"+ + "\1\u01a7\12\30\36\0\14\30\1\u01a8\1\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\4\30\1\u01a9\13\30\36\0\14\30"+ + "\1\u01aa\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\2\30"+ + "\1\u01ab\15\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\5\30\1\u01ac\12\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\6\30\1\u01ad\11\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\5\30\1\u01ae\12\30"+ + "\36\0\10\30\1\u01af\5\30\2\0\7\30\1\0\2\30"+ + "\2\0\20\30\36\0\14\30\1\u01b0\1\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\2\30\1\u01b1\15\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\6\30\1\u01b2\11\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\5\30"+ + "\1\u01b3\12\30\36\0\10\30\1\u01b4\5\30\2\0\7\30"+ + "\1\0\2\30\2\0\11\30\1\u01b5\6\30\36\0\14\30"+ + "\1\u01b6\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\4\30"+ + "\1\u01b7\13\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\10\30\1\u01b8\7\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\12\30\1\u01b9\5\30\36\0\10\30"+ + "\1\u01ba\5\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\6\30\1\u01bb\7\30\2\0\7\30\1\0\2\30"+ + "\2\0\20\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\1\30\1\u01bc\16\30\36\0\12\30\1\u01bd\3\30"+ + "\2\0\7\30\1\0\2\30\2\0\20\30\36\0\6\30"+ + "\1\u01be\7\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\120\0\1\u01bf\16\0\1\326\1\325\2\u014e\1\u014f\116\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\1\136\1\u01c0"+ + "\16\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\1\136\1\u01c1\16\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\4\136\1\u01c2\13\136\36\0\2\136\1\u01c3"+ + "\13\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\6\136\1\u01c4\7\136\2\0\7\136\1\0\1\136\3\0"+ + "\10\136\1\u01c5\7\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\5\136\1\u01c6\12\136\36\0\14\136\1\u01c7"+ + "\1\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\1\136\1\u01c8"+ + "\16\136\36\0\16\136\2\0\2\136\1\u01c9\4\136\1\0"+ + "\1\136\3\0\20\136\36\0\14\136\1\u01ca\1\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\14\136\1\u01cb"+ + "\1\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\7\136\1\u01cc"+ + "\10\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\1\136\1\u01cd\16\136\36\0\6\136\1\u01ce\7\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\14\136\1\u01cf"+ + "\1\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\3\136\1\u01d0"+ + "\14\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\13\136\1\u01d1\4\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\5\136\1\u01d2\12\136\36\0\6\136\1\u01d3"+ + "\7\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\5\136\1\u01d4"+ + "\12\136\36\0\14\136\1\u01d5\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\4\136\1\u01d6\13\136\36\0\14\136\1\u01d7"+ + "\1\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\2\136\1\u01d8"+ + "\15\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\5\136\1\u01d9\12\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\6\136\1\u01da\11\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\5\136\1\u01db\12\136\36\0"+ + "\10\136\1\u01dc\5\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\14\136\1\u01dd\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\2\136\1\u01de\15\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\6\136\1\u01df\11\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\5\136\1\u01e0"+ + "\12\136\36\0\10\136\1\u01e1\5\136\2\0\7\136\1\0"+ + "\1\136\3\0\11\136\1\u01e2\6\136\36\0\14\136\1\u01e3"+ + "\1\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\4\136\1\u01e4"+ + "\13\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\10\136\1\u01e5\7\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\12\136\1\u01e6\5\136\36\0\10\136\1\u01e7"+ + "\5\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\6\136\1\u01e8\7\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\1\136\1\u01e9\16\136\36\0\12\136\1\u01ea\3\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\6\136\1\u01eb"+ + "\7\136\2\0\7\136\1\0\1\136\3\0\20\136\23\0"+ + "\10\u017f\1\u01ec\101\u017f\7\u01ed\1\u01ee\1\u0180\101\u01ed\7\u0108"+ + "\1\u01ef\1\u01f0\101\u0108\10\u0182\1\u01f1\101\u0182\14\0\1\u010e"+ + "\16\0\1\u0185\1\u010e\2\0\1\u010e\65\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\5\30\1\u01f2\12\30\36\0"+ + "\6\30\1\u01f3\7\30\2\0\7\30\1\0\2\30\2\0"+ + "\20\30\36\0\14\30\1\u01f4\1\30\2\0\7\30\1\0"+ + "\2\30\2\0\20\30\36\0\14\30\1\u01f5\1\30\2\0"+ + "\7\30\1\0\2\30\2\0\20\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\6\30\1\u01f6\11\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\1\30\1\u01f7"+ + "\16\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\6\30\1\u01f8\11\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\12\30\1\u01f9\5\30\36\0\6\30\1\u01fa"+ + "\7\30\2\0\7\30\1\0\2\30\2\0\20\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\11\30\1\u01fb"+ + "\6\30\56\0\1\u0193\1\u011c\2\0\1\u011c\65\0\2\u011d"+ + "\2\0\2\u011d\4\0\4\u011d\2\0\1\u0194\4\u011d\10\0"+ + "\2\u011d\53\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\3\30\1\u01fc\14\30\36\0\14\30\1\u01fd\1\30\2\0"+ + "\7\30\1\0\2\30\2\0\20\30\23\0\1\245\2\u0124"+ + "\1\u01fe\2\u0124\1\u0125\103\245\2\0\2\245\2\u0199\1\u01ff"+ + "\105\0\1\u0124\1\245\2\u0199\1\u01ff\103\0\157\u0126\1\u0200"+ + "\44\u0126\1\250\2\u0128\1\u0201\2\u0128\1\u0129\103\250\2\0"+ + "\2\250\2\u019e\1\u0202\105\0\1\u0128\1\250\2\u019e\1\u0202"+ + "\103\0\120\u01a0\1\0\35\u01a0\1\0\1\u01a0\1\u0203\43\u01a0"+ + "\13\0\16\30\2\0\7\30\1\0\2\30\2\0\1\30"+ + "\1\u0204\16\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\1\30\1\u0205\16\30\36\0\14\30\1\u0206\1\30"+ + "\2\0\7\30\1\0\2\30\2\0\20\30\36\0\10\30"+ + "\1\u0207\5\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\6\30"+ + "\1\u0208\11\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\6\30\1\u0209\11\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\4\30\1\u020a\13\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\15\30\1\u020b\2\30"+ + "\36\0\10\30\1\u020c\5\30\2\0\7\30\1\0\2\30"+ + "\2\0\20\30\36\0\10\30\1\u020d\5\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\2\30\1\u020e\15\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\6\30\1\u020f\11\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\15\30"+ + "\1\u0210\2\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\5\30\1\u0211\12\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\2\30\1\u0212\15\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\5\30\1\u0213\12\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\4\30"+ + "\1\u0214\13\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\17\30\1\u0215\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\6\30\1\u0216\11\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\13\30\1\u0217\4\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\5\30\1\u0218"+ + "\12\30\36\0\14\30\1\u0219\1\30\2\0\7\30\1\0"+ + "\2\30\2\0\20\30\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\5\136\1\u021a\12\136\36\0\6\136\1\u021b"+ + "\7\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\14\136\1\u021c\1\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\14\136\1\u021d\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\6\136\1\u021e\11\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\1\136\1\u021f\16\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\6\136\1\u0220"+ + "\11\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\12\136\1\u0221\5\136\36\0\6\136\1\u0222\7\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\11\136\1\u0223\6\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\3\136\1\u0224"+ + "\14\136\36\0\14\136\1\u0225\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\1\136\1\u0226\16\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\1\136\1\u0227\16\136\36\0"+ + "\14\136\1\u0228\1\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\10\136\1\u0229\5\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\6\136\1\u022a\11\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\6\136\1\u022b\11\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\4\136\1\u022c"+ + "\13\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\15\136\1\u022d\2\136\36\0\10\136\1\u022e\5\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\10\136\1\u022f"+ + "\5\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\2\136\1\u0230"+ + "\15\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\6\136\1\u0231\11\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\15\136\1\u0232\2\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\5\136\1\u0233\12\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\2\136\1\u0234"+ + "\15\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\5\136\1\u0235\12\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\4\136\1\u0236\13\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\17\136\1\u0237\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\6\136\1\u0238\11\136"+ + "\36\0\16\136\2\0\7\136\1\0\1\136\3\0\13\136"+ + "\1\u0239\4\136\36\0\16\136\2\0\7\136\1\0\1\136"+ + "\3\0\5\136\1\u023a\12\136\36\0\14\136\1\u023b\1\136"+ + "\2\0\7\136\1\0\1\136\3\0\20\136\23\0\7\u017f"+ + "\1\u023c\1\u023d\101\u017f\10\u01ed\1\u023e\101\u01ed\7\u0182\1\u0183"+ + "\1\u023f\101\u0182\13\0\6\30\1\u0240\7\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\7\30\1\u0241\10\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\5\30\1\u0242\12\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\11\30"+ + "\1\u0243\6\30\36\0\4\30\1\u0244\11\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\6\30\1\u0245\7\30"+ + "\2\0\7\30\1\0\2\30\2\0\20\30\36\0\14\30"+ + "\1\u0246\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\12\30\1\u0247\3\30\2\0\7\30\1\0\2\30"+ + "\2\0\20\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\1\30\1\u0248\16\30\23\0\2\245\1\u0124\1\245"+ + "\2\u0124\1\u0198\36\245\1\u0123\44\245\1\0\2\u0199\1\u019a"+ + "\1\0\1\u0199\104\0\45\u0126\1\u0123\44\u0126\2\250\1\u0128"+ + "\1\250\2\u0128\1\u019d\35\250\1\0\1\250\1\u0127\43\250"+ + "\1\0\2\u019e\1\u019f\1\0\1\u019e\104\0\6\u01a0\1\0"+ + "\35\u01a0\1\0\1\u01a0\1\u0127\43\u01a0\13\0\2\30\1\u0249"+ + "\13\30\2\0\7\30\1\0\2\30\2\0\20\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\5\30\1\u024a"+ + "\12\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\2\30\1\u024b\15\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\2\30\1\u024c\15\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\1\30\1\u024d\16\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\5\30\1\u024e"+ + "\12\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\11\30\1\u024f\6\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\2\30\1\u0250\15\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\5\30\1\u0251\12\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\6\30\1\u0252"+ + "\11\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\15\30\1\u0253\2\30\36\0\10\30\1\u0254\5\30\2\0"+ + "\7\30\1\0\2\30\2\0\20\30\36\0\16\30\2\0"+ + "\7\30\1\0\2\30\2\0\4\30\1\u0255\13\30\36\0"+ + "\16\30\2\0\7\30\1\0\2\30\2\0\11\30\1\u0256"+ + "\6\30\36\0\14\30\1\u0257\1\30\2\0\7\30\1\0"+ + "\2\30\2\0\20\30\36\0\10\30\1\u0258\5\30\2\0"+ + "\7\30\1\0\2\30\2\0\20\30\36\0\6\136\1\u0259"+ + "\7\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\7\136\1\u025a"+ + "\10\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\5\136\1\u025b\12\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\11\136\1\u025c\6\136\36\0\4\136\1\u025d"+ + "\11\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\6\136\1\u025e\7\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\14\136\1\u025f\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\12\136\1\u0260\3\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\1\136\1\u0261\16\136\36\0"+ + "\2\136\1\u0262\13\136\2\0\7\136\1\0\1\136\3\0"+ + "\20\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\5\136\1\u0263\12\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\2\136\1\u0264\15\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\2\136\1\u0265\15\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\1\136\1\u0266"+ + "\16\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\5\136\1\u0267\12\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\11\136\1\u0268\6\136\36\0\16\136\2\0"+ + "\7\136\1\0\1\136\3\0\2\136\1\u0269\15\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\5\136\1\u026a"+ + "\12\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\6\136\1\u026b\11\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\15\136\1\u026c\2\136\36\0\10\136\1\u026d"+ + "\5\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\4\136\1\u026e"+ + "\13\136\36\0\16\136\2\0\7\136\1\0\1\136\3\0"+ + "\11\136\1\u026f\6\136\36\0\14\136\1\u0270\1\136\2\0"+ + "\7\136\1\0\1\136\3\0\20\136\36\0\10\136\1\u0271"+ + "\5\136\2\0\7\136\1\0\1\136\3\0\20\136\23\0"+ + "\7\u01ed\1\u01ee\1\u0272\101\u01ed\13\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\14\30\1\u0273\3\30\36\0\14\30"+ + "\1\u0274\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\2\30"+ + "\1\u0275\15\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\1\30\1\u0276\16\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\5\30\1\u0277\12\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\4\30\1\u0278\13\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\11\30"+ + "\1\u0279\6\30\36\0\14\30\1\u027a\1\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\14\30\1\u027b\1\30"+ + "\2\0\7\30\1\0\2\30\2\0\20\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\5\30\1\u027c\12\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\2\30"+ + "\1\u027d\15\30\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\12\30\1\u027e\5\30\36\0\4\30\1\u027f\11\30"+ + "\2\0\7\30\1\0\2\30\2\0\20\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\10\30\1\u0280\7\30"+ + "\36\0\14\30\1\u0281\1\30\2\0\7\30\1\0\2\30"+ + "\2\0\20\30\36\0\6\30\1\u0282\7\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\16\136\2\0\7\136"+ + "\1\0\1\136\3\0\14\136\1\u0283\3\136\36\0\14\136"+ + "\1\u0284\1\136\2\0\7\136\1\0\1\136\3\0\20\136"+ + "\36\0\16\136\2\0\7\136\1\0\1\136\3\0\2\136"+ + "\1\u0285\15\136\36\0\16\136\2\0\7\136\1\0\1\136"+ + "\3\0\1\136\1\u0286\16\136\36\0\16\136\2\0\7\136"+ + "\1\0\1\136\3\0\5\136\1\u0287\12\136\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\4\136\1\u0288\13\136"+ + "\36\0\16\136\2\0\7\136\1\0\1\136\3\0\11\136"+ + "\1\u0289\6\136\36\0\14\136\1\u028a\1\136\2\0\7\136"+ + "\1\0\1\136\3\0\20\136\36\0\14\136\1\u028b\1\136"+ + "\2\0\7\136\1\0\1\136\3\0\20\136\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\5\136\1\u028c\12\136"+ + "\36\0\16\136\2\0\7\136\1\0\1\136\3\0\2\136"+ + "\1\u028d\15\136\36\0\16\136\2\0\7\136\1\0\1\136"+ + "\3\0\12\136\1\u028e\5\136\36\0\4\136\1\u028f\11\136"+ + "\2\0\7\136\1\0\1\136\3\0\20\136\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\10\136\1\u0290\7\136"+ + "\36\0\14\136\1\u0291\1\136\2\0\7\136\1\0\1\136"+ + "\3\0\20\136\36\0\6\136\1\u0292\7\136\2\0\7\136"+ + "\1\0\1\136\3\0\20\136\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\11\30\1\u0293\6\30\36\0\14\30"+ + "\1\u0294\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\2\30"+ + "\1\u0295\15\30\36\0\14\30\1\u0296\1\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\5\30\1\u0297\12\30\36\0\14\30"+ + "\1\u0298\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\16\30\2\0\7\30\1\0\2\30\2\0\1\u0299"+ + "\17\30\36\0\16\30\2\0\7\30\1\0\2\30\2\0"+ + "\11\30\1\u029a\6\30\36\0\16\30\2\0\7\30\1\0"+ + "\2\30\2\0\11\30\1\u029b\6\30\36\0\14\30\1\u029c"+ + "\1\30\2\0\7\30\1\0\2\30\2\0\20\30\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\11\136\1\u029d"+ + "\6\136\36\0\14\136\1\u029e\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\2\136\1\u029f\15\136\36\0\14\136\1\u02a0"+ + "\1\136\2\0\7\136\1\0\1\136\3\0\20\136\36\0"+ + "\16\136\2\0\7\136\1\0\1\136\3\0\5\136\1\u02a1"+ + "\12\136\36\0\14\136\1\u02a2\1\136\2\0\7\136\1\0"+ + "\1\136\3\0\20\136\36\0\16\136\2\0\7\136\1\0"+ + "\1\136\3\0\1\u02a3\17\136\36\0\16\136\2\0\7\136"+ + "\1\0\1\136\3\0\11\136\1\u02a4\6\136\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\11\136\1\u02a5\6\136"+ + "\36\0\14\136\1\u02a6\1\136\2\0\7\136\1\0\1\136"+ + "\3\0\20\136\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\5\30\1\u02a7\12\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\10\30\1\u02a8\7\30\36\0\14\30"+ + "\1\u02a9\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\12\30\1\u02aa\3\30\2\0\7\30\1\0\2\30"+ + "\2\0\20\30\36\0\10\30\1\u02ab\5\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\16\30\2\0\7\30"+ + "\1\0\2\30\2\0\5\30\1\u02ac\12\30\36\0\16\136"+ + "\2\0\7\136\1\0\1\136\3\0\5\136\1\u02ad\12\136"+ + "\36\0\16\136\2\0\7\136\1\0\1\136\3\0\10\136"+ + "\1\u02ae\7\136\36\0\14\136\1\u02af\1\136\2\0\7\136"+ + "\1\0\1\136\3\0\20\136\36\0\12\136\1\u02b0\3\136"+ + "\2\0\7\136\1\0\1\136\3\0\20\136\36\0\10\136"+ + "\1\u02b1\5\136\2\0\7\136\1\0\1\136\3\0\20\136"+ + "\36\0\16\136\2\0\7\136\1\0\1\136\3\0\5\136"+ + "\1\u02b2\12\136\36\0\16\30\2\0\7\30\1\0\2\30"+ + "\2\0\4\30\1\u02b3\13\30\36\0\4\30\1\u02b4\11\30"+ + "\2\0\7\30\1\0\2\30\2\0\20\30\36\0\16\30"+ + "\2\0\7\30\1\0\2\30\2\0\16\30\1\u02b5\1\30"+ + "\36\0\16\136\2\0\7\136\1\0\1\136\3\0\4\136"+ + "\1\u02b6\13\136\36\0\4\136\1\u02b7\11\136\2\0\7\136"+ + "\1\0\1\136\3\0\20\136\36\0\16\136\2\0\7\136"+ + "\1\0\1\136\3\0\16\136\1\u02b8\1\136\36\0\14\30"+ + "\1\u02b9\1\30\2\0\7\30\1\0\2\30\2\0\20\30"+ + "\36\0\14\136\1\u02ba\1\136\2\0\7\136\1\0\1\136"+ + "\3\0\20\136\36\0\12\30\1\u02bb\3\30\2\0\7\30"+ + "\1\0\2\30\2\0\20\30\36\0\12\136\1\u02bc\3\136"+ + "\2\0\7\136\1\0\1\136\3\0\20\136\23\0"; private static int [] zzUnpackTrans() { - int [] result = new int[37518]; + int [] result = new int[37814]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -1005,13 +1025,13 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\15\0\1\11\1\1\1\11\25\1\1\11\11\1\1\11"+ - "\2\1\4\11\1\1\1\11\2\1\1\11\4\1\4\11"+ - "\4\1\1\11\1\1\2\11\5\1\1\11\4\1\1\11"+ - "\20\1\2\11\1\1\2\11\3\1\1\11\1\1\1\11"+ - "\1\1\1\0\4\1\2\11\2\1\5\11\3\0\15\1"+ - "\5\11\2\0\4\1\2\11\1\1\1\0\1\1\2\0"+ - "\30\1\5\11\1\1\1\0\1\11\1\0\12\11\3\1"+ + "\17\0\1\11\1\1\1\11\35\1\6\11\3\1\1\11"+ + "\2\1\1\11\4\1\2\11\1\1\7\11\4\1\1\11"+ + "\1\1\2\11\5\1\1\11\4\1\1\11\20\1\2\11"+ + "\1\1\2\11\3\1\1\11\1\1\1\11\1\1\1\0"+ + "\4\1\2\11\2\1\5\11\3\0\15\1\5\11\2\0"+ + "\4\1\2\11\1\1\1\0\1\1\2\0\30\1\5\11"+ + "\1\1\1\0\1\11\1\0\6\11\1\0\4\11\3\1"+ "\5\11\47\1\1\0\4\1\2\11\1\1\1\0\23\1"+ "\3\11\3\1\1\11\2\0\36\1\5\11\4\0\1\11"+ "\61\1\2\11\1\0\15\1\2\0\3\1\3\0\2\1"+ @@ -1020,7 +1040,7 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { "\1\0\112\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[692]; + int [] result = new int[700]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1088,7 +1108,7 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { @Override protected int[] getDivisionStates() { - return new int[] {YYINITIAL, IN_INNER_BLOCK}; + return new int[] {YYINITIAL, IN_INJECTION, IN_PARENS_BRACKETS, IN_BRACES}; } @@ -1341,506 +1361,535 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { { return T_WRONG; } // fall through - case 164: break; + case 170: break; case 2: - { yybeginstate(NLS_AFTER_NLS); - return isWithinBraces() ? TokenType.WHITE_SPACE : storeToken(NL); + { yybeginstate(NLS_AFTER_NLS); return storeToken(NL); } // fall through - case 165: break; + case 171: break; case 3: { return TokenType.WHITE_SPACE; } // fall through - case 166: break; + case 172: break; case 4: { yybeginstate(IN_SLASHY_STRING); return storeToken(SLASHY_BEGIN); } // fall through - case 167: break; + case 173: break; case 5: { return storeToken(T_STAR); } // fall through - case 168: break; + case 174: break; case 6: { return storeToken(T_NOT); } // fall through - case 169: break; + case 175: break; case 7: { return storeToken(IDENTIFIER); } // fall through - case 170: break; + case 176: break; case 8: { return storeToken(NUM_INT); } // fall through - case 171: break; + case 177: break; case 9: { return storeToken(T_PLUS); } // fall through - case 172: break; + case 178: break; case 10: { return storeToken(T_MINUS); } // fall through - case 173: break; + case 179: break; case 11: { return storeToken(T_DOT); } // fall through - case 174: break; + case 180: break; case 12: { return storeToken(STR_SQ); } // fall through - case 175: break; + case 181: break; case 13: { yybeginstate(IN_SINGLE_GSTRING); return storeToken(GSTRING_BEGIN); } // fall through - case 176: break; - case 14: - { yyendstate(YYINITIAL); - return storeToken(T_RBRACE); - } - // fall through - case 177: break; - case 15: - { yybeginstate(YYINITIAL, NLS_AFTER_LBRACE); - return storeToken(T_LBRACE); - } - // fall through - case 178: break; - case 16: - { return storeToken(T_ASSIGN); - } - // fall through - case 179: break; - case 17: - { return storeToken(T_Q); - } - // fall through - case 180: break; - case 18: - { return storeToken(T_LPAREN); - } - // fall through - case 181: break; - case 19: - { return storeToken(T_RPAREN); - } - // fall through case 182: break; - case 20: - { return storeToken(T_LBRACK); + case 14: + { yybeginstate(NLS_AFTER_LBRACE); return storeToken(T_LBRACE); } // fall through case 183: break; - case 21: - { return storeToken(T_RBRACK); + case 15: + { yybeginstate(IN_PARENS_BRACKETS); return storeToken(T_LPAREN); } // fall through case 184: break; + case 16: + { yybeginstate(IN_PARENS_BRACKETS); return storeToken(T_LBRACK); + } + // fall through + case 185: break; + case 17: + { return storeToken(T_RPAREN); + } + // fall through + case 186: break; + case 18: + { return storeToken(T_RBRACK); + } + // fall through + case 187: break; + case 19: + { return storeToken(T_RBRACE); + } + // fall through + case 188: break; + case 20: + { return storeToken(T_ASSIGN); + } + // fall through + case 189: break; + case 21: + { return storeToken(T_Q); + } + // fall through + case 190: break; case 22: { return storeToken(T_COLON); } // fall through - case 185: break; + case 191: break; case 23: { return storeToken(T_COMMA); } // fall through - case 186: break; + case 192: break; case 24: { return storeToken(T_LT); } // fall through - case 187: break; + case 193: break; case 25: { return storeToken(T_GT); } // fall through - case 188: break; + case 194: break; case 26: { return storeToken(T_BNOT); } // fall through - case 189: break; + case 195: break; case 27: { return storeToken(T_REM); } // fall through - case 190: break; + case 196: break; case 28: { return storeToken(T_XOR); } // fall through - case 191: break; + case 197: break; case 29: { return storeToken(T_BOR); } // fall through - case 192: break; + case 198: break; case 30: { return storeToken(T_BAND); } // fall through - case 193: break; + case 199: break; case 31: { return storeToken(T_SEMI); } // fall through - case 194: break; + case 200: break; case 32: { return storeToken(T_AT); } // fall through - case 195: break; + case 201: break; case 33: - { yyendstate(IN_INNER_BLOCK, IN_GSTRING_DOLLAR); + { yybeginstate(NLS_AFTER_NLS); return TokenType.WHITE_SPACE; + } + // fall through + case 202: break; + case 34: + { yybeginstate(IN_BRACES, NLS_AFTER_LBRACE); return storeToken(T_LBRACE); + } + // fall through + case 203: break; + case 35: + { yyendstate(IN_PARENS_BRACKETS); return storeToken(T_RPAREN); + } + // fall through + case 204: break; + case 36: + { yyendstate(IN_PARENS_BRACKETS); return storeToken(T_RBRACK); + } + // fall through + case 205: break; + case 37: + { while (yystate() == IN_PARENS_BRACKETS) { + yyendstate(IN_PARENS_BRACKETS); + } return storeToken(T_RBRACE); } // fall through - case 196: break; - case 34: + case 206: break; + case 38: + { yyendstate(IN_BRACES); return storeToken(T_RBRACE); + } + // fall through + case 207: break; + case 39: + { yyendstate(IN_INJECTION, IN_GSTRING_DOLLAR); return storeToken(T_RBRACE); + } + // fall through + case 208: break; + case 40: { yypushback(1); yyendstate(DIVISION_EXPECTED); } // fall through - case 197: break; - case 35: + case 209: break; + case 41: { yyendstate(DIVISION_EXPECTED); return storeToken(T_DIV); } // fall through - case 198: break; - case 36: + case 210: break; + case 42: { return storeToken(GSTRING_CONTENT); } // fall through - case 199: break; - case 37: + case 211: break; + case 43: { yypushback(1); yyendstate(IN_SINGLE_GSTRING); } // fall through - case 200: break; - case 38: + case 212: break; + case 44: { yybeginstate(IN_GSTRING_DOLLAR); return storeToken(T_DOLLAR); } // fall through - case 201: break; - case 39: + case 213: break; + case 45: { yyendstate(IN_SINGLE_GSTRING); return storeToken(GSTRING_END); } // fall through - case 202: break; - case 40: + case 214: break; + case 46: { return storeToken(SLASHY_CONTENT); } // fall through - case 203: break; - case 41: + case 215: break; + case 47: { yyendstate(IN_SLASHY_STRING); return storeToken(SLASHY_END); } // fall through - case 204: break; - case 42: + case 216: break; + case 48: { return storeToken(DOLLAR_SLASHY_CONTENT); } // fall through - case 205: break; - case 43: + case 217: break; + case 49: { yypushback(1); yyendstate(IN_GSTRING_DOLLAR); } // fall through - case 206: break; - case 44: + case 218: break; + case 50: { yybeginstate(IN_GSTRING_DOT); return storeToken(IDENTIFIER); } // fall through - case 207: break; - case 45: - { yybeginstate(IN_INNER_BLOCK, NLS_AFTER_LBRACE); + case 219: break; + case 51: + { yybeginstate(IN_INJECTION, NLS_AFTER_LBRACE); return storeToken(T_LBRACE); } // fall through - case 208: break; - case 46: + case 220: break; + case 52: { yypushback(1); yyendstate(IN_GSTRING_DOT); } // fall through - case 209: break; - case 47: + case 221: break; + case 53: { yypushback(1); yyendstate(IN_GSTRING_DOT_IDENT); } // fall through - case 210: break; - case 48: + case 222: break; + case 54: { yypushback(1); yyendstate(NLS_AFTER_COMMENT); } // fall through - case 211: break; - case 49: + case 223: break; + case 55: { yypushback(1); yyendstate(NLS_AFTER_LBRACE); } // fall through - case 212: break; - case 50: + case 224: break; + case 56: { yypushback(1); yyendstate(NLS_AFTER_NLS); yybeginstate(NLS_AFTER_COMMENT); } // fall through - case 213: break; - case 51: + case 225: break; + case 57: { return storeToken(SL_COMMENT); } // fall through - case 214: break; - case 52: + case 226: break; + case 58: { return storeToken(ML_COMMENT); } // fall through - case 215: break; - case 53: + case 227: break; + case 59: { return storeToken(T_POW); } // fall through - case 216: break; - case 54: + case 228: break; + case 60: { return storeToken(T_SPREAD_DOT); } // fall through - case 217: break; - case 55: + case 229: break; + case 61: { return storeToken(T_STAR_ASSIGN); } // fall through - case 218: break; - case 56: + case 230: break; + case 62: { return storeToken(SH_COMMENT); } // fall through - case 219: break; - case 57: + case 231: break; + case 63: { return storeToken(T_NEQ); } // fall through - case 220: break; - case 58: + case 232: break; + case 64: { return storeToken(NUM_BIG_INT); } // fall through - case 221: break; - case 59: + case 233: break; + case 65: { return storeToken(NUM_FLOAT); } // fall through - case 222: break; - case 60: + case 234: break; + case 66: { return storeToken(NUM_LONG); } // fall through - case 223: break; - case 61: + case 235: break; + case 67: { return storeToken(NUM_DOUBLE); } // fall through - case 224: break; - case 62: + case 236: break; + case 68: { return storeToken(KW_IF); } // fall through - case 225: break; - case 63: + case 237: break; + case 69: { return storeToken(KW_IN); } // fall through - case 226: break; - case 64: + case 238: break; + case 70: { return storeToken(KW_DO); } // fall through - case 227: break; - case 65: + case 239: break; + case 71: { return storeToken(T_INC); } // fall through - case 228: break; - case 66: + case 240: break; + case 72: { return storeToken(T_PLUS_ASSIGN); } // fall through - case 229: break; - case 67: + case 241: break; + case 73: { return storeToken(T_DEC); } // fall through - case 230: break; - case 68: + case 242: break; + case 74: { return storeToken(T_MINUS_ASSIGN); } // fall through - case 231: break; - case 69: + case 243: break; + case 75: { return storeToken(T_ARROW); } // fall through - case 232: break; - case 70: + case 244: break; + case 76: { return storeToken(T_RANGE); } // fall through - case 233: break; - case 71: + case 245: break; + case 77: { return storeToken(T_METHOD_CLOSURE); } // fall through - case 234: break; - case 72: + case 246: break; + case 78: { yybeginstate(IN_DOLLAR_SLASH_STRING); return storeToken(DOLLAR_SLASHY_BEGIN); } // fall through - case 235: break; - case 73: + case 247: break; + case 79: { return storeToken(STR_DQ); } // fall through - case 236: break; - case 74: + case 248: break; + case 80: { return storeToken(KW_AS); } // fall through - case 237: break; - case 75: + case 249: break; + case 81: { return storeToken(T_EQ); } // fall through - case 238: break; - case 76: + case 250: break; + case 82: { return storeToken(T_REGEX_FIND); } // fall through - case 239: break; - case 77: + case 251: break; + case 83: { return storeToken(T_SAFE_DOT); } // fall through - case 240: break; - case 78: + case 252: break; + case 84: { return storeToken(T_ELVIS_ASSIGN); } // fall through - case 241: break; - case 79: + case 253: break; + case 85: { return storeToken(T_ELVIS); } // fall through - case 242: break; - case 80: + case 254: break; + case 86: { return storeToken(T_METHOD_REFERENCE); } // fall through - case 243: break; - case 81: + case 255: break; + case 87: { return storeToken(T_LE); } // fall through - case 244: break; - case 82: + case 256: break; + case 88: { return storeToken(T_GE); } // fall through - case 245: break; - case 83: + case 257: break; + case 89: { return storeToken(T_REM_ASSIGN); } // fall through - case 246: break; - case 84: + case 258: break; + case 90: { return storeToken(T_XOR_ASSIGN); } // fall through - case 247: break; - case 85: + case 259: break; + case 91: { return storeToken(T_BOR_ASSIGN); } // fall through - case 248: break; - case 86: + case 260: break; + case 92: { return storeToken(T_LOR); } // fall through - case 249: break; - case 87: + case 261: break; + case 93: { return storeToken(T_BAND_ASSIGN); } // fall through - case 250: break; - case 88: + case 262: break; + case 94: { return storeToken(T_LAND); } // fall through - case 251: break; - case 89: + case 263: break; + case 95: { yypushback(2); yyendstate(DIVISION_EXPECTED); } // fall through - case 252: break; - case 90: + case 264: break; + case 96: { yyendstate(DIVISION_EXPECTED); return storeToken(T_DIV_ASSIGN); } // fall through - case 253: break; - case 91: + case 265: break; + case 97: { yypushback(1); yyendstate(DIVISION_EXPECTED); return storeToken(T_DOLLAR); } // fall through - case 254: break; - case 92: + case 266: break; + case 98: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); { return storeToken(SLASHY_CONTENT); } // fall through - case 255: break; - case 93: + case 267: break; + case 99: { yyendstate(IN_DOLLAR_SLASH_STRING); return storeToken(DOLLAR_SLASHY_END); } // fall through - case 256: break; - case 94: + case 268: break; + case 100: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); { return storeToken(DOLLAR_SLASHY_CONTENT); } // fall through - case 257: break; - case 95: + case 269: break; + case 101: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1); @@ -1848,349 +1897,349 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer { return storeToken(T_DOT); } // fall through - case 258: break; - case 96: + case 270: break; + case 102: { return SL_COMMENT; } // fall through - case 259: break; - case 97: + case 271: break; + case 103: { return ML_COMMENT; } // fall through - case 260: break; - case 98: + case 272: break; + case 104: { return storeToken(GROOVY_DOC_COMMENT); } // fall through - case 261: break; - case 99: + case 273: break; + case 105: { return storeToken(T_POW_ASSIGN); } // fall through - case 262: break; - case 100: + case 274: break; + case 106: { return storeToken(T_NID); } // fall through - case 263: break; - case 101: + case 275: break; + case 107: { return storeToken(NUM_BIG_DECIMAL); } // fall through - case 264: break; - case 102: + case 276: break; + case 108: { return storeToken(KW_FOR); } // fall through - case 265: break; - case 103: + case 277: break; + case 109: { return storeToken(KW_INT); } // fall through - case 266: break; - case 104: + case 278: break; + case 110: { return storeToken(KW_DEF); } // fall through - case 267: break; - case 105: + case 279: break; + case 111: { return storeToken(T_ELLIPSIS); } // fall through - case 268: break; - case 106: + case 280: break; + case 112: { return storeToken(T_RANGE_EX); } // fall through - case 269: break; - case 107: + case 281: break; + case 113: { yybeginstate(IN_TRIPLE_GSTRING); return storeToken(GSTRING_BEGIN); } // fall through - case 270: break; - case 108: + case 282: break; + case 114: { return storeToken(KW_TRY); } // fall through - case 271: break; - case 109: + case 283: break; + case 115: { return storeToken(KW_NEW); } // fall through - case 272: break; - case 110: + case 284: break; + case 116: { return storeToken(T_ID); } // fall through - case 273: break; - case 111: + case 285: break; + case 117: { return storeToken(T_REGEX_MATCH); } // fall through - case 274: break; - case 112: + case 286: break; + case 118: { return storeToken(T_COMPARE); } // fall through - case 275: break; - case 113: + case 287: break; + case 119: { return storeToken(T_LSH_ASSIGN); } // fall through - case 276: break; - case 114: + case 288: break; + case 120: { return storeToken(T_RSH_ASSIGN); } // fall through - case 277: break; - case 115: + case 289: break; + case 121: { yyendstate(IN_TRIPLE_GSTRING); return storeToken(GSTRING_END); } // fall through - case 278: break; - case 116: + case 290: break; + case 122: { return GROOVY_DOC_COMMENT; } // fall through - case 279: break; - case 117: + case 291: break; + case 123: { return storeToken(KW_LONG); } // fall through - case 280: break; - case 118: + case 292: break; + case 124: { return storeToken(KW_ELSE); } // fall through - case 281: break; - case 119: + case 293: break; + case 125: { return storeToken(KW_ENUM); } // fall through - case 282: break; - case 120: + case 294: break; + case 126: { return storeToken(KW_BYTE); } // fall through - case 283: break; - case 121: + case 295: break; + case 127: { return storeToken(KW_CASE); } // fall through - case 284: break; - case 122: + case 296: break; + case 128: { return storeToken(KW_CHAR); } // fall through - case 285: break; - case 123: + case 297: break; + case 129: { return storeToken(KW_TRUE); } // fall through - case 286: break; - case 124: + case 298: break; + case 130: { return storeToken(KW_THIS); } // fall through - case 287: break; - case 125: + case 299: break; + case 131: { return storeToken(KW_NULL); } // fall through - case 288: break; - case 126: + case 300: break; + case 132: { return storeToken(KW_VOID); } // fall through - case 289: break; - case 127: + case 301: break; + case 133: { return storeToken(T_RSHU_ASSIGN); } // fall through - case 290: break; - case 128: + case 302: break; + case 134: { return storeToken(KW_FLOAT); } // fall through - case 291: break; - case 129: + case 303: break; + case 135: { return storeToken(KW_FINAL); } // fall through - case 292: break; - case 130: + case 304: break; + case 136: { return storeToken(KW_FALSE); } // fall through - case 293: break; - case 131: + case 305: break; + case 137: { return storeToken(KW_BREAK); } // fall through - case 294: break; - case 132: + case 306: break; + case 138: { return storeToken(KW_CLASS); } // fall through - case 295: break; - case 133: + case 307: break; + case 139: { return storeToken(KW_CATCH); } // fall through - case 296: break; - case 134: + case 308: break; + case 140: { return storeToken(KW_SUPER); } // fall through - case 297: break; - case 135: + case 309: break; + case 141: { return storeToken(KW_SHORT); } // fall through - case 298: break; - case 136: + case 310: break; + case 142: { return storeToken(KW_TRAIT); } // fall through - case 299: break; - case 137: + case 311: break; + case 143: { return storeToken(KW_THROW); } // fall through - case 300: break; - case 138: + case 312: break; + case 144: { return storeToken(KW_WHILE); } // fall through - case 301: break; - case 139: + case 313: break; + case 145: { return storeToken(KW_IMPORT); } // fall through - case 302: break; - case 140: + case 314: break; + case 146: { return storeToken(KW_DOUBLE); } // fall through - case 303: break; - case 141: + case 315: break; + case 147: { return storeToken(KW_PUBLIC); } // fall through - case 304: break; - case 142: + case 316: break; + case 148: { return storeToken(KW_ASSERT); } // fall through - case 305: break; - case 143: + case 317: break; + case 149: { return storeToken(KW_STATIC); } // fall through - case 306: break; - case 144: + case 318: break; + case 150: { return storeToken(KW_SWITCH); } // fall through - case 307: break; - case 145: + case 319: break; + case 151: { return storeToken(KW_THROWS); } // fall through - case 308: break; - case 146: + case 320: break; + case 152: { return storeToken(KW_RETURN); } // fall through - case 309: break; - case 147: + case 321: break; + case 153: { return storeToken(KW_NATIVE); } // fall through - case 310: break; - case 148: + case 322: break; + case 154: { return storeToken(KW_FINALLY); } // fall through - case 311: break; - case 149: + case 323: break; + case 155: { return storeToken(KW_DEFAULT); } // fall through - case 312: break; - case 150: + case 324: break; + case 156: { return storeToken(KW_EXTENDS); } // fall through - case 313: break; - case 151: + case 325: break; + case 157: { return storeToken(KW_BOOLEAN); } // fall through - case 314: break; - case 152: + case 326: break; + case 158: { return storeToken(KW_PACKAGE); } // fall through - case 315: break; - case 153: + case 327: break; + case 159: { return storeToken(KW_PRIVATE); } // fall through - case 316: break; - case 154: + case 328: break; + case 160: { return storeToken(KW_ABSTRACT); } // fall through - case 317: break; - case 155: + case 329: break; + case 161: { return storeToken(KW_CONTINUE); } // fall through - case 318: break; - case 156: + case 330: break; + case 162: { return storeToken(KW_STRICTFP); } // fall through - case 319: break; - case 157: + case 331: break; + case 163: { return storeToken(KW_VOLATILE); } // fall through - case 320: break; - case 158: + case 332: break; + case 164: { return storeToken(KW_INTERFACE); } // fall through - case 321: break; - case 159: + case 333: break; + case 165: { return storeToken(KW_PROTECTED); } // fall through - case 322: break; - case 160: + case 334: break; + case 166: { return storeToken(KW_TRANSIENT); } // fall through - case 323: break; - case 161: + case 335: break; + case 167: { return storeToken(KW_IMPLEMENTS); } // fall through - case 324: break; - case 162: + case 336: break; + case 168: { return storeToken(KW_INSTANCEOF); } // fall through - case 325: break; - case 163: + case 337: break; + case 169: { return storeToken(KW_SYNCHRONIZED); } // fall through - case 326: break; + case 338: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/GroovyLexerBase.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/GroovyLexerBase.java index 5d5b90812b21..259ee5131a8c 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/GroovyLexerBase.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/GroovyLexerBase.java @@ -9,7 +9,6 @@ import com.intellij.util.containers.Stack; import static com.intellij.util.ArrayUtil.indexOf; import static org.jetbrains.plugins.groovy.lang.lexer.GroovyTokenTypes.*; import static org.jetbrains.plugins.groovy.lang.lexer.TokenSets.KEYWORDS; -import static org.jetbrains.plugins.groovy.lang.lexer.TokenSets.LEFT_BRACES; public abstract class GroovyLexerBase implements FlexLexer { @@ -24,10 +23,15 @@ public abstract class GroovyLexerBase implements FlexLexer { )); public final Stack stateStack = new Stack<>(); - private final Stack bracesStack = new Stack<>(); + + protected void resetState() { + stateStack.clear(); + } protected void yybeginstate(int... states) { + assert states.length > 0; for (int state : states) { + assert state != getInitialState(); stateStack.push(state); yybegin(state); } @@ -35,47 +39,21 @@ public abstract class GroovyLexerBase implements FlexLexer { protected void yyendstate(int... states) { for (int state : states) { - int previous = stateStack.isEmpty() ? getInitialState() : stateStack.pop(); - if (previous != state) { - throw new RuntimeException("States does not match: previous=" + previous + ", expected=" + state); - } + assert state != getInitialState(); + assert !stateStack.isEmpty() : stateStack; + int previous = stateStack.pop(); + assert previous == state : "States does not match: previous=" + previous + ", expected=" + state; } yybegin(stateStack.isEmpty() ? getInitialState() : stateStack.peek()); } - protected void resetState() { - stateStack.clear(); - bracesStack.clear(); - } - protected IElementType storeToken(IElementType tokenType) { - if (LEFT_BRACES.contains(tokenType)) { - bracesStack.push(tokenType); - } - else if (tokenType == mRCURLY) { - IElementType leftType = mLCURLY; - while (!bracesStack.isEmpty() && leftType != bracesStack.peek()) { - bracesStack.pop(); - } - if (!bracesStack.isEmpty() && leftType == bracesStack.peek()) { - bracesStack.pop(); - } - } - else if (tokenType == mRPAREN || tokenType == mRBRACK) { - if (!bracesStack.isEmpty() && bracesStack.peek() != mLCURLY) { - bracesStack.pop(); - } - } if (indexOf(getDivisionStates(), yystate()) != -1 && DIVISION_IS_EXPECTED_AFTER.contains(tokenType)) { yybeginstate(getDivisionExpectedState()); } return tokenType; } - protected boolean isWithinBraces() { - return !bracesStack.empty() && bracesStack.peek() != mLCURLY; - } - protected abstract int getInitialState(); protected abstract int[] getDivisionStates(); diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/groovy.flex b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/groovy.flex index f153d0d27abe..c80d67117bad 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/groovy.flex +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/lexer/groovy.flex @@ -31,11 +31,16 @@ import static org.jetbrains.plugins.groovy.lang.psi.GroovyElementTypes.*; @Override protected int[] getDivisionStates() { - return new int[] {YYINITIAL, IN_INNER_BLOCK}; + return new int[] {YYINITIAL, IN_INJECTION, IN_PARENS_BRACKETS, IN_BRACES}; } %} -%state IN_INNER_BLOCK +// nls as whitespace +%state IN_PARENS_BRACKETS +// nls as nl but return to previous state instead of YYINITIAL +%state IN_BRACES +// nls as nl but return to previous IN_xxx_STRING state +%state IN_INJECTION %xstate DIVISION_EXPECTED @@ -135,22 +140,7 @@ mSTRING_LITERAL = {mSINGLE_QUOTED_LITERAL} | {mTRIPLE_SINGLE_QUOTED_LITERAL} mGSTRING_LITERAL = {mDOUBLE_QUOTED_LITERAL} | {mTRIPLE_DOUBLE_QUOTED_LITERAL} %% - - { - "}" { - yyendstate(YYINITIAL); - return storeToken(T_RBRACE); - } -} - - { - "}" { - yyendstate(IN_INNER_BLOCK, IN_GSTRING_DOLLAR); - return storeToken(T_RBRACE); - } -} - - { + { "package" { return storeToken(KW_PACKAGE); } "strictfp" { return storeToken(KW_STRICTFP); } "import" { return storeToken(KW_IMPORT); } @@ -318,7 +308,7 @@ mGSTRING_LITERAL = {mDOUBLE_QUOTED_LITERAL} | {mTRIPLE_DOUBLE_QUOTED_LITERAL} } "{" { - yybeginstate(IN_INNER_BLOCK, NLS_AFTER_LBRACE); + yybeginstate(IN_INJECTION, NLS_AFTER_LBRACE); return storeToken(T_LBRACE); } @@ -351,14 +341,59 @@ mGSTRING_LITERAL = {mDOUBLE_QUOTED_LITERAL} | {mTRIPLE_DOUBLE_QUOTED_LITERAL} } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -///////////////////////// White spaces & NewLines ////////////////////////////////////////////////////////////////////// +///////////////////////// Parentheses and braces /////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + { + {mNLS} { yybeginstate(NLS_AFTER_NLS); return storeToken(NL); } +} + { + {mNLS} { yybeginstate(NLS_AFTER_NLS); return TokenType.WHITE_SPACE; } +} + + { + "(" { yybeginstate(IN_PARENS_BRACKETS); return storeToken(T_LPAREN); } + "[" { yybeginstate(IN_PARENS_BRACKETS); return storeToken(T_LBRACK); } +} + + { + "{" { yybeginstate(IN_BRACES, NLS_AFTER_LBRACE); return storeToken(T_LBRACE); } +} + { + "{" { yybeginstate(NLS_AFTER_LBRACE); return storeToken(T_LBRACE); } +} + + { + ")" { return storeToken(T_RPAREN); } + "]" { return storeToken(T_RBRACK); } +} + { + ")" { yyendstate(IN_PARENS_BRACKETS); return storeToken(T_RPAREN); } + "]" { yyendstate(IN_PARENS_BRACKETS); return storeToken(T_RBRACK); } +} + + { + "}" { return storeToken(T_RBRACE); } +} + { + "}" { + while (yystate() == IN_PARENS_BRACKETS) { + yyendstate(IN_PARENS_BRACKETS); + } + return storeToken(T_RBRACE); + } +} + { + "}" { yyendstate(IN_BRACES); return storeToken(T_RBRACE); } +} + { + "}" { yyendstate(IN_INJECTION, IN_GSTRING_DOLLAR); return storeToken(T_RBRACE); } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +///////////////////////// White spaces ////////// ////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// {WHITE_SPACE} { return TokenType.WHITE_SPACE; } -{mNLS} { - yybeginstate(NLS_AFTER_NLS); - return isWithinBraces() ? TokenType.WHITE_SPACE : storeToken(NL); - } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////Comments ////////////////////////////////////////////////////////////////////////////////////// @@ -440,15 +475,7 @@ mGSTRING_LITERAL = {mDOUBLE_QUOTED_LITERAL} | {mTRIPLE_DOUBLE_QUOTED_LITERAL} yybeginstate(IN_DOLLAR_SLASH_STRING); return storeToken(DOLLAR_SLASHY_BEGIN); } -"{" { - yybeginstate(YYINITIAL, NLS_AFTER_LBRACE); - return storeToken(T_LBRACE); - } "?" { return storeToken(T_Q); } -"(" { return storeToken(T_LPAREN); } -")" { return storeToken(T_RPAREN); } -"[" { return storeToken(T_LBRACK); } -"]" { return storeToken(T_RBRACK); } ":" { return storeToken(T_COLON); } "," { return storeToken(T_COMMA); } "." { return storeToken(T_DOT); }