@lostcityrs/runescript 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runescript.js +1 -1
- package/package.json +1 -1
package/dist/runescript.js
CHANGED
|
@@ -26,4 +26,4 @@ import{createRequire as u9}from"node:module";var I0=(U,X)=>()=>(X||U((X={exports
|
|
|
26
26
|
`),Q=0,F=J[Q++];if(F!=="token literal names:")throw Error("Unexpected data entry");do{if(F=J[Q++],F.length===0)break;$.push(F==="null"?null:F)}while(!0);if(F=J[Q++],F!=="token symbolic names:")throw Error("Unexpected data entry");do{if(F=J[Q++],F.length===0)break;Z.push(F==="null"?null:F)}while(!0);if(F=J[Q++],F!=="rule names:")throw Error("Unexpected data entry");do{if(F=J[Q++],F.length===0)break;X.push(F)}while(!0);if(F=J[Q++],F==="channel names:"){do{if(F=J[Q++],F.length===0)break;Y.push(F)}while(!0);if(F=J[Q++],F!=="mode names:")throw Error("Unexpected data entry");do{if(F=J[Q++],F.length===0)break;G.push(F)}while(!0)}if(F=J[Q++],F!=="atn:")throw Error("Unexpected data entry");F=J[Q++];let _=F.split(","),I,H=[];for(let P=0;P<_.length;++P){let g=_[P];if(g.startsWith("["))I=Number(g.substring(1).trim());else if(g.endsWith("]"))I=Number(g.substring(0,g.length-1).trim());else I=Number(g.trim());H[P]=I}return{atn:new N1().deserialize(H),vocabulary:new f0($,Z,[]),ruleNames:X,channels:Y.length>0?Y:void 0,modes:G.length>0?G:void 0}}},n6=class{static{A(this,"AbstractParseTreeVisitor")}visit(U){return U.accept(this)}visitChildren(U){let X=this.defaultResult(),Y=U.getChildCount();for(let G=0;G<Y;G++){if(!this.shouldVisitNextChild(U,X))break;let $=U.getChild(G);if($){let Z=$.accept(this);X=this.aggregateResult(X,Z)}}return X}visitTerminal(U){return this.defaultResult()}visitErrorNode(U){return this.defaultResult()}defaultResult(){return null}shouldVisitNextChild(U,X){return!0}aggregateResult(U,X){return X}},XY=class U{static{A(this,"ParseTreeWalker")}static DEFAULT=new U;walk(X,Y){if(Y instanceof L2)X.visitErrorNode(Y);else if(Y instanceof C0)X.visitTerminal(Y);else{let $=Y;this.enterRule(X,$);for(let Z=0;Z<Y.getChildCount();Z++)this.walk(X,Y.getChild(Z));this.exitRule(X,$)}}enterRule(X,Y){let G=Y.ruleContext;X.enterEveryRule(G),G.enterRule(X)}exitRule(X,Y){let G=Y.ruleContext;G.exitRule(X),X.exitEveryRule(G)}},H0;((U)=>{U.fromString=A((X)=>{return new A8(X)},"fromString")})(H0||(H0={}));var A8=class{static{A(this,"CharStreamImpl")}name="";index=0;data;constructor(U){let X=[];for(let Y of U)X.push(Y.codePointAt(0));this.data=new Uint32Array(X)}reset(){this.index=0}consume(){if(this.index>=this.data.length)throw Error("cannot consume EOF");this.index+=1}LA(U){if(U===0)return 0;if(U<0)U+=1;let X=this.index+U-1;if(X<0||X>=this.data.length)return R.EOF;return this.data[X]}mark(){return-1}release(U){}seek(U){if(U<=this.index){this.index=U;return}this.index=Math.min(U,this.data.length)}getTextFromRange(U,X){if(X=X??this.data.length-1,X>=this.data.length)X=this.data.length-1;if(U>=this.data.length)return"";return this.stringFromRange(U,X+1)}getTextFromInterval(U){let{start:X,stop:Y}=U;if(Y>=this.data.length)Y=this.data.length-1;if(X>=this.data.length)return"";return this.stringFromRange(X,Y+1)}toString(){return this.stringFromRange(0)}get size(){return this.data.length}getSourceName(){if(this.name)return this.name;return r2.UNKNOWN_SOURCE_NAME}stringFromRange(U,X){let Y=this.data.slice(U,X),G="";return Y.forEach(($)=>{G+=String.fromCodePoint($)}),G}},p6=A((U)=>{return U.setText!==void 0},"isWritableToken"),K8=class{static{A(this,"BufferedTokenStream")}tokenSource;tokens=[];p=-1;fetchedEOF=!1;constructor(U){this.tokenSource=U}mark(){return 0}release(U){}reset(){this.seek(0)}seek(U){this.lazyInit(),this.p=this.adjustSeekIndex(U)}get size(){return this.tokens.length}get index(){return this.p}get(U){return this.lazyInit(),this.tokens[U]}consume(){let U=!1;if(this.p>=0)if(this.fetchedEOF)U=this.p<this.tokens.length-1;else U=this.p<this.tokens.length;else U=!1;if(!U&&this.LA(1)===R.EOF)throw Error("cannot consume EOF");if(this.sync(this.p+1))this.p=this.adjustSeekIndex(this.p+1)}sync(U){let X=U-this.tokens.length+1;if(X>0)return this.fetch(X)>=X;return!0}fetch(U){if(this.fetchedEOF)return 0;for(let X=0;X<U;X++){let Y=this.tokenSource.nextToken();if(p6(Y))Y.tokenIndex=this.tokens.length;if(this.tokens.push(Y),Y.type===R.EOF)return this.fetchedEOF=!0,X+1}return U}getTokens(U,X,Y){if(this.lazyInit(),U===void 0&&X===void 0)return this.tokens;if(U??=0,X===void 0)X=this.tokens.length-1;if(U<0||X>=this.tokens.length||X<0||U>=this.tokens.length)throw RangeError("start "+U+" or stop "+X+" not in 0.."+(this.tokens.length-1));if(U>X)return[];if(Y===void 0)return this.tokens.slice(U,X+1);let G=[];if(X>=this.tokens.length)X=this.tokens.length-1;for(let $=U;$<X;$++){let Z=this.tokens[$];if(Z.type===R.EOF){G.push(Z);break}if(Y.has(Z.type))G.push(Z)}return G}LA(U){return this.LT(U)?.type??R.INVALID_TYPE}LB(U){if(this.p-U<0)return null;return this.tokens[this.p-U]}LT(U){if(this.lazyInit(),U===0)return null;if(U<0)return this.LB(-U);let X=this.p+U-1;if(this.sync(X),X>=this.tokens.length)return this.tokens[this.tokens.length-1];return this.tokens[X]}adjustSeekIndex(U){return U}lazyInit(){if(this.p===-1)this.setup()}setup(){this.sync(0),this.p=this.adjustSeekIndex(0)}setTokenSource(U){this.tokenSource=U,this.tokens=[],this.p=-1,this.fetchedEOF=!1}nextTokenOnChannel(U,X){if(this.sync(U),U>=this.tokens.length)return-1;let Y=this.tokens[U];while(Y.channel!==X){if(Y.type===R.EOF)return-1;U+=1,this.sync(U),Y=this.tokens[U]}return U}previousTokenOnChannel(U,X){if(U>=this.tokens.length)return this.tokens.length-1;while(U>=0){let Y=this.tokens[U];if(Y.type===R.EOF||Y.channel===X)return U;--U}return U}getHiddenTokensToRight(U,X){if(X===void 0)X=-1;if(this.lazyInit(),U<0||U>=this.tokens.length)throw Error(`${U} not in 0..${this.tokens.length-1}`);let Y=this.nextTokenOnChannel(U+1,g0.DEFAULT_TOKEN_CHANNEL),G=U+1,$=Y===-1?this.tokens.length-1:Y;return this.filterForChannel(G,$,X)}getHiddenTokensToLeft(U,X){if(X===void 0)X=-1;if(this.lazyInit(),U<0||U>=this.tokens.length)throw Error(`${U} not in 0..${this.tokens.length-1}`);let Y=this.previousTokenOnChannel(U-1,g0.DEFAULT_TOKEN_CHANNEL);if(Y===U-1)return;let G=Y+1,$=U-1;return this.filterForChannel(G,$,X)}filterForChannel(U,X,Y){let G=[];for(let $=U;$<X+1;$++){let Z=this.tokens[$];if(Y===-1){if(Z.channel!==g0.DEFAULT_TOKEN_CHANNEL)G.push(Z)}else if(Z.channel===Y)G.push(Z)}if(G.length===0)return;return G}getSourceName(){return this.tokenSource.sourceName}getText(){return this.getTextFromInterval(v.of(0,this.size-1))}getTextFromInterval(U){let{start:X,stop:Y}=U;if(X<0||Y<0)return"";if(this.sync(Y),Y>=this.tokens.length)Y=this.tokens.length-1;let G="";for(let $=X;$<=Y;++$){let Z=this.tokens[$];if(Z.type===R.EOF)break;G+=Z.text}return G}getTextFromContext(U){return this.getTextFromInterval(U.getSourceInterval())}getTextFromRange(U,X){if(U!==null&&X!==null)return this.getTextFromInterval(v.of(U.tokenIndex,X.tokenIndex));return""}fill(){this.lazyInit();while(this.fetch(1000)===1000);}setLine(U){this.tokenSource.line=U}setColumn(U){this.tokenSource.column=U}},G3=class extends K8{static{A(this,"CommonTokenStream")}channel=R.DEFAULT_CHANNEL;constructor(U,X){super(U);this.channel=X??R.DEFAULT_CHANNEL}adjustSeekIndex(U){return this.nextTokenOnChannel(U,this.channel)}LB(U){if(U===0||this.index-U<0)return null;let X=this.index,Y=1;while(Y<=U)X=this.previousTokenOnChannel(X-1,this.channel),Y+=1;if(X<0)return null;return this.tokens[X]}LT(U){if(this.lazyInit(),U===0)return null;if(U<0)return this.LB(-U);let X=this.index,Y=1;while(Y<U){if(this.sync(X+1))X=this.nextTokenOnChannel(X+1,this.channel);Y+=1}return this.tokens[X]}getNumberOfOnChannelTokens(){let U=0;this.fill();for(let X of this.tokens){if(X.channel===this.channel)U+=1;if(X.type===R.EOF)break}return U}},j0=class U extends g0{static{A(this,"XPathLexer")}static TOKEN_REF=1;static RULE_REF=2;static ANYWHERE=3;static ROOT=4;static WILDCARD=5;static BANG=6;static ID=7;static STRING=8;static channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"];static literalNames=[null,null,null,"'//'","'/'","'*'","'!'"];static symbolicNames=[null,"TOKEN_REF","RULE_REF","ANYWHERE","ROOT","WILDCARD","BANG","ID","STRING"];static modeNames=["DEFAULT_MODE"];static ruleNames=["ANYWHERE","ROOT","WILDCARD","BANG","ID","NameChar","NameStartChar","STRING"];constructor(X){super(X);this.interpreter=new s1(this,U._ATN,U.decisionsToDFA,new E1)}get grammarFileName(){return"XPathLexer.g4"}get literalNames(){return U.literalNames}get symbolicNames(){return U.symbolicNames}get ruleNames(){return U.ruleNames}get serializedATN(){return U._serializedATN}get channelNames(){return U.channelNames}get modeNames(){return U.modeNames}action(X,Y,G){switch(Y){case 4:this.ID_action(X,G);break}}ID_action(X,Y){switch(Y){case 0:let G=this.text;if(G.charAt(0)===G.charAt(0).toUpperCase())this.type=U.TOKEN_REF;else this.type=U.RULE_REF;break}}static _serializedATN=[4,0,8,48,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,5,4,29,8,4,10,4,12,4,32,9,4,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,5,7,42,8,7,10,7,12,7,45,9,7,1,7,1,7,1,43,0,8,1,3,3,4,5,5,7,6,9,7,11,0,13,0,15,8,1,0,2,784,0,0,8,14,27,48,57,65,90,95,95,97,122,127,159,170,170,173,173,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1536,1541,1552,1562,1564,1564,1568,1641,1646,1747,1749,1757,1759,1768,1770,1788,1791,1791,1807,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2160,2183,2185,2190,2192,2193,2200,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157,3158,3160,3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3457,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5909,5919,5940,5952,5971,5984,5996,5998,6000,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6847,6862,6912,6988,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8203,8207,8234,8238,8255,8256,8276,8276,8288,8292,8294,8303,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43047,43052,43052,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276,65279,65279,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65529,65531,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68903,68912,68921,69248,69289,69291,69292,69296,69297,69373,69404,69415,69415,69424,69456,69488,69509,69552,69572,69600,69622,69632,69702,69734,69749,69759,69818,69821,69821,69826,69826,69837,69837,69840,69864,69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006,70006,70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163,70199,70206,70209,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70753,70784,70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453,71467,71472,71481,71488,71494,71680,71738,71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960,71989,71991,71992,71995,72003,72016,72025,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368,72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440,73462,73472,73488,73490,73530,73534,73538,73552,73561,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78933,82944,83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880,92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179,94180,94192,94193,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,113821,113822,113824,113827,118528,118573,118576,118598,119141,119145,119149,119170,119173,119179,119210,119213,119362,119364,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,121344,121398,121403,121452,121461,121461,121476,121476,121499,121503,121505,121519,122624,122654,122661,122666,122880,122886,122888,122904,122907,122913,122915,122916,122918,122922,122928,122989,123023,123023,123136,123180,123184,123197,123200,123209,123214,123214,123536,123566,123584,123641,124112,124153,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125136,125142,125184,125259,125264,125273,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,130032,130041,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,917505,917505,917536,917631,917760,917999,662,0,65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69248,69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71488,71494,71680,71723,71840,71903,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,73112,73440,73458,73474,73474,73476,73488,73490,73523,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,122624,122654,122661,122666,122928,122989,123136,123180,123191,123197,123214,123214,123536,123565,123584,123627,124112,124139,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125184,125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,47,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,15,1,0,0,0,1,17,1,0,0,0,3,20,1,0,0,0,5,22,1,0,0,0,7,24,1,0,0,0,9,26,1,0,0,0,11,35,1,0,0,0,13,37,1,0,0,0,15,39,1,0,0,0,17,18,5,47,0,0,18,19,5,47,0,0,19,2,1,0,0,0,20,21,5,47,0,0,21,4,1,0,0,0,22,23,5,42,0,0,23,6,1,0,0,0,24,25,5,33,0,0,25,8,1,0,0,0,26,30,3,13,6,0,27,29,3,11,5,0,28,27,1,0,0,0,29,32,1,0,0,0,30,28,1,0,0,0,30,31,1,0,0,0,31,33,1,0,0,0,32,30,1,0,0,0,33,34,6,4,0,0,34,10,1,0,0,0,35,36,7,0,0,0,36,12,1,0,0,0,37,38,7,1,0,0,38,14,1,0,0,0,39,43,5,39,0,0,40,42,9,0,0,0,41,40,1,0,0,0,42,45,1,0,0,0,43,44,1,0,0,0,43,41,1,0,0,0,44,46,1,0,0,0,45,43,1,0,0,0,46,47,5,39,0,0,47,16,1,0,0,0,3,0,30,43,1,1,4,0];static __ATN;static get _ATN(){if(!U.__ATN)U.__ATN=new N1().deserialize(U._serializedATN);return U.__ATN}static vocabulary=new f0(U.literalNames,U.symbolicNames,[]);get vocabulary(){return U.vocabulary}static decisionsToDFA=U._ATN.decisionToState.map((X,Y)=>{return new o0(X,Y)})},D8=class extends Y3{static{A(this,"XPathLexerErrorListener")}syntaxError(U,X,Y,G,$,Z){}},n1=class{static{A(this,"XPathElement")}invert;nodeName;constructor(U){this.nodeName=U,this.invert=!1}toString(){return"XPathElement["+(this.invert?"!":"")+this.nodeName+"]"}},B8=class extends n1{static{A(this,"XPathRuleAnywhereElement")}ruleIndex;constructor(U,X){super(U);this.ruleIndex=X}evaluate(U){return J1.findAllRuleNodes(U,this.ruleIndex)}toString(){return"XPathRuleAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},w8=class extends n1{static{A(this,"XPathRuleElement")}ruleIndex;constructor(U,X){super(U);this.ruleIndex=X}evaluate(U){let X=[];for(let Y of J1.getChildren(U))if(Y instanceof C){if(Y.ruleIndex===this.ruleIndex&&!this.invert||Y.ruleIndex!==this.ruleIndex&&this.invert)X.push(Y)}return X}toString(){return"XPathRuleElement["+(this.invert?"!":"")+this.nodeName+"]"}},R8=class extends n1{static{A(this,"XPathTokenAnywhereElement")}tokenType;constructor(U,X){super(U);this.tokenType=X}evaluate(U){return J1.findAllTokenNodes(U,this.tokenType)}toString(){return"XPathTokenAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},H8=class extends n1{static{A(this,"XPathTokenElement")}tokenType;constructor(U,X){super(U);this.tokenType=X}evaluate(U){let X=[];for(let Y of J1.getChildren(U))if(Y instanceof C0&&Y.symbol){if(Y.symbol.type===this.tokenType&&!this.invert||Y.symbol.type!==this.tokenType&&this.invert)X.push(Y)}return X}toString(){return"XPathTokenElement["+(this.invert?"!":"")+this.nodeName+"]"}},L8=class extends n1{static{A(this,"XPathWildcardAnywhereElement")}constructor(){super(W4.WILDCARD)}evaluate(U){if(this.invert)return[];return J1.descendants(U)}toString(){return"XPathWildcardAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},M8=class extends n1{static{A(this,"XPathWildcardElement")}constructor(){super(W4.WILDCARD)}evaluate(U){let X=[];if(this.invert)return X;for(let Y of J1.getChildren(U))X.push(Y);return X}toString(){return"XPathWildcardElement["+(this.invert?"!":"")+this.nodeName+"]"}},W4=class U{static{A(this,"XPath")}static WILDCARD="*";static NOT="!";path;elements;parser;constructor(X,Y){this.parser=X,this.path=Y,this.elements=this.split(Y)}static findAll(X,Y,G){return new U(G,Y).evaluate(X)}split(X){let Y=new j0(H0.fromString(X));Y.recover=(F)=>{throw F},Y.removeErrorListeners(),Y.addErrorListener(new D8);let G=new G3(Y);try{G.fill()}catch(F){if(F instanceof U3){let I="Invalid tokens or characters at index "+Y.column+" in path '"+X+"' -- "+F.message;throw RangeError(I)}throw F}let $=G.getTokens(),Z=[],J=$.length,Q=0;U:while(Q<J){let F=$[Q],_;switch(F.type){case j0.ROOT:case j0.ANYWHERE:let I=F.type===j0.ANYWHERE;Q++,_=$[Q];let H=_.type===j0.BANG;if(H)Q++,_=$[Q];let j=this.getXPathElement(_,I);j.invert=H,Z.push(j),Q++;break;case j0.TOKEN_REF:case j0.RULE_REF:case j0.WILDCARD:Z.push(this.getXPathElement(F,!1)),++Q;break;case R.EOF:break U;default:throw Error("Unknown path element "+F)}}return Z}evaluate(X){let Y=new C(null);Y.addChild(X);let G=new Set([Y]),$=0;while($<this.elements.length){let Z=new Set;for(let J of G)if(J.getChildCount()>0)this.elements[$].evaluate(J).forEach((F)=>{Z.add(F)},Z);$++,G=Z}return G}getXPathElement(X,Y){if(X.type===R.EOF)throw Error("Missing path element at end of path");let G=X.text;if(G==null)throw Error("Expected wordToken to have text content.");let $=this.parser.getTokenType(G),Z=this.parser.getRuleIndex(G);switch(X.type){case j0.WILDCARD:return Y?new L8:new M8;case j0.TOKEN_REF:case j0.STRING:if($===R.INVALID_TYPE)throw Error(G+" at index "+X.start+" isn't a valid token name");return Y?new R8(G,$):new H8(G,$);default:if(Z===-1)throw Error(G+" at index "+X.start+" isn't a valid rule name");return Y?new B8(G,Z):new w8(G,Z)}}},o6=class{static{A(this,"Chunk")}},k8=class{static{A(this,"ParseTreeMatch")}tree;pattern;labels;mismatchedNode;constructor(U,X,Y,G){this.tree=U,this.pattern=X,this.labels=Y,this.mismatchedNode=G}get(U){let X=this.labels.get(U);if(!X||X.length===0)return null;return X[X.length-1]}getAll(U){return this.labels.get(U)??[]}getLabels(){return this.labels}getMismatchedNode(){return this.mismatchedNode}succeeded(){return!this.mismatchedNode}getPattern(){return this.pattern}getTree(){return this.tree}toString(){return`Match ${this.succeeded()?"succeeded":"failed"}; found ${this.getLabels().size} labels`}},O8=class{static{A(this,"ParseTreePattern")}patternRuleIndex;pattern;patternTree;matcher;constructor(U,X,Y,G){this.matcher=U,this.patternRuleIndex=Y,this.pattern=X,this.patternTree=G}match(U){return this.matcher.match(U,this)}matches(U){return this.matcher.match(U,this).succeeded()}findAll(U,X){let Y=W4.findAll(U,X,this.matcher.getParser()),G=[];for(let $ of Y){let Z=this.match($);if(Z.succeeded())G.push(Z)}return G}getMatcher(){return this.matcher}getPattern(){return this.pattern}getPatternRuleIndex(){return this.patternRuleIndex}getPatternTree(){return this.patternTree}},H2=class extends V{static{A(this,"InputMismatchException")}constructor(U){super({message:"",recognizer:U,input:U.inputStream,ctx:U.context});this.offendingToken=U.getCurrentToken()}},M2=class extends V{static{A(this,"FailedPredicateException")}ruleIndex=0;predicateIndex=0;predicate;constructor(U,X,Y=null){super({message:j8(X??"no predicate",Y??null),recognizer:U,input:U.inputStream,ctx:U.context});let $=U.atn.states[U.state].transitions[0];if($ instanceof y6)this.ruleIndex=$.ruleIndex,this.predicateIndex=$.predIndex;else this.ruleIndex=0,this.predicateIndex=0;this.predicate=X,this.offendingToken=U.getCurrentToken()}},j8=A((U,X)=>{if(X!==null)return X;return"failed predicate: {"+U+"}?"},"formatMessage"),i6=class{static{A(this,"DefaultErrorStrategy")}errorRecoveryMode=!1;lastErrorIndex=-1;lastErrorStates=new E0;nextTokensContext=null;nextTokenState=0;reset(U){this.endErrorCondition(U)}beginErrorCondition(U){this.errorRecoveryMode=!0}inErrorRecoveryMode(U){return this.errorRecoveryMode}endErrorCondition(U){this.errorRecoveryMode=!1,this.lastErrorStates=new E0,this.lastErrorIndex=-1}reportMatch(U){this.endErrorCondition(U)}reportError(U,X){if(this.inErrorRecoveryMode(U))return;if(this.beginErrorCondition(U),X instanceof h1)this.reportNoViableAlternative(U,X);else if(X instanceof H2)this.reportInputMismatch(U,X);else if(X instanceof M2)this.reportFailedPredicate(U,X);else U.notifyErrorListeners(X.message,X.offendingToken,X)}recover(U,X){if(this.lastErrorIndex===U.inputStream?.index&&this.lastErrorStates.contains(U.state))U.consume();this.lastErrorIndex=U.inputStream?.index??0,this.lastErrorStates.addOne(U.state);let Y=this.getErrorRecoverySet(U);this.consumeUntil(U,Y)}sync(U){if(this.inErrorRecoveryMode(U))return;let X=U.atn.states[U.state],Y=U.tokenStream.LA(1),G=U.atn.nextTokens(X);if(G.contains(Y)){this.nextTokensContext=null,this.nextTokenState=f.INVALID_STATE_NUMBER;return}if(G.contains(R.EPSILON)){if(this.nextTokensContext===null)this.nextTokensContext=U.context,this.nextTokenState=U.state;return}switch(X.constructor.stateType){case f.BLOCK_START:case f.STAR_BLOCK_START:case f.PLUS_BLOCK_START:case f.STAR_LOOP_ENTRY:{if(this.singleTokenDeletion(U)!==null)return;throw new H2(U)}case f.PLUS_LOOP_BACK:case f.STAR_LOOP_BACK:{this.reportUnwantedToken(U);let $=new E0;$.addSet(U.getExpectedTokens());let Z=$.addSet(this.getErrorRecoverySet(U));this.consumeUntil(U,Z);break}default:}}reportNoViableAlternative(U,X){if(X.message.length>0){U.notifyErrorListeners(X.message,X.offendingToken,X);return}let Y=U.tokenStream,G;if(Y!==null&&X.startToken)if(X.startToken.type===R.EOF)G="<EOF>";else G=Y.getTextFromRange(X.startToken,X.offendingToken);else G="<unknown input>";let $="no viable alternative at input "+this.escapeWSAndQuote(G);U.notifyErrorListeners($,X.offendingToken,X)}reportInputMismatch(U,X){if(X.message.length>0){U.notifyErrorListeners(X.message,X.offendingToken,X);return}let Y="mismatched input "+this.getTokenErrorDisplay(X.offendingToken)+" expecting "+X.getExpectedTokens().toStringWithVocabulary(U.vocabulary);U.notifyErrorListeners(Y,X.offendingToken,X)}reportFailedPredicate(U,X){let G="rule "+U.ruleNames[U.context.ruleIndex]+" "+X.message;U.notifyErrorListeners(G,X.offendingToken,X)}reportUnwantedToken(U){if(this.inErrorRecoveryMode(U))return;this.beginErrorCondition(U);let X=U.getCurrentToken(),Y=this.getTokenErrorDisplay(X),G=this.getExpectedTokens(U),$="extraneous input "+Y+" expecting "+G.toStringWithVocabulary(U.vocabulary);U.notifyErrorListeners($,X,null)}reportMissingToken(U){if(this.inErrorRecoveryMode(U))return;this.beginErrorCondition(U);let X=U.getCurrentToken(),G="missing "+this.getExpectedTokens(U).toStringWithVocabulary(U.vocabulary)+" at "+this.getTokenErrorDisplay(X);U.notifyErrorListeners(G,X,null)}recoverInline(U){let X=this.singleTokenDeletion(U);if(X)return U.consume(),X;if(this.singleTokenInsertion(U))return this.getMissingSymbol(U);throw new H2(U)}singleTokenInsertion(U){let X=U.tokenStream?.LA(1)??-1,Y=U.atn,$=Y.states[U.state].transitions[0].target;if(Y.nextTokens($,U.context??void 0).contains(X))return this.reportMissingToken(U),!0;return!1}singleTokenDeletion(U){let X=U.tokenStream?.LA(2)??-1;if(this.getExpectedTokens(U).contains(X)){this.reportUnwantedToken(U),U.consume();let G=U.getCurrentToken();return this.reportMatch(U),G}return null}getMissingSymbol(U){let X=U.getCurrentToken(),Y=this.getExpectedTokens(U),G=R.INVALID_TYPE;if(Y.length!==0)G=Y.minElement;let $;if(G===R.EOF)$="<missing EOF>";else $="<missing "+U.vocabulary.getDisplayName(G)+">";let Z=X,J=U.tokenStream?.LT(-1);if(Z.type===R.EOF&&J!==null)Z=J;return U.getTokenFactory().create(Z.source,G,$,R.DEFAULT_CHANNEL,-1,-1,Z.line,Z.column)}getExpectedTokens(U){return U.getExpectedTokens()}getTokenErrorDisplay(U){if(U===null)return"<no token>";let X=U.text;if(!X)if(U.type===R.EOF)X="<EOF>";else X="<"+U.type+">";return this.escapeWSAndQuote(X)}escapeWSAndQuote(U){return U=U.replace(/\n/g,"\\n"),U=U.replace(/\r/g,"\\r"),U=U.replace(/\t/g,"\\t"),"'"+U+"'"}getErrorRecoverySet(U){let{atn:X,context:Y}=U,G=new E0;while(Y!==null&&Y.invokingState>=0){let Z=X.states[Y.invokingState].transitions[0],J=X.nextTokens(Z.followState);G.addSet(J),Y=Y.parent}return G.removeOne(R.EPSILON),G}consumeUntil(U,X){let Y=U.tokenStream?.LA(1)??-1;while(Y!==R.EOF&&!X.contains(Y))U.consume(),Y=U.tokenStream?.LA(1)??-1}},h8=class extends i6{static{A(this,"BailErrorStrategy")}recover(U,X){throw new J4(X)}recoverInline(U){let X=new H2(U);throw new J4(X)}sync(U){}},E8=class{static{A(this,"ListTokenSource")}sourceName;tokenFactory=a6.DEFAULT;tokens=[];i=0;eofToken=null;constructor(U,X){this.tokens=U,this.sourceName=X??""}get column(){if(this.i<this.tokens.length)return this.tokens[this.i].column;if(this.eofToken!==null)return this.eofToken.column;if(this.tokens.length>0){let U=this.tokens[this.tokens.length-1],X=U.text;if(X){let Y=X.lastIndexOf(`
|
|
27
27
|
`);if(Y>=0)return X.length-Y-1}return U.column+U.stop-U.start+1}return 0}nextToken(){if(this.i>=this.tokens.length){if(this.eofToken===null){let X=-1;if(this.tokens.length>0){let G=this.tokens[this.tokens.length-1].stop;if(G!==-1)X=G+1}let Y=Math.max(-1,X-1);this.eofToken=this.tokenFactory.create([this,this.inputStream],R.EOF,"EOF",R.DEFAULT_CHANNEL,X,Y,this.line,this.column)}return this.eofToken}let U=this.tokens[this.i];if(this.i===this.tokens.length-1&&U.type===R.EOF)this.eofToken=U;return this.i++,U}get line(){if(this.i<this.tokens.length)return this.tokens[this.i].line;if(this.eofToken!==null)return this.eofToken.line;if(this.tokens.length>0){let U=this.tokens[this.tokens.length-1],X=U.line,Y=U.text;if(Y){for(let G of Y)if(G===`
|
|
28
28
|
`)X++}return X}return 1}get inputStream(){if(this.i<this.tokens.length)return this.tokens[this.i].inputStream;if(this.eofToken!==null)return this.eofToken.inputStream;if(this.tokens.length>0)return this.tokens[this.tokens.length-1].inputStream;return null}getSourceName(){if(this.sourceName!==null)return this.sourceName;let U=this.inputStream;if(U!==null)return U.getSourceName();return"List"}},C8=class extends C{static{A(this,"InterpreterRuleContext")}#U;constructor(U,X,Y){super(X,Y);this.#U=U}get ruleIndex(){return this.#U}},f8=class{static{A(this,"TraceListener")}parser;constructor(U){this.parser=U}enterEveryRule(U){console.log("enter "+this.parser.ruleNames[U.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitTerminal(U){console.log("consume "+U.getSymbol()+" rule "+this.parser.ruleNames[this.parser.context.ruleIndex])}exitEveryRule(U){console.log("exit "+this.parser.ruleNames[U.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitErrorNode(U){}},_4=class extends c6{static{A(this,"Parser")}printer=null;buildParseTrees=!0;errorHandler=new i6;context=null;precedenceStack=[];parseListeners=null;syntaxErrors=0;matchedEOF=!1;tracer=null;bypassAltsAtnCache=null;#U;constructor(U){super();this.precedenceStack.push(0),this.syntaxErrors=0,this.#U=U}reset(U=!0){if(U)this.inputStream.seek(0);if(this.errorHandler.reset(this),this.context=null,this.syntaxErrors=0,this.matchedEOF=!1,this.setTrace(!1),this.precedenceStack=[],this.precedenceStack.push(0),this.interpreter)this.interpreter.reset()}match(U){let X=this.getCurrentToken();if(X.type===U){if(U===R.EOF)this.matchedEOF=!0;this.errorHandler.reportMatch(this),this.consume()}else if(X=this.errorHandler.recoverInline(this),this.buildParseTrees&&X.tokenIndex===-1)this.context.addErrorNode(this.createErrorNode(this.context,X));return X}matchWildcard(){let U=this.getCurrentToken();if(U.type>0)this.errorHandler.reportMatch(this),this.consume();else if(U=this.errorHandler.recoverInline(this),this.buildParseTrees&&U.tokenIndex===-1)this.context.addErrorNode(this.createErrorNode(this.context,U));return U}getParseListeners(){return this.parseListeners??[]}addParseListener(U){if(U===null)throw Error("listener");if(this.parseListeners===null)this.parseListeners=[];this.parseListeners.push(U)}removeParseListener(U){if(this.parseListeners!==null&&U!==null){let X=this.parseListeners.indexOf(U);if(X>=0)this.parseListeners.splice(X,1);if(this.parseListeners.length===0)this.parseListeners=null}}removeParseListeners(){this.parseListeners=null}triggerEnterRuleEvent(){if(this.parseListeners!==null){let U=this.context;this.parseListeners.forEach((X)=>{X.enterEveryRule(U),U.enterRule(X)})}}triggerExitRuleEvent(){if(this.parseListeners!==null){let U=this.context;this.parseListeners.slice(0).reverse().forEach((X)=>{U.exitRule(X),X.exitEveryRule(U)})}}getTokenFactory(){return this.inputStream.tokenSource.tokenFactory}setTokenFactory(U){this.inputStream.tokenSource.tokenFactory=U}compileParseTreePattern(U,X,Y){if(!Y){if(this.tokenStream!==null){let $=this.tokenStream.tokenSource;if($ instanceof g0)Y=$}}if(!Y)throw Error("Parser can't discover a lexer to use");return new u8(Y,this).compile(U,X)}getATNWithBypassAlts(){let U=this.serializedATN;if(U===null)throw Error("The current parser does not support an ATN with bypass alternatives.");if(this.bypassAltsAtnCache!==null)return this.bypassAltsAtnCache;let X={readOnly:!1,verifyATN:!0,generateRuleBypassTransitions:!0};return this.bypassAltsAtnCache=new N1(X).deserialize(U),this.bypassAltsAtnCache}get numberOfSyntaxErrors(){return this.syntaxErrors}get inputStream(){return this.#U}set inputStream(U){this.tokenStream=U}get tokenStream(){return this.#U}set tokenStream(U){this.reset(!1),this.#U=U}getCurrentToken(){return this.inputStream.LT(1)}notifyErrorListeners(U,X,Y){if(X=X??null,Y=Y??null,X===null)X=this.getCurrentToken();this.syntaxErrors+=1;let{line:G,column:$}=X;this.errorListenerDispatch.syntaxError(this,X,G,$,U,Y)}consume(){let U=this.getCurrentToken();if(U.type!==R.EOF)this.tokenStream.consume();let X=this.parseListeners!==null&&this.parseListeners.length>0;if(this.buildParseTrees||X){let Y;if(this.errorHandler.inErrorRecoveryMode(this))Y=this.context.addErrorNode(this.createErrorNode(this.context,U));else Y=this.context.addTokenNode(U);if(X)this.parseListeners.forEach((G)=>{if(Y instanceof L2)G.visitErrorNode(Y);else G.visitTerminal(Y)})}return U}addContextToParseTree(){if(this.context?.parent)this.context.parent.addChild(this.context)}enterRule(U,X,Y){if(this.state=X,this.context=U,this.context.start=this.inputStream.LT(1),this.buildParseTrees)this.addContextToParseTree();this.triggerEnterRuleEvent()}exitRule(){if(this.matchedEOF)this.context.stop=this.inputStream.LT(1);else this.context.stop=this.inputStream.LT(-1);this.triggerExitRuleEvent(),this.state=this.context.invokingState,this.context=this.context.parent}enterOuterAlt(U,X){if(U.setAltNumber(X),this.buildParseTrees&&this.context!==U){if(this.context?.parent)this.context.parent.removeLastChild(),this.context.parent.addChild(U)}this.context=U}getPrecedence(){if(this.precedenceStack.length===0)return-1;return this.precedenceStack[this.precedenceStack.length-1]}enterRecursionRule(U,X,Y,G){this.state=X,this.precedenceStack.push(G),this.context=U,this.context.start=this.inputStream.LT(1),this.triggerEnterRuleEvent()}pushNewRecursionContext(U,X,Y){let G=this.context;if(G.parent=U,G.invokingState=X,G.stop=this.inputStream.LT(-1),this.context=U,this.context.start=G.start,this.buildParseTrees)this.context.addChild(G);this.triggerEnterRuleEvent()}unrollRecursionContexts(U){this.precedenceStack.pop(),this.context.stop=this.inputStream.LT(-1);let X=this.context,Y=this.getParseListeners();if(Y!==null&&Y.length>0)while(this.context!==U)this.triggerExitRuleEvent(),this.context=this.context.parent;else this.context=U;if(X.parent=U,this.buildParseTrees&&U!==null)U.addChild(X)}getInvokingContext(U){let X=this.context;while(X!==null){if(X.ruleIndex===U)return X;X=X.parent}return null}precpred(U,X){return X>=this.precedenceStack[this.precedenceStack.length-1]}isExpectedToken(U){let X=this.interpreter.atn,Y=this.context,G=X.states[this.state],$=X.nextTokens(G);if($.contains(U))return!0;if(!$.contains(R.EPSILON))return!1;while(Y!==null&&Y.invokingState>=0&&$.contains(R.EPSILON)){let J=X.states[Y.invokingState].transitions[0];if($=X.nextTokens(J.followState),$.contains(U))return!0;Y=Y.parent}if($.contains(R.EPSILON)&&U===R.EOF)return!0;else return!1}getExpectedTokens(){return this.interpreter.atn.getExpectedTokens(this.state,this.context)}getExpectedTokensWithinCurrentRule(){let U=this.interpreter.atn,X=U.states[this.state];return U.nextTokens(X)}getRuleIndex(U){return this.getRuleIndexMap().get(U)??-1}getRuleInvocationStack(U){if(U=U??null,U===null)U=this.context;let X=[];while(U!==null){let Y=U.ruleIndex;if(Y<0)X.push("n/a");else X.push(this.ruleNames[Y]);U=U.parent}return X}getDFAStrings(){return this.interpreter.decisionToDFA.toString()}dumpDFA(){let U=!1;for(let X of this.interpreter.decisionToDFA)if(X.length>0){if(U)console.log();if(this.printer)this.printer.println("Decision "+X.decision+":"),this.printer.print(X.toString(this.vocabulary));U=!0}}getSourceName(){return this.inputStream.getSourceName()}getParseInfo(){let U=this.interpreter;if(U instanceof i2)return new z8(U);return}setProfile(U){let X=this.interpreter,Y=X.predictionMode;if(U){if(!(X instanceof i2))this.interpreter=new i2(this)}else if(X instanceof i2){let G=X.sharedContextCache;if(G){let $=new k2(this,this.atn,X.decisionToDFA,G);this.interpreter=$}}this.interpreter.predictionMode=Y}setTrace(U){if(!U)this.removeParseListener(this.tracer),this.tracer=null;else{if(this.tracer!==null)this.removeParseListener(this.tracer);this.tracer=new f8(this),this.addParseListener(this.tracer)}}createTerminalNode(U,X){return new C0(X)}createErrorNode(U,X){return new L2(X)}},V8=class extends _4{static{A(this,"ParserInterpreter")}rootContext;overrideDecisionRoot=null;parentContextStack=[];overrideDecisionAlt=-1;overrideDecisionReached=!1;decisionToDFA;sharedContextCache=new E1;pushRecursionContextStates;#U=-1;#X=-1;#G;#Y;#$;#Z;constructor(U,X,Y,G,$){super($);this.#G=U,this.#Y=G,this.#$=Y.slice(0),this.#Z=X,this.pushRecursionContextStates=new x0;for(let Z of G.states)if(Z instanceof Z1&&Z.precedenceRuleDecision)this.pushRecursionContextStates.set(Z.stateNumber);this.decisionToDFA=G.decisionToState.map((Z,J)=>{return new o0(Z,J)}),this.interpreter=new k2(this,G,this.decisionToDFA,this.sharedContextCache)}reset(){super.reset(),this.overrideDecisionReached=!1,this.overrideDecisionRoot=null}get atn(){return this.#Y}get vocabulary(){return this.#Z}get ruleNames(){return this.#$}get grammarFileName(){return this.#G}get atnState(){return this.#Y.states[this.state]}parse(U){let X=this.#Y.ruleToStartState[U];if(this.rootContext=this.createInterpreterRuleContext(null,f.INVALID_STATE_NUMBER,U),X.isLeftRecursiveRule)this.enterRecursionRule(this.rootContext,X.stateNumber,U,0);else this.enterRule(this.rootContext,X.stateNumber,U);while(!0){let Y=this.atnState;switch(Y.constructor.stateType){case f.RULE_STOP:{if(this.context?.isEmpty())if(X.isLeftRecursiveRule){let G=this.context,$=this.parentContextStack.pop();return this.unrollRecursionContexts($[0]),G}else return this.exitRule(),this.rootContext;this.visitRuleStopState(Y);break}default:{try{this.visitState(Y)}catch(G){if(G instanceof V)this.state=this.#Y.ruleToStopState[Y.ruleIndex].stateNumber,this.errorHandler.reportError(this,G),this.recover(G);else throw G}break}}}}addDecisionOverride(U,X,Y){this.#U=U,this.#X=X,this.overrideDecisionAlt=Y}get overrideDecision(){return this.#U}get overrideDecisionInputIndex(){return this.#X}enterRecursionRule(U,X,Y,G){this.parentContextStack.push([this.context,U.invokingState]),super.enterRecursionRule(U,X,Y,G)}get serializedATN(){throw Error("The ParserInterpreter does not support the serializedATN property.")}visitState(U){let X=1;if(U instanceof j1)X=this.visitDecisionState(U);let Y=U.transitions[X-1];switch(Y.transitionType){case h.EPSILON:if(this.pushRecursionContextStates.get(U.stateNumber)&&Y.target.constructor.stateType!==f.LOOP_END){let F=this.parentContextStack[this.parentContextStack.length-1],_=this.createInterpreterRuleContext(F[0],F[1],this.context.ruleIndex);this.pushNewRecursionContext(_,this.#Y.ruleToStartState[U.ruleIndex].stateNumber,this.context.ruleIndex)}break;case h.ATOM:this.match(Y.label.minElement);break;case h.RANGE:case h.SET:case h.NOT_SET:if(!Y.matches(this.inputStream.LA(1),R.MIN_USER_TOKEN_TYPE,65535))this.recoverInline();this.matchWildcard();break;case h.WILDCARD:this.matchWildcard();break;case h.RULE:let G=Y.target,$=G.ruleIndex,Z=this.createInterpreterRuleContext(this.context,U.stateNumber,$);if(G.isLeftRecursiveRule)this.enterRecursionRule(Z,G.stateNumber,$,Y.precedence);else this.enterRule(Z,Y.target.stateNumber,$);break;case h.PREDICATE:let J=Y;if(!this.sempred(this.context,J.ruleIndex,J.predIndex))throw new M2(this);break;case h.ACTION:let Q=Y;this.action(this.context,Q.ruleIndex,Q.actionIndex);break;case h.PRECEDENCE:if(!this.precpred(this.context,Y.precedence)){let F=Y.precedence;throw new M2(this,`precpred(_ctx, ${F})`)}break;default:throw Error("UnsupportedOperationException: Unrecognized ATN transition type.")}this.state=Y.target.stateNumber}visitDecisionState(U){let X=1;if(U.transitions.length>1){this.errorHandler.sync(this);let Y=U.decision;if(Y===this.#U&&this.inputStream.index===this.#X&&!this.overrideDecisionReached)X=this.overrideDecisionAlt,this.overrideDecisionReached=!0;else X=this.interpreter.adaptivePredict(this.inputStream,Y,this.context)}return X}createInterpreterRuleContext(U,X,Y){return new C8(Y,U,X)}visitRuleStopState(U){if(this.#Y.ruleToStartState[U.ruleIndex].isLeftRecursiveRule){let[G,$]=this.parentContextStack.pop();this.unrollRecursionContexts(G),this.state=$}else this.exitRule();let Y=this.#Y.states[this.state].transitions[0];this.state=Y.followState.stateNumber}recover(U){let X=this.inputStream.index;if(this.errorHandler.recover(this,U),this.inputStream.index===X){let Y=U.offendingToken;if(!Y)throw Error("Expected exception to have an offending token");let G=Y.tokenSource,$=G?.inputStream??null,Z=[G,$];if(U instanceof H2){let J=U.getExpectedTokens();if(!J)throw Error("Expected the exception to provide expected tokens");let Q=R.INVALID_TYPE;if(J.length!==0)Q=J.minElement;let F=this.getTokenFactory().create(Z,Q,Y.text,R.DEFAULT_CHANNEL,-1,-1,Y.line,Y.column);this.context.addErrorNode(this.createErrorNode(this.context,F))}else{let J=this.getTokenFactory().create(Z,R.INVALID_TYPE,Y.text,R.DEFAULT_CHANNEL,-1,-1,Y.line,Y.column);this.context.addErrorNode(this.createErrorNode(this.context,J))}}}recoverInline(){return this.errorHandler.recoverInline(this)}},u6=class extends Map{static{A(this,"MultiMap")}map(U,X){let Y=this.get(U);if(!Y)Y=[],this.set(U,Y);Y.push(X)}getPairs(){let U=[];for(let X of this.keys()){let Y=this.get(X)??[];for(let G of Y)U.push([X,G])}return U}toString(){let U=[];return this.forEach((X,Y)=>{U.push(`${Y}=[${X.join(", ")}]`)}),`{${U.join(", ")}}`}},P8=class extends Error{static{A(this,"CannotInvokeStartRuleError")}constructor(U){super();this.cause=U}},v6=class{static{A(this,"RuleTagToken")}label;ruleName;bypassTokenType;constructor(U,X,Y){this.ruleName=U,this.bypassTokenType=X,this.label=Y}get channel(){return R.DEFAULT_CHANNEL}get text(){if(this.label!==void 0)return"<"+this.label+":"+this.ruleName+">";return"<"+this.ruleName+">"}get type(){return this.bypassTokenType}get line(){return 0}get column(){return-1}get tokenIndex(){return-1}get start(){return-1}get stop(){return-1}get tokenSource(){return null}get inputStream(){return null}toString(){return this.ruleName+":"+this.bypassTokenType}},b8=class extends Error{static{A(this,"StartRuleDoesNotConsumeFullPatternError")}},S6=class extends o6{static{A(this,"TagChunk")}tag;label;constructor(...U){let X,Y;if(U.length===1)Y=U[0];else X=U[0],Y=U[1];super();if(!Y)throw Error("tag cannot be null or empty");this.label=X,this.tag=Y}toString(){if(this.label!==void 0)return this.label+":"+this.tag;return this.tag}},T1=class extends o6{static{A(this,"TextChunk")}text;constructor(U){super();this.text=U}toString(){return"'"+this.text+"'"}},x6=class extends e2{static{A(this,"TokenTagToken")}tokenName;label;constructor(U,X,Y){super({type:X,source:e2.EMPTY_SOURCE});this.tokenName=U,this.label=Y}get text(){if(this.label!==void 0)return"<"+this.label+":"+this.tokenName+">";return"<"+this.tokenName+">"}toString(){return this.tokenName+":"+this.type}},u8=class{static{A(this,"ParseTreePatternMatcher")}start="<";stop=">";escape="\\";lexer;parser;constructor(U,X){this.lexer=U,this.parser=X}setDelimiters(U,X,Y){if(U===null||U.length===0)throw Error("start cannot be null or empty");if(X===null||X.length===0)throw Error("stop cannot be null or empty");this.start=U,this.stop=X,this.escape=Y}matches(...U){switch(U.length){case 2:{let[X,Y]=U,G=new u6;return this.matchImpl(X,Y.getPatternTree(),G)===null}case 3:{let[X,Y,G]=U,$=this.compile(Y,G);return this.matches(X,$)}default:throw Error("Invalid number of arguments")}}match(...U){switch(U.length){case 2:{let[X,Y]=U,G=new u6,$=this.matchImpl(X,Y.getPatternTree(),G);return new k8(X,Y,G,$)}case 3:{let[X,Y,G]=U,$=this.compile(Y,G);return this.match(X,$)}default:throw Error("Invalid number of arguments")}}compile(U,X){let Y=this.tokenize(U),G=new E8(Y),$=new G3(G),Z=new V8(this.parser.grammarFileName,this.parser.vocabulary,this.parser.ruleNames,this.parser.getATNWithBypassAlts(),$);Z.removeErrorListeners();let J=null;try{Z.errorHandler=new h8,J=Z.parse(X)}catch(Q){if(Q instanceof J4)throw Q.cause;else if(Q instanceof V)throw Q;else if(Q instanceof Error)throw new P8(Q);else throw Q}if($.LA(1)!==R.EOF)throw new b8;return new O8(this,U,X,J)}getLexer(){return this.lexer}getParser(){return this.parser}tokenize(U){let X=this.split(U),Y=[];for(let G of X)if(G instanceof S6){let $=G,Z=$.tag[0];if(Z===Z.toUpperCase()){let J=this.parser.getTokenType($.tag);if(J===R.INVALID_TYPE)throw Error("Unknown token "+$.tag+" in pattern: "+U);let Q=new x6($.tag,J,$.label);Y.push(Q)}else if(Z===Z.toLowerCase()){let J=this.parser.getRuleIndex($.tag);if(J===-1)throw Error("Unknown rule "+$.tag+" in pattern: "+U);let Q=this.parser.getATNWithBypassAlts().ruleToTokenType[J];Y.push(new v6($.tag,Q,$.label))}else throw Error("invalid tag: "+$.tag+" in pattern: "+U)}else{let $=G,Z=H0.fromString($.text);this.lexer.inputStream=Z;let J=this.lexer.nextToken();while(J.type!==R.EOF)Y.push(J),J=this.lexer.nextToken()}return Y}split(U){let X=0,Y=U.length,G=[],$=[],Z=[];while(X<Y)if(X===U.indexOf(this.escape+this.start,X))X+=this.escape.length+this.start.length;else if(X===U.indexOf(this.escape+this.stop,X))X+=this.escape.length+this.stop.length;else if(X===U.indexOf(this.start,X))$.push(X),X+=this.start.length;else if(X===U.indexOf(this.stop,X))Z.push(X),X+=this.stop.length;else X++;if($.length>Z.length)throw Error("unterminated tag in pattern: "+U);if($.length<Z.length)throw Error("missing start tag in pattern: "+U);let J=$.length;for(let Q=0;Q<J;Q++)if($[Q]>=Z[Q])throw Error("tag delimiters out of order in pattern: "+U);if(J===0){let Q=U.substring(0,Y);G.push(new T1(Q))}if(J>0&&$[0]>0){let Q=U.substring(0,$[0]);G.push(new T1(Q))}for(let Q=0;Q<J;Q++){let F=U.substring($[Q]+this.start.length,Z[Q]),_=F,I,H=F.indexOf(":");if(H>=0)I=F.substring(0,H),_=F.substring(H+1,F.length);if(G.push(new S6(I,_)),Q+1<J){let j=U.substring(Z[Q]+this.stop.length,$[Q+1]);G.push(new T1(j))}}if(J>0){let Q=Z[J-1]+this.stop.length;if(Q<Y){let F=U.substring(Q,Y);G.push(new T1(F))}}for(let Q=0;Q<G.length;Q++){let F=G[Q];if(F instanceof T1){let _=F,I=_.text.replaceAll(this.escape,"");if(I.length<_.text.length)G[Q]=new T1(I)}}return G}matchImpl(U,X,Y){if(U instanceof C0&&X instanceof C0){let G=U,$=X,Z;if(G.getSymbol().type===$.getSymbol().type){if($.getSymbol()instanceof x6){let J=$.getSymbol();if(Y.map(J.tokenName,U),J.label!==void 0)Y.map(J.label,U)}else if(G.getText()===$.getText());else if(!Z)Z=G}else if(!Z)Z=G;return Z}if(U instanceof C&&X instanceof C){let G,$=this.getRuleTagToken(X);if($){if(U.ruleIndex===X.ruleIndex){if(Y.map($.ruleName,U),$.label)Y.map($.label,U)}else if(!G)G=U;return G}if(U.getChildCount()!==X.getChildCount()){if(!G)G=U;return G}let Z=U.getChildCount();for(let J=0;J<Z;J++){let Q=this.matchImpl(U.getChild(J),X.getChild(J),Y);if(Q)return Q}return G}return U}getRuleTagToken(U){if(U instanceof C){if(U.getChildCount()===1&&U.getChild(0)instanceof C0){let X=U.getChild(0);if(X.getSymbol()instanceof v6)return X.getSymbol()}}return}},YY=class extends Y3{static{A(this,"DiagnosticErrorListener")}exactOnly;constructor(U){super();this.exactOnly=U??!0}reportAmbiguity=A((U,X,Y,G,$,Z,J)=>{if(this.exactOnly&&!$)return;let Q=this.getDecisionDescription(U,X),F=this.getConflictingAlts(Z,J),_=U.tokenStream?.getTextFromInterval(v.of(Y,G)),I=`reportAmbiguity d=${Q}: ambigAlts=${F}, input='${_}'`;U.notifyErrorListeners(I,null,null)},"reportAmbiguity");reportAttemptingFullContext=A((U,X,Y,G,$,Z)=>{let J=this.getDecisionDescription(U,X),Q=U.tokenStream?.getTextFromInterval(v.of(Y,G)),F=`reportAttemptingFullContext d=${J}, input='${Q}'`;U.notifyErrorListeners(F,null,null)},"reportAttemptingFullContext");reportContextSensitivity=A((U,X,Y,G,$,Z)=>{let J=this.getDecisionDescription(U,X),Q=U.tokenStream?.getTextFromInterval(v.of(Y,G)),F=`reportContextSensitivity d=${J}, input='${Q}'`;U.notifyErrorListeners(F,null,null)},"reportContextSensitivity");getDecisionDescription=A((U,X)=>{let Y=X.decision,G=X.atnStartState.ruleIndex,$=U.ruleNames;if(G<0||G>=$.length)return Y.toString();let Z=$[G];if(Z.length===0)return Y.toString();return`${Y} (${Z})`},"getDecisionDescription");getConflictingAlts=A((U,X)=>{if(U)return U;let Y=new x0;for(let G=0;G<X.configs.length;G++)Y.set(X.configs[G].alt);return Y},"getConflictingAlts")},GY=class extends g0{static{A(this,"LexerInterpreter")}decisionToDFA;sharedContextCache=new E1;#U;#X;#G;#Y;#$;#Z;constructor(U,X,Y,G,$,Z,J){super(J);if(Z.grammarType!==b.LEXER)throw Error("IllegalArgumentException: The ATN must be a lexer ATN.");this.#U=U,this.#X=Z,this.#G=Y.slice(0),this.#Y=G.slice(0),this.#$=$.slice(0),this.#Z=X,this.decisionToDFA=Z.decisionToState.map((Q,F)=>{return new o0(Q,F)}),this.interpreter=new s1(this,Z,this.decisionToDFA,this.sharedContextCache)}get atn(){return this.#X}get grammarFileName(){return this.#U}get ruleNames(){return this.#G}get channelNames(){return this.#Y}get modeNames(){return this.#$}get vocabulary(){return this.#Z}get serializedATN(){throw Error("The LexerInterpreter does not support the serializedATN property.")}},$Y=class U{static{A(this,"RuntimeMetaData")}static VERSION="4.13.1";static getRuntimeVersion(){return U.VERSION}static checkVersion(X,Y){let G=U.VERSION,$=!1,Z=!1;if($=G!==X&&U.getMajorMinorVersion(G)!==U.getMajorMinorVersion(X),Z=G!==Y&&U.getMajorMinorVersion(G)!==U.getMajorMinorVersion(Y),$)console.error(`ANTLR Tool version ${X} used for code generation does not match the current runtime version ${G}`);if(Z)console.error(`ANTLR Runtime version ${Y} used for parser compilation does not match the current runtime version ${G}`)}static getMajorMinorVersion(X){let Y=X.indexOf("."),G=Y>=0?X.indexOf(".",Y+1):-1,$=X.indexOf("-"),Z=X.length;if(G>=0)Z=Math.min(Z,G);if($>=0)Z=Math.min(Z,$);return X.substring(0,Z)}},ZY=class U{static{A(this,"TokenStreamRewriter")}static DEFAULT_PROGRAM_NAME="default";static PROGRAM_INIT_SIZE=100;static MIN_TOKEN_INDEX=0;tokens;programs=new Map;lastRewriteTokenIndexes;constructor(X){this.tokens=X}getTokenStream(){return this.tokens}insertAfter(X,Y,G=U.DEFAULT_PROGRAM_NAME){let $;if(typeof X==="number")$=X;else $=X.tokenIndex;let Z=this.getProgram(G),J=new g6(this.tokens,$,Z.length,Y);Z.push(J)}insertBefore(X,Y,G=U.DEFAULT_PROGRAM_NAME){let $;if(typeof X==="number")$=X;else $=X.tokenIndex;let Z=this.getProgram(G),J=new l1(this.tokens,$,Z.length,Y);Z.push(J)}replaceSingle(X,Y,G=U.DEFAULT_PROGRAM_NAME){this.replace(X,X,Y,G)}replace(X,Y,G,$=U.DEFAULT_PROGRAM_NAME){if(typeof X!=="number")X=X.tokenIndex;if(typeof Y!=="number")Y=Y.tokenIndex;if(X>Y||X<0||Y<0||Y>=this.tokens.size)throw RangeError(`replace: range invalid: ${X}..${Y}(size=${this.tokens.size})`);let Z=this.getProgram($),J=new t2(this.tokens,X,Y,Z.length,G);Z.push(J)}delete(X,Y,G=U.DEFAULT_PROGRAM_NAME){if(Y==null)Y=X;this.replace(X,Y,null,G)}getProgram(X){let Y=this.programs.get(X);if(Y==null)Y=this.initializeProgram(X);return Y}initializeProgram(X){let Y=[];return this.programs.set(X,Y),Y}getText(X,Y=U.DEFAULT_PROGRAM_NAME){let G;if(X instanceof v)G=X;else G=new v(0,this.tokens.size-1);if(typeof X==="string")Y=X;let $=this.programs.get(Y),Z=G.start,J=G.stop;if(J>this.tokens.size-1)J=this.tokens.size-1;if(Z<0)Z=0;if($==null||$.length===0)return this.tokens.getTextFromInterval(new v(Z,J));let Q=[],F=this.reduceToSingleOperationPerIndex($),_=Z;while(_<=J&&_<this.tokens.size){let I=F.get(_);F.delete(_);let H=this.tokens.get(_);if(I==null){if(H.type!==R.EOF)Q.push(String(H.text));_++}else _=I.execute(Q)}if(J===this.tokens.size-1){for(let I of F.values())if(I&&I.index>=this.tokens.size-1)Q.push(String(I.text))}return Q.join("")}reduceToSingleOperationPerIndex(X){for(let G=0;G<X.length;G++){let $=X[G];if($==null)continue;if(!($ instanceof t2))continue;let Z=$,J=this.getKindOfOps(X,l1,G);for(let F of J)if(F.index===Z.index)X[F.instructionIndex]=null,Z.text=String(F.text)+(Z.text!=null?Z.text.toString():"");else if(F.index>Z.index&&F.index<=Z.lastIndex)X[F.instructionIndex]=null;let Q=this.getKindOfOps(X,t2,G);for(let F of Q){if(F.index>=Z.index&&F.lastIndex<=Z.lastIndex){X[F.instructionIndex]=null;continue}let _=F.lastIndex<Z.index||F.index>Z.lastIndex;if(F.text==null&&Z.text==null&&!_)X[F.instructionIndex]=null,Z.index=Math.min(F.index,Z.index),Z.lastIndex=Math.max(F.lastIndex,Z.lastIndex);else if(!_)throw Error(`replace op boundaries of ${Z} overlap with previous ${F}`)}}for(let G=0;G<X.length;G++){let $=X[G];if($==null)continue;if(!($ instanceof l1))continue;let Z=$,J=this.getKindOfOps(X,l1,G);for(let F of J)if(F.index===Z.index){if(F instanceof g6)Z.text=this.catOpText(F.text,Z.text),X[F.instructionIndex]=null;else if(F instanceof l1)Z.text=this.catOpText(Z.text,F.text),X[F.instructionIndex]=null}let Q=this.getKindOfOps(X,t2,G);for(let F of Q){if(Z.index===F.index){F.text=this.catOpText(Z.text,F.text),X[G]=null;continue}if(Z.index>=F.index&&Z.index<=F.lastIndex)throw Error(`insert op ${Z} within boundaries of previous ${F}`)}}let Y=new Map;for(let G of X){if(G==null)continue;if(Y.get(G.index)!=null)throw Error("should only be one op per index");Y.set(G.index,G)}return Y}catOpText(X,Y){let G="",$="";if(X!=null)G=X.toString();if(Y!=null)$=Y.toString();return G+$}getKindOfOps(X,Y,G){return X.slice(0,G).filter(($)=>{return $&&$ instanceof Y})}},t6=class{static{A(this,"RewriteOperation")}instructionIndex;index;text;tokens;constructor(U,X,Y,G){this.tokens=U,this.instructionIndex=Y,this.index=X,this.text=G===void 0?"":G}execute(U){return this.index}toString(){return"<RewriteOperation@"+this.tokens.get(this.index)+':"'+this.text+'">'}},l1=class extends t6{static{A(this,"InsertBeforeOp")}constructor(U,X,Y,G){super(U,X,Y,G)}execute(U){if(this.text)U.push(this.text.toString());if(this.tokens.get(this.index).type!==R.EOF)U.push(String(this.tokens.get(this.index).text));return this.index+1}toString(){return"<InsertBeforeOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},g6=class extends l1{static{A(this,"InsertAfterOp")}constructor(U,X,Y,G){super(U,X+1,Y,G)}toString(){return"<InsertAfterOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},t2=class extends t6{static{A(this,"ReplaceOp")}lastIndex;constructor(U,X,Y,G,$){super(U,X,G,$);this.lastIndex=Y}execute(U){if(this.text)U.push(this.text.toString());return this.lastIndex+1}toString(){if(this.text==null)return"<DeleteOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+">";return"<ReplaceOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+':"'+this.text+'">'}},JY=class{static{A(this,"UnbufferedTokenStream")}tokenSource;tokens;n;p=0;numMarkers=0;lastToken;lastTokenBufferStart;currentTokenIndex=0;constructor(U,X){this.tokenSource=U,X=X??256,this.tokens=Array(X),this.n=0,this.fill(1)}get(U){let X=this.getBufferStartIndex();if(U<X||U>=X+this.n)throw Error("get("+U+") outside buffer: "+X+".."+(X+this.n));return this.tokens[U-X]}LT(U){if(U===-1)return this.lastToken;this.sync(U);let X=this.p+U-1;if(X<0)throw Error("LT("+U+") gives negative index");if(X>=this.n)return this.tokens[this.n-1];return this.tokens[X]}LA(U){return this.LT(U).type}getText(){return""}getTextFromContext(U){return this.getTextFromInterval(U.getSourceInterval())}getTextFromInterval(U){let X=this.getBufferStartIndex(),Y=X+this.tokens.length-1,G=U.start,$=U.stop;if(G<X||$>Y)throw Error("interval "+U+" not in token buffer window: "+X+".."+Y);let Z=G-X,J=$-X,Q="";for(let F=Z;F<=J;F++){let _=this.tokens[F];Q+=_.text}return Q}getTextFromRange(U,X){return this.getTextFromInterval(v.of(U.tokenIndex,X.tokenIndex))}consume(){if(this.LA(1)===R.EOF)throw Error("cannot consume EOF");if(this.lastToken=this.tokens[this.p],this.p===this.n-1&&this.numMarkers===0)this.n=0,this.p=-1,this.lastTokenBufferStart=this.lastToken;this.p++,this.currentTokenIndex++,this.sync(1)}mark(){if(this.numMarkers===0)this.lastTokenBufferStart=this.lastToken;let U=-this.numMarkers-1;return this.numMarkers++,U}release(U){let X=-this.numMarkers;if(U!==X)throw Error("release() called with an invalid marker.");if(this.numMarkers--,this.numMarkers===0){if(this.p>0)this.tokens.copyWithin(0,this.p,this.n),this.n=this.n-this.p,this.p=0;this.lastTokenBufferStart=this.lastToken}}get index(){return this.currentTokenIndex}seek(U){if(U===this.currentTokenIndex)return;if(U>this.currentTokenIndex)this.sync(U-this.currentTokenIndex),U=Math.min(U,this.getBufferStartIndex()+this.n-1);let X=this.getBufferStartIndex(),Y=U-X;if(Y<0)throw Error("cannot seek to negative index "+U);else if(Y>=this.n)throw Error("seek to index outside buffer: "+U+" not in "+X+".."+(X+this.n));if(this.p=Y,this.currentTokenIndex=U,this.p===0)this.lastToken=this.lastTokenBufferStart;else this.lastToken=this.tokens[this.p-1]}get size(){throw Error("Unbuffered stream cannot know its size")}getSourceName(){return this.tokenSource.sourceName}setLine(U){this.tokenSource.line=U}setColumn(U){this.tokenSource.column=U}sync(U){let X=this.p+U-1-this.n+1;if(X>0)this.fill(X)}fill(U){for(let X=0;X<U;X++){if(this.n>0&&this.tokens[this.n-1].type===R.EOF)return X;let Y=this.tokenSource.nextToken();this.add(Y)}return U}add(U){if(this.n>=this.tokens.length)this.tokens.length=this.tokens.length*2;if(p6(U))U.setTokenIndex(this.getBufferStartIndex()+this.n);this.tokens[this.n++]=U}getBufferStartIndex(){return this.currentTokenIndex-this.p}};class c extends g0{static LPAREN=1;static RPAREN=2;static COLON=3;static SEMICOLON=4;static COMMA=5;static LBRACK=6;static RBRACK=7;static LBRACE=8;static RBRACE=9;static PLUS=10;static MINUS=11;static MUL=12;static DIV=13;static DOTMOD=14;static MOD=15;static AND=16;static OR=17;static EQ=18;static EXCL=19;static DOLLAR=20;static CARET=21;static TILDE=22;static AT=23;static GT=24;static GTE=25;static LT=26;static LTE=27;static IF=28;static ELSE=29;static WHILE=30;static CASE=31;static DEFAULT=32;static RETURN=33;static CALC=34;static TYPE_ARRAY=35;static DEF_TYPE=36;static SWITCH_TYPE=37;static INTEGER_LITERAL=38;static HEX_LITERAL=39;static COORD_LITERAL=40;static MAPZONE_LITERAL=41;static BOOLEAN_LITERAL=42;static CHAR_LITERAL=43;static NULL_LITERAL=44;static LINE_COMMENT=45;static BLOCK_COMMENT=46;static QUOTE_OPEN=47;static IDENTIFIER=48;static WHITESPACE=49;static QUOTE_CLOSE=50;static STRING_TEXT=51;static STRING_TAG=52;static STRING_CLOSE_TAG=53;static STRING_PARTIAL_TAG=54;static STRING_P_TAG=55;static STRING_EXPR_START=56;static STRING_EXPR_END=57;static String=1;static channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"];static literalNames=[null,"'('","')'","':'","';'","','","'['","']'","'{'","'}'","'+'","'-'","'*'","'/'","'.%'","'%'","'&'","'|'","'='","'!'","'$'","'^'","'~'","'@'",null,"'>='",null,"'<='","'if'","'else'","'while'","'case'","'default'","'return'","'calc'",null,null,null,null,null,null,null,null,null,"'null'"];static symbolicNames=[null,"LPAREN","RPAREN","COLON","SEMICOLON","COMMA","LBRACK","RBRACK","LBRACE","RBRACE","PLUS","MINUS","MUL","DIV","DOTMOD","MOD","AND","OR","EQ","EXCL","DOLLAR","CARET","TILDE","AT","GT","GTE","LT","LTE","IF","ELSE","WHILE","CASE","DEFAULT","RETURN","CALC","TYPE_ARRAY","DEF_TYPE","SWITCH_TYPE","INTEGER_LITERAL","HEX_LITERAL","COORD_LITERAL","MAPZONE_LITERAL","BOOLEAN_LITERAL","CHAR_LITERAL","NULL_LITERAL","LINE_COMMENT","BLOCK_COMMENT","QUOTE_OPEN","IDENTIFIER","WHITESPACE","QUOTE_CLOSE","STRING_TEXT","STRING_TAG","STRING_CLOSE_TAG","STRING_PARTIAL_TAG","STRING_P_TAG","STRING_EXPR_START","STRING_EXPR_END"];static modeNames=["DEFAULT_MODE","String"];static ruleNames=["LPAREN","RPAREN","COLON","SEMICOLON","COMMA","LBRACK","RBRACK","LBRACE","RBRACE","PLUS","MINUS","MUL","DIV","DOTMOD","MOD","AND","OR","EQ","EXCL","DOLLAR","CARET","TILDE","AT","GT","GTE","LT","LTE","IF","ELSE","WHILE","CASE","DEFAULT","RETURN","CALC","TYPE_ARRAY","DEF_TYPE","SWITCH_TYPE","INTEGER_LITERAL","HEX_LITERAL","COORD_LITERAL","MAPZONE_LITERAL","BOOLEAN_LITERAL","CHAR_LITERAL","NULL_LITERAL","LINE_COMMENT","BLOCK_COMMENT","Digit","CharEscapeSequence","QUOTE_OPEN","IDENTIFIER","WHITESPACE","QUOTE_CLOSE","STRING_TEXT","STRING_TAG","STRING_CLOSE_TAG","STRING_PARTIAL_TAG","STRING_P_TAG","STRING_EXPR_START","STRING_EXPR_END","StringEscapeSequence","Tag"];depth=0;constructor(U){super(U);this.interpreter=new s1(this,c._ATN,c.decisionsToDFA,new E1)}get grammarFileName(){return"RuneScriptLexer.g4"}get literalNames(){return c.literalNames}get symbolicNames(){return c.symbolicNames}get ruleNames(){return c.ruleNames}get serializedATN(){return c._serializedATN}get channelNames(){return c.channelNames}get modeNames(){return c.modeNames}action(U,X,Y){switch(X){case 23:this.GT_action(U,Y);break;case 48:this.QUOTE_OPEN_action(U,Y);break;case 51:this.QUOTE_CLOSE_action(U,Y);break}}GT_action(U,X){switch(X){case 0:if(this.depth>0)this.type=c.STRING_EXPR_END,this.popMode();break}}QUOTE_OPEN_action(U,X){switch(X){case 1:this.depth++;break}}QUOTE_CLOSE_action(U,X){switch(X){case 2:this.depth--;break}}static _serializedATN=[4,0,57,456,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,3,37,247,8,37,1,37,4,37,250,8,37,11,37,12,37,251,1,38,1,38,1,38,4,38,257,8,38,11,38,12,38,258,1,39,4,39,262,8,39,11,39,12,39,263,1,39,1,39,4,39,268,8,39,11,39,12,39,269,1,39,1,39,4,39,274,8,39,11,39,12,39,275,1,39,1,39,4,39,280,8,39,11,39,12,39,281,1,39,1,39,4,39,286,8,39,11,39,12,39,287,1,40,4,40,291,8,40,11,40,12,40,292,1,40,1,40,4,40,297,8,40,11,40,12,40,298,1,40,1,40,4,40,303,8,40,11,40,12,40,304,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,316,8,41,1,42,1,42,1,42,3,42,321,8,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,5,44,334,8,44,10,44,12,44,337,9,44,1,44,3,44,340,8,44,1,44,1,44,1,45,1,45,1,45,1,45,5,45,348,8,45,10,45,12,45,351,9,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,49,4,49,369,8,49,11,49,12,49,370,1,50,4,50,374,8,50,11,50,12,50,375,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,4,52,387,8,52,11,52,12,52,388,3,52,391,8,52,1,53,1,53,1,53,1,53,4,53,397,8,53,11,53,12,53,398,3,53,401,8,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,4,56,420,8,56,11,56,12,56,421,1,56,1,56,1,57,1,57,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,455,8,60,2,335,349,0,61,2,1,4,2,6,3,8,4,10,5,12,6,14,7,16,8,18,9,20,10,22,11,24,12,26,13,28,14,30,15,32,16,34,17,36,18,38,19,40,20,42,21,44,22,46,23,48,24,50,25,52,26,54,27,56,28,58,29,60,30,62,31,64,32,66,33,68,34,70,35,72,36,74,37,76,38,78,39,80,40,82,41,84,42,86,43,88,44,90,45,92,46,94,0,96,0,98,47,100,48,102,49,104,50,106,51,108,52,110,53,112,54,114,55,116,56,118,57,120,0,122,0,2,0,1,11,2,0,88,88,120,120,3,0,48,57,65,70,97,102,4,0,10,10,13,13,39,39,92,92,1,1,10,10,1,0,48,57,2,0,39,39,92,92,6,0,43,43,46,46,48,58,65,90,95,95,97,122,3,0,9,10,13,13,32,32,5,0,10,10,13,13,34,34,60,60,92,92,2,0,60,60,62,62,3,0,34,34,60,60,92,92,479,0,2,1,0,0,0,0,4,1,0,0,0,0,6,1,0,0,0,0,8,1,0,0,0,0,10,1,0,0,0,0,12,1,0,0,0,0,14,1,0,0,0,0,16,1,0,0,0,0,18,1,0,0,0,0,20,1,0,0,0,0,22,1,0,0,0,0,24,1,0,0,0,0,26,1,0,0,0,0,28,1,0,0,0,0,30,1,0,0,0,0,32,1,0,0,0,0,34,1,0,0,0,0,36,1,0,0,0,0,38,1,0,0,0,0,40,1,0,0,0,0,42,1,0,0,0,0,44,1,0,0,0,0,46,1,0,0,0,0,48,1,0,0,0,0,50,1,0,0,0,0,52,1,0,0,0,0,54,1,0,0,0,0,56,1,0,0,0,0,58,1,0,0,0,0,60,1,0,0,0,0,62,1,0,0,0,0,64,1,0,0,0,0,66,1,0,0,0,0,68,1,0,0,0,0,70,1,0,0,0,0,72,1,0,0,0,0,74,1,0,0,0,0,76,1,0,0,0,0,78,1,0,0,0,0,80,1,0,0,0,0,82,1,0,0,0,0,84,1,0,0,0,0,86,1,0,0,0,0,88,1,0,0,0,0,90,1,0,0,0,0,92,1,0,0,0,0,98,1,0,0,0,0,100,1,0,0,0,0,102,1,0,0,0,1,104,1,0,0,0,1,106,1,0,0,0,1,108,1,0,0,0,1,110,1,0,0,0,1,112,1,0,0,0,1,114,1,0,0,0,1,116,1,0,0,0,1,118,1,0,0,0,2,124,1,0,0,0,4,126,1,0,0,0,6,128,1,0,0,0,8,130,1,0,0,0,10,132,1,0,0,0,12,134,1,0,0,0,14,136,1,0,0,0,16,138,1,0,0,0,18,140,1,0,0,0,20,142,1,0,0,0,22,144,1,0,0,0,24,146,1,0,0,0,26,148,1,0,0,0,28,150,1,0,0,0,30,153,1,0,0,0,32,155,1,0,0,0,34,157,1,0,0,0,36,159,1,0,0,0,38,161,1,0,0,0,40,163,1,0,0,0,42,165,1,0,0,0,44,167,1,0,0,0,46,169,1,0,0,0,48,171,1,0,0,0,50,174,1,0,0,0,52,177,1,0,0,0,54,179,1,0,0,0,56,182,1,0,0,0,58,185,1,0,0,0,60,190,1,0,0,0,62,196,1,0,0,0,64,201,1,0,0,0,66,209,1,0,0,0,68,216,1,0,0,0,70,221,1,0,0,0,72,228,1,0,0,0,74,235,1,0,0,0,76,246,1,0,0,0,78,253,1,0,0,0,80,261,1,0,0,0,82,290,1,0,0,0,84,315,1,0,0,0,86,317,1,0,0,0,88,324,1,0,0,0,90,329,1,0,0,0,92,343,1,0,0,0,94,357,1,0,0,0,96,359,1,0,0,0,98,362,1,0,0,0,100,368,1,0,0,0,102,373,1,0,0,0,104,379,1,0,0,0,106,390,1,0,0,0,108,392,1,0,0,0,110,404,1,0,0,0,112,410,1,0,0,0,114,414,1,0,0,0,116,425,1,0,0,0,118,429,1,0,0,0,120,431,1,0,0,0,122,454,1,0,0,0,124,125,5,40,0,0,125,3,1,0,0,0,126,127,5,41,0,0,127,5,1,0,0,0,128,129,5,58,0,0,129,7,1,0,0,0,130,131,5,59,0,0,131,9,1,0,0,0,132,133,5,44,0,0,133,11,1,0,0,0,134,135,5,91,0,0,135,13,1,0,0,0,136,137,5,93,0,0,137,15,1,0,0,0,138,139,5,123,0,0,139,17,1,0,0,0,140,141,5,125,0,0,141,19,1,0,0,0,142,143,5,43,0,0,143,21,1,0,0,0,144,145,5,45,0,0,145,23,1,0,0,0,146,147,5,42,0,0,147,25,1,0,0,0,148,149,5,47,0,0,149,27,1,0,0,0,150,151,5,46,0,0,151,152,5,37,0,0,152,29,1,0,0,0,153,154,5,37,0,0,154,31,1,0,0,0,155,156,5,38,0,0,156,33,1,0,0,0,157,158,5,124,0,0,158,35,1,0,0,0,159,160,5,61,0,0,160,37,1,0,0,0,161,162,5,33,0,0,162,39,1,0,0,0,163,164,5,36,0,0,164,41,1,0,0,0,165,166,5,94,0,0,166,43,1,0,0,0,167,168,5,126,0,0,168,45,1,0,0,0,169,170,5,64,0,0,170,47,1,0,0,0,171,172,5,62,0,0,172,173,6,23,0,0,173,49,1,0,0,0,174,175,5,62,0,0,175,176,5,61,0,0,176,51,1,0,0,0,177,178,5,60,0,0,178,53,1,0,0,0,179,180,5,60,0,0,180,181,5,61,0,0,181,55,1,0,0,0,182,183,5,105,0,0,183,184,5,102,0,0,184,57,1,0,0,0,185,186,5,101,0,0,186,187,5,108,0,0,187,188,5,115,0,0,188,189,5,101,0,0,189,59,1,0,0,0,190,191,5,119,0,0,191,192,5,104,0,0,192,193,5,105,0,0,193,194,5,108,0,0,194,195,5,101,0,0,195,61,1,0,0,0,196,197,5,99,0,0,197,198,5,97,0,0,198,199,5,115,0,0,199,200,5,101,0,0,200,63,1,0,0,0,201,202,5,100,0,0,202,203,5,101,0,0,203,204,5,102,0,0,204,205,5,97,0,0,205,206,5,117,0,0,206,207,5,108,0,0,207,208,5,116,0,0,208,65,1,0,0,0,209,210,5,114,0,0,210,211,5,101,0,0,211,212,5,116,0,0,212,213,5,117,0,0,213,214,5,114,0,0,214,215,5,110,0,0,215,67,1,0,0,0,216,217,5,99,0,0,217,218,5,97,0,0,218,219,5,108,0,0,219,220,5,99,0,0,220,69,1,0,0,0,221,222,3,100,49,0,222,223,5,97,0,0,223,224,5,114,0,0,224,225,5,114,0,0,225,226,5,97,0,0,226,227,5,121,0,0,227,71,1,0,0,0,228,229,5,100,0,0,229,230,5,101,0,0,230,231,5,102,0,0,231,232,5,95,0,0,232,233,1,0,0,0,233,234,3,100,49,0,234,73,1,0,0,0,235,236,5,115,0,0,236,237,5,119,0,0,237,238,5,105,0,0,238,239,5,116,0,0,239,240,5,99,0,0,240,241,5,104,0,0,241,242,5,95,0,0,242,243,1,0,0,0,243,244,3,100,49,0,244,75,1,0,0,0,245,247,5,45,0,0,246,245,1,0,0,0,246,247,1,0,0,0,247,249,1,0,0,0,248,250,3,94,46,0,249,248,1,0,0,0,250,251,1,0,0,0,251,249,1,0,0,0,251,252,1,0,0,0,252,77,1,0,0,0,253,254,5,48,0,0,254,256,7,0,0,0,255,257,7,1,0,0,256,255,1,0,0,0,257,258,1,0,0,0,258,256,1,0,0,0,258,259,1,0,0,0,259,79,1,0,0,0,260,262,3,94,46,0,261,260,1,0,0,0,262,263,1,0,0,0,263,261,1,0,0,0,263,264,1,0,0,0,264,265,1,0,0,0,265,267,5,95,0,0,266,268,3,94,46,0,267,266,1,0,0,0,268,269,1,0,0,0,269,267,1,0,0,0,269,270,1,0,0,0,270,271,1,0,0,0,271,273,5,95,0,0,272,274,3,94,46,0,273,272,1,0,0,0,274,275,1,0,0,0,275,273,1,0,0,0,275,276,1,0,0,0,276,277,1,0,0,0,277,279,5,95,0,0,278,280,3,94,46,0,279,278,1,0,0,0,280,281,1,0,0,0,281,279,1,0,0,0,281,282,1,0,0,0,282,283,1,0,0,0,283,285,5,95,0,0,284,286,3,94,46,0,285,284,1,0,0,0,286,287,1,0,0,0,287,285,1,0,0,0,287,288,1,0,0,0,288,81,1,0,0,0,289,291,3,94,46,0,290,289,1,0,0,0,291,292,1,0,0,0,292,290,1,0,0,0,292,293,1,0,0,0,293,294,1,0,0,0,294,296,5,95,0,0,295,297,3,94,46,0,296,295,1,0,0,0,297,298,1,0,0,0,298,296,1,0,0,0,298,299,1,0,0,0,299,300,1,0,0,0,300,302,5,95,0,0,301,303,3,94,46,0,302,301,1,0,0,0,303,304,1,0,0,0,304,302,1,0,0,0,304,305,1,0,0,0,305,83,1,0,0,0,306,307,5,116,0,0,307,308,5,114,0,0,308,309,5,117,0,0,309,316,5,101,0,0,310,311,5,102,0,0,311,312,5,97,0,0,312,313,5,108,0,0,313,314,5,115,0,0,314,316,5,101,0,0,315,306,1,0,0,0,315,310,1,0,0,0,316,85,1,0,0,0,317,320,5,39,0,0,318,321,3,96,47,0,319,321,8,2,0,0,320,318,1,0,0,0,320,319,1,0,0,0,321,322,1,0,0,0,322,323,5,39,0,0,323,87,1,0,0,0,324,325,5,110,0,0,325,326,5,117,0,0,326,327,5,108,0,0,327,328,5,108,0,0,328,89,1,0,0,0,329,330,5,47,0,0,330,331,5,47,0,0,331,335,1,0,0,0,332,334,9,0,0,0,333,332,1,0,0,0,334,337,1,0,0,0,335,336,1,0,0,0,335,333,1,0,0,0,336,339,1,0,0,0,337,335,1,0,0,0,338,340,7,3,0,0,339,338,1,0,0,0,340,341,1,0,0,0,341,342,6,44,1,0,342,91,1,0,0,0,343,344,5,47,0,0,344,345,5,42,0,0,345,349,1,0,0,0,346,348,9,0,0,0,347,346,1,0,0,0,348,351,1,0,0,0,349,350,1,0,0,0,349,347,1,0,0,0,350,352,1,0,0,0,351,349,1,0,0,0,352,353,5,42,0,0,353,354,5,47,0,0,354,355,1,0,0,0,355,356,6,45,1,0,356,93,1,0,0,0,357,358,7,4,0,0,358,95,1,0,0,0,359,360,5,92,0,0,360,361,7,5,0,0,361,97,1,0,0,0,362,363,5,34,0,0,363,364,6,48,2,0,364,365,1,0,0,0,365,366,6,48,3,0,366,99,1,0,0,0,367,369,7,6,0,0,368,367,1,0,0,0,369,370,1,0,0,0,370,368,1,0,0,0,370,371,1,0,0,0,371,101,1,0,0,0,372,374,7,7,0,0,373,372,1,0,0,0,374,375,1,0,0,0,375,373,1,0,0,0,375,376,1,0,0,0,376,377,1,0,0,0,377,378,6,50,1,0,378,103,1,0,0,0,379,380,5,34,0,0,380,381,6,51,4,0,381,382,1,0,0,0,382,383,6,51,5,0,383,105,1,0,0,0,384,391,3,120,59,0,385,387,8,8,0,0,386,385,1,0,0,0,387,388,1,0,0,0,388,386,1,0,0,0,388,389,1,0,0,0,389,391,1,0,0,0,390,384,1,0,0,0,390,386,1,0,0,0,391,107,1,0,0,0,392,393,5,60,0,0,393,400,3,122,60,0,394,396,5,61,0,0,395,397,8,9,0,0,396,395,1,0,0,0,397,398,1,0,0,0,398,396,1,0,0,0,398,399,1,0,0,0,399,401,1,0,0,0,400,394,1,0,0,0,400,401,1,0,0,0,401,402,1,0,0,0,402,403,5,62,0,0,403,109,1,0,0,0,404,405,5,60,0,0,405,406,5,47,0,0,406,407,1,0,0,0,407,408,3,122,60,0,408,409,5,62,0,0,409,111,1,0,0,0,410,411,5,60,0,0,411,412,3,122,60,0,412,413,5,61,0,0,413,113,1,0,0,0,414,415,5,60,0,0,415,416,5,112,0,0,416,417,5,44,0,0,417,419,1,0,0,0,418,420,8,9,0,0,419,418,1,0,0,0,420,421,1,0,0,0,421,419,1,0,0,0,421,422,1,0,0,0,422,423,1,0,0,0,423,424,5,62,0,0,424,115,1,0,0,0,425,426,5,60,0,0,426,427,1,0,0,0,427,428,6,57,6,0,428,117,1,0,0,0,429,430,5,62,0,0,430,119,1,0,0,0,431,432,5,92,0,0,432,433,7,10,0,0,433,121,1,0,0,0,434,435,5,98,0,0,435,455,5,114,0,0,436,437,5,99,0,0,437,438,5,111,0,0,438,455,5,108,0,0,439,440,5,115,0,0,440,441,5,116,0,0,441,455,5,114,0,0,442,443,5,115,0,0,443,444,5,104,0,0,444,445,5,97,0,0,445,455,5,100,0,0,446,455,5,117,0,0,447,448,5,105,0,0,448,449,5,109,0,0,449,455,5,103,0,0,450,451,5,103,0,0,451,455,5,116,0,0,452,453,5,108,0,0,453,455,5,116,0,0,454,434,1,0,0,0,454,436,1,0,0,0,454,439,1,0,0,0,454,442,1,0,0,0,454,446,1,0,0,0,454,447,1,0,0,0,454,450,1,0,0,0,454,452,1,0,0,0,455,123,1,0,0,0,26,0,1,246,251,258,263,269,275,281,287,292,298,304,315,320,335,339,349,370,375,388,390,398,400,421,454,7,1,23,0,0,1,0,1,48,1,5,1,0,1,51,2,4,0,0,5,0,0];static __ATN;static get _ATN(){if(!c.__ATN)c.__ATN=new N1().deserialize(c._serializedATN);return c.__ATN}static vocabulary=new f0(c.literalNames,c.symbolicNames,[]);get vocabulary(){return c.vocabulary}static decisionsToDFA=c._ATN.decisionToState.map((U,X)=>new o0(U,X))}class z4 extends i{text;constructor(U,X){super(U);this.text=X}accept(U){return U.visitToken(this)}}class I4 extends i{scripts;constructor(U,X){super(U);this.scripts=X,this.addChildren(this.scripts)}accept(U){return U.visitScriptFile(this)}}class q1 extends i{kind="Script";trigger;name;isStar;parameters;returnTokens;statements;block;symbol;returnType;triggerType;subjectReference=null;parameterType;constructor(U){super(U.source);if(this.trigger=U.trigger,this.name=U.name,this.isStar=U.isStar,this.parameters=U.parameters,this.returnTokens=U.returnTokens,this.statements=U.statements,this.addChild(this.trigger),this.addChild(this.name),this.parameters)this.addChildren(this.parameters);if(this.returnTokens)this.addChildren(this.returnTokens);this.addChildren(this.statements)}get nameString(){return this.isStar?`${this.name.text}*`:this.name.text}accept(U){return U.visitScript(this)}}class A4 extends i{typeToken;name;symbol;constructor(U,X,Y){super(U);this.typeToken=X,this.name=Y,this.addChild(this.typeToken),this.addChild(this.name)}accept(U){return U.visitParameter(this)}}class d extends i{constructor(U){super(U)}}class K4 extends d{kind="BlockStatement";statements;scope;constructor(U,X){super(U);this.statements=X,this.addChildren(this.statements)}accept(U){return U.visitBlockStatement(this)}}class r extends i{constructor(U){super(U)}type=null;typeHint=null;getNullableType(){return this.type}getType(){if(this.type==null)throw Error("Attribute: 'type' should be initialized before get.");else return this.type}}class e extends r{value;constructor(U,X){super(U);this.value=X}}class D4 extends e{kind="NullLiteral";constructor(U){super(U,-1)}accept(U){return U.visitNullLiteral(this)}}class B4 extends d{kind="ReturnStatement";expressions;constructor(U,X){super(U);this.expressions=X,this.addChildren(this.expressions)}accept(U){return U.visitReturnStatement(this)}}class w4 extends d{kind="IfStatement";condition;thenStatement;elseStatement;constructor(U,X,Y,G){super(U);this.condition=X,this.thenStatement=Y,this.elseStatement=G,this.addChild(this.condition),this.addChild(this.thenStatement),this.addChild(this.elseStatement)}accept(U){return U.visitIfStatement(this)}}class R4 extends d{kind="WhileStatement";condition;thenStatement;constructor(U,X,Y){super(U);this.condition=X,this.thenStatement=Y,this.addChild(this.condition),this.addChild(this.thenStatement)}accept(U){return U.visitWhileStatement(this)}}class O2 extends d{kind="SwitchStatement";typeToken;condition;cases;defaultCase=null;type;constructor(U,X,Y,G){super(U);this.typeToken=X,this.condition=Y,this.cases=G,this.addChild(this.typeToken),this.addChild(this.condition),this.addChildren(this.cases)}accept(U){return U.visitSwitchStatement(this)}}class H4 extends i{kind="SwitchCase";keys;statements;scope;constructor(U,X,Y){super(U);this.keys=X,this.statements=Y,this.addChildren(this.keys),this.addChildren(this.statements)}get isDefault(){return this.keys.length===0}accept(U){return U.visitSwitchCase(this)}}class L4 extends d{kind="DeclarationStatement";typeToken;name;initializer;symbol;constructor(U,X,Y,G){super(U);this.typeToken=X,this.name=Y,this.initializer=G,this.addChild(this.typeToken),this.addChild(this.name),this.addChild(this.initializer)}accept(U){return U.visitDeclarationStatement(this)}}class M4 extends d{kind="ArrayDeclarationStatement";typeToken;name;initializer;symbol;constructor(U,X,Y,G){super(U);this.typeToken=X,this.name=Y,this.initializer=G,this.addChild(this.typeToken),this.addChild(this.name),this.addChild(this.initializer)}accept(U){return U.visitArrayDeclarationStatement(this)}}class k4 extends d{kind="AssignmentStatement";vars;expressions;constructor(U,X,Y){super(U);this.vars=X,this.expressions=Y,this.addChildren(this.vars),this.addChildren(this.expressions)}accept(U){return U.visitAssignmentStatement(this)}}class O4 extends d{kind="ExpressionStatement";expression;constructor(U,X){super(U);this.expression=X,this.addChild(this.expression)}accept(U){return U.visitExpressionStatement(this)}}class j4 extends d{readonly="EmptyStatement";constructor(U){super(U)}accept(U){return U.visitEmptyStatement(this)}}class i0 extends r{kind="ParenthesizedExpression";expression;constructor(U,X){super(U);this.expression=X,this.addChild(this.expression)}accept(U){return U.visitParenthesizedExpression(this)}}class C1 extends r{left;operator;right;constructor(U,X,Y,G){super(U);this.left=X,this.operator=Y,this.right=G,this.addChild(this.left),this.addChild(this.operator),this.addChild(this.right)}accept(U){return U.visitBinaryExpression(this)}}class h4 extends C1{kind="ArithmeticExpression";constructor(U,X,Y,G){super(U,X,Y,G)}accept(U){return U.visitArithmeticExpression(this)}}class f1 extends r{name;reference=null;constructor(U,X){super(U);this.name=X,this.addChild(this.name)}}class F1 extends f1{kind="LocalVariableExpression";index;constructor(U,X,Y){super(U,X);this.index=Y,this.addChild(this.index)}get isArray(){return this.index!=null}accept(U){return U.visitLocalVariableExpression(this)}}class E4 extends r{kind="CalcExpression";expression;constructor(U,X){super(U);this.expression=X,this.addChild(this.expression)}accept(U){return U.visitCalcExpression(this)}}class Y0 extends r{name;arguments;symbol;constructor(U,X,Y){super(U);this.name=X,this.arguments=Y,this.addChild(this.name),this.addChildren(this.arguments)}}class m0 extends Y0{kind="CommandCallExpression";arguments2;constructor(U,X,Y,G){super(U,X,Y);if(this.arguments2=G,this.arguments2)this.addChildren(this.arguments2)}get isStar(){return this.arguments2!=null}get nameString(){return this.isStar?`${this.name.text}*`:this.name.text}accept(U){return U.visitCommandCallExpression(this)}}class j2 extends Y0{kind="ProcCallExpression";constructor(U,X,Y){super(U,X,Y)}accept(U){return U.visitProcCallExpression(this)}}class h2 extends Y0{kind="JumpCallExpression";constructor(U,X,Y){super(U,X,Y)}accept(U){return U.visitJumpCallExpression(this)}}class E2 extends Y0{kind="ClientScriptExpression";transmitList;constructor(U,X,Y,G){super(U,X,Y);this.transmitList=G,this.addChildren(this.transmitList)}accept(U){return U.visitClientScriptExpression(this)}}class C2 extends f1{kind="GameVariableExpression";dot;constructor(U,X,Y){super(U,Y);this.dot=X}accept(U){return U.visitGameVariableExpression(this)}}class V1 extends f1{kind="ConstantVariableExpression";subExpression=null;constructor(U,X){super(U,X)}accept(U){return U.visitConstantVariableExpression(this)}}class $3 extends e{kind="IntegerLiteral";constructor(U,X){super(U,X)}accept(U){return U.visitIntegerLiteral(this)}}class C4 extends e{kind="CoordLiteral";constructor(U,X){super(U,X)}accept(U){return U.visitCoordLiteral(this)}}class f4 extends e{kind="BooleanLiteral";constructor(U,X){super(U,X)}accept(U){return U.visitBooleanLiteral(this)}}class P1 extends C1{kind="ConditionExpression";constructor(U,X,Y,G){super(U,X,Y,G)}accept(U){return U.visitConditionExpression(this)}}class V4 extends e{kind="CharacterLiteral";constructor(U,X){super(U,X)}accept(U){return U.visitCharacterLiteral(this)}}class W1 extends e{kind="StringLiteral";symbol=null;subExpression=null;constructor(U,X){super(U,X)}accept(U){return U.visitStringLiteral(this)}}class P4 extends r{kind="JoinedStringExpression";parts;constructor(U,X){super(U);this.parts=X,this.addChildren(this.parts)}accept(U){return U.visitJoinedStringExpression(this)}}class b4 extends i{constructor(U){super(U)}accept(U){return U.visitJoinedStringPart(this)}}class t0 extends b4{kind="BasicStringPart";value;constructor(U,X){super(U);this.value=X}}class u4 extends t0{kind="PTagStringPart"}class r0 extends b4{kind="ExpressionStringPart";expression;constructor(U,X){super(U);this.expression=X,this.addChild(this.expression)}}class _0 extends r{kind="Identifier";text;reference=null;constructor(U,X){super(U);this.text=X}accept(U){return U.visitIdentifier(this)}}class q extends _4{static LPAREN=1;static RPAREN=2;static COLON=3;static SEMICOLON=4;static COMMA=5;static LBRACK=6;static RBRACK=7;static LBRACE=8;static RBRACE=9;static PLUS=10;static MINUS=11;static MUL=12;static DIV=13;static DOTMOD=14;static MOD=15;static AND=16;static OR=17;static EQ=18;static EXCL=19;static DOLLAR=20;static CARET=21;static TILDE=22;static AT=23;static GT=24;static GTE=25;static LT=26;static LTE=27;static IF=28;static ELSE=29;static WHILE=30;static CASE=31;static DEFAULT=32;static RETURN=33;static CALC=34;static TYPE_ARRAY=35;static DEF_TYPE=36;static SWITCH_TYPE=37;static INTEGER_LITERAL=38;static HEX_LITERAL=39;static COORD_LITERAL=40;static MAPZONE_LITERAL=41;static BOOLEAN_LITERAL=42;static CHAR_LITERAL=43;static NULL_LITERAL=44;static LINE_COMMENT=45;static BLOCK_COMMENT=46;static QUOTE_OPEN=47;static IDENTIFIER=48;static WHITESPACE=49;static QUOTE_CLOSE=50;static STRING_TEXT=51;static STRING_TAG=52;static STRING_CLOSE_TAG=53;static STRING_PARTIAL_TAG=54;static STRING_P_TAG=55;static STRING_EXPR_START=56;static STRING_EXPR_END=57;static RULE_scriptFile=0;static RULE_script=1;static RULE_parameterList=2;static RULE_parameter=3;static RULE_typeList=4;static RULE_statement=5;static RULE_blockStatement=6;static RULE_returnStatement=7;static RULE_ifStatement=8;static RULE_whileStatement=9;static RULE_switchStatement=10;static RULE_switchCase=11;static RULE_declarationStatement=12;static RULE_arrayDeclarationStatement=13;static RULE_assignmentStatement=14;static RULE_expressionStatement=15;static RULE_emptyStatement=16;static RULE_expressionList=17;static RULE_parenthesis=18;static RULE_singleExpression=19;static RULE_expression=20;static RULE_condition=21;static RULE_calc=22;static RULE_arithmetic=23;static RULE_call=24;static RULE_clientScript=25;static RULE_assignableVariableList=26;static RULE_assignableVariable=27;static RULE_localVariable=28;static RULE_localArrayVariable=29;static RULE_gameVariable=30;static RULE_constantVariable=31;static RULE_literal=32;static RULE_stringLiteral=33;static RULE_stringLiteralContent=34;static RULE_joinedString=35;static RULE_stringTag=36;static RULE_stringPTag=37;static RULE_stringExpression=38;static RULE_identifier=39;static RULE_advancedIdentifier=40;static literalNames=[null,"'('","')'","':'","';'","','","'['","']'","'{'","'}'","'+'","'-'","'*'","'/'","'.%'","'%'","'&'","'|'","'='","'!'","'$'","'^'","'~'","'@'",null,"'>='",null,"'<='","'if'","'else'","'while'","'case'","'default'","'return'","'calc'",null,null,null,null,null,null,null,null,null,"'null'"];static symbolicNames=[null,"LPAREN","RPAREN","COLON","SEMICOLON","COMMA","LBRACK","RBRACK","LBRACE","RBRACE","PLUS","MINUS","MUL","DIV","DOTMOD","MOD","AND","OR","EQ","EXCL","DOLLAR","CARET","TILDE","AT","GT","GTE","LT","LTE","IF","ELSE","WHILE","CASE","DEFAULT","RETURN","CALC","TYPE_ARRAY","DEF_TYPE","SWITCH_TYPE","INTEGER_LITERAL","HEX_LITERAL","COORD_LITERAL","MAPZONE_LITERAL","BOOLEAN_LITERAL","CHAR_LITERAL","NULL_LITERAL","LINE_COMMENT","BLOCK_COMMENT","QUOTE_OPEN","IDENTIFIER","WHITESPACE","QUOTE_CLOSE","STRING_TEXT","STRING_TAG","STRING_CLOSE_TAG","STRING_PARTIAL_TAG","STRING_P_TAG","STRING_EXPR_START","STRING_EXPR_END"];static ruleNames=["scriptFile","script","parameterList","parameter","typeList","statement","blockStatement","returnStatement","ifStatement","whileStatement","switchStatement","switchCase","declarationStatement","arrayDeclarationStatement","assignmentStatement","expressionStatement","emptyStatement","expressionList","parenthesis","singleExpression","expression","condition","calc","arithmetic","call","clientScript","assignableVariableList","assignableVariable","localVariable","localArrayVariable","gameVariable","constantVariable","literal","stringLiteral","stringLiteralContent","joinedString","stringTag","stringPTag","stringExpression","identifier","advancedIdentifier"];get grammarFileName(){return"RuneScriptParser.g4"}get literalNames(){return q.literalNames}get symbolicNames(){return q.symbolicNames}get ruleNames(){return q.ruleNames}get serializedATN(){return q._serializedATN}createFailedPredicateException(U,X){return new M2(this,U,X)}constructor(U){super(U);this.interpreter=new k2(this,q._ATN,q.decisionsToDFA,new E1)}scriptFile(){let U=new e6(this.context,this.state);this.enterRule(U,0,q.RULE_scriptFile);let X;try{this.enterOuterAlt(U,1);{this.state=85,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while(X===6)this.state=82,this.script(),this.state=87,this.errorHandler.sync(this),X=this.tokenStream.LA(1);this.state=88,this.match(q.EOF)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}script(){let U=new Z3(this.context,this.state);this.enterRule(U,2,q.RULE_script);let X;try{this.enterOuterAlt(U,1);{if(this.state=90,this.match(q.LBRACK),this.state=91,U._trigger=this.identifier(),this.state=92,this.match(q.COMMA),this.state=93,U._name=this.identifier(),this.state=95,this.errorHandler.sync(this),X=this.tokenStream.LA(1),X===12)this.state=94,this.match(q.MUL);switch(this.state=97,this.match(q.RBRACK),this.state=111,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,5,this.context)){case 1:{{if(this.state=98,this.match(q.LPAREN),this.state=100,this.errorHandler.sync(this),X=this.tokenStream.LA(1),X===35||X===48)this.state=99,this.parameterList();this.state=102,this.match(q.RPAREN)}switch(this.state=109,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,4,this.context)){case 1:{if(this.state=104,this.match(q.LPAREN),this.state=106,this.errorHandler.sync(this),X=this.tokenStream.LA(1),X===48)this.state=105,this.typeList();this.state=108,this.match(q.RPAREN)}break}}break}this.state=116,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while((X&-32)===0&&(1<<X&1357955346)!==0||(X-32&-32)===0&&(1<<X-32&106495)!==0)this.state=113,this.statement(),this.state=118,this.errorHandler.sync(this),X=this.tokenStream.LA(1)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}parameterList(){let U=new x4(this.context,this.state);this.enterRule(U,4,q.RULE_parameterList);let X;try{this.enterOuterAlt(U,1);{this.state=119,this.parameter(),this.state=124,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while(X===5)this.state=120,this.match(q.COMMA),this.state=121,this.parameter(),this.state=126,this.errorHandler.sync(this),X=this.tokenStream.LA(1)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}parameter(){let U=new J3(this.context,this.state);this.enterRule(U,6,q.RULE_parameter);let X;try{this.enterOuterAlt(U,1);{if(this.state=127,U._type_=this.tokenStream.LT(1),X=this.tokenStream.LA(1),!(X===35||X===48))U._type_=this.errorHandler.recoverInline(this);else this.errorHandler.reportMatch(this),this.consume();this.state=128,this.match(q.DOLLAR),this.state=129,this.advancedIdentifier()}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}typeList(){let U=new g4(this.context,this.state);this.enterRule(U,8,q.RULE_typeList);let X;try{this.enterOuterAlt(U,1);{this.state=131,this.match(q.IDENTIFIER),this.state=136,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while(X===5)this.state=132,this.match(q.COMMA),this.state=133,this.match(q.IDENTIFIER),this.state=138,this.errorHandler.sync(this),X=this.tokenStream.LA(1)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}statement(){let U=new V0(this.context,this.state);this.enterRule(U,10,q.RULE_statement);try{switch(this.state=149,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,9,this.context)){case 1:this.enterOuterAlt(U,1),this.state=139,this.blockStatement();break;case 2:this.enterOuterAlt(U,2),this.state=140,this.returnStatement();break;case 3:this.enterOuterAlt(U,3),this.state=141,this.ifStatement();break;case 4:this.enterOuterAlt(U,4),this.state=142,this.whileStatement();break;case 5:this.enterOuterAlt(U,5),this.state=143,this.switchStatement();break;case 6:this.enterOuterAlt(U,6),this.state=144,this.declarationStatement();break;case 7:this.enterOuterAlt(U,7),this.state=145,this.arrayDeclarationStatement();break;case 8:this.enterOuterAlt(U,8),this.state=146,this.assignmentStatement();break;case 9:this.enterOuterAlt(U,9),this.state=147,this.expressionStatement();break;case 10:this.enterOuterAlt(U,10),this.state=148,this.emptyStatement();break}}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}blockStatement(){let U=new m4(this.context,this.state);this.enterRule(U,12,q.RULE_blockStatement);let X;try{this.enterOuterAlt(U,1);{this.state=151,this.match(q.LBRACE),this.state=155,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while((X&-32)===0&&(1<<X&1357955346)!==0||(X-32&-32)===0&&(1<<X-32&106495)!==0)this.state=152,this.statement(),this.state=157,this.errorHandler.sync(this),X=this.tokenStream.LA(1);this.state=158,this.match(q.RBRACE)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}returnStatement(){let U=new d4(this.context,this.state);this.enterRule(U,14,q.RULE_returnStatement);let X;try{this.enterOuterAlt(U,1);{if(this.state=160,this.match(q.RETURN),this.state=166,this.errorHandler.sync(this),X=this.tokenStream.LA(1),X===1){if(this.state=161,this.match(q.LPAREN),this.state=163,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=162,this.expressionList();this.state=165,this.match(q.RPAREN)}this.state=168,this.match(q.SEMICOLON)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}ifStatement(){let U=new T4(this.context,this.state);this.enterRule(U,16,q.RULE_ifStatement);try{switch(this.enterOuterAlt(U,1),this.state=170,this.match(q.IF),this.state=171,this.match(q.LPAREN),this.state=172,this.condition(0),this.state=173,this.match(q.RPAREN),this.state=174,this.statement(),this.state=177,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,13,this.context)){case 1:this.state=175,this.match(q.ELSE),this.state=176,this.statement();break}}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}whileStatement(){let U=new l4(this.context,this.state);this.enterRule(U,18,q.RULE_whileStatement);try{this.enterOuterAlt(U,1),this.state=179,this.match(q.WHILE),this.state=180,this.match(q.LPAREN),this.state=181,this.condition(0),this.state=182,this.match(q.RPAREN),this.state=183,this.statement()}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}switchStatement(){let U=new y4(this.context,this.state);this.enterRule(U,20,q.RULE_switchStatement);let X;try{this.enterOuterAlt(U,1);{this.state=185,this.match(q.SWITCH_TYPE),this.state=186,this.parenthesis(),this.state=187,this.match(q.LBRACE),this.state=191,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while(X===31)this.state=188,this.switchCase(),this.state=193,this.errorHandler.sync(this),X=this.tokenStream.LA(1);this.state=194,this.match(q.RBRACE)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}switchCase(){let U=new Q3(this.context,this.state);this.enterRule(U,22,q.RULE_switchCase);let X;try{this.enterOuterAlt(U,1);{switch(this.state=196,this.match(q.CASE),this.state=199,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,15,this.context)){case 1:this.state=197,this.match(q.DEFAULT);break;case 2:this.state=198,this.expressionList();break}this.state=201,this.match(q.COLON),this.state=205,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while((X&-32)===0&&(1<<X&1357955346)!==0||(X-32&-32)===0&&(1<<X-32&106495)!==0)this.state=202,this.statement(),this.state=207,this.errorHandler.sync(this),X=this.tokenStream.LA(1)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}declarationStatement(){let U=new c4(this.context,this.state);this.enterRule(U,24,q.RULE_declarationStatement);let X;try{this.enterOuterAlt(U,1);{if(this.state=208,this.match(q.DEF_TYPE),this.state=209,this.match(q.DOLLAR),this.state=210,this.advancedIdentifier(),this.state=213,this.errorHandler.sync(this),X=this.tokenStream.LA(1),X===18)this.state=211,this.match(q.EQ),this.state=212,this.expression();this.state=215,this.match(q.SEMICOLON)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}arrayDeclarationStatement(){let U=new a4(this.context,this.state);this.enterRule(U,26,q.RULE_arrayDeclarationStatement);try{this.enterOuterAlt(U,1),this.state=217,this.match(q.DEF_TYPE),this.state=218,this.match(q.DOLLAR),this.state=219,this.advancedIdentifier(),this.state=220,this.parenthesis(),this.state=221,this.match(q.SEMICOLON)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}assignmentStatement(){let U=new s4(this.context,this.state);this.enterRule(U,28,q.RULE_assignmentStatement);try{this.enterOuterAlt(U,1),this.state=223,this.assignableVariableList(),this.state=224,this.match(q.EQ),this.state=225,this.expressionList(),this.state=226,this.match(q.SEMICOLON)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}expressionStatement(){let U=new n4(this.context,this.state);this.enterRule(U,30,q.RULE_expressionStatement);try{this.enterOuterAlt(U,1),this.state=228,this.expression(),this.state=229,this.match(q.SEMICOLON)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}emptyStatement(){let U=new p4(this.context,this.state);this.enterRule(U,32,q.RULE_emptyStatement);try{this.enterOuterAlt(U,1),this.state=231,this.match(q.SEMICOLON)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}expressionList(){let U=new P0(this.context,this.state);this.enterRule(U,34,q.RULE_expressionList);let X;try{this.enterOuterAlt(U,1);{this.state=233,this.expression(),this.state=238,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while(X===5)this.state=234,this.match(q.COMMA),this.state=235,this.expression(),this.state=240,this.errorHandler.sync(this),X=this.tokenStream.LA(1)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}parenthesis(){let U=new t1(this.context,this.state);this.enterRule(U,36,q.RULE_parenthesis);try{this.enterOuterAlt(U,1),this.state=241,this.match(q.LPAREN),this.state=242,this.expression(),this.state=243,this.match(q.RPAREN)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}singleExpression(){let U=new U9(this.context,this.state);this.enterRule(U,38,q.RULE_singleExpression);try{this.enterOuterAlt(U,1),this.state=245,this.expression(),this.state=246,this.match(q.EOF)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}expression(){let U=new T(this.context,this.state);this.enterRule(U,40,q.RULE_expression);try{switch(this.state=258,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,19,this.context)){case 1:U=new X9(U),this.enterOuterAlt(U,1),this.state=248,this.parenthesis();break;case 2:U=new Y9(U),this.enterOuterAlt(U,2),this.state=249,this.calc();break;case 3:U=new G9(U),this.enterOuterAlt(U,3),this.state=250,this.call();break;case 4:U=new $9(U),this.enterOuterAlt(U,4),this.state=251,this.localVariable();break;case 5:U=new Z9(U),this.enterOuterAlt(U,5),this.state=252,this.localArrayVariable();break;case 6:U=new J9(U),this.enterOuterAlt(U,6),this.state=253,this.gameVariable();break;case 7:U=new Q9(U),this.enterOuterAlt(U,7),this.state=254,this.constantVariable();break;case 8:U=new N9(U),this.enterOuterAlt(U,8),this.state=255,this.literal();break;case 9:U=new q9(U),this.enterOuterAlt(U,9),this.state=256,this.joinedString();break;case 10:U=new F9(U),this.enterOuterAlt(U,10),this.state=257,this.identifier();break}}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}condition(U){if(U===void 0)U=0;let X=this.context,Y=this.state,G=new z0(this.context,Y),$=G,Z=42;this.enterRecursionRule(G,42,q.RULE_condition,U);let J;try{let Q;this.enterOuterAlt(G,1);{switch(this.state=266,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,20,this.context)){case 1:G=new W9(G),this.context=G,$=G,this.state=261,this.match(q.LPAREN),this.state=262,this.condition(0),this.state=263,this.match(q.RPAREN);break;case 2:G=new _9(G),this.context=G,$=G,this.state=265,this.expression();break}this.context.stop=this.tokenStream.LT(-1),this.state=282,this.errorHandler.sync(this),Q=this.interpreter.adaptivePredict(this.tokenStream,22,this.context);while(Q!==2&&Q!==b.INVALID_ALT_NUMBER){if(Q===1){if(this.parseListeners!=null)this.triggerExitRuleEvent();switch($=G,this.state=280,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,21,this.context)){case 1:{if(G=new f2(new z0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_condition),this.state=268,!this.precpred(this.context,5))throw this.createFailedPredicateException("this.precpred(this.context, 5)");if(this.state=269,G._op=this.tokenStream.LT(1),J=this.tokenStream.LA(1),!((J&-32)===0&&(1<<J&251658240)!==0))G._op=this.errorHandler.recoverInline(this);else this.errorHandler.reportMatch(this),this.consume();this.state=270,this.condition(6)}break;case 2:{if(G=new f2(new z0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_condition),this.state=271,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");if(this.state=272,G._op=this.tokenStream.LT(1),J=this.tokenStream.LA(1),!(J===18||J===19))G._op=this.errorHandler.recoverInline(this);else this.errorHandler.reportMatch(this),this.consume();this.state=273,this.condition(5)}break;case 3:{if(G=new f2(new z0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_condition),this.state=274,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");this.state=275,G._op=this.match(q.AND),this.state=276,this.condition(4)}break;case 4:{if(G=new f2(new z0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_condition),this.state=277,!this.precpred(this.context,2))throw this.createFailedPredicateException("this.precpred(this.context, 2)");this.state=278,G._op=this.match(q.OR),this.state=279,this.condition(3)}break}}this.state=284,this.errorHandler.sync(this),Q=this.interpreter.adaptivePredict(this.tokenStream,22,this.context)}}}catch(Q){if(Q instanceof V)this.errorHandler.reportError(this,Q),this.errorHandler.recover(this,Q);else throw Q}finally{this.unrollRecursionContexts(X)}return G}calc(){let U=new o4(this.context,this.state);this.enterRule(U,44,q.RULE_calc);try{this.enterOuterAlt(U,1),this.state=285,this.match(q.CALC),this.state=286,this.match(q.LPAREN),this.state=287,this.arithmetic(0),this.state=288,this.match(q.RPAREN)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}arithmetic(U){if(U===void 0)U=0;let X=this.context,Y=this.state,G=new K0(this.context,Y),$=G,Z=46;this.enterRecursionRule(G,46,q.RULE_arithmetic,U);let J;try{let Q;this.enterOuterAlt(G,1);{switch(this.state=296,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,23,this.context)){case 1:G=new z9(G),this.context=G,$=G,this.state=291,this.match(q.LPAREN),this.state=292,this.arithmetic(0),this.state=293,this.match(q.RPAREN);break;case 2:G=new I9(G),this.context=G,$=G,this.state=295,this.expression();break}this.context.stop=this.tokenStream.LT(-1),this.state=312,this.errorHandler.sync(this),Q=this.interpreter.adaptivePredict(this.tokenStream,25,this.context);while(Q!==2&&Q!==b.INVALID_ALT_NUMBER){if(Q===1){if(this.parseListeners!=null)this.triggerExitRuleEvent();switch($=G,this.state=310,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,24,this.context)){case 1:{if(G=new V2(new K0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_arithmetic),this.state=298,!this.precpred(this.context,5))throw this.createFailedPredicateException("this.precpred(this.context, 5)");if(this.state=299,G._op=this.tokenStream.LT(1),J=this.tokenStream.LA(1),!((J&-32)===0&&(1<<J&45056)!==0))G._op=this.errorHandler.recoverInline(this);else this.errorHandler.reportMatch(this),this.consume();this.state=300,this.arithmetic(6)}break;case 2:{if(G=new V2(new K0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_arithmetic),this.state=301,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");if(this.state=302,G._op=this.tokenStream.LT(1),J=this.tokenStream.LA(1),!(J===10||J===11))G._op=this.errorHandler.recoverInline(this);else this.errorHandler.reportMatch(this),this.consume();this.state=303,this.arithmetic(5)}break;case 3:{if(G=new V2(new K0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_arithmetic),this.state=304,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");this.state=305,G._op=this.match(q.AND),this.state=306,this.arithmetic(4)}break;case 4:{if(G=new V2(new K0(X,Y)),this.pushNewRecursionContext(G,Z,q.RULE_arithmetic),this.state=307,!this.precpred(this.context,2))throw this.createFailedPredicateException("this.precpred(this.context, 2)");this.state=308,G._op=this.match(q.OR),this.state=309,this.arithmetic(3)}break}}this.state=314,this.errorHandler.sync(this),Q=this.interpreter.adaptivePredict(this.tokenStream,25,this.context)}}}catch(Q){if(Q instanceof V)this.errorHandler.reportError(this,Q),this.errorHandler.recover(this,Q);else throw Q}finally{this.unrollRecursionContexts(X)}return G}call(){let U=new r1(this.context,this.state);this.enterRule(U,48,q.RULE_call);let X;try{switch(this.state=353,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,33,this.context)){case 1:U=new v4(U),this.enterOuterAlt(U,1);{if(this.state=315,this.identifier(),this.state=316,this.match(q.MUL),this.state=317,this.match(q.LPAREN),this.state=319,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=318,this.expressionList();if(this.state=321,this.match(q.RPAREN),this.state=322,this.match(q.LPAREN),this.state=324,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=323,this.expressionList();this.state=326,this.match(q.RPAREN)}break;case 2:U=new v4(U),this.enterOuterAlt(U,2);{if(this.state=328,this.identifier(),this.state=329,this.match(q.LPAREN),this.state=331,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=330,this.expressionList();this.state=333,this.match(q.RPAREN)}break;case 3:switch(U=new A9(U),this.enterOuterAlt(U,3),this.state=335,this.match(q.TILDE),this.state=336,this.identifier(),this.state=342,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,30,this.context)){case 1:{if(this.state=337,this.match(q.LPAREN),this.state=339,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=338,this.expressionList();this.state=341,this.match(q.RPAREN)}break}break;case 4:switch(U=new K9(U),this.enterOuterAlt(U,4),this.state=344,this.match(q.AT),this.state=345,this.identifier(),this.state=351,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,32,this.context)){case 1:{if(this.state=346,this.match(q.LPAREN),this.state=348,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=347,this.expressionList();this.state=350,this.match(q.RPAREN)}break}break}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}clientScript(){let U=new D9(this.context,this.state);this.enterRule(U,50,q.RULE_clientScript);let X;try{this.enterOuterAlt(U,1);{if(this.state=355,this.identifier(),this.state=361,this.errorHandler.sync(this),X=this.tokenStream.LA(1),X===1){if(this.state=356,this.match(q.LPAREN),this.state=358,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=357,U._args=this.expressionList();this.state=360,this.match(q.RPAREN)}if(this.state=368,this.errorHandler.sync(this),X=this.tokenStream.LA(1),X===8){if(this.state=363,this.match(q.LBRACE),this.state=365,this.errorHandler.sync(this),X=this.tokenStream.LA(1),(X&-32)===0&&(1<<X&15777794)!==0||(X-32&-32)===0&&(1<<X-32&106493)!==0)this.state=364,U._triggers=this.expressionList();this.state=367,this.match(q.RBRACE)}this.state=370,this.match(q.EOF)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}assignableVariableList(){let U=new i4(this.context,this.state);this.enterRule(U,52,q.RULE_assignableVariableList);let X;try{this.enterOuterAlt(U,1);{this.state=372,this.assignableVariable(),this.state=377,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while(X===5)this.state=373,this.match(q.COMMA),this.state=374,this.assignableVariable(),this.state=379,this.errorHandler.sync(this),X=this.tokenStream.LA(1)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}assignableVariable(){let U=new N3(this.context,this.state);this.enterRule(U,54,q.RULE_assignableVariable);try{switch(this.state=383,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,39,this.context)){case 1:this.enterOuterAlt(U,1),this.state=380,this.localVariable();break;case 2:this.enterOuterAlt(U,2),this.state=381,this.localArrayVariable();break;case 3:this.enterOuterAlt(U,3),this.state=382,this.gameVariable();break}}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}localVariable(){let U=new q3(this.context,this.state);this.enterRule(U,56,q.RULE_localVariable);try{this.enterOuterAlt(U,1),this.state=385,this.match(q.DOLLAR),this.state=386,this.advancedIdentifier()}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}localArrayVariable(){let U=new F3(this.context,this.state);this.enterRule(U,58,q.RULE_localArrayVariable);try{this.enterOuterAlt(U,1),this.state=388,this.match(q.DOLLAR),this.state=389,this.advancedIdentifier(),this.state=390,this.parenthesis()}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}gameVariable(){let U=new W3(this.context,this.state);this.enterRule(U,60,q.RULE_gameVariable);try{switch(this.state=396,this.errorHandler.sync(this),this.tokenStream.LA(1)){case q.MOD:this.enterOuterAlt(U,1),this.state=392,this.match(q.MOD),this.state=393,this.advancedIdentifier();break;case q.DOTMOD:this.enterOuterAlt(U,2),this.state=394,this.match(q.DOTMOD),this.state=395,this.advancedIdentifier();break;default:throw new h1(this)}}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}constantVariable(){let U=new t4(this.context,this.state);this.enterRule(U,62,q.RULE_constantVariable);try{this.enterOuterAlt(U,1),this.state=398,this.match(q.CARET),this.state=399,this.advancedIdentifier()}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}literal(){let U=new e0(this.context,this.state);this.enterRule(U,64,q.RULE_literal);try{switch(this.state=408,this.errorHandler.sync(this),this.tokenStream.LA(1)){case q.INTEGER_LITERAL:U=new S4(U),this.enterOuterAlt(U,1),this.state=401,this.match(q.INTEGER_LITERAL);break;case q.HEX_LITERAL:U=new S4(U),this.enterOuterAlt(U,2),this.state=402,this.match(q.HEX_LITERAL);break;case q.COORD_LITERAL:U=new B9(U),this.enterOuterAlt(U,3),this.state=403,this.match(q.COORD_LITERAL);break;case q.BOOLEAN_LITERAL:U=new w9(U),this.enterOuterAlt(U,4),this.state=404,this.match(q.BOOLEAN_LITERAL);break;case q.CHAR_LITERAL:U=new R9(U),this.enterOuterAlt(U,5),this.state=405,this.match(q.CHAR_LITERAL);break;case q.NULL_LITERAL:U=new H9(U),this.enterOuterAlt(U,6),this.state=406,this.match(q.NULL_LITERAL);break;case q.QUOTE_OPEN:U=new L9(U),this.enterOuterAlt(U,7),this.state=407,this.stringLiteral();break;default:throw new h1(this)}}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}stringLiteral(){let U=new r4(this.context,this.state);this.enterRule(U,66,q.RULE_stringLiteral);let X;try{this.enterOuterAlt(U,1);{this.state=410,this.match(q.QUOTE_OPEN),this.state=414,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while(X===51)this.state=411,this.stringLiteralContent(),this.state=416,this.errorHandler.sync(this),X=this.tokenStream.LA(1);this.state=417,this.match(q.QUOTE_CLOSE)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}stringLiteralContent(){let U=new _1(this.context,this.state);this.enterRule(U,68,q.RULE_stringLiteralContent);try{this.enterOuterAlt(U,1),this.state=419,this.match(q.STRING_TEXT)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}joinedString(){let U=new e4(this.context,this.state);this.enterRule(U,70,q.RULE_joinedString);let X;try{this.enterOuterAlt(U,1);{this.state=421,this.match(q.QUOTE_OPEN),this.state=428,this.errorHandler.sync(this),X=this.tokenStream.LA(1);while((X-51&-32)===0&&(1<<X-51&63)!==0){switch(this.state=426,this.errorHandler.sync(this),this.tokenStream.LA(1)){case q.STRING_TEXT:this.state=422,this.stringLiteralContent();break;case q.STRING_TAG:case q.STRING_CLOSE_TAG:case q.STRING_PARTIAL_TAG:this.state=423,this.stringTag();break;case q.STRING_P_TAG:this.state=424,this.stringPTag();break;case q.STRING_EXPR_START:this.state=425,this.stringExpression();break;default:throw new h1(this)}this.state=430,this.errorHandler.sync(this),X=this.tokenStream.LA(1)}this.state=431,this.match(q.QUOTE_CLOSE)}}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}stringTag(){let U=new p1(this.context,this.state);this.enterRule(U,72,q.RULE_stringTag);let X;try{if(this.enterOuterAlt(U,1),this.state=433,X=this.tokenStream.LA(1),!((X-52&-32)===0&&(1<<X-52&7)!==0))this.errorHandler.recoverInline(this);else this.errorHandler.reportMatch(this),this.consume()}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}stringPTag(){let U=new o1(this.context,this.state);this.enterRule(U,74,q.RULE_stringPTag);try{this.enterOuterAlt(U,1),this.state=435,this.match(q.STRING_P_TAG)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}stringExpression(){let U=new i1(this.context,this.state);this.enterRule(U,76,q.RULE_stringExpression);try{this.enterOuterAlt(U,1),this.state=437,this.match(q.STRING_EXPR_START),this.state=438,this.expression(),this.state=439,this.match(q.STRING_EXPR_END)}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}identifier(){let U=new d0(this.context,this.state);this.enterRule(U,78,q.RULE_identifier);let X;try{if(this.enterOuterAlt(U,1),this.state=441,X=this.tokenStream.LA(1),!((X-32&-32)===0&&(1<<X-32&71609)!==0))this.errorHandler.recoverInline(this);else this.errorHandler.reportMatch(this),this.consume()}catch(Y){if(Y instanceof V)this.errorHandler.reportError(this,Y),this.errorHandler.recover(this,Y);else throw Y}finally{this.exitRule()}return U}advancedIdentifier(){let U=new U1(this.context,this.state);this.enterRule(U,80,q.RULE_advancedIdentifier);try{switch(this.state=449,this.errorHandler.sync(this),this.tokenStream.LA(1)){case q.DEFAULT:case q.TYPE_ARRAY:case q.DEF_TYPE:case q.SWITCH_TYPE:case q.HEX_LITERAL:case q.COORD_LITERAL:case q.MAPZONE_LITERAL:case q.BOOLEAN_LITERAL:case q.NULL_LITERAL:case q.IDENTIFIER:this.enterOuterAlt(U,1),this.state=443,this.identifier();break;case q.IF:this.enterOuterAlt(U,2),this.state=444,this.match(q.IF);break;case q.ELSE:this.enterOuterAlt(U,3),this.state=445,this.match(q.ELSE);break;case q.WHILE:this.enterOuterAlt(U,4),this.state=446,this.match(q.WHILE);break;case q.RETURN:this.enterOuterAlt(U,5),this.state=447,this.match(q.RETURN);break;case q.CALC:this.enterOuterAlt(U,6),this.state=448,this.match(q.CALC);break;default:throw new h1(this)}}catch(X){if(X instanceof V)this.errorHandler.reportError(this,X),this.errorHandler.recover(this,X);else throw X}finally{this.exitRule()}return U}sempred(U,X,Y){switch(X){case 21:return this.condition_sempred(U,Y);case 23:return this.arithmetic_sempred(U,Y)}return!0}condition_sempred(U,X){switch(X){case 0:return this.precpred(this.context,5);case 1:return this.precpred(this.context,4);case 2:return this.precpred(this.context,3);case 3:return this.precpred(this.context,2)}return!0}arithmetic_sempred(U,X){switch(X){case 4:return this.precpred(this.context,5);case 5:return this.precpred(this.context,4);case 6:return this.precpred(this.context,3);case 7:return this.precpred(this.context,2)}return!0}static _serializedATN=[4,1,57,452,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,1,0,5,0,84,8,0,10,0,12,0,87,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,3,1,96,8,1,1,1,1,1,1,1,3,1,101,8,1,1,1,1,1,1,1,1,1,3,1,107,8,1,1,1,3,1,110,8,1,3,1,112,8,1,1,1,5,1,115,8,1,10,1,12,1,118,9,1,1,2,1,2,1,2,5,2,123,8,2,10,2,12,2,126,9,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,5,4,135,8,4,10,4,12,4,138,9,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,150,8,5,1,6,1,6,5,6,154,8,6,10,6,12,6,157,9,6,1,6,1,6,1,7,1,7,1,7,3,7,164,8,7,1,7,3,7,167,8,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,178,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,5,10,190,8,10,10,10,12,10,193,9,10,1,10,1,10,1,11,1,11,1,11,3,11,200,8,11,1,11,1,11,5,11,204,8,11,10,11,12,11,207,9,11,1,12,1,12,1,12,1,12,1,12,3,12,214,8,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,17,5,17,237,8,17,10,17,12,17,240,9,17,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,259,8,20,1,21,1,21,1,21,1,21,1,21,1,21,3,21,267,8,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,5,21,281,8,21,10,21,12,21,284,9,21,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,3,23,297,8,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,5,23,311,8,23,10,23,12,23,314,9,23,1,24,1,24,1,24,1,24,3,24,320,8,24,1,24,1,24,1,24,3,24,325,8,24,1,24,1,24,1,24,1,24,1,24,3,24,332,8,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,340,8,24,1,24,3,24,343,8,24,1,24,1,24,1,24,1,24,3,24,349,8,24,1,24,3,24,352,8,24,3,24,354,8,24,1,25,1,25,1,25,3,25,359,8,25,1,25,3,25,362,8,25,1,25,1,25,3,25,366,8,25,1,25,3,25,369,8,25,1,25,1,25,1,26,1,26,1,26,5,26,376,8,26,10,26,12,26,379,9,26,1,27,1,27,1,27,3,27,384,8,27,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,3,30,397,8,30,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,3,32,409,8,32,1,33,1,33,5,33,413,8,33,10,33,12,33,416,9,33,1,33,1,33,1,34,1,34,1,35,1,35,1,35,1,35,1,35,5,35,427,8,35,10,35,12,35,430,9,35,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,38,1,38,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,3,40,450,8,40,1,40,0,2,42,46,41,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,0,7,2,0,35,35,48,48,1,0,24,27,1,0,18,19,2,0,12,13,15,15,1,0,10,11,1,0,52,54,5,0,32,32,35,37,39,42,44,44,48,48,490,0,85,1,0,0,0,2,90,1,0,0,0,4,119,1,0,0,0,6,127,1,0,0,0,8,131,1,0,0,0,10,149,1,0,0,0,12,151,1,0,0,0,14,160,1,0,0,0,16,170,1,0,0,0,18,179,1,0,0,0,20,185,1,0,0,0,22,196,1,0,0,0,24,208,1,0,0,0,26,217,1,0,0,0,28,223,1,0,0,0,30,228,1,0,0,0,32,231,1,0,0,0,34,233,1,0,0,0,36,241,1,0,0,0,38,245,1,0,0,0,40,258,1,0,0,0,42,266,1,0,0,0,44,285,1,0,0,0,46,296,1,0,0,0,48,353,1,0,0,0,50,355,1,0,0,0,52,372,1,0,0,0,54,383,1,0,0,0,56,385,1,0,0,0,58,388,1,0,0,0,60,396,1,0,0,0,62,398,1,0,0,0,64,408,1,0,0,0,66,410,1,0,0,0,68,419,1,0,0,0,70,421,1,0,0,0,72,433,1,0,0,0,74,435,1,0,0,0,76,437,1,0,0,0,78,441,1,0,0,0,80,449,1,0,0,0,82,84,3,2,1,0,83,82,1,0,0,0,84,87,1,0,0,0,85,83,1,0,0,0,85,86,1,0,0,0,86,88,1,0,0,0,87,85,1,0,0,0,88,89,5,0,0,1,89,1,1,0,0,0,90,91,5,6,0,0,91,92,3,78,39,0,92,93,5,5,0,0,93,95,3,78,39,0,94,96,5,12,0,0,95,94,1,0,0,0,95,96,1,0,0,0,96,97,1,0,0,0,97,111,5,7,0,0,98,100,5,1,0,0,99,101,3,4,2,0,100,99,1,0,0,0,100,101,1,0,0,0,101,102,1,0,0,0,102,103,5,2,0,0,103,109,1,0,0,0,104,106,5,1,0,0,105,107,3,8,4,0,106,105,1,0,0,0,106,107,1,0,0,0,107,108,1,0,0,0,108,110,5,2,0,0,109,104,1,0,0,0,109,110,1,0,0,0,110,112,1,0,0,0,111,98,1,0,0,0,111,112,1,0,0,0,112,116,1,0,0,0,113,115,3,10,5,0,114,113,1,0,0,0,115,118,1,0,0,0,116,114,1,0,0,0,116,117,1,0,0,0,117,3,1,0,0,0,118,116,1,0,0,0,119,124,3,6,3,0,120,121,5,5,0,0,121,123,3,6,3,0,122,120,1,0,0,0,123,126,1,0,0,0,124,122,1,0,0,0,124,125,1,0,0,0,125,5,1,0,0,0,126,124,1,0,0,0,127,128,7,0,0,0,128,129,5,20,0,0,129,130,3,80,40,0,130,7,1,0,0,0,131,136,5,48,0,0,132,133,5,5,0,0,133,135,5,48,0,0,134,132,1,0,0,0,135,138,1,0,0,0,136,134,1,0,0,0,136,137,1,0,0,0,137,9,1,0,0,0,138,136,1,0,0,0,139,150,3,12,6,0,140,150,3,14,7,0,141,150,3,16,8,0,142,150,3,18,9,0,143,150,3,20,10,0,144,150,3,24,12,0,145,150,3,26,13,0,146,150,3,28,14,0,147,150,3,30,15,0,148,150,3,32,16,0,149,139,1,0,0,0,149,140,1,0,0,0,149,141,1,0,0,0,149,142,1,0,0,0,149,143,1,0,0,0,149,144,1,0,0,0,149,145,1,0,0,0,149,146,1,0,0,0,149,147,1,0,0,0,149,148,1,0,0,0,150,11,1,0,0,0,151,155,5,8,0,0,152,154,3,10,5,0,153,152,1,0,0,0,154,157,1,0,0,0,155,153,1,0,0,0,155,156,1,0,0,0,156,158,1,0,0,0,157,155,1,0,0,0,158,159,5,9,0,0,159,13,1,0,0,0,160,166,5,33,0,0,161,163,5,1,0,0,162,164,3,34,17,0,163,162,1,0,0,0,163,164,1,0,0,0,164,165,1,0,0,0,165,167,5,2,0,0,166,161,1,0,0,0,166,167,1,0,0,0,167,168,1,0,0,0,168,169,5,4,0,0,169,15,1,0,0,0,170,171,5,28,0,0,171,172,5,1,0,0,172,173,3,42,21,0,173,174,5,2,0,0,174,177,3,10,5,0,175,176,5,29,0,0,176,178,3,10,5,0,177,175,1,0,0,0,177,178,1,0,0,0,178,17,1,0,0,0,179,180,5,30,0,0,180,181,5,1,0,0,181,182,3,42,21,0,182,183,5,2,0,0,183,184,3,10,5,0,184,19,1,0,0,0,185,186,5,37,0,0,186,187,3,36,18,0,187,191,5,8,0,0,188,190,3,22,11,0,189,188,1,0,0,0,190,193,1,0,0,0,191,189,1,0,0,0,191,192,1,0,0,0,192,194,1,0,0,0,193,191,1,0,0,0,194,195,5,9,0,0,195,21,1,0,0,0,196,199,5,31,0,0,197,200,5,32,0,0,198,200,3,34,17,0,199,197,1,0,0,0,199,198,1,0,0,0,200,201,1,0,0,0,201,205,5,3,0,0,202,204,3,10,5,0,203,202,1,0,0,0,204,207,1,0,0,0,205,203,1,0,0,0,205,206,1,0,0,0,206,23,1,0,0,0,207,205,1,0,0,0,208,209,5,36,0,0,209,210,5,20,0,0,210,213,3,80,40,0,211,212,5,18,0,0,212,214,3,40,20,0,213,211,1,0,0,0,213,214,1,0,0,0,214,215,1,0,0,0,215,216,5,4,0,0,216,25,1,0,0,0,217,218,5,36,0,0,218,219,5,20,0,0,219,220,3,80,40,0,220,221,3,36,18,0,221,222,5,4,0,0,222,27,1,0,0,0,223,224,3,52,26,0,224,225,5,18,0,0,225,226,3,34,17,0,226,227,5,4,0,0,227,29,1,0,0,0,228,229,3,40,20,0,229,230,5,4,0,0,230,31,1,0,0,0,231,232,5,4,0,0,232,33,1,0,0,0,233,238,3,40,20,0,234,235,5,5,0,0,235,237,3,40,20,0,236,234,1,0,0,0,237,240,1,0,0,0,238,236,1,0,0,0,238,239,1,0,0,0,239,35,1,0,0,0,240,238,1,0,0,0,241,242,5,1,0,0,242,243,3,40,20,0,243,244,5,2,0,0,244,37,1,0,0,0,245,246,3,40,20,0,246,247,5,0,0,1,247,39,1,0,0,0,248,259,3,36,18,0,249,259,3,44,22,0,250,259,3,48,24,0,251,259,3,56,28,0,252,259,3,58,29,0,253,259,3,60,30,0,254,259,3,62,31,0,255,259,3,64,32,0,256,259,3,70,35,0,257,259,3,78,39,0,258,248,1,0,0,0,258,249,1,0,0,0,258,250,1,0,0,0,258,251,1,0,0,0,258,252,1,0,0,0,258,253,1,0,0,0,258,254,1,0,0,0,258,255,1,0,0,0,258,256,1,0,0,0,258,257,1,0,0,0,259,41,1,0,0,0,260,261,6,21,-1,0,261,262,5,1,0,0,262,263,3,42,21,0,263,264,5,2,0,0,264,267,1,0,0,0,265,267,3,40,20,0,266,260,1,0,0,0,266,265,1,0,0,0,267,282,1,0,0,0,268,269,10,5,0,0,269,270,7,1,0,0,270,281,3,42,21,6,271,272,10,4,0,0,272,273,7,2,0,0,273,281,3,42,21,5,274,275,10,3,0,0,275,276,5,16,0,0,276,281,3,42,21,4,277,278,10,2,0,0,278,279,5,17,0,0,279,281,3,42,21,3,280,268,1,0,0,0,280,271,1,0,0,0,280,274,1,0,0,0,280,277,1,0,0,0,281,284,1,0,0,0,282,280,1,0,0,0,282,283,1,0,0,0,283,43,1,0,0,0,284,282,1,0,0,0,285,286,5,34,0,0,286,287,5,1,0,0,287,288,3,46,23,0,288,289,5,2,0,0,289,45,1,0,0,0,290,291,6,23,-1,0,291,292,5,1,0,0,292,293,3,46,23,0,293,294,5,2,0,0,294,297,1,0,0,0,295,297,3,40,20,0,296,290,1,0,0,0,296,295,1,0,0,0,297,312,1,0,0,0,298,299,10,5,0,0,299,300,7,3,0,0,300,311,3,46,23,6,301,302,10,4,0,0,302,303,7,4,0,0,303,311,3,46,23,5,304,305,10,3,0,0,305,306,5,16,0,0,306,311,3,46,23,4,307,308,10,2,0,0,308,309,5,17,0,0,309,311,3,46,23,3,310,298,1,0,0,0,310,301,1,0,0,0,310,304,1,0,0,0,310,307,1,0,0,0,311,314,1,0,0,0,312,310,1,0,0,0,312,313,1,0,0,0,313,47,1,0,0,0,314,312,1,0,0,0,315,316,3,78,39,0,316,317,5,12,0,0,317,319,5,1,0,0,318,320,3,34,17,0,319,318,1,0,0,0,319,320,1,0,0,0,320,321,1,0,0,0,321,322,5,2,0,0,322,324,5,1,0,0,323,325,3,34,17,0,324,323,1,0,0,0,324,325,1,0,0,0,325,326,1,0,0,0,326,327,5,2,0,0,327,354,1,0,0,0,328,329,3,78,39,0,329,331,5,1,0,0,330,332,3,34,17,0,331,330,1,0,0,0,331,332,1,0,0,0,332,333,1,0,0,0,333,334,5,2,0,0,334,354,1,0,0,0,335,336,5,22,0,0,336,342,3,78,39,0,337,339,5,1,0,0,338,340,3,34,17,0,339,338,1,0,0,0,339,340,1,0,0,0,340,341,1,0,0,0,341,343,5,2,0,0,342,337,1,0,0,0,342,343,1,0,0,0,343,354,1,0,0,0,344,345,5,23,0,0,345,351,3,78,39,0,346,348,5,1,0,0,347,349,3,34,17,0,348,347,1,0,0,0,348,349,1,0,0,0,349,350,1,0,0,0,350,352,5,2,0,0,351,346,1,0,0,0,351,352,1,0,0,0,352,354,1,0,0,0,353,315,1,0,0,0,353,328,1,0,0,0,353,335,1,0,0,0,353,344,1,0,0,0,354,49,1,0,0,0,355,361,3,78,39,0,356,358,5,1,0,0,357,359,3,34,17,0,358,357,1,0,0,0,358,359,1,0,0,0,359,360,1,0,0,0,360,362,5,2,0,0,361,356,1,0,0,0,361,362,1,0,0,0,362,368,1,0,0,0,363,365,5,8,0,0,364,366,3,34,17,0,365,364,1,0,0,0,365,366,1,0,0,0,366,367,1,0,0,0,367,369,5,9,0,0,368,363,1,0,0,0,368,369,1,0,0,0,369,370,1,0,0,0,370,371,5,0,0,1,371,51,1,0,0,0,372,377,3,54,27,0,373,374,5,5,0,0,374,376,3,54,27,0,375,373,1,0,0,0,376,379,1,0,0,0,377,375,1,0,0,0,377,378,1,0,0,0,378,53,1,0,0,0,379,377,1,0,0,0,380,384,3,56,28,0,381,384,3,58,29,0,382,384,3,60,30,0,383,380,1,0,0,0,383,381,1,0,0,0,383,382,1,0,0,0,384,55,1,0,0,0,385,386,5,20,0,0,386,387,3,80,40,0,387,57,1,0,0,0,388,389,5,20,0,0,389,390,3,80,40,0,390,391,3,36,18,0,391,59,1,0,0,0,392,393,5,15,0,0,393,397,3,80,40,0,394,395,5,14,0,0,395,397,3,80,40,0,396,392,1,0,0,0,396,394,1,0,0,0,397,61,1,0,0,0,398,399,5,21,0,0,399,400,3,80,40,0,400,63,1,0,0,0,401,409,5,38,0,0,402,409,5,39,0,0,403,409,5,40,0,0,404,409,5,42,0,0,405,409,5,43,0,0,406,409,5,44,0,0,407,409,3,66,33,0,408,401,1,0,0,0,408,402,1,0,0,0,408,403,1,0,0,0,408,404,1,0,0,0,408,405,1,0,0,0,408,406,1,0,0,0,408,407,1,0,0,0,409,65,1,0,0,0,410,414,5,47,0,0,411,413,3,68,34,0,412,411,1,0,0,0,413,416,1,0,0,0,414,412,1,0,0,0,414,415,1,0,0,0,415,417,1,0,0,0,416,414,1,0,0,0,417,418,5,50,0,0,418,67,1,0,0,0,419,420,5,51,0,0,420,69,1,0,0,0,421,428,5,47,0,0,422,427,3,68,34,0,423,427,3,72,36,0,424,427,3,74,37,0,425,427,3,76,38,0,426,422,1,0,0,0,426,423,1,0,0,0,426,424,1,0,0,0,426,425,1,0,0,0,427,430,1,0,0,0,428,426,1,0,0,0,428,429,1,0,0,0,429,431,1,0,0,0,430,428,1,0,0,0,431,432,5,50,0,0,432,71,1,0,0,0,433,434,7,5,0,0,434,73,1,0,0,0,435,436,5,55,0,0,436,75,1,0,0,0,437,438,5,56,0,0,438,439,3,40,20,0,439,440,5,57,0,0,440,77,1,0,0,0,441,442,7,6,0,0,442,79,1,0,0,0,443,450,3,78,39,0,444,450,5,28,0,0,445,450,5,29,0,0,446,450,5,30,0,0,447,450,5,33,0,0,448,450,5,34,0,0,449,443,1,0,0,0,449,444,1,0,0,0,449,445,1,0,0,0,449,446,1,0,0,0,449,447,1,0,0,0,449,448,1,0,0,0,450,81,1,0,0,0,46,85,95,100,106,109,111,116,124,136,149,155,163,166,177,191,199,205,213,238,258,266,280,282,296,310,312,319,324,331,339,342,348,351,353,358,361,365,368,377,383,396,408,414,426,428,449];static __ATN;static get _ATN(){if(!q.__ATN)q.__ATN=new N1().deserialize(q._serializedATN);return q.__ATN}static vocabulary=new f0(q.literalNames,q.symbolicNames,[]);get vocabulary(){return q.vocabulary}static decisionsToDFA=q._ATN.decisionToState.map((U,X)=>new o0(U,X))}class e6 extends C{constructor(U,X){super(U,X)}EOF(){return this.getToken(q.EOF,0)}script(U){if(U===void 0)return this.getRuleContexts(Z3);return this.getRuleContext(U,Z3)}get ruleIndex(){return q.RULE_scriptFile}accept(U){if(U.visitScriptFile)return U.visitScriptFile(this);else return U.visitChildren(this)}}class Z3 extends C{_trigger;_name;constructor(U,X){super(U,X)}LBRACK(){return this.getToken(q.LBRACK,0)}COMMA(){return this.getToken(q.COMMA,0)}RBRACK(){return this.getToken(q.RBRACK,0)}identifier(U){if(U===void 0)return this.getRuleContexts(d0);return this.getRuleContext(U,d0)}MUL(){return this.getToken(q.MUL,0)}statement(U){if(U===void 0)return this.getRuleContexts(V0);return this.getRuleContext(U,V0)}LPAREN(U){if(U===void 0)return this.getTokens(q.LPAREN);else return this.getToken(q.LPAREN,U)}RPAREN(U){if(U===void 0)return this.getTokens(q.RPAREN);else return this.getToken(q.RPAREN,U)}parameterList(){return this.getRuleContext(0,x4)}typeList(){return this.getRuleContext(0,g4)}get ruleIndex(){return q.RULE_script}accept(U){if(U.visitScript)return U.visitScript(this);else return U.visitChildren(this)}}class x4 extends C{constructor(U,X){super(U,X)}parameter(U){if(U===void 0)return this.getRuleContexts(J3);return this.getRuleContext(U,J3)}COMMA(U){if(U===void 0)return this.getTokens(q.COMMA);else return this.getToken(q.COMMA,U)}get ruleIndex(){return q.RULE_parameterList}accept(U){if(U.visitParameterList)return U.visitParameterList(this);else return U.visitChildren(this)}}class J3 extends C{_type_;constructor(U,X){super(U,X)}DOLLAR(){return this.getToken(q.DOLLAR,0)}advancedIdentifier(){return this.getRuleContext(0,U1)}IDENTIFIER(){return this.getToken(q.IDENTIFIER,0)}TYPE_ARRAY(){return this.getToken(q.TYPE_ARRAY,0)}get ruleIndex(){return q.RULE_parameter}accept(U){if(U.visitParameter)return U.visitParameter(this);else return U.visitChildren(this)}}class g4 extends C{constructor(U,X){super(U,X)}IDENTIFIER(U){if(U===void 0)return this.getTokens(q.IDENTIFIER);else return this.getToken(q.IDENTIFIER,U)}COMMA(U){if(U===void 0)return this.getTokens(q.COMMA);else return this.getToken(q.COMMA,U)}get ruleIndex(){return q.RULE_typeList}accept(U){if(U.visitTypeList)return U.visitTypeList(this);else return U.visitChildren(this)}}class V0 extends C{constructor(U,X){super(U,X)}blockStatement(){return this.getRuleContext(0,m4)}returnStatement(){return this.getRuleContext(0,d4)}ifStatement(){return this.getRuleContext(0,T4)}whileStatement(){return this.getRuleContext(0,l4)}switchStatement(){return this.getRuleContext(0,y4)}declarationStatement(){return this.getRuleContext(0,c4)}arrayDeclarationStatement(){return this.getRuleContext(0,a4)}assignmentStatement(){return this.getRuleContext(0,s4)}expressionStatement(){return this.getRuleContext(0,n4)}emptyStatement(){return this.getRuleContext(0,p4)}get ruleIndex(){return q.RULE_statement}accept(U){if(U.visitStatement)return U.visitStatement(this);else return U.visitChildren(this)}}class m4 extends C{constructor(U,X){super(U,X)}LBRACE(){return this.getToken(q.LBRACE,0)}RBRACE(){return this.getToken(q.RBRACE,0)}statement(U){if(U===void 0)return this.getRuleContexts(V0);return this.getRuleContext(U,V0)}get ruleIndex(){return q.RULE_blockStatement}accept(U){if(U.visitBlockStatement)return U.visitBlockStatement(this);else return U.visitChildren(this)}}class d4 extends C{constructor(U,X){super(U,X)}RETURN(){return this.getToken(q.RETURN,0)}SEMICOLON(){return this.getToken(q.SEMICOLON,0)}LPAREN(){return this.getToken(q.LPAREN,0)}RPAREN(){return this.getToken(q.RPAREN,0)}expressionList(){return this.getRuleContext(0,P0)}get ruleIndex(){return q.RULE_returnStatement}accept(U){if(U.visitReturnStatement)return U.visitReturnStatement(this);else return U.visitChildren(this)}}class T4 extends C{constructor(U,X){super(U,X)}IF(){return this.getToken(q.IF,0)}LPAREN(){return this.getToken(q.LPAREN,0)}condition(){return this.getRuleContext(0,z0)}RPAREN(){return this.getToken(q.RPAREN,0)}statement(U){if(U===void 0)return this.getRuleContexts(V0);return this.getRuleContext(U,V0)}ELSE(){return this.getToken(q.ELSE,0)}get ruleIndex(){return q.RULE_ifStatement}accept(U){if(U.visitIfStatement)return U.visitIfStatement(this);else return U.visitChildren(this)}}class l4 extends C{constructor(U,X){super(U,X)}WHILE(){return this.getToken(q.WHILE,0)}LPAREN(){return this.getToken(q.LPAREN,0)}condition(){return this.getRuleContext(0,z0)}RPAREN(){return this.getToken(q.RPAREN,0)}statement(){return this.getRuleContext(0,V0)}get ruleIndex(){return q.RULE_whileStatement}accept(U){if(U.visitWhileStatement)return U.visitWhileStatement(this);else return U.visitChildren(this)}}class y4 extends C{constructor(U,X){super(U,X)}SWITCH_TYPE(){return this.getToken(q.SWITCH_TYPE,0)}parenthesis(){return this.getRuleContext(0,t1)}LBRACE(){return this.getToken(q.LBRACE,0)}RBRACE(){return this.getToken(q.RBRACE,0)}switchCase(U){if(U===void 0)return this.getRuleContexts(Q3);return this.getRuleContext(U,Q3)}get ruleIndex(){return q.RULE_switchStatement}accept(U){if(U.visitSwitchStatement)return U.visitSwitchStatement(this);else return U.visitChildren(this)}}class Q3 extends C{constructor(U,X){super(U,X)}CASE(){return this.getToken(q.CASE,0)}COLON(){return this.getToken(q.COLON,0)}DEFAULT(){return this.getToken(q.DEFAULT,0)}expressionList(){return this.getRuleContext(0,P0)}statement(U){if(U===void 0)return this.getRuleContexts(V0);return this.getRuleContext(U,V0)}get ruleIndex(){return q.RULE_switchCase}accept(U){if(U.visitSwitchCase)return U.visitSwitchCase(this);else return U.visitChildren(this)}}class c4 extends C{constructor(U,X){super(U,X)}DEF_TYPE(){return this.getToken(q.DEF_TYPE,0)}DOLLAR(){return this.getToken(q.DOLLAR,0)}advancedIdentifier(){return this.getRuleContext(0,U1)}SEMICOLON(){return this.getToken(q.SEMICOLON,0)}EQ(){return this.getToken(q.EQ,0)}expression(){return this.getRuleContext(0,T)}get ruleIndex(){return q.RULE_declarationStatement}accept(U){if(U.visitDeclarationStatement)return U.visitDeclarationStatement(this);else return U.visitChildren(this)}}class a4 extends C{constructor(U,X){super(U,X)}DEF_TYPE(){return this.getToken(q.DEF_TYPE,0)}DOLLAR(){return this.getToken(q.DOLLAR,0)}advancedIdentifier(){return this.getRuleContext(0,U1)}parenthesis(){return this.getRuleContext(0,t1)}SEMICOLON(){return this.getToken(q.SEMICOLON,0)}get ruleIndex(){return q.RULE_arrayDeclarationStatement}accept(U){if(U.visitArrayDeclarationStatement)return U.visitArrayDeclarationStatement(this);else return U.visitChildren(this)}}class s4 extends C{constructor(U,X){super(U,X)}assignableVariableList(){return this.getRuleContext(0,i4)}EQ(){return this.getToken(q.EQ,0)}expressionList(){return this.getRuleContext(0,P0)}SEMICOLON(){return this.getToken(q.SEMICOLON,0)}get ruleIndex(){return q.RULE_assignmentStatement}accept(U){if(U.visitAssignmentStatement)return U.visitAssignmentStatement(this);else return U.visitChildren(this)}}class n4 extends C{constructor(U,X){super(U,X)}expression(){return this.getRuleContext(0,T)}SEMICOLON(){return this.getToken(q.SEMICOLON,0)}get ruleIndex(){return q.RULE_expressionStatement}accept(U){if(U.visitExpressionStatement)return U.visitExpressionStatement(this);else return U.visitChildren(this)}}class p4 extends C{constructor(U,X){super(U,X)}SEMICOLON(){return this.getToken(q.SEMICOLON,0)}get ruleIndex(){return q.RULE_emptyStatement}accept(U){if(U.visitEmptyStatement)return U.visitEmptyStatement(this);else return U.visitChildren(this)}}class P0 extends C{constructor(U,X){super(U,X)}expression(U){if(U===void 0)return this.getRuleContexts(T);return this.getRuleContext(U,T)}COMMA(U){if(U===void 0)return this.getTokens(q.COMMA);else return this.getToken(q.COMMA,U)}get ruleIndex(){return q.RULE_expressionList}accept(U){if(U.visitExpressionList)return U.visitExpressionList(this);else return U.visitChildren(this)}}class t1 extends C{constructor(U,X){super(U,X)}LPAREN(){return this.getToken(q.LPAREN,0)}expression(){return this.getRuleContext(0,T)}RPAREN(){return this.getToken(q.RPAREN,0)}get ruleIndex(){return q.RULE_parenthesis}accept(U){if(U.visitParenthesis)return U.visitParenthesis(this);else return U.visitChildren(this)}}class U9 extends C{constructor(U,X){super(U,X)}expression(){return this.getRuleContext(0,T)}EOF(){return this.getToken(q.EOF,0)}get ruleIndex(){return q.RULE_singleExpression}accept(U){if(U.visitSingleExpression)return U.visitSingleExpression(this);else return U.visitChildren(this)}}class T extends C{constructor(U,X){super(U,X)}get ruleIndex(){return q.RULE_expression}copyFrom(U){super.copyFrom(U)}}class X9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}parenthesis(){return this.getRuleContext(0,t1)}accept(U){if(U.visitParenthesizedExpression)return U.visitParenthesizedExpression(this);else return U.visitChildren(this)}}class Y9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}calc(){return this.getRuleContext(0,o4)}accept(U){if(U.visitCalcExpression)return U.visitCalcExpression(this);else return U.visitChildren(this)}}class G9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}call(){return this.getRuleContext(0,r1)}accept(U){if(U.visitCallExpression)return U.visitCallExpression(this);else return U.visitChildren(this)}}class $9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}localVariable(){return this.getRuleContext(0,q3)}accept(U){if(U.visitLocalVariableExpression)return U.visitLocalVariableExpression(this);else return U.visitChildren(this)}}class Z9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}localArrayVariable(){return this.getRuleContext(0,F3)}accept(U){if(U.visitLocalArrayVariableExpression)return U.visitLocalArrayVariableExpression(this);else return U.visitChildren(this)}}class J9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}gameVariable(){return this.getRuleContext(0,W3)}accept(U){if(U.visitGameVariableExpression)return U.visitGameVariableExpression(this);else return U.visitChildren(this)}}class Q9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}constantVariable(){return this.getRuleContext(0,t4)}accept(U){if(U.visitConstantVariableExpression)return U.visitConstantVariableExpression(this);else return U.visitChildren(this)}}class N9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}literal(){return this.getRuleContext(0,e0)}accept(U){if(U.visitLiteralExpression)return U.visitLiteralExpression(this);else return U.visitChildren(this)}}class q9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}joinedString(){return this.getRuleContext(0,e4)}accept(U){if(U.visitJoinedStringExpression)return U.visitJoinedStringExpression(this);else return U.visitChildren(this)}}class F9 extends T{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}identifier(){return this.getRuleContext(0,d0)}accept(U){if(U.visitIdentifierExpression)return U.visitIdentifierExpression(this);else return U.visitChildren(this)}}class z0 extends C{constructor(U,X){super(U,X)}get ruleIndex(){return q.RULE_condition}copyFrom(U){super.copyFrom(U)}}class W9 extends z0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}LPAREN(){return this.getToken(q.LPAREN,0)}condition(){return this.getRuleContext(0,z0)}RPAREN(){return this.getToken(q.RPAREN,0)}accept(U){if(U.visitConditionParenthesizedExpression)return U.visitConditionParenthesizedExpression(this);else return U.visitChildren(this)}}class _9 extends z0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}expression(){return this.getRuleContext(0,T)}accept(U){if(U.visitConditionNormalExpression)return U.visitConditionNormalExpression(this);else return U.visitChildren(this)}}class f2 extends z0{_op;constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}condition(U){if(U===void 0)return this.getRuleContexts(z0);return this.getRuleContext(U,z0)}LT(){return this.getToken(q.LT,0)}GT(){return this.getToken(q.GT,0)}LTE(){return this.getToken(q.LTE,0)}GTE(){return this.getToken(q.GTE,0)}EQ(){return this.getToken(q.EQ,0)}EXCL(){return this.getToken(q.EXCL,0)}AND(){return this.getToken(q.AND,0)}OR(){return this.getToken(q.OR,0)}accept(U){if(U.visitConditionBinaryExpression)return U.visitConditionBinaryExpression(this);else return U.visitChildren(this)}}class o4 extends C{constructor(U,X){super(U,X)}CALC(){return this.getToken(q.CALC,0)}LPAREN(){return this.getToken(q.LPAREN,0)}arithmetic(){return this.getRuleContext(0,K0)}RPAREN(){return this.getToken(q.RPAREN,0)}get ruleIndex(){return q.RULE_calc}accept(U){if(U.visitCalc)return U.visitCalc(this);else return U.visitChildren(this)}}class K0 extends C{constructor(U,X){super(U,X)}get ruleIndex(){return q.RULE_arithmetic}copyFrom(U){super.copyFrom(U)}}class z9 extends K0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}LPAREN(){return this.getToken(q.LPAREN,0)}arithmetic(){return this.getRuleContext(0,K0)}RPAREN(){return this.getToken(q.RPAREN,0)}accept(U){if(U.visitArithmeticParenthesizedExpression)return U.visitArithmeticParenthesizedExpression(this);else return U.visitChildren(this)}}class I9 extends K0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}expression(){return this.getRuleContext(0,T)}accept(U){if(U.visitArithmeticNormalExpression)return U.visitArithmeticNormalExpression(this);else return U.visitChildren(this)}}class V2 extends K0{_op;constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}arithmetic(U){if(U===void 0)return this.getRuleContexts(K0);return this.getRuleContext(U,K0)}MUL(){return this.getToken(q.MUL,0)}DIV(){return this.getToken(q.DIV,0)}MOD(){return this.getToken(q.MOD,0)}PLUS(){return this.getToken(q.PLUS,0)}MINUS(){return this.getToken(q.MINUS,0)}AND(){return this.getToken(q.AND,0)}OR(){return this.getToken(q.OR,0)}accept(U){if(U.visitArithmeticBinaryExpression)return U.visitArithmeticBinaryExpression(this);else return U.visitChildren(this)}}class r1 extends C{constructor(U,X){super(U,X)}get ruleIndex(){return q.RULE_call}copyFrom(U){super.copyFrom(U)}}class v4 extends r1{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}identifier(){return this.getRuleContext(0,d0)}MUL(){return this.getToken(q.MUL,0)}LPAREN(U){if(U===void 0)return this.getTokens(q.LPAREN);else return this.getToken(q.LPAREN,U)}RPAREN(U){if(U===void 0)return this.getTokens(q.RPAREN);else return this.getToken(q.RPAREN,U)}expressionList(U){if(U===void 0)return this.getRuleContexts(P0);return this.getRuleContext(U,P0)}accept(U){if(U.visitCommandCallExpression)return U.visitCommandCallExpression(this);else return U.visitChildren(this)}}class A9 extends r1{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}TILDE(){return this.getToken(q.TILDE,0)}identifier(){return this.getRuleContext(0,d0)}LPAREN(){return this.getToken(q.LPAREN,0)}RPAREN(){return this.getToken(q.RPAREN,0)}expressionList(){return this.getRuleContext(0,P0)}accept(U){if(U.visitProcCallExpression)return U.visitProcCallExpression(this);else return U.visitChildren(this)}}class K9 extends r1{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}AT(){return this.getToken(q.AT,0)}identifier(){return this.getRuleContext(0,d0)}LPAREN(){return this.getToken(q.LPAREN,0)}RPAREN(){return this.getToken(q.RPAREN,0)}expressionList(){return this.getRuleContext(0,P0)}accept(U){if(U.visitJumpCallExpression)return U.visitJumpCallExpression(this);else return U.visitChildren(this)}}class D9 extends C{_args;_triggers;constructor(U,X){super(U,X)}identifier(){return this.getRuleContext(0,d0)}EOF(){return this.getToken(q.EOF,0)}LPAREN(){return this.getToken(q.LPAREN,0)}RPAREN(){return this.getToken(q.RPAREN,0)}LBRACE(){return this.getToken(q.LBRACE,0)}RBRACE(){return this.getToken(q.RBRACE,0)}expressionList(U){if(U===void 0)return this.getRuleContexts(P0);return this.getRuleContext(U,P0)}get ruleIndex(){return q.RULE_clientScript}accept(U){if(U.visitClientScript)return U.visitClientScript(this);else return U.visitChildren(this)}}class i4 extends C{constructor(U,X){super(U,X)}assignableVariable(U){if(U===void 0)return this.getRuleContexts(N3);return this.getRuleContext(U,N3)}COMMA(U){if(U===void 0)return this.getTokens(q.COMMA);else return this.getToken(q.COMMA,U)}get ruleIndex(){return q.RULE_assignableVariableList}accept(U){if(U.visitAssignableVariableList)return U.visitAssignableVariableList(this);else return U.visitChildren(this)}}class N3 extends C{constructor(U,X){super(U,X)}localVariable(){return this.getRuleContext(0,q3)}localArrayVariable(){return this.getRuleContext(0,F3)}gameVariable(){return this.getRuleContext(0,W3)}get ruleIndex(){return q.RULE_assignableVariable}accept(U){if(U.visitAssignableVariable)return U.visitAssignableVariable(this);else return U.visitChildren(this)}}class q3 extends C{constructor(U,X){super(U,X)}DOLLAR(){return this.getToken(q.DOLLAR,0)}advancedIdentifier(){return this.getRuleContext(0,U1)}get ruleIndex(){return q.RULE_localVariable}accept(U){if(U.visitLocalVariable)return U.visitLocalVariable(this);else return U.visitChildren(this)}}class F3 extends C{constructor(U,X){super(U,X)}DOLLAR(){return this.getToken(q.DOLLAR,0)}advancedIdentifier(){return this.getRuleContext(0,U1)}parenthesis(){return this.getRuleContext(0,t1)}get ruleIndex(){return q.RULE_localArrayVariable}accept(U){if(U.visitLocalArrayVariable)return U.visitLocalArrayVariable(this);else return U.visitChildren(this)}}class W3 extends C{constructor(U,X){super(U,X)}MOD(){return this.getToken(q.MOD,0)}advancedIdentifier(){return this.getRuleContext(0,U1)}DOTMOD(){return this.getToken(q.DOTMOD,0)}get ruleIndex(){return q.RULE_gameVariable}accept(U){if(U.visitGameVariable)return U.visitGameVariable(this);else return U.visitChildren(this)}}class t4 extends C{constructor(U,X){super(U,X)}CARET(){return this.getToken(q.CARET,0)}advancedIdentifier(){return this.getRuleContext(0,U1)}get ruleIndex(){return q.RULE_constantVariable}accept(U){if(U.visitConstantVariable)return U.visitConstantVariable(this);else return U.visitChildren(this)}}class e0 extends C{constructor(U,X){super(U,X)}get ruleIndex(){return q.RULE_literal}copyFrom(U){super.copyFrom(U)}}class S4 extends e0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}INTEGER_LITERAL(){return this.getToken(q.INTEGER_LITERAL,0)}HEX_LITERAL(){return this.getToken(q.HEX_LITERAL,0)}accept(U){if(U.visitIntegerLiteral)return U.visitIntegerLiteral(this);else return U.visitChildren(this)}}class B9 extends e0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}COORD_LITERAL(){return this.getToken(q.COORD_LITERAL,0)}accept(U){if(U.visitCoordLiteral)return U.visitCoordLiteral(this);else return U.visitChildren(this)}}class w9 extends e0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}BOOLEAN_LITERAL(){return this.getToken(q.BOOLEAN_LITERAL,0)}accept(U){if(U.visitBooleanLiteral)return U.visitBooleanLiteral(this);else return U.visitChildren(this)}}class R9 extends e0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}CHAR_LITERAL(){return this.getToken(q.CHAR_LITERAL,0)}accept(U){if(U.visitCharacterLiteral)return U.visitCharacterLiteral(this);else return U.visitChildren(this)}}class H9 extends e0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}NULL_LITERAL(){return this.getToken(q.NULL_LITERAL,0)}accept(U){if(U.visitNullLiteral)return U.visitNullLiteral(this);else return U.visitChildren(this)}}class L9 extends e0{constructor(U){super(U.parent,U.invokingState);super.copyFrom(U)}stringLiteral(){return this.getRuleContext(0,r4)}accept(U){if(U.visitStringLiteralExpression)return U.visitStringLiteralExpression(this);else return U.visitChildren(this)}}class r4 extends C{constructor(U,X){super(U,X)}QUOTE_OPEN(){return this.getToken(q.QUOTE_OPEN,0)}QUOTE_CLOSE(){return this.getToken(q.QUOTE_CLOSE,0)}stringLiteralContent(U){if(U===void 0)return this.getRuleContexts(_1);return this.getRuleContext(U,_1)}get ruleIndex(){return q.RULE_stringLiteral}accept(U){if(U.visitStringLiteral)return U.visitStringLiteral(this);else return U.visitChildren(this)}}class _1 extends C{constructor(U,X){super(U,X)}STRING_TEXT(){return this.getToken(q.STRING_TEXT,0)}get ruleIndex(){return q.RULE_stringLiteralContent}accept(U){if(U.visitStringLiteralContent)return U.visitStringLiteralContent(this);else return U.visitChildren(this)}}class e4 extends C{constructor(U,X){super(U,X)}QUOTE_OPEN(){return this.getToken(q.QUOTE_OPEN,0)}QUOTE_CLOSE(){return this.getToken(q.QUOTE_CLOSE,0)}stringLiteralContent(U){if(U===void 0)return this.getRuleContexts(_1);return this.getRuleContext(U,_1)}stringTag(U){if(U===void 0)return this.getRuleContexts(p1);return this.getRuleContext(U,p1)}stringPTag(U){if(U===void 0)return this.getRuleContexts(o1);return this.getRuleContext(U,o1)}stringExpression(U){if(U===void 0)return this.getRuleContexts(i1);return this.getRuleContext(U,i1)}get ruleIndex(){return q.RULE_joinedString}accept(U){if(U.visitJoinedString)return U.visitJoinedString(this);else return U.visitChildren(this)}}class p1 extends C{constructor(U,X){super(U,X)}STRING_TAG(){return this.getToken(q.STRING_TAG,0)}STRING_CLOSE_TAG(){return this.getToken(q.STRING_CLOSE_TAG,0)}STRING_PARTIAL_TAG(){return this.getToken(q.STRING_PARTIAL_TAG,0)}get ruleIndex(){return q.RULE_stringTag}accept(U){if(U.visitStringTag)return U.visitStringTag(this);else return U.visitChildren(this)}}class o1 extends C{constructor(U,X){super(U,X)}STRING_P_TAG(){return this.getToken(q.STRING_P_TAG,0)}get ruleIndex(){return q.RULE_stringPTag}accept(U){if(U.visitStringPTag)return U.visitStringPTag(this);else return U.visitChildren(this)}}class i1 extends C{constructor(U,X){super(U,X)}STRING_EXPR_START(){return this.getToken(q.STRING_EXPR_START,0)}expression(){return this.getRuleContext(0,T)}STRING_EXPR_END(){return this.getToken(q.STRING_EXPR_END,0)}get ruleIndex(){return q.RULE_stringExpression}accept(U){if(U.visitStringExpression)return U.visitStringExpression(this);else return U.visitChildren(this)}}class d0 extends C{constructor(U,X){super(U,X)}IDENTIFIER(){return this.getToken(q.IDENTIFIER,0)}HEX_LITERAL(){return this.getToken(q.HEX_LITERAL,0)}BOOLEAN_LITERAL(){return this.getToken(q.BOOLEAN_LITERAL,0)}NULL_LITERAL(){return this.getToken(q.NULL_LITERAL,0)}COORD_LITERAL(){return this.getToken(q.COORD_LITERAL,0)}MAPZONE_LITERAL(){return this.getToken(q.MAPZONE_LITERAL,0)}TYPE_ARRAY(){return this.getToken(q.TYPE_ARRAY,0)}SWITCH_TYPE(){return this.getToken(q.SWITCH_TYPE,0)}DEF_TYPE(){return this.getToken(q.DEF_TYPE,0)}DEFAULT(){return this.getToken(q.DEFAULT,0)}get ruleIndex(){return q.RULE_identifier}accept(U){if(U.visitIdentifier)return U.visitIdentifier(this);else return U.visitChildren(this)}}class U1 extends C{constructor(U,X){super(U,X)}identifier(){return this.getRuleContext(0,d0)}IF(){return this.getToken(q.IF,0)}ELSE(){return this.getToken(q.ELSE,0)}WHILE(){return this.getToken(q.WHILE,0)}RETURN(){return this.getToken(q.RETURN,0)}CALC(){return this.getToken(q.CALC,0)}get ruleIndex(){return q.RULE_advancedIdentifier}accept(U){if(U.visitAdvancedIdentifier)return U.visitAdvancedIdentifier(this);else return U.visitChildren(this)}}class U5 extends n6{visitScriptFile;visitScript;visitParameterList;visitParameter;visitTypeList;visitStatement;visitBlockStatement;visitReturnStatement;visitIfStatement;visitWhileStatement;visitSwitchStatement;visitSwitchCase;visitDeclarationStatement;visitArrayDeclarationStatement;visitAssignmentStatement;visitExpressionStatement;visitEmptyStatement;visitExpressionList;visitParenthesis;visitSingleExpression;visitParenthesizedExpression;visitCalcExpression;visitCallExpression;visitLocalVariableExpression;visitLocalArrayVariableExpression;visitGameVariableExpression;visitConstantVariableExpression;visitLiteralExpression;visitJoinedStringExpression;visitIdentifierExpression;visitConditionParenthesizedExpression;visitConditionNormalExpression;visitConditionBinaryExpression;visitCalc;visitArithmeticParenthesizedExpression;visitArithmeticNormalExpression;visitArithmeticBinaryExpression;visitCommandCallExpression;visitProcCallExpression;visitJumpCallExpression;visitClientScript;visitAssignableVariableList;visitAssignableVariable;visitLocalVariable;visitLocalArrayVariable;visitGameVariable;visitConstantVariable;visitIntegerLiteral;visitCoordLiteral;visitBooleanLiteral;visitCharacterLiteral;visitNullLiteral;visitStringLiteralExpression;visitStringLiteral;visitStringLiteralContent;visitJoinedString;visitStringTag;visitStringPTag;visitStringExpression;visitIdentifier;visitAdvancedIdentifier}class X5 extends U5{source;lineOffset;columnOffset;constructor(U,X,Y){super();this.source=U,this.lineOffset=X,this.columnOffset=Y}visitScriptFile=(U)=>{return new I4(this.location(U),U.script().map((X)=>this.visitNode(X)))};visitScript=(U)=>{let X=U.typeList()?.IDENTIFIER()?.map((Y)=>this.toAstToken(Y.symbol));return new q1({source:this.location(U),trigger:this.visitNode(U._trigger),name:this.visitNode(U._name),isStar:U.MUL()!==null,parameters:U.parameterList()?.parameter().map((Y)=>this.visitNode(Y))??null,returnTokens:X??null,statements:U.statement().map((Y)=>this.visitNode(Y))})};visitParameter=(U)=>{return new A4(this.location(U),this.toAstToken(U._type_),this.visitNode(U.advancedIdentifier()))};visitBlockStatement=(U)=>{return new K4(this.location(U),U.statement().map((X)=>this.visitNode(X)))};visitReturnStatement=(U)=>{return new B4(this.location(U),this.collectExpressionList(U.expressionList()))};visitIfStatement=(U)=>{let X=U.statement();if(!X[0])throw Error("IfStatement missing then statement.");return new w4(this.location(U),this.visitNode(U.condition()),this.visitNode(X[0]),X.length>1?this.visitNode(X[1]):null)};visitWhileStatement=(U)=>{return new R4(this.location(U),this.visitNode(U.condition()),this.visitNode(U.statement()))};visitSwitchStatement=(U)=>{return new O2(this.location(U),this.toAstToken(U.SWITCH_TYPE().symbol),this.extractParenthesisExpression(U.parenthesis()),U.switchCase().map((X)=>this.visitNode(X)))};visitSwitchCase=(U)=>{return new H4(this.location(U),this.collectExpressionList(U.expressionList()),U.statement()?.map((X)=>this.visitNode(X))??[])};visitDeclarationStatement=(U)=>{return new L4(this.location(U),this.toAstToken(U.DEF_TYPE().symbol),this.visitNode(U.advancedIdentifier()),U.expression()?this.visitNode(U.expression()):null)};visitArrayDeclarationStatement=(U)=>{return new M4(this.location(U),this.toAstToken(U.DEF_TYPE().symbol),this.visitNode(U.advancedIdentifier()),this.extractParenthesisExpression(U.parenthesis()))};visitAssignmentStatement=(U)=>{return new k4(this.location(U),U.assignableVariableList().assignableVariable().map((X)=>this.visitNode(X)),this.collectExpressionList(U.expressionList()))};visitExpressionStatement=(U)=>{return new O4(this.location(U),this.visitNode(U.expression()))};visitEmptyStatement=(U)=>{return new j4(this.location(U))};visitSingleExpression=(U)=>{return this.visitNode(U.expression())};visitParenthesizedExpression=(U)=>{return new i0(this.location(U),this.extractParenthesisExpression(U.parenthesis()))};visitConditionParenthesizedExpression=(U)=>{return new i0(this.location(U),this.visitNode(U.condition()))};visitArithmeticParenthesizedExpression=(U)=>{return new i0(this.location(U),this.visitNode(U.arithmetic()))};visitConditionBinaryExpression=(U)=>{return new P1(this.location(U),this.visitNode(U.condition(0)),this.toAstToken(U._op),this.visitNode(U.condition(1)))};visitArithmeticBinaryExpression=(U)=>{return new h4(this.location(U),this.visitNode(U.arithmetic(0)),this.toAstToken(U._op),this.visitNode(U.arithmetic(1)))};visitCalcExpression=(U)=>{return new E4(this.location(U),this.visitNode(U.calc().arithmetic()))};visitCommandCallExpression=(U)=>{let X=U.expressionList(),Y=Array.isArray(X)?X:X?[X]:[],G=U.MUL()!==null?this.collectExpressionList(Y[1]):null;return new m0(this.location(U),this.visitNode(U.identifier()),this.collectExpressionList(Y[0]),G)};visitProcCallExpression=(U)=>{let X=U.expressionList(),Y=Array.isArray(X)?X:X?[X]:[];return new j2(this.location(U),this.visitNode(U.identifier()),this.collectExpressionList(Y[0]))};visitJumpCallExpression=(U)=>{let X=U.expressionList(),Y=Array.isArray(X)?X:X?[X]:[];return new h2(this.location(U),this.visitNode(U.identifier()),this.collectExpressionList(Y[0]))};visitClientScript=(U)=>{return new E2(this.location(U),this.visitNode(U.identifier()),this.collectExpressionList(U._args),this.collectExpressionList(U._triggers))};visitLocalVariable=(U)=>{return new F1(this.location(U),this.visitNode(U.advancedIdentifier()),null)};visitLocalArrayVariable=(U)=>{return new F1(this.location(U),this.visitNode(U.advancedIdentifier()),this.extractParenthesisExpression(U.parenthesis()))};visitGameVariable=(U)=>{let X=U.DOTMOD()!==null;return new C2(this.location(U),X,this.visitNode(U.advancedIdentifier()))};visitConstantVariable=(U)=>{return new V1(this.location(U),this.visitNode(U.advancedIdentifier()))};visitIntegerLiteral=(U)=>{let X=U.getText();if(X.length>1&&X[0]==="0"&&(X[1]==="x"||X[1]==="X"))return new $3(this.location(U),parseInt(X.slice(2),16));return new $3(this.location(U),parseInt(X,10))};visitCoordLiteral=(U)=>{let Y=U.getText().split("_").map((Q)=>parseInt(Q,10)),G=Y[1]<<6|Y[3]&16383,$=Y[2]<<6|Y[4]&16383,Z=Y[0]&3,J=$|G<<14|Z<<28|0;return new C4(this.location(U),J)};visitBooleanLiteral=(U)=>{return new f4(this.location(U),U.getText()==="true")};visitCharacterLiteral=(U)=>{let X=this.unescape(U.getText().slice(1,-1));if(X.length!==1)throw Error(`invalid character literal: text=${U.getText()}, cleaned=${X}`);return new V4(this.location(U),X)};visitStringLiteral=(U)=>{return new W1(this.location(U),this.unescape(U.getText().slice(1,-1)))};visitNullLiteral=(U)=>{return new D4(this.location(U))};visitJoinedString=(U)=>{let X=[];for(let Y of U.children??[])if(Y instanceof _1)X.push(new t0(this.location(Y),this.unescape(Y.getText())));else if(Y instanceof p1)X.push(new t0(this.location(Y),Y.getText()));else if(Y instanceof o1)X.push(new u4(this.location(Y),Y.getText()));else if(Y instanceof i1){let G=this.visitNode(Y.expression());X.push(new r0(this.location(Y),G))}return new P4(this.location(U),X)};visitIdentifier=(U)=>{return new _0(this.location(U),U.getText())};visitAdvancedIdentifier=(U)=>{return new _0(this.location(U),U.getText())};visitConditionNormalExpression=(U)=>{return this.visitNode(U.expression())};visitArithmeticNormalExpression=(U)=>{return this.visitNode(U.expression())};visitCallExpression=(U)=>{return this.visitNode(U.call())};visitIdentifierExpression=(U)=>{return this.visitNode(U.identifier())};visitLiteralExpression=(U)=>{return this.visitNode(U.literal())};visitJoinedStringExpression=(U)=>{return this.visitNode(U.joinedString())};visitLocalVariableExpression=(U)=>{return this.visitNode(U.localVariable())};visitLocalArrayVariableExpression=(U)=>{return this.visitNode(U.localArrayVariable())};visitGameVariableExpression=(U)=>{return this.visitNode(U.gameVariable())};visitConstantVariableExpression=(U)=>{return this.visitNode(U.constantVariable())};location(U){let X=U.stop??U.start;return this.locationFromRange(U.start,X)}locationFromToken(U){return this.locationFromRange(U,U)}locationFromRange(U,X){let Y=U.line===1?this.columnOffset:0,G=X.line===1?this.columnOffset:0,$=Math.max(X.text?.length??0,1);return{name:this.source,line:U.line-1+this.lineOffset,column:U.column+Y,endLine:X.line-1+this.lineOffset,endColumn:X.column+G+$}}toAstToken(U){return new z4(this.locationFromToken(U),U.text??"")}visitNode(U){if(!U)throw Error("Expected parser context but recieved null/undefined.");return this.visit(U)}collectExpressionList(U){if(!U)return[];let X=U.expression();return(Array.isArray(X)?X:[X]).map((G)=>this.visitNode(G))}extractParenthesisExpression(U){return this.visitNode(U.expression())}unescape(U){let X="";for(let Y=0;Y<U.length;Y+=1){let G=U[Y];if(G==="\\"){let $=Y===U.length-1?"\\":U[Y+1];if($==="\\"||$==="'"||$==='"'||$==="<")X+=$;else throw Error(`Unsupported escape sequence: \\${$}`);Y+=1}else X+=G}return X}}class e1{static createScriptFile(U,X){let Y=v8(U,"utf8"),G=H0.fromString(Y);return G.name=U,this.invokeParser(G,($)=>$.scriptFile(),X)}static async createScriptFileAsync(U,X){let Y=await S8(U,"utf8"),G=H0.fromString(Y);return G.name=U,this.invokeParser(G,($)=>$.scriptFile(),X)}static createScriptFileFromString(U,X){let Y=H0.fromString(U);return Y.name="<source>",this.invokeParser(Y,(G)=>G.scriptFile(),X)}static createScript(U,X){let Y=H0.fromString(U);return Y.name="<source>",this.invokeParser(Y,(G)=>G.script(),X)}static invokeParser(U,X,Y,G=0,$=0){let Z=new c(U),J=new G3(Z),Q=new q(J);if(Y)Z.removeErrorListeners(),Z.addErrorListener(Y),Q.removeErrorListeners(),Q.addErrorListener(Y);let F=X(Q);if(Q.numberOfSyntaxErrors>0)return null;return new X5(U.getSourceName(),G,$).visit(F)}}class X1{visitScriptFile(U){return this.visitNode(U)}visitScript(U){return this.visitNode(U)}visitParameter(U){return this.visitNode(U)}visitBlockStatement(U){return this.visitStatement(U)}visitReturnStatement(U){return this.visitStatement(U)}visitIfStatement(U){return this.visitStatement(U)}visitWhileStatement(U){return this.visitStatement(U)}visitSwitchStatement(U){return this.visitStatement(U)}visitSwitchCase(U){return this.visitNode(U)}visitDeclarationStatement(U){return this.visitStatement(U)}visitArrayDeclarationStatement(U){return this.visitStatement(U)}visitAssignmentStatement(U){return this.visitStatement(U)}visitExpressionStatement(U){return this.visitStatement(U)}visitEmptyStatement(U){return this.visitStatement(U)}visitStatement(U){return this.visitNode(U)}visitParenthesizedExpression(U){return this.visitExpression(U)}visitConditionExpression(U){return this.visitBinaryExpression(U)}visitArithmeticExpression(U){return this.visitBinaryExpression(U)}visitBinaryExpression(U){return this.visitExpression(U)}visitCalcExpression(U){return this.visitExpression(U)}visitProcCallExpression(U){return this.visitCallExpression(U)}visitCommandCallExpression(U){return this.visitCallExpression(U)}visitJumpCallExpression(U){return this.visitCallExpression(U)}visitCallExpression(U){return this.visitExpression(U)}visitClientScriptExpression(U){return this.visitExpression(U)}visitLocalVariableExpression(U){return this.visitVariableExpression(U)}visitGameVariableExpression(U){return this.visitVariableExpression(U)}visitConstantVariableExpression(U){return this.visitVariableExpression(U)}visitVariableExpression(U){return this.visitExpression(U)}visitExpression(U){return this.visitNode(U)}visitIntegerLiteral(U){return this.visitLiteral(U)}visitCoordLiteral(U){return this.visitLiteral(U)}visitBooleanLiteral(U){return this.visitLiteral(U)}visitCharacterLiteral(U){return this.visitLiteral(U)}visitNullLiteral(U){return this.visitLiteral(U)}visitStringLiteral(U){return this.visitLiteral(U)}visitLiteral(U){return this.visitExpression(U)}visitJoinedStringExpression(U){return this.visitExpression(U)}visitJoinedStringPart(U){return this.visitNode(U)}visitIdentifier(U){return this.visitExpression(U)}visitToken(U){return this.visitNode(U)}visitNode(U){throw Error(`Not implemented: ${U.constructor.name}`)}}var M={UNSUPPORTED_SYMBOLTYPE_TO_TYPE:"Internal compiler error: Unsupported SymbolType -> Type conversion: %s",CASE_WITHOUT_SWITCH:"Internal compiler error: Case without switch statement as parent.",RETURN_ORPHAN:"Internal compiler error: Orphaned `return` statement, no parent `script` node found.",TRIGGER_TYPE_NOT_FOUND:"Internal compiler error: The trigger '%s' has no declaration.",CUSTOM_HANDLER_NOTYPE:"Internal compiler error: Custom command handler did not assign return type.",CUSTOM_HANDLER_NOSYMBOL:"Internal compiler error: Custom command handler did not assign symbol.",SYMBOL_IS_NULL:"Internal compiler error: Symbol has not been defined for the node.",TYPE_HAS_NO_BASETYPE:"Internal compiler error: Type has no defined base type: %s.",TYPE_HAS_NO_DEFAULT:"Internal compiler error: Return type '%s' has no defined default value.",INVALID_CONDITION:"Internal compiler error: %s is not a supported expression type for conditions.",NULL_CONSTANT:"Internal compiler error: %s evaluated to 'null' constant value.",EXPRESSION_NO_SUBEXPR:"Internal compiler error: No sub expression node.",GENERIC_INVALID_TYPE:"'%s' is not a valid type.",GENERIC_TYPE_MISMATCH:"Type mismatch: '%s' was given but '%s' was expected.",GENERIC_UNRESOLVED_SYMBOL:"'%s' could not be resolved to a symbol.",ARITHMETIC_INVALID_TYPE:"Type mismatch: '%s' was given but 'int' or 'long' was expected.",SCRIPT_REDECLARATION:"[%s,%s] is already defined.",SCRIPT_LOCAL_REDECLARATION:"'$%s' is already defined.",SCRIPT_TRIGGER_INVALID:"'%s' is not a valid trigger type.",SCRIPT_COMMAND_ONLY:"Using a '*' is only allowed for commands.",SCRIPT_TRIGGER_NO_PARAMETERS:"The trigger type '%s' is not allowed to have parameters defined.",SCRIPT_TRIGGER_EXPECTED_PARAMETERS:"The trigger type '%s' is expected to accept (%s).",SCRIPT_TRIGGER_NO_RETURNS:"The trigger type '%s' is not allowed to return values.",SCRIPT_TRIGGER_EXPECTED_RETURNS:"The trigger type '%s' is expected to return (%s).",SCRIPT_SUBJECT_ONLY_GLOBAL:"Trigger '%s' only allows global subjects.",SCRIPT_SUBJECT_NO_GLOBAL:"Trigger '%s' does not allow global subjects.",SCRIPT_SUBJECT_NO_CATEGORY:"Trigger '%s' does not allow category subjects.",SWITCH_INVALID_TYPE:"'%s' is not allowed within a switch statement.",SWITCH_DUPLICATE_DEFAULT:"Duplicate default label.",SWITCH_CASE_NOT_CONSTANT:"Switch case value is not a constant expression.",ASSIGN_MULTI_ARRAY:"Arrays are not allowed in multi-assignment statements.",CONDITION_INVALID_NODE_TYPE:"Conditions are only allowed to be binary expressions.",BINOP_INVALID_TYPES:"Operator '%s' cannot be applied to '%s', '%s'.",BINOP_TUPLE_TYPE:"%s side of binary expressions can only have one type but has '%s'.",COMMAND_REFERENCE_UNRESOLVED:"'%s' cannot be resolved to a command.",COMMAND_NOARGS_EXPECTED:"'%s' is expected to have no arguments but has '%s'.",PROC_REFERENCE_UNRESOLVED:"'~%s' cannot be resolved to a proc.",PROC_NOARGS_EXPECTED:"'~%s' is expected to have no arguments but has '%s'.",JUMP_REFERENCE_UNRESOLVED:"'@%s' cannot be resolved to a label.",JUMP_NOARGS_EXPECTED:"'@%s' is expected to have no arguments but has '%s'.",CLIENTSCRIPT_REFERENCE_UNRESOLVED:"'%s' cannot be resolved to a clientscript.",CLIENTSCRIPT_NOARGS_EXPECTED:"'%s' is expected to have no arguments but has '%s'.",HOOK_TRANSMIT_LIST_UNEXPECTED:"Unexpected hook transmit list.",LOCAL_DECLARATION_INVALID_TYPE:"'%s' is not allowed to be declared as a type.",LOCAL_REFERENCE_UNRESOLVED:"'$%s' cannot be resolved to a local variable.",LOCAL_REFERENCE_NOT_ARRAY:"Access of indexed value of non-array type variable '$%s'.",LOCAL_ARRAY_INVALID_TYPE:"'%s' is not allowed to be used as an array.",LOCAL_ARRAY_REFERENCE_NOINDEX:"'$%s' is a reference to an array variable without specifying the index.",GAME_REFERENCE_UNRESOLVED:"'%%%s' cannot be resolved to a game variable.",CONSTANT_REFERENCE_UNRESOLVED:"'^%s' cannot be resolved to a constant.",CONSTANT_CYCLIC_REF:"Cyclic constant references are not permitted: %s.",CONSTANT_UNKNOWN_TYPE:"Unable to infer type for '^%s'.",CONSTANT_PARSE_ERROR:"Unable to parse constant value of '%s' into type '%s'.",CONSTANT_NONCONSTANT:"Constant value of '%s' evaluated to a non-constant expression.",POINTER_UNINITIALIZED:"Attempt to access uninitialized pointer %s.",POINTER_CORRUPTED:"Attempt to access corrupted pointer %s.",POINTER_CORRUPTED_LOC:"%s corrupted here.",POINTER_REQUIRED_LOC:"%s required here."};var M9=new WeakMap,k9=new WeakMap,O9=new Map,x8={kind:"LocalVariable"},g8={kind:"Constant"},l={serverScript:(U)=>{let X=M9.get(U);if(!X)X={kind:"ServerScript",type:U},M9.set(U,X);return X},clientScript:(U)=>{let X=k9.get(U);if(!X)X={kind:"ClientScript",type:U},k9.set(U,X);return X},localVariable:()=>x8,basic:(U)=>{let X=O9.get(U);if(!X)X={kind:"Basic",type:U},O9.set(U,X);return X},constant:()=>g8};class Y5 extends X1{typeManager;triggerManager;rootTable;diagnostics;tables=[];get table(){return this.tables[0]}categoryType;constructor(U,X,Y,G){super();this.typeManager=U;this.triggerManager=X;this.rootTable=Y;this.diagnostics=G;this.categoryType=this.typeManager.findOrNull("category"),this.tables.unshift(this.rootTable.createSubTable())}isTypeMode(U){return"type"in U}createScopedTable(U){this.tables.unshift(this.table.createSubTable());try{U()}finally{this.tables.shift()}}visitScriptFile(U){for(let X of U.scripts)this.createScopedTable(()=>{X.accept(this)})}visitScript(U){let X=this.triggerManager.findOrNull(U.trigger.text);if(!X)U.trigger.reportError(this.diagnostics,M.SCRIPT_TRIGGER_INVALID,U.trigger.text);else U.triggerType=X;if(U.isStar&&X!==A0)U.name.reportError(this.diagnostics,M.SCRIPT_COMMAND_ONLY);this.checkScriptSubject(X,U);let Y=U.parameters;Y?.forEach(($)=>$.accept(this)),U.parameterType=E.fromList(Y?.map(($)=>$.symbol.type??K.Error)??[]),this.checkScriptParameters(X,U,Y);let G=U.returnTokens;if(G&&G.length>0){let $=[];for(let Z of G){let J=this.typeManager.findOrNull(Z.text);if(!J)Z.reportError(this.diagnostics,M.GENERIC_INVALID_TYPE,Z.text);$.push(J??K.Error)}U.returnType=E.fromList($.map((Z)=>Z??K.Error))}else U.returnType=!X?K.Error:X.allowReturns?K.Unit:K.Nothing;if(this.checkScriptReturns(X,U),X){let $=new z2(X,U.nameString,U.parameterType,U.returnType);if(!this.rootTable.insert(l.serverScript(X),$))U.reportError(this.diagnostics,M.SCRIPT_REDECLARATION,X.identifier,U.nameString);else U.symbol=$}U.statements.forEach(($)=>$.accept(this)),U.block=this.table}checkScriptSubject(U,X){let Y=U?.subjectMode;if(!Y)return;let G=X.name.text;if(Y===B.Name)return;if(G==="_"){this.checkGlobalScriptSubject(U,X);return}if(G.startsWith("_")){this.checkCategoryScriptSubject(U,X,G.substring(1));return}this.checkTypeScriptSubject(U,X,G)}checkGlobalScriptSubject(U,X){let Y=U.subjectMode;if(Y===B.None)return;if(this.isTypeMode(Y)){if(!Y.global)X.name.reportError(this.diagnostics,M.SCRIPT_SUBJECT_NO_GLOBAL,U.identifier);return}throw Error(`Unexpected subject mode: ${Y}.`)}checkCategoryScriptSubject(U,X,Y){let G=U.subjectMode,$=this.categoryType;if(!$)throw Error("'category' type not defined.");if(G===B.None){X.name.reportError(this.diagnostics,M.SCRIPT_SUBJECT_ONLY_GLOBAL,U.identifier);return}if(this.isTypeMode(G)){if(!G.category){X.name.reportError(this.diagnostics,M.SCRIPT_SUBJECT_NO_CATEGORY,U.identifier);return}this.resolveSubjectSymbol(X,Y,$);return}throw Error(`Unexpected subject mode: ${G}.`)}checkTypeScriptSubject(U,X,Y){let G=U.subjectMode;if(G===B.None){X.name.reportError(this.diagnostics,M.SCRIPT_SUBJECT_ONLY_GLOBAL,U.identifier);return}if(this.isTypeMode(G)){this.resolveSubjectSymbol(X,Y,G.type);return}throw Error(`Unexpected subject mode: ${G}.`)}tryParseMapZone(U,X){let Y=X.split("_");if(Y.length!==3)return U.name.reportError(this.diagnostics,"Mapzone subject must be of the form: 'level_mx_mz'."),-1;let[G,$,Z]=Y,J=parseInt(G,10),Q=parseInt($,10),F=parseInt(Z,10);if(Q<0||Q>255||F<0||F>255)U.name.reportError(this.diagnostics,"Invalid mapzone coord.");if(J!==0)return U.name.reportError(this.diagnostics,"Mapzone affect all level, just specify '0'."),-1;let _=Q<<6;return F<<6&16383|(_&16383)<<14}tryParseZone(U,X){let Y=X.split("_");if(Y.length!==5)return U.name.reportError(this.diagnostics,"Zone subject must be of the form: 'level_mx_mz_lx_lz'."),-1;let[G,$,Z,J,Q]=Y,F=parseInt(G,10),_=parseInt($,10),I=parseInt(Z,10),H=parseInt(J,10),j=parseInt(Q,10);if(F<0||F>3||_<0||_>255||I<0||I>255||H<0||H>63||j<0||j>63)U.name.reportError(this.diagnostics,"Invalid zone coord.");if(H%8!==0||j%8!==0)return U.name.reportError(this.diagnostics,"Local zone coord must be a multiple of 8"),-1;let P=(_<<6|H)>>3<<3;return(I<<6|j)>>3<<3&16383|(P&16383)<<14|(F&3)<<28}resolveSubjectSymbol(U,X,Y){if(Y===L.MAPZONE){let $=this.tryParseMapZone(U,X);U.subjectReference=new J0($.toString(),Y,!1);return}if(Y===L.COORD){let $=this.tryParseZone(U,X);U.subjectReference=new J0($.toString(),Y,!1);return}let G=this.rootTable.find(l.basic(Y),X);if(!G){U.name.reportError(this.diagnostics,M.GENERIC_UNRESOLVED_SYMBOL,X);return}if(!(("type"in G)&&("isProtected"in G))){U.name.reportError(this.diagnostics,M.GENERIC_UNRESOLVED_SYMBOL,X);return}U.subjectReference=G}checkScriptParameters(U,X,Y){let G=U?.parameters,$=X.parameterType;if(U&&!U.allowParameters&&Y&&Y.length>0)Y[0].reportError(this.diagnostics,M.SCRIPT_TRIGGER_NO_PARAMETERS,U.identifier);else if(G&&$!==G){let Z=G.representation;X.reportError(this.diagnostics,M.SCRIPT_TRIGGER_EXPECTED_PARAMETERS,X.trigger.text,Z)}}checkScriptReturns(U,X){let Y=U?.returns,G=X.returnType;if(U&&!U.allowReturns&&G!==K.Nothing)X.reportError(this.diagnostics,M.SCRIPT_TRIGGER_NO_RETURNS,U.identifier);else if(Y&&G!==Y){let $=Y.representation;X.reportError(this.diagnostics,M.SCRIPT_TRIGGER_EXPECTED_RETURNS,X.trigger.text,$)}}visitParameter(U){let X=U.name.text,Y=U.typeToken.text,G=this.typeManager.findOrNull(Y,!0);if(!G)U.reportError(this.diagnostics,M.GENERIC_INVALID_TYPE,Y);let $=new k0(X,G??K.Error);if(!this.table.insert(l.localVariable(),$))U.reportError(this.diagnostics,M.SCRIPT_LOCAL_REDECLARATION,X);U.symbol=$}visitBlockStatement(U){this.createScopedTable(()=>{this.visit(U.statements),U.scope=this.table})}visitSwitchStatement(U){let X=U.typeToken.text.replace(/^switch_/,""),Y=this.typeManager.findOrNull(X);if(!Y)U.typeToken.reportError(this.diagnostics,M.GENERIC_INVALID_TYPE,X);else if(!Y?.options?.allowSwitch)U.typeToken.reportError(this.diagnostics,M.SWITCH_INVALID_TYPE,Y.representation);U.condition.accept(this),this.visit(U.cases),U.type=Y??K.Error}visitSwitchCase(U){this.visit(U.keys),this.createScopedTable(()=>{this.visit(U.statements),U.scope=this.table})}visitNode(U){this.visit(U.children)}visit(U){for(let X of U)X.accept(this)}}class _3{typeChecker;typeManager;expression;diagnostics;get arguments(){if(this.expression instanceof Y0)return this.expression.arguments;return[]}get isConstant(){if(!this.expression)return!1;return this.typeChecker.isConstantExpression(this.expression)}constructor(U,X,Y,G){this.typeChecker=U;this.typeManager=X;this.expression=Y;this.diagnostics=G}getArgumentsList(U=!1){if(U&&this.expression instanceof m0)return this.expression.arguments2??[];return this.arguments}checkArgument(U,X,Y=!1){let G=this.getArgumentsList(Y);if(U<0||U>=G.length)return null;let $=G[U];return this.visitExpression($,X),$}checkTypeArgument(U){let X=this.arguments;if(U<0||U>=X.length)return null;let Y=X[U];if(!(Y instanceof _0))return this.diagnostics.report(new W0("ERROR",Y,_3.DIAGNOSTIC_TYPEREF_EXPECTED)),Y.type=K.Error,Y;let G=this.typeManager.findOrNull(Y.text);if(!G)return this.diagnostics.report(new W0("ERROR",Y,M.GENERIC_INVALID_TYPE,Y.text)),Y.type=K.Error,Y;return Y.type=new K.Type(G),Y.reference=new J0(Y.text,Y.type),Y}checkArgumentTypes(U,X=!0,Y=!1){let G=this.getArgumentsList(Y),$=[];for(let J of G){if(!J.getNullableType())this.visitExpression(J);$.push(J.type??K.Error)}let Z=E.fromList($.map((J)=>J??K.Error));return this.typeChecker.checkTypeMatch(this.expression,U,Z,X)}collectTypes(...U){return E.fromList(U.filter((X)=>!!X).map((X)=>X.getNullableType()??K.Error))}visitNode(U){if(U)this.typeChecker.visitNodeOrNull(U)}visitExpression(U,X){if(!U)return;if(X)U.typeHint=X;this.typeChecker.visitNodeOrNull(U)}visitNodeList(U){if(!U)return;for(let X of U)this.typeChecker.visitNodeOrNull(X)}static DIAGNOSTIC_TYPEREF_EXPECTED="Type reference expected."}class T0 extends X1{typeManager;triggerManager;rootTable;dynamicCommands;diagnostics;commandTrigger;procTrigger;clientscriptTrigger;labelTrigger;table;constantsBeingEvaluated;constructor(U,X,Y,G,$){super();this.typeManager=U;this.triggerManager=X;this.rootTable=Y;this.dynamicCommands=G;this.diagnostics=$;this.commandTrigger=this.triggerManager.find("command"),this.procTrigger=this.triggerManager.find("proc"),this.clientscriptTrigger=this.triggerManager.findOrNull("clientscript"),this.labelTrigger=this.triggerManager.findOrNull("label"),this.table=this.rootTable,this.constantsBeingEvaluated=new Set}scoped(U,X){let Y=this.table;this.table=U,X(),this.table=Y}visitScriptFile(U){this.visitNodes(U.scripts)}visitScript(U){this.scoped(U.block,()=>{this.visitNodes(U.statements)})}visitBlockStatement(U){this.scoped(U.scope,()=>{this.visitNodes(U.statements)})}visitReturnStatement(U){let X=U.findParentByType(q1);if(X==null){U.reportError(this.diagnostics,M.RETURN_ORPHAN);return}let Y=E.toList(X.returnType),G=this.typeHintExpressionList(Y,U.expressions),$=E.fromList(Y),Z=E.fromList(G);this.checkTypeMatch(U,$,Z)}visitIfStatement(U){this.checkCondition(U.condition),this.visitNodeOrNull(U.thenStatement),this.visitNodeOrNull(U.elseStatement)}visitWhileStatement(U){this.checkCondition(U.condition),this.visitNodeOrNull(U.thenStatement)}checkCondition(U){U.typeHint=L.BOOLEAN;let X=this.findInvalidConditionExpression(U);if(X==null)this.visitNodeOrNull(U),this.checkTypeMatch(U,L.BOOLEAN,U.type??K.Error);else X.reportError(this.diagnostics,M.CONDITION_INVALID_NODE_TYPE)}findInvalidConditionExpression(U){if(U instanceof P1){let X=U.operator.text;if(X==="|"||X==="&")return this.findInvalidConditionExpression(U.left)??this.findInvalidConditionExpression(U.right);else return null}else if(U instanceof i0)return this.findInvalidConditionExpression(U.expression);else return U}visitSwitchStatement(U){let{type:X,condition:Y}=U;Y.typeHint=X,this.visitNodeOrNull(Y),this.checkTypeMatch(Y,X,Y.type??K.Error);let G=null;for(let $ of U.cases){if($.isDefault)if(G==null)G=$;else $.reportError(this.diagnostics,M.SWITCH_DUPLICATE_DEFAULT);this.visitNodeOrNull($)}U.defaultCase=G}visitSwitchCase(U){let X=U.findParentByType(O2);if(!X){U.reportError(this.diagnostics,M.CASE_WITHOUT_SWITCH);return}let Y=X.type;for(let G of U.keys){if(G.typeHint=Y,this.visitNodeOrNull(G),!this.isConstantExpression(G)){G.reportError(this.diagnostics,M.SWITCH_CASE_NOT_CONSTANT);continue}this.checkTypeMatch(G,Y,G.type)}this.scoped(U.scope,()=>{this.visitNodes(U.statements)})}isConstantExpression(U){if(U instanceof V1)return!0;if(U instanceof W1){let X=U.subExpression;return X==null||this.isConstantExpression(X)}if(U instanceof e)return!0;if(U instanceof _0){let X=U.reference;return X==null||this.isConstantSymobl(X)}return!1}isConstantSymobl(U){return U instanceof J0||U instanceof g1}visitDeclarationStatement(U){let X=U.typeToken.text.replace(/^def_/,""),Y=U.name.text,G=this.typeManager.findOrNull(X);if(!G)U.typeToken.reportError(this.diagnostics,M.GENERIC_INVALID_TYPE,X);else if(G.options&&!G.options.allowDeclaration)U.typeToken.reportError(this.diagnostics,M.LOCAL_DECLARATION_INVALID_TYPE,G.representation);let $=new k0(Y,G??K.Error);if(!this.table.insert(l.localVariable(),$))U.name.reportError(this.diagnostics,M.SCRIPT_LOCAL_REDECLARATION,Y);let J=U.initializer;if(J!=null)J.typeHint=$.type,this.visitNodeOrNull(J),this.checkTypeMatch(J,$.type,J.type??K.Error);U.symbol=$}visitArrayDeclarationStatement(U){let X=U.typeToken.text.replace(/^def_/,""),Y=U.name.text,G=this.typeManager.findOrNull(X);if(!G)U.typeToken.reportError(this.diagnostics,M.GENERIC_INVALID_TYPE,X);else if(G.options&&!G.options.allowDeclaration)U.typeToken.reportError(this.diagnostics,M.LOCAL_DECLARATION_INVALID_TYPE,G.representation);else if(G.options&&!G.options.allowArray)U.typeToken.reportError(this.diagnostics,M.LOCAL_ARRAY_INVALID_TYPE,G.representation);if(G)G=new o(G);else G=K.Error;let $=U.initializer;$.typeHint=L.INT,this.visitNodeOrNull($),this.checkTypeMatch($,L.INT,$.type??K.Error);let Z=new k0(Y,G);if(!this.table.insert(l.localVariable(),Z))U.name.reportError(this.diagnostics,M.SCRIPT_LOCAL_REDECLARATION,Y);U.symbol=Z}visitAssignmentStatement(U){let X=U.vars;this.visitNodes(X);let Y=X.map((Q)=>this.getSafeType(Q)),G=this.typeHintExpressionList(Y,U.expressions).map((Q)=>Q??K.Error),$=E.fromList(Y),Z=E.fromList(G);this.checkTypeMatch(U,$,Z);let J=X.find((Q)=>Q instanceof F1&&Q.isArray);if(X.length>1&&J)J.reportError(this.diagnostics,M.ASSIGN_MULTI_ARRAY)}visitExpressionStatement(U){this.visitNodeOrNull(U.expression)}visitEmptyStatement(U){}visitParenthesizedExpression(U){let X=U.expression;X.typeHint=U.typeHint,this.visitNodeOrNull(X),U.type=X.type}visitConditionExpression(U){let{left:X,right:Y,operator:G}=U;if(!this.checkBinaryConditionOperation(X,G,Y)){U.type=K.Error;return}U.type=L.BOOLEAN}checkBinaryConditionOperation(U,X,Y){let G;switch(X.text){case"&":case"|":G=T0.ALLOWED_LOGICAL_TYPES;break;case"<":case">":case"<=":case">=":G=T0.ALLOWED_RELATIONAL_TYPES;break;default:G=null}if(G!=null)U.typeHint=G[0],Y.typeHint=G[0];else U.typeHint=U.typeHint??(Y.type??null),Y.typeHint=Y.typeHint??(U.type??null);if(this.visitNodeOrNull(U),Y.typeHint=Y.typeHint??U.type,this.visitNodeOrNull(Y),U.type==null||Y.type==null)return X.reportError(this.diagnostics,M.BINOP_INVALID_TYPES,X.text,U.type?U.type.representation:"<null>",Y.type?Y.type.representation:"<null>"),!1;if(U.type instanceof E||Y.type instanceof E){if(U.type instanceof E)U.reportError(this.diagnostics,M.BINOP_TUPLE_TYPE,"Left",U.type.representation);if(Y.type instanceof E)Y.reportError(this.diagnostics,M.BINOP_TUPLE_TYPE,"Right",Y.type.representation);return!1}else if(U.type==K.Unit||Y.type==K.Unit)return X.reportError(this.diagnostics,M.BINOP_INVALID_TYPES,X.text,U.type.representation,Y.type.representation),!1;if(G!=null){if(!this.checkTypeMatchAny(U,G,U.type)||!this.checkTypeMatchAny(Y,G,Y.type))return X.reportError(this.diagnostics,M.BINOP_INVALID_TYPES,X.text,U.type.representation,Y.type.representation),!1}if(!this.checkTypeMatch(U,U.type,Y.type,!1))return X.reportError(this.diagnostics,M.BINOP_INVALID_TYPES,X.text,U.type.representation,Y.type.representation),!1;else if(U.type==L.STRING&&Y.type==L.STRING)return X.reportError(this.diagnostics,M.BINOP_INVALID_TYPES,X.text,U.type.representation,Y.type.representation),!1;return!0}visitArithmeticExpression(U){let{left:X,right:Y,operator:G}=U,$=U.typeHint??L.INT;if(X.typeHint=$,this.visitNodeOrNull(X),Y.typeHint=$,this.visitNodeOrNull(Y),X.type==null||Y.type==null||!this.checkTypeMatchAny(X,T0.ALLOWED_ARITHMETIC_TYPES,X.type??K.Error)||!this.checkTypeMatchAny(X,T0.ALLOWED_ARITHMETIC_TYPES,Y.type??K.Error)||!this.checkTypeMatch(X,$,X.type??K.Error,!1)||!this.checkTypeMatch(Y,$,Y.type??K.Error,!1)){G.reportError(this.diagnostics,M.BINOP_INVALID_TYPES,G.text,X.type?X.type.representation:"<null>",Y.type?Y.type.representation:"<null>"),U.type=K.Error;return}U.type=$}visitCalcExpression(U){let X=U.typeHint??L.INT,Y=U.expression;if(Y.typeHint=X,this.visitNodeOrNull(Y),Y.type==null||!this.checkTypeMatchAny(Y,T0.ALLOWED_ARITHMETIC_TYPES,Y.type??K.Error))Y.reportError(this.diagnostics,M.ARITHMETIC_INVALID_TYPE,Y.type?Y.type.representation:"<null>"),U.type=K.Error;else U.type=Y.type}visitCommandCallExpression(U){let X=U.nameString;if(this.checkDynamicCommand(X,U))return;this.checkCallExpression(U,this.commandTrigger,M.COMMAND_REFERENCE_UNRESOLVED)}visitProcCallExpression(U){this.checkCallExpression(U,this.procTrigger,M.PROC_REFERENCE_UNRESOLVED)}visitJumpCallExpression(U){if(!this.labelTrigger){U.reportError(this.diagnostics,"Jump expression not allowed.");return}let X=U.findParentByType(q1);if(!X)throw Error("Parent script not found.");if(X.triggerType===this.procTrigger){U.reportError(this.diagnostics,"Unable to jump to labels from within a proc.");return}this.checkCallExpression(U,this.labelTrigger,M.JUMP_REFERENCE_UNRESOLVED)}checkDynamicCommand(U,X){let Y=this.dynamicCommands.get(U);if(!Y)return!1;return(()=>{let G=new _3(this,this.typeManager,X,this.diagnostics);if(Y.typeCheck(G),!X.getNullableType())X.reportError(this.diagnostics,M.CUSTOM_HANDLER_NOTYPE);if(X instanceof _0&&!X.reference||X instanceof Y0&&!X.symbol){let Z=this.rootTable.find(l.serverScript(this.commandTrigger),U);if(!Z)X.reportError(this.diagnostics,M.CUSTOM_HANDLER_NOSYMBOL);if(X instanceof _0)X.reference=Z;else if(X instanceof Y0)X.symbol=Z}})(),!0}checkCallExpression(U,X,Y){let G=U.name.text,$=l.serverScript(X),Z=this.rootTable.find($,G);if(!Z)U.type=K.Error,U.reportError(this.diagnostics,Y,G);else U.symbol=Z,U.type=Z.returns;this.typeCheckArguments(Z,U,G)}visitClientScriptExpression(U){if(!this.clientscriptTrigger){U.reportError(this.diagnostics,M.TRIGGER_TYPE_NOT_FOUND,"clientscript");return}let X=U.typeHint;if(!(X instanceof K.Hook))throw Error("Expected MetaType Hook");let Y=U.name.text,G=l.clientScript(this.clientscriptTrigger),$=this.rootTable.find(G,Y);if(!$)U.reportError(this.diagnostics,M.CLIENTSCRIPT_REFERENCE_UNRESOLVED,Y),U.type=K.Error;else U.symbol=$,U.type=X;this.typeCheckArguments($,U,Y);let Z=X.transmitListType;if(Z==K.Unit&&U.transmitList.length>0){U.transmitList[0].reportError(this.diagnostics,M.HOOK_TRANSMIT_LIST_UNEXPECTED),U.type=K.Error;return}for(let J of U.transmitList)J.typeHint=Z,this.visitNodeOrNull(J),this.checkTypeMatch(J,Z,J.type??K.Error)}typeCheckArguments(U,X,Y){let G=U?.parameters??K.Error,$=G instanceof E?[...G.children]:[G],Z=this.typeHintExpressionList($,X.arguments),J=E.fromList($),Q=E.fromList(Z);if(J==K.Unit&&Q!=K.Unit){let F;if(X instanceof m0)F=M.COMMAND_NOARGS_EXPECTED;else if(X instanceof j2)F=M.PROC_NOARGS_EXPECTED;else if(X instanceof h2)F=M.JUMP_NOARGS_EXPECTED;else if(X instanceof E2)F=M.CLIENTSCRIPT_NOARGS_EXPECTED;else throw Error(`Unexpected callExpression type: ${X}`);X.reportError(this.diagnostics,F,Y,Q.representation);return}this.checkTypeMatch(X,J,Q)}visitLocalVariableExpression(U){let X=U.name.text,Y=this.table.find(l.localVariable(),X);if(!Y){U.reportError(this.diagnostics,M.LOCAL_REFERENCE_UNRESOLVED,X),U.type=K.Error;return}let G=Y.type instanceof o;if(!G&&U.isArray){U.reportError(this.diagnostics,M.LOCAL_REFERENCE_NOT_ARRAY,X),U.type=K.Error;return}if(G&&!U.isArray){U.reportError(this.diagnostics,M.LOCAL_ARRAY_REFERENCE_NOINDEX,X),U.type=K.Error;return}let $=U.index;if(Y.type instanceof o&&$!=null)this.visitNodeOrNull($),this.checkTypeMatch($,L.INT,$.type??K.Error);U.reference=Y,U.type=Y.type instanceof o?Y.type.inner:Y.type}visitGameVariableExpression(U){let X=U.name.text,Y=this.rootTable.findAll(X).find((G)=>G.type instanceof $1);if(!Y||!(Y.type instanceof $1)){U.type=K.Error,U.reportError(this.diagnostics,M.GAME_REFERENCE_UNRESOLVED,X);return}U.reference=Y,U.type=Y.type.inner}visitConstantVariableExpression(U){let X=U.name.text,Y=U.typeHint;if(!Y){U.reportError(this.diagnostics,M.CONSTANT_UNKNOWN_TYPE,X),U.type=K.Error;return}else if(Y==K.Error){U.type=K.Error;return}let G=this.rootTable.find(l.constant(),X);if(!G){U.reportError(this.diagnostics,M.CONSTANT_REFERENCE_UNRESOLVED,X),U.type=K.Error;return}if(this.constantsBeingEvaluated.has(G)){let $=Array.from(this.constantsBeingEvaluated).map((Z)=>`^${Z.name}`).join(" -> ");$+=` -> ^${G.name}`,U.reportError(this.diagnostics,M.CONSTANT_CYCLIC_REF,$),U.type=K.Error;return}this.constantsBeingEvaluated.add(G);try{let{name:$,line:Z,column:J}=U.source,Q=this.typeManager.findOrNull("graphic"),F=Y==L.STRING||Q!=null&&Y==Q,_=H0.fromString(G.value);_.name=$;let I=F?new W1({name:$,line:Z-1,column:J-1,endLine:Z-1,endColumn:J},G.value):e1.invokeParser(_,(H)=>H.singleExpression(),T0.DISCARD_ERROR_LISTENER,Z-1,J-1);if(!I){U.reportError(this.diagnostics,M.CONSTANT_PARSE_ERROR,G.value,Y.representation),U.type=K.Error;return}if(I.typeHint=Y,this.visitNodeOrNull(I),!this.isConstantExpression(I)){U.reportError(this.diagnostics,M.CONSTANT_NONCONSTANT,G.value),U.type=K.Error;return}U.subExpression=I,U.type=I.type}finally{this.constantsBeingEvaluated.delete(G)}}visitIntegerLiteral(U){U.type=L.INT}visitCoordLiteral(U){U.type=L.COORD}visitBooleanLiteral(U){U.type=L.BOOLEAN}visitCharacterLiteral(U){U.type=L.CHAR}visitNullLiteral(U){let X=U.typeHint;if(X!=null){U.type=X;return}U.type=L.INT}visitStringLiteral(U){let X=U.typeHint;if(!X||this.typeManager.check(X,L.STRING))U.type=L.STRING;else if(X instanceof K.Hook)this.handleClientScriptExpression(U,X);else if(!T0.LITERAL_TYPES.has(X))U.symbol=this.resolveSymbol(U,U.value,X);else U.type=L.STRING}handleClientScriptExpression(U,X){let{name:Y,line:G,column:$}=U.source,Z=new B2(Y,this.diagnostics,G-1,$),J=H0.fromString(U.value);J.name=Y;let Q=e1.invokeParser(J,(F)=>F.clientScript(),Z,G-1,$);if(!Q){U.type=K.Error;return}Q.typeHint=X,this.visitNodeOrNull(Q),U.subExpression=Q,U.type=Q.type}visitJoinedStringExpression(U){U.parts.forEach((X)=>X.accept(this)),U.type=L.STRING}visitJoinedStringPart(U){if(U instanceof r0){let X=U.expression;X.typeHint=L.STRING,X.accept(this),this.checkTypeMatch(X,L.STRING,X.type??K.Error)}}visitIdentifier(U){let{text:X,typeHint:Y}=U;if(this.checkDynamicCommand(X,U))return;let G=this.resolveSymbol(U,X,Y??void 0);if(!G)return;if(G instanceof s0&&G.trigger===this.commandTrigger&&G.parameters!==K.Unit)U.reportError(this.diagnostics,M.GENERIC_TYPE_MISMATCH,"<unit>",G.parameters.representation);U.reference=G}resolveSymbol(U,X,Y){let G=null,$=null;for(let Z of this.table.findAll(X)){let J=this.symbolToType(Z);if(!J)continue;if(!Y&&J instanceof K.Script)continue;else if(!Y||this.typeManager.check(Y,J)){G=Z,$=J;break}else if(!G)G=Z,$=J}if(!G)return U.type=K.Error,U.reportError(this.diagnostics,M.GENERIC_UNRESOLVED_SYMBOL,X),null;if(!$)return U.type=K.Error,U.reportError(this.diagnostics,M.UNSUPPORTED_SYMBOLTYPE_TO_TYPE,G.constructor.name),null;return U.type=$,G}symbolToType(U){if(U instanceof s0)if(U.trigger===A0)return U.returns;else return new K.Script(U.trigger,U.parameters,U.returns);else if(U instanceof k0)if(U.type instanceof o)return U.type;else return null;else if(U instanceof J0)return U.type;else if(U instanceof g1)return null;return null}visitToken(U){}visitNode(U){let X=U.parent;if(!X)U.reportInfo(this.diagnostics,`Unhandled node: ${U.constructor.name}.`);else U.reportInfo(this.diagnostics,`Unhandled node: ${U.constructor.name}. Parent: ${X.constructor.name}.`)}typeHintExpressionList(U,X){let Y=[],G=0;for(let $ of X)if($.typeHint=G<U.length?U[G]:null,$.accept(this),Y.push(this.getSafeType($)),$.type instanceof E)G+=$.type.children.length;else G+=1;return Y}checkTypeMatch(U,X,Y,G=!0){let $=X instanceof E?X.children:[X],Z=Y instanceof E?Y.children:[Y],J=!0;if(X===K.Error)J=!0;else if($.length!==Z.length)J=!1;else for(let Q=0;Q<$.length;Q++)J=J&&this.typeManager.check($[Q],Z[Q]);if(!J&&G){let Q=Y===K.Unit?"<unit>":Y.representation;U.reportError(this.diagnostics,M.GENERIC_TYPE_MISMATCH,Q,X.representation)}return J}checkTypeMatchAny(U,X,Y){for(let G of X)if(this.checkTypeMatch(U,G,Y,!1))return!0;return!1}visitNodeOrNull(U){if(!U)return;U.accept(this)}visitNodes(U){if(!U)return;for(let X of U)this.visitNodeOrNull(X)}getSafeType(U){return U&&U.type?U.type:K.Error}static ALLOWED_LOGICAL_TYPES=[L.BOOLEAN];static ALLOWED_RELATIONAL_TYPES=[L.INT,L.LONG];static ALLOWED_ARITHMETIC_TYPES=[L.INT,L.LONG];static LITERAL_TYPES=new Set([L.INT,L.BOOLEAN,L.COORD,L.STRING,L.CHAR,L.LONG]);static DISCARD_ERROR_LISTENER={syntaxError(U,X,Y,G,$,Z){},reportAmbiguity:function(U,X,Y,G,$,Z,J){},reportAttemptingFullContext:function(U,X,Y,G,$,Z){},reportContextSensitivity:function(U,X,Y,G,$,Z){}}}class G5{codeGenerator;rootTable;expression;diagnostics;constructor(U,X,Y,G){this.codeGenerator=U;this.rootTable=X;this.expression=Y;this.diagnostics=G}get arguments(){if(this.expression instanceof Y0)return this.expression.arguments;return[]}get arguments2(){if(this.expression instanceof m0&&this.expression.isStar&&this.expression.arguments2)return this.expression.arguments2;return[]}instruction(U,X,Y){this.codeGenerator.instruction(U,X,Y)}command(){let U=(()=>{if(this.expression instanceof m0)return this.expression.symbol;if(this.expression instanceof _0)return this.expression.reference;return null})();if(this.lineInstruction(this.expression),!U)throw Error("Symbol cannot be null for command generation.");this.instruction(W.Command,U,this.expression.source)}lineInstruction(U){this.codeGenerator.lineInstruction(U)}visitNode(U){if(!U)return;this.codeGenerator.visitNodeOrNull(U)}visitExpression(U){if(!U)return;this.codeGenerator.visitNodeOrNull(U)}visitNodes(U){if(!U)return;this.codeGenerator.visitNodes(U)}}class z3{opcode;operand;source;constructor(U,X,Y){this.opcode=U;this.operand=X;this.source=Y}deconstruct(){return[this.opcode,this.operand]}toString(){return`Instruction(opcode=${this.opcode}, operand=${this.operand})`}}class I3{label;instructions=[];constructor(U){this.label=U}add(U){this.instructions.push(U)}plusAssign(U){this.add(U)}}class P2{name;constructor(U){this.name=U}}class $5{names=new Map;generate(U){let X=this.names.get(U)??0;return this.names.set(U,X+1),new P2(`${U}_${X}`)}reset(){this.names.clear()}}class Z5{label;keys;constructor(U,X){this.label=U;this.keys=X}}class J5{id;_cases=[];constructor(U){this.id=U}get cases(){return this._cases}addCase(U){this._cases.push(U)}}class Q5{sourceName;symbol;subjectReference;trigger;name;fullName;locals;blocks=[];switchTables=[];constructor(U,X,Y){this.sourceName=U;this.symbol=X;this.subjectReference=Y;this.trigger=X.trigger,this.name=X.name,this.fullName=`[${this.trigger.identifier},${this.name}]`,this.locals=new j9}generateSwitchTable(){let U=new J5(this.switchTables.length);return this.switchTables.push(U),U}}class j9{parameters=[];all=[]}class Q0 extends X1{rootTable;dynamicCommands;diagnostics;labelGenerator=new $5;_scripts=[];block;lastLineNumber=-1;constructor(U,X,Y){super();this.rootTable=U;this.dynamicCommands=X;this.diagnostics=Y}get scripts(){return this._scripts}get script(){return this._scripts[this._scripts.length-1]}bind(U){return this.block=U,U}generateBlock(U,X=!0){let Y=X?this.labelGenerator.generate(U):new P2(U),G=new I3(Y);return this.script.blocks.push(G),G}generateBlockLabel(U){let X=new I3(U);return this.script.blocks.push(X),X}instruction(U,X,Y,G=this.block){G.instructions.push(new z3(U,X,Y))}instructionUnit(U,X,Y=this.block){Y.instructions.push(new z3(U,void 0,X))}lineInstruction(U){if(U.source.line!==this.lastLineNumber)this.lastLineNumber=U.source.line}visitScriptFile(U){this.visitNodes(U.scripts)}visitScript(U){if(U.triggerType==A0)return;this._scripts.push(new Q5(U.source.name,U.symbol,U.subjectReference)),this.visitNodes(U.parameters),this.bind(this.generateBlock("entry",!1)),this.lineInstruction(U),this.visitNodes(U.statements),this.generateDefaultReturns(U),this.labelGenerator.reset(),this.lastLineNumber=-1}visitParameter(U){let X=U.symbol;this.script.locals.parameters.push(X),this.script.locals.all.push(X)}generateDefaultReturns(U){this.lineInstruction(U);let X=E.toList(U.returnType);for(let Y of X)if(Y==L.INT)this.instruction(W.PushConstantInt,0);else if(Y.baseType==0)this.instruction(W.PushConstantInt,-1);else if(Y.baseType==1)this.instruction(W.PushConstantString,"");else if(Y.baseType==2)this.instruction(W.PushConstantLong,BigInt(-1));else throw Error(`Unsupported type in returns: ${Y}`);this.instructionUnit(W.Return)}visitBlockStatement(U){this.visitNodes(U.statements)}visitReturnStatement(U){this.visitNodes(U.expressions),this.lineInstruction(U),this.instructionUnit(W.Return,U.source)}visitIfStatement(U){let X=this.labelGenerator.generate("if_true"),Y=U.elseStatement?this.labelGenerator.generate("if_else"):null,G=this.labelGenerator.generate("if_end");if(this.generateCondition(U.condition,this.block,X,Y??G),this.bind(this.generateBlockLabel(X)),this.visitNodeOrNull(U.thenStatement),this.instruction(W.Branch,G),Y!=null)this.bind(this.generateBlockLabel(Y)),this.visitNodeOrNull(U.elseStatement),this.instruction(W.Branch,G);this.bind(this.generateBlockLabel(G))}visitWhileStatement(U){let X=this.labelGenerator.generate("while_start"),Y=this.labelGenerator.generate("while_body"),G=this.labelGenerator.generate("while_end"),$=this.bind(this.generateBlockLabel(X));this.generateCondition(U.condition,$,Y,G),this.bind(this.generateBlockLabel(Y)),this.visitNodeOrNull(U.thenStatement),this.instruction(W.Branch,X),this.bind(this.generateBlockLabel(G))}generateCondition(U,X,Y,G){if(U instanceof C1||U instanceof P1)if(!Q0.LOGICAL_OPERATORS.includes(U.operator.text)){let Z=U.left.type.baseType;if(Z==null){U.left.reportError(this.diagnostics,M.TYPE_HAS_NO_BASETYPE,U.left.type);return}let J=Q0.BRANCH_MAPPINGS.get(Z);if(!J)throw Error(`No mappings for BaseType: ${Z}`);let Q=J.get(U.operator.text);if(!Q)throw Error(`No mappings for operator: ${U.operator.text}`);this.visitNodeOrNull(U.left),this.visitNodeOrNull(U.right),this.instruction(Q,Y,void 0,X),this.instruction(W.Branch,G,void 0,X)}else{let Z=U.operator.text===Q0.LOGICAL_OR?this.labelGenerator.generate("condition_or"):this.labelGenerator.generate("condition_and"),J=U.operator.text===Q0.LOGICAL_OR?Y:Z,Q=U.operator.text===Q0.LOGICAL_OR?Z:G;this.generateCondition(U.left,X,J,Q);let F=this.bind(this.generateBlockLabel(Z));this.generateCondition(U.right,F,Y,G)}else if(U instanceof i0)this.generateCondition(U.expression,X,Y,G);else U.reportError(this.diagnostics,M.INVALID_CONDITION,U.constructor.name)}visitSwitchStatement(U){let X=this.script.generateSwitchTable(),G=U.defaultCase!=null?this.labelGenerator.generate("switch_default_case"):null,$=this.labelGenerator.generate("switch_end");this.visitNodeOrNull(U.condition),this.instruction(W.Switch,X,U.source);let Z=U.cases[0]??null;if(Z==null||!Z.isDefault)this.instruction(W.Branch,G??$);for(let J of U.cases){let Q=!J.isDefault?this.labelGenerator.generate(`switch_${X.id}_case`):G??(()=>{throw Error("switchDefault null while having a default case")}),F=[];for(let _ of J.keys){let I=this.resolveConstantValue(_);if(I==null){_.reportError(this.diagnostics,M.NULL_CONSTANT,_.constructor.name);continue}F.push(I)}X.addCase(new Z5(Q,F)),this.bind(this.generateBlockLabel(Q)),this.visitNodes(J.statements),this.instruction(W.Branch,$)}this.bind(this.generateBlockLabel($))}resolveConstantValue(U){if(U instanceof V1)return U.subExpression?this.resolveConstantValue(U.subExpression):null;if(U instanceof _0)return U.reference;if(U instanceof W1)return U.symbol??U.value;if(U instanceof e)return U.value;return null}visitDeclarationStatement(U){let X=U.symbol;if(this.script.locals.all.push(X),U.initializer!=null)this.visitNodeOrNull(U.initializer);else{let G=X.type.defaultValue;if(typeof G==="number")this.instruction(W.PushConstantInt,G);else if(typeof G==="string")this.instruction(W.PushConstantString,G);else if(typeof G==="bigint")this.instruction(W.PushConstantLong,G);else throw Error(`Unsupported default type: ${G?.constructor?.name}`)}this.instruction(W.PopLocalVar,X,U.source)}visitArrayDeclarationStatement(U){let X=U.symbol;this.script.locals.all.push(X),this.visitNodeOrNull(U.initializer),this.instruction(W.DefineArray,X,U.source)}visitAssignmentStatement(U){let X=U.vars,Y=X[0];if(Y instanceof F1&&Y.index!=null)this.visitNodeOrNull(Y.index);this.visitNodes(U.expressions);for(let G=X.length-1;G>=0;G--){let $=X[G],Z=$.reference;if(Z==null){$.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}if(Z instanceof k0)this.instruction(W.PopLocalVar,Z,$.source);else if(Z instanceof J0){if(!($ instanceof C2))throw Error("Expected 'GameVariableExpression'.");this.instruction(!$.dot?W.PopVar:W.PopVar2,Z,$.source)}else throw Error(`Unsupported reference type: ${Z}`)}}visitExpressionStatement(U){let X=U.expression;this.visitNodeOrNull(X);let Y=E.toList(X.type);for(let G of Y){let $=G.baseType;if($==null){U.reportError(this.diagnostics,M.TYPE_HAS_NO_BASETYPE,G);return}this.instruction(W.Discard,$)}}visitEmptyStatement(U){}visitLocalVariableExpression(U){let X=U.reference;if(X==null){U.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}this.lineInstruction(U),this.visitNodeOrNull(U.index),this.instruction(W.PushLocalVar,X,U.source)}visitGameVariableExpression(U){let X=U.reference;if(X==null){U.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}this.lineInstruction(U),this.instruction(!U.dot?W.PushVar:W.PushVar2,X,U.source)}visitConstantVariableExpression(U){let X=U.subExpression;if(X==null){U.reportError(this.diagnostics,M.EXPRESSION_NO_SUBEXPR);return}this.visitNodeOrNull(X)}visitParenthesizedExpression(U){this.lineInstruction(U),this.visitNodeOrNull(U.expression)}visitArithmeticExpression(U){let X=U.operator.text,Y=U.left.type.baseType,$=(()=>{switch(Y){case 0:return Q0.INT_OPERATIONS;case 2:return Q0.LONG_OPERATIONS;default:throw Error(`No mapping for BaseType: ${Y}.`)}})().get(X);if(!$)throw Error(`No mapping for operator: ${X}.`);this.visitNodeOrNull(U.left),this.visitNodeOrNull(U.right),this.instructionUnit($)}visitCalcExpression(U){this.lineInstruction(U),this.visitNodeOrNull(U.expression)}visitCommandCallExpression(U){let X=U.symbol;if(X==null){U.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}if(this.emitDynamicCommand(U.nameString,U))return;this.visitNodes(U.arguments),this.lineInstruction(U),this.instruction(W.Command,X,U.source)}emitDynamicCommand(U,X){let Y=this.dynamicCommands.get(U);if(!Y)return!1;let G=new G5(this,this.rootTable,X,this.diagnostics);if(Y.generateCode)Y.generateCode(G);else G.visitNodes(G.arguments),G.command();return!0}visitProcCallExpression(U){let X=U.symbol;if(X==null){U.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}this.visitNodes(U.arguments),this.lineInstruction(U),this.instruction(W.Gosub,X,U.source)}visitJumpCallExpression(U){let X=U.symbol;if(X==null){U.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}this.visitNodes(U.arguments),this.lineInstruction(U),this.instruction(W.Jump,X,U.source)}visitClientScriptExpression(U){let X=U.symbol;if(X==null){U.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}let Y=E.toList(X.parameters),G=Y.map(($)=>$.code).filter(Boolean).join("");if(Y.length!==G.length)throw Error("Mismatch between argument types and their codes.");if(this.instruction(W.PushConstantSymbol,X,U.source),this.visitNodes(U.arguments),U.transmitList.length>0)this.visitNodes(U.transmitList),G+="Y",this.instruction(W.PushConstantInt,U.transmitList.length);this.instruction(W.PushConstantString,G)}visitIntegerLiteral(U){this.lineInstruction(U),this.instruction(W.PushConstantInt,U.value,U.source)}visitCoordLiteral(U){this.lineInstruction(U),this.instruction(W.PushConstantInt,U.value,U.source)}visitBooleanLiteral(U){this.lineInstruction(U),this.instruction(W.PushConstantInt,U.value?1:0,U.source)}visitCharacterLiteral(U){this.lineInstruction(U),this.instruction(W.PushConstantInt,U.value.charCodeAt(0),U.source)}visitNullLiteral(U){this.lineInstruction(U);let X=U.type.baseType;if(X==1){this.instruction(W.PushConstantString,"null");return}else if(X==2){this.instruction(W.PushConstantLong,BigInt(-1));return}if(this.instruction(W.PushConstantInt,-1,U.source),U.getType()instanceof K.Hook)this.instruction(W.PushConstantString,"")}visitStringLiteral(U){this.lineInstruction(U);let X=U.subExpression;if(X!=null){this.visitNodeOrNull(X);return}let Y=U.symbol;if(Y!=null){this.instruction(W.PushConstantSymbol,Y,U.source);return}this.instruction(W.PushConstantString,U.value,U.source)}visitJoinedStringExpression(U){if(this.visitNodes(U.parts),U.parts.length>1)this.lineInstruction(U),this.instruction(W.JoinString,U.parts.length,U.source)}visitJoinedStringPart(U){if(this.lineInstruction(U),U instanceof t0)this.instruction(W.PushConstantString,U.value,U.source);else if(U instanceof r0)this.visitNodeOrNull(U.expression);else throw Error(`Unsupported StringPart: ${U.constructor.name}`)}visitIdentifier(U){let X=U.reference;if(X==null){U.reportError(this.diagnostics,M.SYMBOL_IS_NULL);return}if(this.lineInstruction(U),X instanceof z2&&X.trigger==A0){if(this.emitDynamicCommand(U.text,U))return;this.instruction(W.Command,X,U.source)}else this.instruction(W.PushConstantSymbol,X,U.source)}visitNodeOrNull(U){if(!U)return;U.accept(this)}visitNodes(U){if(!U)return;for(let X of U)this.visitNodeOrNull(X)}static LOGICAL_AND="&";static LOGICAL_OR="|";static LOGICAL_OPERATORS=[Q0.LOGICAL_AND,Q0.LOGICAL_OR];static INT_BRANCHES=new Map([["=",W.BranchEquals],["!",W.BranchNot],["<",W.BranchLessThan],[">",W.BranchGreaterThan],["<=",W.BranchLessThanOrEquals],[">=",W.BranchGreaterThanOrEquals]]);static OBJ_BRANCHES=new Map([["=",W.ObjBranchEquals],["!",W.ObjBranchNot]]);static LONG_BRANCHES=new Map([["=",W.LongBranchEquals],["!",W.LongBranchNot],["<",W.LongBranchLessThan],[">",W.LongBranchGreaterThan],["<=",W.LongBranchLessThanOrEquals],[">=",W.LongBranchGreaterThanOrEquals]]);static BRANCH_MAPPINGS=new Map([[0,Q0.INT_BRANCHES],[1,Q0.OBJ_BRANCHES],[2,Q0.LONG_BRANCHES]]);static INT_OPERATIONS=new Map([["+",W.Add],["-",W.Sub],["*",W.Multiply],["/",W.Divide],["%",W.Modulo],["&",W.And],["|",W.Or]]);static LONG_OPERATIONS=new Map([["+",W.LongAdd],["-",W.LongSub],["*",W.LongMultiply],["/",W.LongDivide],["%",W.LongModulo],["&",W.LongAnd],["|",W.LongOr]])}class U2{instruction;next=[];previous=[];constructor(U){this.instruction=U}addNext(U){this.next.push(U),U.previous.push(this)}toString(){return`InstructionNode(instruction=${this.instruction})`}}class X2 extends U2{set;constructor(U){super(null);this.set=U}}class N5{commandPointers;constructor(U){this.commandPointers=U}generate(U){let X=new Map,Y=[],G=new U2(null);G.addNext(this.firstInstruction(U[0],X,U)),Y.push(G);let $=!1;for(let Z=0;Z<U.length;Z++){let J=U[Z];for(let Q=0;Q<J.instructions.length;Q++){let F=J.instructions[Q];if(F.opcode===W.LineNumber)continue;let _=this.getOrCreate(X,F);if(Y.push(_),$&&F.opcode===W.BranchEquals&&this.checkInvertedConditional(J.instructions,Q)){if(Q+1>=J.instructions.length)throw Error("Invalid inverted conditional layout");let I=J.instructions[Q+1],H=this.getOrCreate(X,I);if(I.opcode!==W.Branch)throw Error("Expected Branch opcode");let j=J.instructions[Q-2];if(j.opcode!==W.Command)throw Error("Expected command before conditional");let P=j.operand.name,g=this.commandPointers.get(P).set,G0=new X2(g);Y.push(G0),_.addNext(G0),G0.addNext(H),$=!1}else if(!m8.has(F.opcode)){let I;if(Q+1<J.instructions.length)I=J.instructions[Q+1];else if(Z+1<U.length)I=U[Z+1].instructions[0];else throw Error("No next instruction");_.addNext(this.getOrCreate(X,I))}if($&&F.opcode===W.BranchEquals&&this.checkConditional(J.instructions,Q)){let I=F.operand,H=U.find((S1)=>S1.label===I);if(!H)throw Error("Unable to find block.");let j=J.instructions[Q-2];if(j.opcode!==W.Command)throw Error("Expected command before conditional.");let P=j.operand.name,g=this.commandPointers.get(P).set,G0=new X2(g);Y.push(G0),_.addNext(G0),G0.addNext(this.firstInstruction(H,X,U)),$=!1}else if(d8.has(F.opcode)){let I=F.operand,H=U.find((j)=>j.label===I);if(!H)throw Error("Unable to find block.");_.addNext(this.firstInstruction(H,X,U))}else if(F.opcode===W.Switch){let I=F.operand;for(let H of I.cases){if(H.keys.length===0)continue;let j=U.find((P)=>P.label===H.label);if(!j)throw Error("Unable to find block.");_.addNext(this.firstInstruction(j,X,U))}}if(this.isConditionalPointerSetter(F))$=!0}}return Y}checkConditional(U,X){if(X<2)return!1;let Y=U[X-2];if(!this.isConditionalPointerSetter(Y))return!1;let G=U[X-1];return G.opcode===W.PushConstantInt&&G.operand===1}checkInvertedConditional(U,X){if(X<2)return!1;let Y=U[X-2];if(!this.isConditionalPointerSetter(Y))return!1;let G=U[X-1];return G.opcode===W.PushConstantInt&&G.operand===0}isConditionalPointerSetter(U){if(U.opcode==W.Command&&U.operand instanceof s0){let X=this.commandPointers.get(U.operand.name);return X!==void 0&&X.conditionalSet}return!1}firstInstruction(U,X,Y){let G=this.firstValid(U.instructions);if(G)return this.getOrCreate(X,G);let $=Y.indexOf(U);for(let Z=$;Z<Y.length;Z++){let J=this.firstValid(Y[Z].instructions);if(J)return this.getOrCreate(X,J)}throw Error("No instructions remaining.")}firstValid(U){for(let X of U)if(X.opcode!==W.LineNumber)return X;return null}getOrCreate(U,X){let Y=U.get(X);if(!Y)Y=new U2(X),U.set(X,Y);return Y}}var m8=new Set([W.Branch,W.Jump,W.Return]),d8=new Set([W.Branch,W.BranchNot,W.BranchEquals,W.BranchLessThan,W.BranchGreaterThan,W.BranchLessThanOrEquals,W.BranchGreaterThanOrEquals,W.LongBranchNot,W.LongBranchEquals,W.LongBranchLessThan,W.LongBranchGreaterThan,W.LongBranchLessThanOrEquals,W.LongBranchGreaterThanOrEquals,W.ObjBranchNot,W.ObjBranchEquals]);class q5{diagnostics;scripts;commandPointers;scriptsBySymbol;graphGenerator;scriptGraphs=new Map;scriptPointers=new Map;pendingScripts=new Set;constructor(U,X,Y){this.diagnostics=U;this.scripts=X;this.commandPointers=Y;this.scriptsBySymbol=new Map(X.map((G)=>[G.symbol,G])),this.graphGenerator=new N5(Y)}getGraph(U){let X=this.scriptGraphs.get(U.symbol);if(X)return X;let Y=this.graphGenerator.generate(U.blocks);return this.scriptGraphs.set(U.symbol,Y),Y}getPointers(U){let X=this.scriptPointers.get(U);if(X)return X;let Y=this.calculatePointers(U);return this.scriptPointers.set(U,Y),Y}run(){for(let U of this.scripts){let X=performance.now();this.validatePointers(U);let Y=performance.now()-X}}calculatePointers(U){if(this.pendingScripts.has(U))return{required:new Set,set:new Set,conditionalSet:!1,corrupted:new Set};let X=this.scriptsBySymbol.get(U);if(!X)throw Error(`Unable to find script from symbol: ${U.name}`);let Y=new Set,G=new Set,$=new Set;this.pendingScripts.add(U);for(let Z of N.ALL){if(this.requiresPointerScript(X,Z))Y.add(Z);if(this.setsPointerScript(X,Z))G.add(Z);if(this.corruptsPointerScript(X,Z))$.add(Z)}return this.pendingScripts.delete(U),{required:Y,set:G,conditionalSet:!1,corrupted:$}}validatePointers(U){for(let X of N.ALL)this.validatePointer(U,X)}validatePointer(U,X){let Y=this.getGraph(U),G=Y.filter((Q)=>this.requiresPointerNode(Q,X)),$=Y.filter((Q)=>this.setsPointerNode(Q,X)),Z=Y.filter((Q)=>this.corruptsPointerNode(Q,X));if(!this.setsPointerTrigger(U.trigger,X)){if(Y.length>0)Z.push(Y[0])}let J=this.findEdgePath(G,(Q)=>Z.includes(Q),(Q)=>Q.previous.filter((F)=>!$.includes(F)));if(J!==null){let Q=J[0],F=Q.instruction?.source??(()=>{throw Error("Unknown instruction source.")})(),_=J[J.length-1],I=_!==Y[0]&&_!==Q,H=I?M.POINTER_CORRUPTED:M.POINTER_UNINITIALIZED;if(this.diagnostics.report(new W0("ERROR",F,H,[X.representation])),I){let P=_.instruction?.source??(()=>{throw Error("Unknown instruction source.")})();this.diagnostics.report(new W0("HINT",P,M.POINTER_CORRUPTED_LOC,[X.representation]))}let j=(P)=>{let g=P.instruction?.opcode;if(g!==W.Gosub&&g!==W.Jump)return;let G0=P.instruction.operand,S1=this.scripts.find((O3)=>O3.symbol===G0);if(!S1)throw Error("Unable to find script.");let b2=this.requiresPointerPathScript(S1,X);if(!b2)throw Error("Unable to find requirement path?");let u2=b2[0],k3=u2.instruction?.source??(()=>{throw Error("Invalid instruction/source.")})();this.diagnostics.report(new W0("HINT",k3,M.POINTER_REQUIRED_LOC,[X.representation])),j(u2)};j(Q)}}setsPointerTrigger(U,X){let Y=U.pointers;return Y!=null&&Y.has(X)}requiresPointerScript(U,X){return this.requiresPointerPathScript(U,X)!==null}requiresPointerPathScript(U,X){let Y=this.getGraph(U),G=Y.filter(($)=>this.requiresPointerNode($,X));return this.findEdgePath(G,($)=>$===Y[0],($)=>$.previous.filter((Z)=>!this.setsPointerNode(Z,X)))}setsPointerScript(U,X){let Y=this.getGraph(U),G=Y.filter(($)=>$.instruction?.opcode===W.Return);return this.findEdgePath(G,($)=>$===Y[0]||this.corruptsPointerNode($,X),($)=>$.previous.filter((Z)=>!this.setsPointerNode(Z,X)))===null}corruptsPointerScript(U,X){let G=this.getGraph(U).filter(($)=>$.instruction?.opcode===W.Return);return this.findEdgePath(G,($)=>this.corruptsPointerNode($,X),($)=>$.previous.filter((Z)=>!this.setsPointerNode(Z,X)))!==null}requiresPointerNode(U,X){let Y=U.instruction;if(!Y)return!1;switch(Y.opcode){case W.Command:{let G=Y.operand,$=this.commandPointers.get(G.name);return $?$.required.has(X):!1}case W.Gosub:case W.Jump:{let G=Y.operand;return this.getPointers(G).required.has(X)}case W.PushVar:{let $=Y.operand.type;if($ instanceof B0)return X===N.ACTIVE_PLAYER;if($ instanceof w0)return X===N.ACTIVE_PLAYER;if($ instanceof O0)return X===N.ACTIVE_NPC;return!1}case W.PopVar:{let G=Y.operand,$=G.type;if($ instanceof B0||$ instanceof w0)return G.isProtected?X===N.P_ACTIVE_PLAYER:X===N.ACTIVE_PLAYER;if($ instanceof O0)return X===N.ACTIVE_NPC;return!1}case W.PushVar2:{let $=Y.operand.type;if($ instanceof B0)return X===N.ACTIVE_PLAYER2;if($ instanceof w0)return X===N.ACTIVE_PLAYER2;if($ instanceof O0)return X===N.ACTIVE_NPC2;return!1}case W.PopVar2:{let G=Y.operand,$=G.type;if($ instanceof B0||$ instanceof w0)return G.isProtected?X===N.P_ACTIVE_PLAYER2:X===N.ACTIVE_PLAYER2;if($ instanceof O0)return X===N.ACTIVE_NPC2;return!1}default:return!1}}setsPointerNode(U,X){if(U instanceof X2)return U.set.has(X);let Y=U.instruction;if(!Y)return!1;switch(Y.opcode){case W.Command:{let G=Y.operand,$=this.commandPointers.get(G.name);return $?$.set.has(X)&&!$.conditionalSet:!1}case W.Gosub:{let G=Y.operand;return this.getPointers(G).set.has(X)}default:return!1}}corruptsPointerNode(U,X){let Y=U.instruction;if(!Y)return!1;switch(Y.opcode){case W.Command:{let G=Y.operand,$=this.commandPointers.get(G.name);return $?$.corrupted.has(X):!1}case W.Gosub:{let G=Y.operand;return this.getPointers(G).corrupted.has(X)}default:return!1}}findEdgePath(U,X,Y){if(!U.length)return null;let G=new Map,$=new Map,Z=[];for(let J of U)for(let Q of Y(J))if(!G.has(Q))$.set(Q,J),G.set(Q,null),Z.push(Q);while(Z.length){let J=Z.shift();if(X(J)){let Q=[],F=J;while(F)Q.unshift(F),F=G.get(F)??void 0;return Q.unshift($.get(Q[0])),Q}for(let Q of Y(J))if(!G.has(Q))G.set(Q,J),Z.push(Q)}return null}}class A3{scriptWriter;commandPointers;logger=console;sourcePaths;excludePaths;rootTable=new o2;symbolLoaders=[];dynamicCommandHandlers=new Map;types=new i3;triggers=new o3;static DEFAULT_DIAGNOSTICS_HANDLER=new t3;diagnosticsHandler=A3.DEFAULT_DIAGNOSTICS_HANDLER;constructor(U,X,Y,G){this.scriptWriter=Y;this.commandPointers=G;this.sourcePaths=U.map(($)=>this.normalizePath($)),this.excludePaths=X.map(($)=>this.normalizePath($)),this.types.registerAll(L),this.setupDefaultTypeCheckers(),this.triggers.registerTrigger(A0)}setupDefaultTypeCheckers(){this.types.addTypeChecker((U,X)=>U===K.Any),this.types.addTypeChecker((U,X)=>X===K.Nothing),this.types.addTypeChecker((U,X)=>U===K.Error||X===K.Error),this.types.addTypeChecker((U,X)=>U===X),this.types.addTypeChecker((U,X)=>U instanceof K.Script&&X instanceof K.Script&&U.trigger===X.trigger&&this.types.check(U.parameterType,X.parameterType)&&this.types.check(U.returnType,X.returnType)),this.types.addTypeChecker((U,X)=>U instanceof K.Hook&&X instanceof K.Hook&&this.types.check(U.transmitListType,X.transmitListType)),this.types.addTypeChecker((U,X)=>{let Y="inner"in U&&U.inner!=null,G="inner"in X&&X.inner!=null;if(!Y||!G)return!1;if(U.constructor.name!==X.constructor.name)return!1;return this.types.check(U.inner,X.inner)}),this.types.addTypeChecker((U,X)=>{if(!(U instanceof E)||!(X instanceof E))return!1;if(U.children.length!==X.children.length)return!1;for(let Y=0;Y<U.children.length;Y++)if(!this.types.check(U.children[Y],X.children[Y]))return!1;return!0}),this.types.addTypeChecker((U,X)=>{return U.representation===X.representation})}addSymbolLoader(U){this.symbolLoaders.push(U)}addDynamicCommandHandler(U,X){if(this.dynamicCommandHandlers.has(U))throw Error(`A dynamic command handler with the name of '${U}' already exists.`);this.dynamicCommandHandlers.set(U,X)}run(U){if(this.loadSymbols(),this.compile(U),"close"in this.scriptWriter)this.scriptWriter.close()}loadSymbols(){for(let U of this.symbolLoaders)U.load(this.rootTable,this)}compile(U){let[X,Y]=this.parse(U);if(!X)return;if(!this.analyze(Y))return;let[$,Z]=this.codegen(Y);if(!$)return;if(!this.checkPointers(Z))return;this.write(Z)}parse(U){let X=new L1,Y=[],G=0;for(let $ of this.sourcePaths){let Z=this.walkTopDown($);for(let J of Z){if(!J.endsWith(`.${U}`))continue;let Q=new B2(J,X),F=e1.createScriptFile(J,Q);if(F)Y.push(F);G++}}return this.diagnosticsHandler.handleParse?.(X),[X.hasErrors()===!1,Y]}analyze(U){let X=new L1,Y=new Y5(this.types,this.triggers,this.rootTable,X);for(let $ of U)$.accept(Y);let G=new T0(this.types,this.triggers,this.rootTable,this.dynamicCommandHandlers,X);for(let $ of U)$.accept(G);return this.diagnosticsHandler.handleTypeChecking?.(X),!X.hasErrors()}codegen(U){let X=new L1,Y=[];for(let G of U){let $=new Q0(this.rootTable,this.dynamicCommandHandlers,X);G.accept($),Y.push(...$.scripts)}return this.diagnosticsHandler.handleCodeGeneration?.(X),[X.hasErrors()===!1,Y]}checkPointers(U){if(this.commandPointers.size<1)return!1;let X=new L1;return new q5(X,U,this.commandPointers).run(),this.diagnosticsHandler.handlePointerChecking?.(X),!X.hasErrors()}write(U){for(let X of U){if(this.isExcluded(X.sourceName))continue;this.scriptWriter.write(X)}}isExcluded(U){let X;try{X=b0.normalize(b0.resolve(U))}catch{return!1}return this.excludePaths.some((Y)=>{let G=b0.normalize(Y);return X===G||X.startsWith(G+b0.sep)})}normalizePath(U){return b0.normalize(b0.resolve(U))}walkTopDown(U){let X=[];for(let Y of h9.readdirSync(U,{withFileTypes:!0})){let G=b0.join(U,Y.name);if(Y.isDirectory())X=X.concat(this.walkTopDown(G));else X.push(G)}return X}}import*as H3 from"fs";import*as L3 from"path";import{readFileSync as T8}from"fs";class b1{addConstant(U,X,Y){let G=new g1(X,Y);if(!U.insert(l.constant(),G))throw Error(`Unable to add constant: name=${X}, value=${Y}.`);return G}addBasic(U,X,Y,G=!1){let $=new J0(Y,X,G);if(!U.insert(l.basic(X),$))throw Error(`Unable to add basic: type=${X}, name=${Y}`);return $}}class F5 extends b1{path;constructor(U){super();this.path=U}load(U,X){let Y=T8(this.path,"utf8");for(let G of Y.split(/\r?\n/)){let $=G.split("\t",2);if($.length!==2)continue;this.addConstant(U,$[0],$[1])}}}import{readFileSync as l8}from"fs";class K3 extends b1{mapper;path;typeSupplier;constructor(U,X,Y){super();this.mapper=U,this.path=X,this.typeSupplier=Y}static withType(U,X,Y){return new K3(U,X,()=>Y)}load(U,X){let Y=l8(this.path,"utf8").split(`
|
|
29
|
-
`);for(let G of Y){if(!G)continue;let $=G.split("\t");if($.length<2)continue;let Z=Number($[0]),J=$[1],Q=$.length>=3&&$[2]!=="none"?E.fromList($[2].split(",").map((H)=>X.types.find(H)??K.Error)):K.Unit,F=$.length>=4?$[3]==="true":!1,_=this.typeSupplier(Q),I=this.addBasic(U,_,J,F);this.mapper.putSymbol(Z,I)}}}import{readFileSync as y8}from"fs";class D3 extends b1{mapper;path;typeSupplier;constructor(U,X,Y){super();this.mapper=U,this.path=X,this.typeSupplier=Y}static withType(U,X,Y){return new D3(U,X,()=>Y)}load(U,X){let G=y8(this.path,"utf-8").split(/\r?\n/);for(let $ of G){if(!$)continue;let Z=$.split("\t");if(Z.length<2)continue;let J=Number(Z[0]),Q=Z[1],F=Z.length>=3?E.fromList(Z[2].split(",").map((H)=>X.types.find(H)??K.Error)):K.Unit,_=this.typeSupplier(F),I=this.addBasic(U,_,Q);this.mapper.putSymbol(J,I)}}}class z1{queueType;constructor(U){this.queueType=U}typeCheck(U){U.checkArgument(0,this.queueType),U.checkArgument(1,L.INT),U.checkArgument(2,L.INT);let X=[this.queueType,L.INT,L.INT];U.checkArgumentTypes(E.fromList(X)),U.expression.type=K.Unit}}class I1{queueType;constructor(U){this.queueType=U}typeCheck(U){let X=U.checkArgument(0,this.queueType);U.checkArgument(1,L.INT);let Y=[this.queueType,L.INT],G=[],$=X?.type;if($ instanceof K.Script&&$.trigger==this.queueType.trigger&&$.parameterType!=K.Unit)G.push(...E.toList($.parameterType));U.checkArgumentTypes(E.fromList(Y),!0,!1),U.checkArgumentTypes(E.fromList(G),!0,!0),U.expression.type=K.Unit}generateCode(U){let X=U.arguments;U.visitNodes(X);let Y=U.arguments2;if(U.visitNodes(Y),Y.length>2){let G=Y.slice(2).map(($)=>$.type.code).filter(($)=>$!=null).join("");U.instruction(W.PushConstantString,G)}else U.instruction(W.PushConstantString,"");U.command()}}class B3{queueType;constructor(U){this.queueType=U}typeCheck(U){U.checkArgument(0,this.queueType),U.checkArgument(1,L.INT),U.checkArgument(2,L.INT),U.checkArgument(3,L.INT);let X=[this.queueType,L.INT,L.INT,L.INT];U.checkArgumentTypes(E.fromList(X)),U.expression.type=K.Unit}}class w3{queueType;constructor(U){this.queueType=U}typeCheck(U){let X=U.checkArgument(0,this.queueType);U.checkArgument(1,L.INT),U.checkArgument(2,L.INT);let Y=[this.queueType,L.INT,L.INT],G=[],$=X?.type;if($ instanceof K.Script&&$.trigger==this.queueType.trigger&&$.parameterType!=K.Unit)G.push(...E.toList($.parameterType));U.checkArgumentTypes(E.fromList(Y),!0,!1),U.checkArgumentTypes(E.fromList(G),!0,!0),U.expression.type=K.Unit}generateCode(U){let X=U.arguments;U.visitNodes(X);let Y=U.arguments2;if(U.visitNodes(Y),Y.length>2){let G=Y.slice(2).map(($)=>$.type.code).filter(($)=>$!=null).join("");U.instruction(W.PushConstantString,G)}else U.instruction(W.PushConstantString,"");U.command()}}class Y2{timerType;constructor(U){this.timerType=U}typeCheck(U){let X=U.checkArgument(0,this.timerType);U.checkArgument(1,L.INT);let Y=X?.type,G=[this.timerType,L.INT];if(Y instanceof K.Script&&Y.trigger==this.timerType.trigger&&Y.parameterType!=K.Unit)G.push(...E.toList(Y.parameterType));U.checkArgumentTypes(E.fromList(G)),U.expression.type=K.Unit}generateCode(U){let X=U.arguments;if(U.visitNodes(X),arguments.length>2){let Y=X.slice(2).map((G)=>G.type.code).filter((G)=>G!=null).join("");U.instruction(W.PushConstantString,Y)}else U.instruction(W.PushConstantString,"");U.command()}}class u1{inner;representation;code;baseType=0;defaultValue=-1;options;constructor(U){this.inner=U;this.representation=`param<${U.representation}>`,this.options=new y({allowSwitch:!1,allowArray:!1,allowDeclaration:!1})}}class l0{type;constructor(U){this.type=U}typeCheck(U){let X=[];if(this.type!==null)X.push(this.type),U.checkArgument(0,this.type);let Y=this.type===null?0:1,G=U.checkArgument(Y,l0.PARAM_ANY),$=G?.type instanceof u1?G.type.inner:void 0;if(X.push(new u1($??K.Any)),!U.checkArgumentTypes(E.fromList(X))){U.expression.type=K.Error;return}if($==null){U.expression.reportError(U.diagnostics,"Param return type was not able to be found."),U.expression.type=K.Error;return}U.expression.type=$}static PARAM_ANY=new u1(K.Any)}class W5 extends X1{visitBinaryExpression(U){return`${this.visit(U.left)} ${U.operator.text} ${this.visit(U.right)}`}visitCalcExpression(U){return`calc${this.visit(U.expression)}`}visitCommandCallExpression(U){let X="~"+this.visit(U.name);if(U.arguments.length>0)X+="(",X+=U.arguments.map((Y)=>this.visit(Y)).join(""),X+=")";return X}visitLocalVariableExpression(U){return`$${this.visit(U.name)}`}visitGameVariableExpression(U){return`%${this.visit(U.name)}`}visitConstantVariableExpression(U){return`^${this.visit(U.name)}`}visitCharacterLiteral(U){return`'${U.value}'`}visitNullLiteral(U){return"null"}visitStringLiteral(U){return`"${U.value}"`}visitLiteral(U){return String(U.value)}visitJoinedStringExpression(U){let X='"';for(let Y of U.parts)X+=this.visit(Y);return X+='"',X}visitJoinedStringPart(U){if(U instanceof t0)return U.value;if(U instanceof r0)return`<${this.visit(U.expression)}>`;throw Error(`Unsupported StringPart: ${U}`)}visitIdentifier(U){return U.text}visit(U){U.accept(this)}}class v1{typeCheck(U){if(U.arguments.length===0)U.expression.reportError(U.diagnostics,v1.DIAGNOSTIC_INVALID_SIGNATURE);else U.arguments.forEach((X,Y)=>{U.checkArgument(Y,K.Any);let G=X.type;if(G instanceof E)X.reportError(U.diagnostics,v1.DIAGNOSTIC_TUPLE_TYPE,G.representation);else if(G.baseType!==0&&G.baseType!==1)X.reportError(U.diagnostics,v1.DIAGNOSTIC_UNIT_TYPE,G.representation)});U.expression.type=L.STRING}generateCode(U){U.lineInstruction(U.expression);let X=0;U.arguments.forEach((Y,G)=>{let $=Y.accept(v1.EXPRESSION_GENERATOR);if(U.instruction(W.PushConstantString,`${$}=`),X++,U.visitNode(Y),this.typeToString(U,Y.type),G!==U.arguments.length-1)U.instruction(W.PushConstantString,", "),X++}),U.instruction(W.JoinString,X)}typeToString(U,X){let Y;if(X===L.STRING)Y="escape";else if(X.baseType===0)Y="toString";else throw Error(`Unsupported type conversion to string: ${X}`);let G=U.rootTable.find(l.serverScript(A0),Y);if(G)U.instruction(W.Command,G)}static DIAGNOSTIC_INVALID_SIGNATURE="Type mismatch: '<unit>' was given but 'any...' was expected.";static DIAGNOSTIC_TUPLE_TYPE="Unable to dump multi-value types: %s";static DIAGNOSTIC_INVALID_BASE_TYPE="Unable to debug '%s' expressions.";static DIAGNOSTIC_UNIT_TYPE="Unable to debug expression with no return value.";static EXPRESSION_GENERATOR=new W5}class _5{typeCheck(U){U.checkArgumentTypes(K.Unit),U.expression.type=L.STRING}generateCode(U){let X=U.expression.findParentByType(q1);if(!X)throw Error("Script not found.");let Y=`[${X.trigger.text}, ${X.name.text}]`;U.lineInstruction(U.expression),U.instruction(W.PushConstantString,Y)}}class y0{inner;representation;code;baseType=0;defaultValue=-1;options;constructor(U){this.inner=U;this.representation=`dbcolumn<${U.representation}>`,this.options=new y({allowSwitch:!1,allowArray:!1,allowDeclaration:!1})}}class R3{withCount;constructor(U){this.withCount=U}typeCheck(U){let X=U.checkArgument(0,new y0(K.Any)),Y=X?.type?.inner;U.checkArgument(1,Y);let G=new E(new y0(Y??K.Any),Y??K.Any);if(Y instanceof E)X.reportError(U.diagnostics,"Tuple columns are not supported.");else U.checkArgumentTypes(G);U.expression.type=this.withCount?L.INT:K.Unit}generateCode(U){let Y=U.arguments[0].type.inner.baseType,G=(()=>{switch(Y){case 0:return 0;case 2:return 1;case 1:return 2;default:throw Error(`Unsupported base type: ${Y}.`)}})();U.visitNodes(U.arguments),U.instruction(W.PushConstantInt,G),U.command()}}class z5{typeCheck(U){U.checkArgument(0,z.DBROW);let X=U.checkArgument(1,new y0(K.Any));U.checkArgument(2,L.INT);let Y=X?.type?.inner,G=new E(z.DBROW,new y0(Y??K.Any),L.INT);if(!U.checkArgumentTypes(G)){U.expression.type=K.Error;return}if(X==null){(X??U.expression).reportError(U.diagnostics,"Unable to extract type from argument."),U.expression.type=K.Error;return}U.expression.type=Y}}class I5{typeCheck(U){let X=U.checkTypeArgument(0),Y=U.checkTypeArgument(1);U.checkArgument(2,z.ENUM);let G=X?.type instanceof K.Type?X.type.inner:void 0,$=Y?.type instanceof K.Type?Y.type.inner:void 0;U.checkArgument(3,G);let Z=new E(new K.Type(G??K.Any),new K.Type($??K.Any),z.ENUM,G??K.Any);U.checkArgumentTypes(Z),U.expression.type=$??K.Error}}class A5 extends A3{symbolPaths;mapper;constructor(U,X,Y,G,$,Z){super(U,X,Y,G);this.symbolPaths=$,this.mapper=Z}setup(){this.triggers.registerAll(D),this.types.registerAll(z),this.types.changeOptions("long",(U)=>{U.allowDeclaration=!1}),this.types.register("proc",new K.Script(D.PROC,K.Unit,K.Unit)),this.types.register("label",new K.Script(D.LABEL,K.Unit,K.Nothing)),this.types.addTypeChecker((U,X)=>U===z.OBJ&&X===z.NAMEDOBJ),this.addSymConstantLoaders(),this.types.register("walktrigger",new K.Script(D.WALKTRIGGER,K.Any,K.Nothing)),this.types.register("ai_walktrigger",new K.Script(D.AI_WALKTRIGGER,K.Any,K.Nothing)),this.types.register("queue",new K.Script(D.QUEUE,K.Any,K.Nothing)),this.addDynamicCommandHandler("queue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler(".queue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler("queue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler(".queue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler("longqueue",new B3(this.types.find("queue"))),this.addDynamicCommandHandler(".longqueue",new B3(this.types.find("queue"))),this.addDynamicCommandHandler("longqueue*",new w3(this.types.find("queue"))),this.addDynamicCommandHandler(".longqueue*",new w3(this.types.find("queue"))),this.types.register("timer",new K.Script(D.TIMER,K.Any,K.Nothing)),this.addDynamicCommandHandler("settimer",new Y2(this.types.find("timer"))),this.addDynamicCommandHandler(".settimer",new Y2(this.types.find("timer"))),this.addDynamicCommandHandler("lc_param",new l0(z.LOC)),this.addDynamicCommandHandler("loc_param",new l0(null)),this.addSymLoader("loc",z.LOC),this.addDynamicCommandHandler("nc_param",new l0(z.NPC)),this.addDynamicCommandHandler("npc_param",new l0(null)),this.addSymLoader("npc",z.NPC),this.addDynamicCommandHandler("oc_param",new l0(z.OBJ)),this.addDynamicCommandHandler("obj_param",new l0(null)),this.addSymLoader("obj",z.NAMEDOBJ),this.addSymLoader("component",z.COMPONENT),this.addSymLoader("interface",z.INTERFACE),this.addSymLoader("overlayinterface",z.OVERLAYINTERFACE),this.addSymLoader("fontmetrics",z.FONTMETRICS),this.addSymLoader("category",z.CATEGORY),this.addSymLoader("hunt",z.HUNT),this.addSymLoader("inv",z.INV),this.addSymLoader("idk",z.IDKIT),this.addSymLoader("mesanim",z.MESANIM),this.addSymLoaderWithSupplier("param",(U)=>new u1(U)),this.addSymLoader("seq",z.SEQ),this.addSymLoader("spotanim",z.SPOTANIM),this.types.register("varp",new B0(K.Any)),this.addProtectedSymLoaderWithSupplier("varp",(U)=>new B0(U)),this.addSymLoaderWithSupplier("varn",(U)=>new O0(U)),this.addSymLoaderWithSupplier("vars",(U)=>new m1(U)),this.addSymLoader("stat",z.STAT),this.addSymLoader("locshape",z.LOC_SHAPE),this.addSymLoader("movespeed",z.MOVESPEED),this.addSymLoader("npc_mode",z.NPC_MODE),this.addSymLoader("npc_stat",z.NPC_STAT),this.addSymLoader("model",z.MODEL),this.addSymLoader("synth",z.SYNTH),this.types.register("varbit",new w0(K.Any)),this.addProtectedSymLoaderWithSupplier("varbit",(U)=>new w0(U)),this.addDynamicCommandHandler("weakqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler(".weakqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler("weakqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler(".weakqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler("strongqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler(".strongqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler("strongqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler(".strongqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler("enum",new I5),this.addSymLoader("enum",z.ENUM),this.addDynamicCommandHandler("struct_param",new l0(z.STRUCT)),this.addSymLoader("struct",z.STRUCT),this.types.register("softtimer",new K.Script(D.SOFTTIMER,K.Any,K.Nothing)),this.addDynamicCommandHandler("softtimer",new Y2(this.types.find("softtimer"))),this.addDynamicCommandHandler(".softtimer",new Y2(this.types.find("softtimer"))),this.types.register("dbcolumn",new y0(K.Any)),this.addDynamicCommandHandler("db_find",new R3(!0)),this.addDynamicCommandHandler("db_find_refine",new R3(!0)),this.addDynamicCommandHandler("db_getfield",new z5),this.addSymLoaderWithSupplier("dbcolumn",(U)=>new y0(U)),this.addSymLoader("dbrow",z.DBROW),this.addSymLoader("dbtable",z.DBTABLE),this.addDynamicCommandHandler("dump",new v1),this.addDynamicCommandHandler("script",new _5)}addSymConstantLoaders(){for(let U of this.symbolPaths){let X=L3.join(U,"constant.sym");if(H3.existsSync(X))this.addSymbolLoader(new F5(X))}}addSymLoader(U,X){this.addSymLoaderWithSupplier(U,()=>X)}addSymLoaderWithSupplier(U,X){for(let Y of this.symbolPaths){let G=L3.join(Y,`${U}.sym`);if(H3.existsSync(G))this.addSymbolLoader(new D3(this.mapper,G,X))}}addProtectedSymLoader(U,X){this.addProtectedSymLoaderWithSupplier(U,()=>X)}addProtectedSymLoaderWithSupplier(U,X){for(let Y of this.symbolPaths){let G=L3.join(Y,`${U}.sym`);if(H3.existsSync(G))this.addSymbolLoader(new K3(this.mapper,G,X))}}}import*as B5 from"console";function c8(){let U=a8("neptune.toml"),X=U.sourcePaths.map((I)=>M3(I)),Y=U.symbolPaths.map((I)=>M3(I)),G=U.excludePaths.map((I)=>M3(I)),$=U.checkPointers,{binary:Z}=U.writers,J=new s3,Q;if(Z)Q=new p2(M3(Z.output),J);else B5.error("No writer configured."),C9(1);let F=new Map;s8(Y,J,F,$);let _=new A5(X,G,Q,F,Y,J);_.setup(),_.run("rs2")}function a8(U){if(!K5(U))B5.error(`Unable to locate configuration file: ${U}.`),C9(1);let X=D5(U,"utf-8"),Y=a3(X);return{sourcePaths:Y.sources??[],symbolPaths:Y.symbols??[],excludePaths:Y.excluded??[],checkPointers:Y.check_pointers??!1,writers:{binary:Y.writer?.binary}}}function s8(U,X,Y,G){for(let $ of U){let Z=E9($,"commands.sym");if(K5(Z)){let Q=D5(Z,"utf-8").split(/\r?\n/);for(let F of Q){if(!F.trim())continue;let _=F.split("\t"),I=parseInt(_[0],10),H=_[1];if(G&&_.length>2){let j=_[2]??"",P=_[3]??"",g=P.includes("CONDITIONAL:")?P.split("CONDITIONAL:")[1]:P,G0=_[4]??"",[S1,b2]=j.split(":"),[u2,k3]=g.split(":"),[O3,f9]=G0.split(":"),V9=G2(S1),w5=G2(b2),P9=G2(u2),R5=G2(k3),H5=P!==g,b9=G2(O3),L5=G2(f9);if(Y.set(H,{required:V9,set:P9,conditionalSet:H5,corrupted:b9}),w5.size||R5.size||L5.size)Y.set(`.${H}`,{required:w5,set:R5,conditionalSet:H5,corrupted:L5})}X.putCommand(I,H)}}let J=E9($,"runescript.sym");if(K5(J)){let Q=D5(J,"utf-8").split(/\r?\n/);for(let F of Q){if(!F.trim())continue;let _=F.split("\t"),I=parseInt(_[0],10),H=_[1];X.putScript(I,H)}}}}function G2(U){if(!U||U==="none")return new Set;let X=new Set,Y=U.split(",");for(let G of Y){let $=N.forName(G);if($)X.add($);else throw Error(`Invalid pointer name: ${G}.`)}return X}export{c8 as CompileServerScript};
|
|
29
|
+
`);for(let G of Y){if(!G)continue;let $=G.split("\t");if($.length<2)continue;let Z=Number($[0]),J=$[1],Q=$.length>=3&&$[2]!=="none"?E.fromList($[2].split(",").map((H)=>X.types.find(H)??K.Error)):K.Unit,F=$.length>=4?$[3]==="true":!1,_=this.typeSupplier(Q),I=this.addBasic(U,_,J,F);this.mapper.putSymbol(Z,I)}}}import{readFileSync as y8}from"fs";class D3 extends b1{mapper;path;typeSupplier;constructor(U,X,Y){super();this.mapper=U,this.path=X,this.typeSupplier=Y}static withType(U,X,Y){return new D3(U,X,()=>Y)}load(U,X){let G=y8(this.path,"utf-8").split(/\r?\n/);for(let $ of G){if(!$)continue;let Z=$.split("\t");if(Z.length<2)continue;let J=Number(Z[0]),Q=Z[1],F=Z.length>=3?E.fromList(Z[2].split(",").map((H)=>X.types.find(H)??K.Error)):K.Unit,_=this.typeSupplier(F),I=this.addBasic(U,_,Q);this.mapper.putSymbol(J,I)}}}class z1{queueType;constructor(U){this.queueType=U}typeCheck(U){U.checkArgument(0,this.queueType),U.checkArgument(1,L.INT),U.checkArgument(2,L.INT);let X=[this.queueType,L.INT,L.INT];U.checkArgumentTypes(E.fromList(X)),U.expression.type=K.Unit}}class I1{queueType;constructor(U){this.queueType=U}typeCheck(U){let X=U.checkArgument(0,this.queueType);U.checkArgument(1,L.INT);let Y=[this.queueType,L.INT],G=[],$=X?.type;if($ instanceof K.Script&&$.trigger==this.queueType.trigger&&$.parameterType!=K.Unit)G.push(...E.toList($.parameterType));U.checkArgumentTypes(E.fromList(Y),!0,!1),U.checkArgumentTypes(E.fromList(G),!0,!0),U.expression.type=K.Unit}generateCode(U){let X=U.arguments;U.visitNodes(X);let Y=U.arguments2;if(U.visitNodes(Y),Y.length>0){let G=Y.map(($)=>$.type.code).filter(($)=>$!=null).join("");U.instruction(W.PushConstantString,G)}else U.instruction(W.PushConstantString,"");U.command()}}class B3{queueType;constructor(U){this.queueType=U}typeCheck(U){U.checkArgument(0,this.queueType),U.checkArgument(1,L.INT),U.checkArgument(2,L.INT),U.checkArgument(3,L.INT);let X=[this.queueType,L.INT,L.INT,L.INT];U.checkArgumentTypes(E.fromList(X)),U.expression.type=K.Unit}}class w3{queueType;constructor(U){this.queueType=U}typeCheck(U){let X=U.checkArgument(0,this.queueType);U.checkArgument(1,L.INT),U.checkArgument(2,L.INT);let Y=[this.queueType,L.INT,L.INT],G=[],$=X?.type;if($ instanceof K.Script&&$.trigger==this.queueType.trigger&&$.parameterType!=K.Unit)G.push(...E.toList($.parameterType));U.checkArgumentTypes(E.fromList(Y),!0,!1),U.checkArgumentTypes(E.fromList(G),!0,!0),U.expression.type=K.Unit}generateCode(U){let X=U.arguments;U.visitNodes(X);let Y=U.arguments2;if(U.visitNodes(Y),Y.length>0){let G=Y.map(($)=>$.type.code).filter(($)=>$!=null).join("");U.instruction(W.PushConstantString,G)}else U.instruction(W.PushConstantString,"");U.command()}}class Y2{timerType;constructor(U){this.timerType=U}typeCheck(U){let X=U.checkArgument(0,this.timerType);U.checkArgument(1,L.INT);let Y=X?.type,G=[this.timerType,L.INT];if(Y instanceof K.Script&&Y.trigger==this.timerType.trigger&&Y.parameterType!=K.Unit)G.push(...E.toList(Y.parameterType));U.checkArgumentTypes(E.fromList(G)),U.expression.type=K.Unit}generateCode(U){let X=U.arguments;if(U.visitNodes(X),X.length>2){let Y=X.slice(2).map((G)=>G.type.code).filter((G)=>G!=null).join("");U.instruction(W.PushConstantString,Y)}else U.instruction(W.PushConstantString,"");U.command()}}class u1{inner;representation;code;baseType=0;defaultValue=-1;options;constructor(U){this.inner=U;this.representation=`param<${U.representation}>`,this.options=new y({allowSwitch:!1,allowArray:!1,allowDeclaration:!1})}}class l0{type;constructor(U){this.type=U}typeCheck(U){let X=[];if(this.type!==null)X.push(this.type),U.checkArgument(0,this.type);let Y=this.type===null?0:1,G=U.checkArgument(Y,l0.PARAM_ANY),$=G?.type instanceof u1?G.type.inner:void 0;if(X.push(new u1($??K.Any)),!U.checkArgumentTypes(E.fromList(X))){U.expression.type=K.Error;return}if($==null){U.expression.reportError(U.diagnostics,"Param return type was not able to be found."),U.expression.type=K.Error;return}U.expression.type=$}static PARAM_ANY=new u1(K.Any)}class W5 extends X1{visitBinaryExpression(U){return`${this.visit(U.left)} ${U.operator.text} ${this.visit(U.right)}`}visitCalcExpression(U){return`calc${this.visit(U.expression)}`}visitCommandCallExpression(U){let X="~"+this.visit(U.name);if(U.arguments.length>0)X+="(",X+=U.arguments.map((Y)=>this.visit(Y)).join(""),X+=")";return X}visitLocalVariableExpression(U){return`$${this.visit(U.name)}`}visitGameVariableExpression(U){return`%${this.visit(U.name)}`}visitConstantVariableExpression(U){return`^${this.visit(U.name)}`}visitCharacterLiteral(U){return`'${U.value}'`}visitNullLiteral(U){return"null"}visitStringLiteral(U){return`"${U.value}"`}visitLiteral(U){return String(U.value)}visitJoinedStringExpression(U){let X='"';for(let Y of U.parts)X+=this.visit(Y);return X+='"',X}visitJoinedStringPart(U){if(U instanceof t0)return U.value;if(U instanceof r0)return`<${this.visit(U.expression)}>`;throw Error(`Unsupported StringPart: ${U}`)}visitIdentifier(U){return U.text}visit(U){U.accept(this)}}class v1{typeCheck(U){if(U.arguments.length===0)U.expression.reportError(U.diagnostics,v1.DIAGNOSTIC_INVALID_SIGNATURE);else U.arguments.forEach((X,Y)=>{U.checkArgument(Y,K.Any);let G=X.type;if(G instanceof E)X.reportError(U.diagnostics,v1.DIAGNOSTIC_TUPLE_TYPE,G.representation);else if(G.baseType!==0&&G.baseType!==1)X.reportError(U.diagnostics,v1.DIAGNOSTIC_UNIT_TYPE,G.representation)});U.expression.type=L.STRING}generateCode(U){U.lineInstruction(U.expression);let X=0;U.arguments.forEach((Y,G)=>{let $=Y.accept(v1.EXPRESSION_GENERATOR);if(U.instruction(W.PushConstantString,`${$}=`),X++,U.visitNode(Y),this.typeToString(U,Y.type),G!==U.arguments.length-1)U.instruction(W.PushConstantString,", "),X++}),U.instruction(W.JoinString,X)}typeToString(U,X){let Y;if(X===L.STRING)Y="escape";else if(X.baseType===0)Y="toString";else throw Error(`Unsupported type conversion to string: ${X}`);let G=U.rootTable.find(l.serverScript(A0),Y);if(G)U.instruction(W.Command,G)}static DIAGNOSTIC_INVALID_SIGNATURE="Type mismatch: '<unit>' was given but 'any...' was expected.";static DIAGNOSTIC_TUPLE_TYPE="Unable to dump multi-value types: %s";static DIAGNOSTIC_INVALID_BASE_TYPE="Unable to debug '%s' expressions.";static DIAGNOSTIC_UNIT_TYPE="Unable to debug expression with no return value.";static EXPRESSION_GENERATOR=new W5}class _5{typeCheck(U){U.checkArgumentTypes(K.Unit),U.expression.type=L.STRING}generateCode(U){let X=U.expression.findParentByType(q1);if(!X)throw Error("Script not found.");let Y=`[${X.trigger.text}, ${X.name.text}]`;U.lineInstruction(U.expression),U.instruction(W.PushConstantString,Y)}}class y0{inner;representation;code;baseType=0;defaultValue=-1;options;constructor(U){this.inner=U;this.representation=`dbcolumn<${U.representation}>`,this.options=new y({allowSwitch:!1,allowArray:!1,allowDeclaration:!1})}}class R3{withCount;constructor(U){this.withCount=U}typeCheck(U){let X=U.checkArgument(0,new y0(K.Any)),Y=X?.type?.inner;U.checkArgument(1,Y);let G=new E(new y0(Y??K.Any),Y??K.Any);if(Y instanceof E)X.reportError(U.diagnostics,"Tuple columns are not supported.");else U.checkArgumentTypes(G);U.expression.type=this.withCount?L.INT:K.Unit}generateCode(U){let Y=U.arguments[0].type.inner.baseType,G=(()=>{switch(Y){case 0:return 0;case 2:return 1;case 1:return 2;default:throw Error(`Unsupported base type: ${Y}.`)}})();U.visitNodes(U.arguments),U.instruction(W.PushConstantInt,G),U.command()}}class z5{typeCheck(U){U.checkArgument(0,z.DBROW);let X=U.checkArgument(1,new y0(K.Any));U.checkArgument(2,L.INT);let Y=X?.type?.inner,G=new E(z.DBROW,new y0(Y??K.Any),L.INT);if(!U.checkArgumentTypes(G)){U.expression.type=K.Error;return}if(X==null){(X??U.expression).reportError(U.diagnostics,"Unable to extract type from argument."),U.expression.type=K.Error;return}U.expression.type=Y}}class I5{typeCheck(U){let X=U.checkTypeArgument(0),Y=U.checkTypeArgument(1);U.checkArgument(2,z.ENUM);let G=X?.type instanceof K.Type?X.type.inner:void 0,$=Y?.type instanceof K.Type?Y.type.inner:void 0;U.checkArgument(3,G);let Z=new E(new K.Type(G??K.Any),new K.Type($??K.Any),z.ENUM,G??K.Any);U.checkArgumentTypes(Z),U.expression.type=$??K.Error}}class A5 extends A3{symbolPaths;mapper;constructor(U,X,Y,G,$,Z){super(U,X,Y,G);this.symbolPaths=$,this.mapper=Z}setup(){this.triggers.registerAll(D),this.types.registerAll(z),this.types.changeOptions("long",(U)=>{U.allowDeclaration=!1}),this.types.register("proc",new K.Script(D.PROC,K.Unit,K.Unit)),this.types.register("label",new K.Script(D.LABEL,K.Unit,K.Nothing)),this.types.addTypeChecker((U,X)=>U===z.OBJ&&X===z.NAMEDOBJ),this.addSymConstantLoaders(),this.types.register("walktrigger",new K.Script(D.WALKTRIGGER,K.Any,K.Nothing)),this.types.register("ai_walktrigger",new K.Script(D.AI_WALKTRIGGER,K.Any,K.Nothing)),this.types.register("queue",new K.Script(D.QUEUE,K.Any,K.Nothing)),this.addDynamicCommandHandler("queue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler(".queue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler("queue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler(".queue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler("longqueue",new B3(this.types.find("queue"))),this.addDynamicCommandHandler(".longqueue",new B3(this.types.find("queue"))),this.addDynamicCommandHandler("longqueue*",new w3(this.types.find("queue"))),this.addDynamicCommandHandler(".longqueue*",new w3(this.types.find("queue"))),this.types.register("timer",new K.Script(D.TIMER,K.Any,K.Nothing)),this.addDynamicCommandHandler("settimer",new Y2(this.types.find("timer"))),this.addDynamicCommandHandler(".settimer",new Y2(this.types.find("timer"))),this.addDynamicCommandHandler("lc_param",new l0(z.LOC)),this.addDynamicCommandHandler("loc_param",new l0(null)),this.addSymLoader("loc",z.LOC),this.addDynamicCommandHandler("nc_param",new l0(z.NPC)),this.addDynamicCommandHandler("npc_param",new l0(null)),this.addSymLoader("npc",z.NPC),this.addDynamicCommandHandler("oc_param",new l0(z.OBJ)),this.addDynamicCommandHandler("obj_param",new l0(null)),this.addSymLoader("obj",z.NAMEDOBJ),this.addSymLoader("component",z.COMPONENT),this.addSymLoader("interface",z.INTERFACE),this.addSymLoader("overlayinterface",z.OVERLAYINTERFACE),this.addSymLoader("fontmetrics",z.FONTMETRICS),this.addSymLoader("category",z.CATEGORY),this.addSymLoader("hunt",z.HUNT),this.addSymLoader("inv",z.INV),this.addSymLoader("idk",z.IDKIT),this.addSymLoader("mesanim",z.MESANIM),this.addSymLoaderWithSupplier("param",(U)=>new u1(U)),this.addSymLoader("seq",z.SEQ),this.addSymLoader("spotanim",z.SPOTANIM),this.types.register("varp",new B0(K.Any)),this.addProtectedSymLoaderWithSupplier("varp",(U)=>new B0(U)),this.addSymLoaderWithSupplier("varn",(U)=>new O0(U)),this.addSymLoaderWithSupplier("vars",(U)=>new m1(U)),this.addSymLoader("stat",z.STAT),this.addSymLoader("locshape",z.LOC_SHAPE),this.addSymLoader("movespeed",z.MOVESPEED),this.addSymLoader("npc_mode",z.NPC_MODE),this.addSymLoader("npc_stat",z.NPC_STAT),this.addSymLoader("model",z.MODEL),this.addSymLoader("synth",z.SYNTH),this.types.register("varbit",new w0(K.Any)),this.addProtectedSymLoaderWithSupplier("varbit",(U)=>new w0(U)),this.addDynamicCommandHandler("weakqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler(".weakqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler("weakqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler(".weakqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler("strongqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler(".strongqueue",new z1(this.types.find("queue"))),this.addDynamicCommandHandler("strongqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler(".strongqueue*",new I1(this.types.find("queue"))),this.addDynamicCommandHandler("enum",new I5),this.addSymLoader("enum",z.ENUM),this.addDynamicCommandHandler("struct_param",new l0(z.STRUCT)),this.addSymLoader("struct",z.STRUCT),this.types.register("softtimer",new K.Script(D.SOFTTIMER,K.Any,K.Nothing)),this.addDynamicCommandHandler("softtimer",new Y2(this.types.find("softtimer"))),this.addDynamicCommandHandler(".softtimer",new Y2(this.types.find("softtimer"))),this.types.register("dbcolumn",new y0(K.Any)),this.addDynamicCommandHandler("db_find",new R3(!0)),this.addDynamicCommandHandler("db_find_refine",new R3(!0)),this.addDynamicCommandHandler("db_getfield",new z5),this.addSymLoaderWithSupplier("dbcolumn",(U)=>new y0(U)),this.addSymLoader("dbrow",z.DBROW),this.addSymLoader("dbtable",z.DBTABLE),this.addDynamicCommandHandler("dump",new v1),this.addDynamicCommandHandler("script",new _5)}addSymConstantLoaders(){for(let U of this.symbolPaths){let X=L3.join(U,"constant.sym");if(H3.existsSync(X))this.addSymbolLoader(new F5(X))}}addSymLoader(U,X){this.addSymLoaderWithSupplier(U,()=>X)}addSymLoaderWithSupplier(U,X){for(let Y of this.symbolPaths){let G=L3.join(Y,`${U}.sym`);if(H3.existsSync(G))this.addSymbolLoader(new D3(this.mapper,G,X))}}addProtectedSymLoader(U,X){this.addProtectedSymLoaderWithSupplier(U,()=>X)}addProtectedSymLoaderWithSupplier(U,X){for(let Y of this.symbolPaths){let G=L3.join(Y,`${U}.sym`);if(H3.existsSync(G))this.addSymbolLoader(new K3(this.mapper,G,X))}}}import*as B5 from"console";function c8(){let U=a8("neptune.toml"),X=U.sourcePaths.map((I)=>M3(I)),Y=U.symbolPaths.map((I)=>M3(I)),G=U.excludePaths.map((I)=>M3(I)),$=U.checkPointers,{binary:Z}=U.writers,J=new s3,Q;if(Z)Q=new p2(M3(Z.output),J);else B5.error("No writer configured."),C9(1);let F=new Map;s8(Y,J,F,$);let _=new A5(X,G,Q,F,Y,J);_.setup(),_.run("rs2")}function a8(U){if(!K5(U))B5.error(`Unable to locate configuration file: ${U}.`),C9(1);let X=D5(U,"utf-8"),Y=a3(X);return{sourcePaths:Y.sources??[],symbolPaths:Y.symbols??[],excludePaths:Y.excluded??[],checkPointers:Y.check_pointers??!1,writers:{binary:Y.writer?.binary}}}function s8(U,X,Y,G){for(let $ of U){let Z=E9($,"commands.sym");if(K5(Z)){let Q=D5(Z,"utf-8").split(/\r?\n/);for(let F of Q){if(!F.trim())continue;let _=F.split("\t"),I=parseInt(_[0],10),H=_[1];if(G&&_.length>2){let j=_[2]??"",P=_[3]??"",g=P.includes("CONDITIONAL:")?P.split("CONDITIONAL:")[1]:P,G0=_[4]??"",[S1,b2]=j.split(":"),[u2,k3]=g.split(":"),[O3,f9]=G0.split(":"),V9=G2(S1),w5=G2(b2),P9=G2(u2),R5=G2(k3),H5=P!==g,b9=G2(O3),L5=G2(f9);if(Y.set(H,{required:V9,set:P9,conditionalSet:H5,corrupted:b9}),w5.size||R5.size||L5.size)Y.set(`.${H}`,{required:w5,set:R5,conditionalSet:H5,corrupted:L5})}X.putCommand(I,H)}}let J=E9($,"runescript.sym");if(K5(J)){let Q=D5(J,"utf-8").split(/\r?\n/);for(let F of Q){if(!F.trim())continue;let _=F.split("\t"),I=parseInt(_[0],10),H=_[1];X.putScript(I,H)}}}}function G2(U){if(!U||U==="none")return new Set;let X=new Set,Y=U.split(",");for(let G of Y){let $=N.forName(G);if($)X.add($);else throw Error(`Invalid pointer name: ${G}.`)}return X}export{c8 as CompileServerScript};
|