diff --git a/CHANGELOG.md b/CHANGELOG.md index 7897f73..df9c445 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ ## [Unreleased] +## [0.0.15] - 2024-07-03 + +- Added `$concat` and `$append` support. +- Support `{ .foo, .bar }` bitstruct initialization. +- Support `defer (catch err)` +- Support of `213L` + ## [0.0.14] - 2024-06-12 ### Updated diff --git a/gradle.properties b/gradle.properties index 77f7d9f..ccb95ce 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ pluginGroup = com.github.c3lang.c3intellij pluginName = c3intellij pluginRepositoryUrl = https://github.com/c3lang/c3intellij # SemVer format -> https://semver.org -pluginVersion = 0.0.14 +pluginVersion = 0.0.16 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 222 diff --git a/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java b/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java index 2a3455e..0d35362 100644 --- a/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java +++ b/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java @@ -119,38 +119,39 @@ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) "\1\42\1\43\1\1\1\42\1\45\1\42\1\46\1\42"+ "\2\46\1\47\1\50\1\1\1\0\1\51\1\0\1\52"+ "\1\0\15\53\1\54\1\55\1\56\1\57\1\60\1\61"+ - "\1\62\1\63\1\64\1\65\1\66\1\67\1\70\5\0"+ - "\1\20\2\0\1\71\1\72\1\73\1\74\1\75\1\76"+ - "\1\77\1\100\1\101\1\102\1\103\1\1\1\0\1\104"+ - "\1\105\1\106\1\107\1\0\14\34\1\110\5\34\1\111"+ - "\2\34\1\112\30\34\1\113\1\114\1\115\1\116\1\117"+ - "\1\120\1\121\1\122\1\123\3\0\1\124\1\125\1\126"+ - "\15\53\1\127\3\53\1\130\6\53\1\131\1\132\1\20"+ - "\1\0\1\132\3\0\3\20\1\133\1\134\1\135\1\136"+ - "\1\137\11\34\1\140\10\34\1\141\3\34\1\142\1\34"+ - "\1\143\14\34\1\144\6\34\1\145\1\146\2\34\1\53"+ - "\1\147\12\53\1\150\16\53\1\132\6\0\4\34\1\151"+ - "\1\34\1\152\1\34\1\153\6\34\1\154\1\155\12\34"+ - "\1\156\1\157\3\34\1\160\6\34\1\161\1\34\1\162"+ - "\2\34\1\163\1\34\1\164\1\34\2\53\1\165\2\53"+ - "\1\166\1\167\4\53\1\170\21\53\3\0\1\132\1\0"+ - "\4\34\1\171\1\172\1\173\2\34\1\174\3\34\1\175"+ - "\1\176\1\177\1\34\1\200\4\34\1\201\3\34\1\202"+ - "\6\34\1\203\1\204\1\34\1\205\5\53\1\206\1\53"+ - "\1\207\15\53\1\210\3\53\1\211\2\53\2\0\1\34"+ - "\1\212\5\34\1\213\1\214\2\34\1\215\1\216\1\217"+ - "\1\34\1\220\1\34\1\221\1\222\1\223\1\224\1\225"+ - "\1\226\1\34\1\227\1\53\1\230\2\53\1\231\7\53"+ - "\1\232\1\53\1\233\1\53\1\234\1\53\1\235\2\53"+ - "\1\236\1\53\1\237\4\34\1\240\2\34\1\241\1\242"+ - "\2\34\1\243\1\244\1\245\1\246\4\53\1\247\1\250"+ - "\1\251\1\53\1\252\2\53\1\253\1\254\1\255\1\256"+ - "\1\257\1\34\1\260\1\261\1\262\2\34\1\263\2\53"+ - "\1\264\1\53\1\265\1\53\1\266\1\267\1\270\1\271"+ - "\1\53\1\272\1\273\1\274\1\275"; + "\1\62\1\63\1\64\1\65\1\66\1\67\1\70\4\0"+ + "\1\20\1\0\1\20\2\0\1\71\1\72\1\73\1\74"+ + "\1\75\1\76\1\77\1\100\1\101\1\102\1\103\1\1"+ + "\1\0\1\104\1\105\1\106\1\107\1\0\14\34\1\110"+ + "\5\34\1\111\2\34\1\112\30\34\1\113\1\114\1\115"+ + "\1\116\1\117\1\120\1\121\1\122\1\123\3\0\1\124"+ + "\1\125\1\126\17\53\1\127\3\53\1\130\6\53\1\131"+ + "\1\132\1\20\1\0\1\132\3\0\2\20\1\133\1\134"+ + "\1\135\1\136\1\137\11\34\1\140\10\34\1\141\3\34"+ + "\1\142\1\34\1\143\14\34\1\144\6\34\1\145\1\146"+ + "\2\34\1\53\1\147\14\53\1\150\16\53\1\132\6\0"+ + "\4\34\1\151\1\34\1\152\1\34\1\153\6\34\1\154"+ + "\1\155\12\34\1\156\1\157\3\34\1\160\6\34\1\161"+ + "\1\34\1\162\2\34\1\163\1\34\1\164\1\34\3\53"+ + "\1\165\3\53\1\166\1\167\4\53\1\170\21\53\3\0"+ + "\1\132\1\0\4\34\1\171\1\172\1\173\2\34\1\174"+ + "\3\34\1\175\1\176\1\177\1\34\1\200\4\34\1\201"+ + "\3\34\1\202\6\34\1\203\1\204\1\34\1\205\7\53"+ + "\1\206\1\53\1\207\15\53\1\210\3\53\1\211\2\53"+ + "\2\0\1\34\1\212\5\34\1\213\1\214\2\34\1\215"+ + "\1\216\1\217\1\34\1\220\1\34\1\221\1\222\1\223"+ + "\1\224\1\225\1\226\1\34\1\227\1\53\1\230\1\231"+ + "\1\232\2\53\1\233\7\53\1\234\1\53\1\235\1\53"+ + "\1\236\1\53\1\237\2\53\1\240\1\53\1\241\4\34"+ + "\1\242\2\34\1\243\1\244\2\34\1\245\1\246\1\247"+ + "\1\250\4\53\1\251\1\252\1\253\1\53\1\254\2\53"+ + "\1\255\1\256\1\257\1\260\1\261\1\34\1\262\1\263"+ + "\1\264\2\34\1\265\2\53\1\266\1\53\1\267\1\53"+ + "\1\270\1\271\1\272\1\273\1\53\1\274\1\275\1\276"+ + "\1\277"; private static int [] zzUnpackAction() { - int [] result = new int[573]; + int [] result = new int[583]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -189,67 +190,68 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\u17da\0\u1830\0\u1886\0\u18dc\0\u1932\0\u1988\0\u19de\0\u1a34"+ "\0\u1a8a\0\u1ae0\0\u1b36\0\u1b8c\0\u02b0\0\u02b0\0\u02b0\0\u02b0"+ "\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u1be2\0\u02b0\0\u1c38"+ - "\0\u02b0\0\u1c8e\0\u1ce4\0\u1d3a\0\u1d90\0\u1de6\0\u1e3c\0\u1e92"+ - "\0\u1ee8\0\u02b0\0\u1f3e\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0"+ - "\0\u1f94\0\u02b0\0\u02b0\0\u02b0\0\u1fea\0\u0968\0\u2040\0\u2096"+ - "\0\u02b0\0\u02b0\0\u0ac0\0\u20ec\0\u2142\0\u2198\0\u21ee\0\u2244"+ - "\0\u229a\0\u22f0\0\u2346\0\u239c\0\u23f2\0\u2448\0\u249e\0\u24f4"+ - "\0\u254a\0\u25a0\0\u25f6\0\u264c\0\u26a2\0\u0d1a\0\u26f8\0\u274e"+ - "\0\u0d1a\0\u27a4\0\u27fa\0\u2850\0\u28a6\0\u28fc\0\u2952\0\u29a8"+ - "\0\u29fe\0\u2a54\0\u2aaa\0\u2b00\0\u2b56\0\u2bac\0\u2c02\0\u2c58"+ - "\0\u2cae\0\u2d04\0\u2d5a\0\u2db0\0\u2e06\0\u2e5c\0\u2eb2\0\u2f08"+ - "\0\u2f5e\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0"+ - "\0\u02b0\0\u02b0\0\u147e\0\u152a\0\u1580\0\u2fb4\0\u300a\0\u3060"+ - "\0\u30b6\0\u310c\0\u3162\0\u31b8\0\u320e\0\u3264\0\u32ba\0\u3310"+ - "\0\u3366\0\u33bc\0\u3412\0\u3468\0\u34be\0\u17da\0\u3514\0\u356a"+ - "\0\u35c0\0\u17da\0\u3616\0\u366c\0\u36c2\0\u3718\0\u376e\0\u37c4"+ - "\0\u02b0\0\u381a\0\u3870\0\u38c6\0\u391c\0\u3972\0\u39c8\0\u3a1e"+ - "\0\u02b0\0\u3a74\0\u3aca\0\u02b0\0\u02b0\0\u3b20\0\u3b76\0\u0d1a"+ - "\0\u3bcc\0\u3c22\0\u3c78\0\u3cce\0\u3d24\0\u3d7a\0\u3dd0\0\u3e26"+ + "\0\u02b0\0\u1c8e\0\u1ce4\0\u1d3a\0\u1d90\0\u02b0\0\u1de6\0\u1e3c"+ + "\0\u1e92\0\u1ee8\0\u02b0\0\u1f3e\0\u02b0\0\u02b0\0\u02b0\0\u02b0"+ + "\0\u02b0\0\u1f94\0\u02b0\0\u02b0\0\u02b0\0\u1fea\0\u0968\0\u2040"+ + "\0\u2096\0\u02b0\0\u02b0\0\u0ac0\0\u20ec\0\u2142\0\u2198\0\u21ee"+ + "\0\u2244\0\u229a\0\u22f0\0\u2346\0\u239c\0\u23f2\0\u2448\0\u249e"+ + "\0\u24f4\0\u254a\0\u25a0\0\u25f6\0\u264c\0\u26a2\0\u0d1a\0\u26f8"+ + "\0\u274e\0\u0d1a\0\u27a4\0\u27fa\0\u2850\0\u28a6\0\u28fc\0\u2952"+ + "\0\u29a8\0\u29fe\0\u2a54\0\u2aaa\0\u2b00\0\u2b56\0\u2bac\0\u2c02"+ + "\0\u2c58\0\u2cae\0\u2d04\0\u2d5a\0\u2db0\0\u2e06\0\u2e5c\0\u2eb2"+ + "\0\u2f08\0\u2f5e\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0"+ + "\0\u02b0\0\u02b0\0\u02b0\0\u147e\0\u152a\0\u1580\0\u2fb4\0\u300a"+ + "\0\u3060\0\u30b6\0\u310c\0\u3162\0\u31b8\0\u320e\0\u3264\0\u32ba"+ + "\0\u3310\0\u3366\0\u33bc\0\u3412\0\u3468\0\u34be\0\u3514\0\u356a"+ + "\0\u17da\0\u35c0\0\u3616\0\u366c\0\u17da\0\u36c2\0\u3718\0\u376e"+ + "\0\u37c4\0\u381a\0\u3870\0\u02b0\0\u38c6\0\u391c\0\u3972\0\u39c8"+ + "\0\u3a1e\0\u3a74\0\u3aca\0\u3b20\0\u3b76\0\u02b0\0\u02b0\0\u3bcc"+ + "\0\u3c22\0\u0d1a\0\u3c78\0\u3cce\0\u3d24\0\u3d7a\0\u3dd0\0\u3e26"+ "\0\u3e7c\0\u3ed2\0\u3f28\0\u3f7e\0\u3fd4\0\u402a\0\u4080\0\u40d6"+ "\0\u412c\0\u4182\0\u41d8\0\u422e\0\u4284\0\u42da\0\u4330\0\u4386"+ - "\0\u0d1a\0\u43dc\0\u4432\0\u4488\0\u44de\0\u4534\0\u458a\0\u45e0"+ - "\0\u4636\0\u468c\0\u46e2\0\u4738\0\u478e\0\u0d1a\0\u47e4\0\u483a"+ - "\0\u4890\0\u48e6\0\u493c\0\u4992\0\u0d1a\0\u0d1a\0\u49e8\0\u4a3e"+ - "\0\u4a94\0\u17da\0\u4aea\0\u4b40\0\u4b96\0\u4bec\0\u4c42\0\u4c98"+ + "\0\u43dc\0\u4432\0\u0d1a\0\u4488\0\u44de\0\u4534\0\u458a\0\u45e0"+ + "\0\u4636\0\u468c\0\u46e2\0\u4738\0\u478e\0\u47e4\0\u483a\0\u0d1a"+ + "\0\u4890\0\u48e6\0\u493c\0\u4992\0\u49e8\0\u4a3e\0\u0d1a\0\u0d1a"+ + "\0\u4a94\0\u4aea\0\u4b40\0\u17da\0\u4b96\0\u4bec\0\u4c42\0\u4c98"+ "\0\u4cee\0\u4d44\0\u4d9a\0\u4df0\0\u4e46\0\u4e9c\0\u4ef2\0\u4f48"+ "\0\u4f9e\0\u4ff4\0\u504a\0\u50a0\0\u50f6\0\u514c\0\u51a2\0\u51f8"+ "\0\u524e\0\u52a4\0\u52fa\0\u5350\0\u53a6\0\u53fc\0\u5452\0\u54a8"+ - "\0\u54fe\0\u5554\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u0d1a\0\u5702"+ - "\0\u0d1a\0\u5758\0\u0d1a\0\u57ae\0\u5804\0\u585a\0\u58b0\0\u5906"+ - "\0\u595c\0\u0d1a\0\u0d1a\0\u59b2\0\u5a08\0\u5a5e\0\u5ab4\0\u5b0a"+ - "\0\u5b60\0\u5bb6\0\u5c0c\0\u5c62\0\u5cb8\0\u0d1a\0\u0d1a\0\u5d0e"+ - "\0\u5d64\0\u5dba\0\u0d1a\0\u5e10\0\u5e66\0\u5ebc\0\u5f12\0\u5f68"+ - "\0\u5fbe\0\u0d1a\0\u6014\0\u606a\0\u60c0\0\u6116\0\u0d1a\0\u616c"+ - "\0\u0d1a\0\u61c2\0\u6218\0\u626e\0\u17da\0\u62c4\0\u631a\0\u17da"+ - "\0\u17da\0\u6370\0\u63c6\0\u641c\0\u6472\0\u64c8\0\u651e\0\u6574"+ + "\0\u54fe\0\u5554\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702\0\u5758"+ + "\0\u57ae\0\u5804\0\u0d1a\0\u585a\0\u0d1a\0\u58b0\0\u0d1a\0\u5906"+ + "\0\u595c\0\u59b2\0\u5a08\0\u5a5e\0\u5ab4\0\u0d1a\0\u0d1a\0\u5b0a"+ + "\0\u5b60\0\u5bb6\0\u5c0c\0\u5c62\0\u5cb8\0\u5d0e\0\u5d64\0\u5dba"+ + "\0\u5e10\0\u0d1a\0\u0d1a\0\u5e66\0\u5ebc\0\u5f12\0\u0d1a\0\u5f68"+ + "\0\u5fbe\0\u6014\0\u606a\0\u60c0\0\u6116\0\u0d1a\0\u616c\0\u61c2"+ + "\0\u6218\0\u626e\0\u0d1a\0\u62c4\0\u0d1a\0\u631a\0\u6370\0\u63c6"+ + "\0\u641c\0\u17da\0\u6472\0\u64c8\0\u651e\0\u17da\0\u17da\0\u6574"+ "\0\u65ca\0\u6620\0\u6676\0\u66cc\0\u6722\0\u6778\0\u67ce\0\u6824"+ "\0\u687a\0\u68d0\0\u6926\0\u697c\0\u69d2\0\u6a28\0\u6a7e\0\u6ad4"+ - "\0\u6b2a\0\u6b80\0\u02b0\0\u6bd6\0\u6c2c\0\u6c82\0\u6cd8\0\u6d2e"+ - "\0\u0d1a\0\u0d1a\0\u0d1a\0\u6d84\0\u6dda\0\u0d1a\0\u6e30\0\u6e86"+ - "\0\u6edc\0\u0d1a\0\u0d1a\0\u6f32\0\u6f88\0\u0d1a\0\u6fde\0\u7034"+ - "\0\u708a\0\u70e0\0\u0d1a\0\u7136\0\u718c\0\u71e2\0\u0d1a\0\u7238"+ - "\0\u728e\0\u72e4\0\u733a\0\u7390\0\u73e6\0\u0d1a\0\u0d1a\0\u743c"+ - "\0\u0d1a\0\u7492\0\u74e8\0\u753e\0\u7594\0\u75ea\0\u17da\0\u7640"+ - "\0\u17da\0\u7696\0\u76ec\0\u7742\0\u7798\0\u77ee\0\u7844\0\u789a"+ - "\0\u78f0\0\u7946\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u17da\0\u7af4"+ - "\0\u7b4a\0\u7ba0\0\u17da\0\u7bf6\0\u7c4c\0\u7ca2\0\u7cf8\0\u7d4e"+ - "\0\u0d1a\0\u7da4\0\u7dfa\0\u7e50\0\u7ea6\0\u7efc\0\u0d1a\0\u0d1a"+ - "\0\u7f52\0\u7fa8\0\u0d1a\0\u0d1a\0\u0d1a\0\u7ffe\0\u0d1a\0\u8054"+ - "\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u80aa\0\u0d1a"+ - "\0\u8100\0\u17da\0\u8156\0\u81ac\0\u8202\0\u8258\0\u82ae\0\u8304"+ - "\0\u835a\0\u83b0\0\u8406\0\u845c\0\u17da\0\u84b2\0\u17da\0\u8508"+ - "\0\u17da\0\u855e\0\u17da\0\u85b4\0\u860a\0\u17da\0\u8660\0\u17da"+ - "\0\u86b6\0\u870c\0\u8762\0\u87b8\0\u0d1a\0\u880e\0\u8864\0\u0d1a"+ - "\0\u88ba\0\u8910\0\u8966\0\u0d1a\0\u17da\0\u17da\0\u17da\0\u89bc"+ - "\0\u8a12\0\u8a68\0\u8abe\0\u17da\0\u17da\0\u17da\0\u8b14\0\u17da"+ - "\0\u8b6a\0\u8bc0\0\u17da\0\u17da\0\u17da\0\u0d1a\0\u0d1a\0\u8c16"+ - "\0\u0d1a\0\u0d1a\0\u0d1a\0\u8c6c\0\u8cc2\0\u0d1a\0\u8d18\0\u8d6e"+ - "\0\u17da\0\u8dc4\0\u17da\0\u8e1a\0\u17da\0\u0d1a\0\u0d1a\0\u0d1a"+ - "\0\u8e70\0\u17da\0\u17da\0\u17da\0\u17da"; + "\0\u6b2a\0\u6b80\0\u6bd6\0\u6c2c\0\u6c82\0\u6cd8\0\u6d2e\0\u6d84"+ + "\0\u02b0\0\u6dda\0\u6e30\0\u6e86\0\u6edc\0\u6f32\0\u0d1a\0\u0d1a"+ + "\0\u0d1a\0\u6f88\0\u6fde\0\u0d1a\0\u7034\0\u708a\0\u70e0\0\u0d1a"+ + "\0\u0d1a\0\u7136\0\u718c\0\u0d1a\0\u71e2\0\u7238\0\u728e\0\u72e4"+ + "\0\u0d1a\0\u733a\0\u7390\0\u73e6\0\u0d1a\0\u743c\0\u7492\0\u74e8"+ + "\0\u753e\0\u7594\0\u75ea\0\u0d1a\0\u0d1a\0\u7640\0\u0d1a\0\u7696"+ + "\0\u76ec\0\u7742\0\u7798\0\u77ee\0\u7844\0\u789a\0\u17da\0\u78f0"+ + "\0\u17da\0\u7946\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u7af4\0\u7b4a"+ + "\0\u7ba0\0\u7bf6\0\u7c4c\0\u7ca2\0\u7cf8\0\u7d4e\0\u17da\0\u7da4"+ + "\0\u7dfa\0\u7e50\0\u17da\0\u7ea6\0\u7efc\0\u7f52\0\u7fa8\0\u7ffe"+ + "\0\u0d1a\0\u8054\0\u80aa\0\u8100\0\u8156\0\u81ac\0\u0d1a\0\u0d1a"+ + "\0\u8202\0\u8258\0\u0d1a\0\u0d1a\0\u0d1a\0\u82ae\0\u0d1a\0\u8304"+ + "\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u835a\0\u0d1a"+ + "\0\u83b0\0\u17da\0\u17da\0\u17da\0\u8406\0\u845c\0\u84b2\0\u8508"+ + "\0\u855e\0\u85b4\0\u860a\0\u8660\0\u86b6\0\u870c\0\u17da\0\u8762"+ + "\0\u17da\0\u87b8\0\u17da\0\u880e\0\u17da\0\u8864\0\u88ba\0\u17da"+ + "\0\u8910\0\u17da\0\u8966\0\u89bc\0\u8a12\0\u8a68\0\u0d1a\0\u8abe"+ + "\0\u8b14\0\u0d1a\0\u8b6a\0\u8bc0\0\u8c16\0\u0d1a\0\u17da\0\u17da"+ + "\0\u17da\0\u8c6c\0\u8cc2\0\u8d18\0\u8d6e\0\u17da\0\u17da\0\u17da"+ + "\0\u8dc4\0\u17da\0\u8e1a\0\u8e70\0\u17da\0\u17da\0\u17da\0\u0d1a"+ + "\0\u0d1a\0\u8ec6\0\u0d1a\0\u0d1a\0\u0d1a\0\u8f1c\0\u8f72\0\u0d1a"+ + "\0\u8fc8\0\u901e\0\u17da\0\u9074\0\u17da\0\u90ca\0\u17da\0\u0d1a"+ + "\0\u0d1a\0\u0d1a\0\u9120\0\u17da\0\u17da\0\u17da\0\u17da"; private static int [] zzUnpackRowMap() { - int [] result = new int[573]; + int [] result = new int[583]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -295,487 +297,499 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { "\1\151\104\0\1\152\20\0\1\153\106\0\1\154\16\0"+ "\1\155\1\11\106\0\1\156\121\0\1\157\4\0\1\160"+ "\14\0\1\161\107\0\1\162\1\0\11\33\10\0\1\163"+ - "\1\164\2\0\1\165\1\0\1\166\1\0\1\167\1\170"+ - "\4\0\1\171\2\0\1\163\2\0\1\164\3\0\1\165"+ - "\5\0\1\166\5\0\1\167\2\0\1\170\33\0\1\162"+ - "\1\0\11\33\11\0\1\164\2\0\1\165\3\0\1\167"+ - "\5\0\1\171\5\0\1\164\3\0\1\165\13\0\1\167"+ - "\51\0\1\172\127\0\1\173\1\174\125\0\1\175\1\176"+ - "\101\0\1\177\22\0\1\200\1\201\17\0\1\202\101\0"+ - "\1\203\4\0\1\204\127\0\13\205\4\0\1\206\1\0"+ - "\32\207\33\0\11\43\7\0\13\43\4\0\1\43\1\0"+ - "\32\210\46\0\1\211\126\0\1\212\131\0\13\43\4\0"+ - "\1\213\1\0\32\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\15\57\1\214\4\57\1\215\7\57\33\0"+ - "\6\57\1\216\2\57\7\0\13\57\4\0\1\57\1\0"+ - "\5\57\1\217\2\57\1\220\5\57\1\221\2\57\1\222"+ - "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\1\223\6\57\1\224\6\57\1\225\13\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\4\57\1\226\3\57"+ - "\1\227\5\57\1\230\13\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\13\57\1\231\1\57\1\232\11\57"+ - "\1\233\2\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\1\234\12\57\1\235\1\57\1\236\1\237\13\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\32\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\2\57"+ - "\1\240\2\57\1\241\6\57\1\242\1\243\1\57\1\244"+ - "\2\57\1\245\7\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\16\57\1\246\13\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\1\247\15\57\1\250\13\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\4\57"+ - "\1\251\17\57\1\252\5\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\4\57\1\253\25\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\7\57\1\254\13\57"+ - "\1\255\2\57\1\256\3\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\13\57\1\257\5\57\1\260\6\57"+ - "\1\261\1\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\10\57\1\262\2\57\1\263\1\57\1\264\1\57"+ - "\1\265\2\57\1\266\7\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\1\267\15\57\1\270\13\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\7\57\1\271"+ - "\22\57\15\0\1\272\4\0\1\273\10\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\274\32\57\127\0\1\275\45\0"+ - "\1\276\57\0\1\277\1\300\3\0\2\77\1\0\14\77"+ - "\1\0\4\77\1\0\101\77\24\0\1\301\120\0\1\302"+ - "\173\0\1\103\45\0\2\106\1\0\51\106\1\0\44\106"+ - "\5\0\121\103\5\0\7\111\1\0\44\111\1\0\44\111"+ - "\5\0\2\113\1\0\116\113\1\0\5\303\1\0\1\103"+ - "\123\0\7\115\1\0\111\115\1\0\5\304\6\0\1\103"+ - "\112\0\5\305\57\0\1\103\65\0\11\122\7\0\13\122"+ - "\4\0\1\122\1\0\32\122\33\0\11\124\7\0\13\124"+ - "\4\0\1\124\1\0\32\124\53\0\13\306\4\0\1\125"+ - "\1\0\32\307\33\0\11\126\7\0\13\126\4\0\1\126"+ - "\1\0\32\310\53\0\13\126\4\0\1\127\1\0\32\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\13\131"+ - "\1\311\1\131\1\312\4\131\1\313\7\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\32\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\1\314\31\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\315"+ - "\25\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\2\131\1\316\10\131\1\317\1\131\1\320\3\131\1\321"+ - "\3\131\1\322\1\131\1\323\2\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\324\11\131\1\325"+ - "\13\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\5\131\1\326\7\131\1\327\4\131\1\330\7\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\1\331\31\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\21\131"+ - "\1\332\10\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\15\131\1\333\14\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\10\131\1\334\12\131\1\335\2\131"+ - "\1\336\3\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\30\131\1\337\1\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\1\340\31\131\31\0\1\341\102\0"+ - "\2\160\3\0\120\160\26\0\11\342\115\0\2\343\117\0"+ - "\1\344\1\0\1\344\2\0\11\345\116\0\1\346\1\0"+ - "\1\347\2\0\1\350\1\351\116\0\7\352\120\0\1\346"+ - "\1\0\1\347\2\0\1\350\1\351\16\0\1\351\25\0"+ - "\1\351\51\0\11\353\7\0\4\353\15\0\6\353\57\0"+ - "\11\33\26\0\1\171\102\0\1\354\125\0\1\355\111\0"+ - "\11\205\7\0\13\205\4\0\1\205\1\0\32\356\33\0"+ - "\11\207\7\0\13\207\4\0\1\207\1\0\32\207\33\0"+ - "\11\210\7\0\13\210\4\0\1\210\1\0\32\210\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\30\57\1\357"+ - "\1\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\14\57\1\360\5\57\1\361\7\57\33\0\4\57\1\72"+ - "\4\57\7\0\13\57\4\0\1\57\1\0\32\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\13\57\1\362"+ - "\16\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\23\57\1\363\6\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\16\57\1\364\13\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\4\57\1\365\25\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\22\57\1\366"+ - "\1\367\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\1\370\31\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\15\57\1\371\14\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\5\57\1\372\24\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\22\57\1\373"+ - "\7\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\24\57\1\374\5\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\22\57\1\375\7\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\24\57\1\376\5\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\377"+ - "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\13\57\1\u0100\10\57\1\u0101\5\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\16\57\1\u0102\13\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u0103"+ - "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\7\57\1\u0104\22\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\17\57\1\u0105\12\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\13\57\1\u0106\7\57\1\u0107"+ - "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\23\57\1\u0108\6\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\31\57\1\u0109\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\15\57\1\u010a\14\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\2\57\1\u010b\27\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\3\57"+ - "\1\u010c\26\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\27\57\1\u010d\2\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\13\57\1\u010e\16\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\23\57\1\u010f\6\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\16\57"+ - "\1\u0110\13\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\1\u0111\20\57\1\u0112\10\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\10\57\1\u0113\21\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\16\57\1\u0114"+ + "\1\164\2\0\1\165\1\166\1\167\1\0\1\170\1\171"+ + "\4\0\1\172\2\0\1\163\2\0\1\164\3\0\1\165"+ + "\2\0\1\166\2\0\1\167\5\0\1\170\2\0\1\171"+ + "\33\0\1\162\1\0\11\33\11\0\1\164\2\0\1\165"+ + "\1\166\2\0\1\170\5\0\1\172\5\0\1\164\3\0"+ + "\1\165\2\0\1\166\10\0\1\170\51\0\1\173\127\0"+ + "\1\174\1\175\125\0\1\176\1\177\101\0\1\200\22\0"+ + "\1\201\1\202\17\0\1\203\101\0\1\204\4\0\1\205"+ + "\127\0\13\206\4\0\1\207\1\0\32\210\33\0\11\43"+ + "\7\0\13\43\4\0\1\43\1\0\32\211\46\0\1\212"+ + "\126\0\1\213\131\0\13\43\4\0\1\214\1\0\32\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\15\57"+ + "\1\215\4\57\1\216\7\57\33\0\6\57\1\217\2\57"+ + "\7\0\13\57\4\0\1\57\1\0\5\57\1\220\2\57"+ + "\1\221\5\57\1\222\2\57\1\223\10\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\1\224\6\57\1\225"+ + "\6\57\1\226\13\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\4\57\1\227\3\57\1\230\5\57\1\231"+ "\13\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\24\57\1\u0115\3\57\1\u0116\1\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\17\57\1\u0117\12\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\15\57\1\u0118"+ - "\14\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\16\57\1\u0119\13\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\10\57\1\u011a\21\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\23\57\1\u011b\6\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\7\57\1\u011c"+ - "\21\57\1\u011d\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\21\57\1\u011e\10\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\10\57\1\u011f\21\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\10\57\1\u0120\21\57"+ - "\33\0\11\306\7\0\13\306\4\0\1\306\66\0\11\307"+ - "\7\0\13\307\4\0\1\307\1\0\32\307\33\0\11\310"+ - "\7\0\13\310\4\0\1\310\1\0\32\310\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\10\131\1\u0121\21\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\3\131"+ - "\1\u0122\26\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\22\131\1\u0123\7\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\22\131\1\u0124\7\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\5\131\1\u0125\24\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\7\131"+ - "\1\u0126\22\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\22\131\1\u0127\7\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\3\131\1\u0128\26\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\21\131\1\u0129\10\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\1\u012a"+ + "\13\57\1\232\1\57\1\233\11\57\1\234\2\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\1\235\12\57"+ + "\1\236\1\57\1\237\1\240\13\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\2\57\1\241\2\57\1\242"+ + "\6\57\1\243\1\244\1\57\1\245\2\57\1\246\7\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\16\57"+ + "\1\247\13\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\1\250\15\57\1\251\13\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\4\57\1\252\17\57\1\253"+ + "\5\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\4\57\1\254\25\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\7\57\1\255\13\57\1\256\2\57\1\257"+ + "\3\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\13\57\1\260\5\57\1\261\6\57\1\262\1\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\10\57\1\263"+ + "\2\57\1\264\1\57\1\265\1\57\1\266\2\57\1\267"+ + "\7\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\1\270\15\57\1\271\13\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\7\57\1\272\22\57\15\0\1\273"+ + "\4\0\1\274\10\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\275\32\57\127\0\1\276\45\0\1\277\57\0\1\300"+ + "\1\301\3\0\2\77\1\0\14\77\1\0\4\77\1\0"+ + "\101\77\24\0\1\302\120\0\1\303\173\0\1\103\45\0"+ + "\2\106\1\0\51\106\1\0\44\106\5\0\121\103\5\0"+ + "\7\111\1\0\44\111\1\0\44\111\5\0\2\113\1\0"+ + "\116\113\1\0\5\304\1\0\1\103\123\0\7\115\1\0"+ + "\111\115\1\0\5\305\6\0\1\103\112\0\5\306\57\0"+ + "\1\103\65\0\11\122\7\0\13\122\4\0\1\122\1\0"+ + "\32\122\33\0\11\124\7\0\13\124\4\0\1\124\1\0"+ + "\32\124\53\0\13\307\4\0\1\125\1\0\32\310\33\0"+ + "\11\126\7\0\13\126\4\0\1\126\1\0\32\311\53\0"+ + "\13\126\4\0\1\127\1\0\32\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\13\131\1\312\1\131\1\313"+ + "\1\131\1\314\2\131\1\315\7\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\32\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\1\316\15\131\1\317\13\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ + "\1\320\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\2\131\1\321\10\131\1\322\1\131\1\323\3\131"+ + "\1\324\3\131\1\325\1\131\1\326\2\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\4\131\1\327\11\131"+ + "\1\330\13\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\5\131\1\331\7\131\1\332\4\131\1\333\7\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\1\334"+ "\31\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\23\131\1\u012b\6\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\1\u012c\31\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\21\131\1\u012d\10\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\2\131\1\u012e\27\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\u012f\1\0\32\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\14\131"+ - "\1\u0130\15\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\1\u0131\31\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\31\131\1\u0132\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\21\131\1\u0133\10\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\10\131\1\u0134\21\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\17\131"+ - "\1\u0135\12\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\1\u0136\1\131\1\u0137\1\131\1\u0138\14\131\1\u0139"+ - "\1\u013a\1\u013b\6\131\33\0\11\342\11\0\1\164\1\u013c"+ - "\13\0\1\u013d\5\0\1\164\1\u013c\57\0\2\343\23\0"+ - "\1\165\3\0\1\167\5\0\1\u013e\11\0\1\165\13\0"+ - "\1\167\40\0\11\345\115\0\11\345\12\0\1\u013c\22\0"+ - "\1\u013c\61\0\1\u013f\3\0\1\351\121\0\1\351\127\0"+ - "\1\351\121\0\7\352\16\0\1\165\3\0\1\167\5\0"+ - "\1\u0140\11\0\1\165\13\0\1\167\36\0\1\u0141\1\0"+ - "\11\353\7\0\4\353\1\0\1\165\2\0\1\164\1\167"+ - "\5\0\1\u0142\1\0\6\353\2\0\1\165\6\0\1\164"+ - "\4\0\1\167\40\0\11\356\7\0\13\356\4\0\1\356"+ - "\1\0\32\356\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\5\57\1\u0143\24\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\4\57\1\u0144\25\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\16\57\1\u0145\13\57"+ + "\21\131\1\335\10\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\15\131\1\336\14\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\10\131\1\337\12\131\1\340"+ + "\2\131\1\341\3\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\30\131\1\342\1\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\1\343\31\131\31\0\1\344"+ + "\102\0\2\160\3\0\120\160\26\0\11\345\115\0\2\346"+ + "\117\0\1\347\1\0\1\347\2\0\11\350\116\0\1\351"+ + "\1\0\1\352\2\0\1\353\1\166\116\0\7\354\120\0"+ + "\1\351\1\0\1\352\2\0\1\353\1\166\16\0\1\166"+ + "\25\0\1\166\51\0\11\355\7\0\4\355\15\0\6\355"+ + "\57\0\11\33\26\0\1\172\102\0\1\356\125\0\1\357"+ + "\111\0\11\206\7\0\13\206\4\0\1\206\1\0\32\360"+ + "\33\0\11\210\7\0\13\210\4\0\1\210\1\0\32\210"+ + "\33\0\11\211\7\0\13\211\4\0\1\211\1\0\32\211"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\30\57"+ + "\1\361\1\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\14\57\1\362\5\57\1\363\7\57\33\0\4\57"+ + "\1\72\4\57\7\0\13\57\4\0\1\57\1\0\32\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ + "\1\364\16\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\23\57\1\365\6\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\16\57\1\366\13\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\4\57\1\367\25\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\22\57"+ + "\1\370\1\371\6\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\1\372\31\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\15\57\1\373\14\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\5\57\1\374\24\57"+ "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\22\57"+ - "\1\u0146\7\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\13\57\1\u0147\16\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\1\u0148\31\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\4\57\1\u0149\25\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\2\57\1\u014a"+ + "\1\375\7\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\24\57\1\376\5\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\22\57\1\377\7\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\24\57\1\u0100\5\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ + "\1\u0101\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\13\57\1\u0102\10\57\1\u0103\5\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\16\57\1\u0104\13\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\21\57"+ + "\1\u0105\10\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\7\57\1\u0106\22\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\17\57\1\u0107\12\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\13\57\1\u0108\7\57"+ + "\1\u0109\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\23\57\1\u010a\6\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\31\57\1\u010b\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\15\57\1\u010c\14\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\2\57\1\u010d"+ "\27\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\21\57\1\u014b\10\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\22\57\1\u014c\1\u014d\6\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\1\u014e\3\57\1\u014f"+ - "\25\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\23\57\1\u0150\6\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\1\57\1\u0151\30\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\4\57\1\u0152\25\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\14\57\1\u0153"+ - "\15\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\4\57\1\u0154\25\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\22\57\1\u0155\7\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\13\57\1\u0156\16\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\1\u0157\31\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\4\57"+ - "\1\u0158\25\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\1\u0159\31\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\16\57\1\u015a\13\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\10\57\1\u015b\21\57\33\0"+ - "\1\57\1\u015c\7\57\7\0\13\57\4\0\1\57\1\0"+ - "\4\57\1\u015d\25\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\21\57\1\u015e\10\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\6\57\1\u015f\23\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u0160"+ - "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\24\57\1\u0161\5\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\u0162\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\13\57\1\u0163\16\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\24\57\1\u0164"+ - "\5\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\21\57\1\u0165\10\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\u0166\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\24\57\1\u0167\5\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u0168"+ - "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\2\57\1\u0169\27\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\4\57\1\u016a\25\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\4\57\1\u016b\25\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u016c"+ + "\3\57\1\u010e\26\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\27\57\1\u010f\2\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\13\57\1\u0110\16\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u0111"+ "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\15\57\1\u016d\14\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\16\57\1\u016e\13\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\21\57\1\u016f\10\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\16\57\1\u0170"+ - "\13\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\3\57\1\u0171\26\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\13\57\1\u0172\16\57\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\6\131\1\u0173\23\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\u0174"+ - "\25\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\4\131\1\u0175\25\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\1\u0176\7\131\1\u0177\21\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\16\131\1\u0178\13\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u0179\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\5\131\1\u017a\2\131\1\u017b\11\131\1\u017c\7\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\16\131"+ - "\1\u017d\13\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\13\131\1\u017e\16\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\15\131\1\u017f\14\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\23\131\1\u0180\6\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u0181\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\13\131\1\u0182\16\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\2\131\1\u0183\27\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\4\131\1\u0184\25\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\14\131"+ - "\1\u0185\15\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\4\131\1\u0186\25\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\10\131\1\u0187\21\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\23\131\1\u0188\6\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u0189\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\21\131\1\u018a\10\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\16\131\1\u018b\13\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\27\131\1\u018c\2\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u018d\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\17\131\1\u018e\12\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\30\131\1\u018f\1\131\34\0\1\u0190"+ - "\1\0\1\u0191\2\0\1\u0192\1\u0193\116\0\11\342\26\0"+ - "\1\u013d\66\0\2\343\35\0\1\u013e\75\0\1\351\116\0"+ - "\7\352\30\0\1\u0140\66\0\11\u0194\7\0\4\u0194\15\0"+ - "\6\u0194\57\0\11\353\7\0\4\353\13\0\1\u0142\1\0"+ - "\6\353\57\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\1\u0195\31\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\21\57\1\u0196\10\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\1\u0197\31\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\23\57\1\u0198\6\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\12\57\1\u0199"+ - "\17\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\7\57\1\u019a\22\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\u019b\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\10\57\1\u019c\21\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\24\57\1\u019d"+ - "\5\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\21\57\1\u019e\10\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\10\57\1\u019f\21\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\13\57\1\u01a0\16\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u01a1"+ - "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\4\57\1\u01a2\25\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\u01a3\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\23\57\1\u01a4\6\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\1\u01a5\31\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\21\57"+ - "\1\u01a6\10\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\21\57\1\u01a7\10\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\15\57\1\u01a8\14\57\33\0\2\57"+ - "\1\u01a9\6\57\7\0\13\57\4\0\1\57\1\0\32\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\21\57"+ - "\1\u01aa\10\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\16\57\1\u01ab\13\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\13\57\1\u01ac\16\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\2\57\1\u01ad\27\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\21\57"+ - "\1\u01ae\10\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\23\57\1\u01af\6\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\10\57\1\u01b0\21\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\2\57\1\u01b1\27\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\2\57"+ - "\1\u01b2\27\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\1\u01b3\31\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\10\57\1\u01b4\21\57\33\0\1\57\1\u01b5"+ - "\7\57\7\0\13\57\4\0\1\57\1\0\32\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\6\57\1\u01b6"+ - "\23\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\15\57\1\u01b7\14\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\21\57\1\u01b8\10\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\4\57\1\u01b9\25\57\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\15\131\1\u01ba"+ - "\14\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\21\131\1\u01bb\10\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\24\131\1\u01bc\5\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\15\131\1\u01bd\14\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\16\131\1\u01be"+ - "\13\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\5\131\1\u01bf\24\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\26\131\1\u01c0\3\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\21\131\1\u01c1\10\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\23\131\1\u01c2"+ - "\6\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\1\u01c3\31\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\24\131\1\u01c4\5\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\1\u01c5\31\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\24\131\1\u01c6\5\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\16\131\1\u01c7"+ - "\13\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\16\131\1\u01c8\13\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\4\131\1\u01c9\25\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\16\131\1\u01ca\13\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\15\131\1\u01cb"+ - "\14\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\2\131\1\u01cc\27\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\5\131\1\u01cd\10\131\1\u01ce\13\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\6\131\1\u01cf"+ - "\23\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\15\131\1\u01d0\6\131\1\u01d1\5\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\17\131\1\u01d2\12\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\5\131\1\u01d3"+ - "\24\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\13\131\1\u01d4\16\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\17\131\1\u01d5\12\131\35\0\1\u01d6\3\0"+ - "\1\u0193\121\0\1\u0193\127\0\1\u0193\121\0\11\u0194\7\0"+ - "\4\u0194\4\0\1\164\6\0\1\u01d7\1\0\6\u0194\11\0"+ - "\1\164\45\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\24\57\1\u01d8\5\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\u01d9\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\23\57\1\u01da\6\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u01db"+ + "\16\57\1\u0112\13\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\1\u0113\20\57\1\u0114\10\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\10\57\1\u0115\21\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\16\57"+ + "\1\u0116\13\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\24\57\1\u0117\3\57\1\u0118\1\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\17\57\1\u0119\12\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\15\57"+ + "\1\u011a\14\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\16\57\1\u011b\13\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\10\57\1\u011c\21\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\23\57\1\u011d\6\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\7\57"+ + "\1\u011e\21\57\1\u011f\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\21\57\1\u0120\10\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\10\57\1\u0121\21\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\10\57\1\u0122"+ + "\21\57\33\0\11\307\7\0\13\307\4\0\1\307\66\0"+ + "\11\310\7\0\13\310\4\0\1\310\1\0\32\310\33\0"+ + "\11\311\7\0\13\311\4\0\1\311\1\0\32\311\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\10\131\1\u0123"+ + "\21\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\3\131\1\u0124\26\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\17\131\1\u0125\12\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\22\131\1\u0126\7\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\22\131\1\u0127"+ + "\7\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\15\131\1\u0128\14\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\5\131\1\u0129\24\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\7\131\1\u012a\22\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\22\131\1\u012b"+ + "\7\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\3\131\1\u012c\26\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\21\131\1\u012d\10\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\1\u012e\31\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\23\131\1\u012f\6\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\1\u0130"+ + "\31\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\21\131\1\u0131\10\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\2\131\1\u0132\27\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\u0133\1\0\32\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\14\131\1\u0134\15\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\1\u0135\31\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\31\131"+ + "\1\u0136\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\21\131\1\u0137\10\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\10\131\1\u0138\21\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\17\131\1\u0139\12\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\1\u013a\1\131"+ + "\1\u013b\1\131\1\u013c\14\131\1\u013d\1\u013e\1\u013f\6\131"+ + "\33\0\11\345\11\0\1\164\1\u0140\13\0\1\u0141\5\0"+ + "\1\164\1\u0140\57\0\2\346\23\0\1\165\1\166\2\0"+ + "\1\170\5\0\1\u0142\11\0\1\165\2\0\1\166\10\0"+ + "\1\170\40\0\11\350\115\0\11\350\12\0\1\u0140\22\0"+ + "\1\u0140\61\0\1\u0143\3\0\1\166\121\0\1\166\127\0"+ + "\1\166\121\0\7\354\16\0\1\165\1\166\2\0\1\170"+ + "\5\0\1\u0144\11\0\1\165\2\0\1\166\10\0\1\170"+ + "\36\0\1\u0145\1\0\11\355\7\0\4\355\1\0\1\165"+ + "\1\166\1\0\1\164\1\170\5\0\1\u0146\1\0\6\355"+ + "\2\0\1\165\2\0\1\166\3\0\1\164\4\0\1\170"+ + "\40\0\11\360\7\0\13\360\4\0\1\360\1\0\32\360"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\5\57"+ + "\1\u0147\24\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\4\57\1\u0148\25\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\16\57\1\u0149\13\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\22\57\1\u014a\7\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ + "\1\u014b\16\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\1\u014c\31\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\4\57\1\u014d\25\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\2\57\1\u014e\27\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u014f"+ "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\15\57\1\u01dc\14\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\13\57\1\u01dd\16\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\15\57\1\u01de\14\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\4\57\1\u01df"+ - "\25\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\15\57\1\u01e0\14\57\33\0\1\57\1\u01e1\7\57\7\0"+ - "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\2\57\1\u01e2\27\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u01e3"+ + "\22\57\1\u0150\1\u0151\6\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\1\u0152\3\57\1\u0153\25\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u0154"+ "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\4\57\1\u01e4\25\57\33\0\7\57\1\u01e5\1\57\7\0"+ - "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\5\57\1\u01e6\24\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\4\57\1\u01e7"+ + "\1\57\1\u0155\30\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\4\57\1\u0156\25\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\14\57\1\u0157\15\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\4\57\1\u0158"+ "\25\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\1\u01e8\31\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\15\57\1\u01e9\14\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\2\57\1\u01ea\27\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\23\57\1\u01eb\6\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\7\57"+ - "\1\u01ec\22\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\13\57\1\u01ed\16\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\3\57\1\u01ee\26\57\33\0\2\57"+ - "\1\u01ef\6\57\7\0\13\57\4\0\1\57\1\0\32\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ - "\1\u01f0\6\57\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\16\131\1\u01f1\13\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\23\131\1\u01f2\6\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\13\131\1\u01f3\16\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u01f4\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\21\131\1\u01f5\10\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\10\131\1\u01f6\21\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\30\131\1\u01f7\1\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\14\131"+ - "\1\u01f8\15\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\21\131\1\u01f9\10\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\2\131\1\u01fa\27\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\3\131\1\u01fb\26\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\15\131"+ - "\1\u01fc\14\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\5\131\1\u01fd\24\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\16\131\1\u01fe\13\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\5\131\1\u01ff\24\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\6\131"+ - "\1\u0200\23\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\7\131\1\u0201\22\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\21\131\1\u0202\10\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\5\131\1\u0203\24\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\22\131"+ - "\1\u0204\7\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\15\131\1\u0205\14\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\21\131\1\u0206\10\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\1\u0207\31\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\u0208"+ - "\25\131\42\0\1\u0193\116\0\11\u0194\7\0\4\u0194\13\0"+ - "\1\u01d7\1\0\6\u0194\57\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\13\57\1\u0209\16\57\33\0\1\57\1\u020a"+ - "\7\57\7\0\13\57\4\0\1\57\1\0\32\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\24\57\1\u020b"+ + "\22\57\1\u0159\7\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\13\57\1\u015a\16\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\1\u015b\31\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\4\57\1\u015c\25\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\1\u015d"+ + "\31\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\16\57\1\u015e\13\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\10\57\1\u015f\21\57\33\0\1\57\1\u0160"+ + "\7\57\7\0\13\57\4\0\1\57\1\0\4\57\1\u0161"+ + "\25\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\21\57\1\u0162\10\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\6\57\1\u0163\23\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\21\57\1\u0164\10\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\24\57\1\u0165"+ "\5\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\24\57\1\u020c\5\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\u020d\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\2\57\1\u020e\27\57\33\0"+ - "\2\57\1\u020f\3\57\1\u0210\2\57\7\0\13\57\4\0"+ - "\1\57\1\0\32\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\7\57\1\u0211\22\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\1\u0212\31\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\22\57\1\u0213\7\57"+ - "\33\0\7\57\1\u0214\1\57\7\0\13\57\4\0\1\57"+ - "\1\0\32\57\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\5\131\1\u0215\24\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\23\131\1\u0216\6\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\3\131\1\u0217\26\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u0218\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\23\131\1\u0219\6\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\17\131\1\u021a\12\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\4\131\1\u021b\25\131"+ + "\23\57\1\u0166\6\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\13\57\1\u0167\16\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\24\57\1\u0168\5\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u0169"+ + "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\23\57\1\u016a\6\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\24\57\1\u016b\5\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\23\57\1\u016c\6\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\2\57\1\u016d"+ + "\27\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\4\57\1\u016e\25\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\4\57\1\u016f\25\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\23\57\1\u0170\6\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\15\57\1\u0171"+ + "\14\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\16\57\1\u0172\13\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\21\57\1\u0173\10\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\16\57\1\u0174\13\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\3\57\1\u0175"+ + "\26\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\13\57\1\u0176\16\57\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\6\131\1\u0177\23\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\4\131\1\u0178\25\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\u0179"+ + "\25\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\4\131\1\u017a\25\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\2\131\1\u017b\27\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\1\u017c\7\131\1\u017d\21\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\16\131"+ + "\1\u017e\13\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\4\131\1\u017f\25\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\5\131\1\u0180\2\131\1\u0181\11\131"+ + "\1\u0182\7\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\16\131\1\u0183\13\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\13\131\1\u0184\16\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\15\131\1\u0185\14\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\23\131"+ + "\1\u0186\6\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\4\131\1\u0187\25\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\13\131\1\u0188\16\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\2\131\1\u0189\27\131"+ "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u021c\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\7\131\1\u021d\22\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\4\131\1\u021e\25\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\22\131\1\u021f\7\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\5\131"+ - "\1\u0220\24\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\10\131\1\u0221\21\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\16\131\1\u0222\13\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\23\131\1\u0223\6\131"+ + "\1\u018a\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\14\131\1\u018b\15\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\4\131\1\u018c\25\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\10\131\1\u018d\21\131"+ "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\23\131"+ - "\1\u0224\6\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\23\131\1\u0225\6\131\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\23\57\1\u0226\6\57\33\0\6\57"+ - "\1\u0227\2\57\7\0\13\57\4\0\1\57\1\0\32\57"+ + "\1\u018e\6\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\4\131\1\u018f\25\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\21\131\1\u0190\10\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\16\131\1\u0191\13\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\27\131"+ + "\1\u0192\2\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\4\131\1\u0193\25\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\17\131\1\u0194\12\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\30\131\1\u0195\1\131"+ + "\34\0\1\u0196\1\0\1\u0197\2\0\1\u0198\1\u0199\116\0"+ + "\11\345\26\0\1\u0141\66\0\2\346\35\0\1\u0142\75\0"+ + "\1\166\116\0\7\354\30\0\1\u0144\66\0\11\u019a\7\0"+ + "\4\u019a\15\0\6\u019a\57\0\11\355\7\0\4\355\13\0"+ + "\1\u0146\1\0\6\355\57\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\1\u019b\31\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\21\57\1\u019c\10\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\1\u019d\31\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u019e"+ + "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\12\57\1\u019f\17\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\7\57\1\u01a0\22\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\23\57\1\u01a1\6\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\10\57\1\u01a2"+ + "\21\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\24\57\1\u01a3\5\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\21\57\1\u01a4\10\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\10\57\1\u01a5\21\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\13\57\1\u01a6"+ + "\16\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\21\57\1\u01a7\10\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\4\57\1\u01a8\25\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\23\57\1\u01a9\6\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u01aa"+ + "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\1\u01ab\31\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\21\57\1\u01ac\10\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\21\57\1\u01ad\10\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\15\57\1\u01ae\14\57"+ + "\33\0\2\57\1\u01af\6\57\7\0\13\57\4\0\1\57"+ + "\1\0\32\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\21\57\1\u01b0\10\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\16\57\1\u01b1\13\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\13\57\1\u01b2\16\57"+ "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\2\57"+ - "\1\u0228\27\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\u0229\25\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\23\57\1\u022a\6\57\33\0\7\57"+ - "\1\u022b\1\57\7\0\13\57\4\0\1\57\1\0\32\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\u022c\1\0\32\57"+ + "\1\u01b3\27\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\21\57\1\u01b4\10\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\23\57\1\u01b5\6\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\10\57\1\u01b6\21\57"+ "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\2\57"+ - "\1\u022d\27\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\u022e\25\57\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\1\u022f\31\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\2\131\1\u0230\27\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\u0231"+ + "\1\u01b7\27\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\2\57\1\u01b8\27\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\1\u01b9\31\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\10\57\1\u01ba\21\57\33\0"+ + "\1\57\1\u01bb\7\57\7\0\13\57\4\0\1\57\1\0"+ + "\32\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\6\57\1\u01bc\23\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\15\57\1\u01bd\14\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\21\57\1\u01be\10\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\4\57\1\u01bf"+ + "\25\57\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\15\131\1\u01c0\14\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\15\131\1\u01c1\14\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\21\131\1\u01c2\10\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\1\u01c3\31\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\24\131"+ + "\1\u01c4\5\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\15\131\1\u01c5\14\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\16\131\1\u01c6\13\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\5\131\1\u01c7\24\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\26\131"+ + "\1\u01c8\3\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\21\131\1\u01c9\10\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\23\131\1\u01ca\6\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\1\u01cb\31\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\24\131\1\u01cc"+ + "\5\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\1\u01cd\31\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\24\131\1\u01ce\5\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\16\131\1\u01cf\13\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\16\131\1\u01d0\13\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ + "\1\u01d1\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\16\131\1\u01d2\13\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\15\131\1\u01d3\14\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\2\131\1\u01d4\27\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\5\131"+ + "\1\u01d5\10\131\1\u01d6\13\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\6\131\1\u01d7\23\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\15\131\1\u01d8\6\131"+ + "\1\u01d9\5\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\17\131\1\u01da\12\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\5\131\1\u01db\24\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\13\131\1\u01dc\16\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\17\131"+ + "\1\u01dd\12\131\35\0\1\u01de\3\0\1\u0199\121\0\1\u0199"+ + "\127\0\1\u0199\121\0\11\u019a\7\0\4\u019a\4\0\1\164"+ + "\6\0\1\u01df\1\0\6\u019a\11\0\1\164\45\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\24\57\1\u01e0\5\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ + "\1\u01e1\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\23\57\1\u01e2\6\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\21\57\1\u01e3\10\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\15\57\1\u01e4\14\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ + "\1\u01e5\16\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\15\57\1\u01e6\14\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\4\57\1\u01e7\25\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\15\57\1\u01e8\14\57"+ + "\33\0\1\57\1\u01e9\7\57\7\0\13\57\4\0\1\57"+ + "\1\0\32\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\2\57\1\u01ea\27\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\23\57\1\u01eb\6\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\4\57\1\u01ec\25\57"+ + "\33\0\7\57\1\u01ed\1\57\7\0\13\57\4\0\1\57"+ + "\1\0\32\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\5\57\1\u01ee\24\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\4\57\1\u01ef\25\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\1\u01f0\31\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\15\57\1\u01f1"+ + "\14\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\2\57\1\u01f2\27\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\23\57\1\u01f3\6\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\7\57\1\u01f4\22\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\13\57\1\u01f5"+ + "\16\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\3\57\1\u01f6\26\57\33\0\2\57\1\u01f7\6\57\7\0"+ + "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\23\57\1\u01f8\6\57\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\16\131\1\u01f9"+ + "\13\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\3\131\1\u01fa\26\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\23\131\1\u01fb\6\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\23\131\1\u01fc\6\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\13\131\1\u01fd"+ + "\16\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\4\131\1\u01fe\25\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\21\131\1\u01ff\10\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\10\131\1\u0200\21\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\30\131\1\u0201"+ + "\1\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\14\131\1\u0202\15\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\21\131\1\u0203\10\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\2\131\1\u0204\27\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\3\131\1\u0205"+ + "\26\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\15\131\1\u0206\14\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\5\131\1\u0207\24\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\16\131\1\u0208\13\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\5\131\1\u0209"+ + "\24\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\6\131\1\u020a\23\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\7\131\1\u020b\22\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\21\131\1\u020c\10\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\5\131\1\u020d"+ + "\24\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\22\131\1\u020e\7\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\15\131\1\u020f\14\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\21\131\1\u0210\10\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\1\u0211\31\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ + "\1\u0212\25\131\42\0\1\u0199\116\0\11\u019a\7\0\4\u019a"+ + "\13\0\1\u01df\1\0\6\u019a\57\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\13\57\1\u0213\16\57\33\0\1\57"+ + "\1\u0214\7\57\7\0\13\57\4\0\1\57\1\0\32\57"+ + "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\24\57"+ + "\1\u0215\5\57\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\24\57\1\u0216\5\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\23\57\1\u0217\6\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\2\57\1\u0218\27\57"+ + "\33\0\2\57\1\u0219\3\57\1\u021a\2\57\7\0\13\57"+ + "\4\0\1\57\1\0\32\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\7\57\1\u021b\22\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\1\u021c\31\57\33\0"+ + "\11\57\7\0\13\57\4\0\1\57\1\0\22\57\1\u021d"+ + "\7\57\33\0\7\57\1\u021e\1\57\7\0\13\57\4\0"+ + "\1\57\1\0\32\57\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\5\131\1\u021f\24\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\23\131\1\u0220\6\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\3\131\1\u0221"+ + "\26\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\4\131\1\u0222\25\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\23\131\1\u0223\6\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\17\131\1\u0224\12\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\u0225"+ "\25\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\16\131\1\u0232\13\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\23\131\1\u0233\6\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\5\131\1\u0234\24\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\14\131\1\u0235"+ - "\15\131\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\23\57\1\u0236\6\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\21\57\1\u0237\10\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\4\57\1\u0238\25\57\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\2\131\1\u0239"+ - "\27\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\7\131\1\u023a\22\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\5\131\1\u023b\24\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\30\131\1\u023c\1\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\7\131\1\u023d"+ - "\22\131\6\0"; + "\4\131\1\u0226\25\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\7\131\1\u0227\22\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\4\131\1\u0228\25\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\22\131\1\u0229"+ + "\7\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\5\131\1\u022a\24\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\10\131\1\u022b\21\131\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\16\131\1\u022c\13\131\33\0"+ + "\11\131\7\0\13\131\4\0\1\131\1\0\23\131\1\u022d"+ + "\6\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ + "\23\131\1\u022e\6\131\33\0\11\131\7\0\13\131\4\0"+ + "\1\131\1\0\23\131\1\u022f\6\131\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\23\57\1\u0230\6\57\33\0"+ + "\6\57\1\u0231\2\57\7\0\13\57\4\0\1\57\1\0"+ + "\32\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\2\57\1\u0232\27\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\4\57\1\u0233\25\57\33\0\11\57\7\0"+ + "\13\57\4\0\1\57\1\0\23\57\1\u0234\6\57\33\0"+ + "\7\57\1\u0235\1\57\7\0\13\57\4\0\1\57\1\0"+ + "\32\57\33\0\11\57\7\0\13\57\4\0\1\u0236\1\0"+ + "\32\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ + "\2\57\1\u0237\27\57\33\0\11\57\7\0\13\57\4\0"+ + "\1\57\1\0\4\57\1\u0238\25\57\33\0\11\131\7\0"+ + "\13\131\4\0\1\131\1\0\1\u0239\31\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\2\131\1\u023a\27\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ + "\1\u023b\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\16\131\1\u023c\13\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\23\131\1\u023d\6\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\5\131\1\u023e\24\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\14\131"+ + "\1\u023f\15\131\33\0\11\57\7\0\13\57\4\0\1\57"+ + "\1\0\23\57\1\u0240\6\57\33\0\11\57\7\0\13\57"+ + "\4\0\1\57\1\0\21\57\1\u0241\10\57\33\0\11\57"+ + "\7\0\13\57\4\0\1\57\1\0\4\57\1\u0242\25\57"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\2\131"+ + "\1\u0243\27\131\33\0\11\131\7\0\13\131\4\0\1\131"+ + "\1\0\7\131\1\u0244\22\131\33\0\11\131\7\0\13\131"+ + "\4\0\1\131\1\0\5\131\1\u0245\24\131\33\0\11\131"+ + "\7\0\13\131\4\0\1\131\1\0\30\131\1\u0246\1\131"+ + "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\7\131"+ + "\1\u0247\22\131\6\0"; private static int [] zzUnpacktrans() { - int [] result = new int[36550]; + int [] result = new int[37238]; int offset = 0; offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -818,14 +832,14 @@ private static int zzUnpacktrans(String packed, int offset, int [] result) { "\24\1\2\11\1\1\1\11\2\1\1\11\1\1\1\11"+ "\1\1\1\11\2\1\1\11\5\1\2\11\1\1\1\0"+ "\1\1\1\0\1\1\1\0\15\1\11\11\1\1\1\11"+ - "\1\1\1\11\5\0\1\1\2\0\1\11\1\1\5\11"+ - "\1\1\3\11\1\1\1\0\2\1\2\11\1\0\56\1"+ - "\11\11\3\0\33\1\1\11\2\1\1\0\1\1\3\0"+ - "\1\11\2\1\2\11\117\1\6\0\115\1\3\0\1\11"+ - "\1\0\101\1\2\0\146\1"; + "\1\1\1\11\4\0\1\11\1\0\1\1\2\0\1\11"+ + "\1\1\5\11\1\1\3\11\1\1\1\0\2\1\2\11"+ + "\1\0\56\1\11\11\3\0\35\1\1\11\2\1\1\0"+ + "\1\1\3\0\2\1\2\11\121\1\6\0\117\1\3\0"+ + "\1\11\1\0\103\1\2\0\150\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[573]; + int [] result = new int[583]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1153,947 +1167,957 @@ else if (zzAtEOF) { { return TokenType.BAD_CHARACTER; } // fall through - case 190: break; + case 192: break; case 2: { return TokenType.WHITE_SPACE; } // fall through - case 191: break; + case 193: break; case 3: { return C3Types.BANG; } // fall through - case 192: break; + case 194: break; case 4: { yybegin(IN_STRING); } // fall through - case 193: break; + case 195: break; case 5: { return C3Types.MOD; } // fall through - case 194: break; + case 196: break; case 6: { return C3Types.AMP; } // fall through - case 195: break; + case 197: break; case 7: { yybegin(IN_CHAR); } // fall through - case 196: break; + case 198: break; case 8: { return C3Types.LP; } // fall through - case 197: break; + case 199: break; case 9: { return C3Types.RP; } // fall through - case 198: break; + case 200: break; case 10: { return C3Types.STAR; } // fall through - case 199: break; + case 201: break; case 11: { return C3Types.PLUS; } // fall through - case 200: break; + case 202: break; case 12: { return C3Types.COMMA; } // fall through - case 201: break; + case 203: break; case 13: { return C3Types.MINUS; } // fall through - case 202: break; + case 204: break; case 14: { return C3Types.DOT; } // fall through - case 203: break; + case 205: break; case 15: { return C3Types.DIV; } // fall through - case 204: break; + case 206: break; case 16: { return C3Types.INT_LITERAL; } // fall through - case 205: break; + case 207: break; case 17: { return C3Types.COLON; } // fall through - case 206: break; + case 208: break; case 18: { return C3Types.EOS; } // fall through - case 207: break; + case 209: break; case 19: { return C3Types.LT_OP; } // fall through - case 208: break; + case 210: break; case 20: { return C3Types.EQ; } // fall through - case 209: break; + case 211: break; case 21: { return C3Types.GT_OP; } // fall through - case 210: break; + case 212: break; case 22: { return C3Types.QUESTION; } // fall through - case 211: break; + case 213: break; case 23: { return C3Types.CONST_IDENT; } // fall through - case 212: break; + case 214: break; case 24: { return C3Types.LBT; } // fall through - case 213: break; + case 215: break; case 25: { return C3Types.RBT; } // fall through - case 214: break; + case 216: break; case 26: { return C3Types.BIT_XOR; } // fall through - case 215: break; + case 217: break; case 27: { yybegin(IN_RAW_STRING); } // fall through - case 216: break; + case 218: break; case 28: { return C3Types.IDENT; } // fall through - case 217: break; + case 219: break; case 29: { return C3Types.LB; } // fall through - case 218: break; + case 220: break; case 30: { return C3Types.BIT_OR; } // fall through - case 219: break; + case 221: break; case 31: { return C3Types.RB; } // fall through - case 220: break; + case 222: break; case 32: { return C3Types.BIT_NOT; } // fall through - case 221: break; + case 223: break; case 33: { return C3ParserDefinition.BLOCK_COMMENT; } // fall through - case 222: break; + case 224: break; case 34: { } // fall through - case 223: break; + case 225: break; case 35: { yybegin(YYINITIAL); return C3Types.STRING_LIT; } // fall through - case 224: break; + case 226: break; case 36: { yybegin(YYINITIAL); return TokenType.BAD_CHARACTER; } // fall through - case 225: break; + case 227: break; case 37: { yybegin(YYINITIAL); return C3Types.CHAR_LIT; } // fall through - case 226: break; + case 228: break; case 38: { yybegin(YYINITIAL); return C3Types.BYTES; } // fall through - case 227: break; + case 229: break; case 39: { return C3Types.BANGBANG; } // fall through - case 228: break; + case 230: break; case 40: { return C3Types.NE_OP; } // fall through - case 229: break; + case 231: break; case 41: { return C3Types.HASH_IDENT; } // fall through - case 230: break; + case 232: break; case 42: { return C3Types.CT_CONST_IDENT; } // fall through - case 231: break; + case 233: break; case 43: { return C3Types.CT_IDENT; } // fall through - case 232: break; + case 234: break; case 44: { return C3Types.MOD_ASSIGN; } // fall through - case 233: break; + case 235: break; case 45: { return C3Types.AND; } // fall through - case 234: break; + case 236: break; case 46: { return C3Types.BIT_AND_ASSIGN; } // fall through - case 235: break; + case 237: break; case 47: { return C3Types.LGENPAR; } // fall through - case 236: break; + case 238: break; case 48: { return C3Types.MULT_ASSIGN; } // fall through - case 237: break; + case 239: break; case 49: { return C3Types.PLUSPLUS; } // fall through - case 238: break; + case 240: break; case 50: { return C3Types.PLUS_ASSIGN; } // fall through - case 239: break; + case 241: break; case 51: { return C3Types.MINUSMINUS; } // fall through - case 240: break; + case 242: break; case 52: { return C3Types.MINUS_ASSIGN; } // fall through - case 241: break; + case 243: break; case 53: { return C3Types.DOTDOT; } // fall through - case 242: break; + case 244: break; case 54: { yybegin(IN_COMMENT); commentNesting = 1; return C3ParserDefinition.BLOCK_COMMENT; } // fall through - case 243: break; + case 245: break; case 55: { return C3ParserDefinition.LINE_COMMENT; } // fall through - case 244: break; + case 246: break; case 56: { return C3Types.DIV_ASSIGN; } // fall through - case 245: break; + case 247: break; case 57: { return C3Types.SCOPE; } // fall through - case 246: break; + case 248: break; case 58: { return C3Types.SHL; } // fall through - case 247: break; + case 249: break; case 59: { return C3Types.LE_OP; } // fall through - case 248: break; + case 250: break; case 60: { return C3Types.EQ_OP; } // fall through - case 249: break; + case 251: break; case 61: { return C3Types.IMPLIES; } // fall through - case 250: break; + case 252: break; case 62: { return C3Types.RGENPAR; } // fall through - case 251: break; + case 253: break; case 63: { return C3Types.GE_OP; } // fall through - case 252: break; + case 254: break; case 64: { return C3Types.SHR; } // fall through - case 253: break; + case 255: break; case 65: { return C3Types.RVEC; } // fall through - case 254: break; + case 256: break; case 66: { return C3Types.ELVIS; } // fall through - case 255: break; + case 257: break; case 67: { return C3Types.OPTELSE; } // fall through - case 256: break; + case 258: break; case 68: { return C3Types.AT_IDENT; } // fall through - case 257: break; + case 259: break; case 69: { return C3Types.TYPE_IDENT; } // fall through - case 258: break; + case 260: break; case 70: { return C3Types.LVEC; } // fall through - case 259: break; + case 261: break; case 71: { return C3Types.BIT_XOR_ASSIGN; } // fall through - case 260: break; + case 262: break; case 72: { return C3Types.KW_DO; } // fall through - case 261: break; + case 263: break; case 73: { return C3Types.KW_FN; } // fall through - case 262: break; + case 264: break; case 74: { return C3Types.KW_IF; } // fall through - case 263: break; + case 265: break; case 75: { yybegin(IN_BYTES_STRING); } // fall through - case 264: break; + case 266: break; case 76: { yybegin(IN_BYTES_CHAR); } // fall through - case 265: break; + case 267: break; case 77: { yybegin(IN_BYTES_RAW_STRING); } // fall through - case 266: break; + case 268: break; case 78: { return C3Types.LBRAPIPE; } // fall through - case 267: break; + case 269: break; case 79: { return C3Types.BIT_OR_ASSIGN; } // fall through - case 268: break; + case 270: break; case 80: { return C3Types.OR; } // fall through - case 269: break; + case 271: break; case 81: { return C3Types.RBRAPIPE; } // fall through - case 270: break; + case 272: break; case 82: { if (--commentNesting == 0) { yybegin(YYINITIAL); return C3ParserDefinition.BLOCK_COMMENT; } } // fall through - case 271: break; + case 273: break; case 83: { commentNesting++; return C3ParserDefinition.BLOCK_COMMENT; } // fall through - case 272: break; + case 274: break; case 84: { return C3Types.BUILTIN_CONST; } // fall through - case 273: break; + case 275: break; case 85: { return C3Types.BUILTIN; } // fall through - case 274: break; + case 276: break; case 86: { return C3Types.CT_TYPE_IDENT; } // fall through - case 275: break; + case 277: break; case 87: { return C3Types.KW_CT_IF; } // fall through - case 276: break; + case 278: break; case 88: { return C3Types.KW_CT_OR; } // fall through - case 277: break; + case 279: break; case 89: { return C3Types.ELLIPSIS; } // fall through - case 278: break; + case 280: break; case 90: { return C3Types.FLOAT_LITERAL; } // fall through - case 279: break; + case 281: break; case 91: { return C3Types.SHL_ASSIGN; } // fall through - case 280: break; + case 282: break; case 92: { return C3Types.SHR_ASSIGN; } // fall through - case 281: break; + case 283: break; case 93: { return C3Types.AT_TYPE_IDENT; } // fall through - case 282: break; + case 284: break; case 94: { return C3Types.KW_ANY; } // fall through - case 283: break; + case 285: break; case 95: { return C3Types.KW_ASM; } // fall through - case 284: break; + case 286: break; case 96: { return C3Types.KW_DEF; } // fall through - case 285: break; + case 287: break; case 97: { return C3Types.KW_FOR; } // fall through - case 286: break; + case 288: break; case 98: { return C3Types.KW_INT; } // fall through - case 287: break; + case 289: break; case 99: { return C3Types.KW_ISZ; } // fall through - case 288: break; + case 290: break; case 100: { return C3Types.KW_TRY; } // fall through - case 289: break; + case 291: break; case 101: { return C3Types.KW_USZ; } // fall through - case 290: break; + case 292: break; case 102: { return C3Types.KW_VAR; } // fall through - case 291: break; + case 293: break; case 103: { return C3Types.KW_CT_AND; } // fall through - case 292: break; + case 294: break; case 104: { return C3Types.KW_CT_FOR; } // fall through - case 293: break; + case 295: break; case 105: { return C3Types.KW_BOOL; } // fall through - case 294: break; + case 296: break; case 106: { return C3Types.KW_CASE; } // fall through - case 295: break; + case 297: break; case 107: { return C3Types.KW_CHAR; } // fall through - case 296: break; + case 298: break; case 108: { return C3Types.KW_ELSE; } // fall through - case 297: break; + case 299: break; case 109: { return C3Types.KW_ENUM; } // fall through - case 298: break; + case 300: break; case 110: { return C3Types.KW_IPTR; } // fall through - case 299: break; + case 301: break; case 111: { return C3Types.KW_LONG; } // fall through - case 300: break; + case 302: break; case 112: { return C3Types.KW_NULL; } // fall through - case 301: break; + case 303: break; case 113: { return C3Types.KW_TRUE; } // fall through - case 302: break; + case 304: break; case 114: { return C3Types.KW_UINT; } // fall through - case 303: break; + case 305: break; case 115: { return C3Types.KW_UPTR; } // fall through - case 304: break; + case 306: break; case 116: { return C3Types.KW_VOID; } // fall through - case 305: break; + case 307: break; case 117: { return C3Types.KW_CT_CASE; } // fall through - case 306: break; + case 308: break; case 118: { return C3Types.KW_CT_ECHO; } // fall through - case 307: break; + case 309: break; case 119: { return C3Types.KW_CT_ELSE; } // fall through - case 308: break; + case 310: break; case 120: { return C3Types.KW_CT_EVAL; } // fall through - case 309: break; + case 311: break; case 121: { return C3Types.KW_BREAK; } // fall through - case 310: break; + case 312: break; case 122: { return C3Types.KW_CATCH; } // fall through - case 311: break; + case 313: break; case 123: { return C3Types.KW_CONST; } // fall through - case 312: break; + case 314: break; case 124: { return C3Types.KW_DEFER; } // fall through - case 313: break; + case 315: break; case 125: { return C3Types.KW_FALSE; } // fall through - case 314: break; + case 316: break; case 126: { return C3Types.KW_FAULT; } // fall through - case 315: break; + case 317: break; case 127: { return C3Types.KW_FLOAT; } // fall through - case 316: break; + case 318: break; case 128: { return C3Types.KW_ICHAR; } // fall through - case 317: break; + case 319: break; case 129: { return C3Types.KW_MACRO; } // fall through - case 318: break; + case 320: break; case 130: { return C3Types.KW_SHORT; } // fall through - case 319: break; + case 321: break; case 131: { return C3Types.KW_ULONG; } // fall through - case 320: break; + case 322: break; case 132: { return C3Types.KW_UNION; } // fall through - case 321: break; + case 323: break; case 133: { return C3Types.KW_WHILE; } // fall through - case 322: break; + case 324: break; case 134: { return C3Types.KW_CT_ENDIF; } // fall through - case 323: break; + case 325: break; case 135: { return C3Types.KW_CT_ERROR; } // fall through - case 324: break; + case 326: break; case 136: { return C3Types.KW_CT_VAARG; } // fall through - case 325: break; + case 327: break; case 137: { return C3Types.KW_CT_VAREF; } // fall through - case 326: break; + case 328: break; case 138: { return C3Types.KW_ASSERT; } // fall through - case 327: break; + case 329: break; case 139: { return C3Types.KW_DOUBLE; } // fall through - case 328: break; + case 330: break; case 140: { return C3Types.KW_EXTERN; } // fall through - case 329: break; + case 331: break; case 141: { return C3Types.KW_IMPORT; } // fall through - case 330: break; + case 332: break; case 142: { return C3Types.KW_INLINE; } // fall through - case 331: break; + case 333: break; case 143: { return C3Types.KW_INT128; } // fall through - case 332: break; + case 334: break; case 144: { return C3Types.KW_MODULE; } // fall through - case 333: break; + case 335: break; case 145: { return C3Types.KW_RETURN; } // fall through - case 334: break; + case 336: break; case 146: { return C3Types.KW_STATIC; } // fall through - case 335: break; + case 337: break; case 147: { return C3Types.KW_STRUCT; } // fall through - case 336: break; + case 338: break; case 148: { return C3Types.KW_SWITCH; } // fall through - case 337: break; + case 339: break; case 149: { return C3Types.KW_TLOCAL; } // fall through - case 338: break; + case 340: break; case 150: { return C3Types.KW_TYPEID; } // fall through - case 339: break; + case 341: break; case 151: { return C3Types.KW_USHORT; } // fall through - case 340: break; + case 342: break; case 152: - { return C3Types.KW_CT_ASSERT; + { return C3Types.KW_CT_APPEND; } // fall through - case 341: break; + case 343: break; case 153: - { return C3Types.KW_CT_ENDFOR; + { return C3Types.KW_CT_ASSERT; } // fall through - case 342: break; + case 344: break; case 154: - { return C3Types.KW_CT_NAMEOF; + { return C3Types.KW_CT_CONCAT; } // fall through - case 343: break; + case 345: break; case 155: - { return C3Types.KW_CT_SIZEOF; + { return C3Types.KW_CT_ENDFOR; } // fall through - case 344: break; + case 346: break; case 156: - { return C3Types.KW_CT_SWITCH; + { return C3Types.KW_CT_NAMEOF; } // fall through - case 345: break; + case 347: break; case 157: - { return C3Types.KW_CT_TYPEOF; + { return C3Types.KW_CT_SIZEOF; } // fall through - case 346: break; + case 348: break; case 158: - { return C3Types.KW_CT_VAEXPR; + { return C3Types.KW_CT_SWITCH; } // fall through - case 347: break; + case 349: break; case 159: - { return C3Types.KW_CT_VATYPE; + { return C3Types.KW_CT_TYPEOF; } // fall through - case 348: break; + case 350: break; case 160: - { return C3Types.KW_DEFAULT; + { return C3Types.KW_CT_VAEXPR; } // fall through - case 349: break; + case 351: break; case 161: - { return C3Types.KW_FLOAT16; + { return C3Types.KW_CT_VATYPE; } // fall through - case 350: break; + case 352: break; case 162: - { return C3Types.KW_FOREACH; + { return C3Types.KW_DEFAULT; } // fall through - case 351: break; + case 353: break; case 163: - { return C3Types.KW_UINT128; + { return C3Types.KW_FLOAT16; } // fall through - case 352: break; + case 354: break; case 164: - { return C3Types.KW_CT_ALIGNOF; + { return C3Types.KW_FOREACH; } // fall through - case 353: break; + case 355: break; case 165: - { return C3Types.KW_CT_DEFAULT; + { return C3Types.KW_UINT128; } // fall through - case 354: break; + case 356: break; case 166: - { return C3Types.KW_CT_DEFINED; + { return C3Types.KW_CT_ALIGNOF; } // fall through - case 355: break; + case 357: break; case 167: - { return C3Types.KW_CT_FEATURE; + { return C3Types.KW_CT_DEFAULT; } // fall through - case 356: break; + case 358: break; case 168: - { return C3Types.KW_CT_FOREACH; + { return C3Types.KW_CT_DEFINED; } // fall through - case 357: break; + case 359: break; case 169: - { return C3Types.KW_CT_INCLUDE; + { return C3Types.KW_CT_FEATURE; } // fall through - case 358: break; + case 360: break; case 170: - { return C3Types.KW_CT_QNAMEOF; + { return C3Types.KW_CT_FOREACH; } // fall through - case 359: break; + case 361: break; case 171: - { return C3Types.KW_CT_VACONST; + { return C3Types.KW_CT_INCLUDE; } // fall through - case 360: break; + case 362: break; case 172: - { return C3Types.KW_CT_VACOUNT; + { return C3Types.KW_CT_QNAMEOF; } // fall through - case 361: break; + case 363: break; case 173: - { return C3Types.KW_CT_VASPLAT; + { return C3Types.KW_CT_VACONST; } // fall through - case 362: break; + case 364: break; case 174: - { return C3Types.KW_ANYFAULT; + { return C3Types.KW_CT_VACOUNT; } // fall through - case 363: break; + case 365: break; case 175: - { return C3Types.KW_BFLOAT16; + { return C3Types.KW_CT_VASPLAT; } // fall through - case 364: break; + case 366: break; case 176: - { return C3Types.KW_CONTINUE; + { return C3Types.KW_ANYFAULT; } // fall through - case 365: break; + case 367: break; case 177: - { return C3Types.KW_DISTINCT; + { return C3Types.KW_BFLOAT16; } // fall through - case 366: break; + case 368: break; case 178: - { return C3Types.KW_FLOAT128; + { return C3Types.KW_CONTINUE; } // fall through - case 367: break; + case 369: break; case 179: - { return C3Types.KW_NEXTCASE; + { return C3Types.KW_DISTINCT; } // fall through - case 368: break; + case 370: break; case 180: - { return C3Types.KW_CT_EVALTYPE; + { return C3Types.KW_FLOAT128; } // fall through - case 369: break; + case 371: break; case 181: - { return C3Types.KW_CT_IS_CONST; + { return C3Types.KW_NEXTCASE; } // fall through - case 370: break; + case 372: break; case 182: - { return C3Types.KW_CT_TYPEFROM; + { return C3Types.KW_CT_EVALTYPE; } // fall through - case 371: break; + case 373: break; case 183: - { return C3Types.KW_BITSTRUCT; + { return C3Types.KW_CT_IS_CONST; } // fall through - case 372: break; + case 374: break; case 184: - { return C3Types.KW_FOREACH_R; + { return C3Types.KW_CT_TYPEFROM; } // fall through - case 373: break; + case 375: break; case 185: - { return C3Types.KW_INTERFACE; + { return C3Types.KW_BITSTRUCT; } // fall through - case 374: break; + case 376: break; case 186: - { return C3Types.KW_CT_ENDSWITCH; + { return C3Types.KW_FOREACH_R; } // fall through - case 375: break; + case 377: break; case 187: - { return C3Types.KW_CT_EXTNAMEOF; + { return C3Types.KW_INTERFACE; } // fall through - case 376: break; + case 378: break; case 188: - { return C3Types.KW_CT_STRINGIFY; + { return C3Types.KW_CT_ENDSWITCH; } // fall through - case 377: break; + case 379: break; case 189: + { return C3Types.KW_CT_EXTNAMEOF; + } + // fall through + case 380: break; + case 190: + { return C3Types.KW_CT_STRINGIFY; + } + // fall through + case 381: break; + case 191: { return C3Types.KW_CT_ENDFOREACH; } // fall through - case 378: break; + case 382: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/src/main/gen/org/c3lang/intellij/parser/C3Parser.java b/src/main/gen/org/c3lang/intellij/parser/C3Parser.java index b7544b4..5c216de 100644 --- a/src/main/gen/org/c3lang/intellij/parser/C3Parser.java +++ b/src/main/gen/org/c3lang/intellij/parser/C3Parser.java @@ -39,12 +39,12 @@ static boolean parse_root_(IElementType t, PsiBuilder b, int l) { create_token_set_(ASM_EXPR, ASSIGN_TYPE_EXPR, ATTRIBUTE_OPERATOR_EXPR, BINARY_EXPR, BUILTIN_CONST_EXPR, BUILTIN_EXPR, BYTES_EXPR, CALL_EXPR, COMPOUND_INIT_EXPR, CONSTANT_EXPR, CT_ANALYZE_EXPR, CT_ARG_EXPR, - CT_CALL_EXPR, CT_COND_EXPR, CT_DEFINED_CHECK_EXPR, CT_DEFINED_EXPR, - CT_FEATURE_EXPR, DECL_OR_EXPR, EXPR, EXPR_BLOCK_EXPR, - GROUPED_EXPR, INIT_LIST_EXPR, KEYWORD_EXPR, LAMBDA_DECL_EXPR, - LAMBDA_DECL_SHORT_EXPR, LITERAL_EXPR, LOCAL_IDENT_EXPR, OPTIONAL_EXPR, - PATH_AT_IDENT_EXPR, PATH_CONST_EXPR, PATH_IDENT_EXPR, STRING_EXPR, - TERNARY_EXPR, TYPE_ACCESS_EXPR, UNARY_EXPR), + CT_CALL_EXPR, CT_CONCAT_EXPR, CT_COND_EXPR, CT_DEFINED_CHECK_EXPR, + CT_DEFINED_EXPR, CT_FEATURE_EXPR, DECL_OR_EXPR, EXPR, + EXPR_BLOCK_EXPR, GROUPED_EXPR, INIT_LIST_EXPR, KEYWORD_EXPR, + LAMBDA_DECL_EXPR, LAMBDA_DECL_SHORT_EXPR, LITERAL_EXPR, LOCAL_IDENT_EXPR, + OPTIONAL_EXPR, PATH_AT_IDENT_EXPR, PATH_CONST_EXPR, PATH_IDENT_EXPR, + STRING_EXPR, TERNARY_EXPR, TYPE_ACCESS_EXPR, UNARY_EXPR), }; /* ********************************************************** */ @@ -106,50 +106,52 @@ public static boolean any_ident(PsiBuilder b, int l) { } /* ********************************************************** */ - // (param_path EQ)? (expr | type) | KW_CT_VASPLAT LP range_exp? RP | ELLIPSIS expr + // param_path (EQ (expr | type))? | expr | type | KW_CT_VASPLAT LP range_exp? RP | ELLIPSIS expr public static boolean arg(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arg")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, ARG, ""); r = arg_0(b, l + 1); - if (!r) r = arg_1(b, l + 1); - if (!r) r = arg_2(b, l + 1); + if (!r) r = expr(b, l + 1, -1); + if (!r) r = type(b, l + 1); + if (!r) r = arg_3(b, l + 1); + if (!r) r = arg_4(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } - // (param_path EQ)? (expr | type) + // param_path (EQ (expr | type))? private static boolean arg_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arg_0")) return false; boolean r; Marker m = enter_section_(b); - r = arg_0_0(b, l + 1); + r = param_path(b, l + 1); r = r && arg_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } - // (param_path EQ)? - private static boolean arg_0_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "arg_0_0")) return false; - arg_0_0_0(b, l + 1); + // (EQ (expr | type))? + private static boolean arg_0_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "arg_0_1")) return false; + arg_0_1_0(b, l + 1); return true; } - // param_path EQ - private static boolean arg_0_0_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "arg_0_0_0")) return false; + // EQ (expr | type) + private static boolean arg_0_1_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "arg_0_1_0")) return false; boolean r; Marker m = enter_section_(b); - r = param_path(b, l + 1); - r = r && consumeToken(b, EQ); + r = consumeToken(b, EQ); + r = r && arg_0_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // expr | type - private static boolean arg_0_1(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "arg_0_1")) return false; + private static boolean arg_0_1_0_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "arg_0_1_0_1")) return false; boolean r; r = expr(b, l + 1, -1); if (!r) r = type(b, l + 1); @@ -157,27 +159,27 @@ private static boolean arg_0_1(PsiBuilder b, int l) { } // KW_CT_VASPLAT LP range_exp? RP - private static boolean arg_1(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "arg_1")) return false; + private static boolean arg_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "arg_3")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_CT_VASPLAT, LP); - r = r && arg_1_2(b, l + 1); + r = r && arg_3_2(b, l + 1); r = r && consumeToken(b, RP); exit_section_(b, m, null, r); return r; } // range_exp? - private static boolean arg_1_2(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "arg_1_2")) return false; + private static boolean arg_3_2(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "arg_3_2")) return false; range_exp(b, l + 1); return true; } // ELLIPSIS expr - private static boolean arg_2(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "arg_2")) return false; + private static boolean arg_4(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "arg_4")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ELLIPSIS); @@ -1668,6 +1670,19 @@ private static boolean ct_case_stmt_2(PsiBuilder b, int l) { return true; } + /* ********************************************************** */ + // KW_CT_CONCAT | KW_CT_APPEND + public static boolean ct_concat(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "ct_concat")) return false; + if (!nextTokenIs(b, "", KW_CT_APPEND, KW_CT_CONCAT)) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, CT_CONCAT, ""); + r = consumeToken(b, KW_CT_CONCAT); + if (!r) r = consumeToken(b, KW_CT_APPEND); + exit_section_(b, l, m, r, false, null); + return r; + } + /* ********************************************************** */ // KW_CT_AND | KW_CT_OR public static boolean ct_cond(PsiBuilder b, int l) { @@ -2173,7 +2188,7 @@ private static boolean default_stmt_2(PsiBuilder b, int l) { } /* ********************************************************** */ - // KW_DEFER (KW_TRY | KW_CATCH)? statement + // KW_DEFER (KW_TRY | KW_CATCH | (LP KW_CATCH IDENT RP))? statement public static boolean defer_stmt(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "defer_stmt")) return false; if (!nextTokenIs(b, KW_DEFER)) return false; @@ -2186,19 +2201,32 @@ public static boolean defer_stmt(PsiBuilder b, int l) { return r; } - // (KW_TRY | KW_CATCH)? + // (KW_TRY | KW_CATCH | (LP KW_CATCH IDENT RP))? private static boolean defer_stmt_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "defer_stmt_1")) return false; defer_stmt_1_0(b, l + 1); return true; } - // KW_TRY | KW_CATCH + // KW_TRY | KW_CATCH | (LP KW_CATCH IDENT RP) private static boolean defer_stmt_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "defer_stmt_1_0")) return false; boolean r; + Marker m = enter_section_(b); r = consumeToken(b, KW_TRY); if (!r) r = consumeToken(b, KW_CATCH); + if (!r) r = defer_stmt_1_0_2(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + + // LP KW_CATCH IDENT RP + private static boolean defer_stmt_1_0_2(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "defer_stmt_1_0_2")) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeTokens(b, 0, LP, KW_CATCH, IDENT, RP); + exit_section_(b, m, null, r); return r; } @@ -4841,7 +4869,7 @@ private static boolean switch_body_0(PsiBuilder b, int l) { } /* ********************************************************** */ - // KW_SWITCH label? paren_cond? LB switch_body? RB + // KW_SWITCH label? paren_cond? AT_IDENT? LB switch_body? RB public static boolean switch_stmt(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switch_stmt")) return false; if (!nextTokenIs(b, KW_SWITCH)) return false; @@ -4850,8 +4878,9 @@ public static boolean switch_stmt(PsiBuilder b, int l) { r = consumeToken(b, KW_SWITCH); r = r && switch_stmt_1(b, l + 1); r = r && switch_stmt_2(b, l + 1); + r = r && switch_stmt_3(b, l + 1); r = r && consumeToken(b, LB); - r = r && switch_stmt_4(b, l + 1); + r = r && switch_stmt_5(b, l + 1); r = r && consumeToken(b, RB); exit_section_(b, m, SWITCH_STMT, r); return r; @@ -4871,9 +4900,16 @@ private static boolean switch_stmt_2(PsiBuilder b, int l) { return true; } + // AT_IDENT? + private static boolean switch_stmt_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "switch_stmt_3")) return false; + consumeToken(b, AT_IDENT); + return true; + } + // switch_body? - private static boolean switch_stmt_4(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "switch_stmt_4")) return false; + private static boolean switch_stmt_5(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "switch_stmt_5")) return false; switch_body(b, l + 1); return true; } @@ -5436,7 +5472,7 @@ private static boolean while_stmt_1(PsiBuilder b, int l) { // ATOM(path_at_ident_expr) ATOM(compound_init_expr) PREFIX(grouped_expr) ATOM(local_ident_expr) // ATOM(type_access_expr) ATOM(expr_block_expr) ATOM(ct_call_expr) ATOM(ct_feature_expr) // ATOM(ct_arg_expr) ATOM(ct_analyze_expr) ATOM(ct_defined_expr) ATOM(ct_cond_expr) - // ATOM(lambda_decl_expr) PREFIX(lambda_decl_short_expr) ATOM(init_list_expr) + // ATOM(ct_concat_expr) ATOM(lambda_decl_expr) PREFIX(lambda_decl_short_expr) ATOM(init_list_expr) public static boolean expr(PsiBuilder b, int l, int g) { if (!recursion_guard_(b, l, "expr")) return false; addVariant(b, ""); @@ -5464,6 +5500,7 @@ public static boolean expr(PsiBuilder b, int l, int g) { if (!r) r = ct_analyze_expr(b, l + 1); if (!r) r = ct_defined_expr(b, l + 1); if (!r) r = ct_cond_expr(b, l + 1); + if (!r) r = ct_concat_expr(b, l + 1); if (!r) r = lambda_decl_expr(b, l + 1); if (!r) r = lambda_decl_short_expr(b, l + 1); if (!r) r = init_list_expr(b, l + 1); @@ -5919,6 +5956,20 @@ public static boolean ct_cond_expr(PsiBuilder b, int l) { return r; } + // ct_concat LP expression_list RP + public static boolean ct_concat_expr(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "ct_concat_expr")) return false; + if (!nextTokenIsSmart(b, KW_CT_APPEND, KW_CT_CONCAT)) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, CT_CONCAT_EXPR, ""); + r = ct_concat(b, l + 1); + r = r && consumeToken(b, LP); + r = r && expression_list(b, l + 1); + r = r && consumeToken(b, RP); + exit_section_(b, l, m, r, false, null); + return r; + } + // lambda_decl compound_statement public static boolean lambda_decl_expr(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "lambda_decl_expr")) return false; diff --git a/src/main/gen/org/c3lang/intellij/psi/C3CtConcat.java b/src/main/gen/org/c3lang/intellij/psi/C3CtConcat.java new file mode 100644 index 0000000..968bdd1 --- /dev/null +++ b/src/main/gen/org/c3lang/intellij/psi/C3CtConcat.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package org.c3lang.intellij.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface C3CtConcat extends PsiElement { + +} diff --git a/src/main/gen/org/c3lang/intellij/psi/C3CtConcatExpr.java b/src/main/gen/org/c3lang/intellij/psi/C3CtConcatExpr.java new file mode 100644 index 0000000..c3b1ce5 --- /dev/null +++ b/src/main/gen/org/c3lang/intellij/psi/C3CtConcatExpr.java @@ -0,0 +1,16 @@ +// This is a generated file. Not intended for manual editing. +package org.c3lang.intellij.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface C3CtConcatExpr extends C3Expr { + + @NotNull + C3CtConcat getCtConcat(); + + @NotNull + C3ExpressionList getExpressionList(); + +} diff --git a/src/main/gen/org/c3lang/intellij/psi/C3Types.java b/src/main/gen/org/c3lang/intellij/psi/C3Types.java index fb5bace..743ec3b 100644 --- a/src/main/gen/org/c3lang/intellij/psi/C3Types.java +++ b/src/main/gen/org/c3lang/intellij/psi/C3Types.java @@ -60,6 +60,8 @@ public interface C3Types { IElementType CT_CALL = new C3ElementType("CT_CALL"); IElementType CT_CALL_EXPR = new C3ElementType("CT_CALL_EXPR"); IElementType CT_CASE_STMT = new C3ElementType("CT_CASE_STMT"); + IElementType CT_CONCAT = new C3ElementType("CT_CONCAT"); + IElementType CT_CONCAT_EXPR = new C3ElementType("CT_CONCAT_EXPR"); IElementType CT_COND = new C3ElementType("CT_COND"); IElementType CT_COND_EXPR = new C3ElementType("CT_COND_EXPR"); IElementType CT_DEFINED_CHECK_EXPR = new C3ElementType("CT_DEFINED_CHECK_EXPR"); @@ -244,8 +246,10 @@ public interface C3Types { IElementType KW_CONTINUE = new C3TokenType("KW_CONTINUE"); IElementType KW_CT_ALIGNOF = new C3TokenType("KW_CT_ALIGNOF"); IElementType KW_CT_AND = new C3TokenType("KW_CT_AND"); + IElementType KW_CT_APPEND = new C3TokenType("KW_CT_APPEND"); IElementType KW_CT_ASSERT = new C3TokenType("KW_CT_ASSERT"); IElementType KW_CT_CASE = new C3TokenType("KW_CT_CASE"); + IElementType KW_CT_CONCAT = new C3TokenType("KW_CT_CONCAT"); IElementType KW_CT_DEFAULT = new C3TokenType("KW_CT_DEFAULT"); IElementType KW_CT_DEFINED = new C3TokenType("KW_CT_DEFINED"); IElementType KW_CT_ECHO = new C3TokenType("KW_CT_ECHO"); @@ -523,6 +527,12 @@ else if (type == CT_CALL_EXPR) { else if (type == CT_CASE_STMT) { return new C3CtCaseStmtImpl(node); } + else if (type == CT_CONCAT) { + return new C3CtConcatImpl(node); + } + else if (type == CT_CONCAT_EXPR) { + return new C3CtConcatExprImpl(node); + } else if (type == CT_COND) { return new C3CtCondImpl(node); } diff --git a/src/main/gen/org/c3lang/intellij/psi/C3Visitor.java b/src/main/gen/org/c3lang/intellij/psi/C3Visitor.java index 4902f90..ea2eea0 100644 --- a/src/main/gen/org/c3lang/intellij/psi/C3Visitor.java +++ b/src/main/gen/org/c3lang/intellij/psi/C3Visitor.java @@ -215,6 +215,14 @@ public void visitCtCaseStmt(@NotNull C3CtCaseStmt o) { visitPsiElement(o); } + public void visitCtConcat(@NotNull C3CtConcat o) { + visitPsiElement(o); + } + + public void visitCtConcatExpr(@NotNull C3CtConcatExpr o) { + visitExpr(o); + } + public void visitCtCond(@NotNull C3CtCond o) { visitPsiElement(o); } diff --git a/src/main/gen/org/c3lang/intellij/psi/impl/C3CtConcatExprImpl.java b/src/main/gen/org/c3lang/intellij/psi/impl/C3CtConcatExprImpl.java new file mode 100644 index 0000000..0f01c6d --- /dev/null +++ b/src/main/gen/org/c3lang/intellij/psi/impl/C3CtConcatExprImpl.java @@ -0,0 +1,42 @@ +// This is a generated file. Not intended for manual editing. +package org.c3lang.intellij.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static org.c3lang.intellij.psi.C3Types.*; +import org.c3lang.intellij.psi.*; + +public class C3CtConcatExprImpl extends C3ExprImpl implements C3CtConcatExpr { + + public C3CtConcatExprImpl(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull C3Visitor visitor) { + visitor.visitCtConcatExpr(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof C3Visitor) accept((C3Visitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public C3CtConcat getCtConcat() { + return notNullChild(PsiTreeUtil.getChildOfType(this, C3CtConcat.class)); + } + + @Override + @NotNull + public C3ExpressionList getExpressionList() { + return notNullChild(PsiTreeUtil.getChildOfType(this, C3ExpressionList.class)); + } + +} diff --git a/src/main/gen/org/c3lang/intellij/psi/impl/C3CtConcatImpl.java b/src/main/gen/org/c3lang/intellij/psi/impl/C3CtConcatImpl.java new file mode 100644 index 0000000..309bc73 --- /dev/null +++ b/src/main/gen/org/c3lang/intellij/psi/impl/C3CtConcatImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package org.c3lang.intellij.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static org.c3lang.intellij.psi.C3Types.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import org.c3lang.intellij.psi.*; + +public class C3CtConcatImpl extends ASTWrapperPsiElement implements C3CtConcat { + + public C3CtConcatImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull C3Visitor visitor) { + visitor.visitCtConcat(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof C3Visitor) accept((C3Visitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/java/org/c3lang/intellij/C3.bnf b/src/main/java/org/c3lang/intellij/C3.bnf index 17a0300..c63a9bc 100644 --- a/src/main/java/org/c3lang/intellij/C3.bnf +++ b/src/main/java/org/c3lang/intellij/C3.bnf @@ -119,7 +119,7 @@ enum_param_decl ::= type IDENT enum_list ::= enum_constant (COMMA enum_constant ?)* COMMA? enum_constant ::= CONST_IDENT attributes? (EQ expr)? arg_list ::= arg (COMMA arg)* COMMA? -arg ::= (param_path EQ)? (expr | type) | KW_CT_VASPLAT LP range_exp? RP | ELLIPSIS expr +arg ::= param_path (EQ (expr | type))? | expr | type | KW_CT_VASPLAT LP range_exp? RP | ELLIPSIS expr global_decl ::= KW_TLOCAL? optional_type IDENT (global_multi_declaration | global_single_declaration) EOS @@ -148,6 +148,7 @@ ct_call ::= KW_CT_ALIGNOF | KW_CT_EXTNAMEOF | KW_CT_NAMEOF | KW_CT_OFFSETOF | KW ct_arg ::= KW_CT_VACONST | KW_CT_VAARG | KW_CT_VAREF | KW_CT_VAEXPR ct_analyze ::= KW_CT_EVAL | KW_CT_SIZEOF | KW_CT_STRINGIFY | KW_CT_IS_CONST ct_cond ::= KW_CT_AND | KW_CT_OR +ct_concat ::= KW_CT_CONCAT | KW_CT_APPEND flat_path ::= primary_group param_path? | type param_path ::= param_path_element+ @@ -254,7 +255,7 @@ else_part ::= KW_ELSE (if_stmt | compound_statement) switch_body ::= (case_stmt | default_stmt)+ case_stmt ::= KW_CASE (expr (DOTDOT expr)? | type) COLON statement_list? default_stmt ::= KW_DEFAULT COLON statement_list? -switch_stmt ::= KW_SWITCH label? paren_cond? LB switch_body? RB +switch_stmt ::= KW_SWITCH label? paren_cond? AT_IDENT? LB switch_body? RB expression_list ::= decl_or_expr (COMMA decl_or_expr)* cond ::= cond_repeat (COMMA (try_unwrap_chain | catch_unwrap))? | try_unwrap_chain | catch_unwrap @@ -278,7 +279,7 @@ asm_expr ::= CT_IDENT | CT_CONST_IDENT | AMP? IDENT | CONST_IDENT asm_addr ::= asm_expr (add_bin_op asm_expr asm_addr_trailing?)? asm_addr_trailing ::= STAR INT_LITERAL (add_bin_op INT_LITERAL)? | (shift_bin_op | add_bin_op) INT_LITERAL -defer_stmt ::= KW_DEFER (KW_TRY | KW_CATCH)? statement +defer_stmt ::= KW_DEFER (KW_TRY | KW_CATCH | (LP KW_CATCH IDENT RP))? statement compound_statement ::= LB statement_list? RB @@ -343,6 +344,7 @@ ct_defined_check_expr ::= expr | type ct_defined_check_expr_list ::= ct_defined_check_expr (COMMA ct_defined_check_expr)* ct_defined_expr ::= KW_CT_DEFINED LP ct_defined_check_expr_list RP ct_cond_expr ::= ct_cond LP expression_list RP +ct_concat_expr ::= ct_concat LP expression_list RP lambda_decl_expr ::= lambda_decl compound_statement lambda_decl_short_expr ::= lambda_decl IMPLIES expr call_expr ::= expr call_expr_tail @@ -375,6 +377,7 @@ private primary_group ::= literal_expr | ct_analyze_expr | ct_defined_expr | ct_cond_expr + | ct_concat_expr | lambda_decl_expr | lambda_decl_short_expr | init_list_expr diff --git a/src/main/java/org/c3lang/intellij/C3.flex b/src/main/java/org/c3lang/intellij/C3.flex index 3f53640..2a6dce0 100644 --- a/src/main/java/org/c3lang/intellij/C3.flex +++ b/src/main/java/org/c3lang/intellij/C3.flex @@ -34,7 +34,7 @@ IDENTIFIER = [_]*{DC}{AN}* E = [Ee][+-]?{D}+ P = [Pp][+-]?{D}+ SIZES = 8|16|32|64|128 -INTTYPE = [uU] ([lL] | {SIZES}?) | [iI] {SIZES} +INTTYPE = [lL] | [uU][lL] | [uU] {SIZES}? | [iI] {SIZES} REALTYPE = [fF]{SIZES}? INT = {D}(_*{D})* HINT = {H}(_*{H})* @@ -126,6 +126,8 @@ LINE_COMMENT = "//" .* "while" { return C3Types.KW_WHILE; } "$alignof" { return C3Types.KW_CT_ALIGNOF; } "$and" { return C3Types.KW_CT_AND; } + "$concat" { return C3Types.KW_CT_CONCAT; } + "$append" { return C3Types.KW_CT_APPEND; } "$assert" { return C3Types.KW_CT_ASSERT; } "$case" { return C3Types.KW_CT_CASE; } "$default" { return C3Types.KW_CT_DEFAULT; }