!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("binaryen")):"function"==typeof define&&define.amd?define(["binaryen"],t):"object"==typeof exports?exports.assemblyscript=t(require("binaryen")):e.assemblyscript=t(e.binaryen)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=21)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,i=r(10),a=r(9),o=r(10);function s(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return""}}t.DiagnosticCode=o.DiagnosticCode,t.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=s;var c="",p="",u="",l="";function h(e){switch(e){case n.INFO:return c;case n.WARNING:return p;case n.ERROR:return u;default:return""}}t.diagnosticCategoryToColor=h;var d=function(){function e(e,t,r){this.range=null,this.code=e,this.category=t,this.message=r}return e.create=function(t,r,n,a,o){void 0===n&&(n=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(t);return null!=n&&(s=s.replace("{0}",n)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(t,r,s)},e.createInfo=function(t,r,i){return void 0===r&&(r=null),void 0===i&&(i=null),e.create(t,n.INFO,r,i)},e.createWarning=function(t,r,i){return void 0===r&&(r=null),void 0===i&&(i=null),e.create(t,n.WARNING,r,i)},e.createError=function(t,r,i){return void 0===r&&(r=null),void 0===i&&(i=null),e.create(t,n.ERROR,r,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+" @ "+this.range.start.toString(10)+","+this.range.end.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,t){void 0===t&&(t=!1);for(var r=e.source.text,n=r.length,i=e.start,o=e.end;i>0&&!a.isLineBreak(r.charCodeAt(i-1));)i--;for(;o=0;--a)free_memory(i[a])}},e.prototype.createCall=function(e,t,r){var n=l(e),i=u(t);try{return _BinaryenCall(this.ref,n,i,t&&t.length||0,r)}finally{free_memory(i),free_memory(n)}},e.prototype.createCallImport=function(e,t,r){var n=l(e),i=u(t);try{return _BinaryenCallImport(this.ref,n,i,t&&t.length||0,r)}finally{free_memory(i),free_memory(n)}},e.prototype.createCallIndirect=function(e,t,r){var n=u(t),i=l(r);try{return _BinaryenCallIndirect(this.ref,e,n,t&&t.length||0,i)}finally{free_memory(i),free_memory(n)}},e.prototype.createUnreachable=function(){return _BinaryenUnreachable(this.ref)},e.prototype.addGlobal=function(e,t,r,n){var i=l(e);try{return _BinaryenAddGlobal(this.ref,i,t,r?1:0,n)}finally{free_memory(i)}},e.prototype.addFunction=function(e,t,r,n){var i=l(e),a=u(r);try{return _BinaryenAddFunction(this.ref,i,t,a,r?r.length:0,n)}finally{free_memory(a),free_memory(i)}},e.prototype.removeFunction=function(e){var t=l(e);try{_BinaryenRemoveFunction(this.ref,t)}finally{free_memory(t)}},e.prototype.addFunctionExport=function(e,t){var r=l(e),n=l(t);try{return _BinaryenAddFunctionExport(this.ref,r,n)}finally{free_memory(n),free_memory(r)}},e.prototype.addTableExport=function(e,t){var r=l(e),n=l(t);try{return _BinaryenAddTableExport(this.ref,r,n)}finally{free_memory(n),free_memory(r)}},e.prototype.addMemoryExport=function(e,t){var r=l(e),n=l(t);try{return _BinaryenAddMemoryExport(this.ref,r,n)}finally{free_memory(n),free_memory(r)}},e.prototype.addGlobalExport=function(e,t){var r=l(e),n=l(t);try{return _BinaryenAddGlobalExport(this.ref,r,n)}finally{free_memory(n),free_memory(r)}},e.prototype.removeExport=function(e){var t=l(e);try{_BinaryenRemoveExport(this.ref,t)}finally{free_memory(t)}},e.prototype.addFunctionImport=function(e,t,r,n){var i=l(e),a=l(t),o=l(r);try{return _BinaryenAddFunctionImport(this.ref,i,a,o,n)}finally{free_memory(o),free_memory(a),free_memory(i)}},e.prototype.addTableImport=function(e,t,r){var n=l(e),i=l(t),a=l(r);try{return _BinaryenAddTableImport(this.ref,n,i,a)}finally{free_memory(a),free_memory(i),free_memory(n)}},e.prototype.addMemoryImport=function(e,t,r){var n=l(e),i=l(t),a=l(r);try{return _BinaryenAddMemoryImport(this.ref,n,i,a)}finally{free_memory(a),free_memory(i),free_memory(n)}},e.prototype.addGlobalImport=function(e,t,r,n){var i=l(e),a=l(t),o=l(r);try{return _BinaryenAddGlobalImport(this.ref,i,a,o,n)}finally{free_memory(o),free_memory(a),free_memory(i)}},e.prototype.removeImport=function(e){var t=l(e);try{_BinaryenRemoveImport(this.ref,t)}finally{free_memory(t)}},e.prototype.setMemory=function(e,t,r,n,i){void 0===i&&(i=null);for(var o=l(i),s=r.length,c=new Array(s),h=new Array(s),d=new Array(s),_=0;_=0;--_)free_memory(c[_]);free_memory(o)}},e.prototype.setFunctionTable=function(e){var t=u(e);try{_BinaryenSetFunctionTable(this.ref,t,e.length)}finally{free_memory(t)}},e.prototype.setStart=function(e){_BinaryenSetStart(this.ref,e)},e.prototype.setOptimizeLevel=function(e){void 0===e&&(e=2),_BinaryenSetOptimizeLevel(e)},e.prototype.setShrinkLevel=function(e){void 0===e&&(e=1),_BinaryenSetShrinkLevel(e)},e.prototype.setDebugInfo=function(e){void 0===e&&(e=!1),_BinaryenSetDebugInfo(e)},e.prototype.optimize=function(e){void 0===e&&(e=0),e?_BinaryenFunctionOptimize(e,this.ref):_BinaryenModuleOptimize(this.ref)},e.prototype.runPasses=function(e,t){void 0===t&&(t=0);for(var r=e.length,n=new Array(r),i=0;i=0;--i)free_memory(n[i])}},e.prototype.validate=function(){return 1==_BinaryenModuleValidate(this.ref)},e.prototype.interpret=function(){_BinaryenModuleInterpret(this.ref)},e.prototype.toBinary=function(e){var t=this.out,r=l(e),n=0,i=0;try{_BinaryenModuleAllocateAndWrite(t,this.ref,r),n=h(t);var a=h(t+4);i=h(t+8);var o=new y;return o.output=d(n,a),o.sourceMap=_(i),o}finally{r&&free_memory(r),n&&free_memory(n),i&&free_memory(i)}},e.prototype.toText=function(){throw new Error("not implemented")},e.prototype.toAsmjs=function(){throw new Error("not implemented")},e.prototype.dispose=function(){this.ref&&(_BinaryenModuleDispose(this.ref),free_memory(this.out))},e.prototype.createRelooper=function(){return c.create(this)},e.prototype.cloneExpression=function(e,t,r){if(void 0===t&&(t=!1),void 0===r&&(r=i32.MAX_VALUE),r<0)return 0;var a,o;switch(r-=1,_BinaryenExpressionGetId(e)){case i.Const:switch(_BinaryenExpressionGetType(e)){case n.I32:return this.createI32(_BinaryenConstGetValueI32(e));case n.I64:return this.createI64(_BinaryenConstGetValueI64Low(e),_BinaryenConstGetValueI64High(e));case n.F32:return this.createF32(_BinaryenConstGetValueF32(e));case n.F64:return this.createF64(_BinaryenConstGetValueF64(e));default:throw new Error("concrete type expected")}case i.GetLocal:return _BinaryenGetLocal(this.ref,_BinaryenGetLocalGetIndex(e),_BinaryenExpressionGetType(e));case i.GetGlobal:var s=_BinaryenGetGlobalGetName(e);if(!s)break;return _BinaryenGetGlobal(this.ref,s,_BinaryenExpressionGetType(e));case i.Load:if(!(a=this.cloneExpression(_BinaryenLoadGetPtr(e),t,r)))break;return _BinaryenLoadIsAtomic(e)?_BinaryenAtomicLoad(this.ref,_BinaryenLoadGetBytes(e),_BinaryenLoadGetOffset(e),_BinaryenExpressionGetType(e),a):_BinaryenLoad(this.ref,_BinaryenLoadGetBytes(e),_BinaryenLoadIsSigned(e)?1:0,_BinaryenLoadGetOffset(e),_BinaryenLoadGetAlign(e),_BinaryenExpressionGetType(e),a);case i.Unary:if(!(a=this.cloneExpression(_BinaryenUnaryGetValue(e),t,r)))break;return _BinaryenUnary(this.ref,_BinaryenUnaryGetOp(e),a);case i.Binary:if(!(a=this.cloneExpression(_BinaryenBinaryGetLeft(e),t,r)))break;if(!(o=this.cloneExpression(_BinaryenBinaryGetRight(e),t,r)))break;return _BinaryenBinary(this.ref,_BinaryenBinaryGetOp(e),a,o)}return 0},e.prototype.addDebugInfoFile=function(e){var t=l(e);try{return _BinaryenModuleAddDebugInfoFileName(this.ref,t)}finally{free_memory(t)}},e.prototype.getDebugInfoFile=function(e){return _(_BinaryenModuleGetDebugInfoFileName(this.ref,e))},e.prototype.setDebugLocation=function(e,t,r,n,i){_BinaryenFunctionSetDebugLocation(e,t,r,n,i)},e.MAX_MEMORY_WASM32=65535,e}();t.Module=s;var c=function(){function e(){}return e.create=function(t){var r=new e;return r.module=t,r.ref=_RelooperCreate(),r},e.createStub=function(t){var r=new e;return r.module=t,r.ref=0,r},e.prototype.addBlock=function(e){return _RelooperAddBlock(this.ref,e)},e.prototype.addBranch=function(e,t,r,n){void 0===r&&(r=0),void 0===n&&(n=0),_RelooperAddBranch(e,t,r,n)},e.prototype.addBlockWithSwitch=function(e,t){return _RelooperAddBlockWithSwitch(this.ref,e,t)},e.prototype.addBranchForSwitch=function(e,t,r,n){void 0===n&&(n=0);var i=u(r);try{_RelooperAddBranchForSwitch(e,t,i,r.length,n)}finally{free_memory(i)}},e.prototype.renderAndDispose=function(e,t){return _RelooperRenderAndDispose(this.ref,e,t,this.module.ref)},e}();function p(e){if(!e)return 0;for(var t=allocate_memory(e.length),r=t,n=0,i=e.length;n>8&255),store(r+2,a>>16&255),store(r+3,a>>>24),r+=4}return t}function l(e){if(null==e)return 0;for(var t=allocate_memory(function(e){for(var t=0,r=0,n=e.length;r=55296&&i<=57343&&r+1=55296&&a<=57343&&n+1>>6),store(r++,128|63&a)):a<=65535?(store(r++,224|a>>>12),store(r++,128|a>>>6&63),store(r++,128|63&a)):a<=2097151?(store(r++,240|a>>>18),store(r++,128|a>>>12&63),store(r++,128|a>>>6&63),store(r++,128|63&a)):a<=67108863?(store(r++,248|a>>>24),store(r++,128|a>>>18&63),store(r++,128|a>>>12&63),store(r++,128|a>>>6&63),store(r++,128|63&a)):(store(r++,252|a>>>30),store(r++,128|a>>>24&63),store(r++,128|a>>>18&63),store(r++,128|a>>>12&63),store(r++,128|a>>>6&63),store(r++,128|63&a))}return store(r,0),t}function h(e){return load(e)|load(e+1)<<8|load(e+2)<<16|load(e+3)<<24}function d(e,t){for(var r=new Uint8Array(t),n=0;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}},o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,a=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)o.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(t,"__esModule",{value:!0});var s=r(0),c=r(5),p=r(4),u=r(1);t.PATH_DELIMITER="/",t.PARENT_SUBST="..",t.GETTER_PREFIX="get:",t.SETTER_PREFIX="set:",t.INSTANCE_DELIMITER="#",t.STATIC_DELIMITER=".",t.LIBRARY_SUBST="(lib)",t.LIBRARY_PREFIX=t.LIBRARY_SUBST+t.PATH_DELIMITER;var l=function(){return function(){}}(),h=function(){return function(){}}(),d=function(){return function(){}}(),_=new Map,y=function(e){function r(t){void 0===t&&(t=null);var r=e.call(this,t)||this;return r.diagnosticsOffset=0,r.elements=new Map,r.types=_,r.typeAliases=new Map,r.exports=new Map,r.sources=[],r}return i(r,e),r.prototype.initialize=function(e){this.options=e,this.types=new Map([["i8",c.Type.i8],["i16",c.Type.i16],["i32",c.Type.i32],["i64",c.Type.i64],["isize",e.isizeType],["u8",c.Type.u8],["u16",c.Type.u16],["u32",c.Type.u32],["u64",c.Type.u64],["usize",e.usizeType],["bool",c.Type.bool],["f32",c.Type.f32],["f64",c.Type.f64],["void",c.Type.void],["number",c.Type.f64],["boolean",c.Type.bool]]);for(var t,r,n=new Map,i=new Array,u=new Array,l=0,h=this.sources.length;l",l+="<"+A+">")}else if(r){var I=r.get(l);if(I)return I}}return(_=this.types.get(h))||(_=this.types.get(l))?_:(n&&this.error(s.DiagnosticCode.Cannot_find_name_0,o.name.range,l),null)},r.prototype.resolveTypeArguments=function(e,t,r,n){void 0===r&&(r=null),void 0===n&&(n=null);var i=e.length,a=t?t.length:0;if(i!=a)return a?this.error(s.DiagnosticCode.Expected_0_type_arguments_but_got_1,p.Range.join(t[0].range,t[a-1].range),i.toString(10),a.toString(10)):n&&this.error(s.DiagnosticCode.Expected_0_type_arguments_but_got_1,n.range.atEnd,i.toString(10),"0"),null;for(var o=new Array(i),c=0;c"),(n=new x(this,G,w,N)).contextualTypeArguments=t,this.instances.set(r,n),n},t.prototype.resolvePartial=function(e){if(!this.classPrototype)throw new Error("partially resolved instance method must reference its class prototype");if(e&&e.length){var r=new t(this.program,this.simpleName,this.internalName,this.declaration,this.classPrototype);return r.flags=this.flags,r.classTypeArguments=e,r}return this},t.prototype.resolveUsingTypeArguments=function(e,t,r){var n=null;return!this.is(g.GENERIC)||(assert(null!=e&&0!=e.length),n=this.program.resolveTypeArguments(assert(this.declaration.typeParameters),e,t,r))?this.resolve(n,t):null},t.prototype.resolveBuiltinTypeArguments=function(e,t){assert(this.is(g.BUILTIN));var r=null;if(e){var n=e.length;r=new Array(n);for(var i=0;i0)return t[t.length-1];var r=this.addLocal(e);return t.push(r),r},t.prototype.enterBreakContext=function(){var e=this.nextBreakId++;return this.breakStack?this.breakStack.push(e):this.breakStack=[e],this.breakContext=e.toString(10)},t.prototype.leaveBreakContext=function(){assert(null!=this.breakStack);var e=this.breakStack.length;assert(e>0),this.breakStack.pop(),e>1?this.breakContext=this.breakStack[e-2].toString(10):(this.breakContext=null,this.breakStack=null)},t.prototype.finalize=function(e,t){if(this.ref=t,assert(!this.breakStack||!this.breakStack.length),this.breakStack=null,this.breakContext=null,this.tempI32s=this.tempI64s=this.tempF32s=this.tempF64s=null,this.program.options.sourceMap){var r=this.debugLocations;if(r)for(var n=0,i=r.length;n"),(n=new U(this,A,e,E)).contextualTypeArguments=t,this.instances.set(r,n);var I,v,N,S,C,b,O=0;if(E&&(O=E.currentMemoryOffset,E.members)){n.members||(n.members=new Map);try{for(var x=a(E.members.values()),k=x.next();!k.done;k=x.next()){var B=k.value;n.members.set(B.simpleName,B)}}catch(e){N={error:e}}finally{try{k&&!k.done&&(S=x.return)&&S.call(x)}finally{if(N)throw N.error}}}if(this.constructorPrototype){var D=this.constructorPrototype.resolvePartial(e);D&&(n.constructorInstance=D.resolve())}if(this.instanceMembers)try{for(var F=a(this.instanceMembers.values()),w=F.next();!w.done;w=F.next()){var P=w.value;switch(P.kind){case f.FIELD_PROTOTYPE:n.members||(n.members=new Map);var M=P.declaration;if(!M.type)throw new Error("type expected");var G=this.program.resolveType(M.type,n.contextualTypeArguments);if(G){var K=new L(P,P.internalName,G);switch(G.byteSize){case 1:break;case 2:1&O&&++O;break;case 4:3&O&&(O=1+(3|O));break;case 8:7&O&&(O=1+(7|O));break;default:assert(!1)}K.memoryOffset=O,O+=G.byteSize,n.members.set(P.simpleName,K)}break;case f.FUNCTION_PROTOTYPE:n.members||(n.members=new Map);var z=P.resolvePartial(e);z&&n.members.set(P.simpleName,z);break;case f.PROPERTY:n.members||(n.members=new Map),assert(P.getterPrototype);var H=new R(this.program,P.simpleName,P.internalName,this);H.getterPrototype=P.getterPrototype.resolvePartial(e),P.setterPrototype&&(H.setterPrototype=P.setterPrototype.resolvePartial(e)),n.members.set(P.simpleName,H);break;default:throw new Error("instance member expected")}}}catch(e){C={error:e}}finally{try{w&&!w.done&&(b=F.return)&&b.call(F)}finally{if(C)throw C.error}}return n.currentMemoryOffset=O,n},t.prototype.resolveUsingTypeArguments=function(e,t,r){var n=null;if(this.is(g.GENERIC)){if(assert(null!=e&&0!=e.length),!(n=this.program.resolveTypeArguments(this.declaration.typeParameters,e,t,r)))return null}else assert(null==e||!e.length);return this.resolve(n,t)},t.prototype.toString=function(){return this.simpleName},t}(T);t.ClassPrototype=B;var U=function(e){function t(t,r,n,i){void 0===n&&(n=null),void 0===i&&(i=null);var s=e.call(this,t.program,t.simpleName,r)||this;if(s.kind=f.CLASS,s.contextualTypeArguments=null,s.currentMemoryOffset=0,s.constructorInstance=null,s.prototype=t,s.flags=t.flags,s.typeArguments=n,s.type=t.program.options.usizeType.asClass(s),s.base=i,i&&i.contextualTypeArguments){s.contextualTypeArguments||(s.contextualTypeArguments=new Map);try{for(var c=a(i.contextualTypeArguments),p=c.next();!p.done;p=c.next()){var u=o(p.value,2),l=u[0],h=u[1];s.contextualTypeArguments.set(l,h)}}catch(e){y={error:e}}finally{try{p&&!p.done&&(m=c.return)&&m.call(c)}finally{if(y)throw y.error}}}var d,_,y,m,g=s.prototype.declaration;if(g){var E=g.typeParameters;if(n){if((_=n.length)!=E.length)throw new Error("type argument count mismatch");if(_)for(s.contextualTypeArguments||(s.contextualTypeArguments=new Map),d=0;d<_;++d)s.contextualTypeArguments.set(E[d].name.text,n[d])}else if(E.length)throw new Error("type argument count mismatch")}return s}return i(t,e),t.prototype.isAssignableTo=function(e){var t=this;do{if(t==e)return!0}while(t=t.base);return!1},t.prototype.toString=function(){return this.prototype.simpleName},t}(T);t.Class=U;var D=function(e){function t(t,r,n,i){var a=e.call(this,t,r,n,i)||this;return a.kind=f.INTERFACE_PROTOTYPE,a}return i(t,e),t}(B);t.InterfacePrototype=D;var F=function(e){function t(t,r,n,i){void 0===n&&(n=[]),void 0===i&&(i=null);var a=e.call(this,t,r,n,i)||this;return a.kind=f.INTERFACE,a}return i(t,e),t}(U);t.Interface=F,function(e){e[e.NONE=0]="NONE",e[e.RETURNS=1]="RETURNS",e[e.POSSIBLY_THROWS=2]="POSSIBLY_THROWS",e[e.POSSIBLY_BREAKS=4]="POSSIBLY_BREAKS",e[e.POSSIBLY_CONTINUES=8]="POSSIBLY_CONTINUES"}(t.FlowFlags||(t.FlowFlags={}));var w=function(){function e(){this.scopedLocals=null}return e.create=function(t){var r=new e;return r.parent=null,r.flags=0,r.currentFunction=t,r.continueLabel=null,r.breakLabel=null,r},e.prototype.is=function(e){return(this.flags&e)==e},e.prototype.set=function(e){this.flags|=e},e.prototype.enterBranchOrScope=function(){var t=new e;return t.parent=this,t.flags=this.flags,t.currentFunction=this.currentFunction,t.continueLabel=this.continueLabel,t.breakLabel=this.breakLabel,t},e.prototype.leaveBranchOrScope=function(){var e,t,r=assert(this.parent);if(this.scopedLocals){try{for(var n=a(this.scopedLocals.values()),i=n.next();!i.done;i=n.next()){var o=i.value;this.currentFunction.freeTempLocal(o)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}this.scopedLocals=null}return this.is(2)&&r.set(2),this.is(4)&&r.breakLabel==this.breakLabel&&r.set(4),this.is(8)&&r.continueLabel==this.continueLabel&&r.set(8),r},e.prototype.addScopedLocal=function(e,t,r){var n=this.currentFunction.getTempLocal(t);if(this.scopedLocals){if(this.scopedLocals.has(e))return void this.currentFunction.program.error(s.DiagnosticCode.Duplicate_identifier_0,r.range)}else this.scopedLocals=new Map;this.scopedLocals.set(e,n)},e.prototype.getScopedLocal=function(e){var t,r=this;do{if(r.scopedLocals&&(t=r.scopedLocals.get(e)))return t}while(r=r.parent);return this.currentFunction.locals.get(e)},e.prototype.finalize=function(){return assert(null==this.parent,"must be the topmost parent flow"),this.continueLabel=null,this.breakLabel=null,this.is(1)},e}();t.Flow=w},function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0});var a,o=r(0),s=r(9);!function(e){e[e.ABSTRACT=0]="ABSTRACT",e[e.AS=1]="AS",e[e.ASYNC=2]="ASYNC",e[e.AWAIT=3]="AWAIT",e[e.BREAK=4]="BREAK",e[e.CASE=5]="CASE",e[e.CATCH=6]="CATCH",e[e.CLASS=7]="CLASS",e[e.CONST=8]="CONST",e[e.CONTINUE=9]="CONTINUE",e[e.CONSTRUCTOR=10]="CONSTRUCTOR",e[e.DEBUGGER=11]="DEBUGGER",e[e.DECLARE=12]="DECLARE",e[e.DEFAULT=13]="DEFAULT",e[e.DELETE=14]="DELETE",e[e.DO=15]="DO",e[e.ELSE=16]="ELSE",e[e.ENUM=17]="ENUM",e[e.EXPORT=18]="EXPORT",e[e.EXTENDS=19]="EXTENDS",e[e.FALSE=20]="FALSE",e[e.FINALLY=21]="FINALLY",e[e.FOR=22]="FOR",e[e.FROM=23]="FROM",e[e.FUNCTION=24]="FUNCTION",e[e.GET=25]="GET",e[e.IF=26]="IF",e[e.IMPLEMENTS=27]="IMPLEMENTS",e[e.IMPORT=28]="IMPORT",e[e.IN=29]="IN",e[e.INSTANCEOF=30]="INSTANCEOF",e[e.INTERFACE=31]="INTERFACE",e[e.IS=32]="IS",e[e.KEYOF=33]="KEYOF",e[e.LET=34]="LET",e[e.MODULE=35]="MODULE",e[e.NAMESPACE=36]="NAMESPACE",e[e.NEW=37]="NEW",e[e.NULL=38]="NULL",e[e.OF=39]="OF",e[e.PACKAGE=40]="PACKAGE",e[e.PRIVATE=41]="PRIVATE",e[e.PROTECTED=42]="PROTECTED",e[e.PUBLIC=43]="PUBLIC",e[e.READONLY=44]="READONLY",e[e.RETURN=45]="RETURN",e[e.SET=46]="SET",e[e.STATIC=47]="STATIC",e[e.SUPER=48]="SUPER",e[e.SWITCH=49]="SWITCH",e[e.THIS=50]="THIS",e[e.THROW=51]="THROW",e[e.TRUE=52]="TRUE",e[e.TRY=53]="TRY",e[e.TYPE=54]="TYPE",e[e.TYPEOF=55]="TYPEOF",e[e.VAR=56]="VAR",e[e.VOID=57]="VOID",e[e.WHILE=58]="WHILE",e[e.WITH=59]="WITH",e[e.YIELD=60]="YIELD",e[e.OPENBRACE=61]="OPENBRACE",e[e.CLOSEBRACE=62]="CLOSEBRACE",e[e.OPENPAREN=63]="OPENPAREN",e[e.CLOSEPAREN=64]="CLOSEPAREN",e[e.OPENBRACKET=65]="OPENBRACKET",e[e.CLOSEBRACKET=66]="CLOSEBRACKET",e[e.DOT=67]="DOT",e[e.DOT_DOT_DOT=68]="DOT_DOT_DOT",e[e.SEMICOLON=69]="SEMICOLON",e[e.COMMA=70]="COMMA",e[e.LESSTHAN=71]="LESSTHAN",e[e.GREATERTHAN=72]="GREATERTHAN",e[e.LESSTHAN_EQUALS=73]="LESSTHAN_EQUALS",e[e.GREATERTHAN_EQUALS=74]="GREATERTHAN_EQUALS",e[e.EQUALS_EQUALS=75]="EQUALS_EQUALS",e[e.EXCLAMATION_EQUALS=76]="EXCLAMATION_EQUALS",e[e.EQUALS_EQUALS_EQUALS=77]="EQUALS_EQUALS_EQUALS",e[e.EXCLAMATION_EQUALS_EQUALS=78]="EXCLAMATION_EQUALS_EQUALS",e[e.EQUALS_GREATERTHAN=79]="EQUALS_GREATERTHAN",e[e.PLUS=80]="PLUS",e[e.MINUS=81]="MINUS",e[e.ASTERISK_ASTERISK=82]="ASTERISK_ASTERISK",e[e.ASTERISK=83]="ASTERISK",e[e.SLASH=84]="SLASH",e[e.PERCENT=85]="PERCENT",e[e.PLUS_PLUS=86]="PLUS_PLUS",e[e.MINUS_MINUS=87]="MINUS_MINUS",e[e.LESSTHAN_LESSTHAN=88]="LESSTHAN_LESSTHAN",e[e.GREATERTHAN_GREATERTHAN=89]="GREATERTHAN_GREATERTHAN",e[e.GREATERTHAN_GREATERTHAN_GREATERTHAN=90]="GREATERTHAN_GREATERTHAN_GREATERTHAN",e[e.AMPERSAND=91]="AMPERSAND",e[e.BAR=92]="BAR",e[e.CARET=93]="CARET",e[e.EXCLAMATION=94]="EXCLAMATION",e[e.TILDE=95]="TILDE",e[e.AMPERSAND_AMPERSAND=96]="AMPERSAND_AMPERSAND",e[e.BAR_BAR=97]="BAR_BAR",e[e.QUESTION=98]="QUESTION",e[e.COLON=99]="COLON",e[e.EQUALS=100]="EQUALS",e[e.PLUS_EQUALS=101]="PLUS_EQUALS",e[e.MINUS_EQUALS=102]="MINUS_EQUALS",e[e.ASTERISK_EQUALS=103]="ASTERISK_EQUALS",e[e.ASTERISK_ASTERISK_EQUALS=104]="ASTERISK_ASTERISK_EQUALS",e[e.SLASH_EQUALS=105]="SLASH_EQUALS",e[e.PERCENT_EQUALS=106]="PERCENT_EQUALS",e[e.LESSTHAN_LESSTHAN_EQUALS=107]="LESSTHAN_LESSTHAN_EQUALS",e[e.GREATERTHAN_GREATERTHAN_EQUALS=108]="GREATERTHAN_GREATERTHAN_EQUALS",e[e.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS=109]="GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS",e[e.AMPERSAND_EQUALS=110]="AMPERSAND_EQUALS",e[e.BAR_EQUALS=111]="BAR_EQUALS",e[e.CARET_EQUALS=112]="CARET_EQUALS",e[e.AT=113]="AT",e[e.IDENTIFIER=114]="IDENTIFIER",e[e.STRINGLITERAL=115]="STRINGLITERAL",e[e.INTEGERLITERAL=116]="INTEGERLITERAL",e[e.FLOATLITERAL=117]="FLOATLITERAL",e[e.INVALID=118]="INVALID",e[e.ENDOFFILE=119]="ENDOFFILE"}(a=t.Token||(t.Token={})),function(e){e.fromKeyword=function(t){switch(t){case"abstract":return e.ABSTRACT;case"as":return e.AS;case"async":return e.ASYNC;case"await":return e.AWAIT;case"break":return e.BREAK;case"case":return e.CASE;case"catch":return e.CATCH;case"class":return e.CLASS;case"continue":return e.CONTINUE;case"const":return e.CONST;case"constructor":return e.CONSTRUCTOR;case"debugger":return e.DEBUGGER;case"declare":return e.DECLARE;case"default":return e.DEFAULT;case"delete":return e.DELETE;case"do":return e.DO;case"else":return e.ELSE;case"enum":return e.ENUM;case"export":return e.EXPORT;case"extends":return e.EXTENDS;case"false":return e.FALSE;case"finally":return e.FINALLY;case"for":return e.FOR;case"from":return e.FROM;case"function":return e.FUNCTION;case"get":return e.GET;case"if":return e.IF;case"implements":return e.IMPLEMENTS;case"import":return e.IMPORT;case"in":return e.IN;case"instanceof":return e.INSTANCEOF;case"interface":return e.INTERFACE;case"is":return e.IS;case"keyof":return e.KEYOF;case"let":return e.LET;case"module":return e.MODULE;case"namespace":return e.NAMESPACE;case"new":return e.NEW;case"null":return e.NULL;case"of":return e.OF;case"package":return e.PACKAGE;case"private":return e.PRIVATE;case"protected":return e.PROTECTED;case"public":return e.PUBLIC;case"readonly":return e.READONLY;case"return":return e.RETURN;case"set":return e.SET;case"static":return e.STATIC;case"super":return e.SUPER;case"switch":return e.SWITCH;case"this":return e.THIS;case"throw":return e.THROW;case"true":return e.TRUE;case"try":return e.TRY;case"type":return e.TYPE;case"typeof":return e.TYPEOF;case"var":return e.VAR;case"void":return e.VOID;case"while":return e.WHILE;case"with":return e.WITH;case"yield":return e.YIELD;default:return e.INVALID}},e.isAlsoIdentifier=function(t){switch(t){case e.ABSTRACT:case e.AS:case e.CONSTRUCTOR:case e.DECLARE:case e.DELETE:case e.FROM:case e.GET:case e.IS:case e.KEYOF:case e.MODULE:case e.NAMESPACE:case e.READONLY:case e.SET:case e.TYPE:return!0;default:return!1}},e.operatorToString=function(t){switch(t){case e.DELETE:return"delete";case e.IN:return"in";case e.INSTANCEOF:return"instanceof";case e.NEW:return"new";case e.TYPEOF:return"typeof";case e.VOID:return"void";case e.YIELD:return"yield";case e.DOT_DOT_DOT:return"...";case e.COMMA:return",";case e.LESSTHAN:return"<";case e.GREATERTHAN:return">";case e.LESSTHAN_EQUALS:return"<=";case e.GREATERTHAN_EQUALS:return">=";case e.EQUALS_EQUALS:return"==";case e.EXCLAMATION_EQUALS:return"!=";case e.EQUALS_EQUALS_EQUALS:return"===";case e.EXCLAMATION_EQUALS_EQUALS:return"!==";case e.PLUS:return"+";case e.MINUS:return"-";case e.ASTERISK_ASTERISK:return"**";case e.ASTERISK:return"*";case e.SLASH:return"/";case e.PERCENT:return"%";case e.PLUS_PLUS:return"++";case e.MINUS_MINUS:return"--";case e.LESSTHAN_LESSTHAN:return"<<";case e.GREATERTHAN_GREATERTHAN:return">>";case e.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case e.AMPERSAND:return"&";case e.BAR:return"|";case e.CARET:return"^";case e.EXCLAMATION:return"!";case e.TILDE:return"~";case e.AMPERSAND_AMPERSAND:return"&&";case e.BAR_BAR:return"||";case e.EQUALS:return"=";case e.PLUS_EQUALS:return"+=";case e.MINUS_EQUALS:return"-=";case e.ASTERISK_EQUALS:return"*=";case e.ASTERISK_ASTERISK_EQUALS:return"**=";case e.SLASH_EQUALS:return"/=";case e.PERCENT_EQUALS:return"%=";case e.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case e.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case e.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case e.AMPERSAND_EQUALS:return"&=";case e.BAR_EQUALS:return"|=";case e.CARET_EQUALS:return"^=";default:return assert(!1),""}}}(a=t.Token||(t.Token={}));var c=function(){function e(e,t,r){this.debugInfoRef=0,this.source=e,this.start=t,this.end=r}return e.join=function(t,r){if(t.source!=r.source)throw new Error("source mismatch");return new e(t.source,t.startr.end?t.end:r.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=this.start,r=1;t-- >0;)10==e.charCodeAt(t)&&r++;return r},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=this.start,r=0;t-- >0&&10!=e.charCodeAt(t);)r++;return r},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=c;var p=function(e){function t(t,r){void 0===r&&(r=null);var n=e.call(this,r)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenOnNewLine=!1,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=r||new Array;var i=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.posi;)if(s.isLineBreak(n.charCodeAt(this.tokenPos))){this.nextTokenOnNewLine=!0;break}this.pos=i,this.token=a,this.tokenPos=o}return this.nextToken},t.prototype.skip=function(e){var t=this.pos,r=this.token,n=this.tokenPos,i=i32.MAX_VALUE;switch(e){case a.GREATERTHAN:i=1}return this.token=this.unsafeNext(e==a.IDENTIFIER,i),this.token==e?(this.nextToken=-1,!0):(this.pos=t,this.token=r,this.tokenPos=n,!1)},t.prototype.mark=function(){var e;return l?(e=l,l=null):e=new u,e.pos=this.pos,e.token=this.token,e.tokenPos=this.tokenPos,e},t.prototype.discard=function(e){l=e},t.prototype.reset=function(e){this.pos=e.pos,this.token=e.token,this.tokenPos=e.tokenPos,this.nextToken=-1,l=e},t.prototype.range=function(e,t){return void 0===e&&(e=-1),void 0===t&&(t=-1),e<0?(e=this.tokenPos,t=this.pos):t<0&&(t=e),new c(this.source,e,t)},t.prototype.readIdentifier=function(){for(var e=this.source.text,t=this.pos;++this.pos=this.end){n+=e.substring(r,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(r-1,this.end));break}var i=e.charCodeAt(this.pos);if(i==t){n+=e.substring(r,this.pos++);break}if(92!=i){if(s.isLineBreak(i)){n+=e.substring(r,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(r-1,this.pos));break}++this.pos}else n+=e.substring(r,this.pos),n+=this.readEscapeSequence(),r=this.pos}return n},t.prototype.readEscapeSequence=function(){if(++this.pos>=this.end)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.end)),"";var e=this.source.text,t=e.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=this.end){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.end));break}if(92!=e.charCodeAt(this.pos)){var n=e.charCodeAt(this.pos);if(47==n&&!r)break;if(s.isLineBreak(n)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,r=0;this.pos57)break;t++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(48==e.charCodeAt(this.pos)&&this.pos+2=48&&i<=57)r=i64_add(i64_mul(r,n),i64_new(i-48,0));else if(i>=65&&i<=70)r=i64_add(i64_mul(r,n),i64_new(10+i-65,0));else{if(!(i>=97&&i<=102))break;r=i64_add(i64_mul(r,n),i64_new(10+i-97,0))}++this.pos}return this.pos==t&&this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)),r},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,r=i64_new(0,0),n=i64_new(10,0);this.pos=48&&i<=57))break;r=i64_add(i64_mul(r,n),i64_new(i-48,0)),++this.pos}return this.pos==t&&this.error(o.DiagnosticCode.Digit_expected,this.range(t)),r},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,r=i64_new(0,0),n=i64_new(8,0);this.pos=48&&i<=55))break;r=i64_add(i64_mul(r,n),i64_new(i-48,0)),++this.pos}return this.pos==t&&this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)),r},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,r=i64_new(0,0),n=i64_new(2,0),i=i64_new(1,0);this.pos=48&&n<=57)t=16*t+n-48;else if(n>=65&&n<=70)t=16*t+10+n-65;else{if(!(n>=97&&n<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=16*t+10+n-97}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),r=i64_low(t),n=!1;assert(!i64_high(t)),r>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var i=this.source.text;return this.pos>=this.end?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,this.end)),n=!0):125==i.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":r<65536?String.fromCharCode(r):String.fromCharCode(55296+((r-65536)/1024|0),(r-65536)%1024+56320)},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=p;var u=function(){return function(){}}();t.State=u;var l=null},function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0});var a=r(2),o=r(3);t.Token=o.Token,t.Range=o.Range;var s,c=r(8);!function(e){e[e.SOURCE=0]="SOURCE",e[e.TYPE=1]="TYPE",e[e.TYPEPARAMETER=2]="TYPEPARAMETER",e[e.PARAMETER=3]="PARAMETER",e[e.SIGNATURE=4]="SIGNATURE",e[e.IDENTIFIER=5]="IDENTIFIER",e[e.ASSERTION=6]="ASSERTION",e[e.BINARY=7]="BINARY",e[e.CALL=8]="CALL",e[e.COMMA=9]="COMMA",e[e.ELEMENTACCESS=10]="ELEMENTACCESS",e[e.FALSE=11]="FALSE",e[e.FUNCTION=12]="FUNCTION",e[e.FUNCTIONARROW=13]="FUNCTIONARROW",e[e.LITERAL=14]="LITERAL",e[e.NEW=15]="NEW",e[e.NULL=16]="NULL",e[e.PARENTHESIZED=17]="PARENTHESIZED",e[e.PROPERTYACCESS=18]="PROPERTYACCESS",e[e.TERNARY=19]="TERNARY",e[e.SUPER=20]="SUPER",e[e.THIS=21]="THIS",e[e.TRUE=22]="TRUE",e[e.CONSTRUCTOR=23]="CONSTRUCTOR",e[e.UNARYPOSTFIX=24]="UNARYPOSTFIX",e[e.UNARYPREFIX=25]="UNARYPREFIX",e[e.BLOCK=26]="BLOCK",e[e.BREAK=27]="BREAK",e[e.CONTINUE=28]="CONTINUE",e[e.DO=29]="DO",e[e.EMPTY=30]="EMPTY",e[e.EXPORT=31]="EXPORT",e[e.EXPORTIMPORT=32]="EXPORTIMPORT",e[e.EXPRESSION=33]="EXPRESSION",e[e.FOR=34]="FOR",e[e.IF=35]="IF",e[e.IMPORT=36]="IMPORT",e[e.RETURN=37]="RETURN",e[e.SWITCH=38]="SWITCH",e[e.THROW=39]="THROW",e[e.TRY=40]="TRY",e[e.VARIABLE=41]="VARIABLE",e[e.VOID=42]="VOID",e[e.WHILE=43]="WHILE",e[e.CLASSDECLARATION=44]="CLASSDECLARATION",e[e.ENUMDECLARATION=45]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=46]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=47]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=48]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=49]="IMPORTDECLARATION",e[e.INTERFACEDECLARATION=50]="INTERFACEDECLARATION",e[e.METHODDECLARATION=51]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=52]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=53]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=54]="VARIABLEDECLARATION",e[e.DECORATOR=55]="DECORATOR",e[e.MODIFIER=56]="MODIFIER",e[e.EXPORTMEMBER=57]="EXPORTMEMBER",e[e.SWITCHCASE=58]="SWITCHCASE"}(s=t.NodeKind||(t.NodeKind={}));var p=function(){function e(){this.parent=null}return e.createType=function(e,t,r,n){var i=new l;return i.range=n,i.name=e,e.parent=i,i.typeArguments=t,t&&De(t,i),i.isNullable=r,i},e.createOmittedType=function(t){return e.createType(e.createIdentifierExpression("",t),null,!1,t)},e.createTypeParameter=function(e,t,r){var n=new h;return n.range=r,n.name=e,e.parent=n,n.extendsType=t,t&&(t.parent=n),n},e.createParameter=function(e,t,r,n,i){var a=new d;return a.range=i,a.name=e,e.parent=a,a.type=t,t&&(t.parent=a),a.initializer=r,r&&(r.parent=a),a.parameterKind=n,a},e.createSignature=function(e,t,r,n,i){var a=new _;return a.range=i,a.parameterTypes=e,De(e,a),a.returnType=t,t.parent=a,a.explicitThisType=r,r&&(r.parent=a),a.isNullable=n,a},e.createDecorator=function(e,t,r){var n=new m;if(n.range=r,n.name=e,e.parent=n,n.arguments=t,t&&De(t,n),e.kind==s.IDENTIFIER)switch(e.text){case"global":n.decoratorKind=1;break;case"operator":n.decoratorKind=2;break;case"unmanaged":n.decoratorKind=3;break;case"offset":n.decoratorKind=4;break;default:n.decoratorKind=0}else n.decoratorKind=0;return n},e.createModifier=function(e,t){var r=new f;return r.range=t,r.modifierKind=e,r},e.createIdentifierExpression=function(e,t){var r=new E;return r.range=t,r.text=e,r},e.createEmptyIdentifierExpression=function(e){var t=new E;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var r=new A;return r.range=t,r.elementExpressions=e,function(e,t){for(var r=0,n=e.length;r0},enumerable:!0,configurable:!0}),t}(q);t.ClassDeclaration=J;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.CONTINUE,t}return i(t,e),t}(Y);t.ContinueStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.DO,t}return i(t,e),t}(Y);t.DoStatement=te;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.EMPTY,t}return i(t,e),t}(Y);t.EmptyStatement=re;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.ENUMDECLARATION,t}return i(t,e),t}(q);t.EnumDeclaration=ne;var ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.ENUMVALUEDECLARATION,t.modifiers=null,t}return i(t,e),t}(q);t.EnumValueDeclaration=ie;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.EXPORTIMPORT,t}return i(t,e),t}(p);t.ExportImportStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.EXPORTMEMBER,t}return i(t,e),t}(p);t.ExportMember=oe;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.EXPORT,t}return i(t,e),t}(Y);t.ExportStatement=se;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.EXPRESSION,t}return i(t,e),t}(Y);t.ExpressionStatement=ce;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.FIELDDECLARATION,t}return i(t,e),t}(j);t.FieldDeclaration=pe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.FOR,t}return i(t,e),t}(Y);t.ForStatement=ue;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.FUNCTIONDECLARATION,t}return i(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(q);t.FunctionDeclaration=le;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.IF,t}return i(t,e),t}(Y);t.IfStatement=he;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.IMPORTDECLARATION,t.modifiers=null,t}return i(t,e),t}(q);t.ImportDeclaration=de;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.IMPORT,t}return i(t,e),t}(Y);t.ImportStatement=_e;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.INTERFACEDECLARATION,t}return i(t,e),t}(J);t.InterfaceDeclaration=ye;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.METHODDECLARATION,t}return i(t,e),t}(le);t.MethodDeclaration=me;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.NAMESPACEDECLARATION,t}return i(t,e),t}(q);t.NamespaceDeclaration=fe;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.RETURN,t}return i(t,e),t}(Y);t.ReturnStatement=ge;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.SWITCHCASE,t}return i(t,e),t}(p);t.SwitchCase=Ee;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.SWITCH,t}return i(t,e),t}(Y);t.SwitchStatement=Te;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.THROW,t}return i(t,e),t}(Y);t.ThrowStatement=Ae;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.TRY,t}return i(t,e),t}(Y);t.TryStatement=Ie;var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.TYPEDECLARATION,t}return i(t,e),t}(q);t.TypeDeclaration=ve;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.VARIABLEDECLARATION,t}return i(t,e),t}(j);t.VariableDeclaration=Ne;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.VARIABLE,t}return i(t,e),t}(Y);t.VariableStatement=Se;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.VOID,t}return i(t,e),t}(Y);t.VoidStatement=Ce;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=s.WHILE,t}return i(t,e),t}(Y);t.WhileStatement=be;var Oe=null;function xe(){var e;return null!=Oe?(e=Oe,Oe=null):e=[],e.length=0,e}function ke(e,t){if(t)for(var r=0,n=t.length;r>>e.size-this.size},e.prototype.is=function(e){return(this.flags&e)==e},Object.defineProperty(e.prototype,"isClass",{get:function(){return null!=this.classType},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isFunction",{get:function(){return null!=this.functionType},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isReference",{get:function(){return null!=this.classType||null!=this.functionType},enumerable:!0,configurable:!0}),e.prototype.asClass=function(t){assert(9==this.kind&&!this.classType);var r=new e(this.kind,-129&this.flags|256,this.size);return r.classType=t,r},e.prototype.asFunction=function(t){assert(7==this.kind&&!this.functionType);var r=new e(this.kind,-129&this.flags|256,this.size);return r.functionType=t,r},e.prototype.asNullable=function(){return assert(this.isReference),this.nullableType||(assert(!this.is(512)),this.nullableType=new e(this.kind,512|this.flags,this.size),this.nullableType.classType=this.classType,this.nullableType.functionType=this.functionType),this.nullableType},e.prototype.isAssignableTo=function(e,t){var r,n,i,a;if(void 0===t&&(t=!1),this.isReference){if(e.isReference)if(r=this.classType){if(n=e.classType)return r.isAssignableTo(n)}else if((i=this.functionType)&&(a=e.functionType))return i.isAssignableTo(a)}else if(!e.isReference)if(this.is(4))if(e.is(4)){if(!t||this.is(1)==e.is(1))return this.size<=e.size}else{if(11==e.kind)return this.size<=23;if(12==e.kind)return this.size<=52}else if(this.is(8)&&e.is(8))return this.size<=e.size;return!1},e.commonCompatible=function(e,t,r){return t.isAssignableTo(e,r)?e:e.isAssignableTo(t,r)?t:null},e.prototype.toString=function(e){switch(void 0===e&&(e=!1),this.kind){case 0:return"i8";case 1:return"i16";case 2:return"i32";case 3:return"i64";case 4:return"isize";case 5:return"u8";case 6:return"u16";case 7:return e||!this.functionType?"u32":this.functionType.toString(!0);case 8:return"u64";case 9:return e||!this.classType?"usize":this.classType.toString();case 10:return"bool";case 11:return"f32";case 12:return"f64";case 13:return"void";default:return assert(!1),""}},e.prototype.toNativeType=function(){switch(this.kind){default:return n.NativeType.I32;case 3:case 8:return n.NativeType.I64;case 4:case 9:return 64==this.size?n.NativeType.I64:n.NativeType.I32;case 11:return n.NativeType.F32;case 12:return n.NativeType.F64;case 13:return n.NativeType.None}},e.prototype.toNativeZero=function(e){switch(this.kind){case 13:assert(!1);default:return e.createI32(0);case 4:case 9:if(64!=this.size)return e.createI32(0);case 3:case 8:return e.createI64(0);case 11:return e.createF32(0);case 12:return e.createF64(0)}},e.prototype.toNativeOne=function(e){switch(this.kind){case 13:assert(!1);default:return e.createI32(1);case 4:case 9:if(64!=this.size)return e.createI32(1);case 3:case 8:return e.createI64(1);case 11:return e.createF32(1);case 12:return e.createF64(1)}},e.prototype.toNativeNegOne=function(e){switch(this.kind){case 13:assert(!1);default:return e.createI32(-1);case 4:case 9:if(64!=this.size)return e.createI32(-1);case 3:case 8:return e.createI64(-1,-1);case 11:return e.createF32(-1);case 12:return e.createF64(-1)}},e.prototype.toSignatureString=function(){switch(this.kind){default:return"i";case 3:case 8:return"I";case 4:case 9:return 64==this.size?"I":"i";case 11:return"f";case 12:return"F";case 13:return"v"}},e.i8=new e(0,165,8),e.i16=new e(1,165,16),e.i32=new e(2,133,32),e.i64=new e(3,197,64),e.isize32=new e(4,149,32),e.isize64=new e(4,213,64),e.u8=new e(5,166,8),e.u16=new e(6,166,16),e.u32=new e(7,134,32),e.u64=new e(8,198,64),e.usize32=new e(9,150,32),e.usize64=new e(9,214,64),e.bool=new e(10,166,1),e.f32=new e(11,137,32),e.f64=new e(12,201,64),e.void=new e(13,0,0),e}();t.Type=i,t.typesToNativeTypes=function(e){for(var t=e.length,r=new Array(t),n=0;ne?this.parameterNames[e]:s(e)},e.prototype.isAssignableTo=function(e){var t=this.thisType,r=e.thisType;if(t){if(!r||!t.isAssignableTo(r))return!1}else if(r)return!1;if(this.hasRest!=e.hasRest)return!1;var n=this.parameterTypes,i=e.parameterTypes,a=n.length;if(a!=i.length)return!1;for(var o=0;o=p&&l!=u?t.push("?: "):t.push(": "),t.push(i[l].toString());return t.push(") => "),t.push(this.returnType.toString()),t.join("")},e}();t.Signature=a;var o=null;function s(e){o||(o=[]);for(var t=o.length;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var o,s=r(16),c=r(0),p=r(1),u=r(2),l=r(3),h=r(4),d=r(5);!function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64"}(o=t.Target||(t.Target={}));var _=function(){function e(){this.target=o.WASM32,this.noTreeShaking=!1,this.noAssert=!1,this.noMemory=!1,this.importMemory=!1,this.memoryBase=0,this.allocateImpl="allocate_memory",this.freeImpl="free_memory",this.sourceMap=!1}return Object.defineProperty(e.prototype,"isWasm64",{get:function(){return this.target==o.WASM64},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"usizeType",{get:function(){return this.target==o.WASM64?d.Type.usize64:d.Type.usize32},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isizeType",{get:function(){return this.target==o.WASM64?d.Type.isize64:d.Type.isize32},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nativeSizeType",{get:function(){return this.target==o.WASM64?p.NativeType.I64:p.NativeType.I32},enumerable:!0,configurable:!0}),e}();t.Options=_,function(e){e[e.NONE=0]="NONE",e[e.IMPLICIT=1]="IMPLICIT",e[e.EXPLICIT=2]="EXPLICIT"}(t.ConversionKind||(t.ConversionKind={}));var y=function(e){function t(t,r){void 0===r&&(r=null);var n=e.call(this,t.diagnostics)||this;return n.startFunctionBody=[],n.currentEnum=null,n.currentType=d.Type.void,n.memorySegments=new Array,n.stringSegments=new Map,n.functionTable=new Array,n.files=new Set,n.trampolines=new Map,n.program=t,r||(r=new _),n.options=r,n.memoryOffset=i64_new(max(r.memoryBase,r.usizeType.byteSize)),n.module=p.Module.create(),n}return i(t,e),t.compile=function(e,r){return void 0===r&&(r=null),new t(e,r).compile()},t.prototype.compile=function(){var e=this.options,t=this.module,r=this.program;r.initialize(e);var n=assert(r.elements.get("start"));assert(n.kind==u.ElementKind.FUNCTION_PROTOTYPE);var i=new u.Function(n,n.internalName,new d.Signature([],d.Type.void));i.set(u.ElementFlags.START),this.startFunction=i,this.currentFunction=i;for(var a=r.sources,o=0,s=a.length;o"),!1;e.type=this.currentType}var i=e.type.toNativeType();if(e.is(u.ElementFlags.DECLARED))return e.is(u.ElementFlags.CONSTANT)?(this.module.addGlobalImport(e.internalName,e.namespace?e.namespace.simpleName:"env",e.simpleName,i),e.set(u.ElementFlags.COMPILED),!0):(this.error(c.DiagnosticCode.Operation_not_supported,t.range),!1);var a=!1;e.is(u.ElementFlags.INLINED)?r=this.compileInlineConstant(e,e.type,!0):t.initializer?(r||(r=this.compileExpression(t.initializer,e.type)),_BinaryenExpressionGetId(r)!=p.ExpressionId.Const&&(e.is(u.ElementFlags.CONSTANT)?(r=this.precomputeExpressionRef(r),_BinaryenExpressionGetId(r)!=p.ExpressionId.Const&&(this.warning(c.DiagnosticCode.Compiling_constant_with_non_constant_initializer_as_mutable,t.range),a=!0)):a=!0)):r=e.type.toNativeZero(this.module);var o=e.internalName;if(a){this.module.addGlobal(o,i,!0,e.type.toNativeZero(this.module));var s=this.module.createSetGlobal(o,r);this.startFunctionBody.push(s)}else if(e.is(u.ElementFlags.CONSTANT)){switch(_BinaryenExpressionGetType(r)){case p.NativeType.I32:e.constantValueKind=1,e.constantIntegerValue=i64_new(_BinaryenConstGetValueI32(r),0);break;case p.NativeType.I64:e.constantValueKind=1,e.constantIntegerValue=i64_new(_BinaryenConstGetValueI64Low(r),_BinaryenConstGetValueI64High(r));break;case p.NativeType.F32:e.constantValueKind=2,e.constantFloatValue=_BinaryenConstGetValueF32(r);break;case p.NativeType.F64:e.constantValueKind=2,e.constantFloatValue=_BinaryenConstGetValueF64(r);break;default:throw new Error("concrete type expected")}e.set(u.ElementFlags.INLINED),t.isTopLevel&&this.module.addGlobal(o,i,!1,r),t.range.source.isEntry&&t.isTopLevelExport&&this.module.addGlobalExport(e.internalName,t.programLevelInternalName)}else this.module.addGlobal(o,i,!e.is(u.ElementFlags.CONSTANT),r);return!0},t.prototype.compileEnumDeclaration=function(e){var t=this.program.elements.get(e.fileLevelInternalName);if(!t||t.kind!=u.ElementKind.ENUM)throw new Error("enum expected");return this.compileEnum(t)?t:null},t.prototype.compileEnum=function(e){if(e.is(u.ElementFlags.COMPILED))return!0;e.set(u.ElementFlags.COMPILED),this.currentEnum=e;var t,r,n=null;if(e.members)try{for(var i=a(e.members.values()),o=i.next();!o.done;o=i.next()){var s=o.value;if(s.kind==u.ElementKind.ENUMVALUE){var l,h=!1,_=s,y=_.declaration;if(_.set(u.ElementFlags.COMPILED),_.is(u.ElementFlags.INLINED))e.declaration.isTopLevelExport&&this.module.addGlobal(_.internalName,p.NativeType.I32,!1,this.module.createI32(_.constantValue));else if(y.value?(l=this.compileExpression(y.value,d.Type.i32),_BinaryenExpressionGetId(l)!=p.ExpressionId.Const&&(l=this.precomputeExpressionRef(l),_BinaryenExpressionGetId(l)!=p.ExpressionId.Const&&(e.is(u.ElementFlags.CONSTANT)&&this.warning(c.DiagnosticCode.Compiling_constant_with_non_constant_initializer_as_mutable,y.range),h=!0))):null==n?l=this.module.createI32(0):n.is(u.ElementFlags.INLINED)?l=this.module.createI32(n.constantValue+1):(l=this.module.createBinary(p.BinaryOp.AddI32,this.module.createGetGlobal(n.internalName,p.NativeType.I32),this.module.createI32(1)),e.is(u.ElementFlags.CONSTANT)&&this.warning(c.DiagnosticCode.Compiling_constant_with_non_constant_initializer_as_mutable,y.range),h=!0),h){this.module.addGlobal(_.internalName,p.NativeType.I32,!0,this.module.createI32(0));var m=this.module.createSetGlobal(_.internalName,l);this.startFunctionBody.push(m)}else{if(this.module.addGlobal(_.internalName,p.NativeType.I32,!1,l),_BinaryenExpressionGetType(l)!=p.NativeType.I32)throw new Error("i32 expected");_.constantValue=_BinaryenConstGetValueI32(l),_.set(u.ElementFlags.INLINED)}n=_,e.declaration.range.source.isEntry&&e.declaration.isTopLevelExport&&(s.is(u.ElementFlags.INLINED)?this.module.addGlobalExport(s.internalName,s.internalName):y&&this.warning(c.DiagnosticCode.Cannot_export_a_mutable_global,y.range))}}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return this.currentEnum=null,!0},t.prototype.compileFunctionDeclaration=function(e,t,r){void 0===r&&(r=null);var n=this.program.elements.get(e.fileLevelInternalName);if(!n||n.kind!=u.ElementKind.FUNCTION_PROTOTYPE)throw new Error("function expected");return this.compileFunctionUsingTypeArguments(n,t,r,n.declaration.name)},t.prototype.compileFunctionUsingTypeArguments=function(e,t,r,n){var i=e.resolveUsingTypeArguments(t,r,n);return i&&this.compileFunction(i)?i:null},t.prototype.ensureFunctionType=function(e){var t,r=e.parameterTypes.length,n=e.thisType,i=0;n?((t=new Array(1+r))[0]=n.toNativeType(),i=1):t=new Array(r);for(var a=0;a=0)return e.functionTableIndex;var t=this.functionTable.length;return this.functionTable.push(e),e.functionTableIndex=t,t},t.prototype.compileStatement=function(e){var t;switch(e.kind){case h.NodeKind.BLOCK:t=this.compileBlockStatement(e);break;case h.NodeKind.BREAK:t=this.compileBreakStatement(e);break;case h.NodeKind.CONTINUE:t=this.compileContinueStatement(e);break;case h.NodeKind.DO:t=this.compileDoStatement(e);break;case h.NodeKind.EMPTY:t=this.compileEmptyStatement(e);break;case h.NodeKind.EXPRESSION:t=this.compileExpressionStatement(e);break;case h.NodeKind.FOR:t=this.compileForStatement(e);break;case h.NodeKind.IF:t=this.compileIfStatement(e);break;case h.NodeKind.RETURN:t=this.compileReturnStatement(e);break;case h.NodeKind.SWITCH:t=this.compileSwitchStatement(e);break;case h.NodeKind.THROW:t=this.compileThrowStatement(e);break;case h.NodeKind.TRY:t=this.compileTryStatement(e);break;case h.NodeKind.VARIABLE:(t=this.compileVariableStatement(e))||(t=this.module.createNop());break;case h.NodeKind.VOID:t=this.compileVoidStatement(e);break;case h.NodeKind.WHILE:t=this.compileWhileStatement(e);break;case h.NodeKind.TYPEDECLARATION:if(this.currentFunction==this.startFunction)return this.module.createNop();default:throw new Error("statement expected")}return this.addDebugLocation(t,e.range),t},t.prototype.compileStatements=function(e){for(var t=e.length,r=new Array(t),n=0;n=0?"case"+o.toString(10):"break")+"|"+t);var u=this.module.createBlock("case0|"+t,i,p.NativeType.None),l=!0;for(s=0;s=0&&l&&this.currentFunction.flow.set(1),u},t.prototype.compileThrowStatement=function(e){return this.currentFunction.flow.set(2),this.currentFunction.flow.set(1),this.module.createUnreachable()},t.prototype.compileTryStatement=function(e){throw new Error("not implemented")},t.prototype.compileVariableStatement=function(e,t){void 0===t&&(t=!1);var r=e.declarations;if(t||this.currentFunction==this.startFunction&&e.parent&&e.parent.kind==h.NodeKind.SOURCE){for(var n=0,i=r.length;n");continue}l=this.currentType}if(h.hasModifier(h.ModifierKind.CONST,o.modifiers))if(_){if(_=this.precomputeExpressionRef(_),_BinaryenExpressionGetId(_)==p.ExpressionId.Const){var y=new u.Local(this.program,s,-1,l);switch(_BinaryenExpressionGetType(_)){case p.NativeType.I32:y=y.withConstantIntegerValue(_BinaryenConstGetValueI32(_),0);break;case p.NativeType.I64:y=y.withConstantIntegerValue(_BinaryenConstGetValueI64Low(_),_BinaryenConstGetValueI64High(_));break;case p.NativeType.F32:y=y.withConstantFloatValue(_BinaryenConstGetValueF32(_));break;case p.NativeType.F64:y=y.withConstantFloatValue(_BinaryenConstGetValueF64(_));break;default:throw new Error("concrete type expected")}var m=this.currentFunction.flow.scopedLocals;if(m){if(m.has(s))return this.error(c.DiagnosticCode.Duplicate_identifier_0,o.name.range,s),0}else m=this.currentFunction.flow.scopedLocals=new Map;return m.set(s,y),0}this.warning(c.DiagnosticCode.Compiling_constant_with_non_constant_initializer_as_mutable,o.range)}else this.error(c.DiagnosticCode._const_declarations_must_be_initialized,o.range);h.hasModifier(h.ModifierKind.LET,o.modifiers)?this.currentFunction.flow.addScopedLocal(s,l,o.name):this.currentFunction.addLocal(l,s),_&&a.push(this.compileAssignmentWithValue(o.name,_))}return a.length?1==a.length?a[0]:this.module.createBlock(null,a,p.NativeType.None):0},t.prototype.compileVoidStatement=function(e){return this.compileExpression(e.expression,d.Type.void,2,!1)},t.prototype.compileWhileStatement=function(e){var t=g(this.compileExpression(e.condition,d.Type.i32,0),this.currentType,this.module),r=this.currentFunction.enterBreakContext();this.currentFunction.flow=this.currentFunction.flow.enterBranchOrScope();var n=this.currentFunction.flow.breakLabel="break|"+r,i=this.currentFunction.flow.continueLabel="continue|"+r,a=this.compileStatement(e.statement);this.currentFunction.flow=this.currentFunction.flow.leaveBranchOrScope(),this.currentFunction.leaveBreakContext();var o=this.module.createBlock(n,[this.module.createLoop(i,this.module.createIf(t,this.module.createBlock(null,[a,this.module.createBreak(i)],p.NativeType.None)))],p.NativeType.None);return o},t.prototype.compileInlineConstant=function(e,t,r){switch(assert(e.is(u.ElementFlags.INLINED)),!r&&e.type.is(4)&&t.is(4)&&e.type.size>n:0);case 5:case 6:case 10:var i=e.type.computeSmallIntegerMask(d.Type.i32);return this.module.createI32(1==e.constantValueKind?i64_low(e.constantIntegerValue)&i:0);case 2:case 7:return this.module.createI32(1==e.constantValueKind?i64_low(e.constantIntegerValue):0);case 4:case 9:if(!e.program.options.isWasm64)return this.module.createI32(1==e.constantValueKind?i64_low(e.constantIntegerValue):0);case 3:case 8:return 1==e.constantValueKind?this.module.createI64(i64_low(e.constantIntegerValue),i64_high(e.constantIntegerValue)):this.module.createI64(0);case 11:return this.module.createF32(e.constantFloatValue);case 12:return this.module.createF64(e.constantFloatValue);default:throw new Error("concrete type expected")}},t.prototype.compileExpression=function(e,t,r,n){var i;switch(void 0===r&&(r=1),void 0===n&&(n=!0),this.currentType=t,e.kind){case h.NodeKind.ASSERTION:i=this.compileAssertionExpression(e,t);break;case h.NodeKind.BINARY:i=this.compileBinaryExpression(e,t,n);break;case h.NodeKind.CALL:i=this.compileCallExpression(e,t);break;case h.NodeKind.COMMA:i=this.compileCommaExpression(e,t);break;case h.NodeKind.ELEMENTACCESS:i=this.compileElementAccessExpression(e,t);break;case h.NodeKind.FUNCTION:case h.NodeKind.FUNCTIONARROW:i=this.compileFunctionExpression(e,t);break;case h.NodeKind.IDENTIFIER:case h.NodeKind.FALSE:case h.NodeKind.NULL:case h.NodeKind.THIS:case h.NodeKind.TRUE:i=this.compileIdentifierExpression(e,t,0==r);break;case h.NodeKind.LITERAL:i=this.compileLiteralExpression(e,t);break;case h.NodeKind.NEW:i=this.compileNewExpression(e,t);break;case h.NodeKind.PARENTHESIZED:i=this.compileParenthesizedExpression(e,t,n);break;case h.NodeKind.PROPERTYACCESS:i=this.compilePropertyAccessExpression(e,t,0==r);break;case h.NodeKind.TERNARY:i=this.compileTernaryExpression(e,t);break;case h.NodeKind.UNARYPOSTFIX:i=this.compileUnaryPostfixExpression(e,t);break;case h.NodeKind.UNARYPREFIX:i=this.compileUnaryPrefixExpression(e,t,n);break;default:throw new Error("expression expected")}return 0!=r&&this.currentType!=t&&(i=this.convertExpression(i,this.currentType,t,r,e),this.currentType=t),this.addDebugLocation(i,e.range),i},t.prototype.compileExpressionRetainType=function(e,t,r){return void 0===r&&(r=!0),this.compileExpression(e,t==d.Type.void?d.Type.i32:t,0,r)},t.prototype.precomputeExpression=function(e,t,r){return void 0===r&&(r=1),this.precomputeExpressionRef(this.compileExpression(e,t,r))},t.prototype.precomputeExpressionRef=function(e){var t=this.currentType.toNativeType(),r=this.module.getFunctionTypeBySignature(t,null);r||(r=this.module.addFunctionType(this.currentType.toSignatureString(),t,null));var n=this.module.addFunction("__precompute",r,null,e);this.module.runPasses(["precompute"],n);var i=_BinaryenFunctionGetBody(n);return this.module.removeFunction("__precompute"),i},t.prototype.convertExpression=function(e,t,r,n,i){return 0==n?(assert(!1,"concrete type expected"),e):13==t.kind?(this.error(c.DiagnosticCode.Type_0_is_not_assignable_to_type_1,i.range,t.toString(),r.toString()),this.module.createUnreachable()):13==r.kind?this.module.createDrop(e):(1!=n||t.isAssignableTo(r)||this.error(c.DiagnosticCode.Conversion_from_type_0_to_1_requires_an_explicit_cast,i.range,t.toString(),r.toString()),t.is(8)?r.is(8)?11==t.kind?12==r.kind&&(e=this.module.createUnary(p.UnaryOp.PromoteF32,e)):11==r.kind&&(e=this.module.createUnary(p.UnaryOp.DemoteF64,e)):r.is(4)?11==t.kind?r.is(1)?r.is(64)?e=this.module.createUnary(p.UnaryOp.TruncF32ToI64,e):(e=this.module.createUnary(p.UnaryOp.TruncF32ToI32,e),r.is(32)&&(e=m(e,r,this.module))):r.is(64)?e=this.module.createUnary(p.UnaryOp.TruncF32ToU64,e):(e=this.module.createUnary(p.UnaryOp.TruncF32ToU32,e),r.is(32)&&(e=m(e,r,this.module))):r.is(1)?r.is(64)?e=this.module.createUnary(p.UnaryOp.TruncF64ToI64,e):(e=this.module.createUnary(p.UnaryOp.TruncF64ToI32,e),r.is(32)&&(e=m(e,r,this.module))):r.is(64)?e=this.module.createUnary(p.UnaryOp.TruncF64ToU64,e):(e=this.module.createUnary(p.UnaryOp.TruncF64ToU32,e),r.is(32)&&(e=m(e,r,this.module))):(assert(0==r.flags,"void type expected"),e=this.module.createDrop(e)):t.is(4)&&r.is(8)?e=11==r.kind?t.is(64)?this.module.createUnary(t.is(1)?p.UnaryOp.ConvertI64ToF32:p.UnaryOp.ConvertU64ToF32,e):this.module.createUnary(t.is(1)?p.UnaryOp.ConvertI32ToF32:p.UnaryOp.ConvertU32ToF32,e):t.is(64)?this.module.createUnary(t.is(1)?p.UnaryOp.ConvertI64ToF64:p.UnaryOp.ConvertU64ToF64,e):this.module.createUnary(t.is(1)?p.UnaryOp.ConvertI32ToF64:p.UnaryOp.ConvertU32ToF64,e):t.is(64)?r.is(64)||(e=this.module.createUnary(p.UnaryOp.WrapI64,e),r.is(32)&&(e=m(e,r,this.module))):r.is(64)?e=this.module.createUnary(r.is(1)?p.UnaryOp.ExtendI32:p.UnaryOp.ExtendU32,e):r.is(32)&&(t.size>r.size||t.size==r.size&&t.is(1)!=r.is(1))&&(e=m(e,r,this.module)),this.currentType=r,e)},t.prototype.compileAssertionExpression=function(e,t){var r=this.program.resolveType(e.toType,this.currentFunction.contextualTypeArguments);return r?this.compileExpression(e.expression,r,2):this.module.createUnreachable()},t.prototype.compileBinaryExpression=function(e,t,r){var n,i,a,o,s,u,h;void 0===r&&(r=!0);var _=!1,y=!1,f=null;switch(e.operator){case l.Token.LESSTHAN:if(n=this.compileExpressionRetainType(e.left,t),i=this.currentType,a=this.compileExpressionRetainType(e.right,i),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"<",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();switch(n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right),s.kind){case 0:case 1:case 2:h=this.module.createBinary(p.BinaryOp.LtI32,n,a);break;case 3:h=this.module.createBinary(p.BinaryOp.LtI64,n,a);break;case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.LtI64:p.BinaryOp.LtI32,n,a);break;case 5:case 6:case 7:case 10:h=this.module.createBinary(p.BinaryOp.LtU32,n,a);break;case 9:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.LtU64:p.BinaryOp.LtU32,n,a);break;case 8:h=this.module.createBinary(p.BinaryOp.LtU64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.LtF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.LtF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}this.currentType=d.Type.bool;break;case l.Token.GREATERTHAN:if(n=this.compileExpressionRetainType(e.left,t),i=this.currentType,a=this.compileExpressionRetainType(e.right,i),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,">",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();switch(n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right),s.kind){case 0:case 1:case 2:h=this.module.createBinary(p.BinaryOp.GtI32,n,a);break;case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.GtI64:p.BinaryOp.GtI32,n,a);break;case 3:h=this.module.createBinary(p.BinaryOp.GtI64,n,a);break;case 5:case 6:case 7:case 10:h=this.module.createBinary(p.BinaryOp.GtU32,n,a);break;case 9:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.GtU64:p.BinaryOp.GtU32,n,a);break;case 8:h=this.module.createBinary(p.BinaryOp.GtU64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.GtF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.GtF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}this.currentType=d.Type.bool;break;case l.Token.LESSTHAN_EQUALS:if(n=this.compileExpressionRetainType(e.left,t),i=this.currentType,a=this.compileExpressionRetainType(e.right,i),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"<=",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();switch(n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right),s.kind){case 0:case 1:case 2:h=this.module.createBinary(p.BinaryOp.LeI32,n,a);break;case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.LeI64:p.BinaryOp.LeI32,n,a);break;case 3:h=this.module.createBinary(p.BinaryOp.LeI64,n,a);break;case 5:case 6:case 7:case 10:h=this.module.createBinary(p.BinaryOp.LeU32,n,a);break;case 9:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.LeU64:p.BinaryOp.LeU32,n,a);break;case 8:h=this.module.createBinary(p.BinaryOp.LeU64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.LeF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.LeF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}this.currentType=d.Type.bool;break;case l.Token.GREATERTHAN_EQUALS:if(n=this.compileExpressionRetainType(e.left,t),i=this.currentType,a=this.compileExpressionRetainType(e.right,i),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,">=",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();switch(n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right),s.kind){case 0:case 1:case 2:h=this.module.createBinary(p.BinaryOp.GeI32,n,a);break;case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.GeI64:p.BinaryOp.GeI32,n,a);break;case 3:h=this.module.createBinary(p.BinaryOp.GeI64,n,a);break;case 5:case 6:case 7:case 10:h=this.module.createBinary(p.BinaryOp.GeU32,n,a);break;case 9:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.GeU64:p.BinaryOp.GeU32,n,a);break;case 8:h=this.module.createBinary(p.BinaryOp.GeU64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.GeF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.GeF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}this.currentType=d.Type.bool;break;case l.Token.EQUALS_EQUALS_EQUALS:case l.Token.EQUALS_EQUALS:if(n=this.compileExpressionRetainType(e.left,t),i=this.currentType,a=this.compileExpressionRetainType(e.right,i),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,l.Token.operatorToString(e.operator),i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();switch(n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right),s.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:h=this.module.createBinary(p.BinaryOp.EqI32,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.EqI64:p.BinaryOp.EqI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.EqI64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.EqF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.EqF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}this.currentType=d.Type.bool;break;case l.Token.EXCLAMATION_EQUALS_EQUALS:case l.Token.EXCLAMATION_EQUALS:if(n=this.compileExpressionRetainType(e.left,t),i=this.currentType,a=this.compileExpressionRetainType(e.right,i),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,l.Token.operatorToString(e.operator),i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();switch(n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right),s.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:h=this.module.createBinary(p.BinaryOp.NeI32,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.NeI64:p.BinaryOp.NeI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.NeI64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.NeF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.NeF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}this.currentType=d.Type.bool;break;case l.Token.EQUALS:return this.compileAssignment(e.left,e.right,t);case l.Token.PLUS_EQUALS:_=!0;case l.Token.PLUS:if(n=this.compileExpressionRetainType(e.left,t,!1),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"+",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=!0;case 2:case 7:h=this.module.createBinary(p.BinaryOp.AddI32,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.AddI64:p.BinaryOp.AddI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.AddI64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.AddF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.AddF64,n,a);break;default:throw new Error("concrete type expected")}break;case l.Token.MINUS_EQUALS:_=!0;case l.Token.MINUS:if(n=this.compileExpressionRetainType(e.left,t,!1),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"-",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=!0;case 2:case 7:h=this.module.createBinary(p.BinaryOp.SubI32,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.SubI64:p.BinaryOp.SubI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.SubI64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.SubF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.SubF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.ASTERISK_EQUALS:_=!0;case l.Token.ASTERISK:if(n=this.compileExpressionRetainType(e.left,t,!1),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"*",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=!0;case 2:case 7:h=this.module.createBinary(p.BinaryOp.MulI32,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.MulI64:p.BinaryOp.MulI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.MulI64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.MulF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.MulF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.SLASH_EQUALS:_=!0;case l.Token.SLASH:if(n=this.compileExpressionRetainType(e.left,t,!0),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"/",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:y=!0;case 2:h=this.module.createBinary(p.BinaryOp.DivI32,n,a);break;case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.DivI64:p.BinaryOp.DivI32,n,a);break;case 3:h=this.module.createBinary(p.BinaryOp.DivI64,n,a);break;case 5:case 6:case 10:y=!0;case 7:h=this.module.createBinary(p.BinaryOp.DivU32,n,a);break;case 9:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.DivU64:p.BinaryOp.DivU32,n,a);break;case 8:h=this.module.createBinary(p.BinaryOp.DivU64,n,a);break;case 11:h=this.module.createBinary(p.BinaryOp.DivF32,n,a);break;case 12:h=this.module.createBinary(p.BinaryOp.DivF64,n,a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.PERCENT_EQUALS:_=!0;case l.Token.PERCENT:if(n=this.compileExpressionRetainType(e.left,t,!0),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"%",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:case 2:h=this.module.createBinary(p.BinaryOp.RemI32,n,a);break;case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.RemI64:p.BinaryOp.RemI32,n,a);break;case 3:h=this.module.createBinary(p.BinaryOp.RemI64,n,a);break;case 5:case 6:case 7:case 10:h=this.module.createBinary(p.BinaryOp.RemU32,n,a);break;case 9:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.RemU64:p.BinaryOp.RemU32,n,a);break;case 8:h=this.module.createBinary(p.BinaryOp.RemU64,n,a);break;case 11:case 12:this.error(c.DiagnosticCode.Operation_not_supported,e.range),h=this.module.createUnreachable();break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.LESSTHAN_LESSTHAN_EQUALS:_=!0;case l.Token.LESSTHAN_LESSTHAN:switch(n=this.compileExpressionRetainType(e.left,t,!1),a=this.compileExpression(e.right,this.currentType,1,!1),this.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=!0;default:h=this.module.createBinary(p.BinaryOp.ShlI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.ShlI64,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.ShlI64:p.BinaryOp.ShlI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,l.Token.operatorToString(e.operator),this.currentType.toString()),this.module.createUnreachable();case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.GREATERTHAN_GREATERTHAN_EQUALS:_=!0;case l.Token.GREATERTHAN_GREATERTHAN:switch(n=this.compileExpressionRetainType(e.left,t,!0),a=this.compileExpression(e.right,this.currentType,1,!0),this.currentType.kind){default:h=this.module.createBinary(p.BinaryOp.ShrI32,n,a);break;case 3:h=this.module.createBinary(p.BinaryOp.ShrI64,n,a);break;case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.ShrI64:p.BinaryOp.ShrI32,n,a);break;case 5:case 6:case 10:case 7:h=this.module.createBinary(p.BinaryOp.ShrU32,n,a);break;case 8:h=this.module.createBinary(p.BinaryOp.ShrU64,n,a);break;case 9:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.ShrU64:p.BinaryOp.ShrU32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,l.Token.operatorToString(e.operator),this.currentType.toString()),this.module.createUnreachable();case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:_=!0;case l.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN:switch(n=this.compileExpressionRetainType(e.left,t,!0),a=this.compileExpression(e.right,this.currentType,1,!0),this.currentType.kind){case 0:case 1:y=!0;default:h=this.module.createBinary(p.BinaryOp.ShrU32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.ShrU64,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.ShrU64:p.BinaryOp.ShrU32,n,a);break;case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.AMPERSAND_EQUALS:_=!0;case l.Token.AMPERSAND:if(n=this.compileExpressionRetainType(e.left,t,!1),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"&",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=!0;default:h=this.module.createBinary(p.BinaryOp.AndI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.AndI64,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.AndI64:p.BinaryOp.AndI32,n,a);break;case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.BAR_EQUALS:_=!0;case l.Token.BAR:if(n=this.compileExpressionRetainType(e.left,t,!1),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"|",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=!0;default:h=this.module.createBinary(p.BinaryOp.OrI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.OrI64,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.OrI64:p.BinaryOp.OrI32,n,a);break;case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.CARET_EQUALS:_=!0;case l.Token.CARET:if(n=this.compileExpressionRetainType(e.left,t,!1),_)a=this.compileExpression(e.right,this.currentType,1,!1);else{if(i=this.currentType,a=this.compileExpressionRetainType(e.right,i,!1),o=this.currentType,!(s=d.Type.commonCompatible(i,o,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"^",i.toString(),o.toString()),this.currentType=t,this.module.createUnreachable();n=this.convertExpression(n,i,s,1,e.left),a=this.convertExpression(a,o,s,1,e.right)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=!0;default:h=this.module.createBinary(p.BinaryOp.XorI32,n,a);break;case 3:case 8:h=this.module.createBinary(p.BinaryOp.XorI64,n,a);break;case 9:case 4:h=this.module.createBinary(this.options.isWasm64?p.BinaryOp.XorI64:p.BinaryOp.XorI32,n,a);break;case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.AMPERSAND_AMPERSAND:n=this.compileExpressionRetainType(e.left,t),a=this.compileExpression(e.right,this.currentType,1,!1),(h=this.module.cloneExpression(n,!0,0))||(f=this.currentFunction.getAndFreeTempLocal(this.currentType),n=this.module.createTeeLocal(f.index,n)),y=this.currentType.is(36),u=g(n,this.currentType,this.module),h=h?this.module.createIf(u,a,h):this.module.createIf(u,a,this.module.createGetLocal(assert(f,"tempLocal must be set").index,this.currentType.toNativeType()));break;case l.Token.BAR_BAR:n=this.compileExpressionRetainType(e.left,t),a=this.compileExpression(e.right,this.currentType,1,!1),(h=this.module.cloneExpression(n,!0,0))||(f=this.currentFunction.getAndFreeTempLocal(this.currentType),n=this.module.createTeeLocal(f.index,n)),y=this.currentType.is(36),u=g(n,this.currentType,this.module),h=h?this.module.createIf(u,h,a):this.module.createIf(u,this.module.createGetLocal(assert(f,"tempLocal must be set").index,this.currentType.toNativeType()),a);break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("not implemented")}return y&&r&&(assert(this.currentType.is(36),"small integer type expected"),h=m(h,this.currentType,this.module)),_?this.compileAssignmentWithValue(e.left,h,t!=d.Type.void):h},t.prototype.compileAssignment=function(e,t,r){var n=this.program.resolveExpression(e,this.currentFunction);if(!n)return this.module.createUnreachable();var i,a=n.element;switch(a.kind){case u.ElementKind.GLOBAL:if(!this.compileGlobal(a))return this.module.createUnreachable();assert(a.type!=d.Type.void,"concrete type expected");case u.ElementKind.LOCAL:case u.ElementKind.FIELD:i=a.type;break;case u.ElementKind.PROPERTY:var o=a.setterPrototype;if(o){var s=o.resolve();if(!s)return this.module.createUnreachable();var p=s.signature;assert(1==p.parameterTypes.length),i=p.parameterTypes[0];break}return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,a.internalName),this.module.createUnreachable();case u.ElementKind.FUNCTION_PROTOTYPE:if(e.kind==h.NodeKind.ELEMENTACCESS&&n.target&&n.target.kind==u.ElementKind.CLASS){if(a.simpleName!=n.target.prototype.fnIndexedGet)return this.error(c.DiagnosticCode.Index_signature_is_missing_in_type_0,e.range,n.target.toString()),this.module.createUnreachable();var l=a.resolve(null);if(l){i=l.signature.returnType;break}}default:return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable()}var _=this.compileExpression(t,i);return this.compileAssignmentWithValue(e,_,r!=d.Type.void)},t.prototype.compileAssignmentWithValue=function(e,t,r){void 0===r&&(r=!1);var n=this.program.resolveExpression(e,this.currentFunction);if(!n)return this.module.createUnreachable();var i=n.element;switch(i.kind){case u.ElementKind.LOCAL:return this.currentType=r?i.type:d.Type.void,i.is(u.ElementFlags.CONSTANT)?(this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,i.internalName),this.module.createUnreachable()):r?this.module.createTeeLocal(i.index,t):this.module.createSetLocal(i.index,t);case u.ElementKind.GLOBAL:if(!this.compileGlobal(i))return this.module.createUnreachable();if(assert(i.type!=d.Type.void,"concrete type expected"),this.currentType=r?i.type:d.Type.void,i.is(u.ElementFlags.CONSTANT))return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,i.internalName),this.module.createUnreachable();if(r){var a=i.type.toNativeType();return this.module.createBlock(null,[this.module.createSetGlobal(i.internalName,t),this.module.createGetGlobal(i.internalName,a)],a)}return this.module.createSetGlobal(i.internalName,t);case u.ElementKind.FIELD:if(i.prototype.isReadonly)return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,i.internalName),this.module.createUnreachable();assert(n.isInstanceTarget);var o=this.compileExpression(n.targetExpression,n.target.type);this.currentType=r?i.type:d.Type.void;a=i.type.toNativeType();if(r){var s=this.currentFunction.getAndFreeTempLocal(i.type);return this.module.createBlock(null,[this.module.createSetLocal(s.index,t),this.module.createStore(i.type.size>>3,o,this.module.createGetLocal(s.index,a),a,i.memoryOffset),this.module.createGetLocal(s.index,a)],a)}return this.module.createStore(i.type.size>>3,o,t,a,i.memoryOffset);case u.ElementKind.PROPERTY:var p=i.setterPrototype;if(p){if(!(E=p.resolve()))return this.module.createUnreachable();if(!r){if(E.is(u.ElementFlags.INSTANCE)){assert(n.isInstanceTarget);var l=this.compileExpression(n.targetExpression,n.target.type);return this.makeCallDirect(E,[l,t])}return this.makeCallDirect(E,[t])}var _=i.getterPrototype;if(assert(null!=_),!(m=_.resolve()))return this.module.createUnreachable();var y=m.signature.returnType;if(E.is(u.ElementFlags.INSTANCE)){assert(n.isInstanceTarget);l=this.compileExpression(n.targetExpression,n.target.type),s=this.currentFunction.getAndFreeTempLocal(y);return this.module.createBlock(null,[this.makeCallDirect(E,[this.module.createTeeLocal(s.index,l),t]),this.makeCallDirect(m,[this.module.createGetLocal(s.index,y.toNativeType())])],y.toNativeType())}return this.module.createBlock(null,[this.makeCallDirect(E,[t]),this.makeCallDirect(m)],y.toNativeType())}return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,i.internalName),this.module.createUnreachable();case u.ElementKind.FUNCTION_PROTOTYPE:if(e.kind==h.NodeKind.ELEMENTACCESS){var m;if(assert(n.isInstanceTarget),!(m=i.resolve()))return this.module.createUnreachable();var f=n.target.prototype.fnIndexedSet,g=void 0;if(null!=f&&n.target.members&&(g=n.target.members.get(f))&&g.kind==u.ElementKind.FUNCTION_PROTOTYPE){var E;if(!(E=g.resolve()))return this.module.createUnreachable();var T=n.target.type,A=(o=this.compileExpression(n.targetExpression,T),this.compileExpression(e.elementExpression,d.Type.i32));if(r){var I=this.currentFunction.getTempLocal(T),v=this.currentFunction.getAndFreeTempLocal(this.currentType);y=m.signature.returnType;return this.currentFunction.freeTempLocal(I),this.module.createBlock(null,[this.makeCallDirect(E,[this.module.createTeeLocal(I.index,o),this.module.createTeeLocal(v.index,A),t]),this.makeCallDirect(m,[this.module.createGetLocal(I.index,I.type.toNativeType()),this.module.createGetLocal(v.index,v.type.toNativeType())])],y.toNativeType())}return this.makeCallDirect(E,[o,A,t])}return this.error(c.DiagnosticCode.Index_signature_in_type_0_only_permits_reading,e.range,n.target.internalName),this.module.createUnreachable()}}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable()},t.prototype.compileCallExpression=function(e,t){var r=this.program.resolveExpression(e.expression,this.currentFunction);if(!r)return this.module.createUnreachable();var n,i,a=r.element;switch(a.kind){case u.ElementKind.FUNCTION_PROTOTYPE:var o=a;if(o.is(u.ElementFlags.BUILTIN)){var l=s.compileCall(this,o,o.resolveBuiltinTypeArguments(e.typeArguments,this.currentFunction.contextualTypeArguments),e.arguments,t,e);return l||(this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable())}var h=o.resolveUsingTypeArguments(e.typeArguments,this.currentFunction.contextualTypeArguments,e);if(!h)return this.module.createUnreachable();var _=0;if(h.is(u.ElementFlags.INSTANCE)){if(assert(r.isInstanceTarget),!(_=this.compileExpression(r.targetExpression,r.target.type)))return this.module.createUnreachable()}else assert(!r.isInstanceTarget);return this.compileCallDirect(h,e.arguments,e,_);case u.ElementKind.LOCAL:if(n=a.type.functionType){i=this.module.createGetLocal(a.index,p.NativeType.I32);break}return this.error(c.DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,e.range,a.type.toString()),this.module.createUnreachable();case u.ElementKind.GLOBAL:if(n=a.type.functionType){i=this.module.createGetGlobal(a.internalName,a.type.toNativeType());break}return this.error(c.DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,e.range,a.type.toString()),this.module.createUnreachable();case u.ElementKind.FIELD:if(n=a.type.functionType){var y=this.compileExpression(assert(r.targetExpression),d.Type.u32);i=this.module.createLoad(4,!1,y,p.NativeType.I32,a.memoryOffset);break}return this.error(c.DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,e.range,a.type.toString()),this.module.createUnreachable();case u.ElementKind.PROPERTY:default:return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable()}return this.compileCallIndirect(n,i,e.arguments,e)},t.prototype.checkCallSignature=function(e,t,r,n){if(r!=(null!=e.thisType))return this.error(c.DiagnosticCode.Operation_not_supported,n.range),!1;var i=e.hasRest;if(i)return this.error(c.DiagnosticCode.Operation_not_supported,n.range),!1;var a=e.requiredParameters,o=e.parameterTypes.length;return to&&!i)||(this.error(c.DiagnosticCode.Expected_0_arguments_but_got_1,n.range,o.toString(),t.toString()),!1)},t.prototype.compileCallDirect=function(e,t,r,n){void 0===n&&(n=0);var i=t.length,a=e.signature;if(!this.checkCallSignature(a,i,0!=n,r))return this.module.createUnreachable();var o=n?i+1:i,s=new Array(o),c=0;n&&(s[0]=n,c=1);for(var p=a.parameterTypes,u=0;u=i),!this.compileFunction(e))return this.module.createUnreachable();if(r=0),this.currentType=l.type,this.module.createGetLocal(l.index,this.currentType.toNativeType()));case u.ElementKind.GLOBAL:return l.is(u.ElementFlags.BUILTIN)?s.compileGetConstant(this,l,e):this.compileGlobal(l)?(assert(l.type!=d.Type.void),l.is(u.ElementFlags.INLINED)?this.compileInlineConstant(l,t,r):(this.currentType=l.type,this.module.createGetGlobal(l.internalName,this.currentType.toNativeType()))):this.module.createUnreachable();case u.ElementKind.ENUMVALUE:return l.is(u.ElementFlags.COMPILED)?(this.currentType=d.Type.i32,l.is(u.ElementFlags.INLINED)?this.module.createI32(l.constantValue):this.module.createGetGlobal(l.internalName,p.NativeType.I32)):(this.error(c.DiagnosticCode.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums,e.range),this.currentType=d.Type.i32,this.module.createUnreachable())}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable()},t.prototype.compileLiteralExpression=function(e,t,r){switch(void 0===r&&(r=!1),e.literalKind){case 4:assert(!r);var n=t.classType;return n&&n==this.program.elements.get("Array")&&n.typeArguments&&1==n.typeArguments.length?this.compileStaticArray(n.typeArguments[0],e.elementExpressions):(this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable());case 0:var i=e.value;return r&&(i=-i),t==d.Type.f32?this.module.createF32(i):(this.currentType=d.Type.f64,this.module.createF64(i));case 1:var a=e.value;switch(r&&(a=i64_sub(i64_new(0),a)),t.kind){case 0:if(i64_is_i8(a))return this.module.createI32(i64_low(a));break;case 1:if(i64_is_i16(a))return this.module.createI32(i64_low(a));break;case 2:if(i64_is_i32(a))return this.module.createI32(i64_low(a));break;case 5:if(i64_is_u8(a))return this.module.createI32(i64_low(a));break;case 6:if(i64_is_u16(a))return this.module.createI32(i64_low(a));break;case 7:if(i64_is_u32(a))return this.module.createI32(i64_low(a));break;case 10:if(i64_is_bool(a))return this.module.createI32(i64_low(a));break;case 4:case 9:if(!this.options.isWasm64){if(i64_is_u32(a))return this.module.createI32(i64_low(a));break}return this.module.createI64(i64_low(a),i64_high(a));case 3:case 8:return this.module.createI64(i64_low(a),i64_high(a));case 11:if(i64_is_f32(a))return this.module.createF32(i64_to_f32(a));break;case 12:if(i64_is_f64(a))return this.module.createF64(i64_to_f64(a));break;case 13:break;default:assert(!1)}return i64_is_i32(a)?(this.currentType=d.Type.i32,this.module.createI32(i64_low(a))):(this.currentType=d.Type.i64,this.module.createI64(i64_low(a),i64_high(a)));case 2:return assert(!r),this.compileStaticString(e.value)}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.currentType=t,this.module.createUnreachable()},t.prototype.compileStaticString=function(e){var t=this.stringSegments.get(e);if(!t){var r=e.length,n=new Uint8Array(4+2*r);n[0]=255&r,n[1]=r>>>8&255,n[2]=r>>>16&255,n[3]=r>>>24&255;for(var i=0;i>>8&255;t=this.addMemorySegment(n,this.options.usizeType.byteSize),this.stringSegments.set(e,t)}var a=t.offset,o=this.program.types.get("string");return this.currentType=o||this.options.usizeType,this.options.isWasm64?this.module.createI64(i64_low(a),i64_high(a)):(assert(i64_is_i32(a)),this.module.createI32(i64_low(a)))},t.prototype.compileStaticArray=function(e,t){var r,n=!0,i=t.length,a=e.toNativeType();switch(a){case p.NativeType.I32:r=changetype(new Int32Array(i));break;case p.NativeType.I64:r=changetype(new Array(i));break;case p.NativeType.F32:r=changetype(new Float32Array(i));break;case p.NativeType.F64:r=changetype(new Float64Array(i));break;default:throw new Error("concrete type expected")}for(var o,s=new Array(i),c=0;c=0),i=this.compileExpression(n.targetExpression,this.options.usizeType,0),this.currentType=a.type,this.module.createLoad(a.type.size>>3,a.type.is(5),i,a.type.toNativeType(),a.memoryOffset);case u.ElementKind.PROPERTY:var o=a.getterPrototype;if(o){var l=o.resolve(null);if(!l)return this.module.createUnreachable();var h=l.signature;return this.checkCallSignature(h,0,l.is(u.ElementFlags.INSTANCE),e)?l.instanceMethodOf?(i=this.compileExpression(n.targetExpression,l.instanceMethodOf.type),this.currentType=h.returnType,this.compileCallDirect(l,[],e,i)):(this.currentType=h.returnType,this.compileCallDirect(l,[],e)):this.module.createUnreachable()}return this.error(c.DiagnosticCode.Property_0_does_not_exist_on_type_1,e.range,a.simpleName,a.parent.toString()),this.module.createUnreachable()}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable()},t.prototype.compileTernaryExpression=function(e,t){var r=g(this.compileExpression(e.condition,d.Type.u32,0),this.currentType,this.module),n=this.compileExpression(e.ifThen,t),i=this.compileExpression(e.ifElse,t);return this.module.createIf(r,n,i)},t.prototype.compileUnaryPostfixExpression=function(e,t){var r,n,i,a,o=this.compileExpression(e.operand,t==d.Type.void?d.Type.i32:t,0,!1),s=!1;switch(e.operator){case l.Token.PLUS_PLUS:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:s=!0;default:r=p.BinaryOp.AddI32,n=p.NativeType.I32,i=this.module.createI32(1);break;case 9:case 4:r=this.options.isWasm64?p.BinaryOp.AddI64:p.BinaryOp.AddI32,n=this.options.isWasm64?p.NativeType.I64:p.NativeType.I32,i=this.currentType.toNativeOne(this.module);break;case 3:case 8:r=p.BinaryOp.AddI64,n=p.NativeType.I64,i=this.module.createI64(1);break;case 11:r=p.BinaryOp.AddF32,n=p.NativeType.F32,i=this.module.createF32(1);break;case 12:r=p.BinaryOp.AddF64,n=p.NativeType.F64,i=this.module.createF64(1);break;case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;case l.Token.MINUS_MINUS:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:s=!0;default:r=p.BinaryOp.SubI32,n=p.NativeType.I32,i=this.module.createI32(1);break;case 9:case 4:r=this.options.isWasm64?p.BinaryOp.SubI64:p.BinaryOp.SubI32,n=this.options.isWasm64?p.NativeType.I64:p.NativeType.I32,i=this.currentType.toNativeOne(this.module);break;case 3:case 8:r=p.BinaryOp.SubI64,n=p.NativeType.I64,i=this.module.createI64(1);break;case 11:r=p.BinaryOp.SubF32,n=p.NativeType.F32,i=this.module.createF32(1);break;case 12:r=p.BinaryOp.SubF64,n=p.NativeType.F64,i=this.module.createF64(1);break;case 13:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("concrete type expected")}break;default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("unary postfix operator expected")}var u=null;return t==d.Type.void?a=this.module.createBinary(r,o,i):(u=this.currentFunction.getTempLocal(this.currentType),a=this.module.createBinary(r,this.module.createGetLocal(u.index,n),i)),s&&(assert(this.currentType.is(36)),a=m(a,this.currentType,this.module)),a=this.compileAssignmentWithValue(e.operand,a,!1),t==d.Type.void?(assert(!u),a):(this.currentType=assert(u).type,this.currentFunction.freeTempLocal(u),this.module.createBlock(null,[this.module.createSetLocal(u.index,o),a,this.module.createGetLocal(u.index,n)],n))},t.prototype.compileUnaryPrefixExpression=function(e,t,r){void 0===r&&(r=!0);var n,i=!1,a=!1;switch(e.operator){case l.Token.PLUS:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();n=this.compileExpression(e.operand,t==d.Type.void?d.Type.i32:t,0,!1),i=this.currentType.is(36);break;case l.Token.MINUS:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();if(e.operand.kind!=h.NodeKind.LITERAL||1!=e.operand.literalKind&&0!=e.operand.literalKind)switch(n=this.compileExpression(e.operand,t==d.Type.void?d.Type.i32:t,0,!1),this.currentType.kind){case 0:case 1:case 5:case 6:case 10:i=!0;default:n=this.module.createBinary(p.BinaryOp.SubI32,this.module.createI32(0),n);break;case 9:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();case 4:n=this.module.createBinary(this.options.isWasm64?p.BinaryOp.SubI64:p.BinaryOp.SubI32,this.currentType.toNativeZero(this.module),n);break;case 3:case 8:n=this.module.createBinary(p.BinaryOp.SubI64,this.module.createI64(0),n);break;case 11:n=this.module.createUnary(p.UnaryOp.NegF32,n);break;case 12:n=this.module.createUnary(p.UnaryOp.NegF64,n)}else n=this.compileLiteralExpression(e.operand,t,!0),this.addDebugLocation(n,e.range);break;case l.Token.PLUS_PLUS:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();switch(a=!0,n=this.compileExpression(e.operand,t==d.Type.void?d.Type.i32:t,0,!1),this.currentType.kind){case 0:case 1:case 5:case 6:case 10:i=!0;default:n=this.module.createBinary(p.BinaryOp.AddI32,n,this.module.createI32(1));break;case 9:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();case 4:n=this.module.createBinary(this.options.isWasm64?p.BinaryOp.AddI64:p.BinaryOp.AddI32,n,this.currentType.toNativeOne(this.module));break;case 3:case 8:n=this.module.createBinary(p.BinaryOp.AddI64,n,this.module.createI64(1));break;case 11:n=this.module.createBinary(p.BinaryOp.AddF32,n,this.module.createF32(1));break;case 12:n=this.module.createBinary(p.BinaryOp.AddF64,n,this.module.createF64(1))}break;case l.Token.MINUS_MINUS:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();switch(a=!0,n=this.compileExpression(e.operand,t==d.Type.void?d.Type.i32:t,0,!1),this.currentType.kind){case 0:case 1:case 5:case 6:case 10:i=!0;default:n=this.module.createBinary(p.BinaryOp.SubI32,n,this.module.createI32(1));break;case 9:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();case 4:n=this.module.createBinary(this.options.isWasm64?p.BinaryOp.SubI64:p.BinaryOp.SubI32,n,this.currentType.toNativeOne(this.module));break;case 3:case 8:n=this.module.createBinary(p.BinaryOp.SubI64,n,this.module.createI64(1));break;case 11:n=this.module.createBinary(p.BinaryOp.SubF32,n,this.module.createF32(1));break;case 12:n=this.module.createBinary(p.BinaryOp.SubF64,n,this.module.createF64(1))}break;case l.Token.EXCLAMATION:n=f(n=this.compileExpression(e.operand,t==d.Type.void?d.Type.i32:t,0,!0),this.currentType,this.module),this.currentType=d.Type.bool;break;case l.Token.TILDE:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();switch(n=this.compileExpression(e.operand,t==d.Type.void?d.Type.i32:t.is(8)?d.Type.i64:t,t==d.Type.void?0:1,!1),this.currentType.kind){case 0:case 1:case 5:case 6:case 10:i=!0;default:n=this.module.createBinary(p.BinaryOp.XorI32,n,this.module.createI32(-1));break;case 9:if(this.currentType.isReference)return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.createUnreachable();case 4:n=this.module.createBinary(this.options.isWasm64?p.BinaryOp.XorI64:p.BinaryOp.XorI32,n,this.currentType.toNativeNegOne(this.module));break;case 3:case 8:n=this.module.createBinary(p.BinaryOp.XorI64,n,this.module.createI64(-1,-1))}break;case l.Token.TYPEOF:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("not implemented");default:throw this.error(c.DiagnosticCode.Operation_not_supported,e.range),new Error("unary operator expected")}return i&&r&&(assert(this.currentType.is(36)),n=m(n,this.currentType,this.module)),a?this.compileAssignmentWithValue(e.operand,n,t!=d.Type.void):n},t.prototype.addDebugLocation=function(e,t){if(this.options.sourceMap){var r=t.source;r.debugInfoIndex<0&&(r.debugInfoIndex=this.module.addDebugInfoFile(r.normalizedPath)),t.debugInfoRef=e,this.currentFunction.debugLocations||(this.currentFunction.debugLocations=[]),this.currentFunction.debugLocations.push(t)}},t}(c.DiagnosticEmitter);function m(e,t,r){switch(t.kind){case 0:e=r.createBinary(p.BinaryOp.ShrI32,r.createBinary(p.BinaryOp.ShlI32,e,r.createI32(24)),r.createI32(24));break;case 1:e=r.createBinary(p.BinaryOp.ShrI32,r.createBinary(p.BinaryOp.ShlI32,e,r.createI32(16)),r.createI32(16));break;case 5:e=r.createBinary(p.BinaryOp.AndI32,e,r.createI32(255));break;case 6:e=r.createBinary(p.BinaryOp.AndI32,e,r.createI32(65535));break;case 10:e=r.createBinary(p.BinaryOp.AndI32,e,r.createI32(1));break;default:throw new Error("small integer type expected")}return e}function f(e,t,r){switch(t.kind){default:e=r.createUnary(p.UnaryOp.EqzI32,e);break;case 3:case 8:e=r.createUnary(p.UnaryOp.EqzI64,e);break;case 9:case 4:e=r.createUnary(64==t.size?p.UnaryOp.EqzI64:p.UnaryOp.EqzI32,e);break;case 11:e=r.createBinary(p.BinaryOp.EqF32,e,r.createF32(0));break;case 12:e=r.createBinary(p.BinaryOp.EqF64,e,r.createF64(0));break;case 13:throw new Error("concrete type expected")}return e}function g(e,t,r){switch(t.kind){case 3:case 8:e=r.createBinary(p.BinaryOp.NeI64,e,r.createI64(0));break;case 9:case 4:64==t.size&&(e=r.createBinary(p.BinaryOp.NeI64,e,r.createI64(0)));break;case 11:e=r.createBinary(p.BinaryOp.NeF32,e,r.createF32(0));break;case 12:e=r.createBinary(p.BinaryOp.NeF64,e,r.createF64(0));break;case 13:throw new Error("concrete type expected")}return e}t.Compiler=y,t.makeSmallIntegerWrap=m,t.makeIsFalseish=f,t.makeIsTrueish=g},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=47;function i(e){for(var t,r=0,i=e.length;r+10||i=0;)if(e.charCodeAt(a)==n){r-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=t?e.substring(0,a):e.substring(0,a)+e.substring(r+3),i-=r+3-a,r=a-1);break}if(a<0&&r>0&&(2!=r||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){i=(e=e.substring(r+4)).length;continue}}}r++}return i>0?e:"."}function a(e){for(var t=e.length;--t>0;)if(e.charCodeAt(t)==n)return e.substring(0,t);return"."}t.normalize=i,t.resolve=function(e,t){return e.startsWith("std/")?e:i(a(t)+String.fromCharCode(n)+e)},t.dirname=a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=65&&e<=90||e>=97&&e<=122||36==e||95==e||e>127&&!((t=e)<0||t>65535)&&a(t,n);var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||36==e||95==e||e>127&&!((t=e)<0||t>65535)&&a(t,i);var t};var n=[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,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,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,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,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,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,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,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,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,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,11310,11312,11358,11360,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,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,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,43968,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],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,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,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,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,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,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,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,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,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,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,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,8204,8205,8255,8256,8276,8276,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,11310,11312,11358,11360,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,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,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,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,t){if(e"),null}if(e.skip(o.Token.BAR)){if(!e.skip(o.Token.NULL))return r||this.error(s.DiagnosticCode._0_expected,e.range(e.pos),"null"),null;_=!0}n=p.Node.createType(h,d,_,e.range(a,e.pos))}for(;e.skip(o.Token.OPENBRACKET);){var m=e.tokenPos;if(!e.skip(o.Token.CLOSEBRACKET))return r||this.error(s.DiagnosticCode._0_expected,e.range(),"]"),null;var f=e.range(m,e.pos);if(_=!1,e.skip(o.Token.BAR)){if(!e.skip(o.Token.NULL))return r||this.error(s.DiagnosticCode._0_expected,e.range(),"null"),null;_=!0}if(n=p.Node.createType(p.Node.createIdentifierExpression("Array",f),[n],_,e.range(a,e.pos)),_)break}return n},t.prototype.tryParseSignature=function(e){var t,r=e.mark(),n=e.tokenPos,i=null,a=null,c=!1;if(e.skip(o.Token.CLOSEPAREN))c=!0,e.discard(r),i=[];else{c=!1;do{var u=p.ParameterKind.DEFAULT;if(e.skip(o.Token.DOT_DOT_DOT)&&(c=!0,e.discard(r),u=p.ParameterKind.REST),e.skip(o.Token.THIS)){if(!e.skip(o.Token.COLON))return e.reset(r),this.tryParseSignatureIsSignature=!1,null;c=!0,e.discard(r);var l=this.parseType(e,!1);if(!l)return null;if(l.kind!=p.NodeKind.TYPE)return this.error(s.DiagnosticCode.Operation_not_supported,l.range),this.tryParseSignatureIsSignature=!0,null;a=l}else{if(!e.skip(o.Token.IDENTIFIER))return c?this.error(s.DiagnosticCode.Identifier_expected,e.range()):e.reset(r),this.tryParseSignatureIsSignature=c,null;var h=p.Node.createIdentifierExpression(e.readIdentifier(),e.range(e.tokenPos,e.pos));if(e.skip(o.Token.QUESTION)&&(c=!0,e.discard(r),u==p.ParameterKind.REST?this.error(s.DiagnosticCode.A_rest_parameter_cannot_be_optional,e.range()):u=p.ParameterKind.OPTIONAL),e.skip(o.Token.COLON)){c=!0,e.discard(r);var d=this.parseType(e);if(!d)return this.tryParseSignatureIsSignature=c,null;var _=new p.ParameterNode;_.parameterKind=u,_.name=h,_.type=d,i?i.push(_):i=[_]}else c&&this.error(s.DiagnosticCode.Type_expected,e.range())}}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEPAREN))return this.error(s.DiagnosticCode._0_expected,e.range(),")"),this.tryParseSignatureIsSignature=c,null}return e.skip(o.Token.EQUALS_GREATERTHAN)?(c=!0,e.discard(r),(t=this.parseType(e))?(this.tryParseSignatureIsSignature=!0,p.Node.createSignature(i||[],t,a,!1,e.range(n,e.pos))):(this.tryParseSignatureIsSignature=c,null)):(c?this.error(s.DiagnosticCode._0_expected,e.range(),"=>"):e.reset(r),this.tryParseSignatureIsSignature=c,null)},t.prototype.parseDecorator=function(e){var t=e.tokenPos;if(e.skip(o.Token.IDENTIFIER)){for(var r,n=e.readIdentifier(),i=p.Node.createIdentifierExpression(n,e.range(t,e.pos));e.skip(o.Token.DOT);){if(!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;n=e.readIdentifier(),i=p.Node.createPropertyAccessExpression(i,p.Node.createIdentifierExpression(n,e.range()),e.range(t,e.pos))}if(!e.skip(o.Token.OPENPAREN))return p.Node.createDecorator(i,null,e.range(t,e.pos));if(r=this.parseArguments(e))return p.Node.createDecorator(i,r,e.range(t,e.pos))}else this.error(s.DiagnosticCode.Identifier_expected,e.range());return null},t.prototype.parseVariable=function(e,t,r){var n=t&&t.length?t[0].range.start:e.tokenPos,i=new Array,a=p.hasModifier(p.ModifierKind.DECLARE,t);do{var s=this.parseVariableDeclaration(e,a,t,r);if(!s)return null;i.push(s)}while(e.skip(o.Token.COMMA));var c=p.Node.createVariableStatement(i,t,r,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),c},t.prototype.parseVariableDeclaration=function(e,t,r,n){if(void 0===t&&(t=!1),!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;var i=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),a=null;e.skip(o.Token.COLON)&&(a=this.parseType(e));var c=null;if(e.skip(o.Token.EQUALS)){if(t&&this.error(s.DiagnosticCode.Initializers_are_not_allowed_in_ambient_contexts,e.range()),!(c=this.parseExpression(e,1)))return null}else p.hasModifier(p.ModifierKind.CONST,r)?p.hasModifier(p.ModifierKind.DECLARE,r)||this.error(s.DiagnosticCode._const_declarations_must_be_initialized,i.range):a||this.error(s.DiagnosticCode.Type_expected,e.range(e.pos));return p.Node.createVariableDeclaration(i,a,c,r,n,o.Range.join(i.range,e.range()))},t.prototype.parseEnum=function(e,t,r){var n=t&&t.length?t[0].range.start:e.tokenPos;if(e.next()!=o.Token.IDENTIFIER)return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;var i=p.Node.createIdentifierExpression(e.readIdentifier(),e.range());if(e.next()!=o.Token.OPENBRACE)return this.error(s.DiagnosticCode._0_expected,e.range(),"{"),null;var a=new Array;if(!e.skip(o.Token.CLOSEBRACE)){do{var c=this.parseEnumValue(e);if(!c)return null;a.push(c)}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEBRACE))return this.error(s.DiagnosticCode._0_expected,e.range(),"}"),null}var u=p.Node.createEnumDeclaration(i,a,t,r,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),u},t.prototype.parseEnumValue=function(e){if(!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;var t=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),r=null;return e.skip(o.Token.EQUALS)&&!(r=this.parseExpression(e,1))?null:p.Node.createEnumValueDeclaration(t,r,o.Range.join(t.range,e.range()))},t.prototype.parseReturn=function(e){var t=null;if(e.peek(!0)!=o.Token.SEMICOLON&&e.nextToken!=o.Token.CLOSEBRACE&&!e.nextTokenOnNewLine&&!(t=this.parseExpression(e)))return null;var r=p.Node.createReturnStatement(t,e.range());return e.skip(o.Token.SEMICOLON),r},t.prototype.parseTypeParameters=function(e){var t=new Array;if(e.skip(o.Token.GREATERTHAN))this.error(s.DiagnosticCode.Type_parameter_list_cannot_be_empty,e.range());else{do{var r=this.parseTypeParameter(e);if(!r)return null;t.push(r)}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.GREATERTHAN))return this.error(s.DiagnosticCode._0_expected,e.range(),">"),null}return t},t.prototype.parseTypeParameter=function(e){if(e.next()==o.Token.IDENTIFIER){var t=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),r=null;if(e.skip(o.Token.EXTENDS)){var n=this.parseType(e);if(!n)return null;if(n.kind!=p.NodeKind.TYPE)return this.error(s.DiagnosticCode.Operation_not_supported,n.range),null;r=n}return p.Node.createTypeParameter(t,r,o.Range.join(t.range,e.range()))}return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null},t.prototype.parseParameters=function(e){var t=new Array,r=null,n=!1,i=!1;if(e.peek()!=o.Token.CLOSEPAREN)do{var a=this.parseParameter(e);if(!a)return null;switch(r&&!i&&(this.error(s.DiagnosticCode.A_rest_parameter_must_be_last_in_a_parameter_list,r.name.range),i=!0),a.parameterKind){default:n&&this.error(s.DiagnosticCode.A_required_parameter_cannot_follow_an_optional_parameter,a.name.range);break;case p.ParameterKind.OPTIONAL:n=!0;break;case p.ParameterKind.REST:r=a}t.push(a)}while(e.skip(o.Token.COMMA));return e.skip(o.Token.CLOSEPAREN)?t:(this.error(s.DiagnosticCode._0_expected,e.range(),")"),null)},t.prototype.parseParameter=function(e,t){void 0===t&&(t=!1);var r=!1,n=!1,i=null;if(e.skip(o.Token.DOT_DOT_DOT)&&(r=!0,i=e.range()),e.skip(o.Token.IDENTIFIER)){r||(i=e.range());var a=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),c=null;if((n=e.skip(o.Token.QUESTION))&&r&&this.error(s.DiagnosticCode.A_rest_parameter_cannot_be_optional,a.range),e.skip(o.Token.COLON)&&!(c=this.parseType(e)))return null;var u=null;return!e.skip(o.Token.EQUALS)||(r&&this.error(s.DiagnosticCode.A_rest_parameter_cannot_have_an_initializer,a.range),n?this.error(s.DiagnosticCode.Parameter_cannot_have_question_mark_and_initializer,a.range):n=!0,u=this.parseExpression(e,1))?p.Node.createParameter(a,c,u,r?p.ParameterKind.REST:n?p.ParameterKind.OPTIONAL:p.ParameterKind.DEFAULT,o.Range.join(i,e.range())):null}return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null},t.prototype.parseFunction=function(e,t,r){var n=t&&t.length?t[0].range.start:e.tokenPos;if(!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range(e.pos)),null;var i=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),a=-1,c=null;if(e.skip(o.Token.LESSTHAN)&&(a=e.tokenPos,!(c=this.parseTypeParameters(e))))return null;if(!e.skip(o.Token.OPENPAREN))return this.error(s.DiagnosticCode._0_expected,e.range(e.pos),"("),null;a<0&&(a=e.tokenPos);var u=this.parseParameters(e);if(!u)return null;var l=p.hasModifier(p.ModifierKind.SET,t);l&&(1!=u.length&&this.error(s.DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,i.range),u.length&&u[0].initializer&&this.error(s.DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,i.range)),p.hasModifier(p.ModifierKind.GET,t)&&u.length&&this.error(s.DiagnosticCode.A_get_accessor_cannot_have_parameters,i.range);var h=null;if(e.skip(o.Token.COLON)&&!(h=this.parseType(e,l)))return null;h||(h=p.Node.createOmittedType(e.range(e.pos)),l||this.error(s.DiagnosticCode.Type_expected,h.range));var d=p.Node.createSignature(u,h,null,!1,e.range(a,e.pos)),_=p.hasModifier(p.ModifierKind.DECLARE,t),y=null;if(e.skip(o.Token.OPENBRACE)){if(_&&this.error(s.DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,e.range()),!(y=this.parseBlockStatement(e,!1)))return null}else _||this.error(s.DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,e.range(e.pos));var m=p.Node.createFunctionDeclaration(i,c,d,y,t,r,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),m},t.prototype.parseFunctionExpression=function(e){var t,r=e.tokenPos,n=!1;if(e.token==o.Token.FUNCTION){if(t=e.skip(o.Token.IDENTIFIER)?p.Node.createIdentifierExpression(e.readIdentifier(),e.range()):p.Node.createEmptyIdentifierExpression(e.range(e.pos)),!e.skip(o.Token.OPENPAREN))return this.error(s.DiagnosticCode._0_expected,e.range(e.pos),"("),null}else n=!0,assert(e.token==o.Token.OPENPAREN),t=p.Node.createEmptyIdentifierExpression(e.range(e.tokenPos));var i=e.pos,a=this.parseParameters(e);return a?this.parseFunctionExpressionCommon(e,t,a,n,r,i):null},t.prototype.parseFunctionExpressionCommon=function(e,t,r,n,i,a){void 0===i&&(i=-1),void 0===a&&(a=-1),i<0&&(i=t.range.start),a<0&&(a=i);var c=null;if(e.skip(o.Token.COLON)){if(!(c=this.parseType(e)))return null}else c=p.Node.createOmittedType(e.range(e.pos)),this.error(s.DiagnosticCode.Type_expected,c.range);if(n&&!e.skip(o.Token.EQUALS_GREATERTHAN))return this.error(s.DiagnosticCode._0_expected,e.range(e.pos),"=>"),null;var u,l=p.Node.createSignature(r,c,null,!1,e.range(a,e.pos));if(n)u=this.parseStatement(e,!1);else{if(!e.skip(o.Token.OPENBRACE))return this.error(s.DiagnosticCode._0_expected,e.range(e.pos),"{"),null;u=this.parseBlockStatement(e,!1)}if(!u)return null;var h=p.Node.createFunctionDeclaration(t,null,l,u,null,null,e.range(i,e.pos));return p.Node.createFunctionExpression(h,n)},t.prototype.parseClass=function(e,t,r){var n=r&&r.length?r[0].range.start:t&&t.length?t[0].range.start:e.tokenPos;if(e.skip(o.Token.IDENTIFIER)){var i,a=p.Node.createIdentifierExpression(e.readIdentifier(),e.range());if(e.skip(o.Token.LESSTHAN)){if(!(i=this.parseTypeParameters(e)))return null}else i=[];var c=null;if(e.skip(o.Token.EXTENDS)){var u=this.parseType(e);if(!u)return null;if(u.kind!=p.NodeKind.TYPE)return this.error(s.DiagnosticCode.Operation_not_supported,u.range),null;c=u}var l=new Array;if(e.skip(o.Token.IMPLEMENTS))do{var h=this.parseType(e);if(!h)return null;l.push(h)}while(e.skip(o.Token.COMMA));if(e.skip(o.Token.OPENBRACE)){var d=new Array;if(!e.skip(o.Token.CLOSEBRACE)){var _=p.hasModifier(p.ModifierKind.DECLARE,t);do{var y=this.parseClassMember(e,_);if(!y)return null;d.push(y)}while(!e.skip(o.Token.CLOSEBRACE))}return p.Node.createClassDeclaration(a,i,c,l,d,t,r,e.range(n,e.pos))}this.error(s.DiagnosticCode._0_expected,e.range(),"{")}else this.error(s.DiagnosticCode.Identifier_expected,e.range());return null},t.prototype.parseClassMember=function(e,t){for(var r=e.pos,n=new Array;e.skip(o.Token.AT);){var i=this.parseDecorator(e);if(!i)break;n.push(i)}var a=null;e.skip(o.Token.PUBLIC)?a=p.addModifier(p.Node.createModifier(p.ModifierKind.PUBLIC,e.range()),a):e.skip(o.Token.PRIVATE)?a=p.addModifier(p.Node.createModifier(p.ModifierKind.PRIVATE,e.range()),a):e.skip(o.Token.PROTECTED)&&(a=p.addModifier(p.Node.createModifier(p.ModifierKind.PROTECTED,e.range()),a)),e.skip(o.Token.STATIC)?a=p.addModifier(p.Node.createModifier(p.ModifierKind.STATIC,e.range()),a):e.skip(o.Token.ABSTRACT)&&(a=p.addModifier(p.Node.createModifier(p.ModifierKind.ABSTRACT,e.range()),a)),e.skip(o.Token.READONLY)&&(a=p.addModifier(p.Node.createModifier(p.ModifierKind.READONLY,e.range()),a));var c=e.mark(),u=!1,l=!1;(u=e.skip(o.Token.GET))?e.peek(!0,!0)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine?(e.reset(c),u=!1):a=p.addModifier(p.Node.createModifier(p.ModifierKind.GET,e.range()),a):(l=e.skip(o.Token.SET))&&(e.peek(!0,!0)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine?(e.reset(c),l=!1):a=p.addModifier(p.Node.createModifier(p.ModifierKind.SET,e.range()),a));var h=e.skip(o.Token.CONSTRUCTOR);if(h||e.skip(o.Token.IDENTIFIER)){var d=h?p.Node.createConstructorExpression(e.range()):p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),_=null;if(e.skip(o.Token.LESSTHAN)&&(h&&this.error(s.DiagnosticCode.Type_parameters_cannot_appear_on_a_constructor_declaration,e.range()),!(_=this.parseTypeParameters(e))))return null;if(e.skip(o.Token.OPENPAREN)){var y=e.tokenPos,m=this.parseParameters(e);if(!m)return null;u&&m.length&&this.error(s.DiagnosticCode.A_get_accessor_cannot_have_parameters,d.range),l&&(1!=m.length&&this.error(s.DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,d.range),m.length&&m[0].initializer&&this.error(s.DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,d.range));var f=null;if(e.skip(o.Token.COLON)){if(d.kind==p.NodeKind.CONSTRUCTOR?this.error(s.DiagnosticCode.Type_annotation_cannot_appear_on_a_constructor_declaration,e.range()):l&&this.error(s.DiagnosticCode.A_set_accessor_cannot_have_a_return_type_annotation,e.range()),!(f=this.parseType(e,d.kind==p.NodeKind.CONSTRUCTOR||l)))return null}else f=p.Node.createOmittedType(e.range(e.pos)),l||d.kind==p.NodeKind.CONSTRUCTOR||this.error(s.DiagnosticCode.Type_expected,f.range);var g=p.Node.createSignature(m,f,null,!1,e.range(y,e.pos)),E=null;if(e.skip(o.Token.OPENBRACE)){if(t&&this.error(s.DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,e.range()),!(E=this.parseBlockStatement(e,!1)))return null}else t||this.error(s.DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,e.range());var T=p.Node.createMethodDeclaration(d,_,g,E,a,n,e.range(r,e.pos));return e.skip(o.Token.SEMICOLON),T}if(h)this.error(s.DiagnosticCode.Constructor_implementation_is_missing,d.range);else{if(!u&&!l){var A;(A=p.getModifier(p.ModifierKind.ABSTRACT,a))&&this.error(s.DiagnosticCode._0_modifier_cannot_be_used_here,A.range,"abstract"),(A=p.getModifier(p.ModifierKind.GET,a))&&this.error(s.DiagnosticCode._0_modifier_cannot_be_used_here,A.range,"get"),(A=p.getModifier(p.ModifierKind.SET,a))&&this.error(s.DiagnosticCode._0_modifier_cannot_be_used_here,A.range,"set");var I=null;if(e.skip(o.Token.COLON)){if(!(I=this.parseType(e)))return null}else this.error(s.DiagnosticCode.Type_expected,e.range());var v=null;if(e.skip(o.Token.EQUALS)&&!(v=this.parseExpression(e)))return null;var N=p.Node.createFieldDeclaration(d,I,v,a,n,e.range(r,e.pos));return e.skip(o.Token.SEMICOLON),N}this.error(s.DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,d.range)}}else this.error(s.DiagnosticCode.Identifier_expected,e.range());return null},t.prototype.parseNamespace=function(e,t,r){var n=t&&t.length?t[0].range.start:e.tokenPos;if(e.skip(o.Token.IDENTIFIER)){var i=p.Node.createIdentifierExpression(e.readIdentifier(),e.range());if(e.skip(o.Token.OPENBRACE)){for(var a=new Array;!e.skip(o.Token.CLOSEBRACE);){var c=this.parseTopLevelStatement(e,!0);if(!c)return null;a.push(c)}var u=p.Node.createNamespaceDeclaration(i,a,t,r,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),u}this.error(s.DiagnosticCode._0_expected,e.range(),"{")}else this.error(s.DiagnosticCode.Identifier_expected,e.range());return null},t.prototype.parseExport=function(e,t){var r=t&&t.length?t[0].range.start:e.tokenPos;if(e.skip(o.Token.OPENBRACE)){var n=new Array;if(!e.skip(o.Token.CLOSEBRACE)){do{var i=this.parseExportMember(e);if(!i)return null;n.push(i)}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEBRACE))return this.error(s.DiagnosticCode._0_expected,e.range(),"}"),null}var a=null;if(e.skip(o.Token.FROM)){if(!e.skip(o.Token.STRINGLITERAL))return this.error(s.DiagnosticCode.String_literal_expected,e.range()),null;a=p.Node.createStringLiteralExpression(e.readString(),e.range())}var c=p.Node.createExportStatement(n,a,t,e.range(r,e.pos));return c.normalizedPath&&!this.seenlog.has(c.normalizedPath)&&(this.backlog.push(c.normalizedPath),this.seenlog.add(c.normalizedPath)),e.skip(o.Token.SEMICOLON),c}return this.error(s.DiagnosticCode._0_expected,e.range(),"{"),null},t.prototype.parseExportMember=function(e){if(e.skip(o.Token.IDENTIFIER)){var t=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),r=null;if(e.skip(o.Token.AS)){if(!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;r=p.Node.createIdentifierExpression(e.readIdentifier(),e.range())}return p.Node.createExportMember(t,r,r?o.Range.join(t.range,r.range):t.range)}return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null},t.prototype.parseImport=function(e){var t=e.tokenPos,r=null,n=null,i=!1;if(e.skip(o.Token.OPENBRACE)){if(r=new Array,!e.skip(o.Token.CLOSEBRACE)){do{var a=this.parseImportDeclaration(e);if(!a)return null;r.push(a)}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEBRACE))return this.error(s.DiagnosticCode._0_expected,e.range(),"}"),null}}else if(e.skip(o.Token.ASTERISK)){if(!e.skip(o.Token.AS))return this.error(s.DiagnosticCode._0_expected,e.range(),"as"),null;if(!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;n=p.Node.createIdentifierExpression(e.readIdentifier(),e.range())}else i=!0;if(i||e.skip(o.Token.FROM)){if(e.skip(o.Token.STRINGLITERAL)){var c,u=p.Node.createStringLiteralExpression(e.readString(),e.range());return n?(assert(!r),c=p.Node.createImportStatementWithWildcard(n,u,e.range(t,e.pos))):c=p.Node.createImportStatement(r,u,e.range(t,e.pos)),this.seenlog.has(c.normalizedPath)||(this.backlog.push(c.normalizedPath),this.seenlog.add(c.normalizedPath)),e.skip(o.Token.SEMICOLON),c}this.error(s.DiagnosticCode.String_literal_expected,e.range())}else this.error(s.DiagnosticCode._0_expected,e.range(),"from");return null},t.prototype.parseImportDeclaration=function(e){if(e.skip(o.Token.IDENTIFIER)){var t=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),r=null;if(e.skip(o.Token.AS)){if(!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;r=p.Node.createIdentifierExpression(e.readIdentifier(),e.range())}return p.Node.createImportDeclaration(t,r,r?o.Range.join(t.range,r.range):t.range)}return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null},t.prototype.parseExportImport=function(e,t){if(e.skip(o.Token.IDENTIFIER)){var r=p.Node.createIdentifierExpression(e.readIdentifier(),e.range());if(e.skip(o.Token.EQUALS)){if(e.skip(o.Token.IDENTIFIER)){var n=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),i=p.Node.createExportImportStatement(n,r,o.Range.join(t,e.range()));return e.skip(o.Token.SEMICOLON),i}this.error(s.DiagnosticCode.Identifier_expected,e.range())}else this.error(s.DiagnosticCode._0_expected,e.range(),"=")}else this.error(s.DiagnosticCode.Identifier_expected,e.range());return null},t.prototype.parseStatement=function(e,t){void 0===t&&(t=!1);var r=e.mark();switch(e.next()){case o.Token.BREAK:return this.parseBreak(e);case o.Token.CONST:return this.parseVariable(e,[p.Node.createModifier(p.ModifierKind.CONST,e.range())],null);case o.Token.CONTINUE:return this.parseContinue(e);case o.Token.DO:return this.parseDoStatement(e);case o.Token.FOR:return this.parseForStatement(e);case o.Token.IF:return this.parseIfStatement(e);case o.Token.LET:return this.parseVariable(e,[p.Node.createModifier(p.ModifierKind.LET,e.range())],null);case o.Token.VAR:return this.parseVariable(e,null,null);case o.Token.OPENBRACE:return this.parseBlockStatement(e,t);case o.Token.RETURN:return t&&this.error(s.DiagnosticCode.A_return_statement_can_only_be_used_within_a_function_body,e.range()),this.parseReturn(e);case o.Token.SEMICOLON:return p.Node.createEmptyStatement(e.range(e.tokenPos));case o.Token.SWITCH:return this.parseSwitchStatement(e);case o.Token.THROW:return this.parseThrowStatement(e);case o.Token.TRY:return this.parseTryStatement(e);case o.Token.TYPE:return this.parseTypeDeclaration(e);case o.Token.VOID:return this.parseVoidStatement(e);case o.Token.WHILE:return this.parseWhileStatement(e);default:return e.reset(r),this.parseExpressionStatement(e)}},t.prototype.parseBlockStatement=function(e,t){for(var r=e.tokenPos,n=new Array;!e.skip(o.Token.CLOSEBRACE);){var i=this.parseStatement(e,t);if(!i)return null;n.push(i)}var a=p.Node.createBlockStatement(n,e.range(r,e.pos));return e.skip(o.Token.SEMICOLON),a},t.prototype.parseBreak=function(e){var t=null;e.peek(!0)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine||(e.next(!0),t=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()));var r=p.Node.createBreakStatement(t,e.range());return e.skip(o.Token.SEMICOLON),r},t.prototype.parseContinue=function(e){var t=null;e.peek(!0)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine||(e.next(!0),t=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()));var r=p.Node.createContinueStatement(t,e.range());return e.skip(o.Token.SEMICOLON),r},t.prototype.parseDoStatement=function(e){var t=e.tokenPos,r=this.parseStatement(e);if(!r)return null;if(e.skip(o.Token.WHILE))if(e.skip(o.Token.OPENPAREN)){var n=this.parseExpression(e);if(!n)return null;if(e.skip(o.Token.CLOSEPAREN)){var i=p.Node.createDoStatement(r,n,e.range(t,e.pos));return e.skip(o.Token.SEMICOLON),i}this.error(s.DiagnosticCode._0_expected,e.range(),")")}else this.error(s.DiagnosticCode._0_expected,e.range(),"(");else this.error(s.DiagnosticCode._0_expected,e.range(),"while");return null},t.prototype.parseExpressionStatement=function(e){var t=this.parseExpression(e);if(!t)return null;var r=p.Node.createExpressionStatement(t);return e.skip(o.Token.SEMICOLON),r},t.prototype.parseForStatement=function(e){var t=e.tokenPos;if(e.skip(o.Token.OPENPAREN)){var r=null;if(e.skip(o.Token.LET)||e.skip(o.Token.CONST)||e.skip(o.Token.VAR))r=this.parseVariable(e,null,null);else if(!e.skip(o.Token.SEMICOLON)&&!(r=this.parseExpressionStatement(e)))return null;if(e.token==o.Token.SEMICOLON){var n=null;if(!e.skip(o.Token.SEMICOLON)&&!(n=this.parseExpressionStatement(e)))return null;if(e.token==o.Token.SEMICOLON){var i=null;if(!e.skip(o.Token.CLOSEPAREN)){if(!(i=this.parseExpression(e)))return null;if(!e.skip(o.Token.CLOSEPAREN))return this.error(s.DiagnosticCode._0_expected,e.range(),")"),null}var a=this.parseStatement(e);return a?p.Node.createForStatement(r,n?n.expression:null,i,a,e.range(t,e.pos)):null}this.error(s.DiagnosticCode._0_expected,e.range(),";")}else this.error(s.DiagnosticCode._0_expected,e.range(),";")}else this.error(s.DiagnosticCode._0_expected,e.range(),"(");return null},t.prototype.parseIfStatement=function(e){var t=e.tokenPos;if(e.skip(o.Token.OPENPAREN)){var r=this.parseExpression(e);if(!r)return null;if(e.skip(o.Token.CLOSEPAREN)){var n=this.parseStatement(e);if(!n)return null;var i=null;return e.skip(o.Token.ELSE)&&!(i=this.parseStatement(e))?null:p.Node.createIfStatement(r,n,i,e.range(t,e.pos))}this.error(s.DiagnosticCode._0_expected,e.range(),")")}else this.error(s.DiagnosticCode._0_expected,e.range(),"(");return null},t.prototype.parseSwitchStatement=function(e){var t=e.tokenPos;if(e.skip(o.Token.OPENPAREN)){var r=this.parseExpression(e);if(!r)return null;if(e.skip(o.Token.CLOSEPAREN)){if(e.skip(o.Token.OPENBRACE)){for(var n=new Array;!e.skip(o.Token.CLOSEBRACE);){var i=this.parseSwitchCase(e);if(!i)return null;n.push(i)}var a=p.Node.createSwitchStatement(r,n,e.range(t,e.pos));return e.skip(o.Token.SEMICOLON),a}this.error(s.DiagnosticCode._0_expected,e.range(),"{")}else this.error(s.DiagnosticCode._0_expected,e.range(),")")}else this.error(s.DiagnosticCode._0_expected,e.range(),"(");return null},t.prototype.parseSwitchCase=function(e){var t,r,n=e.tokenPos;if(e.skip(o.Token.CASE)){var i=this.parseExpression(e);if(!i)return null;if(e.skip(o.Token.COLON)){for(t=new Array;e.peek()!=o.Token.CASE&&e.nextToken!=o.Token.DEFAULT&&e.nextToken!=o.Token.CLOSEBRACE;){if(!(r=this.parseStatement(e)))return null;t.push(r)}return p.Node.createSwitchCase(i,t,e.range(n,e.pos))}this.error(s.DiagnosticCode._0_expected,e.range(),":")}else if(e.skip(o.Token.DEFAULT)){if(e.skip(o.Token.COLON)){for(t=new Array;e.peek()!=o.Token.CASE&&e.nextToken!=o.Token.DEFAULT&&e.nextToken!=o.Token.CLOSEBRACE;){if(!(r=this.parseStatement(e)))return null;t.push(r)}return p.Node.createSwitchCase(null,t,e.range(n,e.pos))}this.error(s.DiagnosticCode._0_expected,e.range(),":")}else this.error(s.DiagnosticCode._case_or_default_expected,e.range());return null},t.prototype.parseThrowStatement=function(e){var t=e.tokenPos,r=this.parseExpression(e);if(!r)return null;var n=p.Node.createThrowStatement(r,e.range(t,e.pos));return e.skip(o.Token.SEMICOLON),n},t.prototype.parseTryStatement=function(e){var t,r=e.tokenPos;if(e.skip(o.Token.OPENBRACE)){for(var n=new Array;!e.skip(o.Token.CLOSEBRACE);){if(!(t=this.parseStatement(e)))return null;n.push(t)}var i=null,a=null,c=null;if(e.skip(o.Token.CATCH)){if(!e.skip(o.Token.OPENPAREN))return this.error(s.DiagnosticCode._0_expected,e.range(),"("),null;if(!e.skip(o.Token.IDENTIFIER))return this.error(s.DiagnosticCode.Identifier_expected,e.range()),null;if(i=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),!e.skip(o.Token.CLOSEPAREN))return this.error(s.DiagnosticCode._0_expected,e.range(),")"),null;if(!e.skip(o.Token.OPENBRACE))return this.error(s.DiagnosticCode._0_expected,e.range(),"{"),null;for(a=[];!e.skip(o.Token.CLOSEBRACE);){if(!(t=this.parseStatement(e)))return null;a.push(t)}}if(e.skip(o.Token.FINALLY)){if(!e.skip(o.Token.OPENBRACE))return this.error(s.DiagnosticCode._0_expected,e.range(),"{"),null;for(c=[];!e.skip(o.Token.CLOSEBRACE);){if(!(t=this.parseStatement(e)))return null;c.push(t)}}if(!a&&!c)return this.error(s.DiagnosticCode._0_expected,e.range(),"catch"),null;var u=p.Node.createTryStatement(n,i,a,c,e.range(r,e.pos));return e.skip(o.Token.SEMICOLON),u}return this.error(s.DiagnosticCode._0_expected,e.range(),"{"),null},t.prototype.parseTypeDeclaration=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=r&&r.length?r[0].range.start:t&&t.length?t[0].range.start:e.tokenPos;if(e.skip(o.Token.IDENTIFIER)){var i=p.Node.createIdentifierExpression(e.readIdentifier(),e.range()),a=null;if(e.skip(o.Token.LESSTHAN)&&!(a=this.parseTypeParameters(e)))return null;if(e.skip(o.Token.EQUALS)){var c=this.parseType(e);if(!c)return null;var u=p.Node.createTypeDeclaration(i,a,c,t,r,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),u}this.error(s.DiagnosticCode._0_expected,e.range(),"=")}else this.error(s.DiagnosticCode.Identifier_expected,e.range());return null},t.prototype.parseVoidStatement=function(e){var t=e.tokenPos,r=this.parseExpression(e,20);if(!r)return null;var n=p.Node.createVoidStatement(r,e.range(t,e.pos));return e.skip(o.Token.SEMICOLON),n},t.prototype.parseWhileStatement=function(e){var t=e.tokenPos;if(e.skip(o.Token.OPENPAREN)){var r=this.parseExpression(e);if(!r)return null;if(e.skip(o.Token.CLOSEPAREN)){var n=this.parseStatement(e);if(!n)return null;var i=p.Node.createWhileStatement(r,n,e.range(t,e.pos));return e.skip(o.Token.SEMICOLON),i}this.error(s.DiagnosticCode._0_expected,e.range(),")")}else this.error(s.DiagnosticCode._0_expected,e.range(),"(");return null},t.prototype.parseExpressionStart=function(e){var t=e.next(!0),r=e.tokenPos,n=null;if(t==o.Token.NULL)return p.Node.createNullExpression(e.range());if(t==o.Token.TRUE)return p.Node.createTrueExpression(e.range());if(t==o.Token.FALSE)return p.Node.createFalseExpression(e.range());var i,a=function(e){switch(e){case o.Token.DOT_DOT_DOT:return 1;case o.Token.YIELD:return 2;case o.Token.EXCLAMATION:case o.Token.TILDE:case o.Token.PLUS:case o.Token.MINUS:case o.Token.PLUS_PLUS:case o.Token.MINUS_MINUS:case o.Token.TYPEOF:case o.Token.VOID:case o.Token.DELETE:return 16;case o.Token.NEW:return 19;default:return-1}}(t);if(-1!=a)return t==o.Token.NEW?(i=this.parseExpression(e,18))?i.kind==p.NodeKind.CALL?p.Node.createNewExpression(i.expression,i.typeArguments,i.arguments,e.range(r,e.pos)):(this.error(s.DiagnosticCode.Operation_not_supported,e.range()),null):null:(i=this.parseExpression(e,a))?(t!=o.Token.PLUS_PLUS&&t!=o.Token.MINUS_MINUS||i.kind!=p.NodeKind.IDENTIFIER&&i.kind!=p.NodeKind.ELEMENTACCESS&&i.kind!=p.NodeKind.PROPERTYACCESS&&this.error(s.DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,i.range),p.Node.createUnaryPrefixExpression(t,i,e.range(r,e.pos))):null;switch(t){case o.Token.OPENPAREN:if(e.skip(o.Token.CLOSEPAREN))return this.parseFunctionExpressionCommon(e,p.Node.createEmptyIdentifierExpression(e.range(r)),[],!0);var c=e.mark(),u=!0;do{switch(e.next(!0)){case o.Token.DOT_DOT_DOT:return e.reset(c),this.parseFunctionExpression(e);case o.Token.IDENTIFIER:switch(e.readIdentifier(),e.next()){case o.Token.CLOSEPAREN:if(!e.skip(o.Token.EQUALS_GREATERTHAN)){u=!1;break}case o.Token.QUESTION:case o.Token.COLON:return e.reset(c),this.parseFunctionExpression(e);case o.Token.COMMA:break;default:u=!1}break;default:u=!1}}while(u);return e.reset(c),(n=this.parseExpression(e))?e.skip(o.Token.CLOSEPAREN)?p.Node.createParenthesizedExpression(n,e.range(r,e.pos)):(this.error(s.DiagnosticCode._0_expected,e.range(),")"),null):null;case o.Token.OPENBRACKET:var l=new Array;if(!e.skip(o.Token.CLOSEBRACKET)){do{if(e.peek()==o.Token.COMMA)n=null;else if(!(n=this.parseExpression(e,1)))return null;if(l.push(n),e.peek()==o.Token.CLOSEBRACKET)break}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEBRACKET))return this.error(s.DiagnosticCode._0_expected,e.range(),"]"),null}return p.Node.createArrayLiteralExpression(l,e.range(r,e.pos));case o.Token.LESSTHAN:var h=this.parseType(e);return h?e.skip(o.Token.GREATERTHAN)?(n=this.parseExpression(e,18))?p.Node.createAssertionExpression(0,n,h,e.range(r,e.pos)):null:(this.error(s.DiagnosticCode._0_expected,e.range(),">"),null):null;case o.Token.IDENTIFIER:return p.Node.createIdentifierExpression(e.readIdentifier(),e.range(r,e.pos));case o.Token.THIS:return p.Node.createThisExpression(e.range(r,e.pos));case o.Token.CONSTRUCTOR:return p.Node.createConstructorExpression(e.range(r,e.pos));case o.Token.SUPER:return p.Node.createSuperExpression(e.range(r,e.pos));case o.Token.STRINGLITERAL:return p.Node.createStringLiteralExpression(e.readString(),e.range(r,e.pos));case o.Token.INTEGERLITERAL:return p.Node.createIntegerLiteralExpression(e.readInteger(),e.range(r,e.pos));case o.Token.FLOATLITERAL:return p.Node.createFloatLiteralExpression(e.readFloat(),e.range(r,e.pos));case o.Token.SLASH:var d=e.readRegexpPattern();return e.skip(o.Token.SLASH)?p.Node.createRegexpLiteralExpression(d,e.readRegexpFlags(),e.range(r,e.pos)):(this.error(s.DiagnosticCode._0_expected,e.range(),"/"),null);case o.Token.FUNCTION:return this.parseFunctionExpression(e);default:return this.error(s.DiagnosticCode.Expression_expected,e.range()),null}},t.prototype.tryParseTypeArgumentsBeforeArguments=function(e){var t=e.mark();if(!e.skip(o.Token.LESSTHAN))return null;var r=new Array;do{var n=this.parseType(e,!0,!0);if(!n)return e.reset(t),null;r.push(n)}while(e.skip(o.Token.COMMA));return e.skip(o.Token.GREATERTHAN)&&e.skip(o.Token.OPENPAREN)?r:(e.reset(t),null)},t.prototype.parseArguments=function(e){var t=new Array;if(!e.skip(o.Token.CLOSEPAREN)){do{var r=this.parseExpression(e,1);if(!r)return null;t.push(r)}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEPAREN))return this.error(s.DiagnosticCode._0_expected,e.range(),")"),null}return t},t.prototype.parseExpression=function(e,t){void 0===t&&(t=0);var r=this.parseExpressionStart(e);if(!r)return null;var n,i=r.range.start,a=this.tryParseTypeArgumentsBeforeArguments(e);if(a||e.skip(o.Token.OPENPAREN)){var c=this.parseArguments(e);if(!c)return null;r=p.Node.createCallExpression(r,a,c,e.range(i,e.pos))}for(var u,d=null;(u=l(n=e.peek()))>=t;)switch(e.next(),n){case o.Token.AS:var _=this.parseType(e);if(!_)return null;r=p.Node.createAssertionExpression(1,r,_,e.range(i,e.pos));break;case o.Token.OPENBRACKET:if(!(d=this.parseExpression(e)))return null;if(!e.skip(o.Token.CLOSEBRACKET))return this.error(s.DiagnosticCode._0_expected,e.range(),"]"),null;r=p.Node.createElementAccessExpression(r,d,e.range(i,e.pos));break;case o.Token.PLUS_PLUS:case o.Token.MINUS_MINUS:r.kind!=p.NodeKind.IDENTIFIER&&r.kind!=p.NodeKind.ELEMENTACCESS&&r.kind!=p.NodeKind.PROPERTYACCESS&&this.error(s.DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,r.range),r=p.Node.createUnaryPostfixExpression(n,r,e.range(i,e.pos));break;case o.Token.QUESTION:var y=this.parseExpression(e);if(!y)return null;if(!e.skip(o.Token.COLON))return this.error(s.DiagnosticCode._0_expected,e.range(),":"),null;var m=this.parseExpression(e);if(!m)return null;r=p.Node.createTernaryExpression(r,y,m,e.range(i,e.pos));break;case o.Token.COMMA:var f=[r];do{if(!(r=this.parseExpression(e,1)))return null;f.push(r)}while(e.skip(o.Token.COMMA));r=p.Node.createCommaExpression(f,e.range(i,e.pos));break;default:if(!(d=this.parseExpression(e,h(n)?u:u+1)))return null;if(n==o.Token.DOT)if(d.kind==p.NodeKind.IDENTIFIER)r=p.Node.createPropertyAccessExpression(r,d,e.range(i,e.pos));else{if(d.kind!=p.NodeKind.CALL)return this.error(s.DiagnosticCode.Identifier_expected,d.range),null;var g=d;if(g.expression.kind!=p.NodeKind.IDENTIFIER)return this.error(s.DiagnosticCode.Identifier_expected,g.expression.range),null;g.expression=p.Node.createPropertyAccessExpression(r,g.expression,e.range(i,e.pos)),r=g}else r=p.Node.createBinaryExpression(n,r,d,e.range(i,e.pos))}return r},t}(s.DiagnosticEmitter);function l(e){switch(e){case o.Token.COMMA:return 0;case o.Token.EQUALS:case o.Token.PLUS_EQUALS:case o.Token.MINUS_EQUALS:case o.Token.ASTERISK_ASTERISK_EQUALS:case o.Token.ASTERISK_EQUALS:case o.Token.SLASH_EQUALS:case o.Token.PERCENT_EQUALS:case o.Token.LESSTHAN_LESSTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.AMPERSAND_EQUALS:case o.Token.CARET_EQUALS:case o.Token.BAR_EQUALS:return 3;case o.Token.QUESTION:return 4;case o.Token.BAR_BAR:return 5;case o.Token.AMPERSAND_AMPERSAND:return 6;case o.Token.BAR:return 7;case o.Token.CARET:return 8;case o.Token.AMPERSAND:return 9;case o.Token.EQUALS_EQUALS:case o.Token.EXCLAMATION_EQUALS:case o.Token.EQUALS_EQUALS_EQUALS:case o.Token.EXCLAMATION_EQUALS_EQUALS:return 10;case o.Token.AS:case o.Token.IN:case o.Token.INSTANCEOF:case o.Token.LESSTHAN:case o.Token.GREATERTHAN:case o.Token.LESSTHAN_EQUALS:case o.Token.GREATERTHAN_EQUALS:return 11;case o.Token.LESSTHAN_LESSTHAN:case o.Token.GREATERTHAN_GREATERTHAN:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN:return 12;case o.Token.PLUS:case o.Token.MINUS:return 13;case o.Token.ASTERISK:case o.Token.SLASH:case o.Token.PERCENT:return 14;case o.Token.ASTERISK_ASTERISK:return 15;case o.Token.PLUS_PLUS:case o.Token.MINUS_MINUS:return 17;case o.Token.DOT:case o.Token.NEW:case o.Token.OPENBRACKET:return 19;default:return-1}}function h(e){switch(e){case o.Token.EQUALS:case o.Token.PLUS_EQUALS:case o.Token.MINUS_EQUALS:case o.Token.ASTERISK_ASTERISK_EQUALS:case o.Token.ASTERISK_EQUALS:case o.Token.SLASH_EQUALS:case o.Token.PERCENT_EQUALS:case o.Token.LESSTHAN_LESSTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.AMPERSAND_EQUALS:case o.Token.CARET_EQUALS:case o.Token.BAR_EQUALS:case o.Token.QUESTION:case o.Token.ASTERISK_ASTERISK:return!0;default:return!1}}t.Parser=u,function(e){e[e.COMMA=0]="COMMA",e[e.SPREAD=1]="SPREAD",e[e.YIELD=2]="YIELD",e[e.ASSIGNMENT=3]="ASSIGNMENT",e[e.CONDITIONAL=4]="CONDITIONAL",e[e.LOGICAL_OR=5]="LOGICAL_OR",e[e.LOGICAL_AND=6]="LOGICAL_AND",e[e.BITWISE_OR=7]="BITWISE_OR",e[e.BITWISE_XOR=8]="BITWISE_XOR",e[e.BITWISE_AND=9]="BITWISE_AND",e[e.EQUALITY=10]="EQUALITY",e[e.RELATIONAL=11]="RELATIONAL",e[e.SHIFT=12]="SHIFT",e[e.ADDITIVE=13]="ADDITIVE",e[e.MULTIPLICATIVE=14]="MULTIPLICATIVE",e[e.EXPONENTIATED=15]="EXPONENTIATED",e[e.UNARY_PREFIX=16]="UNARY_PREFIX",e[e.UNARY_POSTFIX=17]="UNARY_POSTFIX",e[e.CALL=18]="CALL",e[e.MEMBERACCESS=19]="MEMBERACCESS",e[e.GROUPING=20]="GROUPING",e[e.INVALID=-1]="INVALID"}(t.Precedence||(t.Precedence={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(1),i=function(){function e(){this.text=[],this.functionId=0}return e.decompile=function(t){var r=new e;return r.decompile(t),r.finish()},e.prototype.decompile=function(e){throw new Error("not implemented")},e.prototype.decompileFunction=function(e){var t=n.readString(_BinaryenFunctionGetName(e))||"$"+this.functionId.toString(10),r=_BinaryenFunctionGetBody(e);this.push("function "),this.push(t),this.push("(");for(var i=0,o=_BinaryenFunctionGetNumParams(e);i0&&this.push(", "),this.push("$"),this.push(i.toString(10)),this.push(": "),this.push(a(_BinaryenFunctionGetParam(e,i)));this.push("): "),this.push(a(_BinaryenFunctionGetResult(e))),this.push(" "),_BinaryenExpressionGetId(r)!=n.ExpressionId.Block&&this.push("{\n"),this.decompileExpression(r),_BinaryenExpressionGetId(r)!=n.ExpressionId.Block&&this.push("\n}\n"),++this.functionId},e.prototype.decompileExpression=function(e){var t,r,i,o,s=_BinaryenExpressionGetId(e),c=_BinaryenExpressionGetType(e);switch(s){case n.ExpressionId.Block:for(null!=(r=n.readString(_BinaryenBlockGetName(e)))&&(this.push(r),this.push(": ")),this.push("{\n"),o=_BinaryenBlockGetNumChildren(e),i=0;i("),this.push(_BinaryenLoadGetOffset(e).toString(10)),this.push(" + "),this.decompileExpression(_BinaryenLoadGetPtr(e)),void this.push(")");case n.ExpressionId.Store:return this.push("store<"),this.push(a(c)),this.push(">("),this.push(_BinaryenStoreGetOffset(e).toString(10)),this.push(" + "),this.decompileExpression(_BinaryenStoreGetPtr(e)),this.push(", "),this.decompileExpression(_BinaryenStoreGetValue(e)),void this.push(")");case n.ExpressionId.Const:switch(c){case n.NativeType.I32:return void this.push(_BinaryenConstGetValueI32(e).toString(10));case n.NativeType.I64:return void this.push(i64_to_string(i64_new(_BinaryenConstGetValueI64Low(e),_BinaryenConstGetValueI64High(e))));case n.NativeType.F32:return void this.push(_BinaryenConstGetValueF32(e).toString(10));case n.NativeType.F64:return void this.push(_BinaryenConstGetValueF64(e).toString(10))}break;case n.ExpressionId.Unary:switch(_BinaryenUnaryGetOp(e)){case n.UnaryOp.ClzI32:return this.push("clz("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.CtzI32:return this.push("ctz("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.PopcntI32:return this.push("popcnt("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.NegF32:case n.UnaryOp.NegF64:return this.push("-"),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.AbsF32:return this.push("abs("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.CeilF32:return this.push("ceil("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.FloorF32:return this.push("floor("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.TruncF32:return this.push("trunc("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.NearestF32:return this.push("nearest("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.SqrtF32:return this.push("sqrt("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.EqzI32:case n.UnaryOp.EqzI64:return this.push("!"),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ClzI64:return this.push("clz("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.CtzI64:return this.push("ctz("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.PopcntI64:return this.push("popcnt("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.AbsF64:return this.push("abs("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.CeilF64:return this.push("ceil("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.FloorF64:return this.push("floor("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.TruncF64:return this.push("trunc("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.NearestF64:return this.push("nearest("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.SqrtF64:return this.push("sqrt("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.ExtendI32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ExtendU32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.WrapI64:case n.UnaryOp.TruncF32ToI32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.TruncF32ToI64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.TruncF32ToU32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.TruncF32ToU64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.TruncF64ToI32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.TruncF64ToI64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.TruncF64ToU32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.TruncF64ToU64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ReinterpretF32:return this.push("reinterpret("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.ReinterpretF64:return this.push("reinterpret("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.ConvertI32ToF32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ConvertI32ToF64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ConvertU32ToF32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ConvertU32ToF64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ConvertI64ToF32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ConvertI64ToF64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ConvertU64ToF32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ConvertU64ToF64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.PromoteF32:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.DemoteF64:return this.push(""),void this.decompileExpression(_BinaryenUnaryGetValue(e));case n.UnaryOp.ReinterpretI32:return this.push("reinterpret("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")");case n.UnaryOp.ReinterpretI64:return this.push("reinterpret("),this.decompileExpression(_BinaryenUnaryGetValue(e)),void this.push(")")}break;case n.ExpressionId.Binary:switch(_BinaryenBinaryGetOp(e)){case n.BinaryOp.AddI32:case n.BinaryOp.AddI64:case n.BinaryOp.AddF32:case n.BinaryOp.AddF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" + "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.SubI32:case n.BinaryOp.SubI64:case n.BinaryOp.SubF32:case n.BinaryOp.SubF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" - "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.MulI32:case n.BinaryOp.MulI64:case n.BinaryOp.MulF32:case n.BinaryOp.MulF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" * "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.DivI32:case n.BinaryOp.DivI64:case n.BinaryOp.DivF32:case n.BinaryOp.DivF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" / "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.DivU32:return this.push("("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" / "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.RemI32:case n.BinaryOp.RemI64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" % "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.RemU32:return this.push("("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" / "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.AndI32:case n.BinaryOp.AndI64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" & "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.OrI32:case n.BinaryOp.OrI64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" | "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.XorI32:case n.BinaryOp.XorI64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" ^ "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.ShlI32:case n.BinaryOp.ShlI64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" << "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.ShrU32:case n.BinaryOp.ShrU64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" >>> "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.ShrI32:case n.BinaryOp.ShrI64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" >> "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.RotlI32:return this.push("rotl("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.RotrI32:return this.push("rotr("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.EqI32:case n.BinaryOp.EqI64:case n.BinaryOp.EqF32:case n.BinaryOp.EqF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" == "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.NeI32:case n.BinaryOp.NeI64:case n.BinaryOp.NeF32:case n.BinaryOp.NeF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" != "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.LtI32:case n.BinaryOp.LtI64:case n.BinaryOp.LtF32:case n.BinaryOp.LtF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" < "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.LtU32:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" < "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.LeI32:case n.BinaryOp.LeI64:case n.BinaryOp.LeF32:case n.BinaryOp.LeF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" <= "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.LeU32:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" <= "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.GtI32:case n.BinaryOp.GtI64:case n.BinaryOp.GtF32:case n.BinaryOp.GtF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" > "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.GtU32:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" > "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.GeI32:case n.BinaryOp.GeI64:case n.BinaryOp.GeF32:case n.BinaryOp.GeF64:return this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" >= "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.GeU32:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" >= "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.DivU64:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" / "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.RemU64:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" % "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.RotlI64:return this.push("rotl("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.RotrI64:return this.push("rotr("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.LtU64:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" < "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.LeU64:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" <= "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.GtU64:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" > "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.GeU64:return this.push(""),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(" >= "),void this.decompileExpression(_BinaryenBinaryGetRight(e));case n.BinaryOp.CopysignF32:return this.push("copysign("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.MinF32:return this.push("min("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.MaxF32:return this.push("max("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.CopysignF64:return this.push("copysign("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.MinF64:return this.push("min("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")");case n.BinaryOp.MaxF64:return this.push("max("),this.decompileExpression(_BinaryenBinaryGetLeft(e)),this.push(", "),this.decompileExpression(_BinaryenBinaryGetRight(e)),void this.push(")")}return;case n.ExpressionId.Select:return this.push("select<"),this.push(a(c)),this.push(">("),this.decompileExpression(_BinaryenSelectGetIfTrue(e)),this.push(", "),this.decompileExpression(_BinaryenSelectGetIfFalse(e)),this.push(", "),this.decompileExpression(_BinaryenSelectGetCondition(e)),void this.push(")");case n.ExpressionId.Drop:return this.decompileExpression(_BinaryenDropGetValue(e)),void this.push(";\n");case n.ExpressionId.Return:return void((t=_BinaryenReturnGetValue(e))?(this.push("return "),this.decompileExpression(t),this.push(";\n")):this.push("return;\n"));case n.ExpressionId.Host:switch(_BinaryenHostGetOp(e)){case n.HostOp.CurrentMemory:return void this.push("current_memory()");case n.HostOp.GrowMemory:return this.push("grow_memory("),this.decompileExpression(_BinaryenHostGetOperand(e,0)),void this.push(")")}break;case n.ExpressionId.Nop:return void this.push(";\n");case n.ExpressionId.Unreachable:return void this.push("unreachable()");case n.ExpressionId.AtomicCmpxchg:case n.ExpressionId.AtomicRMW:case n.ExpressionId.AtomicWait:case n.ExpressionId.AtomicWake:}throw new Error("not implemented")},e.prototype.push=function(e){this.text.push(e)},e.prototype.finish=function(){var e=this.text.join("");return this.text=[],e},e}();function a(e){switch(e){case n.NativeType.None:return"void";case n.NativeType.I32:return"i32";case n.NativeType.I64:return"i64";case n.NativeType.F32:return"f32";case n.NativeType.F64:return"f64";case n.NativeType.Unreachable:throw new Error("unreachable type");case n.NativeType.Auto:throw new Error("auto type");default:throw new Error("unexpected type")}}t.Decompiler=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(6),i=r(12),a=r(0);t.formatDiagnostic=a.formatDiagnosticMessage;var o=r(11);t.parseFile=function(e,t,r,n){return void 0===r&&(r=!1),void 0===n&&(n=null),n||(n=new o.Parser,r=!0),n.parseFile(e,t,r),n},t.nextFile=function(e){return e.nextFile()},t.nextDiagnostic=function(e){var t=e.program;return t.diagnosticsOffset>>=0)&&e<256)&&(n=o[e])?n:(r=p(e,(0|e)<0?-1:0,!0),i&&(o[e]=r),r):(i=-128<=(e|=0)&&e<128)&&(n=a[e])?n:(r=p(e,e<0?-1:0,!1),i&&(a[e]=r),r)}function c(e,t){if(isNaN(e))return t?g:f;if(t){if(e<0)return g;if(e>=_)return v}else{if(e<=-y)return N;if(e+1>=y)return I}return e<0?c(-e,t).neg():p(e%d|0,e/d|0,t)}function p(e,t,r){return new n(e,t,r)}n.fromInt=s,n.fromNumber=c,n.fromBits=p;var u=Math.pow;function l(e,t,r){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return f;if("number"==typeof t?(r=t,t=!1):t=!!t,(r=r||10)<2||360)throw Error("interior hyphen");if(0===n)return l(e.substring(1),t,r).neg();for(var i=c(u(r,8)),a=f,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*d+(this.low>>>0):this.high*d+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return p+o;for(;p.length<6;)p="0"+p;o=""+p+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(N)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),r=e.isNegative();return t&&!r?-1:!t&&r?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(N)?N:this.not().add(E)},S.neg=S.negate,S.add=function(e){i(e)||(e=h(e));var t=this.high>>>16,r=65535&this.high,n=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,c=e.low>>>16,u=0,l=0,d=0,_=0;return d+=(_+=a+(65535&e.low))>>>16,l+=(d+=n+c)>>>16,u+=(l+=r+s)>>>16,u+=t+o,p((d&=65535)<<16|(_&=65535),(u&=65535)<<16|(l&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=h(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return f;if(i(e)||(e=h(e)),r)return p(r.mul(this.low,this.high,e.low,e.high),r.get_high(),this.unsigned);if(e.isZero())return f;if(this.eq(N))return e.isOdd()?N:f;if(e.eq(N))return this.isOdd()?N:f;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(m)&&e.lt(m))return c(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,u=65535&e.high,l=e.low>>>16,d=65535&e.low,_=0,y=0,g=0,E=0;return g+=(E+=o*d)>>>16,y+=(g+=a*d)>>>16,g&=65535,y+=(g+=o*l)>>>16,_+=(y+=n*d)>>>16,y&=65535,_+=(y+=a*l)>>>16,y&=65535,_+=(y+=o*u)>>>16,_+=t*d+n*l+a*u+o*s,p((g&=65535)<<16|(E&=65535),(_&=65535)<<16|(y&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,a;if(r)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?p((this.unsigned?r.div_u:r.div_s)(this.low,this.high,e.low,e.high),r.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?g:f;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return g;if(e.gt(this.shru(1)))return T;a=g}else{if(this.eq(N))return e.eq(E)||e.eq(A)?N:e.eq(N)?E:(t=this.shr(1).div(e).shl(1)).eq(f)?e.isNegative()?E:A:(n=this.sub(e.mul(t)),a=t.add(n.div(e)));else if(e.eq(N))return this.unsigned?g:f;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=f}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(t)/Math.LN2),s=o<=48?1:u(2,o-48),l=c(t),d=l.mul(e);d.isNegative()||d.gt(n);)d=(l=c(t-=s,this.unsigned)).mul(e);l.isZero()&&(l=E),a=a.add(l),n=n.sub(d)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=h(e)),r?p((this.unsigned?r.rem_u:r.rem_s)(this.low,this.high,e.low,e.high),r.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return p(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=h(e)),p(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=h(e)),p(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=h(e)),p(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?p(this.low<>>32-e,this.unsigned):p(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):p(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?p(this.low>>>e|t<<32-e,t>>>e,this.unsigned):p(32===e?t:t>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?p(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:p(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,r){return r?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,r){(function(e){const t=e.Long||r(14);e.i64_new=function(e,r){return t.fromBits(e,r)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_align=function(e,r){assert(r&&0==(r&r-1));var n=t.fromInt(r-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),i=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(i)};const a=t.fromNumber(f64.MIN_SAFE_INTEGER),o=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,r(7))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(6),i=r(0),a=r(5),o=r(1),s=r(2);function c(e,t){var r,n;return e.options.isWasm64?(r=e.precomputeExpression(t,a.Type.usize64),(_BinaryenExpressionGetId(r)!=o.ExpressionId.Const||_BinaryenExpressionGetType(r)!=o.NativeType.I64||0!=_BinaryenConstGetValueI64High(r)||(n=_BinaryenConstGetValueI64Low(r))<0)&&(e.error(i.DiagnosticCode.Operation_not_supported,t.range),n=-1)):(r=e.precomputeExpression(t,a.Type.usize32),(_BinaryenExpressionGetId(r)!=o.ExpressionId.Const||_BinaryenExpressionGetType(r)!=o.NativeType.I32||(n=_BinaryenConstGetValueI32(r))<0)&&(e.error(i.DiagnosticCode.Operation_not_supported,t.range),n=-1)),n}function p(e,t,r){var n=e.program,i=e.module,c=n.types.get("string");if(!c)return i.createUnreachable();var p=n.elements.get("abort");if(!p||p.kind!=s.ElementKind.FUNCTION_PROTOTYPE)return i.createUnreachable();var u=p.resolve();if(!u||!e.compileFunction(u))return i.createUnreachable();var l=null!=t?e.compileExpression(t,c):c.toNativeZero(i),h=e.compileStaticString(r.range.source.normalizedPath);return e.currentType=a.Type.void,i.createBlock(null,[i.createCallImport(u.internalName,[l,h,i.createI32(r.range.line),i.createI32(r.range.column)],o.NativeType.None),i.createUnreachable()])}t.compileGetConstant=function(e,t,r){switch(t.internalName){case"NaN":return e.currentType==a.Type.f32?e.module.createF32(NaN):(e.currentType=a.Type.f64,e.module.createF64(NaN));case"Infinity":return e.currentType==a.Type.f32?e.module.createF32(1/0):(e.currentType=a.Type.f64,e.module.createF64(1/0));case"HEAP_BASE":return e.currentType=e.options.usizeType,e.module.createGetGlobal("HEAP_BASE",e.currentType.toNativeType())}return e.error(i.DiagnosticCode.Operation_not_supported,r.range),e.module.createUnreachable()},t.compileCall=function(e,t,r,s,u,l){var h,d,_,y,m,f,g,E,T=e.module;switch(t.internalName){case"isNaN":if(e.currentType=a.Type.bool,1!=s.length)return r&&1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 11:m=e.currentFunction.getAndFreeTempLocal(a.Type.f32),y=T.createBinary(o.BinaryOp.NeF32,T.createTeeLocal(m.index,h),T.createGetLocal(m.index,o.NativeType.F32));break;case 12:m=e.currentFunction.getAndFreeTempLocal(a.Type.f64),y=T.createBinary(o.BinaryOp.NeF64,T.createTeeLocal(m.index,h),T.createGetLocal(m.index,o.NativeType.F64));break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break;default:y=T.createI32(0)}return e.currentType=a.Type.bool,y;case"isFinite":if(e.currentType=a.Type.bool,1!=s.length)return r&&1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 11:m=e.currentFunction.getAndFreeTempLocal(a.Type.f32),y=T.createSelect(T.createBinary(o.BinaryOp.NeF32,T.createUnary(o.UnaryOp.AbsF32,T.createTeeLocal(m.index,h)),T.createF32(1/0)),T.createI32(0),T.createBinary(o.BinaryOp.EqF32,T.createGetLocal(m.index,o.NativeType.F32),T.createGetLocal(m.index,o.NativeType.F32)));break;case 12:m=e.currentFunction.getAndFreeTempLocal(a.Type.f64),y=T.createSelect(T.createBinary(o.BinaryOp.NeF64,T.createUnary(o.UnaryOp.AbsF64,T.createTeeLocal(m.index,h)),T.createF64(1/0)),T.createI32(0),T.createBinary(o.BinaryOp.EqF64,T.createGetLocal(m.index,o.NativeType.F64),T.createGetLocal(m.index,o.NativeType.F64)));break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break;default:y=T.createI32(1)}return e.currentType=a.Type.bool,y;case"clz":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.i32,0);switch(e.currentType.kind){default:y=T.createUnary(o.UnaryOp.ClzI32,h);break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}case 4:y=T.createUnary(e.options.isWasm64?o.UnaryOp.ClzI64:o.UnaryOp.ClzI32,h);break;case 3:case 8:y=T.createUnary(o.UnaryOp.ClzI64,h);break;case 11:case 12:case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"ctz":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.i32,0);switch(e.currentType.kind){default:y=T.createUnary(o.UnaryOp.CtzI32,h);break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}case 4:y=T.createUnary(e.options.isWasm64?o.UnaryOp.CtzI64:o.UnaryOp.CtzI32,h);break;case 3:case 8:y=T.createUnary(o.UnaryOp.CtzI64,h);break;case 11:case 12:case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"popcnt":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.i32,0);switch(e.currentType.kind){default:y=T.createUnary(o.UnaryOp.PopcntI32,h);break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}case 4:y=T.createUnary(e.options.isWasm64?o.UnaryOp.PopcntI64:o.UnaryOp.PopcntI32,h);break;case 3:case 8:y=T.createUnary(o.UnaryOp.PopcntI64,h);break;case 11:case 12:case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"rotl":if(2!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"2",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.i32,0);switch(d=e.compileExpression(s[1],e.currentType),e.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=n.makeSmallIntegerWrap(T.createBinary(o.BinaryOp.RotlI32,h,d),e.currentType,T);case 2:case 7:y=T.createBinary(o.BinaryOp.RotlI32,h,d);break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}case 4:y=T.createBinary(e.options.isWasm64?o.BinaryOp.RotlI64:o.BinaryOp.RotlI32,h,d);break;case 3:case 8:y=T.createBinary(o.BinaryOp.RotlI64,h,d);break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"rotr":if(2!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"2",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.i32,0);switch(d=e.compileExpression(s[1],e.currentType),e.currentType.kind){case 0:case 1:case 5:case 6:case 10:y=n.makeSmallIntegerWrap(T.createBinary(o.BinaryOp.RotrI32,h,d),e.currentType,T);break;case 2:case 7:y=T.createBinary(o.BinaryOp.RotrI32,h,d);break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}case 4:y=T.createBinary(e.options.isWasm64?o.BinaryOp.RotrI64:o.BinaryOp.RotrI32,h,d);break;case 3:case 8:y=T.createBinary(o.BinaryOp.RotrI64,h,d);break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"abs":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 0:case 1:case 2:m=e.currentFunction.getAndFreeTempLocal(a.Type.i32),y=T.createSelect(T.createTeeLocal(m.index,h),T.createBinary(o.BinaryOp.SubI32,T.createI32(0),T.createGetLocal(m.index,o.NativeType.I32)),T.createBinary(o.BinaryOp.GtI32,T.createGetLocal(m.index,o.NativeType.I32),T.createI32(0)));break;case 4:m=e.currentFunction.getAndFreeTempLocal(e.options.usizeType),y=T.createSelect(T.createTeeLocal(m.index,h),T.createBinary(e.options.isWasm64?o.BinaryOp.SubI64:o.BinaryOp.SubI32,e.options.usizeType.toNativeZero(T),T.createGetLocal(m.index,e.options.nativeSizeType)),T.createBinary(e.options.isWasm64?o.BinaryOp.GtI64:o.BinaryOp.GtI32,T.createGetLocal(m.index,e.options.nativeSizeType),e.options.usizeType.toNativeZero(T)));break;case 3:m=e.currentFunction.getAndFreeTempLocal(a.Type.i64),y=T.createSelect(T.createTeeLocal(m.index,h),T.createBinary(o.BinaryOp.SubI64,T.createI64(0,0),T.createGetLocal(m.index,o.NativeType.I64)),T.createBinary(o.BinaryOp.GtI64,T.createGetLocal(m.index,o.NativeType.I64),T.createI64(0,0)));break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}case 5:case 6:case 7:case 8:case 10:y=h;break;case 11:y=T.createUnary(o.UnaryOp.AbsF32,h);break;case 12:y=T.createUnary(o.UnaryOp.AbsF64,h);break;case 13:y=T.createUnreachable();break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"max":if(2!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"2",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(d=e.compileExpression(s[1],e.currentType),e.currentType.kind){case 0:case 1:case 2:m=e.currentFunction.getTempLocal(a.Type.i32),f=e.currentFunction.getAndFreeTempLocal(a.Type.i32),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.GtI32,T.createGetLocal(m.index,o.NativeType.I32),T.createGetLocal(f.index,o.NativeType.I32)));break;case 5:case 6:case 7:case 10:m=e.currentFunction.getTempLocal(a.Type.i32),f=e.currentFunction.getAndFreeTempLocal(a.Type.i32),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.GtU32,T.createGetLocal(m.index,o.NativeType.I32),T.createGetLocal(f.index,o.NativeType.I32)));break;case 3:m=e.currentFunction.getTempLocal(a.Type.i64),f=e.currentFunction.getAndFreeTempLocal(a.Type.i64),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.GtI64,T.createGetLocal(m.index,o.NativeType.I64),T.createGetLocal(f.index,o.NativeType.I64)));break;case 8:m=e.currentFunction.getTempLocal(a.Type.i64),f=e.currentFunction.getAndFreeTempLocal(a.Type.i64),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.GtU64,T.createGetLocal(m.index,o.NativeType.I64),T.createGetLocal(f.index,o.NativeType.I64)));break;case 4:m=e.currentFunction.getTempLocal(e.options.usizeType),f=e.currentFunction.getAndFreeTempLocal(e.options.usizeType),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(e.options.isWasm64?o.BinaryOp.GtI64:o.BinaryOp.GtI32,T.createGetLocal(m.index,e.options.nativeSizeType),T.createGetLocal(f.index,e.options.nativeSizeType)));break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}m=e.currentFunction.getTempLocal(e.options.usizeType),f=e.currentFunction.getAndFreeTempLocal(e.options.usizeType),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(e.options.isWasm64?o.BinaryOp.GtU64:o.BinaryOp.GtU32,T.createGetLocal(m.index,e.options.nativeSizeType),T.createGetLocal(f.index,e.options.nativeSizeType)));break;case 11:y=T.createBinary(o.BinaryOp.MaxF32,h,d);break;case 12:y=T.createBinary(o.BinaryOp.MaxF64,h,d);break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"min":if(2!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"2",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(d=e.compileExpression(s[1],e.currentType),e.currentType.kind){case 0:case 1:case 2:m=e.currentFunction.getTempLocal(a.Type.i32),f=e.currentFunction.getAndFreeTempLocal(a.Type.i32),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.LtI32,T.createGetLocal(m.index,o.NativeType.I32),T.createGetLocal(f.index,o.NativeType.I32)));break;case 5:case 6:case 7:case 10:m=e.currentFunction.getTempLocal(a.Type.i32),f=e.currentFunction.getAndFreeTempLocal(a.Type.i32),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.LtU32,T.createGetLocal(m.index,o.NativeType.I32),T.createGetLocal(f.index,o.NativeType.I32)));break;case 3:m=e.currentFunction.getTempLocal(a.Type.i64),f=e.currentFunction.getAndFreeTempLocal(a.Type.i64),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.LtI64,T.createGetLocal(m.index,o.NativeType.I64),T.createGetLocal(f.index,o.NativeType.I64)));break;case 8:m=e.currentFunction.getTempLocal(a.Type.i64),f=e.currentFunction.getAndFreeTempLocal(a.Type.i64),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(o.BinaryOp.LtU64,T.createGetLocal(m.index,o.NativeType.I64),T.createGetLocal(f.index,o.NativeType.I64)));break;case 4:m=e.currentFunction.getTempLocal(e.options.usizeType),f=e.currentFunction.getAndFreeTempLocal(e.options.usizeType),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(e.options.isWasm64?o.BinaryOp.LtI64:o.BinaryOp.LtI32,T.createGetLocal(m.index,e.options.nativeSizeType),T.createGetLocal(f.index,e.options.nativeSizeType)));break;case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}m=e.currentFunction.getTempLocal(e.options.usizeType),f=e.currentFunction.getAndFreeTempLocal(e.options.usizeType),e.currentFunction.freeTempLocal(m),y=T.createSelect(T.createTeeLocal(m.index,h),T.createTeeLocal(f.index,d),T.createBinary(e.options.isWasm64?o.BinaryOp.LtU64:o.BinaryOp.LtU32,T.createGetLocal(m.index,e.options.nativeSizeType),T.createGetLocal(f.index,e.options.nativeSizeType)));break;case 11:y=T.createBinary(o.BinaryOp.MinF32,h,d);break;case 12:y=T.createBinary(o.BinaryOp.MinF64,h,d);break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"ceil":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}default:y=h;break;case 11:y=T.createUnary(o.UnaryOp.CeilF32,h);break;case 12:y=T.createUnary(o.UnaryOp.CeilF64,h);break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"floor":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}default:y=h;break;case 11:y=T.createUnary(o.UnaryOp.FloorF32,h);break;case 12:y=T.createUnary(o.UnaryOp.FloorF64,h);break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"copysign":if(2!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"2",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(d=e.compileExpression(s[1],e.currentType),e.currentType.kind){case 11:y=T.createBinary(o.BinaryOp.CopysignF32,h,d);break;case 12:y=T.createBinary(o.BinaryOp.CopysignF64,h,d);break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"nearest":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}default:y=h;break;case 11:y=T.createUnary(o.UnaryOp.NearestF32,h);break;case 12:y=T.createUnary(o.UnaryOp.NearestF64,h);break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"reinterpret":if(1!=s.length)return r&&1==r.length||(r&&r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0")),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(!r||1!=r.length)return r&&r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0"),T.createUnreachable();switch(r[0].kind){case 2:case 7:h=e.compileExpression(s[0],a.Type.f32),y=T.createUnary(o.UnaryOp.ReinterpretF32,h);break;case 3:case 8:h=e.compileExpression(s[0],a.Type.f64),y=T.createUnary(o.UnaryOp.ReinterpretF64,h);break;case 9:if(r[0].isReference)return e.error(i.DiagnosticCode.Operation_not_supported,l.range),e.currentType=r[0],T.createUnreachable();case 4:h=e.compileExpression(s[0],e.options.isWasm64?a.Type.f64:a.Type.f32),y=T.createUnary(e.options.isWasm64?o.UnaryOp.ReinterpretF64:o.UnaryOp.ReinterpretF32,h);break;case 11:h=e.compileExpression(s[0],a.Type.u32),y=T.createUnary(o.UnaryOp.ReinterpretI32,h);break;case 12:h=e.compileExpression(s[0],a.Type.u64),y=T.createUnary(o.UnaryOp.ReinterpretI64,h);break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return e.currentType=r[0],y;case"sqrt":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 11:y=T.createUnary(o.UnaryOp.SqrtF32,h);break;case 12:y=T.createUnary(o.UnaryOp.SqrtF64,h);break;default:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"trunc":if(1!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),T.createUnreachable();if(r&&r.length){if(e.currentType=r[0],1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.f64,0);switch(e.currentType.kind){case 9:if(e.currentType.isReference){e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable();break}default:y=h;break;case 11:y=T.createUnary(o.UnaryOp.TruncF32,h);break;case 12:y=T.createUnary(o.UnaryOp.TruncF64,h);break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"load":return s.length<1||s.length>2?(r&&1==r.length||e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0"),s.length<1?e.error(i.DiagnosticCode.Expected_at_least_0_arguments_but_got_1,l.range,"1",s.length.toString(10)):e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"2",s.length.toString(10)),T.createUnreachable()):r&&1==r.length?(h=e.compileExpression(s[0],e.options.usizeType),(E=2==s.length?c(e,s[1]):0)<0?T.createUnreachable():(e.currentType=r[0],T.createLoad(r[0].byteSize,r[0].is(5),h,r[0].is(4)&&u.is(4)&&u.size>r[0].size?(e.currentType=u).toNativeType():(e.currentType=r[0]).toNativeType(),E))):(r&&r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0"),T.createUnreachable());case"store":return e.currentType=a.Type.void,s.length<2||s.length>3?(r&&1==r.length||e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0"),s.length<2?e.error(i.DiagnosticCode.Expected_at_least_0_arguments_but_got_1,l.range,"2",s.length.toString(10)):e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"3",s.length.toString(10)),T.createUnreachable()):r&&1==r.length?(h=e.compileExpression(s[0],e.options.usizeType),d=e.compileExpression(s[1],r[0],r[0].is(4)?0:1),e.currentType.is(4)&&r[0].is(4)&&r[0].size>e.currentType.size?(d=e.convertExpression(d,e.currentType,r[0],1,s[1]),g=r[0]):g=e.currentType,(E=3==s.length?c(e,s[2]):0)<0?T.createUnreachable():(e.currentType=a.Type.void,T.createStore(r[0].byteSize,h,d,g.toNativeType(),E))):(e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0"),T.createUnreachable());case"sizeof":return e.currentType=e.options.usizeType,0!=s.length?(r&&1==r.length||e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0"),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"0",s.length.toString(10)),T.createUnreachable()):r?1!=r.length?(e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable()):y=e.options.isWasm64?T.createI64(r[0].byteSize,0):T.createI32(r[0].byteSize):(e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1","0"),T.createUnreachable());case"select":if(3!=s.length)return r&&(r.length&&(e.currentType=r[0]),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"3",s.length.toString(10)),T.createUnreachable();if(r){if(1!=r.length)return r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpression(s[0],a.Type.i32,0);switch(d=e.compileExpression(s[1],g=e.currentType),_=e.compileExpression(s[2],a.Type.bool),e.currentType=g,e.currentType.kind){default:y=T.createSelect(h,d,_);break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=T.createUnreachable()}return y;case"unreachable":return 0!=s.length&&e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"0",s.length.toString(10)),r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),T.createUnreachable();case"current_memory":return e.currentType=a.Type.i32,0!=s.length&&e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"0",s.length.toString(10)),r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),T.createHost(o.HostOp.CurrentMemory);case"grow_memory":return e.currentType=a.Type.i32,1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"0",s.length.toString(10)),h=T.createUnreachable()):h=e.compileExpression(s[0],a.Type.i32),r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),T.createHost(o.HostOp.GrowMemory,null,[h]);case"move_memory":if(r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),3!=s.length)return e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"3",s.length.toString(10)),e.currentType=a.Type.void,T.createUnreachable();throw h=e.compileExpression(s[0],e.options.usizeType),d=e.compileExpression(s[1],e.options.usizeType),_=e.compileExpression(s[2],e.options.usizeType),e.currentType=a.Type.void,new Error("not implemented");case"set_memory":if(r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),3!=s.length)return e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"3",s.length.toString(10)),e.currentType=a.Type.void,T.createUnreachable();throw h=e.compileExpression(s[0],e.options.usizeType),d=e.compileExpression(s[1],a.Type.u32),_=e.compileExpression(s[2],e.options.usizeType),e.currentType=a.Type.void,new Error("not implemented");case"changetype":return r&&1==r.length?9!=r[0].kind?(e.error(i.DiagnosticCode.Operation_not_supported,l.range),e.currentType=r[0],T.createUnreachable()):1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=r[0],T.createUnreachable()):(h=e.compileExpression(s[0],e.options.usizeType,0),e.currentType=r[0],9!=e.currentType.kind?(e.error(i.DiagnosticCode.Operation_not_supported,l.range),T.createUnreachable()):h):(r&&r.length&&(e.currentType=r[0]),e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r?r.length.toString(10):"0"),T.createUnreachable());case"assert":if(s.length<1||s.length>2)return r&&(r.length&&(e.currentType=r[0].nonNullableType),1!=r.length&&e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10))),s.length<1?e.error(i.DiagnosticCode.Expected_at_least_0_arguments_but_got_1,l.range,"1",s.length.toString(10)):s.length>2&&e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"2",s.length.toString(10)),T.createUnreachable();if(r){if(r.length&&(e.currentType=r[0].nonNullableType),1!=r.length)return e.error(i.DiagnosticCode.Expected_0_type_arguments_but_got_1,l.range,"1",r.length.toString(10)),T.createUnreachable();h=e.compileExpression(s[0],r[0])}else h=e.compileExpressionRetainType(s[0],a.Type.i32);if(g=e.currentType,e.currentType=g.nonNullableType,e.options.noAssert)return u==a.Type.void?(e.currentType=a.Type.void,T.createNop()):h;var A=p(e,2==s.length?s[1]:null,l);if(e.currentType=g.nonNullableType,u==a.Type.void){switch(e.currentType.kind){default:y=T.createIf(T.createUnary(o.UnaryOp.EqzI32,h),A);break;case 3:case 8:y=T.createIf(T.createUnary(o.UnaryOp.EqzI64,h),A);break;case 4:case 9:y=T.createIf(T.createUnary(e.options.isWasm64?o.UnaryOp.EqzI64:o.UnaryOp.EqzI32,h),A);break;case 11:y=T.createIf(T.createBinary(o.BinaryOp.EqF32,h,T.createF32(0)),A);break;case 12:y=T.createIf(T.createBinary(o.BinaryOp.EqF64,h,T.createF64(0)),A);break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=A}e.currentType=a.Type.void}else switch(e.currentType.kind){default:m=e.currentFunction.getAndFreeTempLocal(a.Type.i32),y=T.createIf(T.createUnary(o.UnaryOp.EqzI32,T.createTeeLocal(m.index,h)),A,T.createGetLocal(m.index,o.NativeType.I32));break;case 3:case 8:m=e.currentFunction.getAndFreeTempLocal(a.Type.i64),y=T.createIf(T.createUnary(o.UnaryOp.EqzI64,T.createTeeLocal(m.index,h)),A,T.createGetLocal(m.index,o.NativeType.I64));break;case 4:case 9:m=e.currentFunction.getAndFreeTempLocal(e.options.usizeType),y=T.createIf(T.createUnary(e.options.isWasm64?o.UnaryOp.EqzI64:o.UnaryOp.EqzI32,T.createTeeLocal(m.index,h)),A,T.createGetLocal(m.index,e.options.nativeSizeType));break;case 11:m=e.currentFunction.getAndFreeTempLocal(a.Type.f32),y=T.createIf(T.createBinary(o.BinaryOp.EqF32,T.createTeeLocal(m.index,h),T.createF32(0)),A,T.createGetLocal(m.index,o.NativeType.F32));break;case 12:m=e.currentFunction.getAndFreeTempLocal(a.Type.f64),y=T.createIf(T.createBinary(o.BinaryOp.EqF64,T.createTeeLocal(m.index,h),T.createF64(0)),A,T.createGetLocal(m.index,o.NativeType.F64));break;case 13:e.error(i.DiagnosticCode.Operation_not_supported,l.range),y=A}return y;case"i8":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.i8,T.createUnreachable()):e.compileExpression(s[0],a.Type.i8,2);case"i16":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.i16,T.createUnreachable()):e.compileExpression(s[0],a.Type.i16,2);case"i32":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.i32,T.createUnreachable()):e.compileExpression(s[0],a.Type.i32,2);case"i64":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.i64,T.createUnreachable()):e.compileExpression(s[0],a.Type.i64,2);case"isize":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=e.options.isWasm64?a.Type.isize64:a.Type.isize32,T.createUnreachable()):e.compileExpression(s[0],e.options.isWasm64?a.Type.isize64:a.Type.isize32,2);case"u8":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.u8,T.createUnreachable()):e.compileExpression(s[0],a.Type.u8,2);case"u16":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.u16,T.createUnreachable()):e.compileExpression(s[0],a.Type.u16,2);case"u32":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.u32,T.createUnreachable()):e.compileExpression(s[0],a.Type.u32,2);case"u64":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.u64,T.createUnreachable()):e.compileExpression(s[0],a.Type.u64,2);case"usize":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=e.options.usizeType,T.createUnreachable()):e.compileExpression(s[0],e.options.usizeType,2);case"bool":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.bool,T.createUnreachable()):e.compileExpression(s[0],a.Type.bool,2);case"f32":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.f32,T.createUnreachable()):e.compileExpression(s[0],a.Type.f32,2);case"f64":return r&&e.error(i.DiagnosticCode.Type_0_is_not_generic,l.range,t.internalName),1!=s.length?(e.error(i.DiagnosticCode.Expected_0_arguments_but_got_1,l.range,"1",s.length.toString(10)),e.currentType=a.Type.f64,T.createUnreachable()):e.compileExpression(s[0],a.Type.f64,2)}return e.error(i.DiagnosticCode.Operation_not_supported,l.range),T.createUnreachable()},t.compileAllocate=function(e,t,r){var n=e.program;assert(t.program==n);var a=e.module,o=e.options,c=n.elements.get(o.allocateImpl);if(!c)return n.error(i.DiagnosticCode.Cannot_find_name_0,r.range,o.allocateImpl),a.createUnreachable();if(c.kind!=s.ElementKind.FUNCTION_PROTOTYPE)return n.error(i.DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,r.range,c.internalName),a.createUnreachable();var p=c.resolve();return p&&e.compileFunction(p)?(e.currentType=t.type,a.createCall(p.internalName,[o.isWasm64?a.createI64(t.currentMemoryOffset):a.createI32(t.currentMemoryOffset)],o.nativeSizeType)):a.createUnreachable()},t.compileAbort=p},function(t,r){t.exports=e},function(e,t,r){(function(e){const t=e.Binaryen||r(17);for(var n in t)(n.startsWith("_Binaryen")||n.startsWith("_Relooper"))&&(e[n]=t[n]);e.allocate_memory=function(e){return e?t._malloc(e):0},e.free_memory=function(e){e&&t._free(e)},e.move_memory=function(e,r,n){return t._memmove(e,r,n)},e.store=function(e,r){t.HEAPU8[e]=r},e.load=function(e){return t.HEAPU8[e]};const i=r(1).Module;i.prototype.toText=function(){var e=t.print,r="";return t.print=function(e){r+=e+"\n"},_BinaryenModulePrint(this.ref),t.print=e,r},i.prototype.toAsmjs=function(){var e=t.print,r="";return t.print=function(e){r+=e+"\n"},_BinaryenModulePrintAsmjs(this.ref),t.print=e,r}}).call(this,r(7))},function(e,t,r){(function(e){var t="undefined"!=typeof window&&window||void 0!==e&&e||self;function r(){Error.captureStackTrace?Error.captureStackTrace(this,r):this.stack=this.name+": "+this.message+"\n"+(new Error).stack}function n(e){this.message=e||"assertion failed",Error.captureStackTrace?Error.captureStackTrace(this,n):this.stack=this.name+": "+this.message+"\n"+(new Error).stack}Object.defineProperties(t.i8=function(e){return e<<24>>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:1,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{MIN_VALUE:{value:Math.fround(-3.40282347e38),writable:!1},MAX_VALUE:{value:Math.fround(3.40282347e38),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1},EPSILON:{value:Math.fround(1.1920929e-7),writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{MIN_VALUE:{value:-1.7976931348623157e308,writable:!1},MAX_VALUE:{value:1.7976931348623157e308,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1},EPSILON:{value:2.220446049250313e-16,writable:!1}}),t.clz=Math.clz32,t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.select=function(e,t,r){return r?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.bswap=function(e){var t=e>>8&16711935,r=(16711935&e)<<8;return(t=(e=t|r)>>16&65535)|(r=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},n.prototype=Object.create(Error.prototype),n.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new n(t)},t.changetype=function(e){return e},t.parseI32=function(e,t){return 0|parseInt(e,void 0)},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)}}).call(this,r(7))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(19),r(18),r(15)},function(e,t,r){r(20),e.exports=r(13)}])}); //# sourceMappingURL=assemblyscript.js.map